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 | 103 +++++++++++++++++++++++++++++++++------------------
1 files changed, 66 insertions(+), 37 deletions(-)
diff --git a/src/components/commonView/FourStreamsMaterialFileTable.vue b/src/components/commonView/FourStreamsMaterialFileTable.vue
index 2ed72e4..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 }">
- {{ BusinessTypeEnumText[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"
@@ -28,19 +25,19 @@
<FourStreamsBatchMaterialFileDialog
v-bind="dialogProps"
:name="''"
- :zipName="`${BusinessTypeEnumText[currentFourStreamsMaterialFileTableItem.fileBusinessType as any]}`"
- v-model:fileList="currentFourStreamsMaterialFileTableItem.fileList"
+ :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" generic="T">
-import {
- FourStreamsMaterialFileTableProps,
- BaseMaterialFileTableItem,
- FourStreamsMaterialFileBusinessTypeEnumText,
-} from './types';
+import { FourStreamsMaterialFileTableProps } from './types';
import {
ProTableV2,
defineColumns,
@@ -48,11 +45,14 @@
BlFileUpload,
bolePreview,
useDialog,
+ UploadUserFile,
} from '@bole-core/components';
import { downloadFileByUrl } from '@/utils';
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',
@@ -60,19 +60,20 @@
const props = withDefaults(defineProps<FourStreamsMaterialFileTableProps>(), {
showUploadBtn: true,
+ showMaterialExtraFileUploadBtn: false,
showCheckBtn: true,
showDownloadBtn: true,
showDeleteBtn: true,
+ showMaterialExtraFileDeleteBtn: false,
downloadBtnText: '涓嬭浇',
- BusinessTypeEnumText: () => FourStreamsMaterialFileBusinessTypeEnumText,
});
-const list = defineModel<BaseMaterialFileTableItem<T>[]>('list');
+const list = defineModel<CustomerApplyFileTypeListItem[]>('list');
const columns = defineColumns([
{
id: '1',
- enCode: 'fileBusinessType',
+ enCode: 'fileTypeName',
name: '鏉愭枡鍚嶇О',
},
]);
@@ -85,10 +86,14 @@
name: '涓婁紶',
},
extraProps: {
- hide: (row: BaseMaterialFileTableItem<T>) => {
- 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;
},
},
},
@@ -101,9 +106,9 @@
onClick: (row) => handlePreview(row),
},
extraProps: {
- hide: (row: BaseMaterialFileTableItem<T>) => {
+ 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 {
@@ -125,10 +130,10 @@
onClick: (row) => handleBatchDownload(row),
},
extraProps: {
- hide: (row: BaseMaterialFileTableItem<T>) => {
+ hide: (row: CustomerApplyFileTypeListItem) => {
return (
!props.showDownloadBtn ||
- !row?.fileList?.filter?.((item) => item.status === 'success')?.length
+ !row?.listFiles?.filter?.((item) => item.status === 'success')?.length
);
},
},
@@ -145,9 +150,13 @@
onClick: (row) => handleDelete(row),
},
extraProps: {
- hide: (row: BaseMaterialFileTableItem<T>) => {
- 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;
},
},
@@ -155,33 +164,53 @@
],
});
-async function handleDelete(row: BaseMaterialFileTableItem<T>) {
+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) {}
}
-const currentFourStreamsMaterialFileTableItem = ref<BaseMaterialFileTableItem<T>>({
- fileBusinessType: 0 as any,
- fileList: [],
+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: BaseMaterialFileTableItem<T>) {
- if (row.fileList.length > 1) {
+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,
});
}
}
-async function handleBatchDownload(row: BaseMaterialFileTableItem<T>) {
- 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;
--
Gitblit v1.9.1