| <template> | 
|   <LoadingLayout :loading="state.loading"> | 
|     <AppContainer> | 
|       <ChunkCell title=""> | 
|         <ProForm :model="detail" ref="formRef" label-width="120px" :is-read="true"> | 
|           <ProFormCol> | 
|             <ProFormColItem :span="8"> | 
|               <ProFormItemV2 label="保单号:" prop="insureBillNo"> | 
|                 <div class="pro-from-item-read-content-wrapper" v-if="!!detail.insureBillNo"> | 
|                   {{ detail.insureBillNo }} | 
|                   <el-button | 
|                     type="primary" | 
|                     link | 
|                     @click="handleGoStampFiles(id)" | 
|                     v-if="detail.productOnline && detail.anyPayComplete" | 
|                     >详情</el-button | 
|                   > | 
|                 </div> | 
|               </ProFormItemV2> | 
|             </ProFormColItem> | 
|             <ProFormColItem :span="8"> | 
|               <ProFormItemV2 label="生效状态:" prop="status"> | 
|                 <ProFormRadio v-model="detail.status" :value-enum="InsurancePolicyStatusEnumText" /> | 
|               </ProFormItemV2> | 
|             </ProFormColItem> | 
|           </ProFormCol> | 
|           <ProFormCol> | 
|             <ProFormColItem :span="8"> | 
|               <ProFormItemV2 label="保险起期:" prop="effectStartTime"> | 
|                 <ProFormDatePicker v-model.trim="detail.effectStartTime" format="YYYY-MM-DD" /> | 
|               </ProFormItemV2> | 
|             </ProFormColItem> | 
|             <ProFormColItem :span="8"> | 
|               <ProFormItemV2 label="保险止期:" prop="effectEndTime"> | 
|                 <ProFormDatePicker v-model.trim="detail.effectEndTime" format="YYYY-MM-DD" /> | 
|               </ProFormItemV2> | 
|             </ProFormColItem> | 
|             <ProFormColItem :span="8"> | 
|               <ProFormItemV2 label="投保方式:" prop="insurancePeriod"> | 
|                 <ProFormRadio v-model="detail.insurancePeriod" :value-enum="insuranceTypeText" /> | 
|               </ProFormItemV2> | 
|             </ProFormColItem> | 
|           </ProFormCol> | 
|           <ProFormCol> | 
|             <ProFormColItem :span="8"> | 
|               <ProFormItemV2 label="参保机构:" prop="insuranceOrg"> | 
|                 <!-- <ProFormRadio v-model="detail.insuranceOrg" :value-enum="InsuredInstitutionEnum" /> --> | 
|                 <ProFormText v-model.trim="detail.insuranceOrg" /> | 
|               </ProFormItemV2> | 
|             </ProFormColItem> | 
|             <ProFormColItem :span="8"> | 
|               <ProFormItemV2 label="投保方案:" prop="insuranceScheme"> | 
|                 <!-- <ProFormRadio v-model="detail.insuranceScheme" :value-enum="InsuranceSchemeEnum" /> --> | 
|                 <ProFormText v-model.trim="detail.insuranceScheme" /> | 
|               </ProFormItemV2> | 
|             </ProFormColItem> | 
|             <ProFormColItem :span="8"> | 
|               <ProFormItemV2 label="投保人数:" prop="insureCount"> | 
|                 <ProFormInputNumber v-model.trim="detail.insureCount" unit="人" /> | 
|               </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"> | 
|                 <ProFormText v-model.trim="detail.insurerName" /> | 
|               </ProFormItemV2> | 
|             </ProFormColItem> | 
|             <ProFormColItem :span="8"> | 
|               <ProFormItemV2 label="被保人:" prop="policyerName"> | 
|                 <ProFormText v-model.trim="detail.policyerName" /> | 
|               </ProFormItemV2> | 
|             </ProFormColItem> | 
|           </ProFormCol> | 
|         </ProForm> | 
|       </ChunkCell> | 
|       <ChunkCell title="人员信息" class="full-table-chunk"> | 
|         <template | 
|           #titleRight | 
|           v-if="detail.status !== InsurancePolicyStatusEnum.WaitEffect && !detail.productOnline" | 
|         > | 
|           <el-button type="primary" @click="handleBatchChange">批改申请</el-button> | 
|         </template> | 
|         <ProTableQueryFilterBar @on-reset="reset"> | 
|           <template #query> | 
|             <QueryFilterItem> | 
|               <SearchInput | 
|                 v-model="extraParamState.keyWord" | 
|                 style="width: 300px" | 
|                 placeholder="姓名/身份证号/手机号" | 
|                 @on-click-search="getInsuranceStaffList" | 
|               > | 
|               </SearchInput> | 
|             </QueryFilterItem> | 
|           </template> | 
|           <template #btn> | 
|             <template v-if="detail.productOnline"> | 
|               <el-button | 
|                 v-if="detail.auditStatus === InsurancePolicyAuditStatusEnum.Pass" | 
|                 @click="handleSupplySubmit()" | 
|                 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.auditStatus === InsurancePolicyAuditStatusEnum.WaitAdd"> | 
|                 <BlFileUpload | 
|                   :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> | 
|               <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> | 
|               <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> | 
|               <template v-else> | 
|                 <el-button @click="handleExport(null)" type="primary">下载人员清单</el-button> | 
|                 <el-button @click="handleDownloadOrder()" type="primary">下载保单</el-button> | 
|               </template> | 
|             </template> | 
|           </template> | 
|         </ProTableQueryFilterBar> | 
|         <div class="full-table-chunk-table"> | 
|           <ProTableV2 | 
|             v-bind="proTableProps" | 
|             :columns="column" | 
|             :operationBtns="operationBtns" | 
|             ref="proTable" | 
|           > | 
|           </ProTableV2> | 
|         </div> | 
|       </ChunkCell> | 
|       <ChangePersonInfoDialog v-bind="dialogProps"></ChangePersonInfoDialog> | 
|       <InsureClaimDetailDialog v-bind="dialogInsureClaimProps"></InsureClaimDetailDialog> | 
|       <UploadInsurePersonDialog v-bind="dialogSupplyProps" isSupply /> | 
|     </AppContainer> | 
|   </LoadingLayout> | 
| </template> | 
|   | 
| <script setup lang="ts"> | 
| import { | 
|   LoadingLayout, | 
|   AppScrollContainer, | 
|   ProForm, | 
|   ProFormItemV2, | 
|   ChunkCell, | 
|   ProFormText, | 
|   ProTableQueryFilterBar, | 
|   QueryFilterItem, | 
|   SearchInput, | 
|   ProFormCol, | 
|   ProFormColItem, | 
|   ProFormDatePicker, | 
|   ProFormInputNumber, | 
|   useTable, | 
|   ProTableV2, | 
|   ProFormRadio, | 
|   defineOperationBtns, | 
|   useFormDialog, | 
|   BlFileUpload, | 
|   UploadUserFile, | 
|   XLSXUtils, | 
| } from '@bole-core/components'; | 
| import { | 
|   InsuranceOrderTempPath, | 
|   insuranceTypeText, | 
|   InsurancePolicyStatusEnum, | 
|   InsurancePolicyStatusEnumText, | 
|   InsurancePolicyAuditStatusEnum, | 
|   InsuranceDetailStatusEnumText, | 
|   InsuranceDetailStatusEnum, | 
| } from '@/constants'; | 
| import ChangePersonInfoDialog from './ChangePersonInfoDialog.vue'; | 
| import InsureClaimDetailDialog from './InsureClaimDetailDialog.vue'; | 
| import * as insuranceOrderServices from '@/services/api/InsuranceOrder'; | 
| import * as insuranceClaimServices from '@/services/api/InsuranceClaim'; | 
| import { useQuery, useQueryClient } from '@tanstack/vue-query'; | 
| 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', | 
| }); | 
|   | 
| const column: API.CustomModuleColumnDto[] = [ | 
|   { | 
|     id: '1', | 
|     enCode: 'name', | 
|     name: '姓名', | 
|   }, | 
|   { | 
|     id: '2', | 
|     enCode: 'gender', | 
|     name: '性别', | 
|     width: 80, | 
|   }, | 
|   { | 
|     id: '3', | 
|     enCode: 'certType', | 
|     name: '证件类型', | 
|     width: 100, | 
|   }, | 
|   { | 
|     id: '4', | 
|     enCode: 'certNo', | 
|     name: '证件号码', | 
|     width: 180, | 
|   }, | 
|   { | 
|     id: '5', | 
|     enCode: 'jobName', | 
|     name: '雇员工种', | 
|   }, | 
|   { | 
|     id: '51', | 
|     enCode: 'occupationType', | 
|     name: '职业类型', | 
|   }, | 
|   { | 
|     id: '52', | 
|     enCode: 'occupationCode', | 
|     name: '职业码值', | 
|   }, | 
|   { | 
|     id: '6', | 
|     enCode: 'userEmploer', | 
|     name: '用工单位', | 
|   }, | 
|   { | 
|     id: '7', | 
|     enCode: 'address', | 
|     name: '用工地点', | 
|   }, | 
|   { | 
|     id: '8', | 
|     enCode: 'age', | 
|     name: '年龄', | 
|     width: 80, | 
|   }, | 
|   { | 
|     id: '9', | 
|     enCode: 'birthDay', | 
|     name: '出生日期', | 
|     width: 120, | 
|   }, | 
|   { | 
|     id: '10', | 
|     enCode: 'phone', | 
|     name: '手机号码', | 
|     width: 140, | 
|   }, | 
|   { | 
|     id: '101', | 
|     enCode: 'payOrder', | 
|     name: '批次号', | 
|     width: 140, | 
|   }, | 
|   { | 
|     id: '102', | 
|     enCode: 'status', | 
|     name: '投保状态', | 
|     width: 140, | 
|   }, | 
|   { | 
|     id: '103', | 
|     enCode: 'auditRemark', | 
|     name: '备注', | 
|     width: 140, | 
|   }, | 
|   { | 
|     id: '11', | 
|     enCode: 'claimCount', | 
|     name: '理赔', | 
|     width: 100, | 
|   }, | 
| ]; | 
|   | 
| const operationBtns = defineOperationBtns([ | 
|   { | 
|     data: { | 
|       enCode: 'changeInfoBtn', | 
|       name: '修改信息', | 
|     }, | 
|     emits: { | 
|       onClick: (role) => handleChangeInfo(role), | 
|     }, | 
|     extraProps: { | 
|       hide: (row: API.GetInsuranceStaffPageTemplate) => { | 
|         if (detail.value?.productOnline) { | 
|           return detail.value?.auditStatus !== InsurancePolicyAuditStatusEnum.WaitAdd; | 
|         } else { | 
|           return ( | 
|             detail.value?.status !== InsurancePolicyStatusEnum.WaitEffect || | 
|             detail.value?.auditStatus === InsurancePolicyAuditStatusEnum.Pass | 
|           ); | 
|         } | 
|       }, | 
|     }, | 
|   }, | 
|   { | 
|     data: { | 
|       enCode: 'insureClaimDetailBtn', | 
|       name: '理赔详情', | 
|     }, | 
|     emits: { | 
|       onClick: (role) => handleDetail(role), | 
|     }, | 
|     extraProps: { | 
|       hide: (row: API.GetInsuranceStaffPageTemplate) => | 
|         !(row.claimCount && detail.value?.status !== InsurancePolicyStatusEnum.WaitEffect), | 
|     }, | 
|   }, | 
| ]); | 
|   | 
| const route = useRoute(); | 
| const router = useRouter(); | 
| const id = route.params.id as string; | 
| const BaseState = { | 
|   loading: true, | 
| }; | 
|   | 
| const state = reactive({ ...BaseState }); | 
|   | 
| const { data: detail, isLoading } = useQuery({ | 
|   queryKey: ['insuranceOrderServices/getInsurancePolicyHeadDto', id], | 
|   queryFn: async () => { | 
|     return await insuranceOrderServices.getInsurancePolicyHeadDto( | 
|       { id: id }, | 
|       { | 
|         showLoading: !state.loading, | 
|       } | 
|     ); | 
|   }, | 
|   placeholderData: () => ({} as API.GetInsurancePageOutput), | 
|   enabled: !!id, | 
| }); | 
|   | 
| const queryClient = useQueryClient(); | 
|   | 
| onMounted(async () => { | 
|   await queryClient.ensureQueryData({ | 
|     queryKey: ['insuranceOrderServices/getInsurancePolicyHeadDto', id], | 
|   }); | 
|   await getInsuranceStaffList(); | 
|   state.loading = false; | 
| }); | 
|   | 
| const { | 
|   getDataSource: getInsuranceStaffList, | 
|   proTableProps, | 
|   paginationState, | 
|   extraParamState, | 
|   reset, | 
| } = useTable( | 
|   async ({ pageIndex, pageSize }, extraParamState) => { | 
|     try { | 
|       let params: API.GetInsuranceStaffListInput = { | 
|         pageModel: { | 
|           rows: pageSize, | 
|           page: pageIndex, | 
|           orderInput: extraParamState.orderInput, | 
|         }, | 
|         condition: extraParamState.keyWord, | 
|         insurancePolicyId: id, | 
|       }; | 
|       let res = await insuranceOrderServices.getInsuranceStaffList(params, { | 
|         showLoading: !state.loading, | 
|       }); | 
|       console.log('res: ', res); | 
|       return res; | 
|     } catch (error) {} | 
|   }, | 
|   { | 
|     defaultExtraParams: { | 
|       keyWord: '', | 
|       orderInput: [{ property: 'id', order: OrderInputType.Asc }], | 
|     }, | 
|     columnsRenderProps: { | 
|       status: { | 
|         type: 'enum', | 
|         valueEnum: InsuranceDetailStatusEnumText, | 
|       }, | 
|     }, | 
|   } | 
| ); | 
|   | 
| function handleTemplateDownload() { | 
|   downloadFileByUrl(InsuranceOrderTempPath, '人员信息模板'); | 
| } | 
| async function handleClear() { | 
|   try { | 
|     if (paginationState.total === 0) { | 
|       Message.warnMessage('没有需要清空的数据~'); | 
|       return; | 
|     } | 
|     await Message.tipMessage('是否清空人员信息'); | 
|     let res = await insuranceOrderServices.clearInsuranceStaffData({ | 
|       id: id, | 
|     }); | 
|     if (res) { | 
|       Message.successMessage('操作成功'); | 
|       getInsuranceStaffList(paginationState.pageIndex); | 
|     } | 
|   } catch (error) {} | 
| } | 
| async function handleUploadSuccess(response: UploadUserFile) { | 
|   try { | 
|     let res = await insuranceOrderServices.importInsDetailStaffToList({ | 
|       id: id, | 
|       url: response.url, | 
|     }); | 
|     if (res?.length > 0) { | 
|       try { | 
|         await Message.tipMessage('存在错误数据,是否导出?'); | 
|         XLSXUtils.exportToXLSX({ | 
|           workbookDataList: res, | 
|           fileName: '错误人员名单', | 
|           workbookHeaderMap: { | 
|             name: '雇员姓名', | 
|             sex: '性别', | 
|             certType: '证件类型', | 
|             certNo: '证件号码', | 
|             jobName: '雇员工种', | 
|             useEmploer: '用工单位', | 
|             address: '用工地点', | 
|             note: '备注', | 
|           }, | 
|         }); | 
|       } catch (error) {} | 
|     } | 
|     queryClient.invalidateQueries({ | 
|       queryKey: ['insuranceOrderServices/getInsuranceStaffList'], | 
|     }); | 
|     getInsuranceStaffList(); | 
|   } catch (error) {} | 
| } | 
|   | 
| function handleDownloadOrder() { | 
|   downloadFileByUrl(setOSSLink(detail.value?.insureBillUrl)); | 
| } | 
|   | 
| const { handleGoDownloadInvoice, handleGoStampFiles } = useInsureActions(); | 
|   | 
| function handleBatchChange() { | 
|   if ( | 
|     dayjs(detail.value?.effectEndTime).isBefore(dayjs()) || | 
|     dayjs(detail.value?.effectEndTime).isSame(dayjs(), 'day') | 
|   ) { | 
|     Message.errorMessage('保险今天到期,无法批改'); | 
|     return; | 
|   } | 
|   router.push({ | 
|     name: 'BatchChange', | 
|     params: { | 
|       id: id, | 
|     }, | 
|     query: { | 
|       insurerName: detail.value?.insurerName ?? '', | 
|       insureBillNo: detail.value?.insureBillNo ?? '', | 
|       effectEndTime: detail.value?.effectEndTime ?? '', | 
|     }, | 
|   }); | 
| } | 
|   | 
| const { dialogProps, handleEdit, editForm, dialogState } = useFormDialog({ | 
|   onConfirm: updateInsuranceStaffInfo, | 
|   defaultFormParams: { | 
|     id: '', | 
|     name: '', | 
|     idNumber: '', | 
|     phone: '', | 
|   }, | 
|   closeAfterConfirm: false, | 
| }); | 
|   | 
| function handleChangeInfo(row: API.GetInsuranceStaffPageTemplate) { | 
|   handleEdit({ | 
|     id: row.id, | 
|     name: row.name, | 
|     idNumber: row.certNo, | 
|     phone: row.phone, | 
|   }); | 
| } | 
|   | 
| async function updateInsuranceStaffInfo() { | 
|   try { | 
|     let params: API.UpdateInsuranceStaffInfoInput = { | 
|       insurancePolicyId: id, | 
|       id: editForm.id, | 
|       name: editForm.name, | 
|       idNumber: editForm.idNumber, | 
|       phone: editForm.phone, | 
|     }; | 
|     let res = await insuranceOrderServices.updateInsuranceStaffInfo(params); | 
|     if (res) { | 
|       Message.successMessage('修改成功'); | 
|       dialogState.dialogVisible = false; | 
|       getInsuranceStaffList(paginationState.pageIndex); | 
|     } | 
|   } catch (error) {} | 
| } | 
|   | 
| const { dialogProps: dialogInsureClaimProps, handleEdit: handleInsureClaimEdit } = useFormDialog({ | 
|   defaultFormParams: { | 
|     id: '', | 
|     routeId: '', | 
|     staffList: [] as API.InsuranceClaimDetailOutput[], | 
|   }, | 
| }); | 
|   | 
| async function getInsuranceClaimDetailList(id: string) { | 
|   try { | 
|     return await insuranceClaimServices.getInsuranceClaimDetailList({ id: id }); | 
|   } catch (error) {} | 
| } | 
|   | 
| async function handleDetail(row: API.GetInsuranceStaffPageTemplate) { | 
|   try { | 
|     const res = await getInsuranceClaimDetailList(row.id); | 
|     handleInsureClaimEdit({ | 
|       id: row.id, | 
|       staffList: res, | 
|       routeId: id, | 
|     }); | 
|   } 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, | 
|     effectEndTime: detail.value.effectEndTime, | 
|   }); | 
| } | 
|   | 
| 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'), | 
|     effectEndTime: '', | 
|   }, | 
|   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> | 
| @use '@/style/common.scss' as *; | 
|   | 
| .full-table-chunk { | 
|   display: flex; | 
|   min-height: 0; | 
|   flex: 1; | 
|   flex-direction: column; | 
|   | 
|   :deep() { | 
|     .chunk-cell-content { | 
|       display: flex; | 
|       flex-direction: column; | 
|       flex: 1; | 
|       min-height: 0; | 
|     } | 
|   } | 
|   | 
|   .full-table-chunk-table { | 
|     display: flex; | 
|     flex-direction: column; | 
|     flex: 1; | 
|     min-height: 0; | 
|   } | 
| } | 
| </style> |