yangan
2025-03-17 7f594b32345b5547d73d92ab6995eb5c69f357b9
pages/register/register.vue
@@ -4,7 +4,7 @@
         <u--form :rules="rules"
            :model="registerFormModel"
            ref="regesterFormRef">
            <u-form-item labelWidth="20%"
            <u-form-item labelWidth="22%"
               label="选择身份"
               borderBottom
               ref="roleRef"
@@ -26,7 +26,7 @@
            </u-form-item>
            <u-form-item prop="name"
               label="姓名"
               labelWidth="20%"
               labelWidth="22%"
               borderBottom
               required>
               <u--input v-model="registerFormModel.name"
@@ -35,7 +35,7 @@
            </u-form-item>
            <u-form-item prop="idCard"
               label="身份证"
               labelWidth="20%"
               labelWidth="22%"
               borderBottom
               required>
               <u--input v-model="registerFormModel.idCard"
@@ -44,16 +44,16 @@
            </u-form-item>
            <u-form-item prop="phone"
               label="手机号"
               labelWidth="20%"
               labelWidth="22%"
               borderBottom
               required>
               <u--input v-model="registerFormModel.phone"
                  placeholder="请输入内容"
                  clearable></u--input>
            </u-form-item>
            <u-form-item prop="password"
            <u-form-item prop="password"
               label="密码"
               labelWidth="20%"
               labelWidth="22%"
               borderBottom
               required>
               <u--input v-model="registerFormModel.password"
@@ -78,7 +78,7 @@
        </view>
            <u-form-item prop="confirmPassword"
               label="确认密码"
               labelWidth="20%"
               labelWidth="22%"
               borderBottom
               required>
               <u--input v-model="registerFormModel.confirmPassword"
@@ -88,7 +88,7 @@
            </u-form-item>
            <u-form-item prop="carNo"
               label="车牌号"
               labelWidth="20%"
               labelWidth="22%"
               borderBottom
               v-if="radiovalue1 == '司机'"
               required>
@@ -96,9 +96,99 @@
                  placeholder="请输入内容"
                  clearable></u--input>
            </u-form-item>
            <u-form-item prop="truckLength"
               label="车长"
               labelWidth="22%"
               borderBottom
               v-if="radiovalue1 == '司机'"
               required>
               <u--input v-model="registerFormModel.truckLength"
                  @change="inputchange($event,1)"
                  placeholder="请输入内容"
                  clearable></u--input>
            </u-form-item>
            <u-form-item prop="truckWidth"
               label="车宽"
               labelWidth="22%"
               borderBottom
               v-if="radiovalue1 == '司机'"
               required>
               <u--input v-model="registerFormModel.truckWidth"
                  placeholder="请输入内容"
                  @change="inputchange($event,2)"
                  clearable></u--input>
            </u-form-item>
            <u-form-item prop="truckHeight"
               label="车高"
               labelWidth="22%"
               borderBottom
               v-if="radiovalue1 == '司机'"
               required>
               <u--input v-model="registerFormModel.truckHeight"
                  placeholder="请输入内容"
                  @change="inputchange($event,3)"
                  clearable></u--input>
            </u-form-item>
            <u-form-item prop="totalLoad"
               label="车货总重"
               labelWidth="22%"
               borderBottom
               v-if="radiovalue1 == '司机'"
               required>
               <u--input v-model="registerFormModel.totalLoad"
                  @change="inputchange($event,5)"
                  placeholder="请输入内容"
                  clearable></u--input><span style="position: absolute;right: 120rpx;line-height: 40px">吨</span>
            </u-form-item>
            <u-form-item prop="maximumPayload"
               label="最大载重"
               labelWidth="22%"
               borderBottom
               v-if="radiovalue1 == '司机'"
               required>
               <u--input v-model="registerFormModel.maximumPayload"
                  @change="inputchange($event,4)"
                  placeholder="请输入内容"
                  clearable></u--input><span style="position: absolute;right: 120rpx;line-height: 40px">吨</span>
            </u-form-item>
            <u-form-item prop="axleNum"
               label="车轴数"
               labelWidth="22%"
               borderBottom
               v-if="radiovalue1 == '司机'"
               required>
               <u--input v-model="registerFormModel.axleNum"
                  @change="inputchange($event,6)"
                  placeholder="请输入内容"
                  clearable></u--input>
            </u-form-item>
            <u-form-item prop="certification"
               label="从业资格证号"
               labelWidth="22%"
               borderBottom
               v-if="radiovalue1 == '司机'"
               required>
               <u--input v-model="registerFormModel.certification"
                  placeholder="请输入内容"
                  clearable></u--input>
            </u-form-item>
            <u-form-item prop="freightCompany"
               label="承运单位"
               labelWidth="22%"
               borderBottom
               v-if="radiovalue1 == '司机'"
               >
               <u--input v-model="registerFormModel.freightCompany"
                  placeholder="请输入内容"
                  clearable></u--input>
            </u-form-item>
            <u-form-item prop="carImg"
               label="车辆照片"
               labelWidth="20%"
               labelWidth="22%"
               borderBottom
               v-if="radiovalue1 == '司机'"
               required
