yangan
2025-03-24 76f165afb5462e1731540f761d04c621aee3cfb7
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="35%"
               label="选择身份"
               borderBottom
               ref="roleRef"
@@ -23,83 +23,32 @@
                     :name="item.name"
                     @change="radioChange"></u-radio>
               </u-radio-group>
            </u-form-item>
            <u-form-item labelWidth="20%"
               label="多身份证"
               borderBottom
               ref="roleRef"
               required
               v-if="radiovalue1 == '司机'">
               <u-radio-group v-model="radiovalue2"
                  placement="row"
                  @change="groupChange"
                  size="30"
                  shape="circle"
                  iconSize="20">
                  <u-radio labelSize="14px"
                     size="20px"
                     v-for="(item, index) in radiolist3"
                     :key="index"
                     :label="item.name"
                     :name="item.value"
                     @change="radioChange2"></u-radio>
               </u-radio-group>
            </u-form-item>
            </u-form-item> -->
            <u-form-item prop="name"
               :label="radiovalue1 == '司机'?'姓名':'承运商名称'"
               labelWidth="20%"
               labelWidth="35%"
               borderBottom
               required>
               <u--input v-model="registerFormModel.name"
                  placeholder="请输入内容"
                  clearable></u--input>
            </u-form-item>
            <view style="margin:0 30vw" v-if="radiovalue2 == 1">
               <u-button text="增加"
                     type="primary"
                     @click="addData"
                     ></u-button>
            </view>
               <uni-table
                border
                  id="table-box"
                  emptyText="暂无更多数据" v-if="radiovalue2 == 1">
                  <uni-tr>
                     <uni-th align="center" >身份证号</uni-th>
                     <uni-th align="center">操作</uni-th>
                  </uni-tr>
                  <uni-tr v-for="(subItem, index) in tablist" :key="index">
                     <uni-td align="center">
                        <u--input
                           placeholder="请输入身份证号"
                           v-model="subItem.idCard"
                           ></u--input>
                        </uni-td>
                  <uni-td align="right">
                  <view>
                     <u-button text="删除"
                           type="primary"
                           @click="delData(index)"></u-button>
                  </view></uni-td>
               </uni-tr>
               </uni-table>
            <u-form-item prop="idCard"
               label="身份证"
               labelWidth="20%"
               :label="radiovalue1 == '司机'?'身份证':'证件号'"
               labelWidth="35%"
               borderBottom
               required
               v-if="radiovalue2 == 0">
               required>
               <u--input v-model="registerFormModel.idCard"
                  placeholder="请输入内容"
                  clearable></u--input>
            </u-form-item>
            <u-form-item prop="cardImg1"
               :label="radiovalue1 == '司机'?'身份证正面':'身份证或营业执照照片'"
               labelWidth="20%"
               labelWidth="35%"
               borderBottom
               required
               @click="beforeRead"
               v-if="radiovalue2 == 0">
               v-if="radiovalue1 == '承运商'">
               <u-upload :fileList="fileList5"
                  deletable
                  @afterRead="afterRead"
@@ -112,35 +61,9 @@
                  :previewFullImage="true">
               </u-upload>
            </u-form-item>
            <u-form-item prop="cardImg2"
               :label="radiovalue1 == '司机'?'身份证反面':'身份证或营业执照照片'"
               labelWidth="20%"
               borderBottom
               required
               @click="beforeRead"
               v-if="radiovalue2 == 0">
               <u-upload :fileList="fileList6"
                  deletable
                  @afterRead="afterRead"
                  @delete="deletePic"
                  name="6"
                  multiple
                  :maxCount="1"
                  width="250"
                  height="150"
                  :previewFullImage="true">
               </u-upload>
            </u-form-item>
            <u-form-item prop="expirationTimeIdcard"
               label="身份证过期时间"
               labelWidth="20%"
               borderBottom
               v-if="radiovalue2 == 0">
               <uni-datetime-picker v-model="registerFormModel.expirationTimeIdcard" type="date" :start="minDate" />
            </u-form-item>
            <u-form-item prop="phone"
               label="手机号"
               labelWidth="20%"
               labelWidth="35%"
               borderBottom
               required>
               <u--input v-model="registerFormModel.phone"
@@ -149,7 +72,7 @@
            </u-form-item>
            <u-form-item prop="password"
               label="密码"
               labelWidth="20%"
               labelWidth="35%"
               borderBottom
               required>
               <u--input v-model="registerFormModel.password"
