bank.vue 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343
  1. <template>
  2. <view class="page">
  3. <u-alert-tips
  4. v-if="cObj.auth_state === '2'"
  5. type="warning"
  6. title="当前状态:"
  7. description="当前资料审核中,修改提交后将重新进入审核流程"></u-alert-tips>
  8. <u-alert-tips
  9. v-if="cObj.auth_state === '3'"
  10. type="error"
  11. title="当前状态:"
  12. description="申请被拒绝,清理联系客服咨询"></u-alert-tips>
  13. <u-alert-tips
  14. v-if="cObj.auth_state === '1'"
  15. type="success"
  16. title="当前状态:"
  17. description="当前资料已审核通过,修改提交将重新进入审核流程"></u-alert-tips>
  18. <view class="form">
  19. <u-form :model="form" ref="uForm">
  20. <u-form-item label-width="150" label="推荐人" prop="referrer">
  21. <u-input placeholder="请输入推荐人" v-model="form.referrer" type="text"></u-input>
  22. </u-form-item>
  23. <u-form-item label-width="150" label="姓名" prop="real_name">
  24. <u-input placeholder="请输入您的真实姓名" v-model="form.real_name" type="text"></u-input>
  25. </u-form-item>
  26. <u-form-item label-width="150" label="身份证号" prop="id_number">
  27. <u-input placeholder="请输入您的身份证号" v-model="form.id_number" type="text"></u-input>
  28. </u-form-item>
  29. <u-form-item label-width="150" label="银行卡号" prop="bank_number">
  30. <u-input placeholder="请输入您的银行卡号" v-model="form.bank_number" type="text"></u-input>
  31. </u-form-item>
  32. <u-form-item label-position="top" label-width="150" label="身份证头像页" prop="id_card_front">
  33. <view class="id_card" @click="uploadFrontImage">
  34. <u-icon v-if="form.id_card_front == null" name="plus" size="32" color="#606266"></u-icon>
  35. <text v-if="form.id_card_front == null">请先上传身份证头像页照片</text>
  36. <image v-if="form.id_card_front != null" :src="idCardFront" mode="aspectFill"></image>
  37. </view>
  38. </u-form-item>
  39. <u-form-item label-position="top" label-width="150" label="身份证国徽页" prop="id_card_revers">
  40. <view class="id_card" @click="uploadBackImage">
  41. <u-icon v-if="form.id_card_revers == null" name="plus" size="32" color="#606266"></u-icon>
  42. <text v-if="form.id_card_revers == null">请先上传身份证国徽页照片</text>
  43. <image v-if="form.id_card_revers != null" :src="idCardRevers" mode="aspectFill"></image>
  44. </view>
  45. </u-form-item>
  46. <u-form-item label-position="top" label-width="150" label="银行卡号面" prop="bank_card">
  47. <view class="id_card" @click="uploadBankImage">
  48. <u-icon v-if="form.bank_card == null" name="plus" size="32" color="#606266"></u-icon>
  49. <text v-if="form.bank_card == null">请先上传银行卡号面</text>
  50. <image v-if="form.bank_card != null" :src="bankCard" mode="aspectFill"></image>
  51. </view>
  52. </u-form-item>
  53. </u-form>
  54. <u-gap height="60"></u-gap>
  55. <u-button type="primary" :disabled="submitButtonDisabled" @click="submitModalShow = true">提交</u-button>
  56. <u-gap></u-gap>
  57. <view class="footer">
  58. 提交即代表同意
  59. <text class="agreement" @click="uni.navigateTo('/pages/agreement/agreement?type=user_agreement')">《用户协议》</text>
  60. <text class="agreement" @click="uni.navigateTo('/pages/agreement/agreement?type=privacy_agreement')">《隐私协议》</text>
  61. </view>
  62. </view>
  63. <!-- modal -->
  64. <u-modal v-model="submitModalShow" content="请务必仔细确认各项信息是否正确" :show-cancel-button="true" @confirm="submitHandle()"></u-modal>
  65. <!-- mask -->
  66. <u-mask :show="maskShow" @click="maskShow = false">
  67. <view class="warp">
  68. <!-- <u-image src="https://zdcdn.2bwin.cn/uploads/20220513/90abe6fe85d6c17f6bdc069955fbb878.png" mode="widthFix" width="400rpx" border-radius="20rpx"></u-image> -->
  69. <u-gap></u-gap>
  70. <u-button size="medium" type="primary" @click="maskShow = false">确定</u-button>
  71. </view>
  72. </u-mask>
  73. <!-- utoast -->
  74. <u-toast ref="uToast" />
  75. </view>
  76. </template>
  77. <script>
  78. var that;
  79. export default {
  80. data() {
  81. return {
  82. maskShow: false,
  83. idCardFront: '',
  84. idCardRevers: '',
  85. bankCard: '',
  86. form: {
  87. referrer: null,
  88. real_name: null,
  89. id_number: '',
  90. bank_number: '',
  91. id_card_front: null,
  92. id_card_revers: null,
  93. bank_card: null,
  94. },
  95. cObj: {},
  96. submitButtonDisabled: false,
  97. rules: {
  98. referrer: [
  99. {
  100. required: true,
  101. message: '推荐人不得为空',
  102. trigger: ['change', 'blur']
  103. },
  104. ],
  105. real_name: [
  106. {
  107. required: true,
  108. message: '姓名不得为空',
  109. trigger: ['change', 'blur']
  110. },
  111. ],
  112. id_number: [
  113. {
  114. required: true,
  115. message: '身份证号不得为空',
  116. trigger: ['change', 'blur']
  117. },
  118. ],
  119. bank_number: [
  120. {
  121. required: true,
  122. message: '银行卡号不得为空',
  123. trigger: ['change', 'blur']
  124. },
  125. ],
  126. id_card_front: [
  127. {
  128. required: true,
  129. message: '身份证头像页照片不得为空',
  130. trigger: ['change', 'blur']
  131. }
  132. ],
  133. id_card_revers: [
  134. {
  135. required: true,
  136. message: '身份证国徽页照片不得为空',
  137. trigger: ['change', 'blur']
  138. }
  139. ],
  140. bank_card: [
  141. {
  142. required: true,
  143. message: '银行卡号面照片不得为空',
  144. trigger: ['change', 'blur']
  145. }
  146. ],
  147. },
  148. submitModalShow: false,
  149. };
  150. },
  151. onLoad(params) {
  152. this.getData()
  153. },
  154. // 必须要在onReady生命周期,因为onLoad生命周期组件可能尚未创建完毕
  155. onReady() {
  156. this.$refs.uForm.setRules(this.rules);
  157. },
  158. methods: {
  159. getData () {
  160. uni.api.base.apiuserauthinfo().then(res => {
  161. const cObj = res || {}
  162. if (cObj.id) {
  163. this.idCardFront = cObj.id_card_front_pub
  164. this.idCardRevers = cObj.id_card_revers_pub
  165. this.bankCard = cObj.bank_card_pub
  166. let f = {
  167. referrer: cObj.referrer,
  168. real_name: cObj.real_name,
  169. id_number: cObj.id_number,
  170. bank_number: cObj.bank_number,
  171. id_card_front: cObj.id_card_front,
  172. id_card_revers: cObj.id_card_revers,
  173. bank_card: cObj.bank_card,
  174. }
  175. this.form = {...f}
  176. // if (cObj.auth_state === '1') this.submitButtonDisabled = true
  177. this.cObj = {...cObj}
  178. }
  179. })
  180. },
  181. uploadImgHandle (bc) {
  182. uni.chooseImage({
  183. count: 1,
  184. sizeType: ['compressed'],
  185. success: function(res) {
  186. const filePath = res.tempFilePaths[0];
  187. let token = uni.getStorageSync('MD_token') || ''
  188. uni.uploadFile({
  189. url: uni.baseUrl + 'api/upload/cloudpiv',
  190. filePath,
  191. name: 'upload',
  192. formData: {
  193. 'token': token
  194. },
  195. success: (f) => {
  196. const cData = JSON.parse(f.data)
  197. if (cData.errno === 0) {
  198. if (bc && typeof(bc) === 'function') bc(cData.data)
  199. } else {
  200. uin.$msg(cData.errmsg || `未知错误-${cData.errno}`)
  201. }
  202. }
  203. })
  204. }
  205. })
  206. },
  207. // 选择、验证、上传正面照片
  208. uploadFrontImage() {
  209. this.uploadImgHandle((d) => {
  210. this.form.id_card_front = d.url
  211. this.idCardFront = d.pub_url
  212. })
  213. },
  214. // 选择、上传身份证背面
  215. uploadBackImage() {
  216. this.uploadImgHandle((d) => {
  217. this.form.id_card_revers = d.url
  218. this.idCardRevers = d.pub_url
  219. })
  220. },
  221. // 选择、上传银行卡号面
  222. uploadBankImage() {
  223. this.uploadImgHandle((d) => {
  224. this.form.bank_card = d.url
  225. this.bankCard = d.pub_url
  226. })
  227. },
  228. submitHandle() {
  229. const that = this
  230. this.$refs.uForm.validate(valid => {
  231. if (valid) {
  232. let params = {
  233. ...that.form
  234. }
  235. uni.api.base.apiuserauthadd(params).then(res => {
  236. uni.$msgConfirm('编辑成功', () => {
  237. uni.reLaunch({
  238. url: '/pages/user/setting/setting'
  239. })
  240. }, () => {
  241. uni.reLaunch({
  242. url: '/pages/user/setting/setting'
  243. })
  244. })
  245. })
  246. uni.api.base.apiuseredit({
  247. nickname: params.real_name
  248. }).then(() => {})
  249. }
  250. });
  251. },
  252. // 以下是工具函数
  253. // 格式化日期的月份或天数的显示(小于10,在前面增加0)
  254. getFormatDate(value) {
  255. if (value == undefined || value == '') {
  256. return '';
  257. }
  258. var str = value;
  259. if (parseInt(value) < 10) {
  260. str = '0' + value;
  261. }
  262. return str;
  263. }
  264. }
  265. };
  266. </script>
  267. <style lang="scss">
  268. .page {
  269. background-color: #ffffff;
  270. }
  271. .form {
  272. border-radius: 10rpx;
  273. padding: 0 40rpx;
  274. }
  275. .popup-body {
  276. .tips-title {
  277. font-size: $u-p;
  278. margin-bottom: 20rpx;
  279. }
  280. .tips-content {
  281. font-size: $u-p2;
  282. color: $u-tips-color;
  283. margin-bottom: 60rpx;
  284. }
  285. }
  286. .id_card {
  287. color: #606266;
  288. width: 100%;
  289. height: 350rpx;
  290. display: flex;
  291. flex-direction: column;
  292. align-items: center;
  293. justify-content: center;
  294. background-color: #f4f5f6;
  295. font-size: $u-p2;
  296. border-radius: 10rpx;
  297. image {
  298. border-radius: 10rpx;
  299. }
  300. }
  301. .footer {
  302. position: relative;
  303. text-align: center;
  304. font-size: $u-p2;
  305. left: 0;
  306. bottom: 20rpx;
  307. .agreement {
  308. color: $u-theme-color;
  309. }
  310. }
  311. .slot-content {
  312. font-size: 28rpx;
  313. color: $u-content-color;
  314. padding: 20rpx;
  315. }
  316. .warp {
  317. display: flex;
  318. flex-direction: column;
  319. align-items: center;
  320. justify-content: center;
  321. height: 100%;
  322. }
  323. .rect {
  324. width: 400rpx;
  325. height: 400rpx;
  326. background-color: #fff;
  327. }
  328. </style>