bindBank.vue 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  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="userInfo.sysUser.name" />
  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 style="font-size: 28upx;" type="text" disabled v-model="userInfo.esmUserInternal.identity" />
  27. </view>
  28. </view> -->
  29. <view class="inputData d-flex">
  30. <view class="d-flex a-center">选择银行</view>
  31. <view class="d-flex a-center flex-1">
  32. <input style="font-size: 28upx;" type="text" disabled v-model="bankname" placeholder="系统自动识别" />
  33. </view>
  34. </view>
  35. <view class="inputData d-flex">
  36. <view class="d-flex a-center">银行卡卡号</view>
  37. <view class="d-flex a-center flex-1">
  38. <input type="text" v-model="accountno" @blur="validateBankCard" placeholder="请输入银行卡卡号"
  39. style="font-size: 28upx;" />
  40. </view>
  41. </view>
  42. </view>
  43. </view>
  44. <!-- 持卡人信息End -->
  45. <button class="user-set-btn d-flex a-center j-center main-bg-color" :class="{'main-bf-hover-color':disabled}"
  46. type="primary" @tap="submit" :disabled="disabled" style="margin: 40upx 30upx;">绑定银行卡</button>
  47. </view>
  48. </template>
  49. <script>
  50. import {
  51. mapState,
  52. mapMutations
  53. } from "vuex"
  54. import bankBin from "@/common/bankcardinfo.js"
  55. export default {
  56. data() {
  57. return {
  58. bankname: "", //银行名称
  59. accountno: "", //银行卡账号
  60. disabled: true,
  61. validateBankCardStatus: false, //银行卡验证状态
  62. }
  63. },
  64. computed: {
  65. ...mapState(['userInfo'])
  66. },
  67. watch: {
  68. bankname(val) {
  69. this.OnBtnChange();
  70. },
  71. accountno(val) {
  72. this.OnBtnChange();
  73. },
  74. },
  75. methods: {
  76. ...mapMutations(['setUserModules']),
  77. // 改变按钮状态
  78. OnBtnChange() {
  79. if (this.accountno && this.bankname) {
  80. this.disabled = false;
  81. return;
  82. }
  83. this.disabled = true;
  84. },
  85. // 验证银行卡
  86. async validateBankCard() {
  87. var that = this;
  88. that.bankname = "";
  89. await bankBin.getBankBin(this.accountno)
  90. .then((data) => {
  91. console.log(data)
  92. that.bankname = data.bankName;
  93. that.validateBankCardStatus = true;
  94. return true;
  95. })
  96. .catch((err) => {
  97. console.log(err)
  98. that.validateBankCardStatus = false;
  99. return uni.showToast({
  100. title: err.split(":")[1],
  101. icon: "none"
  102. });
  103. })
  104. },
  105. async submit() {
  106. var params = {
  107. "accountno": this.accountno,
  108. "bankname": this.bankname,
  109. "id": this.userInfo.sysUser.id
  110. }
  111. let res = await this.$http.post('/esmUserInternal/saveUser', params);
  112. let info = {
  113. sysUser: {},
  114. esmUserInternal: {},
  115. esmUserAgent: {}
  116. };
  117. Object.assign(info.sysUser, this.userInfo.sysUser);
  118. Object.assign(info.esmUserInternal, this.userInfo.esmUserInternal);
  119. Object.assign(info.esmUserAgent, this.userInfo.esmUserAgent);
  120. info.esmUserInternal.accountno = this.accountno;
  121. info.esmUserInternal.bankname = this.bankname;
  122. this.setUserModules({
  123. title: 'userInfo',
  124. data: info
  125. })
  126. uni.showToast({
  127. title: '更改银行卡成功',
  128. duration: 2000,
  129. icon: "none"
  130. });
  131. setTimeout(() => {
  132. return uni.navigateBack();
  133. }, 2000);
  134. }
  135. }
  136. }
  137. </script>
  138. <style lang="scss" scoped>
  139. @import '@/style/mixin.scss';
  140. page {
  141. background-color: #F5F5F5;
  142. }
  143. .bindBank-step {
  144. padding: 72upx 0 78upx;
  145. background: rgba($themeColor, 0.8);
  146. text-align: center;
  147. }
  148. .bindBank-step>view {
  149. position: relative;
  150. width: 50%;
  151. }
  152. .bindBank-step-icon {
  153. width: 76upx;
  154. height: 76upx;
  155. line-height: 76upx;
  156. position: relative;
  157. z-index: 3;
  158. display: inline-block;
  159. overflow: hidden;
  160. }
  161. .bindBank-step-des {
  162. font-size: 24upx;
  163. color: #fff;
  164. }
  165. .bindBank-step-iconCard {
  166. background: url('/static/image/bindBank/icon-card.png') no-repeat 0 0;
  167. background-size: 100%;
  168. }
  169. .bindBank-step-iconEnd {
  170. background: url('/static/image/bindBank/icon-Password.png') no-repeat 0 0;
  171. background-size: 100%;
  172. }
  173. /* 银行卡信息Start */
  174. .bindBankCard {
  175. background-color: #f0eff5;
  176. margin-top: -40upx;
  177. border-radius: 40upx 40upx 0upx 0upx;
  178. overflow: hidden;
  179. font-size: 28upx;
  180. }
  181. .bindBankCard .row {
  182. padding: 0upx 30upx;
  183. box-sizing: border-box;
  184. }
  185. .bindBankCard .inputData {
  186. padding: 10upx 15upx;
  187. color: #333;
  188. background-color: #fff;
  189. height: 80upx;
  190. }
  191. .bindBank-infor>.header {
  192. height: 90upx;
  193. line-height: 90upx;
  194. }
  195. .bindBankCard .inputData>view:nth-of-type(1) {
  196. padding: 20upx 0;
  197. width: 210upx;
  198. flex-shrink: 1;
  199. font-size: 30upx;
  200. }
  201. /* 银行卡信息End */
  202. </style>