| | |
| | | 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 : ''" |
| | |
| | | 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" |
| | |
| | | :rule="sportRules" |
| | | ref="sportRef"> |
| | | <u-form-item labelWidth="20%" |
| | | label="运输证号" |
| | | label="通行证号" |
| | | prop="certificateNo" |
| | | required> |
| | | <u--input v-model="tranSportForm.certificateNo" |
| | |
| | | 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="产品" |
| | |
| | | type="text"></u--input> |
| | | </u-form-item> |
| | | <u-form-item prop="certificateImg" |
| | | label="运输证" |
| | | label="通行证" |
| | | labelWidth="20%" |
| | | borderBottom |
| | | required |
| | |
| | | </u-upload> |
| | | </u-form-item> |
| | | <u-form-item prop="startTime" |
| | | label="运输证开始时间" |
| | | label="通行证开始时间" |
| | | labelWidth="20%" |
| | | borderBottom> |
| | | <uni-datetime-picker v-model="tranSportForm.startTime" type="date" /> |
| | | <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="date" :start="minDate" /> |
| | | <uni-datetime-picker v-model="tranSportForm.expirationTime" type="datetime" :start="minDate" /> |
| | | </u-form-item> |
| | | <view class="adddelete"> |
| | | <u-button text="添加驾驶员" |
| | |
| | | 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%" |
| | |
| | | </u-form-item> |
| | | </u--form> |
| | | <view class="person-utils"> |
| | | <u-button text="提交道路运输证" |
| | | <u-button text="提交剧毒通行证" |
| | | @click="updateRoad" |
| | | :disabled="upload" |
| | | type="primary"></u-button> |
| | |
| | | supercargoList:[{ |
| | | driverName:"", |
| | | driverIdcard:"", |
| | | driverPhone:"" |
| | | driverPhone:"", |
| | | fileList:[] |
| | | }], |
| | | userInfo: {}, |
| | | scoreDetailList: [], |
| | |
| | | certificateNo: { |
| | | type: 'string', |
| | | required: true, |
| | | message: '请填写运输证号', |
| | | message: '请填写通行证号', |
| | | trigger: ['blur', 'change'] |
| | | }, |
| | | expirationTime: { |
| | | expirationTime: [{ |
| | | type: 'string', |
| | | required: true, |
| | | message: '请选择运输证开始时间', |
| | | message: '请选择通行证过期时间', |
| | | trigger: ['blur', 'change'] |
| | | }, |
| | | startTime:{ |
| | | },{ |
| | | pattern: /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/, |
| | | message: '请选择开始时间' |
| | | }], |
| | | startTime:[{ |
| | | type: 'string', |
| | | required: true, |
| | | message: '请选择运输证过期时间', |
| | | message: '请选择通行证开始时间', |
| | | trigger: ['blur', 'change'] |
| | | }, |
| | | },{ |
| | | pattern: /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/, |
| | | message: '请选择开始时间' |
| | | }], |
| | | carNo: [{ |
| | | type: 'string', |
| | | required: true, |
| | |
| | | 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; |
| | | }); |
| | |
| | | this.previewImageShow = false; |
| | | }, |
| | | previewImageOpen() {}, |
| | | deletePics(event) { |
| | | this.changeisUploadimg(true); |
| | | this.supercargoList[event.name].fileList.splice(event.index, 1); |
| | | }, |
| | | // 删除 |
| | | deletePic(event) { |
| | | this.changeisUploadimg(true); |
| | |
| | | let year = now.getFullYear(); |
| | | let month = this.padStart(now.getMonth() + 1); // 月份是从0开始的 |
| | | let day = this.padStart(now.getDate()); |
| | | return `${year}-${month}-${day}`; |
| | | let hour = this.padStart(now.getHours()); |
| | | let minute = this.padStart(now.getMinutes()); |
| | | let second = this.padStart(now.getSeconds()); |
| | | return `${year}-${month}-${day} ${hour}:${minute}:${second}`; |
| | | }, |
| | | padStart(value) { |
| | | return value.toString().padStart(2, '0'); |
| | |
| | | } |
| | | }); |
| | | }, |
| | | 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; |
| | |
| | | .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 |
| | | }); |
| | |
| | | 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', |
| | |
| | | duration: 2000 |
| | | }); |
| | | submit=false |
| | | }else if(item.fileList.length==0){ |
| | | uni.showToast({ |
| | | title: `请上传资质证明!`, |
| | | icon: 'error', |
| | | duration: 2000 |
| | | }); |
| | | submit=false |
| | | } |
| | | }) |
| | | } |
| | |
| | | let driverName="" |
| | | let driverIdcard="" |
| | | let supercargoInfo='' |
| | | let highlyToxicImg='' |
| | | driverName = this.driverList.map((item, index) => { |
| | | return item.driverName; |
| | | }).join(","); |
| | |
| | | supercargoInfo = this.supercargoList.map((item, index) => { |
| | | return item.driverName+ '|'+item.driverIdcard+"|"+item.driverPhone |
| | | }).join(","); |
| | | if(this.tranSportForm.startTime){ |
| | | this.tranSportForm.startTime=this.tranSportForm.startTime+" 00:01" |
| | | } |
| | | if(this.tranSportForm.expirationTime){ |
| | | this.tranSportForm.expirationTime=this.tranSportForm.expirationTime+" 23:55" |
| | | } |
| | | 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 |
| | | }); |
| | | if(this.tranSportForm.startTime){ |
| | | this.tranSportForm.startTime=this.tranSportForm.startTime.slice(0,10) |
| | | } |
| | | if(this.tranSportForm.expirationTime){ |
| | | this.tranSportForm.expirationTime=this.tranSportForm.expirationTime.slice(0,10) |
| | | } |
| | | } |
| | | }) |
| | | 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 为数组格式,否则为对象格式 |
| | |
| | | this.supercargoList.push({ |
| | | driverName:"", |
| | | driverIdcard:"", |
| | | driverPhone:"" |
| | | driverPhone:"", |
| | | fileList:[] |
| | | }) |
| | | }, |
| | | addDriver(){ |