| 
					
				 | 
			
			
				@@ -0,0 +1,211 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  <zj-page-layout bgColor="#ffffff"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <view class="all-container"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <view class="input"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <u-input clearable border="bottom" placeholder="" :value="mobile" :disabled="true"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <view class="" style="" slot="prefix"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <text class="kakkslakldsj">当前手机号码</text> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </view> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </u-input> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </view> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <view class="input"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <u-input clearable border="bottom" placeholder="请输入手机号" v-model="phone"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <view class="" style="" slot="prefix"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <text class="kakkslakldsj">*新手机号码</text> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </view> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </u-input> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </view> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <view class="input"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <u-input clearable border="bottom" placeholder="请输入验证码" v-model="code"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <view class="" style="" slot="prefix"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <text class="kakkslakldsj">*验证码</text> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </view> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <view class="" slot="suffix" @click="getCode"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <text class="text">{{ countDown ? countDown + 'S' : '获取验证码' }}</text> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </view> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </u-input> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </view> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <u-button type="primary" text="确定" :disabled="!phone || !code" @click="submitForm"></u-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <zjDialogVerification 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ref="verification" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        :isShow="isShowCodeDialog" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        :top="codeObj.yHeight" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        :bgImg="codeObj.bigImage" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        :maskImg="codeObj.smallImage" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        :isSuccess="codeObj.isSuccess" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        :isFail="codeObj.isFail" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        @close="isShowCodeDialog = false" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        @refresh="refresh" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        @finish="finish" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </zjDialogVerification> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </view> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  </zj-page-layout> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import zjDialogVerification from '@/components/zj-dialog/zj-dialog-verification.vue' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { getStorage } from '@/common/utils/storage.js' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  components: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    zjDialogVerification 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  data() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      phone: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      code: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      getCodeText: '获取验证码', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      countDown: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      timer: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      isShowCodeDialog: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      codeObj: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bigImage: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        smallImage: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        key: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        yHeight: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        isSuccess: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        isFail: false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  computed: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    userInfo() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return getStorage('user') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    mobile() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return this?.userInfo?.mobile 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  methods: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 获取验证码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    getCode() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (!this.phone) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.$toast('请先填写手机号码') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (this.countDown != 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.$toast('请勿频繁获取验证码') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (!/^1[3456789]\d{9}$/.test(this.phone)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.$toast('请填写正确的手机号码') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // this.init(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.isShowCodeDialog = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$refs.verification.refresh() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 提交表单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    submitForm() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (!this.phone) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.$toast('请先填写手机号码') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (!/^1[3456789]\d{9}$/.test(this.phone)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.$toast('请填写正确的手机号码') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (!this.code) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.$toast('请先填写验证码') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$api 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        .post('/user/phone/upBind', { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          phone: this.phone, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          code: this.code 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        .then(res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.$successToast('申请成功') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          setTimeout(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.$navToPage( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                delta: 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              'navigateBack' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }, 1000) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 获取图片验证码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    init() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$api.get('/common/getVerifi').then(res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.codeObj = res.data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 刷新验证码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    refresh() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.init() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 验证结束 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    finish(value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      console.log(value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$api 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        .post('/user/sms/send', { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          phone: this.phone, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          key: this.codeObj.key, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          vrifyCode: Math.round(value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        .then(res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.countDown = 60 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.codeObj.isSuccess = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.codeObj.isFail = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          setTimeout(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.isShowCodeDialog = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.$toast('短信发送成功') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }, 1500) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.countDown-- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.timer = setInterval(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.countDown-- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (this.countDown == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              this.getCodeText = '重新获取' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              clearInterval(this.timer) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }, 1000) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        .catch(res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.codeObj.isSuccess = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.codeObj.isFail = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          setTimeout(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.$refs.verification.refresh() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }, 1500) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<style lang="scss" scoped> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.kakkslakldsj { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  display: inline-block; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  width: 220rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.all-container { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  padding: 0 30rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .input { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    margin-top: 30rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ::v-deep .u-input { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      .iconfont { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        font-size: 36rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        color: $theme-color; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        font-weight: 600; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        margin-right: 12rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      .text { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        color: $theme-color; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ::v-deep .u-button { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    margin-top: 60rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</style> 
			 |