From 15b3efe51e1f93b1446e0cc22101626eb27e610d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=90=B4=E7=BA=A2=E5=85=B5?= <374362909@qq.com>
Date: Sat, 7 Mar 2026 17:32:17 +0800
Subject: [PATCH] fix
---
src/api/purchase/purchasingrequisition.ts | 24 ++
.../SupplementFilesDialog.vue | 249 ++++++++++++++++
.../purchase/purchasingrequisition/index.vue | 43 +++
.../purchasingrequisition/supplement-view.vue | 277 ++++++++++++++++++
4 files changed, 593 insertions(+)
create mode 100644 src/views/purchase/purchasingrequisition/SupplementFilesDialog.vue
create mode 100644 src/views/purchase/purchasingrequisition/supplement-view.vue
diff --git a/src/api/purchase/purchasingrequisition.ts b/src/api/purchase/purchasingrequisition.ts
index 828215f..28461c2 100644
--- a/src/api/purchase/purchasingrequisition.ts
+++ b/src/api/purchase/purchasingrequisition.ts
@@ -392,3 +392,27 @@ export function updateFiles(data: { purchaseId: string; fileIds: string[] }) {
data,
});
}
+
+export function tempStoreSupplement(applyId: string, fileIds: string[]) {
+ return request({
+ url: '/purchase/purchasingapply/supplement/temp-store',
+ method: 'post',
+ data: { applyId, fileIds },
+ });
+}
+
+export function submitSupplement(applyId: string) {
+ return request({
+ url: '/purchase/purchasingapply/supplement/submit',
+ method: 'post',
+ data: { id: applyId },
+ });
+}
+
+export function getSupplementFileType(purchaseType: string) {
+ return request({
+ url: '/purchase/purchasingapply/supplement/file-type',
+ method: 'get',
+ params: { purchaseType },
+ });
+}
diff --git a/src/views/purchase/purchasingrequisition/SupplementFilesDialog.vue b/src/views/purchase/purchasingrequisition/SupplementFilesDialog.vue
new file mode 100644
index 0000000..01fee83
--- /dev/null
+++ b/src/views/purchase/purchasingrequisition/SupplementFilesDialog.vue
@@ -0,0 +1,249 @@
+
+
+
+
+
+
+
+ {{ applyData.purchaseNo || '-' }}
+ {{ applyData.projectName || '-' }}
+ {{ applyData.budget ? Number(applyData.budget).toLocaleString() + ' 元' : '-' }}
+ {{ purchaseTypeLabelComputed || '-' }}
+ {{ applyData.projectContent || '-' }}
+
+
+ 采购相关文件补充上传
+
+
+
+ {{ requiredFileTypeName }}必传
+ 当前采购方式无需补充材料
+
+
+
+
+
+
+ {{ fileTips }}
+
+
+
+
+
+
+ 取消
+ 暂存
+ 提交
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/purchase/purchasingrequisition/index.vue b/src/views/purchase/purchasingrequisition/index.vue
index e6e351f..9b72eac 100644
--- a/src/views/purchase/purchasingrequisition/index.vue
+++ b/src/views/purchase/purchasingrequisition/index.vue
@@ -292,6 +292,9 @@
+
+
+
@@ -405,6 +408,7 @@ const FlowCommentTimeline = defineAsyncComponent(() => import('/@/views/jsonflow
const FileArchiveDialog = defineAsyncComponent(() => import('./FileArchiveDialog.vue'));
const UpdateFilesDialog = defineAsyncComponent(() => import('./UpdateFilesDialog.vue'));
const ContractDialog = defineAsyncComponent(() => import('./contract/ContractDialog.vue'));
+const SupplementFilesDialog = defineAsyncComponent(() => import('./SupplementFilesDialog.vue'));
// const DocAuditDialog = defineAsyncComponent(() => import('./docAudit/DocAuditDialog.vue'));
// 字典数据和品目树数据
@@ -436,6 +440,7 @@ const implementFormRef = ref();
const fileArchiveDialogRef = ref();
const updateFilesDialogRef = ref();
const contractDialogRef = ref();
+const supplementFilesDialogRef = ref();
/** 采购代表弹窗 */
const representorDialogVisible = ref(false);
@@ -712,6 +717,18 @@ const getActionMenuItems = (row: any) => {
icon: DocumentChecked,
visible: () => isCompleted,
},
+{
+ command: 'supplementFiles',
+ label: '补充材料',
+ icon: Upload,
+ visible: () => isCompleted && row?.purchaseMode === '1' && row?.purchaseChannel === '1' && hasAuth('purchase_supplement'),
+ },
+ {
+ command: 'submitSupplementFiles',
+ label: '提交补充材料',
+ icon: Upload,
+ visible: () => isCompleted && row?.purchaseMode === '1' && row?.purchaseChannel === '1' && row?.supplementFlowStatus === '-1' && hasAuth('purchase_supplement'),
+ },
// {
// command: 'downloadFileApply',
// label: '下载文件审批表',
@@ -773,6 +790,12 @@ const handleMoreCommand = (command: string, row: any) => {
case 'contract':
handleContract(row);
break;
+ case 'supplementFiles':
+ handleSupplementFiles(row);
+ break;
+ case 'submitSupplementFiles':
+ handleSubmitSupplementFiles(row);
+ break;
}
};
@@ -801,6 +824,26 @@ const handleContract = async (row: any) => {
}
};
+/** 补充材料 */
+const handleSupplementFiles = (row: any) => {
+ const id = row?.id ?? row?.purchaseId;
+ if (!id) {
+ useMessage().warning('无法获取采购申请ID');
+ return;
+ }
+ supplementFilesDialogRef.value?.open(String(id));
+};
+
+/** 提交补充材料 */
+const handleSubmitSupplementFiles = async (row: any) => {
+ const id = row?.id ?? row?.purchaseId;
+ if (!id) {
+ useMessage().warning('无法获取采购申请ID');
+ return;
+ }
+ supplementFilesDialogRef.value?.open(String(id));
+};
+
/** 下载审批表 */
const handleDownloadApply = (row: any) => {
const id = row?.id ?? row?.purchaseId;
diff --git a/src/views/purchase/purchasingrequisition/supplement-view.vue b/src/views/purchase/purchasingrequisition/supplement-view.vue
new file mode 100644
index 0000000..3f11bcd
--- /dev/null
+++ b/src/views/purchase/purchasingrequisition/supplement-view.vue
@@ -0,0 +1,277 @@
+
+
+
+
+
+
+
+ {{ applyData.purchaseNo || '-' }}
+ {{ applyData.projectName || '-' }}
+ {{ applyData.budget ? Number(applyData.budget).toLocaleString() + ' 元' : '-' }}
+ {{ purchaseTypeLabel || '-' }}
+ {{ applyData.projectContent || '-' }}
+ {{ applyData.createByName || '-' }}
+ {{ applyData.deptName || '-' }}
+
+
+
+
+
+
+
+
+
+ {{ requiredFileTypeName }}
+
+
+
+
+
+
+
+ 预览
+ 下载
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file