wupengfei
2025-04-02 ff6b2db013b8afc86d26ba24fdf5e6115c2127ab
src/views/Home/components/InsureOrderInfoView.vue
@@ -35,12 +35,14 @@
          <ProFormCol>
            <ProFormColItem :span="8">
              <ProFormItemV2 label="参保机构:" prop="insuranceOrg">
                <ProFormRadio v-model="detail.insuranceOrg" :value-enum="InsuredInstitutionEnum" />
                <!-- <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" />
                <!-- <ProFormRadio v-model="detail.insuranceScheme" :value-enum="InsuranceSchemeEnum" /> -->
                <ProFormText v-model.trim="detail.insuranceScheme" />
              </ProFormItemV2>
            </ProFormColItem>
            <ProFormColItem :span="8">
@@ -115,6 +117,7 @@
        </ProTableV2>
      </ChunkCell>
      <ChangePersonInfoDialog v-bind="dialogProps"></ChangePersonInfoDialog>
      <InsureClaimDetailDialog v-bind="dialogInsureClaimProps"></InsureClaimDetailDialog>
    </AppScrollContainer>
  </LoadingLayout>
</template>
@@ -141,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',
@@ -219,7 +224,7 @@
  },
  {
    id: '11',
    enCode: 'serialNumber',
    enCode: 'claimCount',
    name: '理赔',
    width: 100,
  },
@@ -245,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),
    },
  },
]);
@@ -325,6 +330,10 @@
}
async function handleClear() {
  try {
    if (paginationState.total === 0) {
      Message.warnMessage('没有需要清空的数据~');
      return;
    }
    await Message.tipMessage('是否清空人员信息');
    let res = await insuranceOrderServices.clearInsuranceStaffData({
      id: id,
@@ -337,18 +346,31 @@
}
async function handleUploadSuccess(response: UploadUserFile) {
  try {
    // let res = await insuranceOrderServices.importInsuranceOrderData(response.url, {
    //   getResponse: true,
    //   responseType: 'blob',
    // });
    // 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) {}
}
@@ -375,10 +397,22 @@
}
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 ?? '',
    },
  });
}
@@ -421,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>