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