From 9141e0e9ffea6ff3035dbe9c80f844656dff00a9 Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期四, 09 四月 2026 11:57:03 +0800
Subject: [PATCH] 生产排产交接人增肌清除按钮

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

diff --git a/src/views/productionManagement/workOrderEdit/index.vue b/src/views/productionManagement/workOrderEdit/index.vue
index 50f9fce..f6f398f 100644
--- a/src/views/productionManagement/workOrderEdit/index.vue
+++ b/src/views/productionManagement/workOrderEdit/index.vue
@@ -12,6 +12,20 @@
                     prefix-icon="Search" />
         </div>
         <div class="search-item">
+          <span class="search_title">鎶ュ伐浜猴細</span>
+          <el-select v-model="searchForm.workerName"
+                     style="width: 240px"
+                     placeholder="璇烽�夋嫨"
+                     clearable
+                     filterable
+                     @change="handleQuery">
+            <el-option v-for="item in userOptions"
+                       :key="item.userId"
+                       :label="item.nickName"
+                       :value="item.nickName" />
+          </el-select>
+        </div>
+        <div class="search-item">
           <el-button type="primary"
                      @click="handleQuery">鎼滅储</el-button>
         </div>
@@ -52,6 +66,29 @@
                           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%"
+                     clearable
+                     @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 +110,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 +185,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 +204,7 @@
       fixed: "right",
       operation: [
         {
-          name: "璁″垝鏃堕棿",
+          name: "鎸囨淳",
           clickFun: row => {
             handleEdit(row);
           },
@@ -175,6 +226,7 @@
   const data = reactive({
     searchForm: {
       workOrderNo: "",
+      workerName: "",
     },
   });
   const { searchForm } = toRefs(data);
@@ -193,6 +245,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 +302,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 +327,7 @@
 
   onMounted(() => {
     getList();
+    loadUserOptions();
   });
 </script>
 

--
Gitblit v1.9.3