<template>
|
<LoadingLayout>
|
<AppContainer>
|
<PageFormLayout title="申报审核">
|
<DetailView :form="form" :has-form="true">
|
<ChunkCellV2 title="申报企业名单" class="chunk-cell-table">
|
<DeclareEnterpriseTableView
|
:getList="getList"
|
:extra-param-state="extraParamState"
|
:pro-table-props="proTableProps"
|
:reset="reset"
|
:column="addRewardApplyStep3Columns"
|
:operationBtns="operationBtns"
|
></DeclareEnterpriseTableView>
|
<MateriaDetailDialog
|
v-bind="dialogProps"
|
:show-upload-btn="false"
|
:show-delete-btn="false"
|
:show-check-btn="false"
|
/>
|
</ChunkCellV2>
|
<ChunkCell>
|
<ProForm :model="form" ref="formRef" label-width="120px">
|
<ProFormCol>
|
<ProFormColItem :span="12">
|
<ProFormItemV2
|
label="申报审核:"
|
prop="status"
|
:check-rules="[{ message: '请选择审核状态' }]"
|
>
|
<ProFormRadio
|
v-model="form.status"
|
:value-enum="BountyCheckStatusEnumTextForAudit"
|
/>
|
</ProFormItemV2>
|
</ProFormColItem>
|
</ProFormCol>
|
<ProFormCol v-if="form.status === BountyCheckStatusEnum.CheckReject">
|
<ProFormColItem>
|
<ProFormItemV2
|
label="驳回原因:"
|
prop="remark"
|
:check-rules="[{ message: '请输入驳回原因' }]"
|
>
|
<ProFormTextArea
|
v-model="form.remark"
|
placeholder="请输入"
|
show-word-limit
|
:maxlength="200"
|
></ProFormTextArea>
|
</ProFormItemV2>
|
</ProFormColItem>
|
</ProFormCol>
|
</ProForm>
|
</ChunkCell>
|
</DetailView>
|
<template #footer>
|
<el-button @click="handleBack">关闭</el-button>
|
<el-button type="primary" @click="handleConfirm()">提交</el-button>
|
</template>
|
</PageFormLayout>
|
</AppContainer>
|
</LoadingLayout>
|
</template>
|
|
<script setup lang="ts">
|
import {
|
AppContainer,
|
ProForm,
|
ChunkCell,
|
ProFormCol,
|
ProFormColItem,
|
ProFormItemV2,
|
ProFormTextArea,
|
ProFormRadio,
|
LoadingLayout,
|
PageFormLayout,
|
} from '@bole-core/components';
|
import {
|
BountyCheckStatusEnum,
|
BountyCheckStatusEnumTextForAudit,
|
useAddRewardApplyStep3Columns,
|
} from '@/constants';
|
import ChunkCellV2 from '@/components/Layout/ChunkCellV2.vue';
|
import DetailView from '@/components/commonView/DetailView.vue';
|
import DeclareEnterpriseTableView from '@/components/commonView/DeclareEnterpriseTableView.vue';
|
import MateriaDetailDialog from '@/components/commonView/MateriaDetailDialog.vue';
|
import { useQuery, useQueryClient } from '@tanstack/vue-query';
|
import * as parkBountyApplyServices from '@/services/api/ParkBountyApply';
|
import { useDeclareEnterpriseTable, useGlobalEventContext, useRouteView } from '@/hooks';
|
import { FormInstance } from 'element-plus';
|
import { Message } from '@bole-core/core';
|
import { useIndustrialParkDropDownList } from '@/hooks/industrialPark';
|
import {
|
CustomerApplyFileTypeListItem,
|
EnterpriseApplyFileUtils,
|
} from '@/components/commonView/utils';
|
|
defineOptions({
|
name: 'MaterialReviewAudit',
|
});
|
|
const route = useRoute();
|
const eventContext = useGlobalEventContext();
|
const { closeViewPush } = useRouteView();
|
const id = route.params?.id as string;
|
const form = reactive({
|
batchNo: '',
|
parkName: '',
|
parkTypeName: '',
|
applyMonth: '',
|
applySumAmount: 0,
|
financeSumAmount: 0,
|
settleSumAmount: 0,
|
parkCollectFileList: [] as CustomerApplyFileTypeListItem[],
|
calculationFileList: [] as CustomerApplyFileTypeListItem[],
|
|
status: '' as any as BountyCheckStatusEnum,
|
remark: '',
|
|
suportPlatRecharge: false,
|
});
|
|
const { addRewardApplyStep3Columns } = useAddRewardApplyStep3Columns({
|
suportPlatRecharge: toRef(form, 'suportPlatRecharge'),
|
});
|
|
const { extraParamState, getList, reset, proTableProps, operationBtns, dialogProps } =
|
useDeclareEnterpriseTable({
|
id: ref(id),
|
applyMonth: toRef(form, 'applyMonth'),
|
});
|
|
const { data: detail, isLoading } = useQuery({
|
queryKey: ['parkBountyApplyServices/getOutCheckParkBountyApplyDetailBaseInfo', id],
|
queryFn: async () => {
|
return await parkBountyApplyServices.getOutCheckParkBountyApplyDetailBaseInfo(
|
{ 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.financeSumAmount = data.financeSumAmount;
|
form.settleSumAmount = data.settleSumAmount;
|
form.parkCollectFileList = EnterpriseApplyFileUtils.convertApiFileToParkCollectFileList(
|
data.listFiles
|
);
|
form.calculationFileList = EnterpriseApplyFileUtils.convertApiFileToParkCollectFileList(
|
data.collectCountListFiles
|
);
|
|
form.suportPlatRecharge = data.suportPlatRecharge;
|
|
getList();
|
},
|
});
|
|
function handleBack() {
|
closeViewPush(route, {
|
name: 'MaterialReviewList',
|
});
|
}
|
|
const formRef = ref<FormInstance>();
|
function handleConfirm() {
|
if (!formRef.value) return;
|
formRef.value.validate((valid) => {
|
if (valid) {
|
confirm();
|
} else {
|
return;
|
}
|
});
|
}
|
|
const queryClient = useQueryClient();
|
async function confirm() {
|
try {
|
let params: API.OutcheckParkBountyApplyInput = {
|
parkBountyApplyId: id,
|
outCheckStatus: form.status,
|
remark: form.remark,
|
};
|
let res = await parkBountyApplyServices.outcheckParkBountyApply(params);
|
if (res) {
|
Message.successMessage('操作成功');
|
eventContext.emit('materialReviewAudit:audit');
|
queryClient.invalidateQueries({
|
queryKey: ['parkBountyApplyServices/getGoverDataBoard'],
|
});
|
handleBack();
|
}
|
} catch (error) {}
|
}
|
|
const { getIndustrialParkTypeNameById } = useIndustrialParkDropDownList();
|
</script>
|
|
<style lang="scss" scoped>
|
@use '@/style/common.scss' as *;
|
</style>
|