From 05273ace3da665cb10c36ca0dac4413a8284302a Mon Sep 17 00:00:00 2001
From: qingyiay <2386314947@qq.com>
Date: 星期三, 17 五月 2023 18:10:36 +0800
Subject: [PATCH] 增加部分限制,增加新功能

---
 pages/driver-page/drvier-my/drvier-my.vue |  521 +++++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 424 insertions(+), 97 deletions(-)

diff --git a/pages/driver-page/drvier-my/drvier-my.vue b/pages/driver-page/drvier-my/drvier-my.vue
index 1233de8..bf10fb2 100644
--- a/pages/driver-page/drvier-my/drvier-my.vue
+++ b/pages/driver-page/drvier-my/drvier-my.vue
@@ -1,23 +1,101 @@
 <template>
 	<view class="driver-my">
-		<!-- <view class="jifen">
-			<view class="zheng">
-				<image src="../../../static/image/鏃犱汉鍊煎畧/缁� 38_1.png"></image>
-				<view class="font">
-					<view class="font-top">100</view>
-					<view class="font-bottom">姝gН鍒�</view>
+		<view class="driver-banner">
+			<view class="navgation">鎴戠殑</view>
+			<view class="avatar">
+				<view class="avatar-imgage" style="background: url('https://mx.jzeg.cn:9095/appimg/image/banner/driverava.png')no-repeat;background-size: cover;"></view>
+				<view class="avatar-name">{{ userInfo.name || '' }}</view>
+				<view class="edit-button"><u-button type="primary" @click="editBtnClick" shape="circle" plain>缂栬緫涓汉璧勬枡</u-button></view>
+			</view>
+			<view class="personal-information">
+				<view class="personal-information-block">
+					<view class="block-main">
+						<view class="information-line" @click="">
+							<view class="line-label">
+								<image src="https://mx.jzeg.cn:9095/appimg/image/banner/personalicon.png" mode="widthFix"></image>
+								<view class="label-text">韬唤璇佸彿</view>
+							</view>
+							<view class="information-value">
+								{{ userInfo.idCard || '' }}
+								<!-- <u-icon name="arrow-right" color="#999999" size="30" v-if="userInfo.idCard"></u-icon> -->
+							</view>
+						</view>
+						<view class="information-line">
+							<view class="line-label">
+								<image src="https://mx.jzeg.cn:9095/appimg/image/banner/phonenum.png" mode="widthFix"></image>
+								<view class="label-text">鎵嬫満鍙�</view>
+							</view>
+							<view class="information-value">
+								{{ userInfo.phone || '' }}
+								<!-- <u-icon name="arrow-right" color="#999999" size="30" v-if="userInfo.phone"></u-icon> -->
+							</view>
+						</view>
+						<view class="information-line">
+							<view class="line-label">
+								<image src="https://mx.jzeg.cn:9095/appimg/image/banner/carnum.png" mode="widthFix"></image>
+								<view class="label-text">杞︾墝鍙�</view>
+							</view>
+							<view class="information-value">
+								{{ userInfo.carNo || '' }}
+								<!-- <u-icon name="arrow-right" color="#999999" size="30" v-if="userInfo.carNo"></u-icon> -->
+							</view>
+						</view>
+						<view class="information-line">
+							<view class="line-label">
+								<image src="https://mx.jzeg.cn:9095/appimg/image/banner/axisnum.png" mode="widthFix"></image>
+								<view class="label-text">杞﹁酱鏁�</view>
+							</view>
+							<view class="information-value">
+								{{ userInfo.axleNum || '' }}
+								<!-- <u-icon name="arrow-right" color="#999999" size="30" v-if="userInfo.axleNum"></u-icon> -->
+							</view>
+						</view>
+						<view class="information-line last">
+							<view class="line-label">
+								<image src="https://mx.jzeg.cn:9095/appimg/image/banner/weighnum.png" mode="widthFix"></image>
+								<view class="label-text">浣撻噸</view>
+							</view>
+							<view class="information-value">
+								{{ userInfo.weight || '' }}
+								<!-- <u-icon name="arrow-right" color="#999999" size="30" v-if="userInfo.weight"></u-icon> -->
+							</view>
+						</view>
+					</view>
 				</view>
 			</view>
