zhengyiming
5 天以前 eed2448d2e9d3dd2b1ec17d5c4ae74b102d793c5
src/views/Home/Home.vue
@@ -26,6 +26,15 @@
          </QueryFilterItem>
          <QueryFilterItem>
            <FieldRadio
              v-model="extraParamState.auditStatus"
              :value-enum="InsurancePolicyAuditStatusEnumText"
              buttonStyle
              showAllBtn
              @change="getList()"
            />
          </QueryFilterItem>
          <QueryFilterItem>
            <FieldRadio
              v-model="extraParamState.status"
              :value-enum="InsurancePolicyStatusEnumText"
              buttonStyle
@@ -44,6 +53,13 @@
          </QueryFilterItem>
        </template>
        <template #btn>
          <el-button
            @click="handleDownloadOccupationType()"
            type="primary"
            style="margin-right: 10px"
            link
            >职业类型对照表</el-button
          >
          <el-button @click="handleDownload()" type="primary" style="margin-right: 10px" link
            >模板下载</el-button
          >
@@ -73,10 +89,29 @@
          rowKey: 'id',
        }"
      >
        <template #auditStatus="{ row }">
          <el-tooltip
            class="box-item"
            effect="dark"
            :content="row.auditRemark"
            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] }}
              <el-icon size="16" color="#3a71ff"><QuestionFilled /></el-icon>
            </div>
          </el-tooltip>
          <el-text v-else style="color: inherit">
            {{ InsurancePolicyAuditStatusEnumText[row.auditStatus] }}
          </el-text>
        </template>
      </ProTableV2>
    </AppContainer>
    <UploadInsurePersonDialog v-bind="dialogProps" />
    <UploadStampFileDialog v-bind="dialogStampFileProps" />
    <InsureInstructionsDialog v-bind="dialogInstructionsProps" />
  </LoadingLayout>
</template>
@@ -95,6 +130,7 @@
  SearchInput,
  FieldRadio,
  XLSXUtils,
  useDialog,
} from '@bole-core/components';
import * as insuranceOrderServices from '@/services/api/InsuranceOrder';
import { Message, OrderInputType, downloadFileByUrl } from '@bole-core/core';
@@ -109,9 +145,16 @@
  InsurancePolicyStatusEnumText,
  InsurancePolicyStatusEnum,
  AppType,
  InsurancePolicyAuditStatusEnumText,
  InsurancePolicyAuditStatusEnum,
  InsurancePolicyProductIdNumberEnum,
  InsurancePolicyListPayStatusEnum,
  InsurancePolicyListPayStatusEnumText,
  InsuranceOccupationTypeTempPath,
} from '@/constants';
import dayjs from 'dayjs';
import _ from 'lodash';
import InsureInstructionsDialog from './components/InsureInstructionsDialog.vue';
defineOptions({
  name: 'Home',
@@ -136,7 +179,8 @@
      onClick: (role) => handleBatch(role),
    },
    extraProps: {
      hide: (row: API.GetInsurancePageOutput) => row.status !== InsurancePolicyStatusEnum.Effecting,
      hide: (row: API.GetInsurancePageOutput) =>
        row.productOnline || row.status !== InsurancePolicyStatusEnum.Effecting,
    },
  },
  {
@@ -161,19 +205,56 @@
      onClick: (role) => handleDownloadInsureFile(role),
    },
    extraProps: {
      hide: (row: API.GetInsurancePageOutput) =>
        row.status === InsurancePolicyStatusEnum.WaitEffect,
      hide: (row: API.GetInsurancePageOutput) => row.productOnline || !row.insureBillUrl,
    },
  },
  {
    data: {
      enCode: 'standarEndoBtn',
      name: '申请退保',
      enCode: 'payBtn',
      name: '支付',
    },
    emits: {
      onClick: (role) => handleStandarEndo(role),
      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',
  //     name: '申请退保',
  //   },
  //   emits: {
  //     onClick: (role) => handleStandarEndo(role),
  //   },
  // },
]).filter(Boolean);
const BaseState = {
@@ -185,6 +266,7 @@
onMounted(async () => {
  await getList();
  state.loading = false;
  handleOpenInstructions();
});
const {
@@ -209,6 +291,7 @@
      creationDate: [] as unknown as ModelValueType,
      condition: '',
      status: '' as any as InsurancePolicyStatusEnum,
      auditStatus: '' as any as InsurancePolicyAuditStatusEnum,
      insurancePeriod: '',
    },
    columnsRenderProps: {
@@ -227,6 +310,7 @@
        formatter: (row: API.GetInsurancePageOutput) =>
          row.amount == null ? '' : toThousand(row.amount),
      },
      payStatus: { type: 'enum', valueEnum: InsurancePolicyListPayStatusEnumText },
    },
  }
);
@@ -243,6 +327,7 @@
    condition: extraParamState.condition,
    insurancePeriod: extraParamState.insurancePeriod,
    status: extraParamState.status,
    auditStatus: extraParamState.auditStatus,
  };
  return params;
}
@@ -252,6 +337,8 @@
  defaultFormParams: {
    serialNum: '',
    url: [] as UploadUserFile[],
    productIdNumber: '',
    productSchemeIdNumber: '',
  },
  closeAfterConfirm: false,
});
@@ -281,6 +368,8 @@
    let params: API.APIimportInsStaffToListParams = {
      serialNum: editForm.serialNum,
      url: editForm.url?.[0]?.path,
      productIdNumber: editForm.productIdNumber,
      productSchemeIdNumber: editForm.productSchemeIdNumber,
    };
    let res = await insuranceOrderServices.importInsStaffToList(params);
    if (res.length > 0) {
@@ -303,6 +392,12 @@
    dialogState.dialogVisible = false;
    getList(paginationState.pageIndex);
  } catch (error) {}
}
const { dialogProps: dialogInstructionsProps, dialogState: dialogInstructionsState } = useDialog();
function handleOpenInstructions() {
  dialogInstructionsState.dialogVisible = true;
}
function handleUpload() {
@@ -346,6 +441,10 @@
      downloadFile(res.data, `在保人员导出`, 'xlsx');
    }
  } catch (error) {}
}
function handleDownloadOccupationType() {
  downloadFileByUrl(InsuranceOccupationTypeTempPath, '职业类型对照表');
}
function handleDownload() {
@@ -451,4 +550,36 @@
    // }
  } 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 });
    router.push({
      name: 'InsureDownloadInvoice',
      params: {
        id: row.id,
      },
    });
  } catch (error) {}
}
</script>