From b3fda48ba53b36f6770f399f58290ed4d95d04a6 Mon Sep 17 00:00:00 2001 From: wupengfei <834520024@qq.com> Date: 星期三, 30 四月 2025 09:19:52 +0800 Subject: [PATCH] feat: 接口 --- src/components/commonView/FourStreamsMaterialFileTable.vue | 51 +++++++++++++++++++++++++++++++++++---------------- 1 files changed, 35 insertions(+), 16 deletions(-) diff --git a/src/components/commonView/FourStreamsMaterialFileTable.vue b/src/components/commonView/FourStreamsMaterialFileTable.vue index e51d00d..2ed72e4 100644 --- a/src/components/commonView/FourStreamsMaterialFileTable.vue +++ b/src/components/commonView/FourStreamsMaterialFileTable.vue @@ -9,7 +9,7 @@ :showTableColumnSetting="false" > <template #fileBusinessType="{ row }"> - {{ FourStreamsMaterialFileBusinessTypeEnumText[row.fileBusinessType] }} + {{ BusinessTypeEnumText[row.fileBusinessType] }} </template> <template #operationBtn-uploadBtn="{ data, row }"> <BlFileUpload @@ -25,13 +25,20 @@ </BlFileUpload> </template> </ProTableV2> + <FourStreamsBatchMaterialFileDialog + v-bind="dialogProps" + :name="''" + :zipName="`${BusinessTypeEnumText[currentFourStreamsMaterialFileTableItem.fileBusinessType as any]}`" + v-model:fileList="currentFourStreamsMaterialFileTableItem.fileList" + :showDeleteBtn="showDeleteBtn" + /> </div> </template> -<script setup lang="ts"> +<script setup lang="ts" generic="T"> import { FourStreamsMaterialFileTableProps, - FourStreamsMaterialFileTableItem, + BaseMaterialFileTableItem, FourStreamsMaterialFileBusinessTypeEnumText, } from './types'; import { @@ -40,10 +47,12 @@ defineOperationBtns, BlFileUpload, bolePreview, + useDialog, } 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'; defineOptions({ name: 'FourStreamsMaterialFileTable', @@ -55,9 +64,10 @@ showDownloadBtn: true, showDeleteBtn: true, downloadBtnText: '涓嬭浇', + BusinessTypeEnumText: () => FourStreamsMaterialFileBusinessTypeEnumText, }); -const list = defineModel<FourStreamsMaterialFileTableItem[]>('list'); +const list = defineModel<BaseMaterialFileTableItem<T>[]>('list'); const columns = defineColumns([ { @@ -75,7 +85,7 @@ name: '涓婁紶', }, extraProps: { - hide: (row: FourStreamsMaterialFileTableItem) => { + hide: (row: BaseMaterialFileTableItem<T>) => { if (!props.showUploadBtn) return true; let fileList = row?.fileList?.filter?.((item) => item.status === 'success'); return fileList?.length > 0; @@ -91,7 +101,7 @@ onClick: (row) => handlePreview(row), }, extraProps: { - hide: (row: FourStreamsMaterialFileTableItem) => { + hide: (row: BaseMaterialFileTableItem<T>) => { if (!props.showCheckBtn) return true; let fileList = row?.fileList?.filter?.((item) => item.status === 'success'); if (!fileList?.length) { @@ -115,7 +125,7 @@ onClick: (row) => handleBatchDownload(row), }, extraProps: { - hide: (row: FourStreamsMaterialFileTableItem) => { + hide: (row: BaseMaterialFileTableItem<T>) => { return ( !props.showDownloadBtn || !row?.fileList?.filter?.((item) => item.status === 'success')?.length @@ -135,7 +145,7 @@ onClick: (row) => handleDelete(row), }, extraProps: { - hide: (row: FourStreamsMaterialFileTableItem) => { + hide: (row: BaseMaterialFileTableItem<T>) => { if (!props.showDeleteBtn) return true; let fileList = row?.fileList?.filter?.((item) => item.status === 'success'); return !fileList?.length; @@ -145,18 +155,24 @@ ], }); -async function handleDelete(row: FourStreamsMaterialFileTableItem) { +async function handleDelete(row: BaseMaterialFileTableItem<T>) { try { await Message.deleteMessage(); row.fileList = []; } catch (error) {} } -async function handlePreview(row: FourStreamsMaterialFileTableItem) { +const currentFourStreamsMaterialFileTableItem = ref<BaseMaterialFileTableItem<T>>({ + fileBusinessType: 0 as any, + fileList: [], +}); +const { dialogProps, dialogState } = useDialog(); + +async function handlePreview(row: BaseMaterialFileTableItem<T>) { if (row.fileList.length > 1) { - // currentEnterpriseMaterialFileTableItem.value = row; - // await nextTick(); - // dialogState.dialogVisible = true; + currentFourStreamsMaterialFileTableItem.value = row; + await nextTick(); + dialogState.dialogVisible = true; } else { bolePreview({ fileUrl: row.fileList[0].url, @@ -164,7 +180,7 @@ } } -function handleBatchDownload(row: FourStreamsMaterialFileTableItem) { +async function handleBatchDownload(row: BaseMaterialFileTableItem<T>) { const successFileList = row.fileList.filter((item) => item.status === 'success'); if (successFileList.length === 0) { Message.errorMessage('娌℃湁鍙笅杞界殑鏂囦欢'); @@ -175,8 +191,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