-			<view class="fu">
-				<image src="../../../static/image/鏃犱汉鍊煎畧/缁� 38.png"></image>
-				<view class="font">
-					<view class="font-top">-60</view>
-					<view class="font-bottom">璐熺Н鍒�</view>
+		</view>
+		<view class="car-information">
+			<view class="information-main">
+				<view class="information-body">
+					<view class="car-img">
+						<view class="label-title">
+							<image src="https://mx.jzeg.cn:9095/appimg/image/banner/carimg.png" mode="widthFix"></image>
+							<view class="label-text">杞﹁締鐓х墖</view>
+						</view>
+						<view class="img-container">
+							<u--image :showLoading="true" :src="userInfo.carImg != null ? BaseUrl + userInfo.carImg : ''" width="80px" height="80px" @click="imageClick(1)">
+								<view slot="error" style="font-size: 24rpx;">鍔犺浇澶辫触</view>
+							</u--image>
+						</view>
+					</view>
+					<view class="car-img">
+						<view class="label-title">
+							<image src="https://mx.jzeg.cn:9095/appimg/image/banner/cardimg.png" mode="widthFix"></image>
+							<view class="label-text">琛岄┒璇佺収鐗�</view>
+						</view>
+						<view class="img-container">
+							<u--image :showLoading="true" :src="userInfo.drivingImg != null ? BaseUrl + userInfo.drivingImg : ''" width="80px" height="80px" @click="imageClick(2)">
+								<view slot="error" style="font-size: 24rpx;">鍔犺浇澶辫触</view>
+							</u--image>
+						</view>
+					</view>
 				</view>
 			</view>
-		</view> -->
-
-		<view class="personal-information-form">
+		</view>
+		<view class="loginout">
+			<view class="loginout-main"><u-button text="閫�鍑虹櫥褰�" type="primary" @click="logout" shape="circle" plain></u-button></view>
+		</view>
+		<!-- <view class="personal-information-form">
 			<u--form labelPosition="left" :model="userInfo" ref="form1">
 				<u-form-item labelWidth="20%" label="濮撳悕" ref="item1">
 					<u--input v-model="userInfo.name" border="none" inputAlign="right" disabled disabledColor="#fff"></u--input>
@@ -49,11 +127,11 @@
 				</u-form-item>
 			</u--form>
 			<view class="push-information-button">
-				<u-button text="閫�鍑虹櫥褰�" type="primary" @click="logout"></u-button>
 				<u-button text="淇敼涓汉璧勬枡" type="primary" @click="editBtnClick"></u-button>
-			</view>
-			<view class="statistics"><u-button text="鍙戣繍缁熻" type="primary" @click="statistics"></u-button></view>
-		</view>
+				<u-button text="閫�鍑虹櫥褰�" type="primary" @click="logout"></u-button>
+			</view> -->
+		<!-- <view class="statistics"><u-button text="鍙戣繍缁熻" type="primary" @click="statistics"></u-button></view> -->
+		<!-- </view> -->
 
 		<!-- 鍥剧墖棰勮寮瑰嚭妗� -->
 		<view class="previewImage-container">
@@ -67,18 +145,50 @@
 			<u-popup :show="editDriverPopupShow" mode="bottom" @close="editDriverPopupClose" @open="editDriverPopupOpen" :closeable="true">
 				<combined-title title="淇敼涓汉淇℃伅" style="margin-left:20rpx"></combined-title>
 				<view class="editDriverPopup-container-box">
