From 271adcc0c4fc0db987faee1c757a1c38a0424815 Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期一, 18 五月 2026 10:32:01 +0800
Subject: [PATCH] 设备保养新增保养人计划

---
 src/views/equipmentManagement/upkeep/Form/PlanModal.vue |   80 +++++++++++++++++++++++++++++++++++-----
 1 files changed, 70 insertions(+), 10 deletions(-)

diff --git a/src/views/equipmentManagement/upkeep/Form/PlanModal.vue b/src/views/equipmentManagement/upkeep/Form/PlanModal.vue
index efa04a5..2df504e 100644
--- a/src/views/equipmentManagement/upkeep/Form/PlanModal.vue
+++ b/src/views/equipmentManagement/upkeep/Form/PlanModal.vue
@@ -32,19 +32,37 @@
           disabled
         />
       </el-form-item>
+      <el-form-item label="褰曞叆浜�">
+        <el-input
+          :model-value="registrantDisplayName"
+          disabled
+          placeholder="褰撳墠鐧诲綍鐢ㄦ埛"
+        />
+      </el-form-item>
+      <el-form-item label="淇濆吇浜�">
+        <el-select
+          v-model="form.maintenancePerson"
+          filterable
+          default-first-option
+          :reserve-keyword="false"
+          placeholder="璇烽�夋嫨淇濆吇浜�"
+          clearable
+          style="width: 100%"
+        >
+          <el-option
+            v-for="item in userList"
+            :key="'mp-' + item.userId"
+            :label="item.nickName"
+            :value="item.userId"
+          />
+        </el-select>
+      </el-form-item>
       <el-form-item label="淇濆吇椤圭洰">
         <el-input
           v-model="form.maintenanceLocation"
           type="textarea"
           :rows="3"
           placeholder="璇疯緭鍏ヤ繚鍏婚」鐩�"
-        />
-      </el-form-item>
-      <el-form-item label="褰曞叆浜�">
-        <el-input
-          :model-value="registrantDisplayName"
-          disabled
-          placeholder="褰撳墠鐧诲綍鐢ㄦ埛"
         />
       </el-form-item>
       <el-form-item v-if="id" label="淇濅慨鐘舵��">
@@ -98,7 +116,8 @@
 import { Plus } from "@element-plus/icons-vue";
 import useFormData from "@/hooks/useFormData";
 import { getDeviceLedger } from "@/api/equipmentManagement/ledger";
-import { computed, onMounted, ref } from "vue";
+import { userListNoPageByTenantId } from "@/api/system/user.js";
+import { computed, nextTick, onMounted, ref, unref } from "vue";
 import dayjs from "dayjs";
 import useUserStore from "@/store/modules/user.js";
 import request from "@/utils/request";
@@ -130,9 +149,16 @@
 const loading = ref(false);
 
 const deviceOptions = ref([]);
+const userList = ref([]);
+
 const loadDeviceName = async () => {
   const { data } = await getDeviceLedger();
   deviceOptions.value = data;
+};
+
+const loadUserList = async () => {
+  const res = await userListNoPageByTenantId();
+  userList.value = res.data || [];
 };
 
 const { form, resetForm } = useFormData({
@@ -141,6 +167,7 @@
   deviceModel: undefined,
   maintenanceLocation: undefined,
   maintenancePlanTime: undefined,
+  maintenancePerson: undefined,
   createUser: undefined,
   status: 0,
 });
@@ -267,17 +294,46 @@
   form.maintenanceLocation = data.maintenanceLocation;
   form.status = data.status;
   syncCreateUserFromLogin();
+  if (data.maintenancePersonId) {
+    form.maintenancePerson = data.maintenancePersonId;
+  } else if (data.maintenancePerson) {
+    const matched = userList.value.find(
+      (u) => u.nickName === data.maintenancePerson
+    );
+    if (matched) {
+      form.maintenancePerson = matched.userId;
+    }
+  }
   form.maintenancePlanTime = dayjs(data.maintenancePlanTime).format(
     "YYYY-MM-DD HH:mm:ss"
   );
 };
 
+const buildSubmitPayload = () => {
+  const payload = { ...form };
+  const maintenancePersonUserId = form.maintenancePerson;
+  if (maintenancePersonUserId) {
+    const maintainer = userList.value.find(
+      (u) => String(u.userId) === String(maintenancePersonUserId)
+    );
+    if (maintainer) {
+      payload.maintenancePersonId = maintainer.userId;
+      payload.maintenancePerson = maintainer.nickName;
+    }
+  }
+  return payload;
+};
+
 onMounted(() => {
   loadDeviceName();
+  loadUserList();
 });
 
 const openEdit = async (editId) => {
   resetAttachmentState();
+  if (!userList.value.length) {
+    await loadUserList();
+  }
   const { data } = await getUpkeepById(editId);
   id.value = editId;
   visible.value = true;
@@ -290,15 +346,16 @@
   syncCreateUserFromLogin();
   loading.value = true;
   try {
+    const payload = buildSubmitPayload();
     if (id.value) {
-      const { code } = await editUpkeep({ id: unref(id), ...form });
+      const { code } = await editUpkeep({ id: unref(id), ...payload });
       if (code == 200) {
         ElMessage.success("缂栬緫璁″垝鎴愬姛");
         visible.value = false;
         emits("ok");
       }
     } else {
-      const res = await addUpkeep(form);
+      const res = await addUpkeep(payload);
       if (res.code == 200) {
         const planId = res.data?.id;
         if (planId) {
@@ -331,6 +388,9 @@
   resetForm();
   resetAttachmentState();
   syncCreateUserFromLogin();
+  if (userStore.id != null && userStore.id !== "") {
+    form.maintenancePerson = userStore.id;
+  }
   visible.value = true;
 };
 

--
Gitblit v1.9.3