From d846993ab3a04772fe3c80b0c877fa59f881f7f9 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期一, 18 五月 2026 17:44:29 +0800
Subject: [PATCH] fix: 保养设备附件上传修改
---
src/views/equipmentManagement/upkeep/Form/PlanModal.vue | 84 +++++++++++++++++++++--------------------
1 files changed, 43 insertions(+), 41 deletions(-)
diff --git a/src/views/equipmentManagement/upkeep/Form/PlanModal.vue b/src/views/equipmentManagement/upkeep/Form/PlanModal.vue
index 5f3b50c..6aa9f89 100644
--- a/src/views/equipmentManagement/upkeep/Form/PlanModal.vue
+++ b/src/views/equipmentManagement/upkeep/Form/PlanModal.vue
@@ -115,8 +115,6 @@
} from "@/api/equipmentManagement/upkeep";
import {
listMaintenanceTaskFiles,
- bindMaintenanceTaskFile,
- uploadMaintenanceTaskFile,
delMaintenanceTaskFile,
} from "@/api/equipmentManagement/maintenanceTaskFile";
import { ElMessage } from "element-plus";
@@ -140,6 +138,8 @@
const pendingTempFiles = ref([]);
const planFileList = ref([]);
+// 缂栬緫妯″紡涓嬪凡淇濆瓨浣嗗緟鍒犻櫎鐨勬枃浠跺垪琛�
+const pendingDeleteFiles = ref([]);
const registrantDisplayName = computed(
() => userStore.nickName || userStore.name || "褰撳墠鐧诲綍鐢ㄦ埛"
@@ -198,6 +198,7 @@
const resetAttachmentState = () => {
pendingTempFiles.value = [];
planFileList.value = [];
+ pendingDeleteFiles.value = [];
};
const normalizeFilePreviewUrl = (url = "") => {
@@ -221,6 +222,8 @@
status: "success",
uid: `saved-${item.id}`,
fileId: item.id,
+ // 鏍囪涓哄凡淇濆瓨鐨勬枃浠讹紝涓嶆槸鏂颁笂浼犵殑
+ isNew: false,
}));
};
@@ -239,38 +242,33 @@
const handlePlanFileUpload = async (options) => {
const { file, onSuccess, onError } = options;
try {
- if (id.value) {
- const fd = new FormData();
- fd.append("file", file);
- fd.append("deviceMaintenanceId", String(id.value));
- const res = await uploadMaintenanceTaskFile(fd);
- if (res.code === 200) {
- await loadPlanFiles(id.value);
- onSuccess(res);
- ElMessage.success("闄勪欢涓婁紶鎴愬姛");
- } else {
- onError(new Error(res.msg || "涓婁紶澶辫触"));
- }
- return;
- }
+ // 鏃犺鏂板杩樻槸缂栬緫锛岄兘鍏堜笂浼犲埌涓存椂鐩綍
const res = await uploadTempFile(file);
if (res.code !== 200) {
onError(new Error(res.msg || "涓婁紶澶辫触"));
return;
}
const data = res.data || {};
+ const tempId = data.tempId;
+
+ // 璁板綍涓存椂鏂囦欢淇℃伅
pendingTempFiles.value.push({
- tempId: data.tempId,
+ tempId: tempId,
name: data.originalName || file.name,
+ fileId: id.value ? tempId : undefined,
});
+
onSuccess(res);
planFileList.value.push({
name: data.originalName || file.name,
url: "",
status: "success",
- uid: data.tempId,
- tempId: data.tempId,
+ uid: tempId,
+ tempId: tempId,
+ // 鏍囪涓烘柊涓婁紶鐨勪复鏃舵枃浠�
+ isNew: true,
});
+ ElMessage.success("闄勪欢涓婁紶鎴愬姛");
} catch (e) {
onError(e);
ElMessage.error("闄勪欢涓婁紶澶辫触");
@@ -278,28 +276,29 @@
};
const handlePlanFileRemove = async (file) => {
- if (file.fileId) {
- try {
- await delMaintenanceTaskFile(file.fileId);
- await loadPlanFiles(id.value);
- } catch (e) {
- ElMessage.error("鍒犻櫎闄勪欢澶辫触");
- }
+ // 浠庢樉绀哄垪琛ㄤ腑绉婚櫎
+ planFileList.value = planFileList.value.filter((f) => f.uid !== file.uid);
+
+ const tempId = file.tempId || file.uid;
+ if (file.isNew) {
+ // 鏂颁笂浼犵殑涓存椂鏂囦欢锛岀洿鎺ヤ粠寰呬笂浼犲垪琛ㄧЩ闄�
+ pendingTempFiles.value = pendingTempFiles.value.filter((f) => f.tempId !== tempId);
return;
}
- const tempId = file.tempId || file.uid;
- pendingTempFiles.value = pendingTempFiles.value.filter((f) => f.tempId !== tempId);
- planFileList.value = planFileList.value.filter((f) => (f.tempId || f.uid) !== tempId);
+
+ if (file.fileId) {
+ pendingDeleteFiles.value.push({
+ fileId: file.fileId,
+ name: file.name,
+ });
+ }
};
-const bindPendingFiles = async (planId) => {
- if (!pendingTempFiles.value.length) return;
- for (const item of pendingTempFiles.value) {
- await bindMaintenanceTaskFile({
- tempId: item.tempId,
- name: item.name,
- deviceMaintenanceId: planId,
- });
+// 澶勭悊缂栬緫妯″紡涓嬪緟鍒犻櫎鐨勬枃浠�
+const processPendingDeletes = async () => {
+ if (!pendingDeleteFiles.value.length) return;
+ for (const file of pendingDeleteFiles.value) {
+ await delMaintenanceTaskFile(file.fileId);
}
};
@@ -338,6 +337,10 @@
payload.maintenancePerson = maintainer.nickName;
}
}
+ // 浼犻�掍复鏃舵枃浠禝D鍒楄〃锛岀敱鍚庣缁熶竴澶勭悊
+ if (pendingTempFiles.value.length > 0) {
+ payload.tempFileIds = pendingTempFiles.value.map((f) => f.tempId);
+ }
return payload;
};
@@ -367,6 +370,8 @@
try {
const payload = buildSubmitPayload();
if (id.value) {
+ // 缂栬緫妯″紡锛氬厛澶勭悊寰呭垹闄ょ殑鏂囦欢锛屽啀淇濆瓨琛ㄥ崟
+ await processPendingDeletes();
const { code } = await editUpkeep({ id: unref(id), ...payload });
if (code == 200) {
ElMessage.success("缂栬緫璁″垝鎴愬姛");
@@ -374,12 +379,9 @@
emits("ok");
}
} else {
+ // 鏂板妯″紡锛歵empFileIds 浼氶殢 payload 涓�璧蜂紶鍒板悗绔紝鐢卞悗绔鐞嗕复鏃舵枃浠剁殑鍏宠仈
const res = await addUpkeep(payload);
if (res.code == 200) {
- const planId = res.data?.id;
- if (planId) {
- await bindPendingFiles(planId);
- }
ElMessage.success("鏂板璁″垝鎴愬姛");
visible.value = false;
emits("ok");
--
Gitblit v1.9.3