bindBank.vue 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. <template>
  2. <view>
  3. <!-- 公共组件-每个页面必须引入 -->
  4. <public-module></public-module>
  5. <!-- 步骤条Start -->
  6. <view class="weui-flex bindBank-step d-flex a-center j-center">
  7. <view class="weui-flex-item">
  8. <view class="bindBank-step-icon bindBank-step-iconCard"></view>
  9. <view class="bindBank-step-des">添加银行卡</view>
  10. </view>
  11. </view>
  12. <!-- 步骤条End -->
  13. <!-- 持卡人信息Start -->
  14. <view class="bindBankCard">
  15. <view class="bindBank-infor">
  16. <view class="header row">请填写本人银行卡信息(储蓄卡)</view>
  17. <view class="inputData d-flex">
  18. <view class="d-flex a-center">选择银行</view>
  19. <view class="d-flex a-center flex-1">
  20. <input style="font-size: 28upx;" type="text" disabled v-model="bankname" placeholder="系统自动识别" />
  21. </view>
  22. </view>
  23. <view class="inputData d-flex">
  24. <view class="d-flex a-center">银行卡卡号</view>
  25. <view class="d-flex a-center flex-1">
  26. <input type="text" v-model="accountno" @blur="validateBankCard" placeholder="请输入银行卡卡号"
  27. style="font-size: 28upx;" />
  28. </view>
  29. </view>
  30. </view>
  31. </view>
  32. <!-- 持卡人信息End -->
  33. <button class="user-set-btn d-flex a-center j-center main-bg-color" :class="{'main-bf-hover-color':disabled}"
  34. type="primary" @tap="submit" :disabled="disabled" style="margin: 40upx 30upx;">绑定银行卡</button>
  35. </view>
  36. </template>
  37. <script>
  38. import {
  39. mapState,
  40. mapMutations
  41. } from "vuex"
  42. import bankBin from "@/common/bankcardinfo.js"
  43. export default {
  44. data() {
  45. return {
  46. bankname: "", //银行名称
  47. accountno: "", //银行卡账号
  48. disabled: true,
  49. validateBankCardStatus: false, //银行卡验证状态
  50. }
  51. },
  52. computed: {
  53. ...mapState(['userInfo'])
  54. },
  55. watch: {
  56. bankname(val) {
  57. this.OnBtnChange();
  58. },
  59. accountno(val) {
  60. this.OnBtnChange();
  61. },
  62. },
  63. methods: {
  64. ...mapMutations(['setUserModules']),
  65. // 改变按钮状态
  66. OnBtnChange() {
  67. if (this.accountno && this.bankname) {
  68. this.disabled = false;
  69. return;
  70. }
  71. this.disabled = true;
  72. },
  73. // 验证银行卡
  74. async validateBankCard() {
  75. var that = this;
  76. that.bankname = "";
  77. await bankBin.getBankBin(this.accountno)
  78. .then((data) => {
  79. that.bankname = data.bankName;
  80. that.validateBankCardStatus = true;
  81. return true;
  82. })
  83. .catch((err) => {
  84. that.validateBankCardStatus = false;
  85. return uni.showToast({
  86. title: err.split(":")[1],
  87. icon: "none"
  88. });
  89. })
  90. },
  91. async submit() {
  92. var params = {
  93. "bankNumber": this.accountno,
  94. "bankAccount": this.bankname,
  95. "isDefault": 0,
  96. }
  97. let res = await this.$http.post('/userBank/insertByBankNumber', params);
  98. if (res.code == '200') {
  99. uni.showToast({
  100. title: '添加成功',
  101. duration: 2000,
  102. icon: "success"
  103. });
  104. setTimeout(() => {
  105. return uni.navigateBack();
  106. }, 2000);
  107. }
  108. }
  109. }
  110. }
  111. </script>
  112. <style lang="scss" scoped>
  113. @import '@/style/mixin.scss';
  114. page {
  115. background-color: #F5F5F5;
  116. }
  117. .bindBank-step {
  118. padding: 72upx 0 78upx;
  119. background: rgba($themeColor, 0.8);
  120. text-align: center;
  121. }
  122. .bindBank-step>view {
  123. position: relative;
  124. width: 50%;
  125. }
  126. .bindBank-step-icon {
  127. width: 76upx;
  128. height: 76upx;
  129. line-height: 76upx;
  130. position: relative;
  131. z-index: 3;
  132. display: inline-block;
  133. overflow: hidden;
  134. }
  135. .bindBank-step-des {
  136. font-size: 24upx;
  137. color: #fff;
  138. }
  139. .bindBank-step-iconCard {
  140. background: url('/static/image/bindBank/icon-card.png') no-repeat 0 0;
  141. background-size: 100%;
  142. }
  143. .bindBank-step-iconEnd {
  144. background: url('/static/image/bindBank/icon-Password.png') no-repeat 0 0;
  145. background-size: 100%;
  146. }
  147. /* 银行卡信息Start */
  148. .bindBankCard {
  149. background-color: #f0eff5;
  150. margin-top: -40upx;
  151. border-radius: 40upx 40upx 0upx 0upx;
  152. overflow: hidden;
  153. font-size: 28upx;
  154. }
  155. .bindBankCard .row {
  156. padding: 0upx 30upx;
  157. box-sizing: border-box;
  158. }
  159. .bindBankCard .inputData {
  160. padding: 10upx 15upx;
  161. color: #333;
  162. background-color: #fff;
  163. height: 80upx;
  164. }
  165. .bindBank-infor>.header {
  166. height: 90upx;
  167. line-height: 90upx;
  168. }
  169. .bindBankCard .inputData>view:nth-of-type(1) {
  170. padding: 20upx 0;
  171. width: 210upx;
  172. flex-shrink: 1;
  173. font-size: 30upx;
  174. }
  175. /* 银行卡信息End */
  176. </style>