From 202d13acd6f02b6573213e49326bc1f092d57b99 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期五, 12 九月 2025 18:22:13 +0800
Subject: [PATCH] 优化

---
 small-program/pages/freight/freight.vue |  255 ++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 181 insertions(+), 74 deletions(-)

diff --git a/small-program/pages/freight/freight.vue b/small-program/pages/freight/freight.vue
index b6c615e..d0f17e9 100644
--- a/small-program/pages/freight/freight.vue
+++ b/small-program/pages/freight/freight.vue
@@ -27,7 +27,7 @@
 				<view class="list-item-row" @click="show2 = true">
 					<view class="list-item-row-label">鐢ㄨ溅鏃堕棿<b>*</b></view>
 					<view class="list-item-row-val">
-						<text :style="{ color: form.startDate ? '#111111' : '' }">{{form.startDate ? form.startDate + ' 鑷� ' + form.endDate + ' (' + form.priceNum1 + '澶�) ' : '璇烽�夋嫨'}}</text>
+						<text :style="{ color: form.startDate ? '#111111' : '' }">{{form.startDate ? form.startDate + ' 鑷� ' + form.endDate + ' (' + form.totalDays + '澶�) ' : '璇烽�夋嫨'}}</text>
 						<u-icon name="arrow-right" color="#111111" size="16"></u-icon>
 					</view>
 				</view>
@@ -91,34 +91,40 @@
 					<view class="list-item-row">
 						<view class="list-item-row-label">杩愯緭閲嶉噺/鏁伴噺<b>*</b></view>
 						<view class="list-item-row-val">
-							<input type="text" v-model="form.transportNum" placeholder="璇疯緭鍏�" />
-							<text @click="show4 = true">{{form.transportUnit}}</text>
-							<u-icon name="arrow-down" color="#111111" size="16"></u-icon>
+							<input type="digit" style="flex: 3;" v-model="form.transportNum" placeholder="璇疯緭鍏�" />
+							<!-- <view @click="show4 = true" style="width: 100rpx; flex-shrink: 0; display: flex; align-items: center; justify-content: flex-end;">
+								<text>{{form.transportUnit}}</text>
+								<u-icon name="arrow-down" color="#111111" size="16"></u-icon>
+							</view> -->
+							<view  style="flex: 1;" :class="form.transportUnit ==='涓�' ? 'val-cate-item val-active' : 'val-cate-item'"   @click="form.transportUnit = '涓�'">涓�</view>
+							<view  style="flex: 1;" :class="form.transportUnit ==='鏂�' ? 'val-cate-item val-active' : 'val-cate-item'"   @click="form.transportUnit = '鏂�'">鏂�</view>
 						</view>
+						 
 					</view>
-					<view class="list-item-row" v-if="viewStatus">
+					<view class="list-item-row" >
 						<view class="list-item-row-label">闇�姹傝ˉ鍏�</view>
 						<view class="list-item-row-val">
 							<textarea cols="30" v-model="form.supplement" rows="10" placeholder="璇疯緭鍏�" maxlength="200"></textarea>
 						</view>
 					</view>
-					<view class="list-item-row" v-if="viewStatus">
+					<view class="list-item-row" >
 						<view class="list-item-row-label">鍥剧墖</view>
 						<view class="list-item-row-upload">
-							<view class="upload-item" v-for="(item, index) in form.multifileList" :key="index">
+							<view class="upload-item" v-for="(item, index) in form.multifileList" :key="index" @click="preview(index, form.multifileList)">
 								<image :src="item.url || item.fileurlFull" mode="widthFix"></image>
-								<image class="upload-item-dele" @click="form.multifileList.splice(index, 1)" src="/static/icon/ic_delete1@2x.png" mode="widthFix"></image>
+								<image class="upload-item-dele" @click.stop="form.multifileList.splice(index, 1)" src="/static/icon/ic_delete1@2x.png" mode="widthFix"></image>
 							</view>
 							<view class="upload-item" @click="uploadImg">
 								<u-icon name="plus" color="#999999" size="24"></u-icon>
 								<text>鐐瑰嚮涓婁紶</text>
 							</view>
+							<view style="width: 215rpx; height: 0;"></view>
 						</view>
 					</view>
-					<view class="list-item-zk" @click="viewStatus = !viewStatus">
+					<!-- <view class="list-item-zk" @click="viewStatus = !viewStatus">
 						<text>{{viewStatus ? '鏀惰捣' : '琛ュ厖闇�姹�'}}</text>
 						<u-icon :name="viewStatus ? 'arrow-up' : 'arrow-down'" color="#00BC12" size="16"></u-icon>
