py 1 год назад
Родитель
Сommit
a0ef99c957

+ 3 - 1
common/css/common.css

@@ -569,7 +569,9 @@ image {
 .bgc-D5EDFB {
 	background-color: #D5EDFB;
 }
-
+.b-t-F9F9F9 {
+	border-top: 1rpx solid #F9F9F9;
+}
 .b-b-F9F9F9 {
 	border-bottom: 1rpx solid #F9F9F9;
 }

+ 1 - 1
pages-takeout/confirm-mod/select-address.vue

@@ -23,7 +23,7 @@
 						<view class="">
 							<view class="fs-34 fw-600 w556 mb-12">
 								<span v-if="item.is_default == 1" class="list-box-only fs-24 fc-FE9E11 text-align-center mr-8">默认</span>
-								{{item.address}}{{item.school_name}}{{item.dorm_name}}
+								{{item.school_name}}{{item.dorm_name}}{{item.address}}
 							</view>
 							<view class="p-b-20">
 								<span class="mr-24 fs-28 fc-9">{{item.consignee}}</span><span class="fs-28 fc-9">{{item.phone}}</span>

+ 23 - 15
pages-takeout/confirm-mod/time.vue

@@ -43,19 +43,27 @@
 			}
 		},
 		methods: {
-			getList(id) {
-				let school_id = uni.getStorageSync('school_id');
-				orderTime({
-					shop_id: id,
-					school_id: school_id
-				}).then((res) => {
-					if (res.code == 1) {
-						this.list = res.data
-						this.timeList = this.list[0].timeList;
-						this.time = this.timeList[0];
-						this.type = this.list[0].type;
-					}
-				})
+			getList(id, data) {
+				if (id && id != 0) {
+					let school_id = uni.getStorageSync('school_id');
+					orderTime({
+						shop_id: id,
+						school_id: school_id
+					}).then((res) => {
+						if (res.code == 1) {
+							this.list = res.data
+							this.timeList = this.list[0].timeList;
+							this.time = this.timeList[0];
+							this.type = this.list[0].type;
+						}
+					})
+				} else {
+					this.list = data
+					this.timeList = this.list[0].timeList;
+					this.time = this.timeList[0];
+					this.type = this.list[0].type;
+				}
+
 				console.log(this.list, '&&&&&&&&&&&&&&&&&&');
 				// if (this.list[0].timeList.length > 0) {
 				// 	this.timeList = this.list[0].timeList;
@@ -75,9 +83,9 @@
 					if (this.type != item.type) {
 						this.type = item.type;
 						this.time = '';
-						if(this.type == 2) {
+						if (this.type == 2) {
 							this.timeList = this.list[1].timeList;
-						}else {
+						} else {
 							this.timeList = this.list[0].timeList;
 						}
 					}

+ 81 - 0
pages-takeout/run-errands-mod/select-mod.vue

@@ -0,0 +1,81 @@
+<template>
+	<view class="">
+		<uni-popup ref="popSelect" type="bottom">
+			<view class="pop-box bgc-f ptb-24">
+				<view class="text-align-center fs-36 fw-600 box-title mb-32">
+					{{popTitleName}}
+					<uni-icons @click="closeCoupon" class="box-close" type="closeempty" size="20"></uni-icons>
+				</view>
+				<scroll-view :scroll-y="true" class="scroll-view-css" @scrolltolower="scrolltolower">
+					<view class="align-items-center flex-justify-space p-24 box-border-box b-b-EAEAEC"
+						v-for="(item,index) in list" :key="index" @click="selectClick(item)">
+						<view class="align-items-center">
+							<view class="fs-28 mr-24">
+								{{item.name}}
+							</view>
+							<view class="fs-26 fc-FB3D03">
+								¥{{item.price}}
+							</view>
+						</view>
+						<uni-icons v-if="item.item_id === select_id" type="checkbox-filled" size="22"
+							color="#4495FD"></uni-icons>
+					</view>
+				</scroll-view>
+			</view>
+		</uni-popup>
+	</view>
+</template>
+
+<script>
+	export default {
+		props: {
+			popTitleName: {}
+		},
+		components: {},
+		data() {
+			return {
+				list: [],
+				select_id: 0
+			};
+		},
+		onLoad(data) {},
+		mounted() {},
+		methods: {
+			getList(id, data) {
+				if (id && ia != 0) {
+					this.select_id = id
+				}
+				if (data) {
+					this.list = data
+					this.openPop()
+				}
+			},
+			selectClick(item) {
+				console.log(item, this.select_id);
+				if (item.item_id === this.select_id) {
+					return
+				}
+				this.select_id = item.item_id
+				this.$emit('selectData', item)
+				this.closeCoupon()
+			},
+			openPop() {
+				this.$refs.popSelect.open();
+			},
+			closeCoupon() {
+				this.$refs.popSelect.close();
+			},
+		},
+	}
+</script>
+
+<style lang="scss" scoped>
+	.pop-box {
+		max-height: 60vh;
+	}
+
+	.box-close {
+		position: absolute;
+		right: 22rpx;
+	}
+</style>

+ 211 - 8
pages-takeout/run-errands.vue

@@ -28,7 +28,11 @@
 						<text class="fc-ff3939">*</text>服务描述 :
 					</view>
 					<view class="textarea-box flex-1 bgc-F6F6F6 b-rad-16">
-						<textarea class="textarea" v-model="formData.serve_desc" maxlength='100' :placeholder="errandsData.desc" />
+						<textarea class="textarea" v-model="formData.serve_desc" maxlength='50'
+							:placeholder="errandsData.desc" />
+						<view class="fs-24 fc-6 tj-num">
+							{{formData.serve_desc.length}}/50
+						</view>
 					</view>
 				</view>
 				<view class="align-items-flex-start mb-20">
@@ -53,20 +57,111 @@
 						</view>
 					</view>
 				</view>
-				<view class="align-items-flex-start mb-20" v-if="errandsData.errands_id != 2">
+				<view class="align-items-flex-start mb-20">
 					<view class="fs-26 fc-3 mr-20 flex-shrink0 pt-15">
 						<text class="fc-ff3939">*</text>服务地址 :
 					</view>
 					<view class="textarea-box flex-1 bgc-F6F6F6 b-rad-16">
-						<textarea class="textarea" v-model="formData.serve_address" maxlength='100' :placeholder="errandsData.add_str" />
+						<textarea class="textarea" cursor-spacing='30' v-model="formData.serve_address" maxlength='50'
+							:placeholder="errandsData.add_str" />
+						<view class="fs-24 fc-6 tj-num">
+							{{formData.serve_address.length}}/50
+						</view>
+					</view>
+				</view>
+				<view class="align-items-center ptb-24 b-b-EFF2F5 mb-20" @click="openAddress">
+					<view class="fs-26 fc-3 mr-20 flex-shrink0">
+						<text class="fc-ff3939" v-if="errandsData.errands_id != 4">*</text>送达地址 :
+					</view>
+					<view class="text-overflow-ellipsis-one fs-26" :class="formData.address_id?'fc-0':'fc-9'">
+						{{formData.address_id?addressData.school_name + addressData.dorm_name + addressData.address :'选择地址'}}
+					</view>
+				</view>
+				<view class="align-items-center ptb-24 b-b-EFF2F5 mb-20" @click="openTime">
+					<view class="fs-26 fc-3 mr-20 flex-shrink0">
+						<text class="fc-ff3939">*</text>{{errandsData.time_str}} :
+					</view>
+					<view class="text-overflow-ellipsis-one fs-26" :class="deliverText?'fc-0':'fc-9'">
+						{{deliverText?'预计'+ deliverText+ '送达':'选择'+ errandsData.time_str}}
+					</view>
+				</view>
+				<view class="align-items-center ptb-24 b-b-EFF2F5 mb-20" @click="openItem"
+					v-if="errandsData.item && errandsData.item.length>0">
+					<view class="fs-26 fc-3 mr-20 flex-shrink0">
+						<text class="fc-ff3939">*</text>{{errandsData.item_name}} :
+					</view>
+					<view class="text-overflow-ellipsis-one fs-26" :class="itemData.item_id?'fc-0':'fc-9'">
+						{{itemData.item_id?itemData.name:'选择'+ errandsData.item_name}}
+					</view>
+				</view>
+				<view class="align-items-center ptb-24 b-b-EFF2F5 mb-20">
+					<view class="fs-26 fc-3 mr-20 flex-shrink0">
+						<text class="fc-ff3939">*</text>是否上楼 :
+					</view>
+					<view class="fs-26 align-items-center">
+						<view class="align-items-center mr-50" @click="formData.is_up = 0">
+							<uni-icons class="mr-10" v-if="formData.is_up === 0" type="checkbox-filled" size="22"
+								color="#4495FD"></uni-icons>
+							<uni-icons class="mr-10" v-else type="circle" size="22" color="#000"></uni-icons>
+							<view class="fs-28 mr-10">
+								否
+							</view>
+							<view class="fs-28">
+								(0元)
+							</view>
+						</view>
+						<view class="align-items-center" @click="formData.is_up = 1">
+							<uni-icons class="mr-10" v-if="formData.is_up === 1" type="checkbox-filled" size="22"
+								color="#4495FD"></uni-icons>
+							<uni-icons class="mr-10" v-else type="circle" size="22" color="#000"></uni-icons>
+							<view class="fs-28 mr-10">
+								是
+							</view>
+							<view class="fs-28 mr-10 fc-FB3D03">
+								¥{{errandsData.up_price}}
+							</view>
+						</view>
+					</view>
+				</view>
+				<view class="align-items-center ptb-24 b-b-EFF2F5 mb-20">
+					<view class="fs-26 fc-3 mr-20 flex-shrink0">
+						打赏金额 :
+					</view>
+					<view class="">
+						<input v-model="formData.reward_money" type="digit" cursor-spacing='20' class="uni-input"
+							placeholder="自定义金额 0~1000" />
 					</view>
 				</view>
 			</view>
 		</scroll-view>
+		<view class="p-20 box-border-box bgc-f b-t-F9F9F9">
+			<view class="but-box align-items-center box-border-box flex-justify-space b-rad-200">
+				<view class="but-left align-items-center flex-1 bgc-3 pl-24 box-border-box">
+					<view class="fs-32 fc-FB4845 mr-20 fw-600">
+						¥ {{amount}}
+					</view>
+					<view class="fs-24 fc-f">
+						(点击展开明细)
+					</view>
+				</view>
+				<view class="but bgc-5CC2FF fs-26 fc-f text-align-center">
+					去下单
+				</view>
+			</view>
+		</view>
+		<selectAddressVue ref="selectAddress" @giveAddress='giveAddress'></selectAddressVue>
+		<timeVue ref="selectTime" @giveTime='giveTime' @timeAndType='timeAndType'></timeVue>
+		<selectModVue ref="selectModRef" @selectData='selectData' :popTitleName='errandsData.item_name'></selectModVue>
 	</view>
 </template>
 
 <script>
+	import selectAddressVue from './confirm-mod/select-address.vue';
+	import timeVue from './confirm-mod/time.vue';
+	import selectModVue from './run-errands-mod/select-mod.vue';
+	import {
+		getAddressDefault
+	} from '@/api/member.js'
 	import {
 		errandsBanner,
 		errandsServe
@@ -76,7 +171,11 @@
 		upLoadingFileOss
 	} from "@/service/upLoadingFile.js"
 	export default {
-		components: {},
+		components: {
+			selectAddressVue,
+			timeVue,
+			selectModVue
+		},
 		data() {
 			return {
 				bannerList: [],
@@ -95,16 +194,94 @@
 				formData: {
 					errands_id: 0,
 					serve_desc: '',
-					images: []
-				}
+					serve_address: '',
+					images: [],
+					address_id: '',
+					time_type: '',
+					serve_time: '',
+					item_id: 0,
+					is_up: 0,
+					reward_money: ''
+				},
+				deliverText: '',
+				addressData: {},
+				itemData: {},
+				amount: '0.00',
 			};
 		},
-		onLoad(data) {},
+		onShow() {
+			let isConfirmAddressFlag = uni.getStorageSync('isConfirmAddressFlag');
+			if (isConfirmAddressFlag.flag) {
+				this.openAddress(isConfirmAddressFlag);
+			}
+		},
+		onHide() {
+			uni.removeStorageSync('isConfirmAddressFlag');
+		},
+		onUnload() {
+			uni.removeStorageSync('isConfirmAddressFlag');
+		},
+		onLoad(data) {
+			this.getAddressDefault();
+		},
 		mounted() {
 			this.getBanner()
 			this.getErrandsServe()
 		},
 		methods: {
+			selectData(item) {
+				if (item) {
+					this.itemData = item
+				}
+			},
+			openItem() {
+				this.$refs.selectModRef.getList(this.formData.item_id, this.errandsData.item);
+			},
+			openTime() {
+				// 选择时间
+				this.$refs.selectTime.getList(0, this.errandsData.time);
+			},
+			timeAndType(type, time) {
+				// 时间选择
+				this.formData.time_type = type
+				this.formData.serve_time = time
+				if (type == 1) {
+					this.deliverText = '今天' + time
+				} else {
+					this.deliverText = '明天' + time
+				}
+				console.log(type, time, '&&&&&&&&&&&&&&&&&&&&&&&&');
+			},
+			giveTime(e) {
+				console.log(e);
+			},
+			openAddress(addressData) {
+				// 选择地址
+				if (this.addressData.id) {
+					this.$refs.selectAddress.id = this.addressData.id;
+				}
+				if (addressData && addressData.is_default == 1) {
+					this.$refs.selectAddress.id = addressData.id;
+					this.$refs.selectAddress.getList(addressData.id);
+				} else {
+					this.$refs.selectAddress.getList();
+				}
+			},
+			// 获取默认地址
+			getAddressDefault() {
+				getAddressDefault().then((res) => {
+					if (res.code === 1) {
+						this.addressData = res.data
+						if (this.addressData.id) {
+							this.formData.address_id = this.addressData.id;
+						}
+					}
+				})
+			},
+			giveAddress(e) {
+				this.addressData = e;
+				this.formData.address_id = this.addressData.id;
+			},
 			deleteImg(index) {
 				this.formData.images.splice(index, 1)
 			},
@@ -135,6 +312,8 @@
 				}
 				this.formData.errands_id = item.errands_id
 				this.errandsData = item
+				this.itemData = {}
+				this.deliverText = ''
 			},
 			getBanner() {
 				errandsBanner().then((res) => {
@@ -197,7 +376,14 @@
 	}
 
 	.textarea-box {
-		height: 200rpx;
+		height: 150rpx;
+		position: relative;
+	}
+
+	.tj-num {
+		position: absolute;
+		right: 10rpx;
+		bottom: 10rpx;
 	}
 
 	.textarea {
@@ -217,4 +403,21 @@
 			height: 36rpx;
 		}
 	}
+
+	.but-box {
+		height: 80rpx;
+	}
+
+	.but-left {
+		height: 100%;
+		line-height: 80rpx;
+		border-radius: 200rpx 0 0 200rpx;
+	}
+
+	.but {
+		width: 180rpx;
+		height: 100%;
+		line-height: 80rpx;
+		border-radius: 0 200rpx 200rpx 0;
+	}
 </style>