@@ -174,7 +97,7 @@
        </view>
            <u-form-item prop="confirmPassword"
               label="确认密码"
               labelWidth="20%"
               labelWidth="35%"
               borderBottom
               required>
               <u--input v-model="registerFormModel.confirmPassword"
@@ -185,15 +108,14 @@
            </u-form-item>
            <u-form-item prop="carNo"
               label="车牌号"
               labelWidth="20%"
               labelWidth="35%"
               borderBottom
               v-if="radiovalue1 == '司机'"
               required>
               <u--input v-model="registerFormModel.carNo"
                  placeholder="请输入内容"
                  clearable></u--input>
               <xm-cell special label="车牌号" :value="registerFormModel.carNo" @show="showKeyboard('xmKeyboard')"></xm-cell>
               <xm-keyboard-v2 ref="xmKeyboard" @confirm="(v) => registerFormModel.carNo = v"></xm-keyboard-v2>
            </u-form-item>
            <u-form-item labelWidth="20%"
            <u-form-item labelWidth="35%"
               label="车辆类型"
               borderBottom
               ref="roleRef"
@@ -208,7 +130,7 @@
            </u-form-item>
            <u-form-item prop="carImg"
               label="车辆照片"
               labelWidth="20%"
               labelWidth="35%"
               borderBottom
               v-if="radiovalue1 == '司机'"
               required
@@ -226,8 +148,8 @@
               </u-upload>
            </u-form-item>
            <u-form-item prop="drivingImg"
               label="行驶证"
               labelWidth="20%"
               label="行驶证车头"
               labelWidth="35%"
               borderBottom
               v-if="radiovalue1 == '司机'"
               required
@@ -244,16 +166,35 @@
                  :previewFullImage="true">
               </u-upload>
            </u-form-item>
            <u-form-item prop="driverImgCw"
               label="行驶证车尾"
               labelWidth="35%"
               borderBottom
               v-if="radiovalue1 == '司机'"
               required
               @click="beforeRead">
               <u-upload :fileList="fileList7"
                  deletable
                  @afterRead="afterRead"
                  @delete="deletePic"
                  name="7"
                  multiple
                  :maxCount="1"
                  width="250"
                  height="150"
                  :previewFullImage="true">
               </u-upload>
            </u-form-item>
            <u-form-item prop="expirationTimeDriving"
               label="行驶证过期时间"
               labelWidth="20%"
               label="证件过期时间"
               labelWidth="35%"
               borderBottom
               v-if="radiovalue1 == '司机'">
               <uni-datetime-picker v-model="registerFormModel.expirationTimeDriving" type="date"  :start="minDate" />
            </u-form-item>
            <u-form-item prop="driverImg"
               label="驾驶证"
               labelWidth="24%"
               labelWidth="35%"
               borderBottom
               v-if="radiovalue1 == '司机'"
               required
@@ -271,15 +212,60 @@
               </u-upload>
            </u-form-item>
            <u-form-item prop="expirationTimeDriver"
               label="驾驶证过期时间"
               labelWidth="20%"
               label="证件过期时间"
               labelWidth="35%"
               borderBottom
               v-if="radiovalue1 == '司机'">
               <uni-datetime-picker v-model="registerFormModel.expirationTimeDriver" type="date"  :start="minDate" />
            </u-form-item>
            <u-form-item prop="roadTransportImg"
               label="道路运输证车头"
               labelWidth="35%"
               borderBottom
               v-if="radiovalue1 == '司机'"
               required
               @click="beforeRead">
               <u-upload :fileList="fileList6"
                  deletable
                  @afterRead="afterRead"
                  @delete="deletePic"
                  name="6"
                  multiple
                  :maxCount="1"
                  width="250"
                  height="150"
                  :previewFullImage="true">
               </u-upload>
            </u-form-item>
            <u-form-item prop="roadTransportImgCw"
               label="道路运输证车尾"
               labelWidth="35%"
               borderBottom
               v-if="radiovalue1 == '司机'"
               required
               @click="beforeRead">
               <u-upload :fileList="fileList8"
                  deletable
                  @afterRead="afterRead"
                  @delete="deletePic"
                  name="8"
                  multiple
                  :maxCount="1"
                  width="250"
                  height="150"
                  :previewFullImage="true">
               </u-upload>
            </u-form-item>
            <u-form-item prop="expirationTimeRoadtransport"
               label="证件过期时间"
               labelWidth="35%"
               borderBottom
               v-if="radiovalue1 == '司机'">
               <uni-datetime-picker v-model="registerFormModel.expirationTimeRoadtransport" type="date"  :start="minDate" />
            </u-form-item>
            <u-form-item prop="tradeQualificationImg"
               label="从业资格证"
               labelWidth="24%"
               labelWidth="35%"
               borderBottom
               v-if="radiovalue1 == '司机'"
               @click="beforeRead">
