From 2d43a1df3f5ba42710e6d21c27d1e13bdb8dfd56 Mon Sep 17 00:00:00 2001
From: zhangwei <1504152376@qq.com>
Date: 星期一, 24 三月 2025 09:23:08 +0800
Subject: [PATCH] -

---
 src/pages/order/order.vue |  264 ++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 210 insertions(+), 54 deletions(-)

diff --git a/src/pages/order/order.vue b/src/pages/order/order.vue
index 00ed0b9..22b8ba7 100644
--- a/src/pages/order/order.vue
+++ b/src/pages/order/order.vue
@@ -1,44 +1,90 @@
 <template>
-	<view>
+	<view class="full-page" scroll-y using-sticky>
 		<up-sticky bgColor="#fff">
-			<up-subsection :list="list" :current="current4" activeColor="#f9ae3d"
-				@change="sectionChange"></up-subsection>
+			<view class="coreshop-ff content c-p-10">
+				<!-- <up-search placeholder="璇风偣鍑婚�夋嫨鏃ユ湡" @clear='clear' @clickIcon='clickTime' @custom='search'
+					v-model="workTime" search-icon="calendar" @search='search'></up-search> -->
+				<up-search placeholder="璇疯緭鍏ュ伐浣滃悕绉�" @clear='clear' @custom='PostMyListPageCompany'
+					v-model="state.orderName" @search='PostMyListPageCompany'></up-search>
+			</view>
+			<up-subsection :list="list" current="1" activeColor="#f9ae3d" @change="sectionChange"></up-subsection>
 		</up-sticky>
-		<view class="full-page">
-			<view class="listrecord c-p-20" v-for="(item,index) in listO.orderList">
-				<view class="coreshop-ff chuany-bradius20">
-					<view class="c-p-26">
-						<view class="chuany-flex chuany-justify-between">
-							<text class="chuany-font34 chuany-text-bold">
-								{{item.orderName}}
-							</text>
+		<view class="full-page-content">
+			<view class="c-p-l-20 c-p-r-20" v-if="listO.orderList&&listO.orderList.length>0">
+				<view class="listrecord c-p-t-20" v-for="(item,index) in listO.orderList" :key="item.id"
+					@click="pageToDetail(item)">
+					<view class="coreshop-ff chuany-bradius20 ">
+						<view class="c-p-24">
 							<view class="chuany-flex chuany-justify-between">
-								<!-- <text class="c-p-r-20">
-								
-							</text> -->
-								<up-tag class='c-m-r-10' text="宸茬粨绠�" shape="circle" type="success" plain plainFill
-									size='mini'></up-tag>
-								<up-tag text="宸茬‘璁�" shape="circle" type="success" plain plainFill size='mini'></up-tag>
-							</view>
-						</view>
-						<view class="chuany-flex chuany-justify-between c-p-t-20">
-							<view class="chuany-width50">
-								<text>
-									鏂瑰紡锛氳鏃�
+								<text class="chuany-font32">
+									{{item.orderName}}
 								</text>
+								<view class="chuany-flex chuany-justify-between">
+									<!-- 鎷涘伐浜烘暟锛歿{item.worderCount}}浜� -->
+									<!-- <text class="c-p-r-20">
+									
+								</text> -->
+									<!-- <up-tag class='c-m-r-10' :text="item.orderStatusName" shape="circle" type="success"
+										plain plainFill size='mini'></up-tag> -->
+									<up-text v-if="item.isEn" :type="item.orderStatus==0?'primary':'success'"
+										:text="item.orderStatusName" size='12'></up-text>
+									<up-text v-else type="error" text="宸蹭笅鏋�" size='12'></up-text>
+
+									<!-- <up-button class='c-m-r-10' :text="item.isEn?'涓嬫灦':'涓婃灦'" disabled shape="circle"
+										v-if="item.orderStatus==0" :type="item.isEn?'error':'primary'" size='mini'
+										@click.stop="manageOrder(item)"></up-button> -->
+								</view>
 							</view>
