Compare commits

..

No commits in common. "39db0035fca6bd2e10a82be623f96e199463f28b" and "b9137a9dcb6ad61986b2ad83ac0225259fc47600" have entirely different histories.

5 changed files with 751 additions and 948 deletions

View File

@ -1,307 +1,300 @@
<template> <template>
<view class="width-auto"> <view class="width-auto">
<view class="flexs"> <view class="flexs">
<view class="select-flexs"> <view class="select-flexs">
<picker <picker :range="selYearList" :value="index" range-key="label" @change="changeYear">
:range="selYearList" <view style="display: flex; align-items: center;justify-content: space-between;">
:value="index" <view style="margin-right:40rpx;">{{whatYear}}</view>
range-key="label" <u-icon name="arrow-down" color="#999"></u-icon>
@change="changeYear" </view>
>
<view </picker>
style="
display: flex; </view>
align-items: center; <view class="select-flexs">
justify-content: space-between; <picker :range="selMounthList" :value="index" range-key="label" @change="bindPickerChange">
" <view style="display: flex; align-items: center;justify-content: space-between;">
> <view style="margin-right:40rpx;">{{whatMounth}}</view>
<view style="margin-right: 40rpx">{{ whatYear }}</view> <u-icon name="arrow-down" color="#999"></u-icon>
<u-icon name="arrow-down" color="#999"></u-icon> </view>
</view>
</picker> </picker>
</view>
<view class="select-flexs"> </view>
<picker <view class="select-flexs" style="margin-left: 20rpx;" @click="showType=true">
:range="selMounthList"
:value="index"
range-key="label"
@change="bindPickerChange"
>
<view
style="
display: flex;
align-items: center;
justify-content: space-between;
"
>
<view style="margin-right: 40rpx">{{ whatMounth }}</view>
<u-icon name="arrow-down" color="#999"></u-icon>
</view>
</picker>
</view>
<!-- <view class="select-flexs" style="margin-left: 20rpx;" @click="showType=true">
<view style="display: flex; align-items: center;justify-content: space-between;"> <view style="display: flex; align-items: center;justify-content: space-between;">
<view style="margin-right:40rpx;">{{yjName}}</view> <view style="margin-right:40rpx;">{{yjName}}</view>
<u-icon name="arrow-down" color="#999"></u-icon> <u-icon name="arrow-down" color="#999"></u-icon>
</view> </view>
<!-- <picker :range="yjTypeList" :value="index2" range-key="label" @confirm="bindType"></picker> -->
<u-picker @cancel='showType=false' :show="showType" ref="uPicker" :columns="yjTypeList" <u-picker @cancel='showType=false' :show="showType" ref="uPicker" :columns="yjTypeList"
@confirm="bindType" keyName='label'></u-picker> @confirm="bindType" keyName='label'></u-picker>
</view> --> </view>
<!-- <view class="title"> <!-- <view class="title">
导出明细 导出明细
</view> --> </view> -->
</view> </view>
<view class="listrefor bg2"> <view class="listrefor bg2">
<view class="flex_item">
<view class="text1">左区业绩</view>
<view class="text2">{{ achieveData.leftAchieve || 0 }}</view>
</view>
<view class="flex_item" style="cursor: pointer" @click="goDetail(1)">
<view class="text1">左区血缘业绩</view>
<view class="text2">{{ achieveData.leftDirectAchieve || 0 }}</view>
</view>
<view class="flex_item">
<view class="text1">左区人数</view>
<view class="text2">{{ achieveData.leftCoun || 0 }}</view>
</view>
</view>
<view class="listrefor bg3"> <view class="flex_item">
<view> <view class="text1">左区业绩</view>
<view class="text1">血缘业绩</view> <view class="text2">{{ achieveData.leftAchieve || 0 }}</view>
<view class="text2">{{ achieveData.directAchieve || 0 }}</view> </view>
</view> <view class="flex_item" style="cursor: pointer;" @click="goDetail(1)">
</view> <view class="text1">左区血缘业绩</view>
<view class="listrefor bg2"> <view class="text2">{{ achieveData.leftDirectAchieve || 0 }}</view>
<view class="flex_item"> </view>
<view class="text1">右区业绩</view> <view class="flex_item">
<view class="text2">{{ achieveData.rightAchieve || 0 }}</view> <view class="text1">左区人数</view>
</view> <view class="text2">{{ achieveData.leftCoun || 0 }}</view>
</view>
</view>
<view class="listrefor bg3">
<view>
<view class="text1">血缘业绩</view>
<view class="text2">{{ achieveData.directAchieve || 0 }}</view>
</view>
</view>
<view class="listrefor bg2">
<view class="flex_item">
<view class="text1">右区业绩</view>
<view class="text2">{{ achieveData.rightAchieve || 0 }}</view>
</view>
<view class="flex_item" style="cursor: pointer;" @click="goDetail(2)">
<view class="text1">右区血缘业绩</view>
<view class="text2">{{ achieveData.rightDirectAchieve || 0 }}</view>
</view>
<view class="flex_item">
<view class="text1">右区人数</view>
<view class="text2">{{ achieveData.rightCount || 0 }}</view>
</view>
</view>
</view>
<view class="flex_item" style="cursor: pointer" @click="goDetail(2)">
<view class="text1">右区血缘业绩</view>
<view class="text2">{{ achieveData.rightDirectAchieve || 0 }}</view>
</view>
<view class="flex_item">
<view class="text1">右区人数</view>
<view class="text2">{{ achieveData.rightCount || 0 }}</view>
</view>
</view>
</view>
</template> </template>
<script> <script>
import { getPlaceNewAddAchieve, getYjList } from '@/config/distribute.js' import {
export default { getPlaceNewAddAchieve,
data() { getYjList
return { } from "@/config/distribute.js";
index: 0, export default {
show: false,
achieveData: {},
whatMounth: '', data() {
yjType: 1, return {
yjName: '全部', index: 0,
showType: false, show: false,
selMounthList: [], achieveData: {},
yjTypeList: [],
yearShow: false, whatMounth: '',
whatYear: '', yjType: 1,
selYearList: [ yjName: "全部",
{ showType: false,
value: 0, selMounthList: [],
label: new Date().getFullYear() - 1, yjTypeList: [],
}, yearShow:false,
{ whatYear:"",
value: 1, selYearList:[{
label: new Date().getFullYear(), value: 0,
}, label: new Date().getFullYear()-1,
], },{
mounthList: [ value: 1,
{ label: new Date().getFullYear(),
value: 1, }],
label: 1 + '月', mounthList: [{
}, value: 1,
{ label: 1 + '月',
value: 2, },
label: 2 + '月', {
}, value: 2,
{ label: 2 + '月',
value: 3, },
label: 3 + '月', {
}, value: 3,
{ label: 3 + '月',
value: 4, },
label: 4 + '月', {
}, value: 4,
{ label: 4 + '月',
value: 5, },
label: 5 + '月', {
}, value: 5,
{ label: 5 + '月',
value: 6, },
label: 6 + '月', {
}, value: 6,
{ label: 6 + '月',
value: 7, },
label: 7 + '月', {
}, value: 7,
{ label: 7 + '月',
value: 8, },
label: 8 + '月', {
}, value: 8,
{ label: 8 + '月',
value: 9, },
label: 9 + '月', {
}, value: 9,
{ label: 9 + '月',
value: 10, },
label: 10 + '月', {
}, value: 10,
{ label: 10 + '月',
value: 11, },
label: 11 + '月', {
}, value: 11,
{ label: 11 + '月',
value: 12, },
label: 12 + '月', {
}, value: 12,
], label: 12 + '月'
} },
}, ],
created() { }
this.getMounth() },
this.getYjList() created() {
setTimeout(() => {
this.getPlaceNewAddAchieve() this.getMounth()
}, 50) this.getYjList()
}, setTimeout(() => {
methods: { this.getPlaceNewAddAchieve()
goDetail(index) { }, 50)
uni.navigateTo({ },
url: '/pages/performanceEchart/index?ifDetail=' + index, methods: {
})
}, goDetail(index) {
getYjList() { uni.navigateTo({
getYjList().then(res => { url:'/pages/performanceEchart/index?ifDetail='+index
this.yjTypeList = [res.data] })
}) },
}, getYjList() {
changeYear(e) { getYjList().then(res => {
this.whatYear = this.selYearList[e.detail.value].label this.yjTypeList = [res.data]
this.getPlaceNewAddAchieve() })
}, },
bindPickerChange(e) { changeYear(e){
this.whatMounth = e.detail.value + 1 this.whatYear = this.selYearList[e.detail.value].label
this.getPlaceNewAddAchieve() this.getPlaceNewAddAchieve()
}, },
bindType(e) { bindPickerChange(e) {
this.yjType = e.value[0].value this.whatMounth = e.detail.value + 1
this.yjName = e.value[0].label this.getPlaceNewAddAchieve()
this.showType = false },
this.getPlaceNewAddAchieve() bindType(e) {
}, this.yjType = e.value[0].value
// / this.yjName = e.value[0].label
getMounth() { this.showType = false
this.whatMounth = new Date().getMonth() + 1 this.getPlaceNewAddAchieve()
let selMounth = [] },
this.mounthList.forEach(item => { // /
// if (item.value <= this.whatMounth) { getMounth() {
// selMounth.push(item) this.whatMounth = new Date().getMonth() + 1
// } let selMounth = []
selMounth.push(item) this.mounthList.forEach((item) => {
}) // if (item.value <= this.whatMounth) {
this.selMounthList = selMounth // selMounth.push(item)
this.whatYear = new Date().getFullYear() // }
}, selMounth.push(item)
getPlaceNewAddAchieve() { })
getPlaceNewAddAchieve({ this.selMounthList = selMounth
monthType: this.whatMounth, this.whatYear = new Date().getFullYear()
achievementType: this.yjType,
year: this.whatYear, },
}).then(res => { getPlaceNewAddAchieve() {
this.achieveData = res.data getPlaceNewAddAchieve({
}) monthType: this.whatMounth,
}, achievementType: this.yjType,
}, year:this.whatYear
} }).then((res) => {
this.achieveData = res.data;
});
}
},
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
::v-deep .uni-picker { ::v-deep .uni-picker {
width: 100%; width: 100%;
} }
.select-flexs { .select-flexs {
border: 1rpx solid #eeeeee;
border-radius: 15rpx;
// width: 232rpx;
padding: 20rpx 19rpx;
display: flex;
align-items: center;
justify-content: space-between;
}
.flexs { border: 1rpx solid #EEEEEE;
display: flex; border-radius: 15rpx;
// justify-content: space-between; // width: 232rpx;
border-radius: 30rpx 30rpx 0 0; padding: 20rpx 19rpx;
background-color: #fff; display: flex;
} align-items: center;
justify-content: space-between;
}
.title { .flexs {
padding: 10rpx 0; display: flex;
margin-top: 10rpx; // justify-content: space-between;
} border-radius: 30rpx 30rpx 0 0;
background-color: #fff;
}
.width-auto { .title {
background-color: #fff; padding: 10rpx 0;
padding: 0 22rpx; margin-top: 10rpx;
width: 690rpx; }
margin: 0 auto;
padding-bottom: 20rpx;
}
.listrefor { .width-auto {
color: #ffffff; background-color: #fff;
border-radius: 10rpx; padding: 0 22rpx;
padding: 32rpx 21rpx; width: 690rpx;
margin-top: 25rpx; margin: 0 auto;
display: flex; padding-bottom: 20rpx;
justify-content: space-between; }
.flex_item:nth-child(1) { .listrefor {
width: 40%; color: #FFFFFF;
} border-radius: 10rpx;
padding: 32rpx 21rpx;
margin-top: 25rpx;
display: flex;
justify-content: space-between;
.flex_item:nth-child(2) { .flex_item:nth-child(1) {
width: 35%; width: 40%;
} }
.flex_item:nth-child(3) { .flex_item:nth-child(2) {
width: 25%; width: 35%;
} }
.text1 { .flex_item:nth-child(3) {
font-size: 28rpx; width: 25%;
} }
.text2 { .text1 {
font-size: 30rpx; font-size: 28rpx;
font-weight: bold; }
margin-top: 30rpx;
}
}
.bg1 { .text2 {
background: linear-gradient(180deg, #fc7c7c 0%, #f65757 100%); font-size: 30rpx;
} font-weight: bold;
margin-top: 30rpx;
}
}
.bg2 { .bg1 {
background: linear-gradient(180deg, #ff9354 0%, #ff7f36 100%); background: linear-gradient(180deg, #FC7C7C 0%, #F65757 100%);
} }
.bg3 { .bg2 {
background: linear-gradient(180deg, #677af9 0%, #697bf2 100%); background: linear-gradient(180deg, #FF9354 0%, #FF7F36 100%);
} }
.bg3 {
background: linear-gradient(180deg, #677AF9 0%, #697BF2 100%);
}
</style> </style>

View File

@ -18,6 +18,12 @@ export const getDefaultBank = params =>
params, params,
}) })
//校验是否绑定银行卡
export const checkIsbindBank = params =>
http.get('/member/api/bank/is-bind', {
params,
})
//提现页面展示 //提现页面展示
export const getWidthdrawShow = params => export const getWidthdrawShow = params =>
http.get('/member/api/withdraw/show/add', { http.get('/member/api/withdraw/show/add', {

View File

@ -7,7 +7,7 @@
:rules="rules" :rules="rules"
ref="uForm" ref="uForm"
> >
<u-form-item <!-- <u-form-item
label-width="200rpx" label-width="200rpx"
:label="'银行卡号'" :label="'银行卡号'"
prop="cardNumber" prop="cardNumber"
@ -24,7 +24,7 @@
<view v-else style="color: red" @click="goBindbank"> <view v-else style="color: red" @click="goBindbank">
{{ '请先绑定银行卡' }} {{ '请先绑定银行卡' }}
</view> </view>
</u-form-item> </u-form-item> -->
<u-form-item <u-form-item
label-width="200rpx" label-width="200rpx"
:label="`${'提现金额'}(${isLocaled()})`" :label="`${'提现金额'}(${isLocaled()})`"
@ -134,16 +134,7 @@
<u-button class="subbtn" @click="submit">{{ '提现' }}</u-button> <u-button class="subbtn" @click="submit">{{ '提现' }}</u-button>
</view> </view>
<u-toast ref="uToast"></u-toast> <u-toast ref="uToast"></u-toast>
<u-modal
:show="unBindDefaultModal"
showCancelButton
@cancel="unBindDefaultModal = false"
cancelText="取消"
confirmText="确定"
@confirm="unBindDefaultConfirm"
>
请先绑定默认银行卡
</u-modal>
<!-- 提现引导弹窗 --> <!-- 提现引导弹窗 -->
<!-- <WithdrawalGuide <!-- <WithdrawalGuide
:show="showWithdrawalGuide" :show="showWithdrawalGuide"
@ -202,9 +193,8 @@ export default {
bankData: {}, bankData: {},
widthDrwaData: {}, widthDrwaData: {},
ifeye: false, ifeye: false,
canbind: true, canbind: false,
showWithdrawalGuide: false, showWithdrawalGuide: false,
unBindDefaultModal: false,
} }
}, },
watch: { watch: {
@ -215,7 +205,7 @@ export default {
url: '/pages/mine/balance/withdrawlDetail', url: '/pages/mine/balance/withdrawlDetail',
}) })
}, },
onShow() { onLoad() {
this.getList() this.getList()
}, },
methods: { methods: {
@ -243,18 +233,16 @@ export default {
} }
}) })
bal.getDefaultBank().then(res => { bal.getDefaultBank().then(res => {
if (res.data && Object.keys(res.data).length > 0) { this.bankData = res.data
this.bankData = res.data this.dataForm.pkBank = res.data.pkId
this.dataForm.pkBank = res.data.pkId
} else {
this.unBindDefaultModal = true
}
}) })
}, //
unBindDefaultConfirm() { bal.checkIsbindBank().then(res => {
this.unBindDefaultModal = false if (res.flag == 'Y') {
uni.navigateTo({ this.canbind = false
url: '/pages/mine/bindBank/index', } else if (res.flag == 'N') {
this.canbind = true
}
}) })
}, },
submit() { submit() {
@ -264,17 +252,13 @@ export default {
bal.addWithdraw(this.dataForm).then(res => { bal.addWithdraw(this.dataForm).then(res => {
if (res.code == 200) { if (res.code == 200) {
this.$refs.uToast.show({ this.$refs.uToast.show({
message: res.msg || '提现成功', message: res.msg,
type: 'success', type: 'success',
}) })
//
setTimeout(() => { setTimeout(() => {
uni.navigateBack() uni.navigateBack()
}, 500) }, 300)
//
// setTimeout(() => {
// this.showWithdrawalGuide = true
// }, 300)
} }
}) })
}) })
@ -308,7 +292,6 @@ export default {
// //
onWithdrawalGuideConfirm() { onWithdrawalGuideConfirm() {
this.showWithdrawalGuide = false this.showWithdrawalGuide = false
uni.navigateBack()
}, },
}, },
} }

