wk
2024-10-23 f22e264b6c282f597a139f549025cb9120fe0da1
pages/driver-page/drvier-my/certifiCate/certifiCate.vue
@@ -8,16 +8,16 @@
         v-if="certificateData.length===0"></u-empty>
         <view class="tran-type">
            <view ><u-button type="primary"
                  @click="editTranClick"
                  @click="editTranClick(-1)"
                  shape="circle"
                  plain>添加运输证</u-button></view>
                  plain>添加通行证</u-button></view>
         </view>
      <view class="main"
         v-if="certificateData.length!==0">
         <view class="information-block"
            v-for="item in certificateData"
            :key="item.id">
            <view class="detail-block">
            <view class="detail-block" @click="editTranClick(item.status,item)">
               <view class="line detail-reason">
                  <u--image :showLoading="true"
                     :src="item.certificateImg != null ? BaseUrl + item.certificateImg : ''"
@@ -55,14 +55,14 @@
               height="400px"></u--image>
         </u-popup>
      </view>
      <!-- 添加剧毒运输证 -->
      <!-- 添加剧毒通行证 -->
      <view class="editDriverPopup-container">
         <u-popup :show="editTranShow"
            mode="bottom"
            @close="editTranClose"
            @open="editTranOpen"
            :closeable="true">
            <combined-title title="运输证"
            <combined-title title="通行证"
               style="margin-left:20rpx"></combined-title>
            <view class="editDriverPopup-container-box">
               <u--form labelPosition="left"
@@ -70,7 +70,7 @@
                  :rule="sportRules"
                  ref="sportRef">
                  <u-form-item labelWidth="20%"
                     label="运输证号"
                     label="通行证号"
                     prop="certificateNo"
                     required>
                     <u--input v-model="tranSportForm.certificateNo"
@@ -83,9 +83,11 @@
                     label="车牌号"
                     prop="carNo"
                     required>
                     <u--input v-model="tranSportForm.carNo"
                     <xm-cell special label="车牌号" :value="tranSportForm.carNo" @show="showKeyboard('xmKeyboard')"></xm-cell>
                     <xm-keyboard-v2 ref="xmKeyboard" @confirm="(v) => tranSportForm.carNo = v"></xm-keyboard-v2>
                     <!-- <u--input v-model="tranSportForm.carNo"
                        border="none"
                        inputAlign="left"></u--input>
                        inputAlign="left"></u--input> -->
                  </u-form-item>
                  <u-form-item labelWidth="20%"
                     label="产品"
@@ -108,7 +110,7 @@
                        type="text"></u--input>
                  </u-form-item>
                  <u-form-item prop="certificateImg"
                     label="运输证"
                     label="通行证"
                     labelWidth="20%"
                     borderBottom
                     required
@@ -126,13 +128,13 @@
                     </u-upload>
                  </u-form-item>
                  <u-form-item prop="startTime"
                     label="运输证开始时间"
                     label="通行证开始时间"
                     labelWidth="20%"
                     borderBottom>
                     <uni-datetime-picker v-model="tranSportForm.startTime" type="datetime"  />
                  </u-form-item>
                  <u-form-item prop="expirationTime"
                     label="运输证过期时间"
                     label="通行证过期时间"
                     labelWidth="20%"
                     borderBottom>
                     <uni-datetime-picker v-model="tranSportForm.expirationTime" type="datetime" :start="minDate" />
@@ -196,6 +198,24 @@
                           border="none"
                           inputAlign="left"></u--input>
                     </u-form-item>
                     <u-form-item prop="certificateImg"
                        label="资质证明"
                        labelWidth="20%"
                        borderBottom
                        required
                        @click="beforeRead">
                        <u-upload :fileList="item.fileList"
                           deletable
                           @afterRead="afterReads"
                           @delete="deletePics"
                           multiple
                           :name="index.toString()"
                           :maxCount="1"
                           width="250"
                           height="150"
                           :previewFullImage="true">
                        </u-upload>
                     </u-form-item>
                  </view>
                  
                  <u-form-item labelWidth="20%"
@@ -207,7 +227,7 @@
                  </u-form-item>
               </u--form>
               <view class="person-utils">
                  <u-button text="提交剧毒运输证"
                  <u-button text="提交剧毒通行证"
                     @click="updateRoad"
                     :disabled="upload"
                     type="primary"></u-button>
@@ -229,7 +249,8 @@
            supercargoList:[{
               driverName:"",
               driverIdcard:"",
               driverPhone:""
               driverPhone:"",
               fileList:[]
            }],
            userInfo: {},
            scoreDetailList: [],
