From 5a35260ed13d1fb138ca7feb9e5840a24ad9248d Mon Sep 17 00:00:00 2001 From: yangan <yangan0921@163.com> Date: 星期一, 03 六月 2024 11:26:16 +0800 Subject: [PATCH] feat:库管首页菜单 --- pages/driver-page/drvier-my/drvier-my.vue | 560 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 547 insertions(+), 13 deletions(-) diff --git a/pages/driver-page/drvier-my/drvier-my.vue b/pages/driver-page/drvier-my/drvier-my.vue index 0538457..8705be9 100644 --- a/pages/driver-page/drvier-my/drvier-my.vue +++ b/pages/driver-page/drvier-my/drvier-my.vue @@ -1,7 +1,7 @@ <template> <view class="driver-my"> <view class="" - style="height: 586rpx;width: 100%;"> + style="height: 540rpx;width: 100%;"> <view class="driver-banner"> <view class="navgation">鎴戠殑</view> <view class="avatar"> @@ -30,6 +30,15 @@ @click="editDocClick" shape="circle" plain>缂栬緫璇佷欢淇℃伅</u-button></view> + </view> + <view class="process-tran" + > + </view> + <view class="tran-type"> + <view ><u-button type="primary" + @click="editTranClick" + shape="circle" + plain>娣诲姞杩愯緭璇�</u-button></view> </view> <view class="information-block"> <view class="personal-information"> @@ -141,6 +150,21 @@ </view> </view> + </view> + </view> + </view> + <view class="car-information" v-if="certificateData.length>0"> + <view class="roadTransportCertificate"> + <view class="information-body"> + <view class="certificate" v-for="item in certificateData" :key="item.id"> + <view class="certificate-left"> + 浜у搧锛歿{item.productName}} + </view> + <view class="certificate-right"> + {{item.status==0?'鏈鏍�':item.status==1?'閫氳繃':item.status==2?'杩囨湡':item.status==-1?"鏈�氳繃":null}} + </view> + </view> + {{}} </view> </view> </view> @@ -401,6 +425,7 @@ </view> </u-popup> </view> + <!-- 淇敼璇佷欢寮瑰嚭 --> <view class="editDriverPopup-container"> <u-popup :show="editDocShow" mode="bottom" @@ -538,7 +563,200 @@ </view> </u-popup> </view> - + <!-- 娣诲姞閬撹矾杩愯緭璇� --> + <view class="editDriverPopup-container"> + <u-popup :show="editTranShow" + mode="bottom" + @close="editTranClose" + @open="editTranOpen" + :closeable="true"> + <combined-title title="杩愯緭璇�" + style="margin-left:20rpx"></combined-title> + <view class="editDriverPopup-container-box"> + <u--form labelPosition="left" + :model="tranSportForm" + :rule="sportRules" + ref="sportRef"> + <u-form-item labelWidth="20%" + label="杩愯緭璇佸彿" + prop="certificateNo" + required> + <u--input v-model="tranSportForm.certificateNo" + border="none" + inputAlign="left"></u--input> + </u-form-item> + <u-form-item labelWidth="20%" + label="杞︾墝鍙�" + prop="carNo" + required> + <u--input v-model="tranSportForm.carNo" + border="none" + inputAlign="left"></u--input> + </u-form-item> + <u-form-item labelWidth="20%" + label="浜у搧" + ref="item1" + @click="treeOpen" + prop='productId'> + <u--input placeholder="璇烽�夋嫨浜у搧" + v-model="productName" + class="input" + type="text"></u--input> + <qian-tree ref="tkitree" + :range="productData" + rangeKey='productName' + confirmColor="#4e8af7" + :selectParent="true" + title="閫夋嫨閮ㄩ棬" + @confirm="treeChooseValue" /> + </u-form-item> + <view class="customer-name"> + <view class="customer-name_label"> + 閫夋嫨瀹㈡埛 + </view> + <view class="customer-name_block" + @click="selfDeliver"> + <input class="customer-name_block-input" + type="text" + placeholder="璇烽�夋嫨瀹㈡埛" + v-model="customerName" + @focus="selfDeliver" + ref="selectCustomer" /> + </view> + </view> + <u-form-item prop="certificateImg" + label="杩愯緭璇�" + labelWidth="20%" + borderBottom + required + @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="expirationTime" + label="杩愯緭璇佽繃鏈熸椂闂�" + labelWidth="20%" + borderBottom> + <uni-datetime-picker v-model="tranSportForm.expirationTime" type="datetime" /> + </u-form-item> + <view class="adddelete"> + <u-button text="娣诲姞椹鹃┒鍛�" + @click="addDriver" + type="primary"></u-button> + <u-button text="鍒犻櫎椹鹃┒鍛�" + @click="deleteDriver" + type="error"></u-button> + </view> + <view class="superList" v-for="(item,index) in driverList" :key="index"> + <u-form-item labelWidth="20%" + label="濮撳悕" + prop="driverName" + required> + <u--input v-model="item.driverName" + border="none" + inputAlign="left"></u--input> + </u-form-item> + <u-form-item labelWidth="20%" + label="韬唤璇�" + prop="driverIdcard" + required> + <u--input v-model="item.driverIdcard" + border="none" + inputAlign="left"></u--input> + </u-form-item> + </view> + <view class="adddelete"> + <u-button text="娣诲姞鎶艰繍鍛�" + @click="addSupercar" + type="primary"></u-button> + <u-button text="鍒犻櫎鎶艰繍鍛�" + @click="deleteSupercar" + type="error"></u-button> + </view> + <view class="superList" v-for="(item,index) in supercargoList" :key="index"> + <u-form-item labelWidth="20%" + label="濮撳悕" + prop="driverName" + required> + <u--input v-model="item.driverName" + border="none" + inputAlign="left"></u--input> + </u-form-item> + <u-form-item labelWidth="20%" + label="韬唤璇�" + prop="driverIdcard" + required> + <u--input v-model="item.driverIdcard" + border="none" + inputAlign="left"></u--input> + </u-form-item> + <u-form-item labelWidth="20%" + label="鎵嬫満鍙�" + prop="driverPhone" + required> + <u--input v-model="item.driverPhone" + border="none" + inputAlign="left"></u--input> + </u-form-item> + </view> + + <u-form-item labelWidth="20%" + label="澶囨敞" + prop="remarks"> + <u--input v-model="tranSportForm.remarks" + border="none" + inputAlign="left"></u--input> + </u-form-item> + </u--form> + <view class="person-utils"> + <u-button text="鎻愪氦閬撹矾杩愯緭璇�" + @click="updateRoad" + type="primary"></u-button> + </view> + </view> + </u-popup> + <u-popup :closeable='true' + :round="30" + mode='bottom' + :show="selfDeliverShow" + @close="selfDeliverClose" + @open="selfDeliverOpen"> + <view class="name-list-section"> + <view class="name-list_title"> + 閫夋嫨瀹㈡埛 + </view> + <view class="name-list_container"> + <u-empty mode="data" + icon="http://cdn.uviewui.com/uview/empty/data.png" + text="鏆傛棤鏁版嵁" + textSize="30" + iconSize="1000" + v-if="customerNameList.length===0"></u-empty> + <view class="name-list_container_item" + v-for="(item,index) in customerNameList" :key="index" + @click="selectCustomer(item)"> + <view class="item-image"> + <image src="https://mx.jzeg.cn:9096/appimg/image/banner/address.png" + mode="widthFix" + style="width: 18px;"></image> + </view> + <view class="item-customerName"> + {{item.customerName}} + </view> + </view> + </view> + </view> + </u-popup> + </view> <view class="logoutModel"> <u-modal :show="logoutShow" :title="logoutTitle" @@ -559,12 +777,17 @@ import noobTour from '@/components/noobTour/noobTour.vue' import printerStyle from '@/pages/driver-page/driver-index/bill-of-lading-details/printerStyle/printerStyle.vue' import { mapMutations, mapState } from 'vuex'; + import qianTree from '@/components/qian-tree/qian-tree.vue'; export default { - components: { previewImage, noobTour, printerStyle }, + components: { previewImage, noobTour, printerStyle,qianTree }, data() { return { + selfDeliverShow: false, + customerNameList:[], + customerName:"", // 鑾峰彇鐨勫徃鏈鸿鎯� userInfo: {}, + productName:"", // 淇敼鍙告満璇︽儏 editUserInfo: { phone: '', @@ -585,8 +808,11 @@ inventoryImg: '', countryNumberCar: 0 }, - registerFormModel:{ - + registerFormModel:{}, + tranSportForm:{ + carNo:"", + productId:"", + customerId:"" }, countryNumberCarList: [{ name: 1, @@ -597,6 +823,37 @@ label: '鍥藉叚', } ], + sportRules:{ + certificateNo: { + type: 'string', + required: true, + message: '璇峰~鍐欒繍杈撹瘉鍙�', + trigger: ['blur', 'change'] + }, + expirationTime: { + type: 'string', + required: true, + message: '璇烽�夋嫨杩愯緭璇佽繃鏈熸椂闂�', + trigger: ['blur', 'change'] + }, + carNo: [{ + type: 'string', + required: true, + message: '璇疯緭鍏ヨ溅鐗屽彿', + trigger: ['blur', 'change'] + }, + { + transform(value) { + return String(value); + }, + validator: (rule, value, callback) => { + return uni.$u.test.carNo(value); + }, + message: '璇疯緭鍏ユ纭殑杞︾墝鍙�', + trigger: ['change', 'blur'] + } + ], + }, rules: { name: { type: 'string', @@ -718,10 +975,19 @@ fileList5: [], fileList6: [], fileList7: [], - fileList8:[], + fileList8: [], + fileList9: [], + productData:[], + certificateData:[], + driverList:[{ + driverName:"", + driverIdcard:"" + }], + supercargoList:[], // 淇敼淇℃伅寮瑰嚭妗� editDriverPopupShow: false, editDocShow:false, + editTranShow:false, // previewImage previewImageShow: false, previewImageSrc: '', @@ -746,10 +1012,14 @@ }, onReady() { this.$refs.editRef.setRules(this.rules); + this.$refs.sportRef.setRules(this.sportRules); }, methods: { ...mapMutations(['changeisUploadimg']), init() { + this.$reqGet('getProductTree').then(res => { + this.productData = res.data; + }); this.getUserEntity(); }, getUserEntity() { @@ -759,6 +1029,10 @@ this.$reqGet('getUserEntity').then(res => { uni.hideLoading(); this.userInfo = res.data; + this.$reqGetId('getDriverListById', this.userInfo.userId).then(res => { + this.certificateData = res.data; + console.log(this.certificateData) + }); // this.userInfo.idCard = this.userInfo.idCard.slice(0, 6) + '********' + this.userInfo.idCard // .slice(-4) uni.setStorageSync('carImg', this.userInfo.carImg); @@ -831,6 +1105,10 @@ }, editDocClick(){ this.editDocShow = true; + }, + editTranClick(){ + this.getShipToList() + this.editTranShow = true; }, imageClick(index) { if (index == 1) { @@ -925,7 +1203,12 @@ this.registerFormModel.driverImg = JSON.parse(res.data) .data.url; resolve(`${BaseUrl}${JSON.parse(res.data).data.url}`); + }else if(num==9){ + this.tranSportForm.certificateImg = JSON.parse(res.data) + .data.url; + resolve(`${BaseUrl}${JSON.parse(res.data).data.url}`); } + } }); }); @@ -946,8 +1229,12 @@ editDocClose(){ this.editDocShow = false; }, + editTranClose(){ + this.editTranShow = false; + }, editDriverPopupOpen() {}, editDocOpen(){}, + editTranOpen(){}, modifyPassword() { this.$store.commit('changeisLogin', false) this.$store.dispatch('websocketOnClose') @@ -955,16 +1242,131 @@ url: '/pages/login/forgetPassword/forgetPassword' }) }, + updateRoad(){ + this.$refs.sportRef + .validate() + .then(res => { + if (this.tranSportForm.productId == '' ) { + uni.showToast({ + title: '璇烽�夋嫨浜у搧锛�', + icon: 'error', + duration: 2000 + }); + }else if(this.tranSportForm.customerId == ''){ + uni.showToast({ + title: '璇烽�夋嫨瀹㈡埛锛�', + icon: 'error', + duration: 2000 + }); + } + 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]$/ + if(this.driverList.length>0){ + this.driverList.forEach((item,index)=>{ + if(!item.driverName){ + uni.showToast({ + title: `璇峰~鍐欓┚椹跺鍚嶏紒`, + icon: 'error', + duration: 2000 + }); + } + if(!item.driverIdcard){ + uni.showToast({ + title: `璇峰~鍐欓┚椹惰韩浠借瘉锛乣, + icon: 'error', + duration: 2000 + }); + }else if(!idcardtext.test(item.driverIdcard)){ + uni.showToast({ + title: `璇锋楠岄┚椹跺憳韬唤璇侊紒`, + icon: 'error', + duration: 2000 + }); + } + }) + } + if(this.supercargoList.length>0){ + this.supercargoList.forEach((item,index)=>{ + if(!item.driverName){ + uni.showToast({ + title: `璇峰~鍐欐娂杩愬鍚嶏紒`, + icon: 'error', + duration: 2000 + }); + } + if(!item.driverIdcard){ + uni.showToast({ + title: `璇峰~鍐欐娂杩愯韩浠借瘉锛乣, + icon: 'error', + duration: 2000 + }); + }else if(!idcardtext.test(item.driverIdcard)){ + uni.showToast({ + title: `璇锋楠屾娂杩愯韩浠借瘉锛乣, + icon: 'error', + duration: 2000 + }); + } + if(!item.driverPhone){ + uni.showToast({ + title: `璇峰~鍐欐娂杩愭墜鏈哄彿锛乣, + icon: 'error', + duration: 2000 + }); + }else if( !/^1[23456789]\d{9}$/.test(item.driverPhone)){ + uni.showToast({ + title: `璇锋楠屾娂杩愭墜鏈哄彿锛乣, + icon: 'error', + duration: 2000 + }); + } + }) + } + let driverName="" + let driverIdcard="" + let supercargoInfo='' + driverName = this.driverList.map((item, index) => { + return item.driverName; + }).join(","); + driverIdcard = this.driverList.map((item, index) => { + return item.driverIdcard; + }).join(","); + supercargoInfo = this.supercargoList.map((item, index) => { + return item.driverName+ '|'+item.driverIdcard+"|"+item.driverPhone + }).join(","); + if(this.tranSportForm.expirationTime){ + this.tranSportForm.expirationTime=this.tranSportForm.expirationTime.slice(0,16) + } + this.$reqPost('addJcroadtransport', { + userId:this.registerFormModel.customerid, + ...this.tranSportForm, + driverName:driverName, + driverIdcard:driverIdcard, + supercargoInfo:supercargoInfo + }, 'json').then(res => { + this.editTranShow = false; + if (res.code == 0) { + this.$u.toast('淇敼鎴愬姛'); + this.init(); + } else { + uni.showToast({ + title: res.msg, + icon: 'none', + duration: 2000 + }); + } + }) + }) + }, // 淇敼璇佷欢淇℃伅 updateDoc(){ this.$reqPost('saveDriverDocs', { userId:this.registerFormModel.customerid, idCardImg:this.registerFormModel.cardImg1+","+this.registerFormModel.cardImg2, - expirationTimeIdcard:this.registerFormModel.expirationTimeIdcard, + expirationTimeIdcard:this.registerFormModel.expirationTimeIdcard.slice(0,16), drivingImg:this.registerFormModel.drivingImg, - expirationTimeDriving:this.registerFormModel.expirationTimeDriving, + expirationTimeDriving:this.registerFormModel.expirationTimeDriving.slice(0,16), driverImg:this.registerFormModel.driverImg, - expirationTimeDriver:this.registerFormModel.expirationTimeDriver, + expirationTimeDriver:this.registerFormModel.expirationTimeDriver.slice(0,16), tradeQualificationImg:this.registerFormModel.tradeQualificationImg, expirationTimeTradequalification:this.registerFormModel.expirationTimeTradequalification, }, 'json').then(res => { @@ -992,9 +1394,7 @@ this.$refs.editRef .validate() .then(res => { - this.$reqPost('updateUser', this.editUserInfo, 'json').then(res => { - console.log('鏇存柊鏁版嵁', res); this.editDriverPopupShow = false; if (res.code == 0) { this.$u.toast('淇敼鎴愬姛'); @@ -1042,7 +1442,82 @@ }, selectedPrintStyleHandle(val) { this.selectedPrintStyle = val - } + }, + findNameById(tree, idArr) { + let result = []; + function traverse(node, idArr) { + if (!node) return; + if (idArr.includes(node.id)) { + result.push({name:node.productName,id:node.id}); + } + if (node.children && node.children.length > 0) { + node.children.forEach(child => { + traverse(child, idArr); + }); + } + } + tree.forEach(node => { + traverse(node, idArr); + }); + return result; + }, + // 鎵撳紑浜у搧琛� + treeOpen() { + this.$refs.tkitree._show(); + }, + treeClose() { + this.$refs.tkitree._hide(); + }, + treeChooseValue(v) { + this.$refs.tkitree._hide(); + let data=this.findNameById(this.productData, v)[0] + this.tranSportForm.productId = data.id; + this.productName=data.name + }, + // 鑾峰彇瀹㈡埛 + getShipToList() { + this.$reqGet('getShipToList', { deptId: this.editUserInfo.deptId, productName: this.editUserInfo.productName }) + .then(res => { + if (res.code == 0) { + this.customerNameList = res.data + }else { + this.$u.toast('鍔犺浇澶辫触') + } + }) + }, + selfDeliver() { + this.selfDeliverShow = true + }, + selfDeliverClose() { + this.selfDeliverShow = false + }, + selfDeliverOpen() { + this.selfDeliverShow = true + }, + selectCustomer(value) { + this.tranSportForm.customerId = value.customerId + this.customerName = value.customerName + this.selfDeliverShow = false + }, + addSupercar(){ + this.supercargoList.push({ + driverName:"", + driverIdcard:"", + driverPhone:"" + }) + }, + addDriver(){ + this.driverList.push({ + driverName:"", + driverIdcard:"" + }) + }, + deleteSupercar(){ + this.supercargoList.splice(this.supercargoList.length - 1, 1) + }, + deleteDriver(){ + this.driverList.splice(this.driverList.length - 1, 1); + }, } }; </script> @@ -1128,10 +1603,34 @@ margin-right: vww(6); } } + .process-tran{ + width: 300rpx; + height: 50rpx; + margin: 0 auto; + position: fixed; + top: 390rpx; + left: 37rpx; + display: flex; + align-items: center; + + .state-text { + margin-right: vww(6); + } + } .car-type { position: fixed; top: 284rpx; + right: 20rpx; + width: 100%; + height: 50rpx; + display: flex; + align-items: center; + justify-content: flex-end; + } + .tran-type{ + position: fixed; + top: 390rpx; right: 20rpx; width: 100%; height: 50rpx; @@ -1213,9 +1712,35 @@ } .car-information { + margin-top: 30rpx; width: 100%; position: relative; @include flex justify-content: center; + .roadTransportCertificate{ + width: 690rpx; + background: #ffffff; + box-shadow: 0rpx 0rpx 14rpx 0rpx rgba(73, 120, 240, 0.14), 0rpx 7rpx 45rpx 0rpx rgba(73, 120, 240, 0.12); + border-radius: 20rpx; + .information-body { + width: 636rpx; + margin: vww(15) vww(14); + @include flex flex-direction: column; + .certificate { + display: flex; + justify-content: space-between; + align-items: center; + width: 636rpx; + height: 90rpx; + border-bottom: 1rpx solid #f0f1f6; + .certificate-left{ + margin-left: 20rpx; + } + .certificate-right{ + margin-right: 20rpx; + } + } + } + } .information-main { width: 690rpx; @@ -1228,7 +1753,6 @@ width: 636rpx; margin: vww(15) vww(14); @include flex flex-direction: column; - .car-img { height: 246rpx; width: 100%; @@ -1331,5 +1855,15 @@ } } } + .superList{ + margin: 10rpx; + padding: 10rpx; + border: 1px solid #f0f1f6; + } + .adddelete{ + display: flex; + justify-content: space-around; + margin: 10rpx; + } } </style> \ No newline at end of file -- Gitblit v1.9.1