From 309cc3fe6303d8464951063e89fc9d623915501e Mon Sep 17 00:00:00 2001
From: zhangwei <1504152376@qq.com>
Date: 星期一, 10 三月 2025 16:23:35 +0800
Subject: [PATCH] -

---
 src/pages/delivergoods/feedback.vue |  384 ++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 266 insertions(+), 118 deletions(-)

diff --git a/src/pages/delivergoods/feedback.vue b/src/pages/delivergoods/feedback.vue
index a255b3b..7018acb 100644
--- a/src/pages/delivergoods/feedback.vue
+++ b/src/pages/delivergoods/feedback.vue
@@ -5,14 +5,6 @@
 				<up-search placeholder="璇风偣鍑婚�夋嫨鏃ユ湡" @click='clickTime' @clear='init' disabled v-model="workTime"
 					search-icon="calendar" @search='init'></up-search>
 			</view>
-			<!-- <view class="coreshop-ff content c-p-10 chuany-flex chuany-justify-between">
-				<view class="chuany-width82">
-					<up-search placeholder="璇风偣鍑婚�夋嫨鍙告満" @click="clickAction('driver7')" @clear='init' disabled
-						@change='init' action-text="鏌ヨ" v-model="deliverKeyName" @search='init'
-						@custom='init'></up-search>
-				</view>
-				<up-text align="right" text='閫佽揣瀹夋帓' size='14' @click="() => show7 = true"></up-text>
-			</view> -->
 		</view>
 	</up-sticky>
 	<view class="c-p-b-100">
@@ -22,7 +14,7 @@
 				<view class="coreshop-ff chuany-bradius20">
 					<view class="chuany-font26">
 						<view class="chuany-flex chuany-justify-between">
-							<text class="chuany-width7">{{index+1}}</text>
+							<text class="chuany-width5">{{index+1}}</text>
 							<view class="chuany-width15">
 								{{$util.formatDate(item.deliverTime,'riqi')}}
 							</view>
@@ -47,47 +39,64 @@
 			</up-empty>
 		</view>
 		<up-modal title="瀹屾垚閫佽揣" :show="show7" showCancelButton @confirm="confirmSave" @cancel='cancelModal'
-			:asyncClose="true">
-			<up-form labelPosition="left" :model="arrangeInfo" ref="formRef" labelWidth='140rpx'>
-				<!-- <up-form-item label="閫佽揣鏃ユ湡" prop="deliverTime" required :borderBottom='false' ref="item1"
-					@click="clickShouTime">
-					<up-datetime-picker hasInput @confirm='confirmDate' :show="shougHuoshow" v-model="deliverTime"
-						mode="date" placeholder="鐐瑰嚮閫夋嫨宸ヤ綔鏃ユ湡" :minDate='Number(new Date(minDate))'
-						@cancel='() => shougHuoshow = false'></up-datetime-picker>
-				</up-form-item> -->
-
+			:asyncClose="true" ref='modalFinish'>
+			<up-form labelPosition="left" :model="arrangeInfo" ref="formFinishRef" labelWidth='140rpx'>
 				<up-form-item label="鏀惰揣鍗曚綅" prop="buyerId" :borderBottom='false' ref="item1">
 					<up-input v-model="arrangeInfo.companyName" placeholder="璇烽�夋嫨鏀惰揣鍗曚綅" border="none" readonly>
-						<!-- <template #suffix>
-							<up-button @tap="clickAction" text="鐐瑰嚮閫夋嫨" type="primary" size="mini"></up-button>
-						</template> -->
 					</up-input>
 				</up-form-item>