-					<u--form labelPosition="left" :model="editUserInfo" ref="form1">
-						<u-form-item labelWidth="20%" label="濮撳悕" ref="item1"><u--input v-model="editUserInfo.name" border="none" inputAlign="left"></u--input></u-form-item>
-						<u-form-item labelWidth="20%" label="韬唤璇佸彿" ref="item1"><u--input v-model="editUserInfo.idCard" border="none" inputAlign="left"></u--input></u-form-item>
-						<u-form-item labelWidth="20%" label="鎵嬫満鍙�" ref="item1"><u--input v-model="editUserInfo.phone" border="none" inputAlign="left"></u--input></u-form-item>
-						<u-form-item labelWidth="20%" label="杞︾墝鍙�" ref="item1"><u--input v-model="editUserInfo.carNo" border="none" inputAlign="left"></u--input></u-form-item>
-						<u-form-item labelWidth="20%" label="浣撻噸" ref="item1"><u--input v-model="editUserInfo.weight" border="none" inputAlign="left"></u--input></u-form-item>
-						<u-form-item labelWidth="20%" label="杞﹁酱鏁�" ref="item1"><u--input v-model="editUserInfo.axleNum" border="none" inputAlign="left"></u--input></u-form-item>
-						<u-form-item labelWidth="25%" label="杞﹁締鐓х墖" ref="item1">
-							<u-upload :fileList="fileList1" @afterRead="afterRead" @delete="deletePic" name="1" multiple :maxCount="1" width="250" height="150"></u-upload>
+					<u--form labelPosition="left" :model="editUserInfo" ref="editRef">
+						<u-form-item labelWidth="20%" label="濮撳悕" prop="name" required>
+							<u--input v-model="editUserInfo.name" border="none" inputAlign="left"></u--input>
 						</u-form-item>
-						<u-form-item labelWidth="25%" label="琛岄┒璇佺収鐗�" ref="item1">
-							<u-upload :fileList="fileList2" @afterRead="afterRead" @delete="deletePic" name="2" multiple :maxCount="1" width="250" height="150"></u-upload>
+						<u-form-item labelWidth="20%" label="韬唤璇佸彿" prop="idCard" required>
+							<u--input v-model="editUserInfo.idCard" border="none" inputAlign="left"></u--input>
+						</u-form-item>
+						<u-form-item labelWidth="20%" label="鎵嬫満鍙�" prop="phone" required>
+							<u--input v-model="editUserInfo.phone" border="none" inputAlign="left"></u--input>
+						</u-form-item>
+						<u-form-item labelWidth="20%" label="杞︾墝鍙�" prop="carNo" required>
+							<u--input v-model="editUserInfo.carNo" border="none" inputAlign="left"></u--input>
+						</u-form-item>
+						<u-form-item labelWidth="20%" label="浣撻噸" prop="weight" required>
+							<u--input v-model="editUserInfo.weight" border="none" inputAlign="left" placeholder="浣撻噸浠g浣滀负鍗曚綅"></u--input>
+						</u-form-item>
+						<u-form-item labelWidth="20%" label="杞﹁酱鏁�" prop="axleNum" required>
+							<u--input v-model="editUserInfo.axleNum" border="none" inputAlign="left"></u--input>
+						</u-form-item>
+						<u-form-item labelWidth="25%" label="杞﹁締鐓х墖" @click="beforeRead" prop="carImg" required>
+							<u-upload
+								:fileList="fileList1"
+								@afterRead="afterRead"
+								@delete="deletePic"
+								name="1"
+								multiple
+								:maxCount="1"
+								width="250"
+								height="150"
+								:previewFullImage="true"
+							></u-upload>
+						</u-form-item>
+						<u-form-item labelWidth="25%" label="琛岄┒璇佺収鐗�" ref="item1" @click="beforeRead" prop="drivingImg" required>
+							<u-upload
+								:fileList="fileList2"
+								@afterRead="afterRead"
+								@delete="deletePic"
+								name="2"
+								multiple
+								:maxCount="1"
+								width="250"
+								height="150"
+								:previewFullImage="true"
+							></u-upload>
 						</u-form-item>
 					</u--form>
 					<u-button text="鎻愪氦" @click="updateUser" type="primary"></u-button>
