From 425b026b723e3bf23b5945676da474d5f599d45f Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期三, 08 四月 2026 16:25:34 +0800
Subject: [PATCH] 生产排产: 增加报工人和交接人选择功能

---
 src/views/productionManagement/workOrderEdit/index.vue |   75 +++++++++++++++++++++++++++++++++++++
 1 files changed, 74 insertions(+), 1 deletions(-)

diff --git a/src/views/productionManagement/workOrderEdit/index.vue b/src/views/productionManagement/workOrderEdit/index.vue
index 50f9fce..44d6468 100644
--- a/src/views/productionManagement/workOrderEdit/index.vue
+++ b/src/views/productionManagement/workOrderEdit/index.vue
@@ -52,6 +52,28 @@
                           value-format="YYYY-MM-DD"
                           style="width: 300px" />
         </el-form-item>
+        <el-form-item label="鎶ュ伐浜�">
+          <el-select v-model="editrow.workerId"
+                     placeholder="璇烽�夋嫨"
+                     style="width: 100%"
+                     @change="handleWorkerChange">
+            <el-option v-for="item in userOptions"
+                       :key="item.userId"
+                       :label="item.nickName"
+                       :value="item.userId" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="浜ゆ帴浜�">
+          <el-select v-model="editrow.handoverUserId"
+                     placeholder="璇烽�夋嫨"
+                     style="width: 100%"
+                     @change="handleHandoverUserChange">
+            <el-option v-for="item in userOptions"
+                       :key="item.userId"
+                       :label="item.nickName"
+                       :value="item.userId" />
+          </el-select>
+        </el-form-item>
       </el-form>
       <template #footer>
         <span class="dialog-footer">
@@ -73,6 +95,8 @@
     updateProductWorkOrder,
   } from "@/api/productionManagement/workOrder.js";
   import { getCurrentInstance, reactive, toRefs } from "vue";
+import { userListAll } from '@/api/publicApi'
+
   const { proxy } = getCurrentInstance();
 
   const tableColumn = ref([
@@ -146,6 +170,18 @@
       width: "140",
     },
     {
+      label: "鎶ュ伐浜�",
+      prop: "workerName",
+      width: "120",
+      formatter: row => row?.workerName || (row?.workerId ? row.workerId : "-"),
+    },
+    {
+      label: "浜ゆ帴浜�",
+      prop: "handoverUserName",
+      width: "120",
+      formatter: row => row?.handoverUserName || (row?.handoverUserId ? row.handoverUserId : "-"),
+    },
+    {
       label: "鎿嶄綔",
       width: "100",
       align: "center",
@@ -153,7 +189,7 @@
       fixed: "right",
       operation: [
         {
-          name: "璁″垝鏃堕棿",
+          name: "鎸囨淳",
           clickFun: row => {
             handleEdit(row);
           },
@@ -193,6 +229,36 @@
     return "#67c23a";
   };
 
+  const userOptions = ref([]);
+  const loadUserOptions = async () => {
+    try {
+      const res = await userListAll();
+      userOptions.value = res.data;
+    } catch (error) {
+      console.error("鑾峰彇鐢ㄦ埛鍒楄〃澶辫触", error);
+    }
+  };
+
+  const handleWorkerChange = val => {
+    const user = (userOptions.value || []).find(item => item.userId === val);
+    if (editrow.value) {
+      editrow.value.workerName = user ? (user.nickName || user.userName || "") : "";
+    }
+  };
+
+  const handleHandoverUserChange = val => {
+    const user = (userOptions.value || []).find(item => item.userId === val);
+    if (editrow.value) {
+      editrow.value.handoverUserName = user ? (user.nickName || user.userName || "") : "";
+    }
+  };
+
+  const normalizeNullableUserId = value => {
+    if (value === undefined || value === null || value === "") return null;
+    const n = Number(value);
+    if (!Number.isFinite(n) || n <= 0) return null;
+    return n;
+  };
   // 鏌ヨ鍒楄〃
   /** 鎼滅储鎸夐挳鎿嶄綔 */
   const handleQuery = () => {
@@ -220,10 +286,16 @@
 
   const handleEdit = row => {
     editrow.value = JSON.parse(JSON.stringify(row));
+    editrow.value.workerId = normalizeNullableUserId(editrow.value.workerId);
+    editrow.value.handoverUserId = normalizeNullableUserId(editrow.value.handoverUserId);
     editDialogVisible.value = true;
   };
 
   const handleUpdate = () => {
+    editrow.value.workerId = normalizeNullableUserId(editrow.value.workerId);
+    editrow.value.handoverUserId = normalizeNullableUserId(editrow.value.handoverUserId);
+    if (!editrow.value.workerId) editrow.value.workerName = null;
+    if (!editrow.value.handoverUserId) editrow.value.handoverUserName = null;
     updateProductWorkOrder(editrow.value)
       .then(res => {
         proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
@@ -239,6 +311,7 @@
 
   onMounted(() => {
     getList();
+    loadUserOptions();
   });
 </script>
 

--
Gitblit v1.9.3