import * as insuranceOrderServices from '@/services/api/InsuranceOrder';
|
import * as insuranceClaimServices from '@/services/api/InsuranceClaim';
|
import { useQuery } from '@tanstack/vue-query';
|
import { InsuranceClaimAttachmentBusinessTypeEnum, InsuranceClaimResultEnum } from '@/constants';
|
import { convertAttAchmentsToForm } from '../utils';
|
import { UploadUserFile } from '@bole-core/components';
|
|
type UseInsuranceClaimDetailOptions = {
|
insuranceOrderId?: MaybeRef<string>;
|
insuranceClaimId?: MaybeRef<string>;
|
};
|
|
export function useInsuranceClaimDetail({
|
insuranceOrderId,
|
insuranceClaimId,
|
}: UseInsuranceClaimDetailOptions) {
|
const DefaultAccidentProcess = `事故经过:
|
治疗医院:二级及以上公立医院
|
诊断结果(与诊断证明一致)
|
预估费用:`;
|
|
const form = reactive({
|
name: '',
|
idNumber: '',
|
workType: '',
|
laborContractEnterprise: '',
|
workEnterprise: '',
|
insuranceBeginTime: '',
|
insuranceEndTime: '',
|
insuredInstitution: '',
|
insuranceScheme: '',
|
reportedTime: '',
|
contactNumber: '',
|
bakContactNumber: '',
|
accidentType: '',
|
accidentTime: '',
|
disabilityRatio: 0,
|
accidentAddress: '',
|
accidentProcess: DefaultAccidentProcess,
|
attachmentFrontIdCards: [] as UploadUserFile[],
|
attachmentBackIdCards: [] as UploadUserFile[],
|
attachmentSites: [] as UploadUserFile[],
|
attachmentHandheldIdCards: [] as UploadUserFile[],
|
attachmentAreas: [] as UploadUserFile[],
|
attachmentCases: [] as UploadUserFile[],
|
|
channel: '',
|
onJobFlag: '',
|
gender: '',
|
age: 0,
|
premiumAmount: 0,
|
incDecAmount: 0,
|
|
claimResult: '' as any as InsuranceClaimResultEnum,
|
claimResultTime: '',
|
downPaymentAmount: 0,
|
});
|
|
const { isLoading, data: claimDetail } = useQuery({
|
queryKey: ['insuranceClaimServices/getInsuranceClaimDetail', insuranceClaimId],
|
queryFn: async () => {
|
return await insuranceClaimServices.getInsuranceClaimDetail(
|
{
|
id: unref(insuranceClaimId),
|
},
|
{
|
showLoading: false,
|
}
|
);
|
},
|
// placeholderData: () => null as API.InsuranceClaimDetailOutput,
|
onSuccess(data) {
|
if (data) {
|
form.name = data.name;
|
form.idNumber = data.idNumber;
|
form.insuredInstitution = data.insuredInstitution;
|
form.insuranceScheme = data.insuranceScheme;
|
form.reportedTime = data.reportedTime;
|
form.contactNumber = data.contactNumber;
|
form.bakContactNumber = data.bakContactNumber;
|
form.accidentType = data.accidentType;
|
form.accidentTime = data.accidentTime;
|
form.disabilityRatio = data.disabilityRatio ?? 0;
|
form.accidentAddress = data.accidentAddress;
|
form.accidentProcess = data.accidentProcess ?? DefaultAccidentProcess;
|
|
form.insuranceBeginTime = data.insuranceBeginTime;
|
form.insuranceEndTime = data.insuranceEndTime;
|
form.laborContractEnterprise = data.laborContractEnterprise;
|
form.workEnterprise = data.workEnterprise;
|
form.workType = data.workType;
|
|
form.channel = data.channel;
|
form.onJobFlag = data.onJobFlag;
|
form.gender = data.gender;
|
form.age = data.age;
|
form.premiumAmount = data.premiumAmount;
|
form.incDecAmount = data.incDecAmount;
|
|
form.claimResult = data.claimResult ?? ('' as any as InsuranceClaimResultEnum);
|
form.claimResultTime = data.claimResultTime ?? '';
|
form.downPaymentAmount = data.downPaymentAmount ?? 0;
|
|
const attachmentIdCard = convertAttAchmentsToForm(
|
data.attachments,
|
InsuranceClaimAttachmentBusinessTypeEnum.InjuredIdCardImg
|
);
|
form.attachmentFrontIdCards = attachmentIdCard[0] ? [attachmentIdCard[0]] : [];
|
form.attachmentBackIdCards = attachmentIdCard[1] ? [attachmentIdCard[1]] : [];
|
form.attachmentSites = convertAttAchmentsToForm(
|
data.attachments,
|
InsuranceClaimAttachmentBusinessTypeEnum.InjurySiteImg
|
);
|
form.attachmentHandheldIdCards = convertAttAchmentsToForm(
|
data.attachments,
|
InsuranceClaimAttachmentBusinessTypeEnum.InjuredHandheldIdCardImg
|
);
|
form.attachmentAreas = convertAttAchmentsToForm(
|
data.attachments,
|
InsuranceClaimAttachmentBusinessTypeEnum.InjuredAreaImg
|
);
|
form.attachmentCases = convertAttAchmentsToForm(
|
data.attachments,
|
InsuranceClaimAttachmentBusinessTypeEnum.CasesImg
|
);
|
}
|
},
|
enabled: computed(() => !!unref(insuranceClaimId)),
|
});
|
|
const isClaimDetailEdit = computed(() => !!claimDetail.value);
|
|
// const { isLoading } = useQuery({
|
// queryKey: ['insuranceOrderServices/getInsuranceOrderDetail', insuranceOrderId],
|
// queryFn: async () => {
|
// return await insuranceOrderServices.getInsuranceOrderDetail(
|
// { id: unref(insuranceOrderId) },
|
// {
|
// showLoading: false,
|
// }
|
// );
|
// },
|
// placeholderData: () => ({} as API.InsuranceOrderListOutput),
|
// onSuccess(data) {
|
// form.name = data.name;
|
// form.insuranceBeginTime = data.insuranceBeginTime;
|
// form.insuranceEndTime = data.insuranceEndTime;
|
// form.laborContractEnterprise = data.laborContractEnterprise;
|
// form.workEnterprise = data.workEnterprise;
|
// form.workType = data.workType;
|
// form.channel = data.channel;
|
// form.onJobFlag = data.onJobFlag;
|
// form.gender = data.gender;
|
// form.age = data.age;
|
// form.premiumAmount = data.premiumAmount;
|
// form.incDecAmount = data.incDecAmount;
|
// },
|
// enabled: computed(() => claimDetail.value === null),
|
// });
|
|
return {
|
form,
|
// isClaimLoading,
|
claimDetail,
|
isLoading,
|
isClaimDetailEdit,
|
};
|
}
|