@@ -94,6 +204,7 @@
 <script>
 import { customerId, userInfo, redirectLogin } from '@/utils/status';
 import { BaseUrl } from '@/api/publicInterface.js';
+import { mapMutations } from 'vuex';
 export default {
 	data() {
 		return {
@@ -113,6 +224,94 @@
 				weight: '',
 				userId: ''
 			},
+			rules: {
+				name: {
+					type: 'string',
+					required: true,
+					message: '璇峰~鍐欏鍚�',
+					trigger: ['blur', 'change']
+				},
+				idCard: [
+					{
+						type: 'string',
+						required: true,
+						message: '璇疯緭鍏ヨ韩浠借瘉鍙�',
+						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: '韬唤璇佸彿鏍煎紡涓嶆纭�'
+					}
+				],
+				phone: [
+					{
+						required: true,
+						message: '姝ら」涓哄繀濉」',
+						// blur鍜宑hange浜嬩欢瑙﹀彂妫�楠�
+						trigger: ['blur', 'change']
+					},
+					{
+						min: 11,
+						max: 11,
+						message: '璇疯緭鍏ュ悎娉曟墜鏈哄彿'
+					},
+					{
+						validator: (rule, value, callback) => {
+							return uni.$u.test.mobile(value);
+						},
+						message: '鎵嬫満鍙风爜鏍煎紡涓嶆纭�',
+						trigger: ['change', 'blur']
+					}
+				],
+				weight: {
+					type: 'number',
+					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']
+					}
+				],
+				axleNum: [
+					{
+						transform(value) {
+							return Number(value);
+						},
+						validator: (rule, value, callback) => {
+							return value <= 10;
+						},
+						message: '璇疯緭鍏ユ纭殑杞﹁酱鏁�',
+						trigger: ['change', 'blur']
+					}
+				],
+				carImg: {
+					type: 'string',
+					required: true,
+					message: '璇蜂笂浼犺溅杈嗗浘鐗�',
+					trigger: ['blur', 'change']
+				},
+				drivingImg: {
+					type: 'string',
+					required: true,
+					message: '璇蜂笂浼犺椹惰瘉鐓х墖',
+					trigger: ['blur', 'change']
+				}
+			},
 			src: '',
 			fileList1: [],
 			fileList2: [],
@@ -131,7 +330,11 @@
 	onShow() {
 		// this.init();
 	},
+	onReady() {
+		this.$refs.editRef.setRules(this.rules);
+	},
 	methods: {
+		...mapMutations(['changeisUploadimg']),
 		init() {
 			this.getUserEntity();
 		},
@@ -142,6 +345,18 @@
 			this.$reqGet('getUserEntity').then(res => {
 				uni.hideLoading();
 				this.userInfo = res.data;
+				uni.setStorageSync('carImg', this.userInfo.carImg);
+				uni.setStorageSync('drivingImg', this.userInfo.drivingImg);
+				if (this.fileList1.length == 0) {
+					this.fileList1.push({
+						url: `${BaseUrl}${this.userInfo.carImg}`
+					});
+				}
+				if (this.fileList2.length == 0) {
+					this.fileList2.push({
+						url: `${BaseUrl}${this.userInfo.drivingImg}`
+					});
+				}
 				Object.keys(this.editUserInfo).map(item => {
 					if (res.data[item]) {
 						this.editUserInfo[item] = res.data[item];
@@ -165,8 +380,12 @@
 				this.previewImageShow = true;
 			});
 		},
+		beforeRead() {
+			this.changeisUploadimg(true);
+		},
 		// 鍒犻櫎
 		deletePic(event) {
+			this.changeisUploadimg(true);
 			this[`fileList${event.name}`].splice(event.index, 1);
 		},
 		// 鏂板鍥剧墖
@@ -189,7 +408,7 @@
 					1,
 					Object.assign(item, {
 						status: 'success',
-						message: '',
+						message: '涓婁紶鎴愬姛',
 						url: result
 					})
 				);
@@ -199,18 +418,21 @@
 		uploadFilePromise(url, num) {
 			return new Promise((resolve, reject) => {
 				let a = uni.uploadFile({
-					url: BaseUrl + '/admin/sys-file/uploadUnToken', // 浠呬负绀轰緥锛岄潪鐪熷疄鐨勬帴鍙e湴鍧�
+					url: BaseUrl + '/admin/sys-file/uploadUnToken',
 					filePath: url,
 					name: 'file',
 					// formData: {
 					// 	user: 'test'
 					// },
 					success: res => {
-						resolve(JSON.parse(res.data).data.url);
 						if (num == 1) {
 							this.editUserInfo.carImg = JSON.parse(res.data).data.url;
+							uni.setStorageSync('carImg', JSON.parse(res.data).data.url);
+							resolve(`${BaseUrl}${JSON.parse(res.data).data.url}`);
 						} else if (num == 2) {
 							this.editUserInfo.drivingImg = JSON.parse(res.data).data.url;
+							uni.setStorageSync('drivingImg', JSON.parse(res.data).data.url);
+							resolve(`${BaseUrl}${JSON.parse(res.data).data.url}`);
 						}
 					}
 				});
@@ -236,20 +458,32 @@
 		},
 		// 淇敼鐢ㄦ埛淇℃伅
 		updateUser() {
-			this.$reqPost('updateUser', this.editUserInfo, 'json').then(res => {
-				console.log('鏇存柊鏁版嵁', res);
-				this.editDriverPopupShow = false;
-				if (res.code == 0) {
-					this.$u.toast('淇敼鎴愬姛');
-					this.init();
-				} else {
-					uni.showToast({
-						title: res.msg,
-						icon: 'none',
-						duration: 2000
+			this.editUserInfo = {
+				...this.editUserInfo,
+				carImg: uni.getStorageSync('carImg'),
+				drivingImg: uni.getStorageSync('drivingImg')
+			};
+			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('淇敼鎴愬姛');
+							this.init();
+						} else {
+							uni.showToast({
+								title: res.msg,
+								icon: 'none',
+								duration: 2000
+							});
+						}
 					});
-				}
-			});
+				})
+				.catch(err => {
+					this.$u.toast('淇敼澶辫触');
+				});
 		},
 		logout() {
 			this.logoutShow = true;
@@ -271,77 +505,170 @@
 </script>
 
 <style lang="scss" scoped>
+@mixin flex {
+	display: flex;
+	justify-content: space-between;
+	align-items: center;
+}
 .statistics {
 	margin-top: vww(10);
 	margin-bottom: vww(10);
 }
 ::v-deep.driver-my {
-	width: 90%;
+	width: 100%;
 	margin: 0 auto;
 	padding-bottom: vww(60);
-	// 绉垎
-	.jifen {
-		margin-top: vww(24);
+	.driver-banner {
 		width: 100%;
-		height: vww(120);
-		background: #ffffff;
-		border-radius: 8px;
-		box-shadow: 0px 3px 6px 0px rgba(0, 0, 0, 0.16);
-		display: flex;
-		flex-direction: row;
-		align-items: center;
-		.zheng {
-			width: 50%;
+		height: 430rpx;
+		background: linear-gradient(0deg, #ffffff 0%, #0055fe 100%);
+		background-size: contain;
+		position: fixed;
+		top: 0;
+		.navgation {
+			width: 80rpx;
+			height: 37rpx;
+			font-size: 40rpx;
+			font-weight: normal;
+			color: #ffffff;
+			line-height: 69rpx;
+			margin: vww(60) auto;
+		}
+		.avatar {
+			width: 100%;
+			height: 430rpx;
 			display: flex;
-			image {
-				margin-left: vww(32);
-				width: vww(48);
-				height: vww(48);
+			align-items: center;
+			position: fixed;
+			top: 0;
+			.avatar-imgage {
+				width: 98rpx;
+				height: 98rpx;
+				margin-left: vww(18);
+				@include flex;
+				justify-content: center;
 			}
-			.font {
-				margin-left: vww(8);
-				&-top {
-					font-size: vww(28);
-					font-weight: 700;
-					text-align: left;
-					color: #1987ff;
-				}
-				&-bottom {
-					font-size: 14px;
-					font-weight: 400;
-					text-align: left;
-					color: #111111;
-				}
+			.avatar-name {
+				width: 200rpx;
+				display: flex;
+				flex-wrap: wrap;
+				height: 32rpx;
+				font-size: 34rpx;
+				font-weight: bold;
+				color: #ffffff;
+				margin-left: vww(17);
+			}
+			.edit-button {
+				position: relative;
+				left: vww(73);
+				top: vww(4);
 			}
 		}
-		.fu {
-			width: 50%;
+		.personal-information {
+			width: 100%;
 			display: flex;
-			image {
-				margin-left: vww(32);
-				width: vww(48);
-				height: vww(48);
-			}
-			.font {
-				margin-left: vww(8);
-				&-top {
-					font-size: vww(28);
-					font-weight: 700;
-					text-align: left;
-					color: #ff4233;
+			justify-content: center;
+			position: relative;
+			top: vww(20);
+			&-block {
+				width: 690rpx;
+				height: 478rpx;
+				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;
+				display: flex;
+				flex-direction: column;
+				justify-content: space-between;
+				.block-main {
+					width: 636rpx;
+					margin: vww(10) vww(14);
 				}
-				&-bottom {
-					font-size: 14px;
-					font-weight: 400;
-					text-align: left;
-					color: #111111;
+
+				.information-line {
+					@include flex width: 636rpx;
+					height: vww(45);
+					border-bottom: 1rpx solid #f0f1f6;
+					.line-label {
+						width: 188rpx;
+						height: 90rpx;
+						@include flex image {
+							width: 50rpx;
+							height: 50rpx;
+						}
+						.label-text {
+							width: 120rpx;
+							font-size: 30rpx;
+							font-weight: 400;
+							color: #000000;
+							line-height: 85rpx;
+						}
+					}
+					.information-value {
+						min-width: vww(125);
+						@include flex;
+						font-size: 30rpx;
+						font-weight: 400;
+						color: #000000;
+						line-height: 85rpx;
+					}
+				}
+				.last {
+					border-bottom: 0;
 				}
 			}
 		}
 	}
+	.car-information {
+		width: 100%;
+		position: relative;
+		top: vww(410);
+		@include flex justify-content: center;
+		.information-main {
+			width: 690rpx;
+			height: 552rpx;
+			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;
+				.car-img {
+					height: 246rpx;
+					width: 100%;
+					@include flex flex-direction: column;
+					align-items: flex-start;
+					.label-title {
+						@include flex width: 200rpx;
+						height: 100rpx;
+						.label-text {
+							width: 200rpx;
+							height: 50rpx;
+						}
+						image {
+							width: 50rpx;
+							height: 50rpx;
+						}
+					}
+				}
+			}
+		}
+	}
+	.loginout {
+		width: 100%;
+		height: 74rpx;
+		@include flex;
+		justify-content: center;
+		position: relative;
+		bottom: vww(-430);
+		.loginout-main {
+			width: 84%;
+		}
+	}
 	// 琛ㄥ崟
 	.personal-information-form {
-		// margin-top: vww(24);
+		margin-top: vww(200);
+
 		.push-information-button {
 			display: flex;
 			margin: vww(20) auto 0;
@@ -362,7 +689,7 @@
 	.editDriverPopup-container {
 		.u-popup {
 			.u-transition {
-				height: 95%;
+				height: 75%;
 				.u-popup__content {
 					overflow: scroll !important;
 					.editDriverPopup-container-box {

--
Gitblit v1.9.1