bug
jiangping
2023-11-07 64b432916af9c9218ab3f3eca614e26c542142ae
minipro_standard/pages/updatePhone/updatePhone.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,162 @@
<template>
   <view class="password">
      <view class="password_tip">
         <image src="@/static/password_ic_tip@2x.png" alt="" />
         <text>绑定手机号可以更好地保护您的账户安全,保护个人信息不被侵害。</text>
      </view>
      <view class="password_list">
         <view class="password_list_item">
            <text>当前绑定</text>
            <view class="password_list_item_box">
               <input type="number" disabled v-model="userInfo.companyUser.phone" maxlength="11">
            </view>
         </view>
         <view class="password_list_item">
            <text>新手机号</text>
            <view class="password_list_item_box">
               <input type="text" v-model="form.newPhone" maxlength="11" placeholder="请输入新手机号">
            </view>
         </view>
         <view class="password_list_item">
            <text>验证码</text>
            <view class="password_list_item_box">
               <input type="text" v-model="form.verificationCode" maxlength="4" placeholder="请输入手机验证码">
               <p @click="getVerificationCode" v-if="!code.isOpen">获取验证码</p>
               <p v-else>{{code.num}}</p>
            </view>
         </view>
      </view>
      <view class="password_footer">
         <button v-preventReClick class="password_footer_submit" @click="submit">
            <text>完成</text>
         </button>
      </view>
   </view>
</template>
<script>
   import { mapState } from 'vuex'
   import { phoneRegular } from '@/common/config.js'
   export default {
      data() {
         return {
            form: {
               newPhone: '',
               verificationCode: ''
            },
            code: {
               num: 60,
               isOpen: false,
               timer: 0
            }
         };
      },
      computed: mapState([
         'userInfo'
      ]),
      methods: {
         // èŽ·å–éªŒè¯ç 
         getVerificationCode() {
            this.code.isOpen = true
            this.code.timer = setInterval(() => {
               if (this.code.num === 0) {
                  clearInterval(this.code.timer)
                  this.code.isOpen = false
                  this.code.num = 60
               }
               this.code.num = this.code.num - 1
            }, 1000)
         },
         // æäº¤ä¿®æ”¹
         submit() {
            if (!this.form.newPhone) {
               uni.showToast({ title: '新手机号不能为空', icon: 'none', duration: 2000 });
            } else if (!phoneRegular.test(this.form.newPhone)) {
               uni.showToast({ title: '手机号不合法', icon: 'none', duration: 2000 });
            } else if (!this.form.verificationCode) {
               uni.showToast({ title: '验证码不能为空', icon: 'none', duration: 2000 });
            } else {
               console.log('可以提交')
            }
         }
      }
   }
</script>
<style lang="scss" scoped>
   .password {
      width: 100%;
      .password_tip {
         padding: 20rpx 30rpx;
         display: flex;
         background: #F7F7F7;
         box-sizing: border-box;
         image {
            width: 24rpx;
            height: 24rpx;
            margin-right: 10rpx;
            margin-top: 8rpx;
         }
         text {
            font-size: 24rpx;
            font-weight: 400;
            color: #666666;
         }
      }
      .password_list {
         padding: 0 30rpx;
         .password_list_item {
            display: flex;
            align-items: center;
            height: 90rpx;
            border-bottom: 1rpx solid #E5E5E5;
            text {
               width: 150rpx;
               flex-shrink: 0;
               font-size: 30rpx;
               font-weight: 400;
               color: #222222;
            }
            .password_list_item_box {
               display: flex;
               justify-content: space-between;
               flex: 1;
               input {
                  border: none;
                  font-size: 30rpx;
               }
               input::-webkit-input-placeholder {
                  font-size: 28rpx;
                  font-weight: 400;
                  color: #B2B2B2;
               }
               p {
                  font-size: 26rpx;
                  font-weight: 400;
                  color: #4275FC;
               }
            }
         }
      }
      .password_footer {
         margin-top: 80rpx;
         padding: 0 30rpx;
         .password_footer_submit {
            width: 100%;
            height: 88rpx;
            border: none;
            background: #4275FC;
            box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
            border-radius: 8rpx;
            display: flex;
            align-items: center;
            justify-content: center;
            text {
               font-size: 30rpx;
               font-weight: 500;
               color: #FFFFFF;
            }
         }
      }
   }
</style>