From 84ab677962e1e8fb3634b5991f4251cffb1f6168 Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期一, 19 一月 2026 11:51:54 +0800
Subject: [PATCH] fix: 搬迁军泰生产功能

---
 src/pages/productionManagement/productionDispatching/components/DispatchModal.vue |  168 ++++++++++++++++++++++++++++---------------------------
 1 files changed, 86 insertions(+), 82 deletions(-)

diff --git a/src/pages/productionManagement/productionDispatching/components/DispatchModal.vue b/src/pages/productionManagement/productionDispatching/components/DispatchModal.vue
index d6fd25e..95c3705 100644
--- a/src/pages/productionManagement/productionDispatching/components/DispatchModal.vue
+++ b/src/pages/productionManagement/productionDispatching/components/DispatchModal.vue
@@ -1,7 +1,7 @@
 <template>
-	<uni-popup
-		ref="popupRef"
-		type="bottom" 
+	<up-popup 
+		v-model:show="show" 
+		mode="bottom" 
 		:round="20"
 		:safeAreaInsetBottom="true"
 		@close="handleClose"
@@ -26,33 +26,19 @@
 				>
 					<!-- 椤圭洰鍩烘湰淇℃伅 -->
 					<view class="form-section">
-						<text class="section-title">浜у搧淇℃伅</text>
-					<!-- 	<up-form-item label="椤圭洰鍚嶇О" prop="projectName">
+						<text class="section-title">椤圭洰淇℃伅</text>
+						<up-form-item label="椤圭洰鍚嶇О" prop="projectName">
 							<up-input 
 								v-model="form.projectName" 
 								disabled 
 								placeholder="椤圭洰鍚嶇О"
 							/>
-						</up-form-item> -->
+						</up-form-item>
 						<up-form-item label="浜у搧澶х被" prop="productCategory">
 							<up-input 
 								v-model="form.productCategory" 
 								disabled 
 								placeholder="浜у搧澶х被"
-							/>
-						</up-form-item>
-						<up-form-item label="瑙勬牸鍨嬪彿" prop="specificationModel">
-							<up-input 
-								v-model="form.specificationModel" 
-								disabled 
-								placeholder="瑙勬牸鍨嬪彿"
-							/>
-						</up-form-item>
-						<up-form-item label="缁戝畾鏈哄櫒" prop="speculativeTradingName">
-							<up-input 
-								v-model="form.speculativeTradingName" 
-								disabled 
-								placeholder="缁戝畾鏈哄櫒"
 							/>
 						</up-form-item>
 					</view>
@@ -90,14 +76,22 @@
 					<view class="form-section">
 						<text class="section-title">娲惧伐淇℃伅</text>
 						<up-form-item label="娲惧伐浜�" prop="schedulingUserId" required>
-							<uni-data-select v-model="form.schedulingUserId" :localdata="userColumns" :clear="false"></uni-data-select>
+							<up-input 
+								v-model="selectedUserName"
+								placeholder="璇烽�夋嫨娲惧伐浜�"
+								readonly
+								@click="showUserPicker = true"
+								suffixIcon="arrow-down"
+							/>
 						</up-form-item>
 						<up-form-item label="娲惧伐鏃ユ湡" prop="schedulingDate" required>
-							<uni-datetime-picker type="date" :clear-icon="false" v-model="form.schedulingDate">
-								<view class="datetime-picker-value">
-									{{form.schedulingDate}}
-								</view>
-							</uni-datetime-picker>
+							<up-input 
+								v-model="form.schedulingDate"
+								placeholder="璇烽�夋嫨娲惧伐鏃ユ湡"
+								readonly
+								@click="showDatePicker = true"
+								suffixIcon="calendar"
+							/>
 						</up-form-item>
 					</view>
 				</up-form>
@@ -121,7 +115,23 @@
 				/>
 			</view>
 		</view>
-	</uni-popup>
+		
+		<!-- 浜哄憳閫夋嫨鍣� -->
+		<up-picker
+			v-model="showUserPicker"
+			:columns="userColumns"
+			@confirm="handleUserSelect"
+			@cancel="showUserPicker = false"
+		/>
+		
+		<!-- 鏃ユ湡閫夋嫨鍣� -->
+		<up-datetime-picker
+			v-model="showDatePicker"
+			mode="date"
+			@confirm="handleDateSelect"
+			@cancel="showDatePicker = false"
+		/>
+	</up-popup>
 </template>
 
 <script setup>
@@ -136,16 +146,26 @@
 const emit = defineEmits(['confirm']);
 
 // 寮圭獥鏄剧ず鐘舵��
-const popupRef = ref();
+const show = ref(false);
 const submitting = ref(false);
+
+// 閫夋嫨鍣ㄦ樉绀虹姸鎬�
+const showUserPicker = ref(false);
+const showDatePicker = ref(false);
 
 // 鐢ㄦ埛鍒楄〃
 const userList = ref([]);