@@ -117,7 +207,7 @@
            </u-form-item>
            <u-form-item prop="drivingImg"
               label="行驶证"
               labelWidth="20%"
               labelWidth="22%"
               borderBottom
               v-if="radiovalue1 == '司机'"
               required
@@ -204,7 +294,7 @@
                  </u-checkbox>
               </u-checkbox-group>
            </u-form-item>
            <u-form-item labelWidth="20%"
            <u-form-item labelWidth="22%"
               v-if="radiovalue1 == '司机'"
               label="车辆类型"
               borderBottom
@@ -266,6 +356,28 @@
          callback();
        }
      };
     //验证最大总重不能超过车货载重
     const maxVstotalFun1 = (rule, value, callback) =>{
      console.log('触发',this.registerFormModel.maximumPayload  ,this.registerFormModel.totalLoad,this.registerFormModel.maximumPayload  <= this.registerFormModel.totalLoad)
      if(!value || !this.registerFormModel.maximumPayload)callback()
      if(Number(value)   >= Number(this.registerFormModel.maximumPayload)){
         callback()
      }else{
         callback(new Error("车货总重不能小于最大载重"))
      }
     }
     const maxVstotalFun2 = (rule, value, callback) =>{
      console.log('触发',this.registerFormModel.maximumPayload  ,this.registerFormModel.totalLoad,this.registerFormModel.maximumPayload  <= this.registerFormModel.totalLoad)
      if(!value || !this.registerFormModel.totalLoad)callback()
      if(Number(value)   <= Number(this.registerFormModel.totalLoad)){
         callback()
      }else{
         callback(new Error("最大载重不能超过车货总重"))
      }
     }
      const checkPassword = (rule, value, callback) => {
        // let roles = this.$store.getters.roles;//当前用户角色id
        // let passL = 8;
@@ -289,7 +401,7 @@
        const regex2 = /^[A-Za-z]+$/
        // 校验符号
        const regex3 =
            /^[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘',。、]+$/
            /^[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘',。、]+$/;
        if(regex1.test(value)) {
          this.level.push('low')
          return callback('密码强度过低')
@@ -302,7 +414,7 @@
        }else if(/^[A-Za-z\d]+$/.test(value)) {
          this.level.push('low')
          this.level.push('middle')
          return callback()
          return callback('密码强度过低')
        }else if(
            /^[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘',。、\d]+$/.test(
                value
@@ -310,7 +422,7 @@
        ) {
          this.level.push('low')
          this.level.push('middle')
          return callback()
          return callback('密码强度过低')
        }else if(
            /^[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘',。、A-Za-z]+$/.test(
                value
@@ -318,7 +430,7 @@
        ) {
          this.level.push('low')
          this.level.push('middle')
          return callback()
          return callback('密码强度过低')
        } else if (
            /^[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘',。、A-Za-z\d]+$/.test(
                value
@@ -344,6 +456,11 @@
               type: 3,
               idCard: '',
               carNo: '',
               truckLength:null,
               truckWidth:null,
               truckHeight:null,
               maximumPayload:null,
               totalLoad:null,
               carImg: '',
               drivingImg: '',
               tuiJianMa: '',
@@ -353,7 +470,11 @@
               isNonCoal: [],
               isCoalCar: 1, //是否为煤炭车辆(司机使用字段) 1 是 2 不是
               inventoryImg: '',
               countryNumberCar: 0, //车辆类型;国五 1,国六 2
               countryNumberCar: 0, //车辆类型;国五 1,国六 2,
               certification:'',
               freightCompany:'',
               axleNum:"",
            },
            fileList1: [],
            fileList2: [],
@@ -431,7 +552,16 @@
                        return String(value);
                     },
                     validator: (rule, value, callback) => {
                        return uni.$u.test.carNo(value);
                         // 新能源车牌
                     const xreg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5,6}[A-Z]$)|([A-Z][A-HJ-NP-Z0-9][0-9]{4,5}$))/
                     // 旧车牌
                     const creg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/
                     if (value.length === 7) {
                        return creg.test(value)
                     } if (value.length === 8) {
                        return xreg.test(value)
                     }
                     return false
                     },
                     message: '请输入正确的车牌号',
                     trigger: ['change', 'blur']
@@ -459,6 +589,56 @@
                  type: 'string',
                  required: true,
                  message: '请上传从业资格证照片',
                  trigger: ['blur', 'change']
               },
               truckLength: {
                  type: 'number',
                  required: true,
                  message: '请输入车长',
                  trigger: ['blur', 'change']
               },
               truckWidth: {
                  type: 'number',
                  required: true,
                  message: '请输入车宽',
                  trigger: ['blur', 'change']
               },
               truckHeight: {
                  type: 'number',
                  required: true,
                  message: '请输入车高',
                  trigger: ['blur', 'change']
               },
               maximumPayload: {
                  type: 'number',
                  required: true,
                  // message: '请输入最大载重',
                  validator: maxVstotalFun2,
                  trigger: ['blur', 'change']
               },
               totalLoad:{
                  type: 'number',
                  required: true,
                  // message: '请输入车货总重',
                  validator: maxVstotalFun1,
                  trigger: ['blur', 'change']
               },
               axleNum:{
                  type: 'number',
                  required: false,
                  message: '请输入车轴数',
                  trigger: ['blur', 'change']
               },
               freightCompany:{
                  type: 'string',
                  required: false,
                  message: '请输入承运单位',
                  trigger: ['blur', 'change']
               },
               certification:{
                  type: 'string',
                  required: false,
                  message: '请输入从业资格证号',
                  trigger: ['blur', 'change']
               },
            },