-				<up-form-item label="閫佽揣鎯呭喌" prop="driverId" :borderBottom='false' @click="clickAction" ref="item1">
-					<up-input v-model="selectAc" disabled border="none" disabledColor="#ffffff"
-						placeholder="璇烽�夋嫨閫佽揣鎯呭喌"></up-input>
-				</up-form-item>
-				<!-- <up-form-item label="鑱旂郴浜�" prop="lianxiren" :borderBottom='false' ref="item1">
-					<up-input v-model="arrangeInfo.lianxiren" border="none" placeholder="璇疯緭鍏ヨ仈绯讳汉"></up-input>
-				</up-form-item>
-				<up-form-item label="鑱旂郴鐢佃瘽" prop="dianhua" required :borderBottom='false' ref="item1">
-					<up-input v-model="arrangeInfo.dianhua" border="none" placeholder="璇疯緭鍏ヨ仈绯荤數璇�"></up-input>
-				</up-form-item>
-				<up-form-item label="閫佽揣鍦板潃" prop="dizhi" required :borderBottom='false' ref="item1">
-					<up-input v-model="arrangeInfo.dizhi" border="none" placeholder="璇疯緭鍏ラ�佽揣鍦板潃"></up-input>
-				</up-form-item> -->
-				<up-form-item label="鎰忚鍙嶉" prop="wentifankui" :borderBottom='false' ref="item1">
-					<up-textarea v-model="arrangeInfo.wentifankui" border="none" placeholder="璇疯緭鍏ユ剰瑙佸弽棣�"></up-textarea>
+				<up-form-item label="鎰忚鍙嶉" prop="wentifankui" labelPosition='top' :borderBottom='false' ref="item1">
+					<up-input v-model="arrangeInfo.wentifankui" border="none" placeholder="璇疯緭鍏ユ剰瑙佸弽棣�"></up-input>
 				</up-form-item>
 
-				<up-form-item label="閫佽揣鍗�" prop="idCardFace">
+				<up-form-item label="閫佽揣鍗�" prop="attachments" required>
 					<tem-upload-file immediate :url="`https://appimchat.oss-cn-chengdu.aliyuncs.com`" ref="uploadB"
 						:isSource='true' fileType="all" @success="success('File',$event)" @error="errorInvoice"
 						@complete="completeInvoice('',$event)">
 					</tem-upload-file>
-					<!-- <template #right>
-						<up-icon name="arrow-right"></up-icon>
-					</template> -->
+				</up-form-item>
+			</up-form>
+		</up-modal>
+		<up-modal title="鍑鸿溅鎵撳崱" :show="showClockIn" showCancelButton @confirm="confirmClockSave" @cancel='cancelModal'
+			:asyncClose="true" ref='clockInModal'>
+			<up-form labelPosition="left" :model="clockInfo" ref="formClockInRef" labelWidth='140rpx'>
+				<up-form-item label="杞﹁締妫�鏌�" prop="carConditionAttachments" v-if="clockInfo.clockType=='ClockIn'"
+					required>
+					<tem-upload-file immediate btnText="涓婁紶鐓х墖" :url="`https://appimchat.oss-cn-chengdu.aliyuncs.com`"
+						ref="carCondition" :isSource='true' fileType="all"
+						@success="successClock('carCondition',$event)" @error="errorInvoice"
+						@complete="completeInvoice('carCondition',$event)">
+					</tem-upload-file>
+				</up-form-item>
+				<template v-else>
+					<up-form-item label="瑁呰揣鐓х墖" prop="attachments" required>
+						<tem-upload-file immediate btnText="涓婁紶鐓х墖" :url="`https://appimchat.oss-cn-chengdu.aliyuncs.com`"
+							ref="zhuanghuo" :isSource='true' fileType="all" @success="successClock('zhuanghuo',$event)"
+							@error="errorInvoice" @complete="completeInvoice('zhuanghuo',$event)">
+						</tem-upload-file>
+					</up-form-item>
+					<up-form-item label="鏈璐у師鍥�" prop="emptyCause" :borderBottom='false' @click="clickAction"
+						labelWidth='160rpx' ref="item1">
+						<up-input v-model="clockInfo.emptyCause" disabled border="none" disabledColor="#ffffff"
+							placeholder="璇烽�夋嫨鏈璐у師鍥�"></up-input>
+					</up-form-item>
+				</template>
+				<up-form-item label="閲岀▼琛�" required prop="mileage" :borderBottom='false' ref="item1">
+					<up-input v-model="clockInfo.mileage" placeholder="璇疯緭鍏ラ噷绋�" border="none" type="digit">
+						<template #suffix>
+							<text>km</text>
+						</template>
+					</up-input>
+				</up-form-item>
+				<up-form-item label="閲岀▼鐓х墖" required prop="mileageImg" :borderBottom='false' ref="item1">
+					<tem-upload-file immediate max="1" btnText="涓婁紶鐓х墖"
+						:url="`https://appimchat.oss-cn-chengdu.aliyuncs.com`" ref="licheng" :isSource='true'
+						fileType="all" @success="successClock('licheng',$event)" @error="errorInvoice"
+						@complete="completeInvoice('licheng',$event)">
+					</tem-upload-file>
+				</up-form-item>
+				<up-form-item label="杞﹀喌澶囨敞" prop="carCondition" labelPosition='top' :borderBottom='false' ref="item1">
+					<up-input v-model="clockInfo.carCondition" border="none" placeholder="璇疯緭鍏ヨ溅鍐靛娉�"></up-input>
 				</up-form-item>
 			</up-form>
 		</up-modal>
