diff --git a/src/api/purchase/purchasingrequisition.ts b/src/api/purchase/purchasingrequisition.ts
index bef29cb..5f78f36 100644
--- a/src/api/purchase/purchasingrequisition.ts
+++ b/src/api/purchase/purchasingrequisition.ts
@@ -359,3 +359,15 @@ export function listDownloadUrls(purchaseId: string | number) {
});
}
+/**
+ * 更新采购材料(部门申请人或负责人重新上传文件)
+ * @param data 包含purchaseId和fileIds的对象
+ */
+export function updateFiles(data: { purchaseId: string; fileIds: string[] }) {
+ return request({
+ url: '/purchase/purchasingfiles/updateFiles',
+ method: 'post',
+ data
+ });
+}
+
diff --git a/src/views/purchase/purchasingrequisition/FileArchiveDialog.vue b/src/views/purchase/purchasingrequisition/FileArchiveDialog.vue
index 6d36e4c..6d6e05d 100644
--- a/src/views/purchase/purchasingrequisition/FileArchiveDialog.vue
+++ b/src/views/purchase/purchasingrequisition/FileArchiveDialog.vue
@@ -32,7 +32,7 @@
class="file-table"
>
-
+
@@ -40,13 +40,21 @@
-
+
{{ row.fileTypeDesc || '未知类型' }}
-
+
+
+ 预览
+
关闭
+
+
+
+
+
+
+
+
+
diff --git a/src/views/purchase/purchasingrequisition/index.vue b/src/views/purchase/purchasingrequisition/index.vue
index 3a13a3a..607bf27 100644
--- a/src/views/purchase/purchasingrequisition/index.vue
+++ b/src/views/purchase/purchasingrequisition/index.vue
@@ -295,6 +295,9 @@
+
+
+
@@ -348,12 +351,12 @@
import { ref, reactive, defineAsyncComponent, onMounted, computed } from 'vue'
import { useRouter } from 'vue-router'
import { BasicTableProps, useTable } from "/@/hooks/table";
-import { getPage, delObj, submitObj, getApplyTemplateDownloadUrl, getFileApplyTemplateDownloadUrl, getDeptMembers, saveRepresentor, listDownloadUrls } from "/@/api/purchase/purchasingrequisition";
+import { getPage, delObj, submitObj, getApplyTemplateDownloadUrl, getFileApplyTemplateDownloadUrl, getDeptMembers, saveRepresentor, listDownloadUrls, updateFiles } from "/@/api/purchase/purchasingrequisition";
import { useMessage, useMessageBox } from "/@/hooks/message";
import { useAuth } from '/@/hooks/auth';
import { getDicts } from '/@/api/admin/dict';
import { getTree } from '/@/api/purchase/purchasingcategory';
-import { List, Document, DocumentCopy, Search, Money, CircleCheck, InfoFilled, Calendar, OfficeBuilding, Warning, DocumentChecked, Edit, Delete, Upload, FolderOpened, Download, User } from '@element-plus/icons-vue'
+import { List, Document, DocumentCopy, Search, Money, CircleCheck, InfoFilled, Calendar, OfficeBuilding, Warning, DocumentChecked, Edit, Delete, Upload, FolderOpened, Download, User, RefreshRight } from '@element-plus/icons-vue'
import other from '/@/utils/other'
import { Session } from '/@/utils/storage'
@@ -369,6 +372,7 @@ const ActionDropdown = defineAsyncComponent(() => import('/@/components/tools/ac
const PurchasingAcceptModal = defineAsyncComponent(() => import('./accept/PurchasingAcceptModal.vue'));
const FlowCommentTimeline = defineAsyncComponent(() => import('/@/views/jsonflow/comment/timeline.vue'));
const FileArchiveDialog = defineAsyncComponent(() => import('./FileArchiveDialog.vue'));
+const UpdateFilesDialog = defineAsyncComponent(() => import('./UpdateFilesDialog.vue'));
// const DocAuditDialog = defineAsyncComponent(() => import('./docAudit/DocAuditDialog.vue'));
// 字典数据和品目树数据
@@ -398,6 +402,7 @@ const currFlowCommentType = ref<'apply' | 'file'>('apply')
const implementFormRef = ref()
const fileArchiveDialogRef = ref()
+const updateFilesDialogRef = ref()
/** 采购代表弹窗 */
const representorDialogVisible = ref(false)
@@ -636,6 +641,12 @@ const getActionMenuItems = (row: any) => {
icon: User,
visible: () => isDeptAuditRole.value,
},
+ {
+ command: 'updateFiles',
+ label: '更新材料',
+ icon: RefreshRight,
+ visible: () => isCompleted && hasAuth('purchase_purchasingapply_edit'),
+ },
// {
// command: 'downloadFileApply',
// label: '下载文件审批表',
@@ -691,6 +702,9 @@ const handleMoreCommand = (command: string, row: any) => {
case 'representor':
openRepresentorDialog(row);
break;
+ case 'updateFiles':
+ handleUpdateFiles(row);
+ break;
}
};