@@ -298,16 +284,34 @@
                  凡是运输有毒化学物品的车辆必须上传从业资格证并填写从业资格证有效时间
               </span>
            </u-form-item>
            <u-form-item prop="tradeQualificationImgYyy"
               label="从业资格证押运员"
               labelWidth="35%"
               borderBottom
               v-if="radiovalue1 == '司机'"
               @click="beforeRead">
               <u-upload :fileList="fileList9"
                  deletable
                  @afterRead="afterRead"
                  @delete="deletePic"
                  name="9"
                  multiple
                  :maxCount="1"
                  width="250"
                  height="150"
                  :previewFullImage="true">
               </u-upload>
            </u-form-item>
            <u-form-item prop="expirationTimeTradequalification"
               label="从业资格过期时间"
               labelWidth="20%"
               label="证件过期时间"
               labelWidth="35%"
               borderBottom
               v-if="radiovalue1 == '司机'">
               <uni-datetime-picker v-model="registerFormModel.expirationTimeTradequalification" type="date"  :start="minDate" />
            </u-form-item>
            <u-form-item labelWidth="20%"
            <u-form-item labelWidth="35%"
               v-if="radiovalue1 == '司机'"
               label="环保类型"
               label="排放类型"
               borderBottom
               prop="countryNumberCar">
               <u-radio-group v-model="registerFormModel.countryNumberCar"
@@ -432,8 +436,10 @@
        return callback()
      };
         return {
            radiovalue1: '司机',
            beforeChangeValue: '',
            tablist:[{idCard:""},{idCard:""}],
        level:[],  //密码强度数组
            level:[],  //密码强度数组
            minDate: this.getToday(),
            // 车牌号键盘控制
            carNumShow: false,
@@ -452,8 +458,13 @@
               tuiJianMa: '',
               confirmPassword: '',
               tradeQualificationImg: '',
               roadTransportImg:"",
               driverImgCw:'',
               roadTransportImgCw:"",
               tradeQualificationImgYyy:"",
               expirationTimeRoadtransport:"",
               driverImg: '',
               countryNumberCar: 2, //环保类型;国五 1,国六 2
               countryNumberCar: 2, //排放类型;国五 1,国六 2
               carType:null,
            },
            fileList1: [],