@@ -498,7 +678,9 @@
      watch: {
         radiovalue1(newV) {
            if (this.registerFormModel.name || this.registerFormModel.idCard || this.registerFormModel.phone || this
               .registerFormModel.carNo || this.registerFormModel.password) {
               .registerFormModel.carNo || this.registerFormModel.password || this.registerFormModel.truckLength
                || this.registerFormModel.truckWidth || this.registerFormModel.truckHeight || this.registerFormModel.maximumPayload
                ||this.registerFormModel.totalLoad ) {
               if (this.editRoleModelShow == true) {
                  this.editRoleModelShow = false;
               } else {
@@ -520,14 +702,55 @@
      },
      methods: {
         ...mapMutations(['changeisUploadimg']),
         inputchange(e, num) {
            const inputType =/[^\d.]/g
            switch (num) {
               case 1:
                  this.$nextTick(() => {
                     this.registerFormModel.truckLength = e.replace(inputType, '');
                  })
                  break;
               case 2:
                  this.$nextTick(() => {
                     this.registerFormModel.truckWidth = e.replace(inputType, '');
                  })
                  break;
               case 3:
                  this.$nextTick(() => {
                     this.registerFormModel.truckHeight = e.replace(inputType, '');
                  })
                  break;
               case 4:
                  this.$nextTick(() => {
                     this.registerFormModel.maximumPayload = e.replace(inputType, '');
                  })
                  break;
               case 5:
                  this.$nextTick(() => {
                     this.registerFormModel.totalLoad = e.replace(inputType, '');
                  })
                  break;
                  case 6:
                  this.$nextTick(() => {
                     this.registerFormModel.axleNum = e.replace(inputType, '');
                  })
            }
            },
         registerClick() {
        this.$refs.regesterFormRef
            .validate()
            .then(res => {
              console.log(this.registerFormModel);
              this.registerClickloading = true;
              this.registerFormModel.username = this.registerFormModel.phone;
              apiRegister(this.registerFormModel)
           if(this.radiovalue1 === '司机' &&  this.registerFormModel.totalLoad<=this.registerFormModel.maximumPayload){
               uni.showToast({
                        title: '车货总重需要大于最大载重',
                        icon: 'none',
                        duration: 2000
                      });
            }else{
             this.registerClickloading = true;
                 this.registerFormModel.username = this.registerFormModel.phone;
             apiRegister(this.registerFormModel)
                  .then(res => {
                    this.registerClickloading = false;
                    if (res.data.code == 0) {
@@ -546,6 +769,7 @@
                  .catch(err => {
                    console.log('错误', err);
                  });
           }
            })
            .catch(err => {
              console.log('err', err);
@@ -560,7 +784,12 @@
               this.registerFormModel.idCard == '' &&
               this.registerFormModel.phone == '' &&
               this.registerFormModel.carNo == '' &&
               this.registerFormModel.password == ''
               this.registerFormModel.password == '' &&
               this.registerFormModel.truckLength == '' &&
               this.registerFormModel.truckWidth == '' &&
               this.registerFormModel.truckHeight == '' &&
               this.registerFormModel.maximumPayload == '' &&
               this.registerFormModel.totalLoad == ''
            ) {
               this.$refs.regesterFormRef.clearValidate();
               this.beforeChangeValue = e;