From 25372b64f4ac756bd44cc730af87b1c46e6b9f77 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期一, 18 五月 2026 14:18:57 +0800
Subject: [PATCH] fix: 维修人改为可输入和下拉

---
 src/views/equipmentManagement/repair/Modal/MaintainModal.vue |   41 +++++++++++++++++++++++++++++++++++++----
 1 files changed, 37 insertions(+), 4 deletions(-)

diff --git a/src/views/equipmentManagement/repair/Modal/MaintainModal.vue b/src/views/equipmentManagement/repair/Modal/MaintainModal.vue
index ed09da9..6908865 100644
--- a/src/views/equipmentManagement/repair/Modal/MaintainModal.vue
+++ b/src/views/equipmentManagement/repair/Modal/MaintainModal.vue
@@ -10,10 +10,19 @@
   >
     <el-form ref="formRef" :model="form" :rules="rules" label-width="90px">
       <el-form-item label="缁翠慨浜�" prop="maintenanceName">
-        <el-input v-model="form.maintenanceName" disabled placeholder="鎶ヤ慨鏃舵寚瀹氱殑缁翠慨浜�" />
+        <el-input
+          v-model="form.maintenanceName"
+          :placeholder="isEditableMaintenanceName ? '璇疯緭鍏ョ淮淇汉濮撳悕' : '鎶ヤ慨鏃舵寚瀹氱殑缁翠慨浜�'"
+          :disabled="!isEditableMaintenanceName"
+        />
       </el-form-item>
       <el-form-item label="缁翠慨缁撴灉" prop="maintenanceResult">
-        <el-input v-model="form.maintenanceResult" placeholder="璇疯緭鍏ョ淮淇粨鏋�" />
+        <el-input
+          v-model="form.maintenanceResult"
+          type="textarea"
+          :autosize="{ minRows: 2, maxRows: 6 }"
+          placeholder="璇疯緭鍏ョ淮淇粨鏋�"
+        />
       </el-form-item>
       <el-form-item label="缁翠慨鐘舵��" prop="status">
         <el-select v-model="form.status" style="width: 100%">
@@ -57,11 +66,13 @@
 </template>
 
 <script setup>
+import { computed } from "vue";
 import FormDialog from "@/components/Dialog/FormDialog.vue";
 import { addMaintain, uploadRepairFile } from "@/api/equipmentManagement/repair";
 import { REPAIR_FILE_TYPE_MAINTAIN } from "@/api/equipmentManagement/repairFileType.js";
 import useFormData from "@/hooks/useFormData";
 import useUserStore from "@/store/modules/user";
+import { userListNoPage } from "@/api/system/user.js";
 import dayjs from "dayjs";
 import { ElMessage } from "element-plus";
 import { UploadFilled } from "@element-plus/icons-vue";
@@ -80,6 +91,23 @@
 const ATTACH_MAX_MB = 50;
 
 const userStore = useUserStore();
+const systemUserNames = ref([]);
+
+const isSystemUser = (name) => {
+  return systemUserNames.value.includes(name);
+};
+
+//  缁翠慨浜烘槸鍚﹀彲缂栬緫锛氬閮ㄤ汉鍛樻椂鍙互缂栬緫淇敼
+const isEditableMaintenanceName = computed(() => {
+  const name = form.maintenanceName;
+  if (!name) return false;
+  return !isSystemUser(name);
+});
+
+const loadSystemUsers = async () => {
+  const res = await userListNoPage();
+  systemUserNames.value = (res?.data || []).map((u) => u.nickName);
+};
 
 const rules = {
   maintenanceName: [{ required: true, message: "璇烽�夋嫨缁翠慨浜�", trigger: "change" }],
@@ -141,7 +169,9 @@
 const sendForm = async () => {
   const valid = await formRef.value?.validate().catch(() => false);
   if (!valid) return;
-  if (form.maintenanceName !== userStore.nickName) {
+  const maintenanceName = form.maintenanceName;
+  // 濡傛灉缁翠慨浜烘槸绯荤粺鐢ㄦ埛涓旈潪褰撳墠鐢ㄦ埛锛岀姝㈡彁浜�
+  if (isSystemUser(maintenanceName) && maintenanceName !== userStore.nickName) {
     ElMessage.warning("浠呮寚瀹氱殑缁翠慨浜哄彲杩涜缁翠慨");
     return;
   }
@@ -183,8 +213,11 @@
   clearAttachmentQueue();
   visible.value = true;
   await nextTick();
+  await loadSystemUsers();
   setForm(row);
-  if (row?.maintenanceName && row.maintenanceName !== userStore.nickName) {
+  const maintenanceName = row?.maintenanceName;
+  // 濡傛灉缁翠慨浜烘槸绯荤粺鐢ㄦ埛涓旈潪褰撳墠鐢ㄦ埛锛岀姝㈡搷浣�
+  if (isSystemUser(maintenanceName) && maintenanceName !== userStore.nickName) {
     ElMessage.warning("浠呮寚瀹氱殑缁翠慨浜哄彲杩涜缁翠慨");
     visible.value = false;
   }

--
Gitblit v1.9.3