@@ -462,11 +473,11 @@
            fileList4: [],
            fileList5: [],
            fileList6: [],
            fileList7: [],
            fileList8: [],
            fileList9: [],
            rules: {
               countryNumberCar: {
                  required: false,
               },
               expirationTimeIdcard: {
                  required: false,
               },
               expirationTimeDriving: {
@@ -478,14 +489,14 @@
               expirationTimeTradequalification: {
                  required: false,
               },
               name: [{
               name:[{
                  type: 'string',
                  required: true,
                  message: '请填写姓名',
                  message: this.getname,
                  trigger: ['blur', 'change']
               },{
                     pattern: /^[\u4e00-\u9fa5]{1,6}$/, //限制长度最多为 6 位
                     message: '姓名只能是中文',
                  },{
                     pattern: /^[\u4e00-\u9fa5]+$/, //限制长度最多为 6 位
                     message: this.getnames,
                     trigger: ['blur', 'change']
                  }],
                  carType:[{
@@ -497,12 +508,12 @@
               idCard: [{
                     type: 'string',
                     required: true,
                     message: '请输入身份证号',
                     message: this.getidcard,
                     trigger: ['blur', 'change']
                  },
                  {
                     pattern: /^([1-6][1-9]|50)\d{4}(18|19|20)\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/,
                     message: '身份证号格式不正确',
                     message: this.getidcards,
                     trigger: ['blur', 'change']
                  }
               ],
@@ -559,13 +570,7 @@
               cardImg1:{
                  type: 'string',
                  required: true,
                  message: '请上传身份证正面',
                  trigger: ['blur', 'change']
               },
               cardImg2:{
                  type: 'string',
                  required: true,
                  message: '请上传身份证反面',
                  message: '请上传证件',
                  trigger: ['blur', 'change']
               },
               carImg: {
@@ -577,7 +582,13 @@
               drivingImg: {
                  type: 'string',
                  required: true,
                  message: '请上传行驶证照片',
                  message: '请上传行驶证车头照片',
                  trigger: ['blur', 'change']
               },
               driverImgCw:{
                  type: 'string',
                  required: true,
                  message: '请上传行驶证车尾照片',
                  trigger: ['blur', 'change']
               },
               driverImg: {
@@ -592,7 +603,7 @@
                  disabled: false
               },
               {
                  name: '货代',
                  name: '承运商',
                  disabled: false
               }
            ],
@@ -605,23 +616,8 @@
                  value:2
               },
               {
                  text: '液氯槽车',
                  text: '槽车',
                  value:3
               },
               {
                  text: '液碱槽车',
                  value:4
               }
            ],
            radiolist3: [{
                  name: '否',
                  disabled: false,
                  value:0
               },
               {
                  name: '是',
                  disabled: false,
                  value:1
               }
            ],
            countryNumberCarList: [{
@@ -637,9 +633,7 @@
                  label: '新能源',
               }
            ],
            radiovalue1: '司机',
            radiovalue2:0,
            beforeChangeValue: '',
            // 更换角色弹框
            editRoleModelShow: false,
            title: '提示',
@@ -660,8 +654,7 @@
               }
            }
            switch (newV) {
               case '货代':
                  this.radiovalue2 = 0;
               case '承运商':
                  this.registerFormModel.type = 2;
                  break;
               case '司机':
@@ -672,18 +665,50 @@
            }
            return;
         },
         radiovalue2(newV){
         }
      },
      methods: {
         ...mapMutations(['changeisUploadimg']),
         showKeyboard(ref){
            this.$refs[ref].toShow(this.registerFormModel.carNo)
         },
         getToday() {
           let now = new Date();
           let year = now.getFullYear();
           let month = this.padStart(now.getMonth() + 1); // 月份是从0开始的
           let day = this.padStart(now.getDate());
           return `${year}-${month}-${day}`;
         },
         getname(){
            let that=this
            if(that.radiovalue1=='司机'){
               return '姓名不能为空'
            }else{
               return '承运商名称不能为空'
            }
         },
         getnames(){
            let that=this
            if(that.radiovalue1=='司机'){
               return '姓名只能是中文'
            }else{
               return '承运商名称只能是中文'
            }
         },
         getidcard(){
            let that=this
            if(that.radiovalue1=='司机'){
               return '请输入身份证号'
            }else{
               return '请输入证件号'
            }
         },
         getidcards(){
            let that=this
            if(that.radiovalue1=='司机'){
               return '身份证号格式不正确'
            }else{
               return '证件号格式不正确'
            }
         },
         padStart(value) {
           return value.toString().padStart(2, '0');
@@ -692,9 +717,15 @@
            this.registerFormModel.carType = this.radiolist2.find(v => v.value === e).value
         },
         registerClick() {
        if(this.registerFormModel.carType==3&&!this.registerFormModel.tradeQualificationImg||this.registerFormModel.carType==4&&!this.registerFormModel.tradeQualificationImg){
        if(this.registerFormModel.carType==3&&!this.registerFormModel.tradeQualificationImg){
          uni.showToast({
            title: '请上传从业资格证!',
            icon: 'error',
            duration: 2000
          });
        }else if(this.registerFormModel.carType==3&&!this.registerFormModel.tradeQualificationImgYyy){
          uni.showToast({
            title: '请上传从业资格证押运员!',
            icon: 'error',
            duration: 2000
          });
@@ -704,10 +735,8 @@
              .then(res => {
                this.registerClickloading = true;
                this.registerFormModel.username = this.registerFormModel.phone;
            if(this.radiovalue2 == 0){
               this.registerFormModel.idCardImg = this.registerFormModel.cardImg1+","+this.registerFormModel.cardImg2;
            }else{
               this.registerFormModel.expirationTimeIdcard=null
            if(this.radiovalue1 == '承运商'){
               this.registerFormModel.idCardImg = this.registerFormModel.cardImg1
            }
                if(this.registerFormModel.expirationTimeDriver){
                  this.registerFormModel.expirationTimeDriver=this.registerFormModel.expirationTimeDriver.slice(0,16)
@@ -715,73 +744,32 @@
                if(this.registerFormModel.expirationTimeDriving){
                  this.registerFormModel.expirationTimeDriving=this.registerFormModel.expirationTimeDriving.slice(0,16)
                }
                if(this.registerFormModel.expirationTimeIdcard){
                  this.registerFormModel.expirationTimeIdcard=this.registerFormModel.expirationTimeIdcard.slice(0,16)
                }
                if(this.registerFormModel.expirationTimeTradequalification){
                  this.registerFormModel.expirationTimeTradequalification=this.registerFormModel.expirationTimeTradequalification.slice(0,16)
                }
            let idcardtext=/^([1-6][1-9]|50)\d{4}(18|19|20)\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
            let submit=true
            if(this.radiovalue2 == 1){
               const uniqueSampleTypeIds = new Set(this.tablist.map(item => item.idCard));
               const hasDuplicateSampleTypeId = this.tablist.length !== uniqueSampleTypeIds.size;
               this.tablist.map(item=>{
                  if(!item.idCard){
                     uni.showToast({
                        title: `请填写身份证!`,
                        icon: 'error',
                        duration: 2000
                     });
                     submit=false
                  }else if(!idcardtext.test(item.idCard)){
                     uni.showToast({
                        title: `请检验身份证!`,
                        icon: 'error',
                        duration: 2000
                     });
                     submit=false
                  }
               })
               if(hasDuplicateSampleTypeId){
            this.$reqPost('registerDriver', this.registerFormModel, 'json')
               .then(res => {
                 this.registerClickloading = false;
                 if (res.code == 0) {
                  uni.showToast({
                     title: `身份证不能重复!`,
                     icon: 'error',
                     duration: 2000
                    title: '注册成功,即将返回登录页',
                    icon: 'none',
                    duration: 1000
                  });
                  submit=false
               }
               if(submit){
                  this.registerFormModel.idCard=this.tablist.map(item=>{
                     return item.idCard
                  }).join(',')
               }
            }
            if(submit){
               this.$reqPost('registerDriver', this.registerFormModel, 'json')
                   .then(res => {
                     this.registerClickloading = false;
                     if (res.code == 0) {
                       uni.showToast({
                         title: '注册成功,即将返回登录页',
                         icon: 'none',
                         duration: 1000
                       });
                       setTimeout(() => {
                         uni.redirectTo({ url: '/pages/login/login' });
                       }, 1000);
                     } else {
                       this.$u.toast(res.msg ? res.msg : '添加失败');
                     }
                   })
                   .catch(err => {
                     console.log('错误', err);
                   });
            }
                  setTimeout(() => {
                    uni.redirectTo({ url: '/pages/login/login' });
                  }, 1000);
                 } else {
                  this.$u.toast(res.msg ? res.msg : '添加失败');
                 }
               })
               .catch(err => {
                 console.log('错误', err);
               });
              })
              .catch(err => {
                console.log('err', err);
                this.$u.toast('请规范输入内容');
                this.$u.toast('请规范输入内容(检查密码强度是否过低!)');
              });
        }
         },
@@ -798,8 +786,6 @@
               this.$refs.regesterFormRef.clearValidate();
               this.beforeChangeValue = e;
            }
         },
         radioChange2(e) {
         },
         addData(){
            this.tablist.push({idCard:""})
@@ -876,7 +862,19 @@
                           .data.url;
                        resolve(`${BaseUrl}${JSON.parse(res.data).data.url}`);
                     }else if(num==6){
                        this.registerFormModel.cardImg2 = JSON.parse(res.data)
                        this.registerFormModel.roadTransportImg = JSON.parse(res.data)
                           .data.url;
                        resolve(`${BaseUrl}${JSON.parse(res.data).data.url}`);
                     }else if(num==7){
                        this.registerFormModel.driverImgCw = JSON.parse(res.data)
                           .data.url;
                        resolve(`${BaseUrl}${JSON.parse(res.data).data.url}`);
                     }else if(num==8){
                        this.registerFormModel.roadTransportImgCw = JSON.parse(res.data)
                           .data.url;
                        resolve(`${BaseUrl}${JSON.parse(res.data).data.url}`);
                     }else if(num==9){
                        this.registerFormModel.tradeQualificationImgYyy = JSON.parse(res.data)
                           .data.url;
                        resolve(`${BaseUrl}${JSON.parse(res.data).data.url}`);
                     }
@@ -922,7 +920,7 @@
         .u-form {
            .u-radio {
               width: 33%;
               width: 35%;
            }
         }
      }