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 ++++++++++++++++++--
src/views/equipmentManagement/repair/Modal/RepairModal.vue | 6 ++-
src/views/equipmentManagement/repair/index.vue | 17 +++++++-
3 files changed, 56 insertions(+), 8 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;
}
diff --git a/src/views/equipmentManagement/repair/Modal/RepairModal.vue b/src/views/equipmentManagement/repair/Modal/RepairModal.vue
index ab64cbf..8b11db6 100644
--- a/src/views/equipmentManagement/repair/Modal/RepairModal.vue
+++ b/src/views/equipmentManagement/repair/Modal/RepairModal.vue
@@ -74,8 +74,10 @@
<el-form-item label="缁翠慨浜�" required>
<el-select
v-model="form.maintenanceName"
- placeholder="璇烽�夋嫨缁翠慨浜�"
+ placeholder="璇烽�夋嫨鎴栬緭鍏ョ淮淇汉"
filterable
+ allow-create
+ default-first-option
clearable
style="width: 100%"
>
@@ -351,7 +353,7 @@
return;
}
if (!form.maintenanceName) {
- ElMessage.warning("璇烽�夋嫨缁翠慨浜�");
+ ElMessage.warning("璇烽�夋嫨鎴栬緭鍏ョ淮淇汉");
return;
}
loading.value = true;
diff --git a/src/views/equipmentManagement/repair/index.vue b/src/views/equipmentManagement/repair/index.vue
index 3f48df5..c65ffee 100644
--- a/src/views/equipmentManagement/repair/index.vue
+++ b/src/views/equipmentManagement/repair/index.vue
@@ -242,6 +242,7 @@
import RepairDetailModal from "./Modal/RepairDetailModal.vue";
import { getToken } from "@/utils/auth";
import useUserStore from "@/store/modules/user";
+import { userListNoPage } from "@/api/system/user.js";
import {
REPAIR_FILE_TYPE_PROBLEM,
isProblemRepairFile,
@@ -261,6 +262,14 @@
const acceptanceModalRef = ref();
const repairDetailModalRef = ref();
const userStore = useUserStore();
+const systemUserNames = ref([]);
+
+const loadSystemUsers = async () => {
+ const res = await userListNoPage();
+ systemUserNames.value = (res?.data || []).map((u) => u.nickName);
+};
+
+const isSystemUser = (name) => systemUserNames.value.includes(name);
// 琛ㄦ牸澶氶�夋閫変腑椤�
const multipleList = ref([]);
@@ -424,11 +433,14 @@
const isCurrentUser = (name) => !!name && name === userStore.nickName;
const canEdit = (row) => row.status === 0;
-/** 浠呮姤淇椂鎸囧畾鐨勭淮淇汉鍙淮淇� */
+// 浠呮姤淇椂鎸囧畾鐨勭淮淇汉鎴栧閮ㄤ汉鍛樻椂鐢辨姤淇汉鎻愪氦缁翠慨
const canMaintain = (row) => {
if (row.status !== 0) return false;
if (!row.maintenanceName) return false;
- return isCurrentUser(row.maintenanceName);
+ if (isSystemUser(row.maintenanceName)) {
+ return isCurrentUser(row.maintenanceName);
+ }
+ return true;
};
const canDelete = (row) => row.status === 0;
/** 浠呮姤淇椂鎸囧畾鐨勯獙鏀朵汉鍙獙鏀� */
@@ -645,6 +657,7 @@
onMounted(() => {
getTableData();
+ loadSystemUsers();
});
</script>
--
Gitblit v1.9.3