413 lines
		
	
	
		
			9.7 KiB
		
	
	
	
		
			Vue
		
	
	
	
			
		
		
	
	
			413 lines
		
	
	
		
			9.7 KiB
		
	
	
	
		
			Vue
		
	
	
	
<template>
 | 
						|
  <view class="content">
 | 
						|
    <view class="theform">
 | 
						|
      <u--form
 | 
						|
        labelPosition="left"
 | 
						|
        :model="dataForm"
 | 
						|
        :rules="rules"
 | 
						|
        ref="uForm"
 | 
						|
      >
 | 
						|
        <u-form-item
 | 
						|
          borderBottom
 | 
						|
          required
 | 
						|
          label-width="200rpx"
 | 
						|
          :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
 | 
						|
          :seconds="seconds"
 | 
						|
          @end="end"
 | 
						|
          @start="start"
 | 
						|
          ref="uCode"
 | 
						|
          @change="codeChange"
 | 
						|
        ></u-code>
 | 
						|
        <u-picker
 | 
						|
          @cancel="showAmount = false"
 | 
						|
          :show="showAmount"
 | 
						|
          ref="uPicker"
 | 
						|
          :columns="bankCardChioceList"
 | 
						|
          @confirm="confirm"
 | 
						|
          keyName="bankName"
 | 
						|
        ></u-picker>
 | 
						|
      </u--form>
 | 
						|
    </view>
 | 
						|
    <view class="tip-wrapper">
 | 
						|
      <view class="tip-content">
 | 
						|
        <view class="tip-text"
 | 
						|
          >银行卡号、真实姓名、证件号码、联系方式,请与银行预留信息保持一致</view
 | 
						|
        >
 | 
						|
      </view>
 | 
						|
    </view>
 | 
						|
    <view class="btnbox">
 | 
						|
      <u-button class="subbtn" @click="submit">{{ '确定' }}</u-button>
 | 
						|
    </view>
 | 
						|
    <u-toast ref="uToast"></u-toast>
 | 
						|
  </view>
 | 
						|
</template>
 | 
						|
 | 
						|
<script>
 | 
						|
import * as ban from '@/config/balance.js'
 | 
						|
export default {
 | 
						|
  data() {
 | 
						|
    return {
 | 
						|
      showAmount: false,
 | 
						|
      dataForm: {
 | 
						|
        bankName: '',
 | 
						|
        cardNumber: '',
 | 
						|
        pkBank: '',
 | 
						|
        subBankName: '',
 | 
						|
        accountName: '',
 | 
						|
        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) {
 | 
						|
              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>
 | 
						|
 | 
						|
<style lang="scss" scoped>
 | 
						|
.content {
 | 
						|
  background: #f2f2f2;
 | 
						|
 | 
						|
  .theform {
 | 
						|
    margin-top: 6rpx;
 | 
						|
    background: #ffffff;
 | 
						|
    padding: 20rpx 23rpx 0rpx 23rpx;
 | 
						|
 | 
						|
    .contentye {
 | 
						|
      font-size: 28rpx;
 | 
						|
      margin-left: 200rpx;
 | 
						|
      font-family: Source Han Sans CN;
 | 
						|
      font-weight: 400;
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  .btnbox {
 | 
						|
    margin-top: 38rpx;
 | 
						|
    padding: 0 20rpx;
 | 
						|
 | 
						|
    .subbtn {
 | 
						|
      background: #005bac;
 | 
						|
      border-radius: 46rpx;
 | 
						|
      font-size: 30rpx;
 | 
						|
      font-family: Source Han Sans CN;
 | 
						|
      font-weight: 400;
 | 
						|
      color: #ffffff;
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  .getcodes {
 | 
						|
    width: 197rpx;
 | 
						|
    height: 76rpx;
 | 
						|
    background: #2fbc42;
 | 
						|
    border-radius: 38rpx;
 | 
						|
    color: #fff;
 | 
						|
  }
 | 
						|
 | 
						|
  .tip-wrapper {
 | 
						|
    margin: 20rpx 20rpx 0 20rpx;
 | 
						|
 | 
						|
    .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>
 |