From babd7a49ba48c83334bbe9a4c992d784e062f6e3 Mon Sep 17 00:00:00 2001 From: zhengyiming <540361168@qq.com> Date: 星期五, 04 七月 2025 14:33:47 +0800 Subject: [PATCH] fix: 江佑保系统健壮性修复 --- src/views/Home/components/UploadInsurePersonDialog.vue | 6 +++ src/hooks/dic.ts | 5 ++ src/constants/insuranceClaim.ts | 13 ++++++ src/services/api/typings.d.ts | 8 ++-- src/views/Home/components/InsureOrderInfoView.vue | 74 +++++++++++++++++++++++++++++------- src/views/Home/components/InsureInstructionsDialog.vue | 3 + src/views/Home/Home.vue | 3 + src/services/api/InsuranceOrder.ts | 2 8 files changed, 92 insertions(+), 22 deletions(-) diff --git a/src/constants/insuranceClaim.ts b/src/constants/insuranceClaim.ts index 5ec5d81..cdeb0ca 100644 --- a/src/constants/insuranceClaim.ts +++ b/src/constants/insuranceClaim.ts @@ -92,6 +92,10 @@ Reject = -10, /**寰呭鏍� */ WaitAudit = 10, + /**寰呭鏍� 寮哄埗鍐嶅鍚庣殑鍐嶅鐘舵��*/ + WaitReAudit = 11, + /**寰呭鏍� 琛ユ彁鍚庣殑鍐嶅鐘舵��*/ + WaitFillAudit = 12, /**瀹℃牳涓� */ Auditing = 15, /**閫氳繃 */ @@ -101,6 +105,15 @@ export const InsurancePolicyAuditStatusEnumText = { [InsurancePolicyAuditStatusEnum.Reject]: '椹冲洖', [InsurancePolicyAuditStatusEnum.WaitAudit]: '寰呭鏍�', + [InsurancePolicyAuditStatusEnum.WaitReAudit]: '寰呭鏍�', + [InsurancePolicyAuditStatusEnum.WaitFillAudit]: '寰呭鏍�', + [InsurancePolicyAuditStatusEnum.Auditing]: '瀹℃牳涓�', + [InsurancePolicyAuditStatusEnum.Pass]: '閫氳繃', +}; + +export const InsurancePolicyAuditStatusEnumTextForFilter = { + [InsurancePolicyAuditStatusEnum.Reject]: '椹冲洖', + [InsurancePolicyAuditStatusEnum.WaitAudit]: '寰呭鏍�', [InsurancePolicyAuditStatusEnum.Auditing]: '瀹℃牳涓�', [InsurancePolicyAuditStatusEnum.Pass]: '閫氳繃', }; diff --git a/src/hooks/dic.ts b/src/hooks/dic.ts index 7c5ab3e..e206017 100644 --- a/src/hooks/dic.ts +++ b/src/hooks/dic.ts @@ -80,8 +80,13 @@ staleTime: Infinity, }); + function getInsureProductSchemeByCode(code: string) { + return allInsureProductSchemeList.value.find((x) => x.code === code); + } + return { allInsureProductSchemeList, refetch, + getInsureProductSchemeByCode, }; } diff --git a/src/services/api/InsuranceOrder.ts b/src/services/api/InsuranceOrder.ts index 54e53d5..d7fb3a0 100644 --- a/src/services/api/InsuranceOrder.ts +++ b/src/services/api/InsuranceOrder.ts @@ -460,7 +460,7 @@ body: API.RestorePolicyInput, options?: API.RequestConfig ) { - return request<any>('/api/InsuranceOrder/RestorePolicyStatus', { + return request<boolean>('/api/InsuranceOrder/RestorePolicyStatus', { method: 'POST', headers: { 'Content-Type': 'application/json', diff --git a/src/services/api/typings.d.ts b/src/services/api/typings.d.ts index ebb87b8..17f224a 100644 --- a/src/services/api/typings.d.ts +++ b/src/services/api/typings.d.ts @@ -935,6 +935,8 @@ auditRemark?: string; /** 淇濋櫓浜у搧IdNumber */ productIdNumber?: string; + /** 鏂规浠g爜 */ + productSchemeCode?: string; /** 鏄惁璧扮嚎涓婃祦绋� */ productOnline?: boolean; payStatus?: InsurancePolicyListPayStatusEnum; @@ -1576,7 +1578,7 @@ failCount?: number; } - type InsurancePolicyAuditStatusEnum = 10 | 15 | 20 | -10; + type InsurancePolicyAuditStatusEnum = 10 | 11 | 12 | 15 | 20 | -10; type InsurancePolicyListPayStatusEnum = 1 | 2; @@ -1611,7 +1613,7 @@ invoiceDownloadOssUrl?: string; } - type InsurancePolicyPayStatusEnum = 1 | 2 | -1; + type InsurancePolicyPayStatusEnum = 0 | 1 | 2 | -1; type InsurancePolicyStatusEnum = 10 | 20 | 30; @@ -2083,8 +2085,6 @@ } interface RestorePolicyDto { - /** Id */ - id?: string; /** 璁㈠崟鍙� */ channelOrderNo?: string; /** 淇濆崟鍙� */ diff --git a/src/views/Home/Home.vue b/src/views/Home/Home.vue index 8f164ac..de84ceb 100644 --- a/src/views/Home/Home.vue +++ b/src/views/Home/Home.vue @@ -27,7 +27,7 @@ <QueryFilterItem> <FieldRadio v-model="extraParamState.auditStatus" - :value-enum="InsurancePolicyAuditStatusEnumText" + :value-enum="InsurancePolicyAuditStatusEnumTextForFilter" buttonStyle showAllBtn @change="getList()" @@ -154,6 +154,7 @@ InsurancePolicyStatusEnum, AppType, InsurancePolicyAuditStatusEnumText, + InsurancePolicyAuditStatusEnumTextForFilter, InsurancePolicyAuditStatusEnum, InsurancePolicyProductIdNumberEnum, InsurancePolicyListPayStatusEnum, diff --git a/src/views/Home/components/InsureInstructionsDialog.vue b/src/views/Home/components/InsureInstructionsDialog.vue index 588ff25..7dbb543 100644 --- a/src/views/Home/components/InsureInstructionsDialog.vue +++ b/src/views/Home/components/InsureInstructionsDialog.vue @@ -8,6 +8,7 @@ width="600px" :close-on-click-modal="false" :close-on-press-escape="false" + @close="goTo(`step0`)" > <div class="insureInstructionsDialog-content"> <!-- <img :src="IconTaipingLogo" alt="" class="logo" /> --> @@ -97,7 +98,7 @@ const visibleFiles = ref(false); -const { isCurrent, goToNext, goToPrevious, isLast, isFirst } = useStepper( +const { isCurrent, goToNext, goToPrevious, isLast, isFirst, goTo } = useStepper( InsuranceTempList.map((x, index) => `step${index}`) ); </script> diff --git a/src/views/Home/components/InsureOrderInfoView.vue b/src/views/Home/components/InsureOrderInfoView.vue index 8772799..4c31188 100644 --- a/src/views/Home/components/InsureOrderInfoView.vue +++ b/src/views/Home/components/InsureOrderInfoView.vue @@ -94,8 +94,26 @@ </QueryFilterItem> </template> <template #btn> - <template v-if="detail.status === InsurancePolicyStatusEnum.WaitEffect"> - <template v-if="!detail.productOnline"> + <template v-if="detail.productOnline"> + <el-button + v-if="detail.auditStatus === InsurancePolicyAuditStatusEnum.Pass" + @click="handleSupplySubmit()" + type="primary" + >琛ユ彁</el-button + > + <template v-if="detail.status !== InsurancePolicyStatusEnum.WaitEffect"> + <el-button @click="handleExport(InsuranceDetailStatusEnum.Effecting)" type="primary" + >瀵煎嚭鍦ㄤ繚浜哄憳</el-button + > + <el-button @click="handleExport(InsuranceDetailStatusEnum.Fail)" type="primary" + >瀵煎嚭閿欒浜哄憳</el-button + > + <el-button @click="handleGoStampFiles(id)" type="primary">涓嬭浇淇濆崟</el-button> + <el-button @click="handleGoDownloadInvoice(id)" type="primary">涓嬭浇鍙戠エ</el-button> + </template> + </template> + <template v-else> + <template v-if="detail.status === InsurancePolicyStatusEnum.WaitEffect"> <el-button @click="handleTemplateDownload()" link type="primary" >妯℃澘涓嬭浇</el-button > @@ -113,18 +131,6 @@ </template> </BlFileUpload> <el-button @click="handleClear()" type="primary">娓呯┖鏁版嵁</el-button> - </template> - </template> - <template v-else> - <template v-if="detail.productOnline"> - <el-button @click="handleExport(InsuranceDetailStatusEnum.Effecting)" type="primary" - >瀵煎嚭鍦ㄤ繚浜哄憳</el-button - > - <el-button @click="handleExport(InsuranceDetailStatusEnum.Fail)" type="primary" - >瀵煎嚭閿欒浜哄憳</el-button - > - <el-button @click="handleGoStampFiles(id)" type="primary">涓嬭浇淇濆崟</el-button> - <el-button @click="handleGoDownloadInvoice(id)" type="primary">涓嬭浇鍙戠エ</el-button> </template> <template v-else> <el-button @click="handleExport(null)" type="primary">涓嬭浇浜哄憳娓呭崟</el-button> @@ -145,6 +151,7 @@ </ChunkCell> <ChangePersonInfoDialog v-bind="dialogProps"></ChangePersonInfoDialog> <InsureClaimDetailDialog v-bind="dialogInsureClaimProps"></InsureClaimDetailDialog> + <UploadInsurePersonDialog v-bind="dialogSupplyProps" isSupply /> </AppContainer> </LoadingLayout> </template> @@ -190,7 +197,12 @@ import { downloadFile, downloadFileByUrl, Message, OrderInputType } from '@bole-core/core'; import { setOSSLink } from '@/utils'; import dayjs from 'dayjs'; -import { useInsureActions } from '@/hooks'; +import { + useInsureActions, + useInsureProductSchemeAllList, + useUserInsureProductSetting, +} from '@/hooks'; +import UploadInsurePersonDialog from './UploadInsurePersonDialog.vue'; defineOptions({ name: 'InsureOrderInfoView', @@ -548,6 +560,38 @@ } } 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: dayjs().add(1, 'day').format('YYYY-MM-DD'), + }); +} + +const { + dialogProps: dialogSupplyProps, + handleAdd: handleSupplyAdd, + editForm: supplyForm, +} = useFormDialog({ + onConfirm: supplySubmit, + defaultFormParams: { + serialNum: '', + url: [] as UploadUserFile[], + productIdNumber: '', + productSchemeIdNumber: '', + effectStartTime: dayjs().add(1, 'day').format('YYYY-MM-DD'), + }, +}); + +// TODO 琛ユ彁 +async function supplySubmit() {} </script> <style lang="scss" scoped> diff --git a/src/views/Home/components/UploadInsurePersonDialog.vue b/src/views/Home/components/UploadInsurePersonDialog.vue index 168ac0b..6be682b 100644 --- a/src/views/Home/components/UploadInsurePersonDialog.vue +++ b/src/views/Home/components/UploadInsurePersonDialog.vue @@ -25,6 +25,7 @@ enum-label-key="productName" enum-value-key="productIdNumber" @change="handleProductChange" + :disabled="isSupply" ></ProFormSelect> </ProFormItemV2> <ProFormItemV2 @@ -40,6 +41,7 @@ v-model="form.productSchemeIdNumber" enum-label-key="name" enum-value-key="idNumber" + :disabled="isSupply" ></ProFormSelect> </ProFormItemV2> <ProFormItemV2 label="鎵规鍙凤細" prop="serialNum" :check-rules="[{ message: '璇疯緭鍏ユ壒娆″彿' }]"> @@ -47,6 +49,7 @@ placeholder="璇疯緭鍏ユ壒娆″彿" v-model.trim="innerForm.serialNum" :maxlength="30" + :disabled="isSupply" ></ProFormText> </ProFormItemV2> <ProFormItemV2 @@ -60,6 +63,7 @@ value-format="YYYY-MM-DD" placeholder="璇烽�夋嫨璧蜂繚鏃ユ湡" :disabled-date="disabledStartDate" + :disabled="isSupply" ></ProFormDatePicker> </ProFormItemV2> <ProFormItemV2 @@ -118,10 +122,12 @@ productSchemeIdNumber: string; effectStartTime: string; }; + isSupply?: boolean; }; const props = withDefaults(defineProps<Props>(), { modelValue: false, + isSupply: false, }); const emit = defineEmits<{ -- Gitblit v1.9.1