From 89f387786da0e4383cf06ee162526db54971f9cf Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期四, 23 十月 2025 15:21:16 +0800
Subject: [PATCH] fix: s
---
src/components/commonView/FourStreamsMaterialFileTable.vue | 122 ++++++++++++++++++++++++++++------------
1 files changed, 85 insertions(+), 37 deletions(-)
diff --git a/src/components/commonView/FourStreamsMaterialFileTable.vue b/src/components/commonView/FourStreamsMaterialFileTable.vue
index e51d00d..8272334 100644
--- a/src/components/commonView/FourStreamsMaterialFileTable.vue
+++ b/src/components/commonView/FourStreamsMaterialFileTable.vue
@@ -8,14 +8,11 @@
:operationColumnWidth="240"
:showTableColumnSetting="false"
>
- <template #fileBusinessType="{ row }">
- {{ FourStreamsMaterialFileBusinessTypeEnumText[row.fileBusinessType] }}
- </template>
<template #operationBtn-uploadBtn="{ data, row }">
<BlFileUpload
- v-model:file-url="row.fileList"
+ v-model:file-url="row.listFiles"
multiple
- :limit="1"
+ :limit="99"
ref="uploadRef"
:showTip="false"
:show-file-list="false"
@@ -25,25 +22,37 @@
</BlFileUpload>
</template>
</ProTableV2>
+ <FourStreamsBatchMaterialFileDialog
+ v-bind="dialogProps"
+ :name="''"
+ :zipName="currentFourStreamsMaterialFileTableItem.fileTypeName"
+ :fileSearchTypeId="currentFourStreamsMaterialFileTableItem.fileSearchTypeId"
+ v-model:fileList="currentFourStreamsMaterialFileTableItem.listFiles"
+ :showDeleteBtn="showDeleteBtn"
+ :showMaterialExtraFileDeleteBtn="showMaterialExtraFileDeleteBtn"
+ :yearMonth="date"
+ :onDelete="(file) => handleDialogDelete(currentFourStreamsMaterialFileTableItem, file)"
+ />
</div>
</template>
-<script setup lang="ts">
-import {
- FourStreamsMaterialFileTableProps,
- FourStreamsMaterialFileTableItem,
- FourStreamsMaterialFileBusinessTypeEnumText,
-} from './types';
+<script setup lang="ts" generic="T">
+import { FourStreamsMaterialFileTableProps } from './types';
import {
ProTableV2,
defineColumns,
defineOperationBtns,
BlFileUpload,
bolePreview,
+ useDialog,
+ UploadUserFile,
} from '@bole-core/components';
import { downloadFileByUrl } from '@/utils';
-import { Message, isFileCanPreview } from '@bole-core/core';
+import { Message, isFileCanPreview, downloadWithZip } from '@bole-core/core';
import { useDefineColumns } from '@/hooks';
+import FourStreamsBatchMaterialFileDialog from './FourStreamsBatchMaterialFileDialog.vue';
+import { CustomerApplyFileTypeListItem, EnterpriseApplyFileUtils } from './utils';
+import { FourStreamsExtraMaterialFileSearchType, SearchType } from '@/constants';
defineOptions({
name: 'FourStreamsMaterialFileTable',
@@ -51,18 +60,20 @@
const props = withDefaults(defineProps<FourStreamsMaterialFileTableProps>(), {
showUploadBtn: true,
+ showMaterialExtraFileUploadBtn: false,
showCheckBtn: true,
showDownloadBtn: true,
showDeleteBtn: true,
+ showMaterialExtraFileDeleteBtn: false,
downloadBtnText: '涓嬭浇',
});
-const list = defineModel<FourStreamsMaterialFileTableItem[]>('list');
+const list = defineModel<CustomerApplyFileTypeListItem[]>('list');
const columns = defineColumns([
{
id: '1',
- enCode: 'fileBusinessType',
+ enCode: 'fileTypeName',
name: '鏉愭枡鍚嶇О',
},
]);
@@ -75,10 +86,14 @@
name: '涓婁紶',
},
extraProps: {
- hide: (row: FourStreamsMaterialFileTableItem) => {
- if (!props.showUploadBtn) return true;
- let fileList = row?.fileList?.filter?.((item) => item.status === 'success');
- return fileList?.length > 0;
+ hide: (row: CustomerApplyFileTypeListItem) => {
+ if (EnterpriseApplyFileUtils.isApplyUploadExtraFileSearchTypeId(row.fileSearchTypeId)) {
+ return !props.showMaterialExtraFileUploadBtn;
+ }
+ return !props.showUploadBtn;
+ // if (!props.showUploadBtn) return true;
+ // let fileList = row?.fileList?.filter?.((item) => item.status === 'success');
+ // return fileList?.length > 0;
},
},
},
@@ -91,9 +106,9 @@
onClick: (row) => handlePreview(row),
},
extraProps: {
- hide: (row: FourStreamsMaterialFileTableItem) => {
+ hide: (row: CustomerApplyFileTypeListItem) => {
if (!props.showCheckBtn) return true;
- let fileList = row?.fileList?.filter?.((item) => item.status === 'success');
+ let fileList = row?.listFiles?.filter?.((item) => item.status === 'success');
if (!fileList?.length) {
return true;
} else {
@@ -115,10 +130,10 @@
onClick: (row) => handleBatchDownload(row),
},
extraProps: {
- hide: (row: FourStreamsMaterialFileTableItem) => {
+ hide: (row: CustomerApplyFileTypeListItem) => {
return (
!props.showDownloadBtn ||
- !row?.fileList?.filter?.((item) => item.status === 'success')?.length
+ !row?.listFiles?.filter?.((item) => item.status === 'success')?.length
);
},
},
@@ -135,9 +150,13 @@
onClick: (row) => handleDelete(row),
},
extraProps: {
- hide: (row: FourStreamsMaterialFileTableItem) => {
- if (!props.showDeleteBtn) return true;
- let fileList = row?.fileList?.filter?.((item) => item.status === 'success');
+ hide: (row: CustomerApplyFileTypeListItem) => {
+ if (EnterpriseApplyFileUtils.isApplyUploadExtraFileSearchTypeId(row.fileSearchTypeId)) {
+ if (!props.showMaterialExtraFileDeleteBtn) return true;
+ } else {
+ if (!props.showDeleteBtn) return true;
+ }
+ let fileList = row?.listFiles?.filter?.((item) => item.status === 'success');
return !fileList?.length;
},
},
@@ -145,27 +164,53 @@
],
});
-async function handleDelete(row: FourStreamsMaterialFileTableItem) {
+async function handleDelete(row: CustomerApplyFileTypeListItem) {
try {
- await Message.deleteMessage();
- row.fileList = [];
+ if (row.listFiles.length > 1) {
+ currentFourStreamsMaterialFileTableItem.value = row;
+ await nextTick();
+ dialogState.dialogVisible = true;
+ } else {
+ await Message.deleteMessage();
+ if (props.onDelete) {
+ await props.onDelete(row, row.listFiles[0].id);
+ }
+ row.listFiles = [];
+ }
} catch (error) {}
}
-async function handlePreview(row: FourStreamsMaterialFileTableItem) {
- if (row.fileList.length > 1) {
- // currentEnterpriseMaterialFileTableItem.value = row;
- // await nextTick();
- // dialogState.dialogVisible = true;
+async function handleDialogDelete(
+ row: CustomerApplyFileTypeListItem,
+ listFile: API.CustomerUploadMonthApplyFileTypeDto & UploadUserFile
+) {
+ if (props.onDelete) {
+ await props.onDelete(row, listFile.id);
+ }
+}
+
+const currentFourStreamsMaterialFileTableItem = ref<CustomerApplyFileTypeListItem>({
+ fileSearchTypeId: '',
+ fileTypeName: '',
+ lastUpdateTime: '',
+ listFiles: [],
+});
+const { dialogProps, dialogState } = useDialog();
+
+async function handlePreview(row: CustomerApplyFileTypeListItem) {
+ if (row.listFiles.length > 1) {
+ currentFourStreamsMaterialFileTableItem.value = row;
+ await nextTick();
+ dialogState.dialogVisible = true;
} else {
bolePreview({
- fileUrl: row.fileList[0].url,
+ fileUrl: row.listFiles[0].url,
});
}
}
-function handleBatchDownload(row: FourStreamsMaterialFileTableItem) {
- const successFileList = row.fileList.filter((item) => item.status === 'success');
+async function handleBatchDownload(row: CustomerApplyFileTypeListItem) {
+ const successFileList = row.listFiles.filter((item) => item.status === 'success');
if (successFileList.length === 0) {
Message.errorMessage('娌℃湁鍙笅杞界殑鏂囦欢');
return;
@@ -175,8 +220,11 @@
} else {
// downloadWithZip(
// successFileList.map((item) => ({ data: item.url })),
- // `${AllEnterpriseMaterialFileBusinessTypeEnumText[row.fileBusinessType]}鏉愭枡鏂囦欢`
+ // `${props.BusinessTypeEnumText[row.fileBusinessType as any]}`
// );
+ currentFourStreamsMaterialFileTableItem.value = row;
+ await nextTick();
+ dialogState.dialogVisible = true;
}
}
</script>
--
Gitblit v1.9.1