From 5cf7fd6bf3ca6e174b603c3591a3fbf699ddf976 Mon Sep 17 00:00:00 2001 From: zhengyiming <540361168@qq.com> Date: 星期二, 08 七月 2025 13:40:20 +0800 Subject: [PATCH] fix: 江佑保系统健壮性修复 --- src/views/Home/components/InsureOrderInfoView.vue | 219 ++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 169 insertions(+), 50 deletions(-) diff --git a/src/views/Home/components/InsureOrderInfoView.vue b/src/views/Home/components/InsureOrderInfoView.vue index cac8745..ab32e98 100644 --- a/src/views/Home/components/InsureOrderInfoView.vue +++ b/src/views/Home/components/InsureOrderInfoView.vue @@ -11,7 +11,7 @@ <el-button type="primary" link - @click="handleGoStampFiles" + @click="handleGoStampFiles(id)" v-if="detail.productOnline && detail.anyPayComplete" >璇︽儏</el-button > @@ -60,6 +60,22 @@ </ProFormItemV2> </ProFormColItem> </ProFormCol> + <ProFormCol v-if="detail.productOnline"> + <ProFormColItem :span="8"> + <ProFormItemV2 label="鎬讳繚璐�:" prop="amount"> + <ProFormInputNumber v-model="detail.amount" unit="鍏�" formatValue="money" /> + </ProFormItemV2> + </ProFormColItem> + <ProFormColItem :span="8"> + <ProFormItemV2 label="鎬讳繚棰�:" prop="sumInsured"> + <ProFormInputNumber + v-model.trim="detail.sumInsured" + unit="鍏�" + formatValue="money" + /> + </ProFormItemV2> + </ProFormColItem> + </ProFormCol> <ProFormCol> <ProFormColItem :span="8"> <ProFormItemV2 label="鎶曚繚浜�:" prop="insurerName"> @@ -75,7 +91,10 @@ </ProForm> </ChunkCell> <ChunkCell title="浜哄憳淇℃伅" class="full-table-chunk"> - <template #titleRight v-if="detail.status !== InsurancePolicyStatusEnum.WaitEffect"> + <template + #titleRight + v-if="detail.status !== InsurancePolicyStatusEnum.WaitEffect && !detail.productOnline" + > <el-button type="primary" @click="handleBatchChange">鎵规敼鐢宠</el-button> </template> <ProTableQueryFilterBar @on-reset="reset"> @@ -91,32 +110,48 @@ </QueryFilterItem> </template> <template #btn> - <template v-if="detail.status === InsurancePolicyStatusEnum.WaitEffect"> - <el-button @click="handleTemplateDownload()" link type="primary">妯℃澘涓嬭浇</el-button> - <BlFileUpload - v-if="detail.auditStatus !== InsurancePolicyAuditStatusEnum.Pass" - :limitFileSize="10" - accept="xls,xlsx" - :showTip="false" - :show-file-list="false" - :on-success="handleUploadSuccess" - style="margin-right: 10px; margin-left: 10px" + <template v-if="detail.productOnline"> + <el-button + v-if="detail.auditStatus === InsurancePolicyAuditStatusEnum.Pass" + @click="handleSupplySubmit()" + type="primary" + >琛ユ彁</el-button > - <template #default> - <el-button icon="Plus" type="primary">瀵煎叆</el-button> - </template> - </BlFileUpload> - <el-button @click="handleClear()" type="primary">瀵煎嚭鎶曚繚閿欒浜哄憳娓呭崟</el-button> - <el-button @click="handleClear()" type="primary">娓呯┖鏁版嵁</el-button> + <el-button @click="handleExport(InsuranceDetailStatusEnum.Effecting)" type="primary" + >瀵煎嚭鍦ㄤ繚浜哄憳</el-button + > + <el-button @click="handleExport(InsuranceDetailStatusEnum.Fail)" type="primary" + >瀵煎嚭閿欒浜哄憳</el-button + > + <template v-if="detail.status !== InsurancePolicyStatusEnum.WaitEffect"> + <el-button @click="handleGoStampFiles(id)" type="primary">涓嬭浇淇濆崟</el-button> + <el-button @click="handleGoDownloadInvoice(id)" type="primary">涓嬭浇鍙戠エ</el-button> + </template> </template> <template v-else> - <el-button @click="handleDownloadPerson()" type="primary">涓嬭浇浜哄憳娓呭崟</el-button> - <template v-if="detail.productOnline"> - <el-button v-if="detail.anyPayComplete" @click="handleGoStampFiles()" type="primary" - >涓嬭浇淇濆崟</el-button + <template v-if="detail.status === InsurancePolicyStatusEnum.WaitEffect"> + <el-button @click="handleTemplateDownload()" link type="primary" + >妯℃澘涓嬭浇</el-button > + <BlFileUpload + v-if="detail.auditStatus !== InsurancePolicyAuditStatusEnum.Pass" + :limitFileSize="10" + accept="xls,xlsx" + :showTip="false" + :show-file-list="false" + :on-success="handleUploadSuccess" + style="margin-right: 10px; margin-left: 10px" + > + <template #default> + <el-button icon="Plus" type="primary">瀵煎叆</el-button> + </template> + </BlFileUpload> + <el-button @click="handleClear()" type="primary">娓呯┖鏁版嵁</el-button> </template> - <el-button v-else @click="handleDownloadOrder()" type="primary">涓嬭浇淇濆崟</el-button> + <template v-else> + <el-button @click="handleExport(null)" type="primary">涓嬭浇浜哄憳娓呭崟</el-button> + <el-button @click="handleDownloadOrder()" type="primary">涓嬭浇淇濆崟</el-button> + </template> </template> </template> </ProTableQueryFilterBar> @@ -132,6 +167,7 @@ </ChunkCell> <ChangePersonInfoDialog v-bind="dialogProps"></ChangePersonInfoDialog> <InsureClaimDetailDialog v-bind="dialogInsureClaimProps"></InsureClaimDetailDialog> + <UploadInsurePersonDialog v-bind="dialogSupplyProps" isSupply /> </AppContainer> </LoadingLayout> </template> @@ -166,6 +202,8 @@ InsurancePolicyStatusEnum, InsurancePolicyStatusEnumText, InsurancePolicyAuditStatusEnum, + InsuranceDetailStatusEnumText, + InsuranceDetailStatusEnum, } from '@/constants'; import ChangePersonInfoDialog from './ChangePersonInfoDialog.vue'; import InsureClaimDetailDialog from './InsureClaimDetailDialog.vue'; @@ -175,6 +213,12 @@ import { downloadFile, downloadFileByUrl, Message, OrderInputType } from '@bole-core/core'; import { setOSSLink } from '@/utils'; import dayjs from 'dayjs'; +import { + useInsureActions, + useInsureProductSchemeAllList, + useUserInsureProductSetting, +} from '@/hooks'; +import UploadInsurePersonDialog from './UploadInsurePersonDialog.vue'; defineOptions({ name: 'InsureOrderInfoView', @@ -284,6 +328,7 @@ }, extraProps: { hide: (row: API.GetInsuranceStaffPageTemplate) => + detail.value?.productOnline || detail.value?.status !== InsurancePolicyStatusEnum.WaitEffect || detail.value?.auditStatus === InsurancePolicyAuditStatusEnum.Pass, }, @@ -357,6 +402,7 @@ let res = await insuranceOrderServices.getInsuranceStaffList(params, { showLoading: !state.loading, }); + console.log('res: ', res); return res; } catch (error) {} }, @@ -368,7 +414,7 @@ columnsRenderProps: { status: { type: 'enum', - valueEnum: InsurancePolicyStatusEnumText, + valueEnum: InsuranceDetailStatusEnumText, }, }, } @@ -423,36 +469,11 @@ } catch (error) {} } -async function handleDownloadPerson() { - try { - if (paginationState.total === 0) { - Message.warnMessage('娌℃湁鏁版嵁鍙互瀵煎嚭鍝'); - return; - } - let res = await insuranceOrderServices.getInsuranceStaffListExport( - { id: id }, - { - responseType: 'blob', - getResponse: true, - } - ); - if (res) { - downloadFile(res.data, `浜哄憳娓呭崟`, 'xlsx'); - } - } catch (error) {} -} function handleDownloadOrder() { downloadFileByUrl(setOSSLink(detail.value?.insureBillUrl)); } -function handleGoStampFiles() { - router.push({ - name: 'InsurancePolicyStampFiles', - params: { - id: id, - }, - }); -} +const { handleGoDownloadInvoice, handleGoStampFiles } = useInsureActions(); function handleBatchChange() { if ( @@ -537,6 +558,104 @@ }); } catch (error) {} } + +async function handleExport(status: InsuranceDetailStatusEnum) { + try { + if (paginationState.total === 0) { + Message.warnMessage('娌℃湁鏁版嵁鍙互瀵煎嚭鍝'); + return; + } + let res = await insuranceOrderServices.getInsuranceStaffListExport( + { insurancePolicyId: id, status: status }, + { + responseType: 'blob', + getResponse: true, + } + ); + if (res) { + downloadFile(res.data, `浜哄憳娓呭崟`, 'xlsx'); + } + } catch (error) {} +} + +const { getInsureProductIdByIdNumber } = useUserInsureProductSetting(); +const { getInsureProductSchemeByCode } = useInsureProductSchemeAllList({ + insureProductId: computed(() => getInsureProductIdByIdNumber(detail.value.productIdNumber)), +}); + +function handleSupplySubmit() { + handleSupplyAdd({ + serialNum: detail.value.serialNum, + productIdNumber: detail.value.productIdNumber, + productSchemeIdNumber: getInsureProductSchemeByCode(detail.value.productSchemeCode)?.idNumber, + effectStartTime: detail.value.effectStartTime, + }); +} + +const { + dialogProps: dialogSupplyProps, + handleAdd: handleSupplyAdd, + editForm: supplyForm, + dialogState: dialogSupplyState, +} = useFormDialog({ + onConfirm: supplySubmit, + defaultFormParams: { + serialNum: '', + url: [] as UploadUserFile[], + productIdNumber: '', + productSchemeIdNumber: '', + effectStartTime: dayjs().add(1, 'day').format('YYYY-MM-DD'), + }, + closeAfterConfirm: false, +}); + +async function supplySubmit() { + try { + let params: API.FillInsStaffToListFrontInput = { + insurancePolicyId: id, + url: supplyForm.url?.[0]?.path, + }; + let res = await insuranceOrderServices.fillInsStaffToList(params, { + timeout: 60 * 1000 * 10, + }); + if (res) { + // await Message.tipMessage('瀛樺湪閿欒鏁版嵁锛屾槸鍚﹀鍑猴紵'); + try { + if (res.errorList.length > 0) { + await Message.tipMessage( + `鎬绘姇淇濅汉鏁�${res.importAllCount}浜猴紝鎶曚繚鎴愬姛${res.successCount}浜猴紝鎶曚繚澶辫触${res.errorList.length}浜烘槸鍚﹀鍑烘姇淇濆け璐ヤ汉鍛樻竻鍗曪紵`, + { + confirmButtonText: '瀵煎嚭', + } + ); + XLSXUtils.exportToXLSX({ + workbookDataList: res.errorList, + fileName: '閿欒浜哄憳鍚嶅崟', + workbookHeaderMap: { + name: '闆囧憳濮撳悕', + sex: '鎬у埆', + certType: '璇佷欢绫诲瀷', + certNo: '璇佷欢鍙风爜', + jobName: '闆囧憳宸ョ', + useEmploer: '鐢ㄥ伐鍗曚綅', + address: '鐢ㄥ伐鍦扮偣', + note: '澶囨敞', + }, + }); + } else { + await Message.tipMessage( + `鎬绘姇淇濅汉鏁�${res.importAllCount}浜猴紝鎶曚繚鎴愬姛${res.successCount}浜篳, + { + showCancelButton: false, + } + ); + } + } catch (error) {} + dialogSupplyState.dialogVisible = false; + getInsuranceStaffList(paginationState.pageIndex); + } + } catch (error) {} +} </script> <style lang="scss" scoped> -- Gitblit v1.9.1