From 64e47529e29ab013b32d3c09e4044b5b192c3c7a Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期一, 26 十月 2026 17:11:33 +0800
Subject: [PATCH] feat: 完善南通苏珩线缆工业智能系统
---
src/views/basicData/mdm/modules/form.vue | 64 ++++++++++++++++++++++++++++++-
1 files changed, 61 insertions(+), 3 deletions(-)
diff --git a/src/views/basicData/mdm/modules/form.vue b/src/views/basicData/mdm/modules/form.vue
index 5d82e00..e9948c7 100644
--- a/src/views/basicData/mdm/modules/form.vue
+++ b/src/views/basicData/mdm/modules/form.vue
@@ -1,6 +1,4 @@
<script lang="ts" setup>
-import type { MdmItemApi } from '#/api/mdm/item';
-
import { ref } from 'vue';
import { useVbenModal } from "#/packages/effects/common-ui/src";
@@ -8,7 +6,15 @@
import { message } from "ant-design-vue";
import { useVbenForm } from '#/adapter/form';
-import { createItem, getItem, updateItem } from '#/api/mdm/item';
+import {
+ createItem,
+ createTechnicalFile,
+ getItem,
+ getTechnicalFileList,
+ updateItem,
+} from '#/api/mdm/item';
+import type { MdmItemApi } from '#/api/mdm/item';
+import { FileUpload } from '#/components/upload';
import { $t } from '#/locales';
import { useFormSchema, clearUnitListCache, buildCategoryTree } from '../data';
@@ -18,6 +24,8 @@
const emit = defineEmits(['success']);
const formData = ref<MdmItemApi.Item>();
+const technicalFiles = ref<MdmItemApi.TechnicalFile[]>([]);
+const technicalUploadValue = ref<number[]>([]);
const [Form, formApi] = useVbenForm({
commonConfig: {
@@ -52,6 +60,8 @@
async onOpenChange(isOpen: boolean) {
if (!isOpen) {
formData.value = undefined;
+ technicalFiles.value = [];
+ technicalUploadValue.value = [];
return;
}
const data = modalApi.getData<MdmItemApi.Item>();
@@ -70,20 +80,68 @@
// 鍚屾鐘舵�佹槧灏勶細璇︽儏鎺ュ彛杩斿洖 syncedMes锛岃〃鍗曞瓧娈典负 syncMes
formData.value.syncMes = formData.value.syncedMes ?? true;
await formApi.setValues(formData.value);
+ technicalFiles.value = await getTechnicalFileList(data.id);
} finally {
modalApi.unlock();
}
} else {
// 鏂板妯″紡
formData.value = undefined;
+ technicalFiles.value = [];
+ technicalUploadValue.value = [];
await formApi.resetForm();
}
},
});
+
+async function handleTechnicalFileChange(value: unknown) {
+ if (!formData.value?.id || !Array.isArray(value)) {
+ return;
+ }
+ const blobId = value.find((item): item is number => typeof item === 'number');
+ if (!blobId) {
+ return;
+ }
+ try {
+ await createTechnicalFile(formData.value.id, blobId);
+ technicalFiles.value = await getTechnicalFileList(formData.value.id);
+ message.success('鎶�鏈枃浠跺凡淇濆瓨锛屽巻鍙茬増鏈凡淇濈暀');
+ } finally {
+ technicalUploadValue.value = [];
+ }
+}
</script>
<template>
<Modal class="w-[1000px]" :title="formData?.id ? $t('ui.actionTitle.edit', ['鐗╂枡']) : $t('ui.actionTitle.create', ['鐗╂枡'])">
<Form class="mx-4" />
+ <div v-if="formData?.id" class="mx-4 mb-4 rounded border p-4">
+ <div class="mb-3 text-base font-medium">鎶�鏈枃浠跺巻鍙�</div>
+ <FileUpload
+ v-model:value="technicalUploadValue"
+ value-key="id"
+ :max-number="1"
+ :multiple="false"
+ :accept="['.pdf', '.doc', '.docx', '.xls', '.xlsx', '.dwg', '.png', '.jpg', '.jpeg']"
+ help-text="涓婁紶鏂版枃浠朵細鐢熸垚鏂扮殑鐗堟湰锛屽巻鍙叉枃浠朵粛鍙煡鐪�"
+ @change="handleTechnicalFileChange"
+ />
+ <a-table
+ class="mt-3"
+ size="small"
+ :data-source="technicalFiles"
+ :pagination="false"
+ row-key="id"
+ >
+ <a-table-column key="versionNo" title="鐗堟湰" data-index="versionNo" />
+ <a-table-column key="fileName" title="鏂囦欢鍚�" data-index="fileName" />
+ <a-table-column key="createTime" title="涓婁紶鏃堕棿" data-index="createTime" />
+ <a-table-column key="action" title="鎿嶄綔">
+ <template #default="{ record }">
+ <a :href="record.downloadURL || record.previewURL" target="_blank">鏌ョ湅鏂囦欢</a>
+ </template>
+ </a-table-column>
+ </a-table>
+ </div>
</Modal>
</template>
--
Gitblit v1.9.3