bank2.vue 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  1. <template>
  2. <view class="page">
  3. <u-alert-tips
  4. v-if="vk.pubfn.isNotNull(vk.vuex.get('$user.agentInfo.verify_status'))"
  5. :type="vk.vuex.get('$user.agentInfo.verify_status') == 0 ? 'warning' : vk.vuex.get('$user.agentInfo.verify_status') == 1 ? 'success' : 'error'"
  6. title="当前状态:"
  7. :description="
  8. vk.vuex.get('$user.agentInfo.verify_status') == 0
  9. ? '当前资料审核中,修改提交后将重新进入审核流程'
  10. : vk.vuex.get('$user.agentInfo.verify_status') == 1
  11. ? '当前资料已审核通过,修改提交将重新进入审核流程'
  12. : '申请被拒绝,清理联系客服咨询'
  13. "
  14. ></u-alert-tips>
  15. <view class="form">
  16. <u-form :model="form" ref="uForm">
  17. <u-form-item label-width="150" label="开户行" prop="name">
  18. <u-input placeholder="如:中国银行北京中关村支行" v-model="form.name" type="text"></u-input>
  19. </u-form-item>
  20. <u-form-item label-width="150" label="卡号" prop="no"><u-input placeholder="请输入完整的银行卡卡号" v-model="form.no" type="text"></u-input></u-form-item>
  21. <u-form-item label-position="top" label-width="150" label="银行卡卡号面" prop="front_image">
  22. <view class="id_card" @click="uploadFrontImage">
  23. <u-icon v-if="form.front_image == null" name="plus" size="32" color="#606266"></u-icon>
  24. <text v-if="form.front_image == null">{{ frontImageDisabled ? '请先输入银行卡号' : '点击上传图片' }}</text>
  25. <image v-if="form.front_image != null" :src="form.front_image" mode="aspectFill"></image>
  26. </view>
  27. </u-form-item>
  28. </u-form>
  29. <u-gap height="60"></u-gap>
  30. <u-button type="primary" :disabled="submitButtonDisabled" @click="submitModalShow = true">提交</u-button>
  31. <u-gap></u-gap>
  32. <view class="footer">
  33. 提交即代表同意
  34. <text class="agreement" @click="vk.navigateTo('/pages/agreement/agreement?type=user_agreement')">《用户协议》</text>
  35. <text class="agreement" @click="vk.navigateTo('/pages/agreement/agreement?type=privacy_agreement')">《隐私协议》</text>
  36. </view>
  37. </view>
  38. <!-- modal -->
  39. <u-modal v-model="submitModalShow" content="请务必仔细确认各项信息是否正确" :show-cancel-button="true" @confirm="submit()"></u-modal>
  40. <u-modal v-model="modalShow" :content="modalContent" :show-cancel-button="true" @cancel="modalCancel()" @confirm="modalConfirm()"></u-modal>
  41. <!-- mask -->
  42. <u-mask :show="maskShow" @click="maskShow = false">
  43. <view class="warp">
  44. <u-image src="https://zdcdn.2bwin.cn/uploads/20220513/90abe6fe85d6c17f6bdc069955fbb878.png" mode="widthFix" width="400rpx" border-radius="20rpx"></u-image>
  45. <u-gap></u-gap>
  46. <u-button size="medium" type="primary" @click="maskShow = false">确定</u-button>
  47. </view>
  48. </u-mask>
  49. <!-- utoast -->
  50. <u-toast ref="uToast" />
  51. </view>
  52. </template>
  53. <script>
  54. var that;
  55. export default {
  56. data() {
  57. return {
  58. maskShow: true,
  59. form: {
  60. name: null,
  61. no: null,
  62. front_image: null
  63. },
  64. frontImageDisabled: true,
  65. submitButtonDisabled: true,
  66. rules: {
  67. name: [
  68. {
  69. required: true,
  70. message: '开户行不得为空',
  71. trigger: ['change', 'blur']
  72. }
  73. ],
  74. no: [
  75. {
  76. required: true,
  77. message: '银行卡号不得为空',
  78. trigger: ['change', 'blur']
  79. }
  80. ],
  81. front_image: [
  82. {
  83. required: true,
  84. message: '银行卡照片不得为空',
  85. trigger: ['change', 'blur']
  86. }
  87. ]
  88. },
  89. submitModalShow: false,
  90. modalType: 1,
  91. modalShow: false,
  92. modalContent: '',
  93. updateMethod: 'update'
  94. };
  95. },
  96. onLoad(params) {
  97. that = this;
  98. if (!vk.checkToken()) {
  99. vk.toast('请先登录', 'none', 1500, true, function() {
  100. vk.navigateToLogin();
  101. });
  102. } else {
  103. if (vk.pubfn.isNull(vk.vuex.get('$user.userInfo.mobile'))) {
  104. vk.toast('请先补全您的手机号', 'none', 1500, true, function() {
  105. // vk.navigateToHome();
  106. });
  107. // return
  108. }
  109. vk.callFunction({
  110. url: 'client/agent/kh/getAgentInfo',
  111. title: '请求中...',
  112. needAlert: false
  113. })
  114. .then(res => {
  115. if (vk.pubfn.isNull(res.info)) {
  116. that.updateMethod = 'create';
  117. vk.toast('请补全您的资料', 'none');
  118. } else {
  119. // 更新审核状态
  120. vk.vuex.set('$user.agentInfo', res.info);
  121. console.log(vk.vuex.get('$user.agentInfo'));
  122. that.form.name = res.info.bank_info.name;
  123. that.form.no = res.info.bank_info.no;
  124. that.form.front_image = res.info.bank_info.front_image;
  125. if (vk.pubfn.isNotNull(res.info.bank_info.no)) {
  126. that.frontImageDisabled = false;
  127. }
  128. if (vk.pubfn.isNotNull(res.info.bank_info.front_image)) {
  129. that.idCradBackImageDisabled = false;
  130. }
  131. }
  132. })
  133. .catch(res => {
  134. console.log(res);
  135. });
  136. }
  137. },
  138. // 必须要在onReady生命周期,因为onLoad生命周期组件可能尚未创建完毕
  139. onReady() {
  140. this.$refs.uForm.setRules(this.rules);
  141. },
  142. methods: {
  143. // 选择、验证、上传正面照片
  144. uploadFrontImage() {
  145. if (vk.pubfn.isNullOne(that.form.name, that.form.no)) {
  146. vk.toast('请检查输入信息是否完整', 'none');
  147. return;
  148. }
  149. uni.chooseImage({
  150. count: 1,
  151. sizeType: ['compressed'],
  152. success: function(res) {
  153. // 上传至 unicloud云储存
  154. vk.callFunctionUtil.uploadFile({
  155. title: '上传中...',
  156. filePath: res.tempFilePaths[0],
  157. suffix: 'png', // 不传suffix会自动获取,但H5环境下获取不到后缀,但可以通过file.name 获取
  158. provider: 'unicloud',
  159. success(uploadRes) {
  160. console.log(uploadRes);
  161. // 上传成功
  162. that.form.front_image = uploadRes.url;
  163. that.submitButtonDisabled = false;
  164. }
  165. });
  166. }
  167. });
  168. },
  169. submit() {
  170. that.$refs.uForm.validate(valid => {
  171. if (valid) {
  172. let bank_info = that.form;
  173. vk.callFunction({
  174. url: 'client/agent/kh/updateAgentInfo',
  175. title: '请求中...',
  176. needAlert: false,
  177. data: {
  178. method: that.updateMethod,
  179. bank_info: that.form
  180. }
  181. })
  182. .then(res => {
  183. console.log(res);
  184. vk.vuex.set('$user.agentInfo.bank_info', that.form);
  185. vk.vuex.set('$user.agentInfo.verify_status', 0); // 审核中
  186. vk.toast('更新成功,等待审核', 'none', 1500, true, function() {
  187. vk.navigateToHome();
  188. });
  189. })
  190. .catch(res => {
  191. console.log(res);
  192. });
  193. } else {
  194. console.log('验证失败');
  195. }
  196. });
  197. },
  198. // 以下是工具函数
  199. // 格式化日期的月份或天数的显示(小于10,在前面增加0)
  200. getFormatDate(value) {
  201. if (value == undefined || value == '') {
  202. return '';
  203. }
  204. var str = value;
  205. if (parseInt(value) < 10) {
  206. str = '0' + value;
  207. }
  208. return str;
  209. }
  210. }
  211. };
  212. </script>
  213. <style lang="scss">
  214. .page {
  215. background-color: #ffffff;
  216. }
  217. .form {
  218. border-radius: 10rpx;
  219. padding: 0 40rpx;
  220. }
  221. .popup-body {
  222. .tips-title {
  223. font-size: $u-p;
  224. margin-bottom: 20rpx;
  225. }
  226. .tips-content {
  227. font-size: $u-p2;
  228. color: $u-tips-color;
  229. margin-bottom: 60rpx;
  230. }
  231. }
  232. .id_card {
  233. color: #606266;
  234. width: 100%;
  235. height: 350rpx;
  236. display: flex;
  237. flex-direction: column;
  238. align-items: center;
  239. justify-content: center;
  240. background-color: #f4f5f6;
  241. font-size: $u-p2;
  242. border-radius: 10rpx;
  243. image {
  244. border-radius: 10rpx;
  245. }
  246. }
  247. .footer {
  248. position: relative;
  249. text-align: center;
  250. font-size: $u-p2;
  251. left: 0;
  252. bottom: 20rpx;
  253. .agreement {
  254. color: $u-theme-color;
  255. }
  256. }
  257. .slot-content {
  258. font-size: 28rpx;
  259. color: $u-content-color;
  260. padding: 20rpx;
  261. }
  262. .warp {
  263. display: flex;
  264. flex-direction: column;
  265. align-items: center;
  266. justify-content: center;
  267. height: 100%;
  268. }
  269. .rect {
  270. width: 400rpx;
  271. height: 400rpx;
  272. background-color: #fff;
  273. }
  274. </style>