|  |  |  | 
|---|
|  |  |  | <QueryFilterItem> | 
|---|
|  |  |  | <FieldRadio | 
|---|
|  |  |  | v-model="extraParamState.insurancePeriod" | 
|---|
|  |  |  | :value-enum="insuranceTypeText" | 
|---|
|  |  |  | :value-enum="insuranceTypeTextForFilter" | 
|---|
|  |  |  | buttonStyle | 
|---|
|  |  |  | showAllBtn | 
|---|
|  |  |  | @change="getList()" | 
|---|
|  |  |  | 
|---|
|  |  |  | <QueryFilterItem> | 
|---|
|  |  |  | <FieldRadio | 
|---|
|  |  |  | v-model="extraParamState.auditStatus" | 
|---|
|  |  |  | :value-enum="InsurancePolicyAuditStatusEnumText" | 
|---|
|  |  |  | :value-enum="InsurancePolicyAuditStatusEnumTextForFilter" | 
|---|
|  |  |  | buttonStyle | 
|---|
|  |  |  | showAllBtn | 
|---|
|  |  |  | @change="getList()" | 
|---|
|  |  |  | 
|---|
|  |  |  | </QueryFilterItem> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | <template #btn> | 
|---|
|  |  |  | <el-button | 
|---|
|  |  |  | @click="handleDownloadOccupationType()" | 
|---|
|  |  |  | type="primary" | 
|---|
|  |  |  | style="margin-right: 10px" | 
|---|
|  |  |  | link | 
|---|
|  |  |  | v-if="isSjbAccount" | 
|---|
|  |  |  | >职业类型对照表</el-button | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-button @click="handleDownload()" type="primary" style="margin-right: 10px" link | 
|---|
|  |  |  | >模板下载</el-button | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-button @click="handleUpload()" type="primary" style="margin-right: 10px" | 
|---|
|  |  |  | <el-button @click="handleOpenInstructions()" type="primary" style="margin-right: 10px" | 
|---|
|  |  |  | >导入投保人员</el-button | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <!-- <el-button | 
|---|
|  |  |  | 
|---|
|  |  |  | class="box-item" | 
|---|
|  |  |  | effect="dark" | 
|---|
|  |  |  | :content="row.auditRemark" | 
|---|
|  |  |  | placement="top-start" | 
|---|
|  |  |  | placement="top" | 
|---|
|  |  |  | v-if="row.auditStatus === InsurancePolicyAuditStatusEnum.Reject && row.auditRemark" | 
|---|
|  |  |  | popper-class="max-width-popper" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <div style="display: inline-flex; align-items: center; color: inherit"> | 
|---|
|  |  |  | {{ InsurancePolicyAuditStatusEnumText[row.auditStatus] }} | 
|---|
|  |  |  | 
|---|
|  |  |  | </AppContainer> | 
|---|
|  |  |  | <UploadInsurePersonDialog v-bind="dialogProps" /> | 
|---|
|  |  |  | <UploadStampFileDialog v-bind="dialogStampFileProps" /> | 
|---|
|  |  |  | <InsureInstructionsDialog v-bind="dialogInstructionsProps" /> | 
|---|
|  |  |  | <InsureLineModeSelectDialog v-bind="dialogLineModeSelectProps" /> | 
|---|
|  |  |  | <DisbursementDialog v-bind="dialogDisbursementProps" /> | 
|---|
|  |  |  | </LoadingLayout> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | SearchInput, | 
|---|
|  |  |  | FieldRadio, | 
|---|
|  |  |  | XLSXUtils, | 
|---|
|  |  |  | useDialog, | 
|---|
|  |  |  | } from '@bole-core/components'; | 
|---|
|  |  |  | import * as insuranceOrderServices from '@/services/api/InsuranceOrder'; | 
|---|
|  |  |  | import * as parkBountyApplyServices from '@/services/api/ParkBountyApply'; | 
|---|
|  |  |  | import { Message, OrderInputType, downloadFileByUrl } from '@bole-core/core'; | 
|---|
|  |  |  | import { columns } from './constants'; | 
|---|
|  |  |  | import { columns, InsureLineMode } from './constants'; | 
|---|
|  |  |  | import UploadInsurePersonDialog from './components/UploadInsurePersonDialog.vue'; | 
|---|
|  |  |  | import UploadStampFileDialog from './components/UploadStampFileDialog.vue'; | 
|---|
|  |  |  | import { format, downloadFile, setOSSLink, toThousand, convertApi2FormUrl } from '@/utils'; | 
|---|
|  |  |  | import { | 
|---|
|  |  |  | format, | 
|---|
|  |  |  | downloadFile, | 
|---|
|  |  |  | setOSSLink, | 
|---|
|  |  |  | toThousand, | 
|---|
|  |  |  | convertApi2FormUrl, | 
|---|
|  |  |  | convertFormUrl2Api, | 
|---|
|  |  |  | } from '@/utils'; | 
|---|
|  |  |  | import { ModelValueType } from 'element-plus'; | 
|---|
|  |  |  | import { | 
|---|
|  |  |  | InsuranceOrderTempPath, | 
|---|
|  |  |  | 
|---|
|  |  |  | InsurancePolicyStatusEnum, | 
|---|
|  |  |  | AppType, | 
|---|
|  |  |  | InsurancePolicyAuditStatusEnumText, | 
|---|
|  |  |  | InsurancePolicyAuditStatusEnumTextForFilter, | 
|---|
|  |  |  | InsurancePolicyAuditStatusEnum, | 
|---|
|  |  |  | InsurancePolicyProductIdNumberEnum, | 
|---|
|  |  |  | InsurancePolicyListPayStatusEnum, | 
|---|
|  |  |  | InsurancePolicyListPayStatusEnumText, | 
|---|
|  |  |  | InsuranceOccupationTypeTempPath, | 
|---|
|  |  |  | InsurancePeriodEnum, | 
|---|
|  |  |  | insuranceTypeTextForFilter, | 
|---|
|  |  |  | } from '@/constants'; | 
|---|
|  |  |  | import dayjs from 'dayjs'; | 
|---|
|  |  |  | import _ from 'lodash'; | 
|---|
|  |  |  | import InsureInstructionsDialog from './components/InsureInstructionsDialog.vue'; | 
|---|
|  |  |  | import InsureLineModeSelectDialog from './components/InsureLineModeSelectDialog.vue'; | 
|---|
|  |  |  | import DisbursementDialog from './components/DisbursementDialog.vue'; | 
|---|
|  |  |  | import { useInsureProductSchemeAllList, useUserInsureProductSetting } from '@/hooks'; | 
|---|
|  |  |  | // import { Recorder } from '@/utils/record'; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | defineOptions({ | 
|---|
|  |  |  | name: 'Home', | 
|---|
|  |  |  | 
|---|
|  |  |  | onClick: (role) => handleBatch(role), | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | extraProps: { | 
|---|
|  |  |  | hide: (row: API.GetInsurancePageOutput) => | 
|---|
|  |  |  | row.productIdNumber === InsurancePolicyProductIdNumberEnum.SJB || | 
|---|
|  |  |  | row.status !== InsurancePolicyStatusEnum.Effecting, | 
|---|
|  |  |  | hide: (row: API.GetInsurancePageOutput) => row.status !== InsurancePolicyStatusEnum.Effecting, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  | onClick: (role) => handleUploadStampFile(role), | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | extraProps: { | 
|---|
|  |  |  | hide: (row: API.GetInsurancePageOutput) => | 
|---|
|  |  |  | row.auditStatus !== InsurancePolicyAuditStatusEnum.Pass || | 
|---|
|  |  |  | row.status !== InsurancePolicyStatusEnum.WaitEffect, | 
|---|
|  |  |  | hide: (row: API.GetInsurancePageOutput) => { | 
|---|
|  |  |  | if (row.productOnline) { | 
|---|
|  |  |  | return ( | 
|---|
|  |  |  | row.auditStatus !== InsurancePolicyAuditStatusEnum.WaitAdd && | 
|---|
|  |  |  | row.auditStatus !== InsurancePolicyAuditStatusEnum.WaitAudit | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | return row.status !== InsurancePolicyStatusEnum.WaitEffect; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  | onClick: (role) => handleDownloadInsureFile(role), | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | extraProps: { | 
|---|
|  |  |  | hide: (row: API.GetInsurancePageOutput) => !row.insureBillUrl, | 
|---|
|  |  |  | hide: (row: API.GetInsurancePageOutput) => row.productOnline || !row.insureBillUrl, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // { | 
|---|
|  |  |  | //   data: { | 
|---|
|  |  |  | //     enCode: 'payBtn', | 
|---|
|  |  |  | //     name: '支付', | 
|---|
|  |  |  | //   }, | 
|---|
|  |  |  | //   emits: { | 
|---|
|  |  |  | //     onClick: (role) => handlePay(role), | 
|---|
|  |  |  | //   }, | 
|---|
|  |  |  | //   extraProps: { | 
|---|
|  |  |  | //     hide: (row: API.GetInsurancePageOutput) => | 
|---|
|  |  |  | //       row.payStatus != InsurancePolicyListPayStatusEnum.WaitPay, | 
|---|
|  |  |  | //   }, | 
|---|
|  |  |  | // }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | data: { | 
|---|
|  |  |  | enCode: 'stampFilesBtn', | 
|---|
|  |  |  | name: '保单下载', | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | emits: { | 
|---|
|  |  |  | onClick: (role) => handleGoStampFiles(role), | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | extraProps: { | 
|---|
|  |  |  | hide: (row: API.GetInsurancePageOutput) => !(row.productOnline && row.anyPayComplete), | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | data: { | 
|---|
|  |  |  | enCode: 'downloadInvoiceBtn', | 
|---|
|  |  |  | name: '发票下载', | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | emits: { | 
|---|
|  |  |  | onClick: (role) => handleGoDownloadInvoice(role), | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | extraProps: { | 
|---|
|  |  |  | hide: (row: API.GetInsurancePageOutput) => !(row.productOnline && row.anyPayComplete), | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // { | 
|---|
|  |  |  | //   data: { | 
|---|
|  |  |  | //     enCode: 'standarEndoBtn', | 
|---|
|  |  |  | 
|---|
|  |  |  | //     onClick: (role) => handleStandarEndo(role), | 
|---|
|  |  |  | //   }, | 
|---|
|  |  |  | // }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | data: { | 
|---|
|  |  |  | enCode: 'submitAuditBtn', | 
|---|
|  |  |  | name: '提交审核', | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | emits: { | 
|---|
|  |  |  | onClick: (role) => handleSubmitAuditBtn(role), | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | extraProps: { | 
|---|
|  |  |  | hide: (row: API.GetInsurancePageOutput) => | 
|---|
|  |  |  | row.auditStatus != InsurancePolicyAuditStatusEnum.WaitAdd, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | data: { | 
|---|
|  |  |  | enCode: 'applyTradeBySelfBtn', | 
|---|
|  |  |  | name: '出账申请', | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | emits: { | 
|---|
|  |  |  | onClick: (role) => handleParkBountyApplyTradeBySelf(role), | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | extraProps: { | 
|---|
|  |  |  | hide: (row: API.GetInsurancePageOutput) => row.productOnline, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | ]).filter(Boolean); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const BaseState = { | 
|---|
|  |  |  | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const state = reactive({ ...BaseState }); | 
|---|
|  |  |  | // const recorder = ref(new Recorder()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | onMounted(async () => { | 
|---|
|  |  |  | await getList(); | 
|---|
|  |  |  | state.loading = false; | 
|---|
|  |  |  | // handleOpenInstructions(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // setTimeout(() => { | 
|---|
|  |  |  | //   // recorder.value.init(); | 
|---|
|  |  |  | //   recorder.value.replaySession('9cb24e5a-0423-4dcd-abd5-fa7a4117cadc'); | 
|---|
|  |  |  | // }, 3000); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // onUnmounted(() => { | 
|---|
|  |  |  | //   recorder.value.stopRecordingAndSave(); | 
|---|
|  |  |  | // }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const { | 
|---|
|  |  |  | getDataSource: getList, | 
|---|
|  |  |  | 
|---|
|  |  |  | formatter: (row: API.GetInsurancePageOutput) => | 
|---|
|  |  |  | row.amount == null ? '' : toThousand(row.amount), | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | payStatus: { type: 'enum', valueEnum: InsurancePolicyListPayStatusEnumText }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | 
|---|
|  |  |  | url: [] as UploadUserFile[], | 
|---|
|  |  |  | productIdNumber: '', | 
|---|
|  |  |  | productSchemeIdNumber: '', | 
|---|
|  |  |  | effectStartTime: dayjs().add(1, 'day').format('YYYY-MM-DD'), | 
|---|
|  |  |  | effectEndTime: '', | 
|---|
|  |  |  | isOnLineInsurance: false, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | closeAfterConfirm: false, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | async function checkInrancesSerialNumStatus() { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | let params: API.APIimportInsStaffToListParams = { | 
|---|
|  |  |  | let params: API.APIcheckInrancesSerialNumStatusParams = { | 
|---|
|  |  |  | serialNum: editForm.serialNum, | 
|---|
|  |  |  | url: editForm.url?.[0]?.path, | 
|---|
|  |  |  | // url: editForm.url?.[0]?.path, | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | let res = await insuranceOrderServices.checkInrancesSerialNumStatus(params); | 
|---|
|  |  |  | if (res === InsurancePolicyStatusEnum.Effecting) { | 
|---|
|  |  |  | 
|---|
|  |  |  | } else if (res === InsurancePolicyStatusEnum.OutTimeEffect) { | 
|---|
|  |  |  | await Message.tipMessage('该批次保单已失效,请修改批次号后重新导入'); | 
|---|
|  |  |  | } else if (res === InsurancePolicyStatusEnum.WaitEffect) { | 
|---|
|  |  |  | await Message.tipMessage('存在相同的批次号,是否覆盖?'); | 
|---|
|  |  |  | importInsStaffToList(); | 
|---|
|  |  |  | if (isSjbAccount.value) { | 
|---|
|  |  |  | await Message.tipMessage('存在相同的批次号,请修改批次号后重新导入'); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | await Message.tipMessage('存在相同的批次号,是否覆盖?'); | 
|---|
|  |  |  | importInsStaffToList(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | importInsStaffToList(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (error) {} | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const { isSjbAccount, getInsureProductIdByIdNumber } = useUserInsureProductSetting(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const { getInsureProductSchemeByIdNumber } = useInsureProductSchemeAllList({ | 
|---|
|  |  |  | insureProductId: computed(() => getInsureProductIdByIdNumber(editForm.productIdNumber)), | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | async function importInsStaffToList() { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | let params: API.APIimportInsStaffToListParams = { | 
|---|
|  |  |  | let params: API.ImportInsStaffToListFrontInput = { | 
|---|
|  |  |  | serialNum: editForm.serialNum, | 
|---|
|  |  |  | url: editForm.url?.[0]?.path, | 
|---|
|  |  |  | productIdNumber: editForm.productIdNumber, | 
|---|
|  |  |  | productSchemeIdNumber: editForm.productSchemeIdNumber, | 
|---|
|  |  |  | effectStartTime: editForm.effectStartTime, | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | let res = await insuranceOrderServices.importInsStaffToList(params); | 
|---|
|  |  |  | if (res.length > 0) { | 
|---|
|  |  |  | await Message.tipMessage('存在错误数据,是否导出?'); | 
|---|
|  |  |  | XLSXUtils.exportToXLSX({ | 
|---|
|  |  |  | workbookDataList: res, | 
|---|
|  |  |  | fileName: '错误人员名单', | 
|---|
|  |  |  | workbookHeaderMap: { | 
|---|
|  |  |  | name: '雇员姓名', | 
|---|
|  |  |  | sex: '性别', | 
|---|
|  |  |  | certType: '证件类型', | 
|---|
|  |  |  | certNo: '证件号码', | 
|---|
|  |  |  | jobName: '雇员工种', | 
|---|
|  |  |  | useEmploer: '用工单位', | 
|---|
|  |  |  | address: '用工地点', | 
|---|
|  |  |  | note: '备注', | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | const currentInsureProductScheme = getInsureProductSchemeByIdNumber( | 
|---|
|  |  |  | editForm.productSchemeIdNumber | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | if (currentInsureProductScheme?.period === InsurancePeriodEnum['1-29D']) { | 
|---|
|  |  |  | params.effectEndTime = editForm.effectEndTime; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | dialogState.dialogVisible = false; | 
|---|
|  |  |  | getList(paginationState.pageIndex); | 
|---|
|  |  |  | let res = await insuranceOrderServices.importInsStaffToList(params, { | 
|---|
|  |  |  | timeout: 60 * 1000 * 10, | 
|---|
|  |  |  | customErrorHandler(error) { | 
|---|
|  |  |  | if (error?.response?.data?.error?.code === '10001') { | 
|---|
|  |  |  | Message.tipMessage(error.response.data?.error?.message, { | 
|---|
|  |  |  | showCancelButton: false, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | return true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | 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) {} | 
|---|
|  |  |  | dialogState.dialogVisible = false; | 
|---|
|  |  |  | getList(paginationState.pageIndex); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (error) {} | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function handleUpload() { | 
|---|
|  |  |  | const { dialogProps: dialogLineModeSelectProps, dialogState: dialogLineModeSelectState } = | 
|---|
|  |  |  | useDialog({ | 
|---|
|  |  |  | onConfirm: handleLineModeSelect, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | async function handleLineModeSelect(mode: InsureLineMode) { | 
|---|
|  |  |  | if (mode === InsureLineMode.OnLine) { | 
|---|
|  |  |  | dialogInstructionsState.dialogVisible = true; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | handleUpload(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const { dialogProps: dialogInstructionsProps, dialogState: dialogInstructionsState } = useDialog({ | 
|---|
|  |  |  | onConfirm: () => { | 
|---|
|  |  |  | return handleUpload(true); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function handleOpenInstructions() { | 
|---|
|  |  |  | if (isSjbAccount.value) { | 
|---|
|  |  |  | // dialogInstructionsState.dialogVisible = true; | 
|---|
|  |  |  | dialogLineModeSelectState.dialogVisible = true; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | handleUpload(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | async function handleUpload(isOnLineInsurance = false) { | 
|---|
|  |  |  | handleAdd({ | 
|---|
|  |  |  | serialNum: `${dayjs().format('YYYYMMDD')}${_.random(0, 9999).toString().padStart(4, '0')}`, | 
|---|
|  |  |  | url: [] as UploadUserFile[], | 
|---|
|  |  |  | isOnLineInsurance, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | downloadFile(res.data, `在保人员导出`, 'xlsx'); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (error) {} | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function handleDownloadOccupationType() { | 
|---|
|  |  |  | downloadFileByUrl(InsuranceOccupationTypeTempPath, '职业类型对照表'); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function handleDownload() { | 
|---|
|  |  |  | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | let params: API.UploadInsuranceStampFilesInput = { | 
|---|
|  |  |  | insurancePolicyId: stampFileForm.id, | 
|---|
|  |  |  | listFiles: stampFileForm.url?.map((x) => x.path) ?? [], | 
|---|
|  |  |  | listFiles: convertFormUrl2Api(stampFileForm.url), | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | let res = await insuranceOrderServices.uploadInsuranceStampFiles(params); | 
|---|
|  |  |  | if (res) { | 
|---|
|  |  |  | 
|---|
|  |  |  | // } | 
|---|
|  |  |  | } catch (error) {} | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | async function handleGoStampFiles(row: API.GetInsurancePageOutput) { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | router.push({ | 
|---|
|  |  |  | name: 'InsurancePolicyStampFiles', | 
|---|
|  |  |  | params: { | 
|---|
|  |  |  | id: row.id, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } catch (error) {} | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function handlePay(row: API.GetInsurancePageOutput) { | 
|---|
|  |  |  | router.push({ | 
|---|
|  |  |  | name: 'InsurePayDetail', | 
|---|
|  |  |  | params: { | 
|---|
|  |  |  | id: row.id, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | async function handleGoDownloadInvoice(row: API.GetInsurancePageOutput) { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | await insuranceOrderServices.getInvoiceId( | 
|---|
|  |  |  | { id: row.id }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | timeout: 60 * 1000 * 30, | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | router.push({ | 
|---|
|  |  |  | name: 'InsureDownloadInvoice', | 
|---|
|  |  |  | params: { | 
|---|
|  |  |  | id: row.id, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } catch (error) {} | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | async function handleSubmitAuditBtn(row: API.GetInsurancePageOutput) { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | let params: API.InsurancePolicyAuditInput = { | 
|---|
|  |  |  | insurancePolicyId: row.id, | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | let res = await insuranceOrderServices.insurancePolicyAddAudit(params); | 
|---|
|  |  |  | if (res) { | 
|---|
|  |  |  | Message.successMessage('上传成功'); | 
|---|
|  |  |  | getList(paginationState.pageIndex); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (error) {} | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function handleParkBountyApplyTradeBySelf(row: API.GetInsurancePageOutput) { | 
|---|
|  |  |  | handleDisbursementAdd({ | 
|---|
|  |  |  | remianAmount: row.remianAmount, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const { | 
|---|
|  |  |  | dialogProps: dialogDisbursementProps, | 
|---|
|  |  |  | handleAdd: handleDisbursementAdd, | 
|---|
|  |  |  | editForm: editDisbursementForm, | 
|---|
|  |  |  | } = useFormDialog({ | 
|---|
|  |  |  | onConfirm: parkBountyApplyTradeBySelf, | 
|---|
|  |  |  | defaultFormParams: { | 
|---|
|  |  |  | payRemark: '', | 
|---|
|  |  |  | tradeAmount: 0, | 
|---|
|  |  |  | remianAmount: 0, | 
|---|
|  |  |  | payFileUrl: [] as UploadUserFile[], | 
|---|
|  |  |  |  | 
|---|
|  |  |  | incomeCompanyName: '', | 
|---|
|  |  |  | insureBillNo: '', | 
|---|
|  |  |  | incomeBankAccount: '', | 
|---|
|  |  |  | incomeBankCardNumber: '', | 
|---|
|  |  |  | incomeBankName: '', | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | async function parkBountyApplyTradeBySelf() { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | let params: API.CreateParkBountyTradeInput = { | 
|---|
|  |  |  | tradeAmount: editDisbursementForm.tradeAmount, | 
|---|
|  |  |  | payFileUrl: editDisbursementForm.payFileUrl.map((item) => item.url).join('|'), | 
|---|
|  |  |  | payRemark: editDisbursementForm.payRemark, | 
|---|
|  |  |  | incomeCompanyName: editDisbursementForm.incomeCompanyName, | 
|---|
|  |  |  | insureBillNo: editDisbursementForm.insureBillNo, | 
|---|
|  |  |  | incomeBankAccount: editDisbursementForm.incomeBankAccount, | 
|---|
|  |  |  | incomeBankCardNumber: editDisbursementForm.incomeBankCardNumber, | 
|---|
|  |  |  | incomeBankName: editDisbursementForm.incomeBankName, | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | let res = await parkBountyApplyServices.parkBountyApplyTradeBySelf(params); | 
|---|
|  |  |  | if (res) { | 
|---|
|  |  |  | Message.successMessage('操作成功'); | 
|---|
|  |  |  | getList(paginationState.pageIndex); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (error) {} | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </script> | 
|---|