| | |
| | | <template> |
| | | <ProFormCol> |
| | | <ProFormColItem :span="12"> |
| | | <ProFormItemV2 label="申报批次号:" prop="batchNo"> |
| | | <ProFormItemV2 label="申报批次号:" prop="batchNo" :mode="mode"> |
| | | <ProFormText v-model.trim="form.batchNo" /> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | <ProFormColItem :span="12"> |
| | | <ProFormItemV2 label="申请奖励金月份:" prop="applyMonth"> |
| | | <ProFormItemV2 label="申请奖励金月份:" prop="applyMonth" :mode="mode"> |
| | | <ProFormDatePicker v-model="form.applyMonth" format="YYYY年MM月" type="month" /> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | <ProFormColItem :span="12"> |
| | | <ProFormItemV2 label="申报园区:" prop="parkName"> |
| | | <ProFormItemV2 label="申报园区:" prop="parkName" :mode="mode"> |
| | | <ProFormText v-model.trim="form.parkName" /> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | <ProFormColItem :span="12"> |
| | | <ProFormItemV2 label="园区类型:"> |
| | | <ProFormItemV2 label="园区类型:" :mode="mode"> |
| | | <ProFormText v-model.trim="form.parkTypeName" /> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | |
| | | }); |
| | | |
| | | type Props = { |
| | | isEdit?: boolean; |
| | | form: { |
| | | batchNo: string; |
| | | parkName: string; |
| | |
| | | }; |
| | | }; |
| | | |
| | | const props = withDefaults(defineProps<Props>(), {}); |
| | | const props = withDefaults(defineProps<Props>(), { |
| | | isEdit: false, |
| | | }); |
| | | |
| | | const mode = computed(() => (props.isEdit ? 'read' : 'edit')); |
| | | |
| | | const { allSearchSettingList: parkTypeList } = useAllSearchSettingList({ |
| | | searchType: SearchType.Park, |
| | |
| | | <template> |
| | | <ProForm :model="form" label-width="160px" label-position="left" is-read> |
| | | <ProForm :model="form" label-width="160px" label-position="left"> |
| | | <ChunkCellV2 title="批次信息" style="margin-bottom: 0"> |
| | | <BatchInfoView :form="form"></BatchInfoView> |
| | | <BatchInfoView :form="form" isEdit></BatchInfoView> |
| | | </ChunkCellV2> |
| | | <ChunkCellV2 |
| | | title="汇总材料" |
| | | style="margin-bottom: 0" |
| | | v-if="form.parkCollectFileList.length > 0" |
| | | > |
| | | <MaterialInfoView :form="form"></MaterialInfoView> |
| | | <MaterialInfoView :form="form" isEdit></MaterialInfoView> |
| | | </ChunkCellV2> |
| | | <ChunkCellV2 title="汇算材料" style="margin-bottom: 0"> |
| | | <SettlementMaterialInfoView :form="form"></SettlementMaterialInfoView> |
| | | <SettlementMaterialInfoView :form="form" isEdit></SettlementMaterialInfoView> |
| | | </ChunkCellV2> |
| | | <ChunkCellV2 title="补充材料" style="margin-bottom: 0"> |
| | | <ExtraMaterialInfoView :form="form" :is-edit="isEdit"></ExtraMaterialInfoView> |
| | | </ChunkCellV2> |
| | | <slot></slot> |
| | | </ProForm> |
| | |
| | | import BatchInfoView from './BatchInfoView.vue'; |
| | | import MaterialInfoView from './MaterialInfoView.vue'; |
| | | import SettlementMaterialInfoView from './SettlementMaterialInfoView.vue'; |
| | | import ExtraMaterialInfoView from './ExtraMaterialInfoView.vue'; |
| | | import { CustomerApplyFileTypeListItem } from './utils'; |
| | | |
| | | defineOptions({ |
| | |
| | | |
| | | type Props = { |
| | | hasForm?: boolean; |
| | | isEdit?: boolean; |
| | | form?: { |
| | | batchNo: string; |
| | | parkName: string; |
| | |
| | | parkCollectFileList: CustomerApplyFileTypeListItem[]; |
| | | /**汇算材料 */ |
| | | calculationFileList: CustomerApplyFileTypeListItem[]; |
| | | /** 补充材料 */ |
| | | extraListFiles: CustomerApplyFileTypeListItem[]; |
| | | /** 是否支持平台充值 */ |
| | | suportPlatRecharge?: boolean; |
| | | }; |
| | |
| | | |
| | | const props = withDefaults(defineProps<Props>(), { |
| | | hasForm: false, |
| | | isEdit: true, |
| | | }); |
| | | </script> |
| | | |
| New file |
| | |
| | | <template> |
| | | <ProFormItemV2 |
| | | :label="`${item.fileTypeName}:`" |
| | | :prop="`extraListFiles.${index}.listFiles`" |
| | | :label-width="160" |
| | | :mode="mode" |
| | | class="pro-form-item-label-hidden" |
| | | :style="{ marginBottom: index === form.extraListFiles.length - 1 ? 0 : '22px' }" |
| | | v-for="(item, index) in form.extraListFiles" |
| | | :key="item.fileSearchTypeId" |
| | | v-if="form.extraListFiles.length > 0" |
| | | > |
| | | <ProFormUpload |
| | | v-model:file-url="item.listFiles" |
| | | :showTip="false" |
| | | :limitShowViewMoreBtnCount="4" |
| | | accept="doc,docx,pdf,xls,xlsx,jpg/jpeg,png" |
| | | ></ProFormUpload> |
| | | </ProFormItemV2> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { ProFormItemV2, ProFormUpload } from '@bole-core/components'; |
| | | import { CustomerApplyFileTypeListItem } from './utils'; |
| | | |
| | | defineOptions({ |
| | | name: 'ExtraMaterialInfoView', |
| | | }); |
| | | |
| | | type Props = { |
| | | isEdit?: boolean; |
| | | form: { |
| | | extraListFiles: CustomerApplyFileTypeListItem[]; |
| | | }; |
| | | }; |
| | | |
| | | const props = withDefaults(defineProps<Props>(), { |
| | | isEdit: false, |
| | | }); |
| | | |
| | | const mode = computed(() => (props.isEdit ? 'read' : 'edit')); |
| | | </script> |
| | |
| | | } from '@bole-core/components'; |
| | | import { format, downloadFileByUrl, formatFileSize } from '@/utils'; |
| | | import { downloadWithZip, Message, isFileCanPreview } from '@bole-core/core'; |
| | | import { CustomerApplyFileTypeListItem, EnterpriseApplyFileUtils } from './utils'; |
| | | import { FourStreamsExtraMaterialFileSearchType, SearchType } from '@/constants'; |
| | | |
| | | defineOptions({ |
| | | name: 'FourStreamsBatchMaterialFileDialog', |
| | |
| | | name?: string; |
| | | zipName?: string; |
| | | showDeleteBtn?: boolean; |
| | | showMaterialExtraFileDeleteBtn?: boolean; |
| | | fileSearchTypeId?: string; |
| | | }; |
| | | |
| | | const props = withDefaults(defineProps<Props>(), { |
| | | showDeleteBtn: true, |
| | | showMaterialExtraFileDeleteBtn: false, |
| | | }); |
| | | |
| | | const visible = defineModel<boolean>('visible'); |
| | |
| | | onClick: (row) => handleDelete(row), |
| | | }, |
| | | extraProps: { |
| | | hide: (row) => !props.showDeleteBtn, |
| | | hide: (row: API.CustomerUploadMonthApplyFileTypeDto) => { |
| | | if (EnterpriseApplyFileUtils.isApplyUploadExtraFileSearchTypeId(props.fileSearchTypeId)) { |
| | | return !props.showMaterialExtraFileDeleteBtn; |
| | | } else { |
| | | return !props.showDeleteBtn; |
| | | } |
| | | }, |
| | | }, |
| | | }, |
| | | ]); |
| | |
| | | v-bind="dialogProps" |
| | | :name="''" |
| | | :zipName="currentFourStreamsMaterialFileTableItem.fileTypeName" |
| | | :fileSearchTypeId="currentFourStreamsMaterialFileTableItem.fileSearchTypeId" |
| | | v-model:fileList="currentFourStreamsMaterialFileTableItem.listFiles" |
| | | :showDeleteBtn="showDeleteBtn" |
| | | :showMaterialExtraFileDeleteBtn="showMaterialExtraFileDeleteBtn" |
| | | :yearMonth="date" |
| | | :onDelete="(file) => handleDialogDelete(currentFourStreamsMaterialFileTableItem, file)" |
| | | /> |
| | |
| | | import { Message, isFileCanPreview, downloadWithZip } from '@bole-core/core'; |
| | | import { useDefineColumns } from '@/hooks'; |
| | | import FourStreamsBatchMaterialFileDialog from './FourStreamsBatchMaterialFileDialog.vue'; |
| | | import { CustomerApplyFileTypeListItem } from './utils'; |
| | | import { CustomerApplyFileTypeListItem, EnterpriseApplyFileUtils } from './utils'; |
| | | import { FourStreamsExtraMaterialFileSearchType, SearchType } from '@/constants'; |
| | | |
| | | defineOptions({ |
| | | name: 'FourStreamsMaterialFileTable', |
| | |
| | | |
| | | const props = withDefaults(defineProps<FourStreamsMaterialFileTableProps>(), { |
| | | showUploadBtn: true, |
| | | showMaterialExtraFileUploadBtn: false, |
| | | showCheckBtn: true, |
| | | showDownloadBtn: true, |
| | | showDeleteBtn: true, |
| | | showMaterialExtraFileDeleteBtn: false, |
| | | downloadBtnText: '下载', |
| | | }); |
| | | |
| | |
| | | }, |
| | | extraProps: { |
| | | hide: (row: CustomerApplyFileTypeListItem) => { |
| | | if (EnterpriseApplyFileUtils.isApplyUploadExtraFileSearchTypeId(row.fileSearchTypeId)) { |
| | | return !props.showMaterialExtraFileUploadBtn; |
| | | } |
| | | return !props.showUploadBtn; |
| | | // if (!props.showUploadBtn) return true; |
| | | // let fileList = row?.fileList?.filter?.((item) => item.status === 'success'); |
| | |
| | | }, |
| | | extraProps: { |
| | | hide: (row: CustomerApplyFileTypeListItem) => { |
| | | if (!props.showDeleteBtn) return true; |
| | | if (EnterpriseApplyFileUtils.isApplyUploadExtraFileSearchTypeId(row.fileSearchTypeId)) { |
| | | if (!props.showMaterialExtraFileDeleteBtn) return true; |
| | | } else { |
| | | if (!props.showDeleteBtn) return true; |
| | | } |
| | | let fileList = row?.listFiles?.filter?.((item) => item.status === 'success'); |
| | | return !fileList?.length; |
| | | }, |
| | |
| | | |
| | | const props = withDefaults(defineProps<Props>(), { |
| | | showUploadBtn: true, |
| | | showMaterialExtraFileUploadBtn: false, |
| | | showCheckBtn: true, |
| | | showDownloadBtn: true, |
| | | showDeleteBtn: true, |
| | | showMaterialExtraFileDeleteBtn: false, |
| | | }); |
| | | |
| | | const visible = defineModel({ type: Boolean }); |
| | |
| | | :label="`${item.fileTypeName}:`" |
| | | :prop="`parkCollectFileList.${index}.listFiles`" |
| | | :label-width="160" |
| | | :mode="mode" |
| | | :style="{ marginBottom: index === form.parkCollectFileList.length - 1 ? 0 : '22px' }" |
| | | v-for="(item, index) in form.parkCollectFileList" |
| | | :key="item.fileSearchTypeId" |
| | |
| | | }); |
| | | |
| | | type Props = { |
| | | isEdit?: boolean; |
| | | form: { |
| | | parkCollectFileList: CustomerApplyFileTypeListItem[]; |
| | | }; |
| | | }; |
| | | |
| | | const props = withDefaults(defineProps<Props>(), {}); |
| | | const props = withDefaults(defineProps<Props>(), { |
| | | isEdit: false, |
| | | }); |
| | | |
| | | const mode = computed(() => (props.isEdit ? 'read' : 'edit')); |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | |
| | | <template> |
| | | <ProFormItemV2 label="本次申报奖励金总额:" prop="applySumAmount"> |
| | | <ProFormItemV2 label="本次申报奖励金总额:" prop="applySumAmount" :mode="mode"> |
| | | <ProFormInputNumber v-model="form.applySumAmount" formatValue="money" unit="元" /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 label="财政拨付总额:" prop="financeSumAmount"> |
| | | <ProFormItemV2 label="财政拨付总额:" prop="financeSumAmount" :mode="mode"> |
| | | <ProFormInputNumber v-model="form.financeSumAmount" formatValue="money" unit="元" /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 label="平台拨付总额:" prop="settleSumAmount"> |
| | | <ProFormItemV2 label="平台拨付总额:" prop="settleSumAmount" :mode="mode"> |
| | | <ProFormInputNumber v-model="form.settleSumAmount" formatValue="money" unit="元" /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | :label="`${item.fileTypeName}:`" |
| | | :prop="`calculationFileList.${index}.listFiles`" |
| | | :label-width="160" |
| | | :mode="mode" |
| | | :style="{ marginBottom: index === form.calculationFileList.length - 1 ? 0 : '22px' }" |
| | | v-for="(item, index) in form.calculationFileList" |
| | | :key="item.fileSearchTypeId" |
| | |
| | | }); |
| | | |
| | | type Props = { |
| | | isEdit?: boolean; |
| | | form: { |
| | | applySumAmount: number; |
| | | financeSumAmount: number; |
| | |
| | | }; |
| | | }; |
| | | |
| | | const props = withDefaults(defineProps<Props>(), {}); |
| | | const props = withDefaults(defineProps<Props>(), { |
| | | isEdit: false, |
| | | }); |
| | | |
| | | const mode = computed(() => (props.isEdit ? 'read' : 'edit')); |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | |
| | | export type FourStreamsMaterialFileTableProps = { |
| | | date?: string; |
| | | showUploadBtn?: boolean; |
| | | showMaterialExtraFileUploadBtn?: boolean; |
| | | showCheckBtn?: boolean; |
| | | showDownloadBtn?: boolean; |
| | | showDeleteBtn?: boolean; |
| | | showMaterialExtraFileDeleteBtn?: boolean; |
| | | downloadBtnText?: string; |
| | | onDelete?: (row: CustomerApplyFileTypeListItem, fileId: string) => Promise<any>; |
| | | onUpload?: (row: CustomerApplyFileTypeListItem, userFile: UploadUserFile) => Promise<any>; |
| | |
| | | FourStreamsMaterialFileBusinessTypeEnumKey, |
| | | TransferFileEnumInRewardGrand, |
| | | TransferFileEnumInRewardGrandKey, |
| | | FourStreamsExtraMaterialFileSearchType, |
| | | SearchType, |
| | | } from '@/constants'; |
| | | |
| | | export class FourStreamsMaterialUtils { |
| | |
| | | export type CustomerApplyFileTypeListItem = { |
| | | id?: string; |
| | | fileSearchTypeId?: string; |
| | | searchType?: number; |
| | | fileTypeName?: string; |
| | | lastUpdateTime?: string; |
| | | listFiles?: (API.CustomerUploadMonthApplyFileTypeDto & UploadUserFile)[]; |
| | |
| | | ); |
| | | } |
| | | |
| | | static convertApiFileToExtraListFiles(listFiles: API.CustomerUploadMonthApplyFileTypeDto[]) { |
| | | if (listFiles.length > 0) { |
| | | return this.convertApiFileToParkCollectFileList(listFiles); |
| | | } else { |
| | | return [ |
| | | { |
| | | fileSearchTypeId: FourStreamsExtraMaterialFileSearchType[SearchType.BountyExtraFileType], |
| | | fileTypeName: '补充材料', |
| | | listFiles: [], |
| | | } as CustomerApplyFileTypeListItem, |
| | | ]; |
| | | } |
| | | } |
| | | |
| | | static initParkCollectFileListApplyFiles( |
| | | applyUploadFiles: API.GetEnterpriseParkApplyUploadFileOutput[], |
| | | applyFiles: API.GetCustomerUploadApplyFilesOutput[], |
| | | lastUploadEnterPactFile: API.CustomerUploadMonthApplyFileTypeDto[] |
| | | lastUploadEnterPactFile: API.CustomerUploadMonthApplyFileTypeDto[], |
| | | applyUploadExtraFiles: API.GetEnterpriseParkApplyUploadFileOutput[] |
| | | ) { |
| | | 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; |
| | | } |
| | | const extraFiles = |
| | | applyUploadExtraFiles.length > 0 |
| | | ? applyUploadExtraFiles.map((x) => { |
| | | return { |
| | | fileSearchTypeId: x.fileSearchTypeId, |
| | | fileTypeName: x.fileSearchTypeName, |
| | | listFiles: x.listFiles.map((a) => ({ ...a, ...convertApi2FormUrl(a.fileUrl) })), |
| | | } as CustomerApplyFileTypeListItem; |
| | | }) |
| | | : [ |
| | | { |
| | | fileSearchTypeId: |
| | | FourStreamsExtraMaterialFileSearchType[SearchType.BountyApplyExtraFileType], |
| | | fileTypeName: '补充材料', |
| | | listFiles: [], |
| | | } as CustomerApplyFileTypeListItem, |
| | | ]; |
| | | |
| | | return { |
| | | fileSearchTypeId: x.fileSearchTypeId, |
| | | fileTypeName: x.fileSearchTypeName, |
| | | listFiles: listFiles.map((a) => ({ ...a, ...convertApi2FormUrl(a.fileUrl) })), |
| | | } as CustomerApplyFileTypeListItem; |
| | | }); |
| | | 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; |
| | | }) |
| | | .concat(extraFiles); |
| | | } |
| | | |
| | | static isApplyUploadExtraFileSearchTypeId(fileSearchTypeId: string) { |
| | | return ( |
| | | (fileSearchTypeId ?? '').toLowerCase() === |
| | | FourStreamsExtraMaterialFileSearchType[SearchType.BountyApplyExtraFileType].toLowerCase() |
| | | ); |
| | | } |
| | | |
| | | static convertFileTableListToApi(fileTableList: CustomerApplyFileTypeListItem[]) { |
| | |
| | | FirstPartyIndustry = 170, |
| | | MatingServiceType = 180, |
| | | IndustryBodyType = 190, |
| | | BountyExtraFileType = 240, |
| | | BountyApplyExtraFileType = 250, |
| | | } |
| | | |
| | | export const SearchTypeText = { |
| | |
| | | import { defineColumns } from '@bole-core/components'; |
| | | import { TempFolderPath } from './enum'; |
| | | import { SearchType } from './dic'; |
| | | |
| | | export enum FourStreamsMaterialFileBusinessTypeEnum { |
| | | /** 园区入驻协议 */ |
| | |
| | | |
| | | type UseAddRewardApplyStep3ColumnsOptions = { |
| | | suportPlatRecharge: Ref<boolean>; |
| | | suportFinance: Ref<boolean>; |
| | | baseColumns?: API.ModuleColumnDto[]; |
| | | }; |
| | | |
| | | export function useAddRewardApplyStep3Columns({ |
| | | suportPlatRecharge, |
| | | suportFinance, |
| | | baseColumns = BaseDeclareEnterpriseTableViewColumns, |
| | | }: UseAddRewardApplyStep3ColumnsOptions) { |
| | | const addRewardApplyStep3Columns = computed(() => |
| | | defineColumns( |
| | | [ |
| | | ...baseColumns, |
| | | { |
| | | suportFinance.value && { |
| | | id: '8', |
| | | enCode: 'financeAmount', |
| | | name: '财政拨付金额', |
| | |
| | | */ |
| | | Trade = 5, |
| | | } |
| | | |
| | | /** |
| | | * 没有在字典配置FileSearchType 所以补充文件在这里写死 |
| | | */ |
| | | export const FourStreamsExtraMaterialFileSearchType = { |
| | | [SearchType.BountyExtraFileType]: '0D85AE1F-0618-F43C-A762-3A197D83B471', |
| | | [SearchType.BountyApplyExtraFileType]: '0D85AE1F-0618-F43C-A762-3A197D83B472', |
| | | }; |
| | |
| | | import { defineColumns, defineOperationBtns, useFormDialog, useTable } from '@bole-core/components'; |
| | | import { OrderInputType } from '@bole-core/core'; |
| | | import { Message, OrderInputType } from '@bole-core/core'; |
| | | import { useQueryClient } from '@tanstack/vue-query'; |
| | | import { setOSSLink } from '@/utils'; |
| | | import { |
| | |
| | | FinanceStatusEnumText, |
| | | FinanceStatusEnumTextV2, |
| | | FinanceStatusEnumTextV2Query, |
| | | FourStreamsExtraMaterialFileSearchType, |
| | | SearchType, |
| | | SettleStatusEnumTextV2, |
| | | TransferToStatusEnum, |
| | | TransferToStatusEnumText, |
| | | } from '@/constants'; |
| | | |
| | | export const rewardGrantRegisterColumns = computed(() => |
| | | defineColumns([ |
| | | ...BaseDeclareEnterpriseTableViewColumns, |
| | | { |
| | | id: '9', |
| | | enCode: 'financeAmount', |
| | | name: '财政拨付金额', |
| | | width: 160, |
| | | }, |
| | | { |
| | | id: '10', |
| | | enCode: 'financeSumAmount', |
| | | name: '财政拨付已登记', |
| | | width: 160, |
| | | }, |
| | | { |
| | | id: '11', |
| | | enCode: 'financeTime', |
| | | name: '最近登记日期', |
| | | width: 160, |
| | | }, |
| | | { |
| | | id: '12', |
| | | enCode: 'financeStatus', |
| | | name: '财政拨付登记状态', |
| | | width: 160, |
| | | }, |
| | | { |
| | | id: '13', |
| | | enCode: 'transferAmount', |
| | | name: '平台拨付金额', |
| | | width: 160, |
| | | }, |
| | | { |
| | | id: '14', |
| | | enCode: 'settleSumAmount', |
| | | name: '平台拨付已登记', |
| | | width: 160, |
| | | }, |
| | | { |
| | | id: '15', |
| | | enCode: 'settleTime', |
| | | name: '最近登记日期', |
| | | width: 160, |
| | | }, |
| | | { |
| | | id: '16', |
| | | enCode: 'settleStatus', |
| | | name: '平台拨付登记状态', |
| | | width: 160, |
| | | }, |
| | | ]) |
| | | ); |
| | | type UseRewardGrantRegisterColumnsOptions = { |
| | | suportPlatRecharge?: MaybeRef<boolean>; |
| | | suportFinance?: MaybeRef<boolean>; |
| | | }; |
| | | |
| | | export function useRewardGrantRegisterColumns(options: UseRewardGrantRegisterColumnsOptions = {}) { |
| | | const { suportPlatRecharge, suportFinance } = options; |
| | | |
| | | const rewardGrantRegisterColumns = computed(() => |
| | | defineColumns([ |
| | | ...BaseDeclareEnterpriseTableViewColumns, |
| | | { |
| | | id: '9', |
| | | enCode: 'financeAmount', |
| | | name: '财政拨付金额', |
| | | width: 160, |
| | | }, |
| | | { |
| | | id: '10', |
| | | enCode: 'financeSumAmount', |
| | | name: '财政拨付已登记', |
| | | width: 160, |
| | | }, |
| | | { |
| | | id: '11', |
| | | enCode: 'financeTime', |
| | | name: '最近登记日期', |
| | | width: 160, |
| | | }, |
| | | { |
| | | id: '12', |
| | | enCode: 'financeStatus', |
| | | name: '财政拨付登记状态', |
| | | width: 160, |
| | | }, |
| | | { |
| | | id: '13', |
| | | enCode: 'transferAmount', |
| | | name: '平台拨付金额', |
| | | width: 160, |
| | | }, |
| | | { |
| | | id: '14', |
| | | enCode: 'settleSumAmount', |
| | | name: '平台拨付已登记', |
| | | width: 160, |
| | | }, |
| | | { |
| | | id: '15', |
| | | enCode: 'settleTime', |
| | | name: '最近登记日期', |
| | | width: 160, |
| | | }, |
| | | { |
| | | id: '16', |
| | | enCode: 'settleStatus', |
| | | name: '平台拨付登记状态', |
| | | width: 160, |
| | | }, |
| | | ]) |
| | | ); |
| | | |
| | | return { rewardGrantRegisterColumns }; |
| | | } |
| | | |
| | | type UseDeclareEnterpriseTableOptions = { |
| | | id?: Ref<string>; |
| | | applyMonth?: Ref<string>; |
| | | enableUploadExtraFiles?: boolean; |
| | | }; |
| | | |
| | | export function useDeclareEnterpriseTable(options: UseDeclareEnterpriseTableOptions = {}) { |
| | | const { id, applyMonth } = options; |
| | | const { id, applyMonth, enableUploadExtraFiles = false } = options; |
| | | |
| | | const { |
| | | getDataSource: getList, |
| | |
| | | |
| | | const queryClient = useQueryClient(); |
| | | const { dialogProps, handleAdd, editForm, dialogState } = useFormDialog({ |
| | | onConfirm: handleUpload, |
| | | defaultFormParams: { |
| | | list: [] as CustomerApplyFileTypeListItem[], |
| | | companyId: '', |
| | |
| | | companyId: row.enterpriseId, |
| | | parkBountyApplyId: id.value, |
| | | }); |
| | | |
| | | const applyUploadExtraFiles = |
| | | await parkBountyApplyServices.getEnterpriseParkApplyUploadExtraFiles({ |
| | | companyId: row.enterpriseId, |
| | | parkBountyApplyId: id.value, |
| | | }); |
| | | handleAdd({ |
| | | list: EnterpriseApplyFileUtils.initParkCollectFileListApplyFiles( |
| | | applyUploadFiles, |
| | | applyFilesRes.items, |
| | | lastUploadEnterPactFile |
| | | lastUploadEnterPactFile, |
| | | applyUploadExtraFiles |
| | | ), |
| | | companyId: row.enterpriseId, |
| | | }); |
| | |
| | | onClick: (row) => openDialog(row), |
| | | }, |
| | | }, |
| | | ]); |
| | | enableUploadExtraFiles && { |
| | | data: { |
| | | enCode: 'uploadBtn', |
| | | name: '补充材料', |
| | | }, |
| | | emits: { |
| | | onClick: (row) => openDialog(row), |
| | | }, |
| | | }, |
| | | ]).filter(Boolean); |
| | | |
| | | async function handleUpload() { |
| | | try { |
| | | if (!enableUploadExtraFiles) return; |
| | | let params: API.UploadParkApplyCustomerFilesInput = { |
| | | parkBountyApplyId: id.value, |
| | | companyId: editForm.companyId, |
| | | fileTypes: EnterpriseApplyFileUtils.convertFileTableListToApplyCompanyFile( |
| | | editForm.list.filter((x) => |
| | | EnterpriseApplyFileUtils.isApplyUploadExtraFileSearchTypeId(x.fileSearchTypeId) |
| | | ) |
| | | ), |
| | | }; |
| | | let res = await parkBountyApplyServices.uploadParkBountyApplyCompanyExtraFile(params); |
| | | if (res) { |
| | | Message.successMessage('操作成功'); |
| | | } |
| | | } catch (error) {} |
| | | } |
| | | |
| | | return { |
| | | getList, |
| | |
| | | suportWithDraw?: boolean; |
| | | /** 无需政务端审核 */ |
| | | notNeedGovernmentAudit?: boolean; |
| | | /** 是否支持财政拨付 */ |
| | | suportFinance?: boolean; |
| | | /** 注册地址 */ |
| | | registerAddress?: string; |
| | | /** 备注 */ |
| | |
| | | suportEnterpriseUpload?: boolean; |
| | | /** 是否支持平台充值 */ |
| | | suportPlatRecharge?: boolean; |
| | | /** 是否支持财政拨付 */ |
| | | suportFinance?: boolean; |
| | | } |
| | | |
| | | interface IndustrialParkFileTypeOutput { |
| | |
| | | suportWithDraw?: boolean; |
| | | /** 无需政务端审核 */ |
| | | notNeedGovernmentAudit?: boolean; |
| | | /** 是否支持财政拨付 */ |
| | | suportFinance?: boolean; |
| | | } |
| | | |
| | | interface IndustrialParkListOutputPageOutput { |
| | |
| | | suportEnterpriseUpload?: boolean; |
| | | /** 是否支持平台充值 */ |
| | | suportPlatRecharge?: boolean; |
| | | /** 是否支持财政拨付 */ |
| | | suportFinance?: boolean; |
| | | /** 是否支持用户提现 */ |
| | | suportWithDraw?: boolean; |
| | | listFiles?: CustomerUploadMonthApplyFileTypeDto[]; |
| | |
| | | suportEnterpriseUpload?: boolean; |
| | | /** 是否支持平台充值 */ |
| | | suportPlatRecharge?: boolean; |
| | | /** 是否支持财政拨付 */ |
| | | suportFinance?: boolean; |
| | | /** 申请园区类型 */ |
| | | parkTypeName?: string; |
| | | /** 申请奖励金月份 */ |
| | |
| | | financeSumAmount?: number; |
| | | listFiles?: CustomerUploadMonthApplyFileTypeDto[]; |
| | | collectCountListFiles?: CustomerUploadMonthApplyFileTypeDto[]; |
| | | /** 总的额外补充材料 */ |
| | | extraListFiles?: CustomerUploadMonthApplyFileTypeDto[]; |
| | | } |
| | | |
| | | interface ParkBountyApplyBatchFinanceInput { |
| | |
| | | requestInterceptors: [ |
| | | [ |
| | | (config) => { |
| | | console.log('req config: ', config); |
| | | const $config = config; |
| | | // 开启进度条动画 |
| | | if (config.needNProcess) { |
| | |
| | | }, |
| | | { |
| | | id: '7', |
| | | enCode: 'a', |
| | | enCode: 'outCheckAuditOperator', |
| | | name: '审核人', |
| | | }, |
| | | { |
| | |
| | | <LoadingLayout> |
| | | <AppContainer> |
| | | <PageFormLayout title="申报审核"> |
| | | <DetailView :form="form" :has-form="true"> |
| | | <DetailView :form="form" :has-form="true" :isEdit="false"> |
| | | <ChunkCellV2 title="申报企业名单" class="chunk-cell-table"> |
| | | <DeclareEnterpriseTableView |
| | | :getList="getList" |
| | |
| | | v-bind="dialogProps" |
| | | :show-upload-btn="false" |
| | | :show-delete-btn="false" |
| | | :show-check-btn="false" |
| | | showMaterialExtraFileUploadBtn |
| | | showMaterialExtraFileDeleteBtn |
| | | /> |
| | | </ChunkCellV2> |
| | | <ChunkCell> |
| | |
| | | settleSumAmount: 0, |
| | | parkCollectFileList: [] as CustomerApplyFileTypeListItem[], |
| | | calculationFileList: [] as CustomerApplyFileTypeListItem[], |
| | | extraListFiles: [] as CustomerApplyFileTypeListItem[], |
| | | |
| | | status: '' as any as BountyCheckStatusEnum, |
| | | remark: '', |
| | | |
| | | suportPlatRecharge: false, |
| | | suportFinance: false, |
| | | }); |
| | | |
| | | const { addRewardApplyStep3Columns } = useAddRewardApplyStep3Columns({ |
| | | suportPlatRecharge: toRef(form, 'suportPlatRecharge'), |
| | | suportFinance: toRef(form, 'suportFinance'), |
| | | }); |
| | | |
| | | const { extraParamState, getList, reset, proTableProps, operationBtns, dialogProps } = |
| | | useDeclareEnterpriseTable({ |
| | | id: ref(id), |
| | | applyMonth: toRef(form, 'applyMonth'), |
| | | enableUploadExtraFiles: true, |
| | | }); |
| | | |
| | | const { data: detail, isLoading } = useQuery({ |
| | |
| | | form.calculationFileList = EnterpriseApplyFileUtils.convertApiFileToParkCollectFileList( |
| | | data.collectCountListFiles |
| | | ); |
| | | form.extraListFiles = EnterpriseApplyFileUtils.convertApiFileToExtraListFiles( |
| | | data.extraListFiles |
| | | ); |
| | | |
| | | form.suportPlatRecharge = data.suportPlatRecharge; |
| | | form.suportFinance = data.suportFinance; |
| | | |
| | | getList(); |
| | | }, |
| | |
| | | parkBountyApplyId: id, |
| | | outCheckStatus: form.status, |
| | | remark: form.remark, |
| | | extraListFiles: EnterpriseApplyFileUtils.convertFileTableListToApiBatch(form.extraListFiles), |
| | | }; |
| | | let res = await parkBountyApplyServices.outcheckParkBountyApply(params); |
| | | if (res) { |
| | |
| | | v-bind="dialogProps" |
| | | :show-upload-btn="false" |
| | | :show-delete-btn="false" |
| | | :show-check-btn="false" |
| | | /> |
| | | </ChunkCellV2> |
| | | </DetailView> |
| | |
| | | parkCollectFileList: [] as CustomerApplyFileTypeListItem[], |
| | | calculationFileList: [] as CustomerApplyFileTypeListItem[], |
| | | |
| | | extraListFiles: [] as CustomerApplyFileTypeListItem[], |
| | | |
| | | outCheckStatus: '' as any as BountyCheckStatusEnum, |
| | | outCheckRemark: '', |
| | | |
| | | suportPlatRecharge: false, |
| | | suportFinance: false, |
| | | }); |
| | | |
| | | const { addRewardApplyStep3Columns } = useAddRewardApplyStep3Columns({ |
| | | suportPlatRecharge: toRef(form, 'suportPlatRecharge'), |
| | | suportFinance: toRef(form, 'suportFinance'), |
| | | }); |
| | | |
| | | const { extraParamState, getList, reset, proTableProps, operationBtns, dialogProps } = |
| | |
| | | form.calculationFileList = EnterpriseApplyFileUtils.convertApiFileToParkCollectFileList( |
| | | data.collectCountListFiles |
| | | ); |
| | | form.extraListFiles = EnterpriseApplyFileUtils.convertApiFileToExtraListFiles( |
| | | data.extraListFiles |
| | | ); |
| | | |
| | | form.suportPlatRecharge = data.suportPlatRecharge; |
| | | form.suportFinance = data.suportFinance; |
| | | |
| | | getList(); |
| | | }, |
| | |
| | | v-bind="dialogProps" |
| | | :show-upload-btn="false" |
| | | :show-delete-btn="false" |
| | | :show-check-btn="false" |
| | | /> |
| | | </ChunkCellV2> |
| | | </DetailView> |
| | |
| | | settleSumAmount: 0, |
| | | parkCollectFileList: [] as CustomerApplyFileTypeListItem[], |
| | | calculationFileList: [] as CustomerApplyFileTypeListItem[], |
| | | extraListFiles: [] as CustomerApplyFileTypeListItem[], |
| | | suportPlatRecharge: false, |
| | | suportFinance: false, |
| | | }); |
| | | |
| | | const { addRewardApplyStep3Columns } = useAddRewardApplyStep3Columns({ |
| | | suportPlatRecharge: toRef(form, 'suportPlatRecharge'), |
| | | suportFinance: toRef(form, 'suportFinance'), |
| | | }); |
| | | |
| | | const { extraParamState, getList, reset, proTableProps, operationBtns, dialogProps } = |
| | |
| | | form.calculationFileList = EnterpriseApplyFileUtils.convertApiFileToParkCollectFileList( |
| | | data.collectCountListFiles |
| | | ); |
| | | form.extraListFiles = EnterpriseApplyFileUtils.convertApiFileToExtraListFiles( |
| | | data.extraListFiles |
| | | ); |
| | | form.suportPlatRecharge = data.suportPlatRecharge; |
| | | form.suportFinance = data.suportFinance; |
| | | |
| | | getList(); |
| | | }, |
| | |
| | | }, |
| | | { |
| | | id: '11', |
| | | enCode: 'a', |
| | | enCode: 'settleAndFinanceOperator', |
| | | name: '登记人', |
| | | }, |
| | | ]; |
| | |
| | | SettleStatusEnum, |
| | | TransferFileEnumInRewardGrandText, |
| | | } from '@/constants'; |
| | | import { useDeclareEnterpriseTable, rewardGrantRegisterColumns } from '@/hooks'; |
| | | import { useDeclareEnterpriseTable, useRewardGrantRegisterColumns } from '@/hooks'; |
| | | import { TransferFileEnumInRewardGrandTableItem } from '@/components/commonView/types'; |
| | | import RegisterGrantDialog from './components/RegisterGrantDialog.vue'; |
| | | import BatchRegisterDialog from './components/BatchRegisterDialog.vue'; |
| | |
| | | settleSumAmount: 0, |
| | | parkCollectFileList: [] as CustomerApplyFileTypeListItem[], |
| | | calculationFileList: [] as CustomerApplyFileTypeListItem[], |
| | | extraListFiles: [] as CustomerApplyFileTypeListItem[], |
| | | |
| | | suportPlatRecharge: false, |
| | | suportFinance: false, |
| | | }); |
| | | |
| | | const { rewardGrantRegisterColumns } = useRewardGrantRegisterColumns(); |
| | | |
| | | const { extraParamState, paginationState, getList, reset, proTableProps } = |
| | | useDeclareEnterpriseTable({ |
| | |
| | | form.calculationFileList = EnterpriseApplyFileUtils.convertApiFileToParkCollectFileList( |
| | | data.collectCountListFiles |
| | | ); |
| | | form.extraListFiles = EnterpriseApplyFileUtils.convertApiFileToExtraListFiles( |
| | | data.extraListFiles |
| | | ); |
| | | form.suportPlatRecharge = data.suportPlatRecharge; |
| | | form.suportFinance = data.suportFinance; |
| | | |
| | | getList(); |
| | | }, |
| | |
| | | amount: 0, |
| | | showSuportPlatRecharge: false, |
| | | showSuportFiscalRecharge: false, |
| | | // showSuportFinance: false, |
| | | }, |
| | | }); |
| | | |
| | |
| | | incomeType: '' as any as IncomeTypeEnum, |
| | | fileUrl: [] as UploadUserFile[], |
| | | showSuportPlatRecharge: row.settleStatus === SettleStatusEnum.WaitForSettle, |
| | | showSuportFiscalRecharge: row.financeStatus === FinanceStatusEnum.WaitForIncome, |
| | | showSuportFiscalRecharge: |
| | | form.suportFinance && row.financeStatus === FinanceStatusEnum.WaitForIncome, |
| | | parkBountyApplyId: row.parkBountyApplyId, |
| | | parkBountyApplyDetailId: row.parkBountyApplyDetailId, |
| | | amount: 0, |
| | |
| | | handleBatchRegisterAdd({ |
| | | parkBountyApplyId: id, |
| | | showSuportPlatRecharge: form.suportPlatRecharge, |
| | | showSuportFiscalRecharge: form.suportFinance, |
| | | }); |
| | | } catch (error) {} |
| | | } |
| | |
| | | parkBountyApplyDetailIds: [] as string[], |
| | | amount: 0, |
| | | companyList: [] as API.GetNotTransferCompanyNameListOutput[], |
| | | incomeType: IncomeTypeEnum.Fiscal, |
| | | incomeType: '' as any as IncomeTypeEnum, |
| | | parkBountyApplyId: '', |
| | | showSuportPlatRecharge: false, |
| | | showSuportFiscalRecharge: false, |
| | | |
| | | fileUrl: [] as UploadUserFile[], |
| | | }, |
| | |
| | | /> |
| | | </div> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 label="登记类型:" prop="incomeType" required> |
| | | <ProFormItemV2 |
| | | label="登记类型:" |
| | | prop="incomeType" |
| | | required |
| | | :check-rules="[{ message: '请选择登记类型' }]" |
| | | > |
| | | <ProFormRadio |
| | | v-model="form.incomeType" |
| | | :value-enum="incomeTypeEnum" |
| | |
| | | incomeType: IncomeTypeEnum; |
| | | parkBountyApplyId: string; |
| | | showSuportPlatRecharge: boolean; |
| | | showSuportFiscalRecharge: boolean; |
| | | |
| | | fileUrl: UploadUserFile[]; |
| | | }; |
| | |
| | | |
| | | const incomeTypeEnum = computed(() => { |
| | | return [ |
| | | { |
| | | form.value.showSuportFiscalRecharge && { |
| | | label: IncomeTypeEnumText[IncomeTypeEnum.Fiscal], |
| | | value: IncomeTypeEnum.Fiscal, |
| | | }, |
| | |
| | | prop="payAuditFileUrl" |
| | | :required="!isApplyTrade" |
| | | :check-rules=" |
| | | !isApplyTrade && [ |
| | | { |
| | | message: '请上传凭证', |
| | | type: 'upload', |
| | | }, |
| | | ] |
| | | !isApplyTrade |
| | | ? [ |
| | | { |
| | | message: '请上传凭证', |
| | | type: 'upload', |
| | | }, |
| | | ] |
| | | : undefined |
| | | " |
| | | > |
| | | <ProFormUpload |