From e9dda9e6c52cb737267185f5118ded73c0053115 Mon Sep 17 00:00:00 2001 From: wupengfei <834520024@qq.com> Date: 星期二, 06 五月 2025 17:13:41 +0800 Subject: [PATCH] feat: 接口 --- src/constants/fourStreams.ts | 73 +++ src/views/EnterpriseInfo/components/RewardGrantRecordView.vue | 5 src/components/commonView/FourStreamsMaterialFileTableV2.vue | 206 ++++++++++ src/services/api/typings.d.ts | 62 ++ src/components/commonView/MateriaDetailDialog.vue | 5 src/services/api/EnterpriseApplyFile.ts | 18 src/views/MaterialReview/MaterialReviewAudit.vue | 61 ++ src/components/commonView/MaterialInfoView.vue | 64 +-- src/components/commonView/DetailView.vue | 11 src/views/Reward/RewardGrant.vue | 20 src/constants/reward.ts | 4 src/components/commonView/types.ts | 84 --- src/components/commonView/utils/index.ts | 131 ++++++ src/components/commonView/FourStreamsMaterialFileTable.vue | 89 ++- src/views/Reward/RewardDeclareDetail.vue | 71 +++ src/constants/index.ts | 1 src/services/api/ParkBountyApply.ts | 69 +++ src/components/commonView/FourStreamsMaterialFileDialogV2.vue | 50 ++ src/views/MaterialReview/MaterialReviewDetail.vue | 69 +++ 19 files changed, 875 insertions(+), 218 deletions(-) diff --git a/src/components/commonView/DetailView.vue b/src/components/commonView/DetailView.vue index e0a4643..40ca771 100644 --- a/src/components/commonView/DetailView.vue +++ b/src/components/commonView/DetailView.vue @@ -1,6 +1,6 @@ <template> <ProForm :model="form" label-width="160px" label-position="left" is-read> - <ChunkCellV2 title="鏉愭枡瀹℃牳" style="margin-bottom: 0"> + <ChunkCellV2 title="鎵规淇℃伅" style="margin-bottom: 0"> <BatchInfoView :form="form"></BatchInfoView> </ChunkCellV2> <ChunkCellV2 title="姹囨�绘潗鏂�" style="margin-bottom: 0"> @@ -19,6 +19,7 @@ import BatchInfoView from './BatchInfoView.vue'; import MaterialInfoView from './MaterialInfoView.vue'; import SettlementMaterialInfoView from './SettlementMaterialInfoView.vue'; +import { CustomerApplyFileTypeListItem } from './utils'; defineOptions({ name: 'DetailView', @@ -32,11 +33,13 @@ parkTypeName: string; applyMonth: string; applySumAmount: number; - enterpriseTaxSubFileUrl: UploadUserFile[]; - enterpriseOperateFileUrl: UploadUserFile[]; + /** 濂栧姳閲戝垎閰嶈〃 */ bountyAssignFileUlr: UploadUserFile[]; + /** 濂栧姳閲戞眹鎬昏〃 */ bountyCollectFileUrl: UploadUserFile[]; - enterpriseRelateFileUrl: UploadUserFile[]; + parkCollectFileList: CustomerApplyFileTypeListItem[]; + /** 鏄惁鏀寔骞冲彴鍏呭�� */ + suportPlatRecharge?: boolean; }; }; diff --git a/src/components/commonView/FourStreamsMaterialFileDialogV2.vue b/src/components/commonView/FourStreamsMaterialFileDialogV2.vue new file mode 100644 index 0000000..c4f28b0 --- /dev/null +++ b/src/components/commonView/FourStreamsMaterialFileDialogV2.vue @@ -0,0 +1,50 @@ +<template> + <ProDialog :title="title" v-model="visible" destroy-on-close draggable width="800px"> + <FourStreamsMaterialFileTableV2 v-model:list="form.list" v-bind="props" /> + <template #footer> + <span class="dialog-footer"> + <el-button type="primary" @click="handleConfirm">纭� 瀹�</el-button> + </span> + </template> + </ProDialog> +</template> + +<script setup lang="ts" generic="T"> +import { ProDialog } from '@bole-core/components'; +import FourStreamsMaterialFileTableV2 from './FourStreamsMaterialFileTableV2.vue'; +import { FourStreamsMaterialFileTableProps, BaseMaterialFileTableItem } from './types'; + +defineOptions({ + name: 'FourStreamsMaterialFileDialogV2', +}); + +type Props = FourStreamsMaterialFileTableProps & { + title?: string; + BusinessTypeEnumText: { [key: number]: string }; +}; + +const props = withDefaults(defineProps<Props>(), { + showUploadBtn: true, + showCheckBtn: true, + showDownloadBtn: true, + showDeleteBtn: true, + title: '鏉愭枡璇︽儏', +}); + +const visible = defineModel({ type: Boolean }); + +type Form = { + list: BaseMaterialFileTableItem<T>[]; +}; + +const form = defineModel<Form>('form'); + +const emit = defineEmits<{ + (e: 'onConfirm'): void; + (e: 'onCancel'): void; +}>(); + +function handleConfirm() { + emit('onConfirm'); +} +</script> diff --git a/src/components/commonView/FourStreamsMaterialFileTable.vue b/src/components/commonView/FourStreamsMaterialFileTable.vue index 2ed72e4..606f5de 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,17 @@ <FourStreamsBatchMaterialFileDialog v-bind="dialogProps" :name="''" - :zipName="`${BusinessTypeEnumText[currentFourStreamsMaterialFileTableItem.fileBusinessType as any]}`" - v-model:fileList="currentFourStreamsMaterialFileTableItem.fileList" + :zipName="currentFourStreamsMaterialFileTableItem.fileTypeName" + v-model:fileList="currentFourStreamsMaterialFileTableItem.listFiles" :showDeleteBtn="showDeleteBtn" + :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 +43,13 @@ 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 } from './utils'; defineOptions({ name: 'FourStreamsMaterialFileTable', @@ -64,15 +61,14 @@ showDownloadBtn: true, showDeleteBtn: true, 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 +81,11 @@ 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) => { + return !props.showUploadBtn; + // if (!props.showUploadBtn) return true; + // let fileList = row?.fileList?.filter?.((item) => item.status === 'success'); + // return fileList?.length > 0; }, }, }, @@ -101,9 +98,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 +122,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 +142,9 @@ onClick: (row) => handleDelete(row), }, extraProps: { - hide: (row: BaseMaterialFileTableItem<T>) => { + hide: (row: CustomerApplyFileTypeListItem) => { if (!props.showDeleteBtn) return true; - let fileList = row?.fileList?.filter?.((item) => item.status === 'success'); + let fileList = row?.listFiles?.filter?.((item) => item.status === 'success'); return !fileList?.length; }, }, @@ -155,33 +152,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; diff --git a/src/components/commonView/FourStreamsMaterialFileTableV2.vue b/src/components/commonView/FourStreamsMaterialFileTableV2.vue new file mode 100644 index 0000000..eff3fc1 --- /dev/null +++ b/src/components/commonView/FourStreamsMaterialFileTableV2.vue @@ -0,0 +1,206 @@ +<template> + <div> + <ProTableV2 + :tableData="list" + :columns="columns" + :autoHeight="false" + :operationBtns="columnsProps.operationBtns" + :operationColumnWidth="240" + :showTableColumnSetting="false" + > + <template #fileBusinessType="{ row }"> + {{ BusinessTypeEnumText[row.fileBusinessType] }} + </template> + <template #operationBtn-uploadBtn="{ data, row }"> + <BlFileUpload + v-model:file-url="row.fileList" + multiple + :limit="1" + ref="uploadRef" + :showTip="false" + :show-file-list="false" + class="pro-table-operation-btn upload-style-btn" + > + <el-button text type="primary" class="pro-table-operation-btn">涓婁紶</el-button> + </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" generic="T"> +import { FourStreamsMaterialFileTableProps, BaseMaterialFileTableItem } from './types'; +import { + ProTableV2, + defineColumns, + defineOperationBtns, + BlFileUpload, + bolePreview, + useDialog, +} 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 { FourStreamsMaterialFileBusinessTypeEnumText } from '@/constants'; + +defineOptions({ + name: 'FourStreamsMaterialFileTableV2', +}); + +type Props = FourStreamsMaterialFileTableProps & { + BusinessTypeEnumText: { [key: number]: string }; +}; + +const props = withDefaults(defineProps<Props>(), { + showUploadBtn: true, + showCheckBtn: true, + showDownloadBtn: true, + showDeleteBtn: true, + downloadBtnText: '涓嬭浇', + BusinessTypeEnumText: () => FourStreamsMaterialFileBusinessTypeEnumText, +}); + +const list = defineModel<BaseMaterialFileTableItem<T>[]>('list'); + +const columns = defineColumns([ + { + id: '1', + enCode: 'fileBusinessType', + name: '鏉愭枡鍚嶇О', + }, +]); + +const columnsProps = useDefineColumns({ + operationBtns: [ + { + data: { + enCode: 'uploadBtn', + name: '涓婁紶', + }, + extraProps: { + hide: (row: BaseMaterialFileTableItem<T>) => { + if (!props.showUploadBtn) return true; + let fileList = row?.fileList?.filter?.((item) => item.status === 'success'); + return fileList?.length > 0; + }, + }, + }, + { + data: { + enCode: 'detailBtn', + name: '鏌ョ湅', + }, + emits: { + onClick: (row) => handlePreview(row), + }, + extraProps: { + hide: (row: BaseMaterialFileTableItem<T>) => { + if (!props.showCheckBtn) return true; + let fileList = row?.fileList?.filter?.((item) => item.status === 'success'); + if (!fileList?.length) { + return true; + } else { + if (fileList.length > 1) { + return false; + } else { + return !isFileCanPreview(fileList[0].path); + } + } + }, + }, + }, + { + data: { + enCode: 'downloadBtn', + name: props.downloadBtnText, + }, + emits: { + onClick: (row) => handleBatchDownload(row), + }, + extraProps: { + hide: (row: BaseMaterialFileTableItem<T>) => { + return ( + !props.showDownloadBtn || + !row?.fileList?.filter?.((item) => item.status === 'success')?.length + ); + }, + }, + }, + { + data: { + enCode: 'delBtn', + name: '鍒犻櫎', + }, + props: { + type: 'danger', + }, + emits: { + onClick: (row) => handleDelete(row), + }, + extraProps: { + hide: (row: BaseMaterialFileTableItem<T>) => { + if (!props.showDeleteBtn) return true; + let fileList = row?.fileList?.filter?.((item) => item.status === 'success'); + return !fileList?.length; + }, + }, + }, + ], +}); + +async function handleDelete(row: BaseMaterialFileTableItem<T>) { + try { + await Message.deleteMessage(); + row.fileList = []; + } catch (error) {} +} + +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) { + currentFourStreamsMaterialFileTableItem.value = row; + await nextTick(); + dialogState.dialogVisible = true; + } else { + bolePreview({ + fileUrl: row.fileList[0].url, + }); + } +} + +async function handleBatchDownload(row: BaseMaterialFileTableItem<T>) { + const successFileList = row.fileList.filter((item) => item.status === 'success'); + if (successFileList.length === 0) { + Message.errorMessage('娌℃湁鍙笅杞界殑鏂囦欢'); + return; + } + if (successFileList.length === 1) { + downloadFileByUrl(successFileList[0].url); + } else { + // downloadWithZip( + // successFileList.map((item) => ({ data: item.url })), + // `${props.BusinessTypeEnumText[row.fileBusinessType as any]}` + // ); + currentFourStreamsMaterialFileTableItem.value = row; + await nextTick(); + dialogState.dialogVisible = true; + } +} +</script> + +<style lang="scss" scoped> +@use '@/style/common.scss' as *; +</style> diff --git a/src/components/commonView/MateriaDetailDialog.vue b/src/components/commonView/MateriaDetailDialog.vue index 1ab3ce2..dff1e54 100644 --- a/src/components/commonView/MateriaDetailDialog.vue +++ b/src/components/commonView/MateriaDetailDialog.vue @@ -12,7 +12,8 @@ <script setup lang="ts"> import { ProDialog } from '@bole-core/components'; import FourStreamsMaterialFileTable from './FourStreamsMaterialFileTable.vue'; -import { FourStreamsMaterialFileTableProps, FourStreamsMaterialFileTableItem } from './types'; +import { FourStreamsMaterialFileTableProps } from './types'; +import { CustomerApplyFileTypeListItem } from './utils'; defineOptions({ name: 'MateriaDetailDialog', @@ -30,7 +31,7 @@ const visible = defineModel({ type: Boolean }); type Form = { - list: FourStreamsMaterialFileTableItem[]; + list: CustomerApplyFileTypeListItem[]; }; const form = defineModel<Form>('form'); diff --git a/src/components/commonView/MaterialInfoView.vue b/src/components/commonView/MaterialInfoView.vue index 4026f93..5308a1b 100644 --- a/src/components/commonView/MaterialInfoView.vue +++ b/src/components/commonView/MaterialInfoView.vue @@ -1,42 +1,25 @@ <template> - <ProFormCol> - <ProFormColItem :span="12"> - <ProFormItemV2 - label="浼佷笟缂寸◣鏄庣粏姹囨�昏〃:" - prop="enterpriseTaxSubFileUrl" - style="margin-bottom: 22px" - > - <ProFormUpload - v-model:file-url="form.enterpriseTaxSubFileUrl" - :limitShowViewMoreBtnCount="4" - ></ProFormUpload> - </ProFormItemV2> - </ProFormColItem> - </ProFormCol> - <ProFormCol> - <ProFormColItem :span="12"> - <ProFormItemV2 - label="浼佷笟钀ユ敹姹囨�昏〃:" - prop="enterpriseOperateFileUrl" - style="margin-bottom: 22px" - > - <ProFormUpload - v-model:file-url="form.enterpriseOperateFileUrl" - :limitShowViewMoreBtnCount="4" - ></ProFormUpload> - </ProFormItemV2> - </ProFormColItem> - </ProFormCol> - <ProFormCol> - <ProFormColItem :span="12"> - <ProFormItemV2 label="鍏ラ┗鎯呭喌鍏宠仈璇存槑:" prop="enterpriseRelateFileUrl"> - <ProFormUpload - v-model:file-url="form.enterpriseRelateFileUrl" - :limitShowViewMoreBtnCount="4" - ></ProFormUpload> - </ProFormItemV2> - </ProFormColItem> - </ProFormCol> + <!-- <ProFormCol> + <ProFormColItem :span="12"> --> + <ProFormItemV2 + :label="`${item.fileTypeName}:`" + :prop="`parkCollectFileList.${index}.listFiles`" + :check-rules="[{ message: `璇蜂笂浼�${item.fileTypeName}`, type: 'upload' }]" + :label-width="160" + :style="{ marginBottom: index === form.parkCollectFileList.length - 1 ? 0 : '22px' }" + v-for="(item, index) in form.parkCollectFileList" + :key="item.fileSearchTypeId" + > + <ProFormUpload + v-model:file-url="item.listFiles" + :limitFileSize="50" + :showTip="false" + :limitShowViewMoreBtnCount="4" + accept="doc,docx,pdf,xls,xlsx,jpg/jpeg,png" + ></ProFormUpload> + </ProFormItemV2> + <!-- </ProFormColItem> + </ProFormCol> --> </template> <script setup lang="ts"> @@ -47,6 +30,7 @@ ProFormUpload, UploadUserFile, } from '@bole-core/components'; +import { CustomerApplyFileTypeListItem } from './utils'; defineOptions({ name: 'MaterialInfoView', @@ -54,9 +38,7 @@ type Props = { form: { - enterpriseTaxSubFileUrl: UploadUserFile[]; - enterpriseOperateFileUrl: UploadUserFile[]; - enterpriseRelateFileUrl: UploadUserFile[]; + parkCollectFileList: CustomerApplyFileTypeListItem[]; }; }; diff --git a/src/components/commonView/types.ts b/src/components/commonView/types.ts index f1415f0..89fd9f9 100644 --- a/src/components/commonView/types.ts +++ b/src/components/commonView/types.ts @@ -1,12 +1,20 @@ import { UploadUserFile } from '@bole-core/components'; +import { CustomerApplyFileTypeListItem } from './utils'; +import { + ApplyTransferFileBusinessTypeEnum, + FourStreamsMaterialFileBusinessTypeEnum, + TransferFileEnumInRewardGrand, +} from '@/constants'; export type FourStreamsMaterialFileTableProps = { + date?: string; showUploadBtn?: boolean; showCheckBtn?: boolean; showDownloadBtn?: boolean; showDeleteBtn?: boolean; downloadBtnText?: string; - BusinessTypeEnumText?: { [key: number]: string }; + onDelete?: (row: CustomerApplyFileTypeListItem, fileId: string) => Promise<any>; + onUpload?: (row: CustomerApplyFileTypeListItem, userFile: UploadUserFile) => Promise<any>; }; export type BaseMaterialFileTableItem<T> = { @@ -48,77 +56,3 @@ [EnterpriseTypeEnum.IndustryMating]: '琛屼笟閰嶅', [EnterpriseTypeEnum.IndustryBody]: '琛屼笟鏈烘瀯', }; - -export enum FourStreamsMaterialFileBusinessTypeEnum { - /** 鍥尯鍏ラ┗鍗忚 */ - ParkEnterPactUrl = 10, - /** 浼佷笟瀹岀◣璇佹槑锛堢洊绔狅級 */ - RatePaymentFileUrl = 20, - /** 浼佷笟缂寸◣鏄庣粏姹囨�昏〃锛堢洊绔狅級 */ - TaxSubFileUrl = 30, - /** 浼佷笟钀ユ敹鍒╂鼎琛� */ - OperateProfitesUrl = 40, - /** - * 鍏ラ┗鍏宠仈璇存槑 - * @deprecated 宸茬粡涓嶇敤浜� - */ - EnterRelateUrl = 50, - /** C绔釜绋庡畬绋庤瘉鏄� */ - PersonTaxRatePayUrl = 60, - /** C绔畬绋庤鏄� */ - PersonTaxInstructUrl = 70, -} - -export const FourStreamsMaterialFileBusinessTypeEnumText = { - [FourStreamsMaterialFileBusinessTypeEnum.ParkEnterPactUrl]: '鍥尯鍏ラ┗鍗忚', - [FourStreamsMaterialFileBusinessTypeEnum.RatePaymentFileUrl]: '浼佷笟瀹岀◣璇佹槑(鐩栫珷)', - [FourStreamsMaterialFileBusinessTypeEnum.TaxSubFileUrl]: '浼佷笟缂寸◣鏄庣粏姹囨�昏〃(鐩栫珷)', - [FourStreamsMaterialFileBusinessTypeEnum.OperateProfitesUrl]: '浼佷笟钀ユ敹鍒╂鼎琛�', - [FourStreamsMaterialFileBusinessTypeEnum.EnterRelateUrl]: '鍏ラ┗鍏宠仈璇存槑', - [FourStreamsMaterialFileBusinessTypeEnum.PersonTaxRatePayUrl]: 'C绔釜绋庡畬绋庤瘉鏄�', - [FourStreamsMaterialFileBusinessTypeEnum.PersonTaxInstructUrl]: 'C绔畬绋庢儏鍐佃鏄�', -}; - -export const FourStreamsMaterialFileBusinessTypeEnumKey = { - [FourStreamsMaterialFileBusinessTypeEnum.ParkEnterPactUrl]: 'parkEnterPactUrl', - [FourStreamsMaterialFileBusinessTypeEnum.RatePaymentFileUrl]: 'ratePaymentFileUrl', - [FourStreamsMaterialFileBusinessTypeEnum.TaxSubFileUrl]: 'taxSubFileUrl', - [FourStreamsMaterialFileBusinessTypeEnum.OperateProfitesUrl]: 'operateProfitesUrl', - [FourStreamsMaterialFileBusinessTypeEnum.EnterRelateUrl]: 'enterRelateUrl', - [FourStreamsMaterialFileBusinessTypeEnum.PersonTaxRatePayUrl]: 'personTaxRatePayUrl', - [FourStreamsMaterialFileBusinessTypeEnum.PersonTaxInstructUrl]: 'personTaxInstructUrl', -} as const; - -export enum ApplyTransferFileBusinessTypeEnum { - /** 鎷ㄤ粯鍑瘉*/ - FinanceToFileUrl = 100, - /** 鍏呭�煎嚟璇�*/ - TransferToFileUrl = 110, -} - -export const ApplyTransferFileBusinessTypeEnumText = { - [ApplyTransferFileBusinessTypeEnum.FinanceToFileUrl]: '鎷ㄤ粯鍑瘉', - [ApplyTransferFileBusinessTypeEnum.TransferToFileUrl]: '鍏呭�煎嚟璇�', -}; - -export const ApplyTransferFileBusinessTypeEnumKey = { - [ApplyTransferFileBusinessTypeEnum.FinanceToFileUrl]: 'financeToFileUrl', - [ApplyTransferFileBusinessTypeEnum.TransferToFileUrl]: 'transferToFileUrl', -} as const; - -export enum TransferFileEnumInRewardGrand { - /** 鎷ㄤ粯鍑瘉*/ - FinanceFileUrl = 200, - /** 鍏呭�煎嚟璇�*/ - SettleFileUrl = 210, -} - -export const TransferFileEnumInRewardGrandText = { - [TransferFileEnumInRewardGrand.FinanceFileUrl]: '鎷ㄤ粯鍑瘉', - [TransferFileEnumInRewardGrand.SettleFileUrl]: '鍏呭�煎嚟璇�', -}; - -export const TransferFileEnumInRewardGrandKey = { - [TransferFileEnumInRewardGrand.FinanceFileUrl]: 'financeFileUrl', - [TransferFileEnumInRewardGrand.SettleFileUrl]: 'settleFileUrl', -} as const; diff --git a/src/components/commonView/utils/index.ts b/src/components/commonView/utils/index.ts index 8918223..9550a10 100644 --- a/src/components/commonView/utils/index.ts +++ b/src/components/commonView/utils/index.ts @@ -1,15 +1,19 @@ import { convertApi2FormUrl, convertApi2FormUrlOnlyOne } from '@/utils'; import { - ApplyTransferFileBusinessTypeEnum, - ApplyTransferFileBusinessTypeEnumKey, ApplyTransferMaterialFileTableItem, - FourStreamsMaterialFileBusinessTypeEnum, - FourStreamsMaterialFileBusinessTypeEnumKey, FourStreamsMaterialFileTableItem, - TransferFileEnumInRewardGrand, - TransferFileEnumInRewardGrandKey, TransferFileEnumInRewardGrandTableItem, } from '../types'; +import { UploadUserFile } from '@bole-core/components'; +import _ from 'lodash'; +import { + ApplyTransferFileBusinessTypeEnum, + ApplyTransferFileBusinessTypeEnumKey, + FourStreamsMaterialFileBusinessTypeEnum, + FourStreamsMaterialFileBusinessTypeEnumKey, + TransferFileEnumInRewardGrand, + TransferFileEnumInRewardGrandKey, +} from '@/constants'; export class FourStreamsMaterialUtils { /**瀹炰綋浜т笟鍥潗鏂� */ @@ -112,3 +116,118 @@ return parkTypeName === '鏁板瓧缁忔祹鍥�'; } } + +export type CustomerApplyFileTypeListItem = { + id?: string; + fileSearchTypeId?: string; + fileTypeName?: string; + lastUpdateTime?: string; + listFiles?: (API.CustomerUploadMonthApplyFileTypeDto & UploadUserFile)[]; +}; + +export class EnterpriseApplyFileUtils { + static convertApiFileToParkCollectFileList(listFiles: API.CustomerUploadMonthApplyFileTypeDto[]) { + const group = _.groupBy(listFiles, 'fileSearchTypeId'); + return Object.keys(group).map( + (x) => + ({ + fileSearchTypeId: x, + fileTypeName: group[x][0].fileSearchTypeName, + listFiles: group[x] + .filter((x) => !!x.fileUrl) + .map((a) => ({ + ...a, + ...convertApi2FormUrl(a.fileUrl), + })), + } as CustomerApplyFileTypeListItem) + ); + } + + static initParkCollectFileList(parkCollectFileTypeList: API.GetCustomerUploadApplyFilesOutput[]) { + return parkCollectFileTypeList.map( + (x) => + ({ + fileSearchTypeId: x.fileSearchTypeId, + fileTypeName: x.fileTypeName, + listFiles: [], + } as CustomerApplyFileTypeListItem) + ); + } + + static initParkCollectFileListApplyFiles( + applyUploadFiles: API.GetEnterpriseParkApplyUploadFileOutput[], + applyFiles: API.GetCustomerUploadApplyFilesOutput[], + lastUploadEnterPactFile: API.CustomerUploadMonthApplyFileTypeDto[] + ) { + return applyUploadFiles.map((x) => { + const applyFile = applyFiles.find((a) => a.fileSearchTypeId === x.fileSearchTypeId); + let listFiles: API.CustomerUploadMonthApplyFileTypeDto[]; + if (x.fileSearchTypeName === '鍥尯鍏ラ┗鍗忚') { + listFiles = !x.listFiles.length ? lastUploadEnterPactFile : x.listFiles; + } else { + listFiles = + !x.listFiles.length && applyFile?.listFiles?.length > 0 + ? applyFile.listFiles + : x.listFiles; + } + + return { + fileSearchTypeId: x.fileSearchTypeId, + fileTypeName: x.fileSearchTypeName, + listFiles: listFiles.map((a) => ({ ...a, ...convertApi2FormUrl(a.fileUrl) })), + } as CustomerApplyFileTypeListItem; + }); + } + + static convertFileTableListToApi(fileTableList: CustomerApplyFileTypeListItem[]) { + return fileTableList.map( + (x) => + ({ + fileSearchTypeId: x.fileSearchTypeId, + listFiles: x.listFiles.map((a) => ({ + fileSearchTypeId: x.fileSearchTypeId, + fileSearchTypeName: x.fileTypeName, + fileSize: a.fileSize || a.size, + fileUrl: a.path, + })), + } as API.CustomerUploadMonthApplyFileType) + ); + } + + static convertFileTableListToApplyCompanyFile(fileTableList: CustomerApplyFileTypeListItem[]) { + return fileTableList.map( + (x) => + ({ + fileSearchTypeId: x.fileSearchTypeId, + fileSearchTypeName: x.fileTypeName, + listFiles: x.listFiles.map((a) => ({ + fileSearchTypeId: x.fileSearchTypeId, + fileSearchTypeName: x.fileTypeName, + fileSize: a.fileSize || a.size, + fileUrl: a.path, + })), + } as API.UploadParkApplyCustomerFileTypes) + ); + } + + static convertFileTableListToApiBatch(fileTableList: CustomerApplyFileTypeListItem[]) { + const applyFileTypeList = this.convertFileTableListToApi(fileTableList); + return _.flatMap(applyFileTypeList, (x) => x.listFiles); + } + + static isFileTableListAllUploaded(fileTableList: CustomerApplyFileTypeListItem[]) { + return fileTableList.every((fileTableListItem) => { + return fileTableListItem.listFiles.every((fileItem) => { + return fileItem.status === 'success'; + }); + }); + } + + static isFileTableListExist(fileTableList: CustomerApplyFileTypeListItem[]) { + return fileTableList.some((fileTableListItem) => { + return fileTableListItem.listFiles.some((fileItem) => { + return fileItem.status === 'success'; + }); + }); + } +} diff --git a/src/constants/fourStreams.ts b/src/constants/fourStreams.ts new file mode 100644 index 0000000..e59f920 --- /dev/null +++ b/src/constants/fourStreams.ts @@ -0,0 +1,73 @@ +export enum FourStreamsMaterialFileBusinessTypeEnum { + /** 鍥尯鍏ラ┗鍗忚 */ + ParkEnterPactUrl = 10, + /** 浼佷笟瀹岀◣璇佹槑锛堢洊绔狅級 */ + RatePaymentFileUrl = 20, + /** 浼佷笟缂寸◣鏄庣粏姹囨�昏〃锛堢洊绔狅級 */ + TaxSubFileUrl = 30, + /** 浼佷笟钀ユ敹鍒╂鼎琛� */ + OperateProfitesUrl = 40, + /** + * 鍏ラ┗鍏宠仈璇存槑 + * @deprecated 宸茬粡涓嶇敤浜� + */ + EnterRelateUrl = 50, + /** C绔釜绋庡畬绋庤瘉鏄� */ + PersonTaxRatePayUrl = 60, + /** C绔畬绋庤鏄� */ + PersonTaxInstructUrl = 70, +} + +export const FourStreamsMaterialFileBusinessTypeEnumText = { + [FourStreamsMaterialFileBusinessTypeEnum.ParkEnterPactUrl]: '鍥尯鍏ラ┗鍗忚', + [FourStreamsMaterialFileBusinessTypeEnum.RatePaymentFileUrl]: '浼佷笟瀹岀◣璇佹槑(鐩栫珷)', + [FourStreamsMaterialFileBusinessTypeEnum.TaxSubFileUrl]: '浼佷笟缂寸◣鏄庣粏姹囨�昏〃(鐩栫珷)', + [FourStreamsMaterialFileBusinessTypeEnum.OperateProfitesUrl]: '浼佷笟钀ユ敹鍒╂鼎琛�', + [FourStreamsMaterialFileBusinessTypeEnum.EnterRelateUrl]: '鍏ラ┗鍏宠仈璇存槑', + [FourStreamsMaterialFileBusinessTypeEnum.PersonTaxRatePayUrl]: 'C绔釜绋庡畬绋庤瘉鏄�', + [FourStreamsMaterialFileBusinessTypeEnum.PersonTaxInstructUrl]: 'C绔畬绋庢儏鍐佃鏄�', +}; + +export const FourStreamsMaterialFileBusinessTypeEnumKey = { + [FourStreamsMaterialFileBusinessTypeEnum.ParkEnterPactUrl]: 'parkEnterPactUrl', + [FourStreamsMaterialFileBusinessTypeEnum.RatePaymentFileUrl]: 'ratePaymentFileUrl', + [FourStreamsMaterialFileBusinessTypeEnum.TaxSubFileUrl]: 'taxSubFileUrl', + [FourStreamsMaterialFileBusinessTypeEnum.OperateProfitesUrl]: 'operateProfitesUrl', + [FourStreamsMaterialFileBusinessTypeEnum.EnterRelateUrl]: 'enterRelateUrl', + [FourStreamsMaterialFileBusinessTypeEnum.PersonTaxRatePayUrl]: 'personTaxRatePayUrl', + [FourStreamsMaterialFileBusinessTypeEnum.PersonTaxInstructUrl]: 'personTaxInstructUrl', +} as const; + +export enum ApplyTransferFileBusinessTypeEnum { + /** 鎷ㄤ粯鍑瘉*/ + FinanceToFileUrl = 100, + /** 鍏呭�煎嚟璇�*/ + TransferToFileUrl = 110, +} + +export const ApplyTransferFileBusinessTypeEnumText = { + [ApplyTransferFileBusinessTypeEnum.FinanceToFileUrl]: '鎷ㄤ粯鍑瘉', + [ApplyTransferFileBusinessTypeEnum.TransferToFileUrl]: '鍏呭�煎嚟璇�', +}; + +export const ApplyTransferFileBusinessTypeEnumKey = { + [ApplyTransferFileBusinessTypeEnum.FinanceToFileUrl]: 'financeToFileUrl', + [ApplyTransferFileBusinessTypeEnum.TransferToFileUrl]: 'transferToFileUrl', +} as const; + +export enum TransferFileEnumInRewardGrand { + /** 鎷ㄤ粯鍑瘉*/ + FinanceFileUrl = 200, + /** 鍏呭�煎嚟璇�*/ + SettleFileUrl = 210, +} + +export const TransferFileEnumInRewardGrandText = { + [TransferFileEnumInRewardGrand.FinanceFileUrl]: '鎷ㄤ粯鍑瘉', + [TransferFileEnumInRewardGrand.SettleFileUrl]: '鍏呭�煎嚟璇�', +}; + +export const TransferFileEnumInRewardGrandKey = { + [TransferFileEnumInRewardGrand.FinanceFileUrl]: 'financeFileUrl', + [TransferFileEnumInRewardGrand.SettleFileUrl]: 'settleFileUrl', +} as const; diff --git a/src/constants/index.ts b/src/constants/index.ts index eb92ec8..195d367 100644 --- a/src/constants/index.ts +++ b/src/constants/index.ts @@ -12,3 +12,4 @@ export * from './dic'; export * from './enterpriseMaterial'; export * from './reward'; +export * from './fourStreams'; diff --git a/src/constants/reward.ts b/src/constants/reward.ts index 46016f6..966f1e5 100644 --- a/src/constants/reward.ts +++ b/src/constants/reward.ts @@ -48,13 +48,13 @@ /** * 鏃犻渶鍏呭�� */ - NotSettle = 3, + NoNeed = -1, } export const SettleStatusEnumText = { [SettleStatusEnum.WaitForSettle]: '寰呭厖鍊�', [SettleStatusEnum.HasSettle]: '宸插厖鍊�', - [SettleStatusEnum.NotSettle]: '鏃犻渶鍏呭��', + [SettleStatusEnum.NoNeed]: '鏃犻渶鍏呭��', }; export enum FinanceStatusEnum { diff --git a/src/services/api/EnterpriseApplyFile.ts b/src/services/api/EnterpriseApplyFile.ts index bc7de20..3013b93 100644 --- a/src/services/api/EnterpriseApplyFile.ts +++ b/src/services/api/EnterpriseApplyFile.ts @@ -122,6 +122,24 @@ ); } +/** 鑾峰彇鍥尯姹囨�绘潗鏂欑被鍨� POST /api/EnterpriseApplyFile/GetParkCollectFileTypeList */ +export async function getParkCollectFileTypeList( + body: API.GetParkCollectFileTypeListInput, + options?: API.RequestConfig +) { + return request<API.GetCustomerUploadApplyFilesOutput[]>( + '/api/EnterpriseApplyFile/GetParkCollectFileTypeList', + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + } + ); +} + /** 涓婁紶鏉愭枡璇︽儏-缂栬緫-涓婁紶鏂囦欢 POST /api/EnterpriseApplyFile/UploadMonthApplySingleFiles */ export async function uploadMonthApplySingleFiles( body: API.UploadMonthApplySingleFilesInput, diff --git a/src/services/api/ParkBountyApply.ts b/src/services/api/ParkBountyApply.ts index 58e1366..fbe0aa0 100644 --- a/src/services/api/ParkBountyApply.ts +++ b/src/services/api/ParkBountyApply.ts @@ -47,6 +47,21 @@ }); } +/** 姝ゅ鍚庣娌℃湁鎻愪緵娉ㄩ噴 GET /api/ParkBountyApply/DeleteParkEnterpriseApplyFile */ +export async function deleteParkEnterpriseApplyFile( + // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄) + params: API.APIdeleteParkEnterpriseApplyFileParams, + options?: API.RequestConfig +) { + return request<number>('/api/ParkBountyApply/DeleteParkEnterpriseApplyFile', { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + }); +} + /** 缁х画鐢虫姤 POST /api/ParkBountyApply/EditParkBountyApply */ export async function editParkBountyApply( body: API.EditParkBountyApplyStepOneInput, @@ -108,6 +123,42 @@ }, ...(options || {}), }); +} + +/** 鑾峰彇浼佷笟鏈�鍚庝竴娆′笂浼犵殑鍥尯鍏ラ┗鍗忚鏂囦欢 GET /api/ParkBountyApply/GetEnterpriseLastUploadEnterPactFileNew */ +export async function getEnterpriseLastUploadEnterPactFileNew( + // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄) + params: API.APIgetEnterpriseLastUploadEnterPactFileNewParams, + options?: API.RequestConfig +) { + return request<API.CustomerUploadMonthApplyFileTypeDto[]>( + '/api/ParkBountyApply/GetEnterpriseLastUploadEnterPactFileNew', + { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + } + ); +} + +/** 鑾峰彇鐢虫姤涓嬩紒涓氫笂浼犵殑鏂囦欢 POST /api/ParkBountyApply/GetEnterpriseParkApplyUploadFiles */ +export async function getEnterpriseParkApplyUploadFiles( + body: API.GetEnterpriseParkApplyUploadFilesInput, + options?: API.RequestConfig +) { + return request<API.GetEnterpriseParkApplyUploadFileOutput[]>( + '/api/ParkBountyApply/GetEnterpriseParkApplyUploadFiles', + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + } + ); } /** 鑾峰彇浼佷笟鍏呭�煎鏍稿垪琛� POST /api/ParkBountyApply/GetEnterprisePreChargeCheckList */ @@ -721,6 +772,24 @@ ); } +/** 涓婁紶浼佷笟鏉愭枡 POST /api/ParkBountyApply/UploadParkBountyApplyCompanyFileNew */ +export async function uploadParkBountyApplyCompanyFileNew( + body: API.UploadParkApplyCustomerFilesInput, + options?: API.RequestConfig +) { + return request<API.UploadParkBountyApplyCompanyFileOutput>( + '/api/ParkBountyApply/UploadParkBountyApplyCompanyFileNew', + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + } + ); +} + /** 鐢ㄦ埛鍏呭�� POST /api/ParkBountyApply/UserEnterpiseRecharge */ export async function userEnterpiseRecharge( body: API.UserEnterpiseRechargeInput, diff --git a/src/services/api/typings.d.ts b/src/services/api/typings.d.ts index 7df99f2..b759d38 100644 --- a/src/services/api/typings.d.ts +++ b/src/services/api/typings.d.ts @@ -1115,6 +1115,10 @@ id?: string; } + interface APIdeleteParkEnterpriseApplyFileParams { + parkEnterpriseDetaiFileId?: string; + } + interface APIdeleteParkRewardApplyParams { id?: string; } @@ -1348,6 +1352,10 @@ interface APIgetElecBillInfoParams { transactionDetailId?: string; + } + + interface APIgetEnterpriseLastUploadEnterPactFileNewParams { + companyId?: string; } interface APIgetEnterpriseLastUploadEnterPactFileParams { @@ -5423,9 +5431,12 @@ interface CustomerUploadMonthApplyFileTypeDto { fileSearchTypeId?: string; id?: string; + fileSearchTypeName?: string; fileType?: string; fileSize?: number; fileUrl?: string; + sort?: number; + creationTime?: string; } interface DataprepareCreateExtInfo { @@ -6759,6 +6770,7 @@ lastUpdateTime?: string; monthApplyId?: string; withMonth?: string; + searchType?: number; enterpriseName?: string; parkName?: string; fileTypeName?: string; @@ -6824,6 +6836,19 @@ pageModel?: Pagination; objectData?: any; data?: GetEnterpriseMonthApplyFileOutput[]; + } + + interface GetEnterpriseParkApplyUploadFileOutput { + fileSearchTypeId?: string; + fileSearchTypeName?: string; + fileCount?: number; + sort?: number; + listFiles?: CustomerUploadMonthApplyFileTypeDto[]; + } + + interface GetEnterpriseParkApplyUploadFilesInput { + parkBountyApplyId?: string; + companyId?: string; } interface GetEnterprisePreChargeCheckListInput { @@ -8157,6 +8182,9 @@ settleTime?: string; incomeStatus?: IncomeStatusEnum; inCheckStatus?: BountyCheckStatusEnum; + /** 璐㈡斂鍏ヨ处鏃堕棿 */ + financeIncomeTime?: string; + financeIncomeStatus?: IncomeStatusEnum; /** 鍐呴儴瀹℃牳鏃ユ湡 */ inCheckTime?: string; outCheckStatus?: BountyCheckStatusEnum; @@ -8275,6 +8303,11 @@ pageModel?: Pagination; objectData?: any; data?: GetParkBountyTradeOutput[]; + } + + interface GetParkCollectFileTypeListInput { + parkId?: string; + searchType?: number; } interface GetParkCustomerBountyApplyOutput { @@ -14565,6 +14598,11 @@ settleFileUrl?: string; /** 璐㈡斂鍙戞斁鍑瘉 */ financeFileUrl?: string; + /** 鏄惁鏀寔浼佷笟涓婁紶 */ + suportEnterpriseUpload?: boolean; + /** 鏄惁鏀寔骞冲彴鍏呭�� */ + suportPlatRecharge?: boolean; + listFiles?: CustomerUploadMonthApplyFileTypeDto[]; } interface OutcheckParkBountyApplyInput { @@ -14636,6 +14674,7 @@ settleSumAmount?: number; /** 璐㈡斂鍙戞斁閲戦 */ financeSumAmount?: number; + listFiles?: CustomerUploadMonthApplyFileTypeDto[]; } interface ParkBountyApplyBatchFinanceInput { @@ -18072,12 +18111,7 @@ interface SaveParkBountyApplyGatherFileInput { parkBountyApplyId?: string; - /** 浼佷笟钀ユ敹姹囨�昏〃 */ - enterpriseOperateFileUrl?: string; - /** 浼佷笟缂寸◣鏄庣粏琛� */ - enterpriseTaxSubFileUrl?: string; - /** 鍏ラ┗鍏宠仈璇存槑 */ - enterpriseRelateFileUrl?: string; + listFiles?: CustomerUploadMonthApplyFileTypeDto[]; } interface SaveWalletPayChannelFeeSettingInput { @@ -18470,7 +18504,7 @@ type?: number; } - type SettleStatusEnum = 1 | 2; + type SettleStatusEnum = 1 | 2 | -1; interface SetUserCertificationAuditStatusInput { /** 瀹℃牳Id */ @@ -20306,6 +20340,20 @@ listFiles?: CustomerUploadMonthApplyFileTypeDto[]; } + interface UploadParkApplyCustomerFilesInput { + parkBountyApplyId?: string; + companyId?: string; + fileTypes?: UploadParkApplyCustomerFileTypes[]; + } + + interface UploadParkApplyCustomerFileTypes { + fileSearchTypeId?: string; + fileSearchTypeName?: string; + fileCount?: number; + sort?: number; + listFiles?: CustomerUploadMonthApplyFileTypeDto[]; + } + interface UploadParkBountyApplyCompanyFileInput { parkBountyApplyId?: string; companyId?: string; diff --git a/src/views/EnterpriseInfo/components/RewardGrantRecordView.vue b/src/views/EnterpriseInfo/components/RewardGrantRecordView.vue index 2f94db3..a7013dc 100644 --- a/src/views/EnterpriseInfo/components/RewardGrantRecordView.vue +++ b/src/views/EnterpriseInfo/components/RewardGrantRecordView.vue @@ -3,7 +3,7 @@ <AppContainer> <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns"> </ProTableV2> - <FourStreamsMaterialFileDialog + <FourStreamsMaterialFileDialogV2 v-bind="dialogMaterialFileProps" :show-upload-btn="false" :show-delete-btn="false" @@ -26,8 +26,7 @@ } from '@bole-core/components'; import { OrderInputType } from '@bole-core/core'; import * as parkBountyApplyServices from '@/services/api/ParkBountyApply'; -import { IncomeStatusEnumText } from '@/constants'; -import { ApplyTransferFileBusinessTypeEnumText } from '@/components/commonView/types'; +import { ApplyTransferFileBusinessTypeEnumText } from '@/constants'; import { FourStreamsMaterialUtils } from '@/components/commonView/utils'; import { ApplyTransferMaterialFileTableItem } from '@/components/commonView/types'; diff --git a/src/views/MaterialReview/MaterialReviewAudit.vue b/src/views/MaterialReview/MaterialReviewAudit.vue index ba8a828..e5b1d4b 100644 --- a/src/views/MaterialReview/MaterialReviewAudit.vue +++ b/src/views/MaterialReview/MaterialReviewAudit.vue @@ -89,13 +89,18 @@ import MateriaDetailDialog from '@/components/commonView/MateriaDetailDialog.vue'; import { useQuery, useQueryClient } from '@tanstack/vue-query'; import * as parkBountyApplyServices from '@/services/api/ParkBountyApply'; +import * as enterpriseApplyFileServices from '@/services/api/EnterpriseApplyFile'; import { convertApi2FormUrlObjectBySeparator, setOSSLink } from '@/utils'; import { useGlobalEventContext, useRouteView } from '@/hooks'; import { FormInstance } from 'element-plus'; import { Message, OrderInputType } from '@bole-core/core'; import { FourStreamsMaterialFileTableItem } from '@/components/commonView/types'; import { useIndustrialParkDropDownList } from '@/hooks/industrialPark'; -import { FourStreamsMaterialUtils } from '@/components/commonView/utils'; +import { + CustomerApplyFileTypeListItem, + EnterpriseApplyFileUtils, + FourStreamsMaterialUtils, +} from '@/components/commonView/utils'; defineOptions({ name: 'MaterialReviewAudit', @@ -113,9 +118,10 @@ applySumAmount: 0, enterpriseTaxSubFileUrl: [] as UploadUserFile[], enterpriseOperateFileUrl: [] as UploadUserFile[], + enterpriseRelateFileUrl: [] as UploadUserFile[], + parkCollectFileList: [] as CustomerApplyFileTypeListItem[], bountyAssignFileUlr: [] as UploadUserFile[], bountyCollectFileUrl: [] as UploadUserFile[], - enterpriseRelateFileUrl: [] as UploadUserFile[], status: '' as any as BountyCheckStatusEnum, remark: '', @@ -148,6 +154,9 @@ form.bountyCollectFileUrl = convertApi2FormUrlObjectBySeparator(data?.bountyCollectFileUrl); form.enterpriseRelateFileUrl = convertApi2FormUrlObjectBySeparator( data?.enterpriseRelateFileUrl + ); + form.parkCollectFileList = EnterpriseApplyFileUtils.convertApiFileToParkCollectFileList( + data.listFiles ); getList(); @@ -231,19 +240,49 @@ const { dialogProps, handleAdd, editForm } = useFormDialog({ defaultFormParams: { - list: [] as FourStreamsMaterialFileTableItem[], + list: [] as CustomerApplyFileTypeListItem[], companyId: '', }, }); const { getIndustrialParkTypeNameById } = useIndustrialParkDropDownList(); -function openDialog(row: API.ParkBountyApplyDetailInfo) { - handleAdd({ - list: FourStreamsMaterialUtils.initFourStreamsMaterialFileList( - row, - getIndustrialParkTypeNameById(detail.value?.parkId) - ), - companyId: row.enterpriseId, - }); + +async function openDialog(row: API.ParkBountyApplyDetailInfo) { + try { + const applyFiles = await queryClient.ensureQueryData({ + queryKey: [ + 'enterpriseApplyFileServices/getCustomerUploadApplyFiles', + row.enterpriseId, + form.applyMonth, + ], + queryFn: async () => { + return await enterpriseApplyFileServices.getCustomerUploadApplyFiles({ + enterpriseId: row.enterpriseId, + withMonth: form.applyMonth, + }); + }, + }); + const lastUploadEnterPactFile = await queryClient.ensureQueryData({ + queryKey: ['enterpriseApplyFileServices/getCustomerUploadApplyFiles', row.enterpriseId], + queryFn: async () => { + return await parkBountyApplyServices.getEnterpriseLastUploadEnterPactFileNew({ + companyId: row.enterpriseId, + }); + }, + }); + + const applyUploadFiles = await parkBountyApplyServices.getEnterpriseParkApplyUploadFiles({ + companyId: row.enterpriseId, + parkBountyApplyId: id, + }); + handleAdd({ + list: EnterpriseApplyFileUtils.initParkCollectFileListApplyFiles( + applyUploadFiles, + applyFiles, + lastUploadEnterPactFile + ), + companyId: row.enterpriseId, + }); + } catch (error) {} } </script> diff --git a/src/views/MaterialReview/MaterialReviewDetail.vue b/src/views/MaterialReview/MaterialReviewDetail.vue index 0bdeee5..b6d0263 100644 --- a/src/views/MaterialReview/MaterialReviewDetail.vue +++ b/src/views/MaterialReview/MaterialReviewDetail.vue @@ -56,8 +56,9 @@ import DetailView from '@/components/commonView/DetailView.vue'; import MateriaDetailDialog from '@/components/commonView/MateriaDetailDialog.vue'; import DeclareEnterpriseTableView from '@/components/commonView/DeclareEnterpriseTableView.vue'; -import { useQuery } from '@tanstack/vue-query'; +import { useQuery, useQueryClient } from '@tanstack/vue-query'; import * as parkBountyApplyServices from '@/services/api/ParkBountyApply'; +import * as enterpriseApplyFileServices from '@/services/api/EnterpriseApplyFile'; import { convertApi2FormUrlObjectBySeparator, setOSSLink } from '@/utils'; import { useRouteView } from '@/hooks'; import { OrderInputType } from '@bole-core/core'; @@ -68,7 +69,11 @@ BountyCheckStatusEnumColor, } from '@/constants'; import { FourStreamsMaterialFileTableItem } from '@/components/commonView/types'; -import { FourStreamsMaterialUtils } from '@/components/commonView/utils'; +import { + CustomerApplyFileTypeListItem, + EnterpriseApplyFileUtils, + FourStreamsMaterialUtils, +} from '@/components/commonView/utils'; import { useIndustrialParkDropDownList } from '@/hooks/industrialPark'; defineOptions({ @@ -86,9 +91,10 @@ applySumAmount: 0, enterpriseTaxSubFileUrl: [] as UploadUserFile[], enterpriseOperateFileUrl: [] as UploadUserFile[], + enterpriseRelateFileUrl: [] as UploadUserFile[], + parkCollectFileList: [] as CustomerApplyFileTypeListItem[], bountyAssignFileUlr: [] as UploadUserFile[], bountyCollectFileUrl: [] as UploadUserFile[], - enterpriseRelateFileUrl: [] as UploadUserFile[], outCheckStatus: '' as any as BountyCheckStatusEnum, outCheckRemark: '', @@ -125,6 +131,9 @@ form.bountyCollectFileUrl = convertApi2FormUrlObjectBySeparator(data?.bountyCollectFileUrl); form.enterpriseRelateFileUrl = convertApi2FormUrlObjectBySeparator( data?.enterpriseRelateFileUrl + ); + form.parkCollectFileList = EnterpriseApplyFileUtils.convertApiFileToParkCollectFileList( + data.listFiles ); getList(); @@ -166,21 +175,57 @@ const { dialogProps, handleAdd, editForm } = useFormDialog({ defaultFormParams: { - list: [] as FourStreamsMaterialFileTableItem[], + list: [] as CustomerApplyFileTypeListItem[], companyId: '', }, }); const { getIndustrialParkTypeNameById } = useIndustrialParkDropDownList(); +const queryClient = useQueryClient(); +async function openDialog(row: API.ParkBountyApplyDetailInfo) { + try { + const applyFiles = await queryClient.ensureQueryData({ + queryKey: [ + 'enterpriseApplyFileServices/getCustomerUploadApplyFiles', + row.enterpriseId, + form.applyMonth, + ], + queryFn: async () => { + return await enterpriseApplyFileServices.getCustomerUploadApplyFiles({ + enterpriseId: row.enterpriseId, + withMonth: form.applyMonth, + }); + }, + }); + const lastUploadEnterPactFile = await queryClient.ensureQueryData({ + queryKey: ['enterpriseApplyFileServices/getCustomerUploadApplyFiles', row.enterpriseId], + queryFn: async () => { + return await parkBountyApplyServices.getEnterpriseLastUploadEnterPactFileNew({ + companyId: row.enterpriseId, + }); + }, + }); -function openDialog(row: API.ParkBountyApplyDetailInfo) { - handleAdd({ - list: FourStreamsMaterialUtils.initFourStreamsMaterialFileList( - row, - getIndustrialParkTypeNameById(detail.value?.parkId) - ), - companyId: row.enterpriseId, - }); + const applyUploadFiles = await parkBountyApplyServices.getEnterpriseParkApplyUploadFiles({ + companyId: row.enterpriseId, + parkBountyApplyId: id, + }); + handleAdd({ + list: EnterpriseApplyFileUtils.initParkCollectFileListApplyFiles( + applyUploadFiles, + applyFiles, + lastUploadEnterPactFile + ), + companyId: row.enterpriseId, + }); + } catch (error) {} + // handleAdd({ + // list: FourStreamsMaterialUtils.initFourStreamsMaterialFileList( + // row, + // getIndustrialParkTypeNameById(detail.value?.parkId) + // ), + // companyId: row.enterpriseId, + // }); } function handleBack() { diff --git a/src/views/Reward/RewardDeclareDetail.vue b/src/views/Reward/RewardDeclareDetail.vue index 02342ea..17df84a 100644 --- a/src/views/Reward/RewardDeclareDetail.vue +++ b/src/views/Reward/RewardDeclareDetail.vue @@ -40,15 +40,20 @@ import ChunkCellV2 from '@/components/Layout/ChunkCellV2.vue'; import MateriaDetailDialog from '@/components/commonView/MateriaDetailDialog.vue'; import DeclareEnterpriseTableView from '@/components/commonView/DeclareEnterpriseTableView.vue'; -import { useQuery } from '@tanstack/vue-query'; +import { useQuery, useQueryClient } from '@tanstack/vue-query'; import * as parkBountyApplyServices from '@/services/api/ParkBountyApply'; +import * as enterpriseApplyFileServices from '@/services/api/EnterpriseApplyFile'; import { convertApi2FormUrlObjectBySeparator, setOSSLink } from '@/utils'; import { useRouteView } from '@/hooks'; import { OrderInputType } from '@bole-core/core'; import { EnterpriseTypeText } from '@/constants'; import { FourStreamsMaterialFileTableItem } from '@/components/commonView/types'; import { useIndustrialParkDropDownList } from '@/hooks/industrialPark'; -import { FourStreamsMaterialUtils } from '@/components/commonView/utils'; +import { + CustomerApplyFileTypeListItem, + EnterpriseApplyFileUtils, + FourStreamsMaterialUtils, +} from '@/components/commonView/utils'; defineOptions({ name: 'RewardDeclareDetail', @@ -65,9 +70,10 @@ applySumAmount: 0, enterpriseTaxSubFileUrl: [] as UploadUserFile[], enterpriseOperateFileUrl: [] as UploadUserFile[], + enterpriseRelateFileUrl: [] as UploadUserFile[], + parkCollectFileList: [] as CustomerApplyFileTypeListItem[], bountyAssignFileUlr: [] as UploadUserFile[], bountyCollectFileUrl: [] as UploadUserFile[], - enterpriseRelateFileUrl: [] as UploadUserFile[], }); const { data: detail, isLoading } = useQuery({ @@ -92,6 +98,9 @@ ); form.enterpriseOperateFileUrl = convertApi2FormUrlObjectBySeparator( data?.enterpriseOperateFileUrl + ); + form.parkCollectFileList = EnterpriseApplyFileUtils.convertApiFileToParkCollectFileList( + data.listFiles ); form.bountyAssignFileUlr = convertApi2FormUrlObjectBySeparator(data?.bountyAssignFileUlr); form.bountyCollectFileUrl = convertApi2FormUrlObjectBySeparator(data?.bountyCollectFileUrl); @@ -140,23 +149,59 @@ } ); -const { dialogProps, handleEdit, editForm } = useFormDialog({ +const { dialogProps, handleAdd, editForm } = useFormDialog({ defaultFormParams: { - list: [] as FourStreamsMaterialFileTableItem[], + list: [] as CustomerApplyFileTypeListItem[], companyId: '', }, }); const { getIndustrialParkTypeNameById } = useIndustrialParkDropDownList(); +const queryClient = useQueryClient(); +async function openDialog(row: API.ParkBountyApplyDetailInfo) { + try { + const applyFiles = await queryClient.ensureQueryData({ + queryKey: [ + 'enterpriseApplyFileServices/getCustomerUploadApplyFiles', + row.enterpriseId, + form.applyMonth, + ], + queryFn: async () => { + return await enterpriseApplyFileServices.getCustomerUploadApplyFiles({ + enterpriseId: row.enterpriseId, + withMonth: form.applyMonth, + }); + }, + }); + const lastUploadEnterPactFile = await queryClient.ensureQueryData({ + queryKey: ['enterpriseApplyFileServices/getCustomerUploadApplyFiles', row.enterpriseId], + queryFn: async () => { + return await parkBountyApplyServices.getEnterpriseLastUploadEnterPactFileNew({ + companyId: row.enterpriseId, + }); + }, + }); -function openDialog(row: API.ParkBountyApplyDetailInfo) { - handleEdit({ - list: FourStreamsMaterialUtils.initFourStreamsMaterialFileList( - row, - getIndustrialParkTypeNameById(detail.value?.parkId) - ), - companyId: row.enterpriseId, - }); + const applyUploadFiles = await parkBountyApplyServices.getEnterpriseParkApplyUploadFiles({ + companyId: row.enterpriseId, + parkBountyApplyId: id, + }); + handleAdd({ + list: EnterpriseApplyFileUtils.initParkCollectFileListApplyFiles( + applyUploadFiles, + applyFiles, + lastUploadEnterPactFile + ), + companyId: row.enterpriseId, + }); + } catch (error) {} + // handleEdit({ + // list: FourStreamsMaterialUtils.initFourStreamsMaterialFileList( + // row, + // getIndustrialParkTypeNameById(detail.value?.parkId) + // ), + // companyId: row.enterpriseId, + // }); } function handleBack() { diff --git a/src/views/Reward/RewardGrant.vue b/src/views/Reward/RewardGrant.vue index a576222..8716cc1 100644 --- a/src/views/Reward/RewardGrant.vue +++ b/src/views/Reward/RewardGrant.vue @@ -68,7 +68,7 @@ <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns"> </ProTableV2> - <FourStreamsMaterialFileDialog + <FourStreamsMaterialFileDialogV2 v-bind="dialogMaterialFileProps" :show-upload-btn="false" :show-delete-btn="false" @@ -105,6 +105,7 @@ SettleStatusEnumText, FinanceStatusEnum, FinanceStatusEnumText, + TransferFileEnumInRewardGrandText, } from '@/constants'; import * as parkBountyApplyServices from '@/services/api/ParkBountyApply'; import FinancialDialog from './components/FinancialDialog.vue'; @@ -112,11 +113,8 @@ import _ from 'lodash'; import { ModelValueType } from 'element-plus'; import { useQueryClient } from '@tanstack/vue-query'; +import { TransferFileEnumInRewardGrandTableItem } from '@/components/commonView/types'; import { FourStreamsMaterialUtils } from '@/components/commonView/utils'; -import { - TransferFileEnumInRewardGrandText, - TransferFileEnumInRewardGrandTableItem, -} from '@/components/commonView/types'; defineOptions({ name: 'RewardGrant', @@ -127,51 +125,61 @@ id: '1', enCode: 'batchNo', name: '鐢宠鎵规鍙�', + width: 160, }, { id: '2', enCode: 'parkName', name: '鐢宠鍥尯', + width: 250, }, { id: '3', enCode: 'parkTypeName', name: '鍥尯绫诲瀷', + width: 160, }, { id: '4', enCode: 'applyMonth', name: '鐢宠骞冲彴濂栧姳鏈堜唤', + width: 160, }, { id: '5', enCode: 'applySumAmount', name: '骞冲彴濂栧姳姹囨�婚噾棰濓紙鍏冿級', + width: 180, }, { id: '6', enCode: 'creationTime', name: '鐢虫姤鏃ユ湡', + width: 180, }, { id: '7', enCode: 'financeStatus', name: '璐㈡斂鎷ㄤ粯鐘舵��', + width: 160, }, { id: '8', enCode: 'financeTime', name: '鎷ㄤ粯鏃ユ湡', + width: 180, }, { id: '9', enCode: 'settleStatus', name: '骞冲彴鍏呭�肩姸鎬�', + width: 160, }, { id: '10', enCode: 'settleTime', name: '鍏呭�兼棩鏈�', + width: 180, }, ]; @@ -208,7 +216,7 @@ }, extraProps: { hide: (row: API.GetParkBountyApplyListOutput) => - row.settleStatus === SettleStatusEnum.HasSettle, + row.settleStatus !== SettleStatusEnum.WaitForSettle, }, }, { -- Gitblit v1.9.1