-					</view>
+					</view> -->
 				</view>
 				<view class="list-item">
 					<view class="list-item-label">
@@ -126,19 +132,26 @@
 						<text>璐圭敤</text>
 					</view>
 					<view class="list-item-cate">
-						<view :class="item.id === form.carType ? 'list-item-cate-item active' : 'list-item-cate-item'" v-for="(item, index) in ff" :key="index" @click="form.carType = item.id">鎸夊ぉ浠樿垂</view>
+						<view :class="item.id === form.carType ? 'list-item-cate-item active' : 'list-item-cate-item'" v-for="(item, index) in ff" :key="index" @click="form.carType = item.id">{{item.name}}</view>
 					</view>
-					<view class="list-item-row">
-						<view class="list-item-row-label">澶╂暟</view>
+					<view class="list-item-row" v-if="form.carType==0">
+						<view class="list-item-row-label">鐢ㄨ溅澶╂暟</view>
 						<view class="list-item-row-val">
-							<input type="number" v-model="form.priceNum1" disabled placeholder="璇疯緭鍏�" />
+							<input type="digit" v-model="form.totalDays" disabled placeholder="" />
 							<text>澶�</text>
+						</view>
+					</view>
+					<view class="list-item-row" v-if="form.carType==1">
+						<view class="list-item-row-label">鐢ㄨ溅娆℃暟<b>*</b></view>
+						<view class="list-item-row-val">
+							<input type="digit" v-model="form.priceNum1"  @input="getPrice"  placeholder="璇疯緭鍏�" />
+							<text>娆�</text>
 						</view>
 					</view>
 					<view class="list-item-row">
 						<view class="list-item-row-label">璐圭敤鏍囧噯<b>*</b></view>
 						<view class="list-item-row-val">
-							<input type="number" @blur="getPrice" v-model="form.price" placeholder="璇疯緭鍏�" />
+							<input type="digit" @input="getPrice"  v-model="form.price" placeholder="璇疯緭鍏�" />
 							<text>{{form.priceUnit}}</text>
 						</view>
 					</view>
@@ -173,10 +186,10 @@
 					<text>鍏�</text>
 				</view>
 			</view>
-			<view class="footer-bottom">
-				<div class="footer-bottom-btn" @click="submit">
-					<text>绔嬪嵆涓嬪崟</text>
-					<text>锛堟湇鍔″畬鎴愬悗浠樻锛�</text>
+			<view class="footer-bottom"> 
+				<div class="footer-bottom-btn" @click="submit" >
+					<text>{{form.id?'纭淇敼':'绔嬪嵆涓嬪崟'}}</text>
+					<text v-if="!form.id">锛堟湇鍔″畬鎴愬悗浠樻锛�</text>
 				</div>
 			</view>
 			<view style="width: 100%; height: env(safe-area-inset-bottom);"></view>
@@ -220,6 +233,7 @@
 		<u-calendar
 			:show="show2"
 			color="#00BC12"
+			 :allowSameDay="true"
 			mode="range"
 			@close="show2 = false"
 			@confirm="confirmDate" />
@@ -259,6 +273,7 @@
 					categoryName: '',
 					wayInfoDTOList: [],
 					priceNum1: '',
+					totalDays:null,
 					priceNum2: 1,
 					transportNum: '',
 					transportTypeId: '',
@@ -282,7 +297,7 @@
 				],
 				dw: [['涓�', '鏂�']],
 				carArr: [],
-				viewStatus: false
+				viewStatus: true
 			};
 		},
 		watch: {
@@ -293,6 +308,7 @@
 					} else if (news === 1) {
 						this.form.priceUnit = '鍏�/娆�'
 					}
+					this.getPrice()
 				}
 			}
 		},