-							<text class="chuany-width50">
-								宸ヤ环锛�17鍏�/灏忔椂
-							</text>
+							<view class="text-69 chuany-font28">
+								<view class="">
+									鏃ユ湡锛歿{$util.formatDate(item.wordStartTime)}} 鑷� {{$util.formatDate(item.wordEndTime)}}
+								</view>
+								<view class="chuany-flex chuany-justify-between chuany-flex-wrap">
+									<view class="chuany-width50" v-if="item.zixinganpai">
+										鏃堕棿锛歿{item.zixinganpaiName}}
+									</view>
+									<view class="chuany-width50" v-else>
+										鏃堕棿锛歿{item.startTimeName}} 鑷� {{item.endTimeName}}
+									</view>
+									<view class="chuany-width50">
+										<text>
+											鏂瑰紡锛歿{item.workerType==0?'璁℃椂':'璁′欢'}}
+										</text>
+									</view>
+									<view class="chuany-width50">
+										宸叉嫑浜烘暟锛歿{item.worderCounted}} 浜�
+									</view>
+									<view class="chuany-width50">
+										<text>
+											寰呭鏍镐汉鏁帮細{{item.workerDaiCount}} 浜�
+										</text>
+									</view>
+									<view class="chuany-width50">
+										宸ヤ环锛歿{item.workPrice}}<template
+											v-if="item.workPriceMax">~{{item.workPriceMax}}</template>
+										{{item.workerType==0?'鍏�/灏忔椂':'鍏�/浠�'}}
+									</view>
+									<view class="">
+										<up-button hoverStopPropagation :text="item.isEn?'涓嬫灦':'涓婃灦'" shape="circle"
+											:loading='item.isLoading' :loadingText="item.isEn?'涓嬫灦涓�':'涓婃灦涓�'"
+											v-if="item.orderStatus==0" :type="item.isEn?'error':'primary'" size='mini'
+											@tap.stop="manageOrder(item)"></up-button>
+									</view>
+								</view>
+							</view>
+
 						</view>
 					</view>
 				</view>
+				<up-loadmore :status="loadStatus" />
 			</view>
-			<up-loadmore :status="status" />
+			<view v-else>
+				<up-empty text='鏆傛棤' icon="/static/order.png">
+				</up-empty>
+			</view>
 		</view>
-		<up-empty mode="order" icon="http://cdn.uviewui.com/uview/empty/order.png">
-		</up-empty>
-
+		<fui-date-picker range :show="datePickerShow" type="5" @change="changePicker"
+			@cancel="cancel"></fui-date-picker>
 	</view>
 </template>
 
@@ -46,7 +92,8 @@
 	import {
 		onLoad,
 		onShow,
-		onReachBottom
+		onReachBottom,
+		onPullDownRefresh
 	} from "@dcloudio/uni-app";
 	import {
 		reactive,
@@ -59,59 +106,168 @@
 		$util,
 		$db
 	} = getCurrentInstance().appContext.config.globalProperties
-	const state = reactive({
+	let state = reactive({
 		pageIndex: 1,
 		pageSize: 20,
+		orderName: ''
 	})
-	let status = ref('loadmore')
+	let workTime = ref('')
+	let datePickerShow = ref(false)
+	let loadStatus = ref('loadmore')
 	let totalPages = ref(0)
+	let isEn = ref(true)
 	let listO = reactive({
-		orderList:[]
+		orderList: []
 	})
 	onReachBottom(() => {
-			if (this.loadStatus != 'nomore') {
-				PostMyListPageCompany();
-			}
-		}),
-		onLoad(() => {
-			$api.PostMyListPageCompany(state).then(res => {
-				console.log(res, '---');
-			})
-		})
+		if (loadStatus.value != 'nomore') {
+			PostMyListPageCompany();
+		}
+	})
+	onShow(() => {
+		PostMyListPageCompany()
+	})
+	onPullDownRefresh(() => {
+		state.pageIndex = 1
+		state.pageSize = 20
+		loadStatus.value = 'loadmore'
+		PostMyListPageCompany()
+		uni.stopPullDownRefresh();
+	})
 	const current4 = ref(0);
