From fa4c7baec36d58b4bdca66159ece743b5a45a9c8 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期四, 11 六月 2026 10:15:45 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 app/pages/driver-certification/driver-certification.vue |  110 ++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 101 insertions(+), 9 deletions(-)

diff --git a/app/pages/driver-certification/driver-certification.vue b/app/pages/driver-certification/driver-certification.vue
index 83d2ab5..e1966bc 100644
--- a/app/pages/driver-certification/driver-certification.vue
+++ b/app/pages/driver-certification/driver-certification.vue
@@ -95,7 +95,9 @@
 					<view class="driver-cert-card__upload-list">
 						<view class="driver-cert-card__upload-item" @click="handleUpload('idcardImg', 1)" style="height: 196rpx;">
 							<template v-if="previewImages.idcardImg">
-								<image class="driver-cert-card__upload-img" :src="previewImages.idcardImg" mode="widthFix"></image>
+								<view class="driver-cert-card__upload-img">
+									<image style="height: 100%;" :src="previewImages.idcardImg" mode="heightFix"></image>
+								</view>
 								<view class="driver-cert-card__upload-remove" @click.stop="removeImage('idcardImg')">鍒犻櫎</view>
 							</template>
 							<template v-else>
@@ -105,7 +107,9 @@
 						</view>
 						<view class="driver-cert-card__upload-item" @click="handleUpload('idcardImgBack', 1)" style="height: 196rpx;">
 							<template v-if="previewImages.idcardImgBack">
-								<image class="driver-cert-card__upload-img" :src="previewImages.idcardImgBack" mode="widthFix"></image>
+								<view class="driver-cert-card__upload-img">
+									<image style="height: 100%;" :src="previewImages.idcardImgBack" mode="heightFix"></image>
+								</view>
 								<view class="driver-cert-card__upload-remove" @click.stop="removeImage('idcardImgBack')">鍒犻櫎</view>
 							</template>
 							<template v-else>
@@ -184,7 +188,7 @@
 					</view>
 				</view>
 
-				<view class="driver-cert-card__upload-block driver-cert-card__upload-block--stacked">
+				<view v-if="needLicense" class="driver-cert-card__upload-block driver-cert-card__upload-block--stacked">
 					<view class="driver-cert-card__upload-title-row">
 						<text class="driver-cert-card__label">椹鹃┒璇佺収鐗�</text>
 						<text class="driver-cert-card__required">*</text>
@@ -223,7 +227,12 @@
 		<view class="driver-cert-page__bottom-bar">
 			<view v-if="currentStep === 2" class="driver-cert-page__agreement" @click="isAgreed = !isAgreed">
 				<image class="driver-cert-page__agreement-icon" :src="isAgreed ? '/static/image/ic_accept_sel@2x.png' : '/static/image/ic_accept@2x.png'" mode="widthFix"></image>
-				<text class="driver-cert-page__agreement-text">鎴戝凡闃呰骞跺悓鎰忋�婇闄╁0鏄庛�嬨�併�婅鏉庡瘎瀛樺憳椤荤煡銆嬪強銆婃湇鍔″崗璁��</text>
+				<text class="driver-cert-page__agreement-text">鎴戝凡闃呰骞跺悓鎰�</text>
+				<text class="driver-cert-page__agreement-link" @click.stop="openAgreement('errandRiskCommitment')">銆婇闄╂壙璇恒��</text>
+				<text class="driver-cert-page__agreement-text">銆�</text>
+				<text class="driver-cert-page__agreement-link" @click.stop="openAgreement('errandLuggageStorageNotice')">銆婅鏉庡瘎瀛橀』鐭ャ��</text>
+				<text class="driver-cert-page__agreement-text">鍙�</text>
+				<text class="driver-cert-page__agreement-link" @click.stop="openAgreement('errandServiceAgreement')">銆婃湇鍔″崗璁��</text>
 			</view>
 
 			<view class="driver-cert-page__actions" :class="{ 'driver-cert-page__actions--dual': currentStep === 2 }">
@@ -269,11 +278,20 @@
 			:minDate="datePickerMode === 'end' ? this.form.cardStartDate : 0"
 			@confirm="confirmDate"
 			@cancel="showDatePicker = false" />
+
+		<u-popup :show="showDriverCertPopup" mode="center" :mask-click="false" round="24">
+			<view class="driver-cert-notice">
+				<text class="driver-cert-notice__title">鍙告満璁よ瘉</text>
+				<text class="driver-cert-notice__content">瀹炲悕淇℃伅浠呯敤浜庡徃鏈轰粠涓氳祫璐ㄥ鏍搞�佸瘎瀛樿鍗曞饱绾︽牳楠屼笌璐︽埛瀹夊叏闃叉姢锛屾垜浠壙璇轰弗鏍间繚鎶ゆ偍鐨勯殣绉併�傛劅璋㈡偍鐨勪俊浠汇��</text>
+				<button class="driver-cert-notice__button" @click="acknowledgeDriverCertNotice">宸茬煡鏅�</button>
+			</view>
+		</u-popup>
 	</view>
 </template>
 
 <script>
     import { mapState } from 'vuex'
