This commit is contained in:
2025-07-13 14:42:38 +08:00
parent b3862ac356
commit 33d9d6bb06
37 changed files with 2093 additions and 29315 deletions
+82 -83
View File
@@ -1,22 +1,22 @@
<template>
<van-popup v-model="value" position="bottom" @close="$emit('update:value', false)">
<div class="red-packet" v-if="user">
<img class="avatar" :src="anonymous ? avatar : user.avatar" alt="">
<img class="avatar" :src="anonymous ? avatar : user.avatar" alt="" />
<div class="username-container">
<div class="username" v-if="!edit" @click="onEdit">
<span>{{user.nickname}}</span>
<span>{{ user.nickname }}</span>
<i class="iconfont icon-bianjisekuai"></i>
</div>
<input class="input-username" ref="input" v-if="edit" v-model="user.nickname" @blur="edit = false">
<input class="input-username" ref="input" v-if="edit" v-model="user.nickname" @blur="edit = false" />
</div>
<vue-number-scroll v-model="number"></vue-number-scroll>
<div class="money-input">
<input type="tel" v-model="money" v-number-only @change="onMoneyInput">
<input type="tel" v-model="money" v-number-only @change="onMoneyInput" />
<span>元</span>
</div>
<!-- <div class="bar">
<span>
<van-checkbox v-model="anonymous" checked-color="#CF9E3B" @change="onAnonymous">匿名参与</van-checkbox>
<van-checkbox v-model="anonymous" checked-color="#CF9E3B;" @change="onAnonymous">匿名参与</van-checkbox>
</span>
<span>查看服务协议</span>
</div> -->
@@ -29,152 +29,151 @@
</template>
<script>
import { getRandMoney, getUserData } from '@/api';
import VueNumberScroll from '../vue-number-scroll'
import { getRandMoney, getUserData } from "@/api";
import VueNumberScroll from "../vue-number-scroll";
export default {
name: 'random-money',
name: "random-money",
components: {
VueNumberScroll
VueNumberScroll,
},
data(){
data() {
return {
avatar: require('@/assets/img/xiaoheshang.jpg'),
avatar: require("@/assets/img/xiaoheshang.jpg"),
edit: false,
anonymous: false,
numberArr: ['3', '.', '9','9'],
numberArr: ["3", ".", "9", "9"],
number: 0,
money: 0,
user: null,
privateUser: null,
inputNickname: '',
inputNickname: "",
randList: [],
}
};
},
props: {
value: {
type: Boolean,
default: false,
}
},
},
mounted(){
this.getRandMoney()
mounted() {
this.getRandMoney();
this.getUserData();
},
methods: {
onAnonymous(checked){
onAnonymous(checked) {
this.anonymous = checked;
if(checked){
this.user.nickname = '匿名用户'
if (checked) {
this.user.nickname = "匿名用户";
} else {
this.user.nickname = this.privateUser.nickname
this.user.nickname = this.privateUser.nickname;
}
},
onEdit(){
onEdit() {
this.edit = true;
this.$nextTick(() => {
this.$refs.input.focus();
})
});
},
async getUserData(){
async getUserData() {
const res = await getUserData();
this.user = res;
this.privateUser = Object.assign({}, res);
this.inputNickname = res.nickname;
},
onMoneyInput(e){
this.number = e.target.value
onMoneyInput(e) {
this.number = e.target.value;
},
changeMoney(){
changeMoney() {
const rand = Math.floor(Math.random() * this.randList.length);
this.number = Number(this.randList[rand])
this.money = this.number;
this.number = Number(this.randList[rand]);
this.money = this.number;
},
async getRandMoney(){
async getRandMoney() {
const res = await getRandMoney();
this.randList = res;
this.money = Number(res[0])
this.number = Number(res[0])
this.money = Number(res[0]);
this.number = Number(res[0]);
},
onNext(){
this.$emit('change', {
onNext() {
this.$emit("change", {
anonymous: this.anonymous,
money: this.number
})
this.$emit('update:value', false)
}
}
money: this.number,
});
this.$emit("update:value", false);
},
},
};
</script>
<style lang="scss">
.red-packet{
.red-packet {
min-height: 60vh;
background: #e85042 url('~@/assets/img/red-packet.jpg') top center no-repeat;
background: #e85042 url("~@/assets/img/red-packet.jpg") top center no-repeat;
background-size: contain;
overflow: hidden;
padding-bottom: constant(safe-area-inset-bottom);
padding-bottom: env(safe-area-inset-bottom);
.avatar{
.avatar {
width: 2rem;
height: 2rem;
display: block;
border-radius: 1.5rem;
border: 2px solid yellow;
margin: 2rem auto .1rem;
margin: 2rem auto 0.1rem;
}
.username-container{
padding-top: .3rem;
.username-container {
padding-top: 0.3rem;
height: 1rem;
.username{
.username {
color: white;
font-size: .4rem;
font-size: 0.4rem;
text-align: center;
margin-top: .3rem;
span{
padding-right: .1rem;
margin-top: 0.3rem;
span {
padding-right: 0.1rem;
}
}
.input-username{
.input-username {
border: 1px solid yellow;
font-size: .4rem;
font-size: 0.4rem;
background: transparent;
margin-left: auto;
margin-right: auto;
display: block;
height: 1rem;
color: white;
padding: .1rem .3rem;
padding: 0.1rem 0.3rem;
border-radius: 4px;
}
}
.money{
.money {
color: yellow;
text-align: center;
height: 1rem;
line-height: 1rem;
font-size: 1rem;
overflow: hidden;
margin-top: .6rem;
margin-bottom: .8rem;
ul{
li{
margin-top: 0.6rem;
margin-bottom: 0.8rem;
ul {
li {
display: inline-block;
}
}
}
.bar{
.bar {
display: flex;
justify-content: space-between;
font-size: .4rem;
font-size: 0.4rem;
color: white;
padding: .3rem .6rem;
margin-top: .6rem;
padding: 0.3rem 0.6rem;
margin-top: 0.6rem;
}
.money-input{
.money-input {
border: 1px solid yellow;
height: 1.2rem;
width: 60%;
@@ -184,48 +183,48 @@ export default {
align-items: center;
border-radius: 2px;
justify-content: space-between;
input{
input {
background: transparent;
border: 1px solid transparent;
flex: 1;
height: 100%;
padding-left: .5rem;
font-size: .5rem;
padding-left: 0.5rem;
font-size: 0.5rem;
width: 50%;
}
span{
padding: 0 .2rem;
font-size: .5rem;
span {
padding: 0 0.2rem;
font-size: 0.5rem;
}
}
.van-checkbox__label{
.van-checkbox__label {
color: white;
}
.random-button-group{
.random-button-group {
text-align: center;
font-size: .5rem;
margin-top: .7rem;
font-size: 0.5rem;
margin-top: 0.7rem;
display: flex;
padding: 0 .4rem;
margin-bottom: .5rem;
button{
padding: 0 0.4rem;
margin-bottom: 0.5rem;
button {
background: transparent;
margin: 0 .2rem;
margin: 0 0.2rem;
height: 1.3rem;
border: 1px solid transparent;
color: white;
}
.change{
.change {
color: yellow;
border: 1px solid yellow;
border-radius: 4px;
flex: 1.3;
}
.next{
.next {
background: yellow;
color: rgb(224, 61, 61);
border-radius: 4px;
flex: 2
flex: 2;
}
}
}