-const userColumns = computed(() => {
-	return userList.value.map(user => ({
-		text: user.nickName,
+const userColumns = computed(() => [
+	userList.value.map(user => ({
+		label: user.nickName,
 		value: user.userId
 	}))
+]);
+
+// 閫変腑鐨勭敤鎴峰悕绉帮紙鐢ㄤ簬鏄剧ず锛�
+const selectedUserName = computed(() => {
+	const user = userList.value.find(u => u.userId === form.schedulingUserId);
+	return user ? user.nickName : '';
 });
 
 // 琛ㄥ崟鏁版嵁
@@ -162,15 +182,15 @@
 
 // 琛ㄥ崟楠岃瘉瑙勫垯
 const rules = reactive({
-	// schedulingNum: [
-	// 	{ required: true, message: "璇疯緭鍏ユ帓浜ф暟閲�", trigger: "blur" }
-	// ],
-	// schedulingUserId: [
-	// 	{ required: true, message: "璇烽�夋嫨娲惧伐浜�", trigger: "change" }
-	// ],
-	// schedulingDate: [
-	// 	{ required: true, message: "璇烽�夋嫨娲惧伐鏃ユ湡", trigger: "change" }
-	// ]
+	schedulingNum: [
+		{ required: true, message: "璇疯緭鍏ユ帓浜ф暟閲�", trigger: "blur" }
+	],
+	schedulingUserId: [
+		{ required: true, message: "璇烽�夋嫨娲惧伐浜�", trigger: "change" }
+	],
+	schedulingDate: [
+		{ required: true, message: "璇烽�夋嫨娲惧伐鏃ユ湡", trigger: "change" }
+	]
 });
 
 // 琛ㄥ崟寮曠敤
@@ -190,9 +210,9 @@
 			schedulingUserId: userStore.id,
 			schedulingDate: dayjs().format("YYYY-MM-DD")
 		});
-		popupRef.value.open()
+		
+		show.value = true;
 	} catch (error) {
-		console.log(error)
 		uni.showToast({
 			title: '鍔犺浇鐢ㄦ埛鍒楄〃澶辫触',
 			icon: 'error'
@@ -211,30 +231,29 @@
 	}
 };
 
+// 澶勭悊鐢ㄦ埛閫夋嫨
+const handleUserSelect = (params) => {
+	if (params.value && params.value.length > 0) {
+		form.schedulingUserId = params.value[0];
+	}
+	showUserPicker.value = false;
+};
+
+// 澶勭悊鏃ユ湡閫夋嫨
+const handleDateSelect = (params) => {
+	if (params.value) {
+		form.schedulingDate = dayjs(params.value).format("YYYY-MM-DD");
+	}
+	showDatePicker.value = false;
+};
+
 // 纭娲惧伐
 const handleConfirm = async () => {
-	if(!form.schedulingNum){
-		uni.showToast({
-			title: '璇疯緭鍏ユ帓浜ф暟閲�',
-			icon:'none'
-		})
-		return
-	}
-	if(!form.schedulingUserId){
-		uni.showToast({
-			title: '璇烽�夋嫨娲惧伐浜�',
-			icon:'none'
-		})
-		return
-	}
-	if(!form.schedulingDate){
-		uni.showToast({
-			title: '璇烽�夋嫨娲惧伐鏃ユ湡',
-			icon:'none'
-		})
-		return
-	}
 	try {
+		// 琛ㄥ崟楠岃瘉
+		const valid = await formRef.value?.validate();
+		if (!valid) return;
+		
 		if (form.schedulingNum <= 0) {
 			uni.showToast({
 				title: '鎺掍骇鏁伴噺蹇呴』澶т簬0',
@@ -273,7 +292,10 @@
 
 // 鍏抽棴寮圭獥
 const handleClose = () => {
-	popupRef.value.close()
+	show.value = false;
+	showUserPicker.value = false;
+	showDatePicker.value = false;
+	
 	// 閲嶇疆琛ㄥ崟
 	Object.assign(form, {
 		projectName: "",
@@ -331,24 +353,6 @@
 	flex: 1;
 	padding: 0 20px;
 	overflow-y: auto;
-	.datetime-picker-value{
-		font-size: 14px;
-		border: 1px solid #e5e5e5;
-		box-sizing: border-box;
-		border-radius: 4px;
-		padding: 0 5px;
-		padding-left: 10px;
-		position: relative;
-		display: flex;
-		-webkit-user-select: none;
-		-moz-user-select: none;
-		user-select: none;
-		flex-direction: row;
-		align-items: center;
-		width: 100%;
-		flex: 1;
-		height: 35px;
-	}
 }
 
 .form-section {

--
Gitblit v1.9.3