From d0417ce6056781e3337ef0dac597c508cf36d27e Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期二, 21 四月 2026 15:52:56 +0800
Subject: [PATCH] 新增工序选择功能,优化设备管理页面,支持工序列表的动态加载和表单验证

---
 src/pages/equipmentManagement/ledger/detail.vue |   56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 56 insertions(+), 0 deletions(-)

diff --git a/src/pages/equipmentManagement/ledger/detail.vue b/src/pages/equipmentManagement/ledger/detail.vue
index 1b4ca9f..5cbff67 100644
--- a/src/pages/equipmentManagement/ledger/detail.vue
+++ b/src/pages/equipmentManagement/ledger/detail.vue
@@ -7,6 +7,24 @@
 		<u-form @submit="sendForm" ref="formRef" :model="form" :rules="formRules" label-width="110">
 			<!-- 鍩烘湰淇℃伅 -->
 			<u-cell-group title="鍩烘湰淇℃伅">
+				<u-form-item label="宸ュ簭" prop="productProcessId" required border-bottom>
+					<u-input
+						v-model="form.productProcessName"
+						placeholder="璇烽�夋嫨宸ュ簭"
+						readonly
+						@click="showProcessPicker = true"
+					/>
+					<template #right>
+						<u-icon name="arrow-right" @click="showProcessPicker = true"></u-icon>
+					</template>
+					<up-action-sheet
+						:show="showProcessPicker"
+						:actions="processActionList"
+						title="閫夋嫨宸ュ簭"
+						@select="onProcessSelect"
+						@close="showProcessPicker = false"
+					/>
+				</u-form-item>
 				<u-form-item label="璁惧鍚嶇О" prop="deviceName" required border-bottom>
 					<u-input
 						v-model="form.deviceName"
@@ -149,6 +167,7 @@
 import { onShow } from '@dcloudio/uni-app';
 import PageHeader from '@/components/PageHeader.vue';
 import { getLedgerById, addLedger, editLedger } from '@/api/equipmentManagement/ledger';
+import { list as getProductProcessList } from '@/api/qualityManagement/materialInspection.js';
 import dayjs from "dayjs";
 import {
 	calculateTaxIncludeTotalPrice,
@@ -172,11 +191,19 @@
 const showDate = ref(false);
 const pickerDateValue = ref(Date.now());
 const showTaxRatePicker = ref(false);
+const showProcessPicker = ref(false);
 const taxRateActionList = ref([
   { name: '1', value: 1 },
   { name: '6', value: 6 },
   { name: '13', value: 13 }
 ]);
+const processList = ref([]);
+const processActionList = computed(() =>
+  (processList.value || []).map((item) => ({
+    name: item.name,
+    value: item.id
+  }))
+);
 
 // 琛ㄥ崟楠岃瘉瑙勫垯
 const formRules = {
@@ -186,6 +213,7 @@
 	supplierName: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
 	storageLocation: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
 	unit: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
+	productProcessId: [{ required: true, trigger: "change", message: "璇烽�夋嫨宸ュ簭" }],
 	// 鏁板瓧绫诲瀷瀛楁闇�瑕佺壒娈婂鐞嗭紝纭繚鏈夋暟鍊兼椂涓嶄細瑙﹀彂蹇呭~鏍¢獙
 	number: [{
 		required: true,
@@ -238,6 +266,8 @@
 	storageLocation: undefined, // 瀛樻斁浣嶇疆
 	unit: undefined, // 鍗曚綅
 	enableDepreciation: false, // 鍚敤鎶樻棫
+	productProcessId: undefined, // 宸ュ簭ID
+	productProcessName: undefined, // 宸ュ簭鍚嶇О
 	number: undefined, // 鏁伴噺
 	taxIncludingPriceUnit: undefined, // 鍚◣鍗曚环
 	taxIncludingPriceTotal: undefined, // 鍚◣鎬讳环
@@ -265,6 +295,11 @@
 			form.value.storageLocation = data.storageLocation || '';
 			form.value.unit = data.unit;
 			form.value.enableDepreciation = !!data.enableDepreciation;
+			form.value.productProcessId = data.productProcessId;
+			form.value.productProcessName =
+				data.productProcessName ||
+				processList.value.find((item) => item.id == data.productProcessId)?.name ||
+				'';
 			form.value.number = data.number;
 			form.value.taxIncludingPriceUnit = data.taxIncludingPriceUnit;
 			form.value.taxIncludingPriceTotal = data.taxIncludingPriceTotal;
@@ -330,6 +365,9 @@
 		} else if (!form.value.unit) {
 			isValid = false;
 			errorMessage = '璇疯緭鍏ュ崟浣�';
+		} else if (!form.value.productProcessId) {
+			isValid = false;
+			errorMessage = '璇烽�夋嫨宸ュ簭';
 		}
 		
 		// 妫�鏌ユ暟瀛楃被鍨嬪繀濉瓧娈�
@@ -428,6 +466,23 @@
 	mathNum(); // 閲嶆柊璁$畻
 };
 
+// 鑾峰彇宸ュ簭鍒楄〃
+const getProcessList = async () => {
+	try {
+		const res = await getProductProcessList();
+		processList.value = res?.data || [];
+	} catch (e) {
+		processList.value = [];
+	}
+};
+
+// 閫夋嫨宸ュ簭
+const onProcessSelect = (e) => {
+	form.value.productProcessId = e.value;
+	form.value.productProcessName = e.name;
+	showProcessPicker.value = false;
+};
+
 // 鏄剧ず鏃ユ湡閫夋嫨鍣�
 const showDatePicker = () => {
 	showDate.value = true;
@@ -450,6 +505,7 @@
 
 onMounted(() => {
 	// 椤甸潰鍔犺浇鏃惰幏鍙栧弬鏁�
+	getProcessList();
 	getPageParams();
 });
 </script>

--
Gitblit v1.9.3