<template>
|
<LoadingLayout>
|
<AppContainer>
|
<PageFormLayout title="申报详情">
|
<DetailView :form="form">
|
<ChunkCellV2 title="申报企业名单">
|
<DeclareEnterpriseTableView
|
:getList="getList"
|
:extra-param-state="extraParamState"
|
:pro-table-props="proTableProps"
|
:reset="reset"
|
:open-dialog="openDialog"
|
></DeclareEnterpriseTableView>
|
<MateriaDetailDialog
|
v-bind="dialogProps"
|
:show-upload-btn="false"
|
:show-delete-btn="false"
|
:show-check-btn="false"
|
/>
|
</ChunkCellV2>
|
</DetailView>
|
<template #footer>
|
<el-button @click="handleBack" type="primary">确认</el-button>
|
</template>
|
</PageFormLayout>
|
</AppContainer>
|
</LoadingLayout>
|
</template>
|
|
<script setup lang="ts">
|
import {
|
AppContainer,
|
LoadingLayout,
|
UploadUserFile,
|
PageFormLayout,
|
useTable,
|
useFormDialog,
|
} from '@bole-core/components';
|
import DetailView from '@/components/commonView/DetailView.vue';
|
import ChunkCellV2 from '@/components/Layout/ChunkCellV2.vue';
|
import MateriaDetailDialog from '@/components/commonView/MateriaDetailDialog.vue';
|
import DeclareEnterpriseTableView from '@/components/commonView/DeclareEnterpriseTableView.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 { 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 {
|
CustomerApplyFileTypeListItem,
|
EnterpriseApplyFileUtils,
|
FourStreamsMaterialUtils,
|
} from '@/components/commonView/utils';
|
|
defineOptions({
|
name: 'RewardDeclareDetail',
|
});
|
|
const route = useRoute();
|
const { closeViewPush } = useRouteView();
|
const id = route.params?.id as string;
|
const form = reactive({
|
batchNo: '',
|
parkName: '',
|
parkTypeName: '',
|
applyMonth: '',
|
applySumAmount: 0,
|
enterpriseTaxSubFileUrl: [] as UploadUserFile[],
|
enterpriseOperateFileUrl: [] as UploadUserFile[],
|
enterpriseRelateFileUrl: [] as UploadUserFile[],
|
parkCollectFileList: [] as CustomerApplyFileTypeListItem[],
|
bountyAssignFileUlr: [] as UploadUserFile[],
|
bountyCollectFileUrl: [] as UploadUserFile[],
|
});
|
|
const { data: detail, isLoading } = useQuery({
|
queryKey: ['parkBountyApplyServices/getParkBountyApplyDetail', id],
|
queryFn: async () => {
|
return await parkBountyApplyServices.getParkBountyApplyDetailBaseInfo(
|
{ parkBountyApplyId: id },
|
{
|
showLoading: false,
|
}
|
);
|
},
|
placeholderData: () => ({} as API.OutCheckParkBountyApplyBaseInfo),
|
onSuccess(data) {
|
form.batchNo = data.batchNo;
|
form.parkName = data.parkName;
|
form.parkTypeName = data.parkTypeName;
|
form.applyMonth = data.applyMonth;
|
form.applySumAmount = data.applySumAmount;
|
form.enterpriseTaxSubFileUrl = convertApi2FormUrlObjectBySeparator(
|
data?.enterpriseTaxSubFileUrl
|
);
|
form.enterpriseOperateFileUrl = convertApi2FormUrlObjectBySeparator(
|
data?.enterpriseOperateFileUrl
|
);
|
form.parkCollectFileList = EnterpriseApplyFileUtils.convertApiFileToParkCollectFileList(
|
data.listFiles
|
);
|
form.bountyAssignFileUlr = convertApi2FormUrlObjectBySeparator(data?.bountyAssignFileUlr);
|
form.bountyCollectFileUrl = convertApi2FormUrlObjectBySeparator(data?.bountyCollectFileUrl);
|
form.enterpriseRelateFileUrl = convertApi2FormUrlObjectBySeparator(
|
data?.enterpriseRelateFileUrl
|
);
|
|
getList();
|
},
|
});
|
|
const {
|
getDataSource: getList,
|
proTableProps,
|
paginationState,
|
extraParamState,
|
reset,
|
} = useTable(
|
async ({ pageIndex, pageSize }, extraParamState) => {
|
try {
|
let params: API.GetParkBountyApplyInfoInput = {
|
pageModel: {
|
rows: pageSize,
|
page: pageIndex,
|
orderInput: extraParamState.orderInput,
|
},
|
searchKeyWord: extraParamState.searchKeyWord,
|
parkBountyApplyId: id,
|
};
|
let res = await parkBountyApplyServices.getOutCheckParkBountyApplyDetailList(params);
|
return res;
|
} catch (error) {}
|
},
|
{
|
defaultExtraParams: {
|
orderInput: [{ property: 'parkBountyApplyId', order: OrderInputType.Desc }],
|
searchKeyWord: '',
|
},
|
columnsRenderProps: {
|
authType: { type: 'enum', valueEnum: EnterpriseTypeText },
|
licenseUrl: {
|
type: 'urlV2',
|
formatter: (row: API.UserCertificationAuditListDto) => setOSSLink(row.licenseUrl),
|
},
|
},
|
}
|
);
|
|
const { dialogProps, handleAdd, editForm } = useFormDialog({
|
defaultFormParams: {
|
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,
|
});
|
},
|
});
|
|
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() {
|
closeViewPush(route, {
|
name: 'RewardGrant',
|
});
|
}
|
</script>
|
|
<style lang="scss" scoped>
|
@use '@/style/common.scss' as *;
|
</style>
|