From 790aada08682e9fe23aa4f51716cc50915f27552 Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期一, 18 五月 2026 17:40:05 +0800
Subject: [PATCH] 计划保养日期必填
---
src/views/equipmentManagement/upkeep/Form/PlanModal.vue | 108 +++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 94 insertions(+), 14 deletions(-)
diff --git a/src/views/equipmentManagement/upkeep/Form/PlanModal.vue b/src/views/equipmentManagement/upkeep/Form/PlanModal.vue
index efa04a5..ae32aef 100644
--- a/src/views/equipmentManagement/upkeep/Form/PlanModal.vue
+++ b/src/views/equipmentManagement/upkeep/Form/PlanModal.vue
@@ -2,12 +2,12 @@
<FormDialog
v-model="visible"
:title="id ? '缂栬緫璁惧淇濆吇璁″垝' : '鏂板璁惧淇濆吇璁″垝'"
- width="640px"
+ width="680px"
@confirm="sendForm"
@cancel="handleCancel"
@close="handleClose"
>
- <el-form :model="form" label-width="100px">
+ <el-form ref="formRef" :model="form" :rules="rules" label-width="120px">
<el-form-item label="璁惧鍚嶇О">
<el-select
v-model="form.deviceLedgerId"
@@ -32,19 +32,44 @@
disabled
/>
</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 label="淇濆吇浜�" prop="maintenancePerson">
+ <el-select
+ v-model="form.maintenancePerson"
+ filterable
+ default-first-option
+ :reserve-keyword="false"
+ placeholder="璇烽�夋嫨淇濆吇浜�"
+ 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="淇濆吇閮ㄤ綅" prop="maintenanceLocation">
+ <el-input
+ v-model="form.maintenanceLocation"
+ type="textarea"
+ :rows="3"
+ placeholder="璇疯緭鍏ヤ繚鍏婚儴浣�"
+ />
+ </el-form-item>
+ <el-form-item label="淇濆吇鍐呭" prop="maintenanceItems">
+ <el-input
+ v-model="form.maintenanceItems"
+ type="textarea"
+ :rows="3"
+ placeholder="璇疯緭鍏ヤ繚鍏诲唴瀹�"
/>
</el-form-item>
<el-form-item v-if="id" label="淇濅慨鐘舵��">
@@ -54,7 +79,7 @@
<el-option label="澶辫触" :value="2"></el-option>
</el-select>
</el-form-item>
- <el-form-item label="璁″垝淇濆吇鏃ユ湡">
+ <el-form-item label="璁″垝淇濆吇鏃ユ湡" prop="maintenancePlanTime">
<el-date-picker
style="width: 100%"
v-model="form.maintenancePlanTime"
@@ -98,7 +123,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";
@@ -119,6 +145,15 @@
() => userStore.nickName || userStore.name || "褰撳墠鐧诲綍鐢ㄦ埛"
);
+const formRef = ref();
+
+const rules = {
+ maintenancePerson: [{ required: true, message: "璇烽�夋嫨淇濆吇浜�", trigger: "change" }],
+ maintenanceLocation: [{ required: true, message: "璇疯緭鍏ヤ繚鍏婚儴浣�", trigger: "blur" }],
+ maintenanceItems: [{ required: true, message: "璇疯緭鍏ヤ繚鍏诲唴瀹�", trigger: "blur" }],
+ maintenancePlanTime: [{ required: true, message: "璇烽�夋嫨璁″垝淇濆吇鏃ユ湡", trigger: "change" }],
+};
+
const syncCreateUserFromLogin = () => {
if (userStore.id != null && userStore.id !== "") {
form.createUser = userStore.id;
@@ -130,9 +165,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({
@@ -140,7 +182,9 @@
deviceName: undefined,
deviceModel: undefined,
maintenanceLocation: undefined,
+ maintenanceItems: undefined,
maintenancePlanTime: undefined,
+ maintenancePerson: undefined,
createUser: undefined,
status: 0,
});
@@ -265,19 +309,49 @@
form.deviceName = data.deviceName;
form.deviceModel = data.deviceModel;
form.maintenanceLocation = data.maintenanceLocation;
+ form.maintenanceItems = data.maintenanceItems;
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;
@@ -288,17 +362,20 @@
const sendForm = async () => {
syncCreateUserFromLogin();
+ const valid = await formRef.value?.validate().catch(() => false);
+ if (!valid) return;
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 +408,9 @@
resetForm();
resetAttachmentState();
syncCreateUserFromLogin();
+ if (userStore.id != null && userStore.id !== "") {
+ form.maintenancePerson = userStore.id;
+ }
visible.value = true;
};
--
Gitblit v1.9.3