819527061@qq.com
2024-06-25 5a4374e3cfb9f90ffa4f3379fb556a8c782183ba
pages/register/register.vue
@@ -3,8 +3,9 @@
      <view class="registerForm">
         <u--form :rules="rules"
            :model="registerFormModel"
            ref="regesterFormRef">
            <u-form-item labelWidth="20%"
            ref="regesterFormRef"
            :labelStyle="labelStyle">
            <u-form-item labelWidth="30%"
               label="选择身份"
               borderBottom
               ref="roleRef"
@@ -32,6 +33,7 @@
               required>
               <u--input v-model="registerFormModel.name"
                  placeholder="请输入内容"
                  fontSize='40'
                  clearable></u--input>
            </u-form-item>
            <u-form-item prop="idCard"
@@ -41,6 +43,7 @@
               required>
               <u--input v-model="registerFormModel.idCard"
                  placeholder="请输入内容"
                  fontSize='40'
                  clearable></u--input>
            </u-form-item>
            <u-form-item prop="phone"
@@ -49,6 +52,7 @@
               borderBottom
               required>
               <u--input v-model="registerFormModel.phone"
                  fontSize='40'
                  placeholder="请输入内容"
                  clearable></u--input>
            </u-form-item>
@@ -59,16 +63,33 @@
               required>
               <u--input v-model="registerFormModel.password"
                  placeholder="请输入内容"
                  fontSize='40'
                  password
                  clearable></u--input>
            </u-form-item>
        <view class="intensity">
          <view class="psdText">密码强度</view>
          <view
              class="line"
              :class="[level.includes('low') ? 'low' : '']"></view>
          <view
              class="line"
              :class="[level.includes('middle') ? 'middle' : '']"></view>
          <view
              class="line"
              :class="[level.includes('high') ? 'high' : '']"></view>
          <div class="warningtext">
            密码应由8-16位数字、字母、符号组成。请不要使用容易被猜到的密码
          </div>
        </view>
            <u-form-item prop="confirmPassword"
               label="确认密码"
               labelWidth="20%"
               labelWidth="30%"
               borderBottom
               required>
               <u--input v-model="registerFormModel.confirmPassword"
                  placeholder="请输入内容"
                  fontSize='40'
                  password
                  clearable
                  @blur="jiaoYanPassword"></u--input>
@@ -81,9 +102,10 @@
               required>
               <u--input v-model="registerFormModel.carNo"
                  placeholder="请输入内容"
                  fontSize='40'
                  clearable></u--input>
            </u-form-item>
            <u-form-item labelWidth="20%"
            <u-form-item labelWidth="30%"
               label="车牌颜色"
               borderBottom
               v-if="radiovalue1 == '司机'"
@@ -120,8 +142,25 @@
                  width="250"
                  height="150"
                  :previewFullImage="true">
                  <!-- <image src="https://cdn.uviewui.com/uview/demo/upload/positive.png"
                  mode="widthFix" style="width: 250px;height: 150px;"></image> -->
               </u-upload>
            </u-form-item>
            <u-form-item prop="bodyofcarJpg"
               label="车头、车尾、车身、照片"
               labelWidth="20%"
               borderBottom
               v-if="radiovalue1 == '司机'"
               required
               @click="beforeRead">
               <u-upload :fileList="fileList3"
                  deletable
                  @afterRead="afterRead"
                  @delete="deletePic"
                  name="3"
                  multiple
                  :maxCount="3"
                  width="250"
                  height="150"
                  :previewFullImage="true">
               </u-upload>
            </u-form-item>
            <u-form-item prop="drivingImg"
@@ -141,15 +180,14 @@
                  width="250"
                  height="150"
                  :previewFullImage="true">
                  <!-- <image src="https://cdn.uviewui.com/uview/demo/upload/positive.png"
                  mode="widthFix" style="width: 250px;height: 150px;"></image> -->
               </u-upload>
            </u-form-item>
            <u-form-item label="推荐人账号"
               labelWidth="25%"
               labelWidth="30%"
               borderBottom>
               <u--input v-model="registerFormModel.tuiJianMa"
                  placeholder="请输入内容"
                  fontSize='40'
                  clearable></u--input>
            </u-form-item>
         </u--form>