@@ -96,6 +105,14 @@
 		<up-action-sheet :show="showActions" :actions="actions" title="璇烽�夋嫨" @close="showActions = false"
 			@select="selectItem">
 		</up-action-sheet>
+		<view class="tabbtns chuany-flex chuany-justify-between">
+			<view class="chuany-width45">
+				<up-button type="primary" text="鍑鸿溅鎵撳崱" @click="clockIn('ClockIn')"></up-button>
+			</view>
+			<view class="chuany-width45">
+				<up-button type="success" text="涓嬬彮鎵撳崱" @click="clockIn('Clockout')"></up-button>
+			</view>
+		</view>
 	</view>
 </template>
 
@@ -121,64 +138,65 @@
 				editItem: {},
 				isLoading: false,
 				show7: false,
+				showClockIn: false,
 				showActions: false,
 				driverName: '',
+				// actions: [{
+				// 	name: '鏈畬鎴�',
+				// 	id: 'Reject'
+				// }, {
+				// 	name: '宸插畬鎴�',
+				// 	id: 'Delivered'
+				// }],
 				actions: [{
-					name: '鏈畬鎴�',
-					id: 'Reject'
+					name: '璐х墿涓嶉綈',
+					id: '璐х墿涓嶉綈'
 				}, {
-					name: '宸插畬鎴�',
-					id: 'Delivered'
+					name: '鏈畬宸�',
+					id: '鏈畬宸�'
 				}],