View File

@ -1,412 +1,273 @@
<template> <template>
<view class="content"> <view class="content">
<view class="theform"> <view class="theform">
<u--form <u--form labelPosition="left" :model="dataForm" :rules="rules" ref="uForm">
labelPosition="left" <u-form-item label-width="200rpx" :label="'银行卡号'" borderBottom prop="cardNumber" ref="item1">
:model="dataForm" <u--input v-model="dataForm.cardNumber" disabledColor="#F5F5F5;" border="none"></u--input>
:rules="rules" </u-form-item>
ref="uForm" <u-form-item borderBottom label-width="200rpx" :label="'银行名称'" prop="bankName"
> @click="showAmount = true; " ref="item1">
<u-form-item <u--input v-model="dataForm.bankName" disabledColor="#ffffff" :placeholder="'请选择'"
borderBottom border="none"></u--input>
required <u-icon slot="right" name="arrow-right"></u-icon>
label-width="200rpx" </u-form-item>
:label="'银行名称'"
prop="bankName"
@click="showAmount = true"
ref="item1"
>
<u--input
v-model="dataForm.bankName"
disabledColor="#ffffff"
:placeholder="'请选择'"
border="none"
></u--input>
<u-icon slot="right" name="arrow-right"></u-icon>
</u-form-item>
<u-form-item
label-width="200rpx"
:label="'开户支行'"
required
prop="subBankName"
borderBottom
ref="item1"
>
<u--input
v-model="dataForm.subBankName"
disabledColor="#F5F5F5;"
border="none"
></u--input>
</u-form-item>
<u-form-item
label-width="200rpx"
:label="'银行卡号'"
required
borderBottom
prop="cardNumber"
ref="item1"
>
<u--input
v-model="dataForm.cardNumber"
disabledColor="#F5F5F5;"
border="none"
></u--input>
</u-form-item>
<u-form-item
label-width="200rpx"
label="开户姓名"
required
prop="accountName"
borderBottom
ref="item1"
>
<u--input
:placeholder="'请输入'"
v-model="dataForm.accountName"
border="none"
></u--input>
</u-form-item>
<u-form-item
label-width="200rpx"
:label="'证件号码'"
required
prop="idCard"
borderBottom
ref="item1"
>
<u--input
v-model="dataForm.idCard"
:placeholder="'请输入'"
disabledColor="#F5F5F5;"
border="none"
></u--input>
</u-form-item>
<u-form-item
label-width="200rpx"
:label="'联系方式'"
prop="phone"
required
borderBottom
ref="item1"
>
<u--input
v-model="dataForm.phone"
:placeholder="'请输入'"
maxlength="20"
border="none"
></u--input>
</u-form-item>
<u-form-item
v-if="userInfo.pkCountry == 1 && cancode"
label-width="200rpx"
:label="'验证码'"
required
prop="verificationCode"
borderBottom
ref="item1"
>
<u--input
v-model="dataForm.verificationCode"
:placeholder="'请输入'"
border="none"
></u--input>
<u-button
@tap="getCode"
class="getcodes"
type="primary"
shape="circle"
:text="tips"
color="#2FBC42"
></u-button>
</u-form-item>
<u-code <u-form-item label-width="200rpx" :label="'开户支行'" prop="subBankName" borderBottom ref="item1">
:seconds="seconds" <u--input v-model="dataForm.subBankName" disabledColor="#F5F5F5;" border="none"></u--input>
@end="end" </u-form-item>
@start="start" <u-form-item label-width="200rpx" :label="'真实姓名'" prop="accountName" borderBottom ref="item1">
ref="uCode" <u--input :placeholder="'请输入'" v-model="dataForm.accountName" border="none"></u--input>
@change="codeChange" </u-form-item>
></u-code> <u-form-item label-width="200rpx" :label="'证件号码'" prop="idCard" borderBottom ref="item1">
<u-picker <u--input v-model="dataForm.idCard" :placeholder="'请输入'" disabledColor="#F5F5F5;"
@cancel="showAmount = false" border="none"></u--input>
:show="showAmount" </u-form-item>
ref="uPicker" <u-form-item label-width="200rpx" :label="'联系方式'" prop="phone" borderBottom ref="item1">
:columns="bankCardChioceList" <u--input v-model="dataForm.phone" :placeholder="'请输入'" maxlength="20" border="none"></u--input>
@confirm="confirm" </u-form-item>
keyName="bankName" <u-form-item v-if="userInfo.pkCountry==1&&cancode" label-width="200rpx" :label="'验证码'"
></u-picker> prop="verificationCode" borderBottom ref="item1">
</u--form> <u--input v-model="dataForm.verificationCode" :placeholder="'请输入'" border="none"></u--input>
</view> <u-button @tap='getCode' class="getcodes" type="primary" shape="circle" :text="tips"
<view class="tip-wrapper"> color="#2FBC42"></u-button>
<view class="tip-content"> </u-form-item>
<view class="tip-text"
>银行卡号真实姓名证件号码联系方式请与银行预留信息保持一致</view <u-code :seconds="seconds" @end="end" @start="start" ref="uCode" @change="codeChange"></u-code>
> <u-picker @cancel='showAmount=false' :show="showAmount" ref="uPicker" :columns="bankCardChioceList"
</view> @confirm="confirm" keyName='bankName'></u-picker>
</view> </u--form>
<view class="btnbox">
<u-button class="subbtn" @click="submit">{{ '确定' }}</u-button> </view>
</view> <view class="btnbox">
<u-toast ref="uToast"></u-toast> <u-button class="subbtn" @click="submit">{{'确定'}}</u-button>
</view> </view>
<u-toast ref="uToast"></u-toast>
</view>
</template> </template>
<script> <script>
import * as ban from '@/config/balance.js' import * as ban from "@/config/balance.js"
export default { export default {
data() { data() {
return { return {
showAmount: false, showAmount: false,
dataForm: { dataForm: {
bankName: '', bankName: "",
cardNumber: '', cardNumber: "",
pkBank: '', pkBank: "",
subBankName: '', subBankName: "",
accountName: '', accountName: "",
idCard: '', idCard: "",
},
bankCardChioceList: [],
rules: {
cardNumber: [
{
type: 'string',
required: true,
message: '请输入',
trigger: ['blur', 'change'],
},
],
subBankName: [
{
type: 'string',
required: true,
message: '请输入',
trigger: ['blur', 'change'],
},
],
accountName: [
{
type: 'string',
required: true,
message: '请输入',
trigger: ['blur', 'change'],
},
],
idCard: [
{
type: 'string',
required: true,
message: '请输入',
trigger: ['blur', 'change'],
},
],
phone: [
{
type: 'string',
required: true,
message: '请输入',
trigger: ['blur', 'change'],
},
],
verificationCode: [
{
type: 'string',
required: true,
message: '请输入',
trigger: ['blur', 'change'],
},
],
bankName: [
{
required: true,
message: '请选择',
trigger: ['change'],
},
],
},
tips: '',
// refCode: null,
seconds: 60,
ifpass: false,
userInfo: {},
cancode: true, //
}
},
onLoad() {
this.userInfo = uni.getStorageSync('User')
this.getList()
},
methods: {
codeChange(text) {
this.tips = text
},
getCode() {
if (this.dataForm.phone && this.$u.test.mobile(this.dataForm.phone)) {
if (this.$refs.uCode.canGetCode) {
//
uni.showLoading({
title: '正在获取验证码',
})
ban
.getVerification({
phone: this.dataForm.phone,
})
.then(res => {
uni.hideLoading()
// this.start()
uni.$u.toast('验证码已发送')
//
this.$refs.uCode.start()
})
} else {
uni.$u.toast('倒计时结束后再发送')
}
} else {
uni.$u.toast(
this.dataForm.phone ? '手机号格式不正确' : '请先输入手机号'
)
return
}
},
end() {
// uni.$u.toast('');
},
start() {
// uni.$u.toast('');
},
getList() {
ban.getBankCardChoiceList().then(res => {
this.bankCardChioceList = [res.data]
})
},
bindBank() {
if (!this.ifpass && this.cancode && this.userInfo.pkCountry == 1) {
uni.$u.toast('验证码错误')
return
}
ban.bindWalletBankAdd(this.dataForm).then(res => {
if (res.code == 200) {
uni.$u.toast(res.msg)
setTimeout(() => {
uni.navigateBack()
}, 1000)
}
})
},
submit() {
this.$refs.uForm
.validate()
.then(res => {
//
this.ifpass = true
if (this.userInfo.pkCountry == 1) { },
if (this.cancode) { bankCardChioceList: [],
ban rules: {
.verifyBankCard(this.dataForm) cardNumber: [{
.then(res => { type: 'string',
if (res.code == 200) { required: true,
this.ifpass = true message: '请输入',
this.bindBank() trigger: ['blur', 'change']
} else { }],
this.ifpass = false subBankName: [{
uni.$u.toast(res.msg) type: 'string',
} required: true,
}) message: '请输入',
.catch(err => { trigger: ['blur', 'change']
this.ifpass = false }],
}) accountName: [{
} else { type: 'string',
this.ifpass = true required: true,
this.bindBank() message: '请输入',
} trigger: ['blur', 'change']
} else { }],
this.bindBank() idCard: [{
} type: 'string',
}) required: true,
.catch(errors => { message: '请输入',
uni.$u.toast('校验失败') trigger: ['blur', 'change']
return false }],
}) phone: [{
}, type: 'string',
confirm(e) { required: true,
this.dataForm.bankName = e.value[0].bankName message: '请输入',
this.dataForm.pkBank = e.value[0].pkId trigger: ['blur', 'change']
this.showAmount = false }],
}, verificationCode: [{
}, type: 'string',
} required: true,
message: '请输入',
trigger: ['blur', 'change']
}],
bankName: [{
required: true,
message: '请选择',
trigger: ['change']
}],
},
tips: '',
// refCode: null,
seconds: 60,
ifpass: false,
userInfo: {},
cancode: true, //
}
},
onLoad() {
this.userInfo = uni.getStorageSync('User')
this.getList()
this.checkIfWhite();
},
methods: {
checkIfWhite() {
ban.checkIfWhite().then((res) => {
if (res.code == 200 && res.flag == "N") {
this.cancode = true;
} else if (res.code == 200 && res.flag == "Y") {
this.cancode = false;
}
});
},
codeChange(text) {
this.tips = text;
},
getCode() {
if (this.dataForm.phone && this.$u.test.mobile(this.dataForm.phone)) {
if (this.$refs.uCode.canGetCode) {
//
uni.showLoading({
title: '正在获取验证码'
})
ban.getVerification({
phone: this.dataForm.phone
}).then((res) => {
uni.hideLoading();
// this.start()
uni.$u.toast('验证码已发送');
//
this.$refs.uCode.start();
})
} else {
uni.$u.toast('倒计时结束后再发送');
}
} else {
uni.$u.toast(this.dataForm.phone ? '手机号格式不正确' : '请先输入手机号')
return
}
},
end() {
// uni.$u.toast('');
},
start() {
// uni.$u.toast('');
},
getList() {
ban.getBankCardChoiceList().then(res => {
this.bankCardChioceList = [res.data]
})
},
bindBank() {
if (!this.ifpass &&this.cancode &&this.userInfo.pkCountry == 1) {
uni.$u.toast('验证码错误')
return
}
ban.bindWalletBankAdd(this.dataForm).then(res => {
if (res.code == 200) {
uni.$u.toast(res.msg)
setTimeout(() => {
uni.navigateBack()
}, 1000)
}
})
},
submit() {
this.$refs.uForm.validate().then(res => {
//
this.ifpass = true;
this.bindBank();
return
if (this.userInfo.pkCountry == 1) {
if(this.cancode){
ban.verifyBankCard(this.dataForm).then((res) => {
if (res.code == 200) {
this.ifpass = true;
this.bindBank();
} else {
this.ifpass = false;
uni.$u.toast(res.msg)
}
})
.catch((err) => {
this.ifpass = false;
});
}else{
this.ifpass = true;
this.bindBank();
}
} else {
this.bindBank()
}
}).catch(errors => {
uni.$u.toast('校验失败')
return false
})
},
confirm(e) {
this.dataForm.bankName = e.value[0].bankName
this.dataForm.pkBank = e.value[0].pkId
this.showAmount = false
},
}
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.content { .content {
background: #f2f2f2; background: #F2F2F2;
.theform { .theform {
margin-top: 6rpx; margin-top: 6rpx;
background: #ffffff; background: #FFFFFF;
padding: 20rpx 23rpx 0rpx 23rpx; padding: 20rpx 23rpx 0rpx 23rpx;
.contentye { .contentye {
font-size: 28rpx; font-size: 28rpx;
margin-left: 200rpx; margin-left: 200rpx;
font-family: Source Han Sans CN; font-family: Source Han Sans CN;
font-weight: 400; font-weight: 400;
} }
}
.btnbox { }
margin-top: 38rpx;
padding: 0 20rpx;
.subbtn { .btnbox {
background: #005bac; margin-top: 38rpx;
border-radius: 46rpx; padding: 0 20rpx;
font-size: 30rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
}
}
.getcodes { .subbtn {
width: 197rpx; background: #005BAC;
height: 76rpx; border-radius: 46rpx;
background: #2fbc42; font-size: 30rpx;
border-radius: 38rpx; font-family: Source Han Sans CN;
color: #fff; font-weight: 400;
} color: #FFFFFF;
}
}
.tip-wrapper { .getcodes {
margin: 20rpx 20rpx 0 20rpx; width: 197rpx;
height: 76rpx;
background: #2FBC42;
border-radius: 38rpx;
color: #fff;
}
.tip-content {
display: flex;
align-items: flex-start;
background: linear-gradient(135deg, #fff3e0 0%, #fff8f0 100%);
border: 2rpx solid #ffb74d;
border-radius: 16rpx;
padding: 20rpx 24rpx;
box-shadow: 0 4rpx 12rpx rgba(255, 183, 77, 0.1);
.tip-icon { }
color: #ff9800;
font-size: 28rpx;
font-weight: bold;
margin-right: 16rpx;
margin-top: 2rpx;
flex-shrink: 0;
}
.tip-text {
flex: 1;
font-size: 24rpx;
line-height: 36rpx;
color: #e65100;
font-weight: 500;
letter-spacing: 0.5rpx;
}
}
}
}
</style> </style>

View File

@ -1,265 +1,225 @@
<template> <template>
<view class="content"> <view class="content">
<view class="tablebox" v-if="tableData.length > 0"> <view class="tablebox" v-if="tableData.length > 0">
<view <view class="card" v-for="(item, index) in tableData"
class="card" :style="{ backgroundImage: 'url(' + item.backgroundImg + ')'}" :key="index">
v-for="(item, index) in tableData" <view class="cardtopflex">
:style="{ backgroundImage: 'url(' + item.backgroundImg + ')' }" <view class="cardtopflex2">
:key="index" <view class="imgbox"><img :src="item.logo" alt="" /></view>
> <view class="titlebox">
<view class="cardtopflex"> <view class="cardtitle">{{item.bankName}}</view>
<view class="cardtopflex2"> <view class="cardtitle2">{{'储蓄卡'}}</view>
<view class="imgbox"><img :src="item.logo" alt="" /></view> </view>
<view class="titlebox"> </view>
<view class="cardtitle">{{ item.bankName }}</view> <view class="flexs_1" v-if="item.defaultCard==1">
<view class="cardtitle2">{{ '储蓄卡' }}</view> <view class="qiu"></view>
</view> <view v-if="userInfo.pkCountry == 1">{{'默认'}}</view>
</view> <view v-else style="color: #000;font-weight: bold;" class="cardfooter">{{'默认'}}</view>
<view class="flexs_1" v-if="item.defaultCard == 1"> </view>
<view class="qiu"></view> <view class="flexs_1" v-else>
<view v-if="userInfo.pkCountry == 1">{{ '默认' }}</view>
<view
v-else
style="color: #000; font-weight: bold"
class="cardfooter"
>{{ '默认' }}</view
>
</view>
<view class="flexs_1" v-else>
<view
style="color: #fff; font-weight: bold; cursor: pointer"
@click="setDefault(item.pkId)"
class="cardfooter"
>{{ '设为默认' }}</view
>
</view>
</view>
<view class="cardNumber">{{ item.cardNumber }}</view>
<view
v-if="userInfo.pkCountry == 1"
class="cardfooter"
@click="removeBind(item)"
>
[{{ '解绑' }}]</view
>
<view
v-else
style="color: #000; font-weight: bold"
class="cardfooter"
@click="removeBind(item)"
>
[{{ '解绑' }}]</view
>
</view>
</view>
<u-modal
:showCancelButton="true"
@cancel="modalShow = false"
:content="'是否确认解绑银行卡'"
:show="modalShow"
@confirm="confirmRemove"
ref="uModal"
:asyncClose="true"
></u-modal>
<view class="footerbtn" @click="goAdd"> +{{ '添加银行卡' }} </view>
<u-modal <view style="color: #fff; font-weight: bold; cursor: pointer" @click="setDefault(item.pkId)"
:showCancelButton="true" class="cardfooter">{{'设为默认'}}</view>
@cancel="modalShow2 = false" </view>
content="当前解绑为默银行卡,请设置为另一张卡为默认银行卡" </view>
:show="modalShow2" <view class="cardNumber">{{ item.cardNumber }}</view>
@confirm="confirmRemove2" <view v-if="userInfo.pkCountry == 1" class="cardfooter" @click="removeBind(item)">
ref="uModal" [{{'解绑'}}]</view>
:asyncClose="true" <view v-else style="color: #000;font-weight: bold;" class="cardfooter" @click="removeBind(item)">
></u-modal> [{{'解绑'}}]</view>
<!-- <el-button class="footerbtn" @click="bindBank(true)">{{'绑定银行卡'}}</el-button> --> </view>
</view> </view>
<u-modal :showCancelButton="true" @cancel="modalShow=false" :content="'是否确认解绑银行卡'" :show="modalShow"
@confirm="confirmRemove" ref="uModal" :asyncClose="true"></u-modal>
<view class="footerbtn" @click="goAdd">
+{{'添加银行卡'}}
</view>
<u-modal :showCancelButton="true" @cancel="modalShow2=false" content="当前解绑为默银行卡,请设置为另一张卡为默认银行卡"
:show="modalShow2" @confirm="confirmRemove2" ref="uModal" :asyncClose="true"></u-modal>
<!-- <el-button class="footerbtn" @click="bindBank(true)">{{'绑定银行卡'}}</el-button> -->
</view>
</template> </template>
<script> <script>
import * as ban from '@/config/balance.js' import * as ban from "@/config/balance.js"
export default { export default {
data() { data() {
return { return {
tableData: [], tableData: [],
modalShow: false, modalShow: false,
modalShow2: false, modalShow2: false,
pkId: '', pkId: "",
userInfo: {}, userInfo: {}
} }
}, },
onLoad() { onLoad() {
this.userInfo = uni.getStorageSync('User') this.userInfo = uni.getStorageSync('User')
}, },
onShow() { onShow() {
this.getSearch() this.getSearch()
}, },
methods: { methods: {
setDefault(pkId) { setDefault(pkId) {
ban ban.updateDefault({
.updateDefault({ pkId: pkId
pkId: pkId, }).then((res) => {
}) if (res.code == 200) {
.then(res => { uni.$u.toast(res.msg)
if (res.code == 200) { this.getSearch();
uni.$u.toast(res.msg) } else {
this.getSearch() uni.$u.toast(res.msg)
} else { }
uni.$u.toast(res.msg) });
} },
}) goAdd() {
}, uni.navigateTo({
goAdd() { url: '/pages/mine/bindBank/bindBank'
uni.navigateTo({ })
url: '/pages/mine/bindBank/bindBank', },
}) removeBind(item) {
}, this.pkId = item.pkId
removeBind(item) { if (item.defaultCard == 1) {
this.pkId = item.pkId this.modalShow2 = true
if (item.defaultCard == 1) { } else {
this.modalShow2 = true this.modalShow = true
} else { }
this.modalShow = true
} },
}, confirmRemove2() {
confirmRemove2() { this.modalShow2 =false
this.modalShow2 = false this.modalShow = true
// this.modalShow = true },
}, //
// confirmRemove() {
confirmRemove() { ban.removeBankBind({
ban pkId: this.pkId
.removeBankBind({ }).then((res) => {
pkId: this.pkId, if (res.code == 200) {
}) uni.$u.toast(res.msg)
.then(res => { this.modalShow = false
if (res.code == 200) { this.getSearch();
uni.$u.toast(res.msg) } else {
this.modalShow = false uni.$u.toast(res.msg)
this.getSearch() this.modalShow = false
} else { }
uni.$u.toast(res.msg) });
this.modalShow = false },
} //
}) bindBank(val) {
}, // this.isAdd = true;
// // this.jdTl = val;
bindBank(val) { },
// this.isAdd = true; getSearch() {
// this.jdTl = val; ban.getBankList().then((res) => {
}, this.tableData = res.data;
getSearch() { });
ban.getBankList().then(res => { },
this.tableData = res.data }
}) }
},
},
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.content { .content {
background-color: #f9f9f9; background-color: #f9f9f9;
padding: 22rpx; padding: 22rpx;
.tablebox { .tablebox {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
justify-content: space-between; justify-content: space-between;
.card { .card {
width: 100%; width: 100%;
background-color: rgba(170, 45, 42, 0.9); background-color: rgba(170, 45, 42, 0.9);
background-size: 100% 100%; background-size: 100% 100%;
border-radius: 20rpx; border-radius: 20rpx;
margin: 20rpx 0; margin: 20rpx 0;
padding: 28rpx 32rpx 40rpx 32rpx; padding: 28rpx 32rpx 40rpx 32rpx;
margin-top: 20rpx; margin-top: 20rpx;
.cardtopflex { .cardtopflex {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
.flexs_1 { .flexs_1 {
display: flex; display: flex;
align-items: center; align-items: center;
margin-right: 20rpx; margin-right: 20rpx;
color: #ffffff; color: #ffffff;
font-size: 24rpx; font-size: 24rpx;
.qiu { .qiu {
margin-right: 10rpx; margin-right: 10rpx;
width: 20rpx; width: 20rpx;
height: 20rpx; height: 20rpx;
border-radius: 50%; border-radius: 50%;
background: rgb(47, 236, 47); background: rgb(47, 236, 47);
} }
} }
.cardtopflex2 { .cardtopflex2 {
.imgbox { .imgbox {
margin-right: 20rpx; margin-right: 20rpx;
img { img {
width: 68rpx; width: 68rpx;
height: 68rpx; height: 68rpx;
} }
} }
.titlebox { .titlebox {
color: #ffffff; color: #ffffff;
text-align: left; text-align: left;
.cardtitle { .cardtitle {
font-size: 36rpx; font-size: 36rpx;
font-weight: 600; font-weight: 600;
} }
.cardtitle2 { .cardtitle2 {
font-size: 20rpx; font-size: 20rpx;
margin-top: 8rpx; margin-top: 8rpx;
font-weight: 400; font-weight: 400;
} }
} }
} }
}
.cardNumber { }
font-size: 32rpx;
font-family:
PingFang SC-Medium,
PingFang SC;
font-weight: 600;
color: #ffffff;
margin-top: 100rpx;
margin-left: 36rpx;
}
.cardfooter { .cardNumber {
text-align: right; font-size: 32rpx;
font-size: 24rpx; font-family: PingFang SC-Medium, PingFang SC;
font-family: font-weight: 600;
PingFang SC-Regular, color: #ffffff;
PingFang SC; margin-top: 100rpx;
font-weight: 400; margin-left: 36rpx;
color: #ffffff; }
margin-top: 24rpx;
cursor: pointer;
}
}
}
.footerbtn { .cardfooter {
display: flex; text-align: right;
align-items: center; font-size: 24rpx;
padding: 40rpx; font-family: PingFang SC-Regular, PingFang SC;
background: #ffffff; font-weight: 400;
font-size: 24rpx; color: #ffffff;
font-weight: 600; margin-top: 24rpx;
border-radius: 20rpx; cursor: pointer;
margin-top: 32rpx; }
width: 100%; }
} }
}
.footerbtn {
display: flex;
align-items: center;
padding: 40rpx;
background: #ffffff;
font-size: 24rpx;
font-weight: 600;
border-radius: 20rpx;
margin-top: 32rpx;
width: 100%;
}
}
</style> </style>