+	import { chooseImageWithNotice } from '@/utils/utils'
 	export default {
 		data() {
 			return {
@@ -313,6 +331,7 @@
 					color: '',
 					carType: ''
 				},
+				needLicense: false,
 				showCarTypePicker: false,
 				carTypeList: [],
 				carTypeColumns: [],
@@ -334,18 +353,24 @@
 					otherImgUrls: []
 				},
 				isAgreed: false,
-				imgPrefix: ''
+				imgPrefix: '',
+				showDriverCertPopup: false
 			}
 		},
 		computed: {
 			...mapState(['userInfo'])
 		},
 		onLoad() {
+			this.showDriverCertPopup = this.userInfo.auditStatus == 99 && !uni.getStorageSync('driver_cert_notice_agreed')
 			this.getAreaList()
 			this.getCategoryList()
 			this.getVerifyDetail()
 		},
 		methods: {
+			acknowledgeDriverCertNotice() {
+				uni.setStorageSync('driver_cert_notice_agreed', true)
+				this.showDriverCertPopup = false
+			},
 			getMaritalStatusText(value) {
 				if (!value && value !== 0) return '璇烽�夋嫨'
 				const item = this.maritalOptions.find(option => option.value === String(value))
@@ -371,6 +396,10 @@
 							this.vehicleForm.plateNumber = res.data.carCode || ''
 							this.vehicleForm.carType = res.data.carType || ''
 							this.vehicleForm.color = res.data.carColor || ''
+							if (this.carTypeList.length > 0) {
+								const selectedCarType = this.carTypeList.find(item => item.id === res.data.carType)
+								this.needLicense = selectedCarType && selectedCarType.otherField === 1
+							}
 							this.previewImages.idcardImg = res.data.idcardImg ? res.data.imgPrefix + res.data.idcardImg : ''
 							this.previewImages.idcardImgBack = res.data.idcardImgBack ? res.data.imgPrefix + res.data.idcardImgBack : ''
 							this.form.carImgUrls = (res.data.carImgList || []).map(item => item.fileurl)
@@ -395,7 +424,7 @@
 					uni.showToast({ title: `鏈�澶氫笂浼�${maxCount}寮燻, icon: 'none' })
 					return
 				}
-				uni.chooseImage({
+				chooseImageWithNotice({
 					count: maxCount,
 					sizeType: ['compressed'],
 					sourceType: ['album', 'camera'],
@@ -405,7 +434,7 @@
 						const tempFilePaths = allTempPaths.slice(0, remaining)
 						this.uploadFiles(field, tempFilePaths, maxCount)
 					}
-				})
+				}).catch(() => {})
 			},
 			uploadFiles(field, tempFilePaths, maxCount) {
 				const uploadPath = this.uploadPaths[field]
@@ -485,6 +514,10 @@
 								text: item.name
 							}
 						})]
+						if (this.vehicleForm.carType) {
+							const selectedCarType = this.carTypeList.find(item => item.id === this.vehicleForm.carType)
+							this.needLicense = selectedCarType && selectedCarType.otherField === 1
+						}
 					}
 				})
 			},
@@ -496,6 +529,9 @@
 			confirmCarType(e) {
 				const { id, text } = e.value[0]
 				this.vehicleForm.carType = id
+				const selectedCarType = this.carTypeList.find(item => item.id === id)
+				console.log(selectedCarType)
+				this.needLicense = selectedCarType && selectedCarType.otherField === '1'
 				this.showCarTypePicker = false
 			},
 			openDatePicker(mode) {
@@ -652,7 +688,7 @@
 					uni.showToast({ title: '璇蜂笂浼犺溅杈嗙収鐗�', icon: 'none' })
 					return false
 				}
-				if (this.form.licenseImgUrls.length === 0) {
+				if (this.needLicense && this.form.licenseImgUrls.length === 0) {
 					uni.showToast({ title: '璇蜂笂浼犻┚椹惰瘉鐓х墖', icon: 'none' })
 					return false
 				}
@@ -689,6 +725,11 @@
 				uni.pageScrollTo({
 					scrollTop: 0,
 					duration: 0
+				})
+			},
+			openAgreement(type) {
+				uni.navigateTo({
+					url: '/pages/agreement/agreement?type=' + type
 				})
 			}
 		}
@@ -864,6 +905,12 @@
 			line-height: 1.6;
 			color: #98a0ad;
 		}
+
+		&__agreement-link {
+			font-size: 22rpx;
+			line-height: 1.6;
+			color: #106EFA;
+		}
 	}
 
 	.driver-cert-card {
@@ -1003,7 +1050,12 @@
 
 		&__upload-img {
 			width: 100%;
+			height: 100%;
 			border-radius: 8rpx;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			overflow: hidden;
 		}
 
 		&__upload-remove {
@@ -1028,4 +1080,44 @@
 			color: #b7bdc7;
 		}
 	}
-</style>
\ No newline at end of file
+
+	.driver-cert-notice {
+		width: 620rpx;
+		padding: 48rpx 36rpx 36rpx;
+		background: #ffffff;
+		border-radius: 24rpx;
+		box-sizing: border-box;
+
+		&__title {
+			display: block;
+			text-align: center;
+			font-size: 34rpx;
+			font-weight: 600;
+			color: #222222;
+		}
+
+		&__content {
+			display: block;
+			margin-top: 28rpx;
+			font-size: 28rpx;
+			line-height: 1.7;
+			color: #555555;
+		}
+
+		&__button {
+			margin-top: 40rpx;
+			width: 100%;
+			height: 88rpx;
+			line-height: 88rpx;
+			border-radius: 44rpx;
+			background: #106efa;
+			font-size: 28rpx;
+			color: #ffffff;
+			padding: 0;
+
+			&::after {
+				border: 0;
+			}
+		}
+	}
+</style>

--
Gitblit v1.9.3