@@ -304,6 +320,7 @@
 				}).then(res => {
 					if (res.code === 200) {
 						this.info = res.data
+						console.log(res.data.totalDays)
 						for (const key in this.form) {
 							this.form[key] = res.data[key]
 						}
@@ -318,12 +335,15 @@
 				})
 			} else {
 				const res = uni.getStorageSync('carData');
+				console.log(res)
 				this.form.linkPhone = this.userInfo.telephone
+				this.form.linkName = this.userInfo.name
 				this.form.startDate = res.startDate
 				this.form.endDate = res.endDate
 				this.form.lat = res.lat
 				this.form.lgt = res.lgt
-				this.form.priceNum1 = res.days
+				this.form.totalDays = res.days
+				this.form.priceNum1=res.days
 				this.form.categoryId = res.categoryId
 				this.form.categoryName = res.categoryName
 				this.form.location = res.location
@@ -336,12 +356,27 @@
 			this.getCategoryLists()
 		},
 		methods: {
+			preview(current, arr) {
+				let urls = arr.map(item => item.url || item.fileurlFull)
+				uni.previewImage({ current, urls })
+			},
+			handleInputPrice(e) {
+				 try{
+					 this.form.price = Number(this.form.price).toFixed(3) 
+				 }catch(e){
+					 this.form.price =null
+				 } 
+			},
 			confirmDw(e) {
 				this.form.transportUnit = e.value[0]
 				this.show4 = false
 			},
 			// 鎻愪氦璁㈠崟
 			submit() {
+				var that = this;
+				if (!this.form.carUnit) {
+					return uni.showToast({ title: '璇烽�夋嫨璐ц溅鍨嬪彿', icon: 'none' })
+				}
 				if (!this.form.transportTypeName) {
 					return uni.showToast({ title: '璇烽�夋嫨杩愯緭鍝佺', icon: 'none' })
 				}
@@ -357,52 +392,99 @@
 				if (!this.form.linkPhone) {
 					return uni.showToast({ title: '璇疯緭鍏ヨ仈绯荤數璇�', icon: 'none' })
 				}
-				this.$u.api.release({ 
-					...this.form,
-					price: Number(this.form.price) * 100,
-					wayInfoDTOList: [
-						{
-							lat: this.form.lat,
-							lgt: this.form.lgt,
-							location: this.form.location
-						},
-						...this.form.wayInfoDTOList,
-						{
-							lat: this.form.latEnd,
-							lgt: this.form.lgtEnd,
-							location: this.form.locationEnd
+				if (!that.form.id) {
+					uni.requestSubscribeMessage({
+						tmplIds: ['oVjOBLcHxIlGzOMJsdInmgI5CHGXh-UTvMzQqfFOnIg','AA97cHjvlPiNO4viMkVe4JifCf9TD5b5Eb7s6El3VS8'],
+						success(res) {
+							if(that.form.carType == 0){
+								that.form.priceNum1 = that.form.totalDays
+							}
+							that.$u.api.release({
+								...that.form,
+								price: Number(that.form.price) * 100,
+								wayInfoDTOList: [
+									{
+										lat: that.form.lat,
+										lgt: that.form.lgt,
+										location: that.form.location
+									},
+									...that.form.wayInfoDTOList,
+									{
+										lat: that.form.latEnd,
+										lgt: that.form.lgtEnd,
+										location: that.form.locationEnd
+									}
+								]
+							}).then(res => {
+								if (res.code == 200) {
+									uni.navigateTo({
+										url: `/pages/success/success?orderId=${res.data.id}`
+									})
+								}
+							})
 						}
-					]
-				}).then(res => {
-					if (res.code == 200) {
-						uni.navigateTo({
-							url: `/pages/success/success?orderId=${res.data.id}`
-						})
-					}
-				})
+					})
+				} else {
+					// uni.requestSubscribeMessage({
+						// tmplIds: ['3YSC7gouRlSjHXz4CrWOGFzPmGwEBtFj4snwdfMvKHk','AA97cHjvlPiNO4viMkVe4JifCf9TD5b5Eb7s6El3VS8'],
+						// success(res) {
+							that.$u.api.updateOrder({
+								...that.form,
+								price: Number(that.form.price) * 100,
+								wayInfoDTOList: [
+									{
+										lat: that.form.lat,
+										lgt: that.form.lgt,
+										location: that.form.location
+									},
+									...that.form.wayInfoDTOList,
+									{
+										lat: that.form.latEnd,
+										lgt: that.form.lgtEnd,
+										location: that.form.locationEnd
+									}
+								]
+							}).then(res => {
+								if (res.code == 200) {
+									uni.showToast({
+										title: '淇敼鎴愬姛',
+										icon: 'success',
+										mask: true,
+										duration: 2000
+									})
+									setTimeout(() => {
+										uni.navigateBack({ delta: 1 });
+										// uni.$emit('refresh')
+									}, 1500)
+								}
+							})
+					// 	}
+					// })
+				}
 			},
 			uploadImg() {
 				var that = this;
 				uni.chooseImage({
 					success: (chooseImageRes) => {
-						const tempFilePaths = chooseImageRes.tempFilePaths;
-						uni.uploadFile({
-							url: this.$baseUrl + '/web/public/upload',
-							filePath: tempFilePaths[0],
-							name: 'file',
-							formData: {
-								'folder': 'orders'
-							},
-							success: (uploadFileRes) => {
-								const res = JSON.parse(uploadFileRes.data)
-								that.form.multifileList.push({
-									fileurl: res.data.imgaddr,
-									name: res.data.originname,
-									url: res.data.url,
-									type: 0
-								})
-							}
-						});
+						for (let i = 0; i < chooseImageRes.tempFilePaths.length; i++) {
+							uni.uploadFile({
+								url: this.$baseUrl + '/web/public/upload',
+								filePath: chooseImageRes.tempFilePaths[i],
+								name: 'file',
+								formData: {
+									'folder': 'orders'
+								},
+								success: (uploadFileRes) => {
+									const res = JSON.parse(uploadFileRes.data)
+									that.form.multifileList.push({
+										fileurl: res.data.imgaddr,
+										name: res.data.originname,
+										url: res.data.url,
+										type: 0
+									})
+								}
+							});
+						}
 					}
 				});
 			},
@@ -410,10 +492,11 @@
 			getPrice() {
 				if (this.form.price && this.form.priceNum1 && this.form.priceNum2) {
 					this.$u.api.getTotal({
-						price: Number(this.form.price) * 100,
+						price: Number(this.form.price).toFixed(2) * 100,
 						priceUnit: this.form.priceUnit,
-						priceNum1: this.form.priceNum1,
+						priceNum1: this.form.carType!=1?this.form.totalDays:this.form.priceNum1,
 						priceNum2: this.form.priceNum2,
+						carType:this.form.carType ,
 						type: 1
 					}).then(res => {
 						if (res.code === 200) {
@@ -462,8 +545,10 @@
 			confirmDate(e) {
 				this.form.startDate = e[0]
 				this.form.endDate = e[e.length - 1]
-				this.form.priceNum1 = e.length;
+				let time = this.form.startDate == this.form.endDate ? 1 : 0
+				this.form.totalDays = e.length - time;
 				this.show2 = false
+				this.getPrice()
 			},
 			addAddr() {
 				this.form.wayInfoDTOList.push({
@@ -478,15 +563,16 @@
 						if ([2].includes(type)) {
 							this.form.latitude = res.latitude
 							this.form.longitude = res.longitude
-							this.form.address = res.address
+							this.form.location = res.name || res.address
+							this.form.address = res.name || res.address
 						} else if (type === 3) {
-							this.form.locationEnd = res.address
+							this.form.locationEnd = res.name || res.address
 							this.form.latEnd = res.latitude
 							this.form.lgtEnd = res.longitude
-						} else if (type === 4) {
-							this.form.wayInfoDTOList[0].lat = res.latitude
-							this.form.wayInfoDTOList[0].lgt = res.longitude
-							this.form.wayInfoDTOList[0].location = res.address
+						} else if (type === 4) { 
+							this.form.wayInfoDTOList[index].lat = res.latitude
+							this.form.wayInfoDTOList[index].lgt = res.longitude
+							this.form.wayInfoDTOList[index].location = res.name || res.address
 						}
 					}
 				});
@@ -851,21 +937,22 @@
 						width: 100%;
 						display: flex;
 						align-items: center;
+						justify-content: space-between;
 						flex-wrap: wrap;
 						padding: 30rpx 0;
 						box-sizing: border-box;
 						.upload-item {
-							width: 156rpx;
-							height: 156rpx;
+							width: 215rpx;
+							height: 215rpx;
 							display: flex;
 							align-items: center;
 							flex-direction: column;
 							justify-content: center;
 							background: #F8F9FB;
 							border-radius: 8rpx;
-							margin-right: 20rpx;
 							border: 2rpx solid #EEEEEE;
 							position: relative;
+							margin-bottom: 15rpx;
 							&:last-child {
 								margin: 0 !important;
 							}
@@ -889,13 +976,14 @@
 						}
 					}
 					.list-item-row-val {
-						width: 100%;
+						// width: 100%;
 						padding: 30rpx 0;
 						box-sizing: border-box;
 						display: flex;
 						align-items: center;
 						justify-content: space-between;
 						text {
+							// width: 80%;
 							flex-shrink: 0;
 							font-weight: 400;
 							font-size: 30rpx;
@@ -914,6 +1002,25 @@
 							font-size: 30rpx;
 							color: #111111;
 						}
+						.val-active {
+							background: #00BC12 !important;
+							color: #ffffff !important;
+						}
+						.val-cate-item {
+							width: 208rpx;
+							height: 72rpx;
+							line-height: 72rpx;
+							text-align: center;
+							font-weight: 400;
+							font-size: 28rpx;
+							color: #333333;
+							background: #EEEEEE;
+							border-radius: 36rpx;
+							margin-right: 24rpx;
+							&:last-child {
+								margin: 0 !important;
+							}
+						}
 					}
 				}
 			}

--
Gitblit v1.9.3