-				selectAc: '宸插畬鎴�',
+				// selectAc: '宸插畬鎴�',
 				minDate: this.$util.formatDate(new Date(), null, -7),
 				maxDate: this.$util.formatDate(new Date(), null, 7),
 				deliverTime: Number(new Date(this.$util.formatDate(new Date(), null, 1))),
 				arrangeInfo: {
 					keyid: '',
-					// deliverTime: this.$util.formatDate(new Date(), null, 1),
-					// driverId: '',
-					// buyerId: '',
-					// dianhua: '',
 					wentifankui: '',
-					// lianxiren: '',
-					Deliveredstatus: 'Delivered ',
+					companyName: '',
 					attachments: [],
-					companyName:''
+					Deliveredstatus:'Delivered'
 				},
 				rules: {
-					'deliverTime': {
+					'mileage': {
 						type: 'string',
 						required: true,
-						message: '璇烽�夋嫨鏃ユ湡',
+						message: '璇疯緭鍏ラ噷绋�',
 						trigger: ['blur', 'change']
 					},
-					'arrangeInfo.driverId': {
-						type: 'string',
-						max: 1,
+					'attachments': {
+						type: 'array',
 						required: true,
-						message: '璇烽�夋嫨鍙告満',
+						message: '璇蜂笂浼犺璐х収鐗�',
 						trigger: ['blur', 'change']
 					},
-					'arrangeInfo.dianhua': {
-						type: 'string',
-						max: 1,
+					'carConditionAttachments': {
+						type: 'array',
 						required: true,
-						message: '璇疯緭鍏ヨ仈绯荤數璇�',
+						message: '璇蜂笂浼犺溅杈嗘鏌ョ収鐗�',
 						trigger: ['blur', 'change']
 					},
-					'arrangeInfo.dizhi': {
+					'mileageImg': {
 						type: 'string',
-						max: 1,
 						required: true,
-						message: '璇疯緭鍏ラ�佽揣鍦板潃',
+						message: '璇蜂笂浼犻噷绋嬬収鐗�',
 						trigger: ['blur', 'change']
 					},
-					'arrangeInfo.wentifankui': {
-						type: 'string',
-						max: 1,
+				},
+				rules1: {
+					'attachments': {
+						type: 'array',
 						required: true,
-						message: '璇疯緭鍏ラ�佽揣浜嬬敱',
+						message: '璇蜂笂浼犻�佽揣鍗曠収鐗�',
 						trigger: ['blur', 'change']
 					},
 				},
@@ -191,14 +209,23 @@
 				sevenDaysDriver: [],
 				deliverKeyID: '',
 				deliverKeyName: '',
-				companyName:''
+				companyName: '',
+				clockInfo: {
+					emptyCause: '',
+					carConditionAttachments: [],
+					attachments: [],
+					mileageImg: '',
+					clockType: '', //ClockIn ,Clockout
+					carCondition: ''
+				},
 			}
 		},
 		onShow() {
 			this.init()
 		},
 		onReady() {
-			this.$refs.formRef.setRules(this.rules);
+			this.$refs.formClockInRef.setRules(this.rules);
+			this.$refs.formFinishRef.setRules(this.rules1);
 		},
 		onLoad() {
 			this.Getdrivers()
@@ -219,6 +246,10 @@
 			uni.stopPullDownRefresh();
 		},
 		methods: {
+			clockIn(text) {
+				this.clockInfo.clockType = text
+				this.showClockIn = true
+			},
 			success(text, e) {
 				//e.res 涓烘湇鍔″櫒杩斿洖鏁版嵁
 				//涓婁紶鎴愬姛鍥炶皟锛屽鐞嗘湇鍔″櫒杩斿洖鏁版嵁銆愭澶勬牴鎹疄闄呰繑鍥炴暟鎹繘琛屽鐞嗐��
@@ -226,11 +257,64 @@
 				let res = e.res
 				if (res.statusCode == 200) {
 					obj.PlanAttachment = res.data
+					this.arrangeInfo.attachments.push(obj)
+					this.$refs.uploadB.urls.push(res.data)
+					this.$refs.uploadB.urls = this.$refs.uploadB.urls.filter(item => {
+						return item.indexOf('https') !== -1
+					})
+					this.$refs.uploadB.status.push('success')
+					this.$refs.uploadB.status.length = this.$refs.uploadB.urls.length
 				} else {
 					uni.$u.toast(res.error)
 					this.$refs.uploadB.deleteImage()
 				}
-				this.arrangeInfo.attachments.push(obj)
+				console.log(this.arrangeInfo.attachments);
+			},
+			successClock(text, e) {
+				let obj = {}
+				//e.res 涓烘湇鍔″櫒杩斿洖鏁版嵁
+				//涓婁紶鎴愬姛鍥炶皟锛屽鐞嗘湇鍔″櫒杩斿洖鏁版嵁銆愭澶勬牴鎹疄闄呰繑鍥炴暟鎹繘琛屽鐞嗐��
+				let res = e.res
+				// let res = JSON.parse(e.res.data.replace(/\ufeff/g, "") || "{}")
+				if (res.statusCode == 200) {
+					if (res.data && text == 'carCondition') {
+						obj.planAttachment = res.data //杞﹁締妫�鏌ョ収鐗�
+						this.$refs.carCondition.urls.push(res.data)
+						this.$refs.carCondition.urls = this.$refs.carCondition.urls.filter(item => {
+							return item.indexOf('https') !== -1
+						})
+						this.$refs.carCondition.status.push('success')
+						this.$refs.carCondition.status.length = this.$refs.carCondition.urls.length
+						console.log(this.$refs.carCondition.status);
+						this.clockInfo.carConditionAttachments.push(obj)
+					} else if (res.data && text == 'licheng') {
+						this.clockInfo.mileageImg = res.data //閲岀▼鐓х墖
+						this.$refs.licheng.urls.push(res.data)
+						this.$refs.licheng.urls = this.$refs.licheng.urls.filter(item => {
+							return item.indexOf('https') !== -1
+						})
+						this.$refs.licheng.status.push('success')
+						this.$refs.licheng.status.length = this.$refs.licheng.urls.length
+					} else {
+						obj.planAttachment = res.data //瑁呰揣鐓х墖
+						this.$refs.zhuanghuo.urls.push(res.data)
+						this.$refs.zhuanghuo.urls = this.$refs.zhuanghuo.urls.filter(item => {
+							return item.indexOf('https') !== -1
+						})
+						this.$refs.zhuanghuo.status.push('success')
+						this.$refs.zhuanghuo.status.length = this.$refs.zhuanghuo.urls.length
+						this.clockInfo.attachments.push(obj)
+					}
+				} else {
+					uni.$u.toast(res.error)
+					if (text == 'carCondition') {
+						this.$refs.carCondition.deleteImage()
+					} else if (text == 'licheng') {
+						this.$refs.licheng.deleteImage()
+					} else {
+						this.$refs.zhuanghuo.deleteImage()
+					}
+				}
 			},
 			GetDriversOfWithin7days() {
 				this.$api.GetDriversOfWithin7days().then(res => {
@@ -264,7 +348,7 @@
 			},
 			selectItem(item) {
 				this.arrangeInfo.Deliveredstatus = item.id
-				this.selectAc = item.name
+				// this.selectAc = item.name
 			},
 			getFirstDayOfMonth() {
 				var currentDate = new Date();
@@ -285,19 +369,8 @@
 				this.isEdit = true
 				this.$refs.uploadB.urls = []
 				this.$refs.uploadB.status = []
-				this.arrangeInfo = {
-					// deliverTime: this.$util.formatDate(new Date(), null, 1),
-					// driverId: item.driverId,
-					// buyerId: item.buyerId,
-					// dianhua: item.dianhua,
-					// wentifankui: item.wentifankui,
-					// lianxiren: item.lianxiren,
-					// dizhi: item.dizhi,
-					Deliveredstatus: 'Delivered',
-					attachments: item.attachments || [],
-					keyid: item.keyid,
-					companyName: item.companyName
-				}
+				this.arrangeInfo.keyid = item.keyid
+				this.arrangeInfo.companyName = item.companyName
 				this.show7 = true
 				// let obj = this.customerList.find(ite => {
 				// 	return ite.keyid == item.buyerId
@@ -341,17 +414,40 @@
 			//閫夋嫨鍥剧墖鎴栦笂浼犲畬鎴愭椂瑙﹀彂
 			completeInvoice(val, e) {
 				if (e.action == 'delete') {
+					if (val == 'licheng') {
+						this.clockInfo.mileageImg = ''
+						return
+					}
+					switch (val) {
+						case 'carCondition':
+							this.clockInfo.carConditionAttachments = []
+							break;
+						case 'zhuanghuo':
+							this.clockInfo.attachments = []
+							break;
+						default:
+							this.arrangeInfo.attachments = []
+							break;
+					}
 					// 鍒犻櫎澶勭悊
-					console.log(e, '0-0-0-');
-					// state.publicJob.workPlanAttachments = state.publicJob.workPlanAttachments.filter(item => {
-					// 	return item.attachmentType == (val == "Invoice" ? 2 : 1)
-					// })
-					// e.urls.forEach(item => {
-					// 	let obj = {}
-					// 	obj.attachmentType = val == "Invoice" ? 1 : 2
-					// 	obj.planAttachment = item //鍙戠エ
-					// 	state.publicJob.workPlanAttachments.push(obj)
-					// })
+					console.log(e.urls, 'e.urls', this.arrangeInfo.attachments);
+					e.urls.forEach(item => {
+						let obj = {}
+						obj.planAttachment = item //鍙戠エ
+						console.log(item);
+						switch (val) {
+							case 'carCondition':
+								this.clockInfo.carConditionAttachments.push(obj)
+								break;
+							case 'zhuanghuo':
+								this.clockInfo.attachments.push(obj)
+								break;
+							default:
+								this.arrangeInfo.attachments.push(obj)
+								break;
+						}
+					})
+					console.log(e, this.arrangeInfo, this.clockInfo, '0-0-0-');
 					return
 				}
 				// $util.pathToBase64(e.urls[0]).then(res => {
@@ -363,30 +459,69 @@
 				console.log(e, '--------------');
 			},
 			confirmSave() {
-				console.log(this.arrangeInfo);
-				this.$api.FinishDeliverPlan(this.arrangeInfo).then(res => {
-					if (res.code == 1) {
-						this.arrangeInfo = {
-							deliverTime: this.$util.formatDate(new Date(), null, 1),
-							driverId: '',
-							buyerId: '',
-							dianhua: '',
-							wentifankui: '',
-							lianxiren: '',
-							dizhi: '',
+				this.$refs.formFinishRef.validate().then(res => {
+					this.$api.FinishDeliverPlan(this.arrangeInfo).then(res => {
+						if (res.code == 1) {
+							this.arrangeInfo = {
+								keyid: '',
+								wentifankui: '',
+								companyName: '',
+								attachments: [],
+								Deliveredstatus:'Delivered'
+							}
+							this.show7 = false
+							this.driverName = ''
+							this.buyerName = ''
+							this.init()
+						} else {
+							this.$refs.modalFinish.loading = false
+							this.$util.showToast({
+								title: res.error
+							})
 						}
-						this.show7 = false
-						this.driverName = ''
-						this.buyerName = ''
-						this.init()
-					} else {
-						this.$util.showToast({
-							title: res.error
-						})
-					}
+					})
+				}).catch(errors => {
+					this.$refs.modalFinish.loading = false
 				})
 			},
+			confirmClockSave() {
+				console.log(this.clockInfo);
+				// if (!this.clockInfo.mileageImg) {
+				// 	this.$refs.clockInModal.loading = false
+				// 	return this.$util.showToast({
+				// 		title: '璇蜂笂浼犻噷绋嬬収鐗囷紒'
+				// 	})
+				// }
+				this.clockInfo = this.$util.removeEmptyValuesRecursive(this.clockInfo)
+				this.$refs.formClockInRef.validate().then(res => {
+					this.$api.Clock(this.clockInfo).then(res => {
+						if (res.code == 1) {
+							this.clockInfo = {
+								emptyCause: '',
+								carConditionAttachments: [],
+								mileageImg: '',
+								attachments: [],
+								clockType: '', //ClockIn ,Clockout
+								carCondition: ''
+							}
+							this.showClockIn = false
+							// this.init()
+						} else {
+							this.$util.showToast({
+								title: res.error
+							})
+							this.$refs.clockInModal.loading = false
+						}
+					})
+				}).catch(errors => {
+					this.$refs.clockInModal.loading = false
+				})
+
+
+			},
 			cancelModal() {
+				this.showClockIn = false
+				this.show7 = false
 				this.arrangeInfo = {
 					deliverTime: this.$util.formatDate(new Date(), null, 1),
 					driverId: '',
@@ -396,7 +531,14 @@
 					lianxiren: '',
 					dizhi: '',
 				}
-				this.show7 = false
+				this.clockInfo = {
+					emptyCause: '',
+					carConditionAttachments: [],
+					mileageImg: '',
+					attachments: [],
+					clockType: '', //ClockIn ,Clockout
+					carCondition: ''
+				}
 				this.driverName = ''
 				this.buyerName = ''
 			},
@@ -487,7 +629,7 @@
 	}
 </script>
 
-<style>
+<style lang="scss">
 	.u-textarea {
 		padding: 0 !important;
 	}
@@ -495,4 +637,10 @@
 	.u-form-item__body {
 		padding: 5px 0 !important;
 	}
+
+	.labelSty {
+		.u-form-item__body__left.data-v-98223e3d {
+			display: block;
+		}
+	}
 </style>
\ No newline at end of file

--
Gitblit v1.9.1