@@ -175,8 +213,7 @@
</template>
<script>
   import { apiRegister } from '@/api/publicInterface.js';
   import { BaseUrl } from '@/api/publicInterface.js';
   import { apiRegister, BaseUrl } from '@/api/publicInterface.js';
   import { mapMutations } from 'vuex';
   export default {
      // onLoad: function() {
@@ -197,18 +234,93 @@
      // 监听页面初次渲染完成。注意如果渲染速度快,会在页面进入动画完成前触发
      onReady() {
         this.$refs.regesterFormRef.setRules(this.rules);
         // this.$refs.regesterFormRef.validate().then(res => {}).catch(err => {
         //   console.log(err);
         // })
      },
      onLoad(params) {
         if (params) {
            this.registerFormModel.openId = params.code;
            console.log('页面加载', this.registerFormModel.openId);
         }
      },
      data() {
      const validatePass = (rule, value, callback) => {
        if (this.registerFormModel.confirmPassword !== "") {
          if (value !== this.registerFormModel.password) {
            callback(new Error("两次输入密码不一致!"));
          } else {
            callback();
          }
        } else {
          callback();
        }
      };
      const checkPassword = (rule, value, callback) => {
        // let roles = this.$store.getters.roles;//当前用户角色id
        // let passL = 8;
        // if (roles.concat(1)){
        //   passL = 10
        // }
        let passL = 8;
        this.level = []
        if(!value) {
          return callback('密码不能为空')
        }
        if(value.length < passL) {
          return callback(`密码不能少于${passL}位`)
        }
        if(value.length > 16) {
          return callback('密码不能大于16位')
        }
        //校验是数字
        const regex1 = /^\d+$/
        // 校验字母
        const regex2 = /^[A-Za-z]+$/
        // 校验符号
        const regex3 =
            /^[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘',。、]+$/
        if(regex1.test(value)) {
          this.level.push('low')
          return callback('密码强度过低,请按下方密码规则输入')
        }else if(regex2.test(value)) {
          this.level.push('low')
          return callback('密码强度过低,请按下方密码规则输入')
        }else if(regex3.test(value)) {
          this.level.push('low')
          return callback('密码强度过低,请按下方密码规则输入')
        }else if(/^[A-Za-z\d]+$/.test(value)) {
          this.level.push('low')
          this.level.push('middle')
          return callback('密码强度过低,请按下方密码规则输入')
        }else if(
            /^[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘',。、\d]+$/.test(
                value
            )
        ) {
          this.level.push('low')
          this.level.push('middle')
          return callback('密码强度过低,请按下方密码规则输入')
        }else if(
            /^[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘',。、A-Za-z]+$/.test(
                value
            )
        ) {
          this.level.push('low')
          this.level.push('middle')
          return callback('密码强度过低,请按下方密码规则输入')
        } else if (
            /^[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘',。、A-Za-z\d]+$/.test(
                value
            )
        ) {
          this.level.push('low')
          this.level.push('middle')
          this.level.push('high')
        }
        return callback()
      };
         return {
        level:[],  //密码强度数组
            labelStyle: {
               fontSize: '36rpx'
            },
            // 车牌号键盘控制
            carNumShow: false,
            keyValue: '',
@@ -225,10 +337,13 @@
               drivingImg: '',
               tuiJianMa: '',
               confirmPassword: '',
               vehicleColour: ''
               vehicleColour: '',
               bodyofcarJpg: ''
            },
            fileList1: [],
            fileList2: [],
            fileList3: [],
            carBody: [],
            rules: {
               name: {
                  type: 'string',
@@ -268,24 +383,18 @@
               ],
               password: [{
                     required: true,
                     message: '请设置初始密码',
                     message: '请设置密码',
                     trigger: ['blur', 'change']
                  },
                  {
                     min: 6,
                     max: 12,
                     message: '长度在6-12个字符之间'
                  }
            {
              validator: checkPassword,
              trigger: 'change'
            }
               ],
               confirmPassword: [{
                     required: true,
                     message: '请设置初始密码',
              validator: validatePass,
                     trigger: ['blur', 'change']
                  },
                  {
                     min: 6,
                     max: 12,
                     message: '长度在6-12个字符之间'
                  }
               ],
               carNo: [{
@@ -317,6 +426,12 @@
                  message: '请上传车辆图片',
                  trigger: ['blur', 'change']
               },
               bodyofcarJpg: {
                  type: 'string',
                  required: true,
                  message: '请上传车辆图片',
                  trigger: ['blur', 'change']
               },
               drivingImg: {
                  type: 'string',
                  required: true,
@@ -336,14 +451,17 @@
            radiovalue1: '货代',
            radiolist2: [{
                  name: '黄色',
                  value: 'huangse'
                  value: '黄色'
               },
               {
                  name: '绿色',
                  disabled: 'lvse'
                  name: '黄绿色',
                  value: '黄绿色'
               },
               {
                  name: '蓝色',
                  value: '蓝色'
               }
            ],
            radiovalue2: '黄色',
            beforeChangeValue: '',
            // 更换角色弹框
            editRoleModelShow: false,
@@ -483,6 +601,11 @@
                     } else if (num == 2) {
                        this.registerFormModel.drivingImg = JSON.parse(res.data).data.url;
                        resolve(`${BaseUrl}${JSON.parse(res.data).data.url}`);
                     } else if (num == 3) {
                        let imageUrl = JSON.parse(res.data).data.url
                        this.carBody.push(imageUrl)
                        this.registerFormModel.bodyofcarJpg = this.carBody.join(',')
                        resolve(`${BaseUrl}${JSON.parse(res.data).data.url}`);
                     }
                  }
               });
@@ -545,4 +668,43 @@
         }
      }
   }
</style>
  .intensity {
    width: 100%;
    margin-top: 10rpx;
    .psdText {
      font-size: 14px;
      margin-right: 10px;
    }
    .line {
      display: inline-block;
      width: 70rpx;
      height: 8rpx;
      background: #d8d8d8;
      border-radius: 6rpx;
      margin-right: 16rpx;
      &.low {
        background: #f4664a;
      }
      &.middle {
        background: #ffb700;
      }
      &.high {
        background: #2cbb79;
      }
    }
    .level {
      margin: 0 32rpx 0 16rpx;
    }
    .warningtext {
      color: #5a5a5a;
      font-size: 24rpx;
      margin-top: 10rpx;
    }
  }
</style>