From 1a18bfbeeeb42c118cef061ff8dd383c708826aa Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期五, 13 三月 2026 16:31:14 +0800
Subject: [PATCH] fix: 设备保养:可以在app上面进行设备保养计划新增,可多选设备(不需要设备编号),计划新增后,需定时生成多条任务(根据选择的多个设备生成多个任务)
---
src/views/equipmentManagement/upkeep/Form/formDia.vue | 85 ++++++++++++++++++++++++++++--------------
1 files changed, 56 insertions(+), 29 deletions(-)
diff --git a/src/views/equipmentManagement/upkeep/Form/formDia.vue b/src/views/equipmentManagement/upkeep/Form/formDia.vue
index 66bf067..8b30fb7 100644
--- a/src/views/equipmentManagement/upkeep/Form/formDia.vue
+++ b/src/views/equipmentManagement/upkeep/Form/formDia.vue
@@ -11,8 +11,19 @@
<el-form ref="formRef" :model="form" :rules="rules" label-width="120px">
<el-row>
<el-col :span="12">
- <el-form-item label="璁惧鍚嶇О" prop="taskId">
- <el-select v-model="form.taskId" @change="setDeviceModel" filterable>
+ <el-form-item label="浠诲姟鍚嶇О" prop="taskName">
+ <el-input v-model="form.taskName" placeholder="璇疯緭鍏ヤ换鍔″悕绉�" clearable />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="璁惧鍚嶇О" prop="deviceIds">
+ <el-select
+ v-model="form.deviceIds"
+ multiple
+ filterable
+ placeholder="璇烽�夋嫨璁惧"
+ @change="handleDeviceChange"
+ >
<el-option
v-for="(item, index) in deviceOptions"
:key="index"
@@ -22,17 +33,7 @@
</el-select>
</el-form-item>
</el-col>
- <el-col :span="12">
- <el-form-item label="瑙勬牸鍨嬪彿">
- <el-input
- v-model="form.deviceModel"
- placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�"
- disabled
- />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row>
+
<el-col :span="12">
<el-form-item label="褰曞叆浜�" prop="inspector">
<el-select
@@ -151,7 +152,8 @@
const data = reactive({
form: {
taskId: undefined,
- taskName: undefined,
+ deviceIds: [],
+ taskName: "",
// 褰曞叆浜猴細鍗曢�変竴涓敤鎴� id
inspector: undefined,
remarks: '',
@@ -163,7 +165,8 @@
registrationDate: ''
},
rules: {
- taskId: [{ required: true, message: "璇烽�夋嫨璁惧", trigger: "change" },],
+ deviceIds: [{ required: true, message: "璇烽�夋嫨璁惧", trigger: "change" }],
+ taskName: [{ required: true, message: "璇疯緭鍏ヤ换鍔″悕绉�", trigger: "blur" }],
inspector: [{ required: true, message: "璇烽�夋嫨褰曞叆浜�", trigger: "blur" },],
registrationDate: [{ required: true, message: "璇烽�夋嫨鐧昏鏃堕棿", trigger: "change" }]
}
@@ -176,14 +179,32 @@
deviceOptions.value = data;
};
-// 閫夋嫨璁惧鏃讹紝鍥炲~璁惧鍚嶇О(taskName)鍜岃鏍煎瀷鍙�(deviceModel)
-const setDeviceModel = (id) => {
- const option = deviceOptions.value.find((item) => item.id === id);
- if (option) {
- form.value.taskId = option.id;
- form.value.taskName = option.deviceName;
- form.value.deviceModel = option.deviceModel;
+const normalizeIdList = (val) => {
+ if (!val) return []
+ if (Array.isArray(val)) return val
+ if (typeof val === 'string') {
+ const s = val.trim()
+ // JSON 瀛楃涓诧細"[1,2,3]"
+ if (s.startsWith('[') && s.endsWith(']')) {
+ try {
+ const arr = JSON.parse(s)
+ return Array.isArray(arr) ? arr : []
+ } catch {
+ return []
+ }
+ }
+ // 閫楀彿鍒嗛殧锛�"1,2,3"
+ return s.split(',').map(v => v.trim()).filter(Boolean)
}
+ return []
+}
+
+// 閫夋嫨璁惧鏃讹紝椤哄甫鍥炲~瑙勬牸鍨嬪彿锛堝閫夋椂鍙栫涓�涓澶囩殑瑙勬牸鍨嬪彿锛�
+const handleDeviceChange = () => {
+ const selectedIds = form.value.deviceIds || []
+ const firstId = Array.isArray(selectedIds) ? selectedIds[0] : undefined
+ const firstDevice = deviceOptions.value.find(d => String(d.id) === String(firstId))
+ form.value.deviceModel = firstDevice?.deviceModel || firstDevice?.model || form.value.deviceModel
}
// 鎵撳紑寮规
@@ -203,16 +224,19 @@
await loadDeviceName();
if (type === 'edit' && row) {
- form.value = { ...row }
+ form.value = { ...form.value, ...row }
// 缂栬緫鏃剁敤鎺ュ彛杩斿洖鐨� registrantId 鍥炴樉褰曞叆浜�
if (row.registrantId) {
form.value.inspector = row.registrantId
}
- // 濡傛灉鏈夎澶嘔D锛岃嚜鍔ㄨ缃澶囦俊鎭�
- if (form.value.taskId) {
- setDeviceModel(form.value.taskId);
- }
+ // 缂栬緫鍥炴樉锛歞eviceIds 鍙兘鏄� JSON 瀛楃涓� / 閫楀彿鍒嗛殧 / 鏁扮粍
+ const ids = normalizeIdList(row.deviceIds ?? row.taskIds)
+ form.value.deviceIds = ids.map(v => {
+ const n = Number(v)
+ return Number.isNaN(n) ? v : n
+ })
+ handleDeviceChange()
} else if (type === 'add') {
// 鏂板鏃惰缃櫥璁版棩鏈熶负褰撳ぉ
form.value.registrationDate = getCurrentDate();
@@ -236,8 +260,8 @@
// 閲嶇疆琛ㄥ崟鏁版嵁纭繚璁惧淇℃伅姝g‘閲嶇疆
form.value = {
taskId: undefined,
- taskName: undefined,
- inspector: undefined,
+ deviceIds: [],
+ taskName: "",
inspector: undefined,
remarks: '',
frequencyType: '',
@@ -255,6 +279,8 @@
if (valid) {
try {
const payload = { ...form.value }
+ // 鍚庣瑕佹眰锛歞eviceIds 浠� JSON.stringify([1,2,3]) 褰㈠紡浼犲弬
+ payload.deviceIds = JSON.stringify(form.value.deviceIds || [])
// 涓嶅啀鍚戝悗绔紶淇濆吇浜哄瓧娈碉紝浠呬娇鐢ㄦ帴鍙h姹傜殑 registrant / registrantId
// 鏍规嵁閫夋嫨鐨�"褰曞叆浜�"璁剧疆 registrant / registrantId
if (payload.inspector) {
@@ -268,6 +294,7 @@
}
delete payload.inspector
delete payload.inspectorIds
+ delete payload.taskIds
if (payload.frequencyType === 'WEEKLY') {
let frequencyDetail = ''
--
Gitblit v1.9.3