This commit is contained in:
2025-10-10 13:41:42 +08:00
parent a2faab2646
commit f1f65961dd
33 changed files with 4424 additions and 119 deletions
@@ -0,0 +1,84 @@
<template>
<view class="shop-item-view" >
<image :src="type == 0 ? '../../../static/new/zfb.png' : '../../../static/new/wx.png'" ></image>
<view class="show-item-left">
<text class="text-32 text-zu1">{{itemData.name}}</text>
<text class="text-26 text-fu1">账号:{{itemData.account}}</text>
</view>
<view class="item-right-btn" @click="onBtn">
<text class="text-zu1 text-24">解绑</text>
</view>
</view>
</template>
<script>
export default {
props:{
obj:{
type:Object,
default:null
},
type:{
type:Number,
default:0
},
itemData:{
type:[Array,Object],
default:()=>{}
},
},
mounted(){
},
methods: {
onBtn(){
this.$emit('ok',this.itemData);
}
}
}
</script>
<style lang="scss" scoped>
.shop-item-view{
width:100%;
min-height:152rpx;
display: flex;
flex-direction: row;
align-items: center;
padding: 32rpx 28rpx;
box-sizing: border-box;
position: relative;
border-radius: 24rpx;
overflow: hidden;
background-color: #fff;
margin-top:24rpx;
.show-item-left{
display: flex;
flex-direction: column;
height:88rpx;
min-height:88rpx;
margin-left:24rpx;
}
.item-right-btn{
width:112rpx;
height:48rpx;
min-height:48rpx;
display: flex;
align-items: center;
justify-content: center;
background-color: #f3f3f3;
border-radius: 24rpx;
position: absolute;
right:28rpx;
}
image{
width:88rpx;
height:88rpx;
border-radius: 44rpx;
}
}
</style>
@@ -0,0 +1,148 @@
<template>
<u-popup :show="codeShow" mode="bottom" bgColor="transparent">
<view class="select-item">
<view class="select-head">
<view></view>
<text class="text-28 text-fu1">验证码</text>
<u-icon name="close" color="#333" size="16" @click="onClose"></u-icon>
</view>
<view class="item-mid-view">
<view class="input-view">
<up-input placeholder="请输入验证码" border="surround" v-model="code"
:customStyle="inputCss">
<template #suffix style="margin-right: 10rpx;">
<view v-if="countdown" class="code-warp">
<up-count-down :time="60 * 1000" format="ss" @finish="countdown = false"></up-count-down>
<text style="margin-left: 10rpx;">s</text>
</view>
<view v-else @click="getMobileCode" class="code_msg">
获取验证码
</view>
</template>
</up-input>
</view>
</view>
<view class="item-bottom-btn">
<MyBtn @ok="onOk" text="确定"></MyBtn>
</view>
</view>
<up-toast ref="uToastRef"></up-toast>
</u-popup>
</template>
<script>
import { getUserList } from '@/api/common.js';
import MyBtn from '@/components/common/my-btn.vue'
export default {
data() {
return {
code:'',
countdown:'',
inputCss: {
"background": "#fff",
},
}
},
components: { MyBtn },
props:{
codeShow:{
type:Boolean,
default:false
},
phone:{
type:String,
default:''
},
},
mounted(){
},
methods: {
onOk(){
if(!this.code){
this.$refs.uToastRef.show({
type: 'error',
message: "验证码不可为空",
});
return;
}
this.$emit('ti',this.code);
this.code = '';
},
onClose(){
this.$emit('close');
this.countdown = false;
},
async getMobileCode() {
if (!this.phone) {
this.$refs.uToastRef.show({
type: 'error',
message: "请输入手机号码",
});
return;
}
this.countdown = true;
const params = {
mobile: this.phone,
type: 'withdraw'
}
const response = await getUserList(params);
if (response && response.bizcode === 100) {
this.$refs.uToastRef.show({
type: 'success',
message: response.msg,
});
} else {
this.countdown = false;
}
},
}
}
</script>
<style scoped lang="scss">
.select-item{
width:100%;
min-height:418rpx;
display: flex;
flex-direction: column;
align-items: center;
padding: 0 32rpx 24rpx;
box-sizing: border-box;
background-color: #fff;
border-radius: 24rpx 24rpx 0 0;
.item-bottom-btn{
width:100%;
margin-top:24rpx;
min-height:88rpx;
display: flex;
}
.item-mid-view{
width:100%;
height:218rpx;
min-height:218rpx;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
overflow-y: auto;
.input-view{
width:100%;
height:88rpx;
min-height:88rpx;
}
}
.select-head{
width:100%;
height:88rpx;
min-height:88rpx;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
}
</style>
@@ -0,0 +1,159 @@
<template>
<u-popup :show="itemShow" mode="bottom" bgColor="transparent">
<view class="select-item">
<view class="select-head">
<view></view>
<text class="text-28 text-fu1">选择{{type == 0 ? '微信' : '支付宝'}}账户</text>
<u-icon name="close" color="#333" size="16" @click="onClose"></u-icon>
</view>
<view class="item-mid-view">
<view class="item-mid-list" v-for="(item,index) in data" :key="item.id">
<image :src="type == 1 ? '../../../static/new/zfb.png' : '../../../static/new/wx.png'" ></image>
<view class="show-item-left">
<text class="text-32 text-zu1">{{item.name}}</text>
<text class="text-26 text-fu1">账号:{{item.account}}</text>
</view>
<u-radio-group v-model="itemSelect" style="position: absolute;right:28rpx">
<u-radio :name="item.id" activeColor="#7934F6"></u-radio>
</u-radio-group>
<!-- <view class="item-right-btn">
<u-radio-group v-model="itemSelect">
<u-radio :name="item.id" activeColor="#7934F6"></u-radio>
</u-radio-group>
</view> -->
</view>
</view>
<view class="item-bottom-btn">
<MyBtn @ok="onOk" text="确定"></MyBtn>
</view>
</view>
</u-popup>
</template>
<script>
import MyBtn from '@/components/common/my-btn.vue'
export default {
data() {
return {
itemSelect:''
}
},
components: { MyBtn },
computed:{
data(){
let tmp = [];
if(this.itemData.length){
this.itemSelect = this.itemData[0].id;
tmp = this.itemData;
console.log('tmp',tmp)
}
return tmp;
}
},
props:{
itemShow:{
type:Boolean,
default:false
},
itemData:{
type:[Array,Object],
default:()=>{}
},
type:{
type:[Number,String],
default:'0'
}
},
mounted(){
},
methods: {
onOk(){
console.log('this',this.itemSelect);
this.$emit('ok',this.itemSelect);
},
onClose(){
this.$emit('close');
}
}
}
</script>
<style scoped lang="scss">
.select-item{
width:100%;
min-height:942rpx;
display: flex;
flex-direction: column;
align-items: center;
padding: 0 32rpx 24rpx;
box-sizing: border-box;
background-color: #fff;
border-radius: 24rpx 24rpx 0 0;
.item-bottom-btn{
width:100%;
margin-top:24rpx;
min-height:88rpx;
display: flex;
}
.item-mid-view{
width:100%;
height:742rpx;
min-height:742rpx;
display: flex;
flex-direction: column;
align-items: center;
overflow-y: auto;
.item-mid-list{
display: flex;
flex-direction: row;
align-items: center;
width:98%;
height:152rpx;
min-height:152rpx;
border-radius: 16rpx;
margin-top:24rpx;
background: #FFFFFF;
box-shadow: 0px 0px 16rpx 0px #F4F4F4;
border-radius: 16px;
border: 1px solid #E3E3E3;
padding: 0 24rpx;
box-sizing: border-box;
position: relative;
.show-item-left{
display: flex;
flex-direction: column;
height:88rpx;
min-height:88rpx;
margin-left:24rpx;
}
.item-right-btn{
display: flex;
align-items: center;
justify-content: center;
background-color: #f3f3f3;
border-radius: 24rpx;
position: absolute;
right:28rpx;
}
image{
width:88rpx;
height:88rpx;
border-radius: 44rpx;
}
}
}
.select-head{
width:100%;
height:88rpx;
min-height:88rpx;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
}
</style>