| | |
| | | <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"> |
| | |
| | | import BatchInfoView from './BatchInfoView.vue'; |
| | | import MaterialInfoView from './MaterialInfoView.vue'; |
| | | import SettlementMaterialInfoView from './SettlementMaterialInfoView.vue'; |
| | | import { CustomerApplyFileTypeListItem } from './utils'; |
| | | |
| | | defineOptions({ |
| | | name: 'DetailView', |
| | |
| | | parkTypeName: string; |
| | | applyMonth: string; |
| | | applySumAmount: number; |
| | | enterpriseTaxSubFileUrl: UploadUserFile[]; |
| | | enterpriseOperateFileUrl: UploadUserFile[]; |
| | | /** 奖励金分配表 */ |
| | | bountyAssignFileUlr: UploadUserFile[]; |
| | | /** 奖励金汇总表 */ |
| | | bountyCollectFileUrl: UploadUserFile[]; |
| | | enterpriseRelateFileUrl: UploadUserFile[]; |
| | | parkCollectFileList: CustomerApplyFileTypeListItem[]; |
| | | /** 是否支持平台充值 */ |
| | | suportPlatRecharge?: boolean; |
| | | }; |
| | | }; |
| | | |
New file |
| | |
| | | <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> |
| | |
| | | :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" |
| | |
| | | <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, |
| | |
| | | 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', |
| | |
| | | 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: '材料名称', |
| | | }, |
| | | ]); |
| | |
| | | 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; |
| | | }, |
| | | }, |
| | | }, |
| | |
| | | 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 { |
| | |
| | | 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 |
| | | ); |
| | | }, |
| | | }, |
| | |
| | | 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; |
| | | }, |
| | | }, |
| | |
| | | ], |
| | | }); |
| | | |
| | | async function handleDelete(row: BaseMaterialFileTableItem<T>) { |
| | | async function handleDelete(row: CustomerApplyFileTypeListItem) { |
| | | try { |
| | | if (row.listFiles.length > 1) { |
| | | currentFourStreamsMaterialFileTableItem.value = row; |
| | | await nextTick(); |
| | | dialogState.dialogVisible = true; |
| | | } else { |
| | | await Message.deleteMessage(); |
| | | row.fileList = []; |
| | | 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; |
New file |
| | |
| | | <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> |
| | |
| | | <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', |
| | |
| | | const visible = defineModel({ type: Boolean }); |
| | | |
| | | type Form = { |
| | | list: FourStreamsMaterialFileTableItem[]; |
| | | list: CustomerApplyFileTypeListItem[]; |
| | | }; |
| | | |
| | | const form = defineModel<Form>('form'); |
| | |
| | | <template> |
| | | <ProFormCol> |
| | | <ProFormColItem :span="12"> |
| | | <!-- <ProFormCol> |
| | | <ProFormColItem :span="12"> --> |
| | | <ProFormItemV2 |
| | | label="企业缴税明细汇总表:" |
| | | prop="enterpriseTaxSubFileUrl" |
| | | style="margin-bottom: 22px" |
| | | :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="form.enterpriseTaxSubFileUrl" |
| | | 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> |
| | | <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> |
| | | <!-- </ProFormColItem> |
| | | </ProFormCol> --> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | |
| | | ProFormUpload, |
| | | UploadUserFile, |
| | | } from '@bole-core/components'; |
| | | import { CustomerApplyFileTypeListItem } from './utils'; |
| | | |
| | | defineOptions({ |
| | | name: 'MaterialInfoView', |
| | |
| | | |
| | | type Props = { |
| | | form: { |
| | | enterpriseTaxSubFileUrl: UploadUserFile[]; |
| | | enterpriseOperateFileUrl: UploadUserFile[]; |
| | | enterpriseRelateFileUrl: UploadUserFile[]; |
| | | parkCollectFileList: CustomerApplyFileTypeListItem[]; |
| | | }; |
| | | }; |
| | | |
| | |
| | | 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> = { |
| | |
| | | [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; |
| | |
| | | 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 { |
| | | /**实体产业园材料 */ |
| | |
| | | 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'; |
| | | }); |
| | | }); |
| | | } |
| | | } |
New file |
| | |
| | | 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; |
| | |
| | | export * from './dic'; |
| | | export * from './enterpriseMaterial'; |
| | | export * from './reward'; |
| | | export * from './fourStreams'; |
| | |
| | | /** |
| | | * 无需充值 |
| | | */ |
| | | NotSettle = 3, |
| | | NoNeed = -1, |
| | | } |
| | | |
| | | export const SettleStatusEnumText = { |
| | | [SettleStatusEnum.WaitForSettle]: '待充值', |
| | | [SettleStatusEnum.HasSettle]: '已充值', |
| | | [SettleStatusEnum.NotSettle]: '无需充值', |
| | | [SettleStatusEnum.NoNeed]: '无需充值', |
| | | }; |
| | | |
| | | export enum FinanceStatusEnum { |
| | |
| | | ); |
| | | } |
| | | |
| | | /** 获取园区汇总材料类型 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, |
| | |
| | | }); |
| | | } |
| | | |
| | | /** 此处后端没有提供注释 GET /api/ParkBountyApply/DeleteParkEnterpriseApplyFile */ |
| | | export async function deleteParkEnterpriseApplyFile( |
| | | // 叠加生成的Param类型 (非body参数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, |
| | |
| | | }, |
| | | ...(options || {}), |
| | | }); |
| | | } |
| | | |
| | | /** 获取企业最后一次上传的园区入驻协议文件 GET /api/ParkBountyApply/GetEnterpriseLastUploadEnterPactFileNew */ |
| | | export async function getEnterpriseLastUploadEnterPactFileNew( |
| | | // 叠加生成的Param类型 (非body参数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 */ |
| | |
| | | ); |
| | | } |
| | | |
| | | /** 上传企业材料 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, |
| | |
| | | id?: string; |
| | | } |
| | | |
| | | interface APIdeleteParkEnterpriseApplyFileParams { |
| | | parkEnterpriseDetaiFileId?: string; |
| | | } |
| | | |
| | | interface APIdeleteParkRewardApplyParams { |
| | | id?: string; |
| | | } |
| | |
| | | |
| | | interface APIgetElecBillInfoParams { |
| | | transactionDetailId?: string; |
| | | } |
| | | |
| | | interface APIgetEnterpriseLastUploadEnterPactFileNewParams { |
| | | companyId?: string; |
| | | } |
| | | |
| | | interface APIgetEnterpriseLastUploadEnterPactFileParams { |
| | |
| | | interface CustomerUploadMonthApplyFileTypeDto { |
| | | fileSearchTypeId?: string; |
| | | id?: string; |
| | | fileSearchTypeName?: string; |
| | | fileType?: string; |
| | | fileSize?: number; |
| | | fileUrl?: string; |
| | | sort?: number; |
| | | creationTime?: string; |
| | | } |
| | | |
| | | interface DataprepareCreateExtInfo { |
| | |
| | | lastUpdateTime?: string; |
| | | monthApplyId?: string; |
| | | withMonth?: string; |
| | | searchType?: number; |
| | | enterpriseName?: string; |
| | | parkName?: string; |
| | | fileTypeName?: string; |
| | |
| | | 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 { |
| | |
| | | settleTime?: string; |
| | | incomeStatus?: IncomeStatusEnum; |
| | | inCheckStatus?: BountyCheckStatusEnum; |
| | | /** 财政入账时间 */ |
| | | financeIncomeTime?: string; |
| | | financeIncomeStatus?: IncomeStatusEnum; |
| | | /** 内部审核日期 */ |
| | | inCheckTime?: string; |
| | | outCheckStatus?: BountyCheckStatusEnum; |
| | |
| | | pageModel?: Pagination; |
| | | objectData?: any; |
| | | data?: GetParkBountyTradeOutput[]; |
| | | } |
| | | |
| | | interface GetParkCollectFileTypeListInput { |
| | | parkId?: string; |
| | | searchType?: number; |
| | | } |
| | | |
| | | interface GetParkCustomerBountyApplyOutput { |
| | |
| | | settleFileUrl?: string; |
| | | /** 财政发放凭证 */ |
| | | financeFileUrl?: string; |
| | | /** 是否支持企业上传 */ |
| | | suportEnterpriseUpload?: boolean; |
| | | /** 是否支持平台充值 */ |
| | | suportPlatRecharge?: boolean; |
| | | listFiles?: CustomerUploadMonthApplyFileTypeDto[]; |
| | | } |
| | | |
| | | interface OutcheckParkBountyApplyInput { |
| | |
| | | settleSumAmount?: number; |
| | | /** 财政发放金额 */ |
| | | financeSumAmount?: number; |
| | | listFiles?: CustomerUploadMonthApplyFileTypeDto[]; |
| | | } |
| | | |
| | | interface ParkBountyApplyBatchFinanceInput { |
| | |
| | | |
| | | interface SaveParkBountyApplyGatherFileInput { |
| | | parkBountyApplyId?: string; |
| | | /** 企业营收汇总表 */ |
| | | enterpriseOperateFileUrl?: string; |
| | | /** 企业缴税明细表 */ |
| | | enterpriseTaxSubFileUrl?: string; |
| | | /** 入驻关联说明 */ |
| | | enterpriseRelateFileUrl?: string; |
| | | listFiles?: CustomerUploadMonthApplyFileTypeDto[]; |
| | | } |
| | | |
| | | interface SaveWalletPayChannelFeeSettingInput { |
| | |
| | | type?: number; |
| | | } |
| | | |
| | | type SettleStatusEnum = 1 | 2; |
| | | type SettleStatusEnum = 1 | 2 | -1; |
| | | |
| | | interface SetUserCertificationAuditStatusInput { |
| | | /** 审核Id */ |
| | |
| | | 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; |
| | |
| | | <AppContainer> |
| | | <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns"> |
| | | </ProTableV2> |
| | | <FourStreamsMaterialFileDialog |
| | | <FourStreamsMaterialFileDialogV2 |
| | | v-bind="dialogMaterialFileProps" |
| | | :show-upload-btn="false" |
| | | :show-delete-btn="false" |
| | |
| | | } 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'; |
| | | |
| | |
| | | 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', |
| | |
| | | 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: '', |
| | |
| | | form.bountyCollectFileUrl = convertApi2FormUrlObjectBySeparator(data?.bountyCollectFileUrl); |
| | | form.enterpriseRelateFileUrl = convertApi2FormUrlObjectBySeparator( |
| | | data?.enterpriseRelateFileUrl |
| | | ); |
| | | form.parkCollectFileList = EnterpriseApplyFileUtils.convertApiFileToParkCollectFileList( |
| | | data.listFiles |
| | | ); |
| | | |
| | | getList(); |
| | |
| | | |
| | | const { dialogProps, handleAdd, editForm } = useFormDialog({ |
| | | defaultFormParams: { |
| | | list: [] as FourStreamsMaterialFileTableItem[], |
| | | list: [] as CustomerApplyFileTypeListItem[], |
| | | companyId: '', |
| | | }, |
| | | }); |
| | | const { getIndustrialParkTypeNameById } = useIndustrialParkDropDownList(); |
| | | function openDialog(row: API.ParkBountyApplyDetailInfo) { |
| | | |
| | | 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: FourStreamsMaterialUtils.initFourStreamsMaterialFileList( |
| | | row, |
| | | getIndustrialParkTypeNameById(detail.value?.parkId) |
| | | list: EnterpriseApplyFileUtils.initParkCollectFileListApplyFiles( |
| | | applyUploadFiles, |
| | | applyFiles, |
| | | lastUploadEnterPactFile |
| | | ), |
| | | companyId: row.enterpriseId, |
| | | }); |
| | | } catch (error) {} |
| | | } |
| | | </script> |
| | | |
| | |
| | | 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'; |
| | |
| | | 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({ |
| | |
| | | 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: '', |
| | |
| | | form.bountyCollectFileUrl = convertApi2FormUrlObjectBySeparator(data?.bountyCollectFileUrl); |
| | | form.enterpriseRelateFileUrl = convertApi2FormUrlObjectBySeparator( |
| | | data?.enterpriseRelateFileUrl |
| | | ); |
| | | form.parkCollectFileList = EnterpriseApplyFileUtils.convertApiFileToParkCollectFileList( |
| | | data.listFiles |
| | | ); |
| | | |
| | | getList(); |
| | |
| | | |
| | | 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) { |
| | | const applyUploadFiles = await parkBountyApplyServices.getEnterpriseParkApplyUploadFiles({ |
| | | companyId: row.enterpriseId, |
| | | parkBountyApplyId: id, |
| | | }); |
| | | handleAdd({ |
| | | list: FourStreamsMaterialUtils.initFourStreamsMaterialFileList( |
| | | row, |
| | | getIndustrialParkTypeNameById(detail.value?.parkId) |
| | | 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() { |
| | |
| | | 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', |
| | |
| | | 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({ |
| | |
| | | ); |
| | | form.enterpriseOperateFileUrl = convertApi2FormUrlObjectBySeparator( |
| | | data?.enterpriseOperateFileUrl |
| | | ); |
| | | form.parkCollectFileList = EnterpriseApplyFileUtils.convertApiFileToParkCollectFileList( |
| | | data.listFiles |
| | | ); |
| | | form.bountyAssignFileUlr = convertApi2FormUrlObjectBySeparator(data?.bountyAssignFileUlr); |
| | | form.bountyCollectFileUrl = convertApi2FormUrlObjectBySeparator(data?.bountyCollectFileUrl); |
| | |
| | | } |
| | | ); |
| | | |
| | | 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) |
| | | 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() { |
| | |
| | | |
| | | <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns"> |
| | | </ProTableV2> |
| | | <FourStreamsMaterialFileDialog |
| | | <FourStreamsMaterialFileDialogV2 |
| | | v-bind="dialogMaterialFileProps" |
| | | :show-upload-btn="false" |
| | | :show-delete-btn="false" |
| | |
| | | SettleStatusEnumText, |
| | | FinanceStatusEnum, |
| | | FinanceStatusEnumText, |
| | | TransferFileEnumInRewardGrandText, |
| | | } from '@/constants'; |
| | | import * as parkBountyApplyServices from '@/services/api/ParkBountyApply'; |
| | | import FinancialDialog from './components/FinancialDialog.vue'; |
| | |
| | | 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', |
| | |
| | | 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, |
| | | }, |
| | | ]; |
| | | |
| | |
| | | }, |
| | | extraProps: { |
| | | hide: (row: API.GetParkBountyApplyListOutput) => |
| | | row.settleStatus === SettleStatusEnum.HasSettle, |
| | | row.settleStatus !== SettleStatusEnum.WaitForSettle, |
| | | }, |
| | | }, |
| | | { |