wupengfei
2025-04-01 4923681d933b455972166552dfb7538cd18f5808
src/views/Home/components/InsureOrderInfoView.vue
@@ -117,6 +117,7 @@
        </ProTableV2>
      </ChunkCell>
      <ChangePersonInfoDialog v-bind="dialogProps"></ChangePersonInfoDialog>
      <InsureClaimDetailDialog v-bind="dialogInsureClaimProps"></InsureClaimDetailDialog>
    </AppScrollContainer>
  </LoadingLayout>
</template>
@@ -143,20 +144,22 @@
  useFormDialog,
  BlFileUpload,
  UploadUserFile,
  XLSXUtils,
} from '@bole-core/components';
import {
  InsuranceOrderTempPath,
  insuranceTypeText,
  InsuredInstitutionEnum,
  InsuranceSchemeEnum,
  InsurancePolicyStatusEnum,
  InsurancePolicyStatusEnumText,
} 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';
defineOptions({
  name: 'InsureOrderInfoView',
@@ -221,7 +224,7 @@
  },
  {
    id: '11',
    enCode: 'serialNumber',
    enCode: 'claimCount',
    name: '理赔',
    width: 100,
  },
@@ -247,11 +250,11 @@
      name: '理赔详情',
    },
    emits: {
      onClick: (role) => handleInsureClaimDetail(role),
      onClick: (role) => handleDetail(role),
    },
    extraProps: {
      hide: (row: API.GetInsuranceStaffPageTemplate) =>
        !(row.serialNumber && detail.value?.status !== InsurancePolicyStatusEnum.WaitEffect),
        !(row.claimCount && detail.value?.status !== InsurancePolicyStatusEnum.WaitEffect),
    },
  },
]);
@@ -327,6 +330,10 @@
}
async function handleClear() {
  try {
    if (paginationState.total === 0) {
      Message.warnMessage('没有需要清空的数据~');
      return;
    }
    await Message.tipMessage('是否清空人员信息');
    let res = await insuranceOrderServices.clearInsuranceStaffData({
      id: id,
@@ -339,25 +346,31 @@
}
async function handleUploadSuccess(response: UploadUserFile) {
  try {
    let res = await insuranceOrderServices.importInsDetailStaffToList(
      {
        id: id,
        url: response.url,
      },
      {
        getResponse: true,
        responseType: 'blob',
      }
    );
    console.log('res: ', res);
    // if (res?.data?.size) {
    //   await Message.tipMessage('存在错误数据,是否导出?');
    //   downloadFile(res.data, `错误人员名单`, 'xlsx');
    // }
    // queryClient.invalidateQueries({
    //   queryKey: ['insuranceOrderServices/getInsuranceStaffList'],
    // });
    // getInsuranceStaffList();
    let res = await insuranceOrderServices.importInsDetailStaffToList({
      id: id,
      url: response.url,
    });
    if (res?.length > 0) {
      await Message.tipMessage('存在错误数据,是否导出?');
      XLSXUtils.exportToXLSX({
        workbookDataList: res,
        fileName: '错误人员名单',
        workbookHeaderMap: {
          name: '雇员姓名',
          sex: '性别',
          certType: '证件类型',
          certNo: '证件号码',
          jobName: '雇员工种',
          useEmploer: '用工单位',
          address: '用工地点',
          note: '备注',
        },
      });
    }
    queryClient.invalidateQueries({
      queryKey: ['insuranceOrderServices/getInsuranceStaffList'],
    });
    getInsuranceStaffList();
  } catch (error) {}
}
@@ -384,6 +397,13 @@
}
function handleBatchChange() {
  if (
    dayjs(detail.value?.effectEndTime).isBefore(dayjs()) ||
    dayjs(detail.value?.effectEndTime).isSame(dayjs(), 'day')
  ) {
    Message.errorMessage('保险今天到期,无法批改');
    return;
  }
  router.push({
    name: 'BatchChange',
    params: {
@@ -392,6 +412,7 @@
    query: {
      insurerName: detail.value?.insurerName ?? '',
      insureBillNo: detail.value?.insureBillNo ?? '',
      effectEndTime: detail.value?.effectEndTime ?? '',
    },
  });
}
@@ -434,16 +455,29 @@
  } catch (error) {}
}
function handleInsureClaimDetail(row: API.GetInsuranceStaffPageTemplate) {
  router.push({
    name: 'InsuranceClaimDetail',
    params: {
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,
    },
    query: {
      fromRoute: 'InsuranceOrderDetail',
    },
  });
      staffList: res,
      routeId: id,
    });
  } catch (error) {}
}
</script>