-	const list = ref(['鍏ㄩ儴', '杩涜涓�', '宸插畬鎴�', '宸插彇娑�']);
-
-
-	const sectionChange = (index) => {
-		current4.value = index;
+	const list = ref(['鍏ㄩ儴', '鍙戝竷涓�', '宸蹭笅鏋�']);
+	const changePicker = (val) => {
+		console.log(val);
+		workTime.value = val.startDate.result + '鑷�' + val.endDate.result
+		state.wordStartTime = new Date(val.startDate.result) //宸ヤ綔寮�濮嬫椂闂�
+		state.wordEndTime = new Date(val.endDate.result)
+	}
+	const clear = () => {
+		state.orderName = ''
+		state.wordStartTime = ""
+		state.wordEndTime = ""
+		PostMyListPageCompany()
+	}
+	const clickTime = () => {
+		datePickerShow.value = !datePickerShow.value
 	}
 	const PostMyListPageCompany = () => {
 		let data = {
 			pageIndex: state.pageIndex,
 			pageSize: state.pageSize,
+			isEn: isEn.value
 		}
-		this.loadStatus = 'loading';
+		if (state.wordStartTime) {
+			data.wordStartTime = state.wordStartTime
+		}
+		if (state.wordEndTime) {
+			data.wordEndTime = state.wordEndTime
+		}
+		if (state.orderName) {
+			data.orderName = state.orderName
+		}
+		loadStatus.value = 'loading';
 		$api.PostMyListPageCompany(data).then(res => {
+			console.log(res, res.code, '-----------123鈥�');
 			if (res.code == 1) {
-				if(state.pageIndex==1){
+				if (state.pageIndex == 1) {
 					listO.orderList = res.data.items
-				}else{
-					listO.orderList.concat(...res.data.items)
+				} else {
+					listO.orderList = listO.orderList.concat(...res.data.items)
 				}
+				listO.orderList.forEach(item => {
+					item.isLoading = false
+				})
+				console.log(listO.orderList, 'listO.orderList鈥�');
 				// totalPages.value = res.data.totalCount
 				// 鏍规嵁count鏁伴噺鍒ゆ柇鏄惁杩樻湁鏁版嵁
 				if (res.data.totalCount > listO.orderList.length) {
-					status.value = 'loadmore';
+					loadStatus.value = 'loadmore'
 					state.pageIndex++
 				} else {
 					// 鏁版嵁宸插姞杞藉畬姣�
-					status.value = 'nomore';
+					loadStatus.value = 'nomore'
 				}
 			} else {
 				// _that.$refs.uToast.show({ message: res.msg, type: 'error' });
 			}
 		})
 	}
+	const sectionChange = (val) => {
+		switch (val) {
+			case 0:
+				isEn.value = null
+				break;
+			case 1:
+				isEn.value = true
+				break;
+			case 2:
+				isEn.value = false
+				break;
+		}
+		state.pageIndex = 1
+		state.pageSize = 20
+		loadStatus.value = 'loadmore'
+		PostMyListPageCompany()
+	}
+	const manageOrder = (item) => {
+		let obj = {
+			orderId: item.id
+		}
+		console.log(obj);
+		if (item.isEn) {
+			uni.showModal({
+			        title: '鎻愮ず',
+			        content: '纭涓嬫灦璇ュ伐浣滃悧锛熶笅鏋跺悗灏嗗垹闄ょ浉鍏虫暟鎹紒',
+			        success: function(res) {
+			        if (res.confirm) {
+						// 鎵ц纭鍚庣殑鎿嶄綔
+						item.isLoading = true
+						$api.deleteOrder(obj).then(req => {
+							if (req.code == 1) {
+								$util.showToast({
+									title: '涓嬫灦鎴愬姛锛�'
+								})
+								PostMyListPageCompany()
+							} else {
+								$util.showToast({
+									title: req.error
+								})
+							}
+							item.isLoading = false
+						})
+			        } 
+			        else {
+			            // 鎵ц鍙栨秷鍚庣殑鎿嶄綔
+			        }
+			    }
+			})
+			
+		} else {
+			item.OldId = item.id
+			item.id = 0
+			$api.saveOrder(item).then(res => {
+				if (res.code == 1) {
+					$util.showToast({
+						title: "涓婃灦鎴愬姛锛�",
+						icon: "success"
+					})
+					PostMyListPageCompany()
+				} else {
+					$util.showToast({
+						title: res.msg
+					})
+				}
+				item.isLoading = false
+			})
+		}
+	}
+	const pageToDetail = (item) => {
+		uni.navigateTo({
+			url: `/pages/order/detail?orderid=${item.id}`
+		});
+		// $db.set('detailItem',JSON.stringify(item))
+	}
 </script>
 
 <style>

--
Gitblit v1.9.1