@@ -264,13 +285,13 @@
               certificateNo: {
                  type: 'string',
                  required: true,
                  message: '请填写运输证号',
                  message: '请填写通行证号',
                  trigger: ['blur', 'change']
               },
               expirationTime: [{
                  type: 'string',
                  required: true,
                  message: '请选择运输证过期时间',
                  message: '请选择通行证过期时间',
                  trigger: ['blur', 'change']
               },{
                  pattern: /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/,
@@ -279,7 +300,7 @@
               startTime:[{
                  type: 'string',
                  required: true,
                  message: '请选择运输证开始时间',
                  message: '请选择通行证开始时间',
                  trigger: ['blur', 'change']
               },{
                  pattern: /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/,
@@ -320,11 +341,6 @@
         getData(){
            this.$reqGet('getUserEntity').then(res => {
               this.userInfo = res.data;
               this.tranSportForm.carNo=this.userInfo.carNo
               this.driverList[0]={
               driverName:this.userInfo.name,
               driverIdcard:this.userInfo.idCard
            }
               this.$reqGetId('getDriverListById', this.userInfo.userId).then(res => {
                  this.certificateData = res.data;
               });
@@ -340,6 +356,10 @@
            this.previewImageShow = false;
         },
         previewImageOpen() {},
         deletePics(event) {
            this.changeisUploadimg(true);
            this.supercargoList[event.name].fileList.splice(event.index, 1);
         },
         // 删除
         deletePic(event) {
            this.changeisUploadimg(true);
@@ -372,8 +392,43 @@
               }
            });
         },
         editTranClick(){
            this.editTranShow = true;
         editTranClick(e,data){
            if(e==-1){
               this.editTranShow = true;
               this.tranSportForm={
                  carNo:"",
                  productId:"",
                  customerId:""
               }
                this.driverList=[]
                this.supercargoList=[]
                this.fileList9=[]
                this.tranSportForm.carNo=this.userInfo.carNo
                this.driverList[0]={
                   driverName:this.userInfo.name,
                   driverIdcard:this.userInfo.idCard
                }
               if(data){
                  this.tranSportForm=Object.assign({},this.tranSportForm,data)
                  if((!this.tranSportForm.supercargoInfo==''||null)||(!this.tranSportForm.highlyToxicImg==''||null) ){
                     this.supercargoList =this.tranSportForm.supercargoInfo.split(",").map((item,index)=>{
                        return {driverName:item.split("|")[0],driverIdcard:item.split("|")[1],driverPhone:item.split("|")[2],fileList:[{url:`${BaseUrl}${this.tranSportForm.highlyToxicImg.split(',')[index]}`}]}
                     })
                  }
                  this.driverList=this.tranSportForm.driverName.split(",").map((item,index)=>{
                     return {driverName:item,driverIdcard:this.tranSportForm.driverIdcard.split(",")[index]}
                  })
                  if (this.fileList9.length == 0 && this.tranSportForm.certificateImg) {
                     this.fileList9.push({
                        url: `${BaseUrl}${this.tranSportForm.certificateImg}`
                     });
                  }
               }
            }
         },
         showKeyboard(ref){
            this.$refs[ref].toShow(this.tranSportForm.carNo)
         },
         editTranClose(){
            this.editTranShow = false;
@@ -385,9 +440,10 @@
               .then(res => {
                  let submit=true
                  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]$/
                  const regex = /\*/;
                  if (this.fileList9.length==0) {
                     uni.showToast({
                        title: '请选择运输证!',
                        title: '请选择通行证!',
                        icon: 'error',
                        duration: 2000
                     });
@@ -408,7 +464,7 @@
                              duration: 2000
                           });
                           submit=false
                        }else if(!idcardtext.test(item.driverIdcard)){
                        }else if(!idcardtext.test(item.driverIdcard)&&!regex.test(item.driverIdcard)){
                           uni.showToast({
                              title: `请检验驾驶员身份证!`,
                              icon: 'error',
@@ -455,6 +511,13 @@
                              duration: 2000
                           });
                           submit=false
                        }else if(item.fileList.length==0){
                           uni.showToast({
                              title: `请上传资质证明!`,
                              icon: 'error',
                              duration: 2000
                           });
                           submit=false
                        }
                     })
                  }
@@ -462,6 +525,7 @@
                        let driverName=""
                        let driverIdcard=""
                        let supercargoInfo=''
                        let highlyToxicImg=''
                        driverName = this.driverList.map((item, index) => {
                                return item.driverName;
                              }).join(",");
@@ -471,42 +535,137 @@
                        supercargoInfo = this.supercargoList.map((item, index) => {
                            return item.driverName+ '|'+item.driverIdcard+"|"+item.driverPhone
                           }).join(",");
                        this.$reqPost('addJcroadtransport', {
                           userId:this.userInfo.userId,
                           ...this.tranSportForm,
                           driverName:driverName,
                           driverIdcard:driverIdcard,
                           supercargoInfo:supercargoInfo
                        }, 'json').then(res => {
                           if (res.code == 0) {
                              this.editTranShow = false;
                              this.$u.toast('提交成功');
                              this.tranSportForm={
                                 carNo:"",
                                 productId:"",
                                 customerId:""
                              }
                              this.driverList=[{
                                 driverName:"",
                                 driverIdcard:""
                              }]
                              this.supercargoList=[{
                                 driverName:"",
                                 driverIdcard:"",
                                 driverPhone:""
                              }]
                              this.fileList9=[]
                              this.getData();
                           } else {
                              uni.showToast({
                                 title: res.msg,
                                 icon: 'none',
                                 duration: 2000
                              });
                           }
                        })
                        highlyToxicImg= this.supercargoList.map((item, index) => {
                           return item.fileList[0].url.replace(BaseUrl,'')
                           }).join(",")
                          if(this.tranSportForm.id){
                           this.$reqPut('putJcroadtransport',{
                              id:this.tranSportForm.id,
                              certificateNo:this.tranSportForm.certificateNo,
                              carNo:this.tranSportForm.carNo,
                              certificateImg:this.tranSportForm.certificateImg,
                              customerName:this.tranSportForm.customerName,
                              productName:this.tranSportForm.productName,
                              startTime:this.tranSportForm.startTime,
                              expirationTime:this.tranSportForm.expirationTime,
                              status:0,
                              customerId:this.tranSportForm.customerId,
                              productId:this.tranSportForm.productId,
                              userId:this.userInfo.userId,
                              driverName:driverName,
                              driverIdcard:driverIdcard,
                              supercargoInfo:supercargoInfo,
                              highlyToxicImg:highlyToxicImg
                           }, 'json').then(res => {
                              if (res.code == 0) {
                                 this.editTranShow = false;
                                 this.$u.toast('提交成功');
                                 this.tranSportForm={
                                    carNo:"",
                                    productId:"",
                                    customerId:""
                                 }
                                 this.driverList=[{
                                    driverName:"",
                                    driverIdcard:""
                                 }]
                                 this.supercargoList=[{
                                    driverName:"",
                                    driverIdcard:"",
                                    driverPhone:"",
                                    fileList:[]
                                 }]
                                 this.fileList9=[]
                                 this.getData();
                              } else {
                                 uni.showToast({
                                    title: res.msg,
                                    icon: 'none',
                                    duration: 2000
                                 });
                              }
                           })
                          }else{
                           this.$reqPost('addJcroadtransport', {
                              userId:this.userInfo.userId,
                              ...this.tranSportForm,
                              driverName:driverName,
                              driverIdcard:driverIdcard,
                              supercargoInfo:supercargoInfo,
                              highlyToxicImg:highlyToxicImg
                           }, 'json').then(res => {
                              if (res.code == 0) {
                                 this.editTranShow = false;
                                 this.$u.toast('提交成功');
                                 this.tranSportForm={
                                    carNo:"",
                                    productId:"",
                                    customerId:""
                                 }
                                 this.driverList=[{
                                    driverName:"",
                                    driverIdcard:""
                                 }]
                                 this.supercargoList=[{
                                    driverName:"",
                                    driverIdcard:"",
                                    driverPhone:"",
                                    fileList:[]
                                 }]
                                 this.fileList9=[]
                                 this.getData();
                              } else {
                                 uni.showToast({
                                    title: res.msg,
                                    icon: 'none',
                                    duration: 2000
                                 });
                              }
                           })
                          }
                     }
               })
         },
         async afterReads(event) {
            // 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
            let lists = [].concat(event.file);
            let fileListLen = this.supercargoList[event.name].fileList.length;
            lists.map(item => {
               this.supercargoList[event.name].fileList.push({
                  ...item,
                  status: 'uploading',
                  message: '上传中'
               });
            });
            for (let i = 0; i < lists.length; i++) {
               const result = await this.uploadFilePromises(lists[i].url, event.name);
               let item = this.supercargoList[event.name].fileList[fileListLen];
               this.supercargoList[event.name].fileList.splice(
                  fileListLen,
                  1,
                  Object.assign(item, {
                     status: 'success',
                     message: '上传成功',
                     url: result
                  })
               );
               fileListLen++;
            }
         },
         uploadFilePromises(url, num) {
            return new Promise((resolve, reject) => {
               let a = uni.uploadFile({
                  url: BaseUrl + '/admin/sys-file/uploadUnToken',
                  filePath: url,
                  name: 'file',
                  // formData: {
                  //    user: 'test'
                  // },
                  success: res => {
                        resolve(`${BaseUrl}${JSON.parse(res.data).data.url}`);
                  }
               });
            });
         },
         async afterRead(event) {
            // 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
@@ -566,7 +725,8 @@
            this.supercargoList.push({
               driverName:"",
               driverIdcard:"",
               driverPhone:""
               driverPhone:"",
               fileList:[]
            })
         },
         addDriver(){