zhengyiming
2025-07-29 089f6058826ac067061b6ed4958baff50f9bdac9
fix: 新增生煎保(短期方案)
1个文件已添加
12个文件已修改
610 ■■■■■ 已修改文件
package.json 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/constants/insuranceClaim.ts 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/hooks/dic.ts 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.ts 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/InsuranceOrder.ts 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/ParkBountyApply.ts 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/typings.d.ts 163 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Home/Home.vue 73 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Home/InsurancePayManage.vue 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Home/components/InsureOrderInfoView.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Home/components/UploadInsurePersonDialog.vue 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Home/constants/index.ts 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vite.config.ts 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json
@@ -6,6 +6,7 @@
    "dev": "cross-env vite",
    "dev:rz": "cross-env VITE_AppType=rz vite",
    "dev:jx": "cross-env VITE_AppType=jx vite",
    "dev:tp": "cross-env VITE_AppType=tp vite",
    "dev:other": "cross-env VITE_AppType=other vite",
    "build": "cross-env NODE_OPTIONS=--max_old_space_size=16000 vite build",
    "build:rz": "cross-env NODE_OPTIONS=--max_old_space_size=16000 VITE_AppType=rz vite build --mode rz",
@@ -19,6 +20,7 @@
    "build:staging:yx": "cross-env vite build --mode stagingone",
    "build:staging:other": "cross-env VITE_AppType=other vite build --mode staging",
    "build:staging:jx": "cross-env VITE_AppType=jx vite build --mode staging",
    "build:staging:tp": "cross-env VITE_AppType=tp vite build --mode staging",
    "build:staging:jenkins": "cross-env NODE_OPTIONS=--max_old_space_size=16000 vite build --mode staging",
    "preview": "vite preview",
    "prepare": "husky install",
src/constants/insuranceClaim.ts
@@ -82,14 +82,29 @@
  增员: '增员',
  减员: '减员',
};
export enum InsurancePeriodEnum {
  '30D' = '30D',
  '360D' = '360D',
  '1-29D' = '1-29D',
}
export const insuranceTypeText = {
  '30D': '月保',
  '360D': '年保',
  [InsurancePeriodEnum['30D']]: '月保',
  [InsurancePeriodEnum['360D']]: '年保',
  [InsurancePeriodEnum['1-29D']]: '短期保',
};
export const insuranceTypeTextForFilter = {
  [InsurancePeriodEnum['30D']]: '月保',
  [InsurancePeriodEnum['360D']]: '年保',
};
export enum InsurancePolicyAuditStatusEnum {
  /**驳回 */
  Reject = -10,
  /**待提交 */
  WaitAdd = 1,
  /**待审核 */
  WaitAudit = 10,
  /**待审核 强制再审后的再审状态*/
@@ -104,6 +119,7 @@
export const InsurancePolicyAuditStatusEnumText = {
  [InsurancePolicyAuditStatusEnum.Reject]: '驳回',
  [InsurancePolicyAuditStatusEnum.WaitAdd]: '待提交',
  [InsurancePolicyAuditStatusEnum.WaitAudit]: '待审核',
  [InsurancePolicyAuditStatusEnum.WaitReAudit]: '待审核',
  [InsurancePolicyAuditStatusEnum.WaitFillAudit]: '待审核',
src/hooks/dic.ts
@@ -83,10 +83,14 @@
  function getInsureProductSchemeByCode(code: string) {
    return allInsureProductSchemeList.value.find((x) => x.code === code);
  }
  function getInsureProductSchemeByIdNumber(idNumber: string) {
    return allInsureProductSchemeList.value.find((x) => x.idNumber === idNumber);
  }
  return {
    allInsureProductSchemeList,
    refetch,
    getInsureProductSchemeByCode,
    getInsureProductSchemeByIdNumber,
  };
}
src/router/index.ts
@@ -84,7 +84,7 @@
    },
    children: [
      {
        path: 'home',
        path: '/home',
        name: 'Home',
        hidden: false,
        component: () => import('@/views/Home/Home.vue'),
@@ -93,6 +93,17 @@
          title: '保单管理',
          affix: true,
          // rootMenu: true,
          icon: 'home',
        },
      },
      AppType === 'tp' && {
        path: '/InsurancePayManage',
        name: 'InsurancePayManage',
        hidden: false,
        component: () => import('@/views/Home/InsurancePayManage.vue'),
        meta: {
          rank: 1002,
          title: '付款管理',
          icon: 'home',
        },
      },
@@ -156,7 +167,7 @@
          icon: 'home',
        },
      },
    ],
    ].filter(Boolean),
  },
  {
src/services/api/InsuranceOrder.ts
@@ -166,6 +166,23 @@
  });
}
/** 获取投保人员审核记录 GET /api/InsuranceOrder/GetInsuranceOrderAuditRecord/${param1} */
export async function getInsuranceOrderAuditRecordId(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
  params: API.APIgetInsuranceOrderAuditRecordIdParams,
  options?: API.RequestConfig
) {
  const { insuranceOrderId: param0, id: param1, ...queryParams } = params;
  return request<API.InsuranceOrderAuditRecordDto[]>(
    `/api/InsuranceOrder/GetInsuranceOrderAuditRecord/${param1}`,
    {
      method: 'GET',
      params: { ...queryParams },
      ...(options || {}),
    }
  );
}
/** 获取保单详情 GET /api/InsuranceOrder/GetInsuranceOrderDetail */
export async function getInsuranceOrderDetail(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
@@ -318,6 +335,24 @@
  });
}
/** 获取付款管理列表 POST /api/InsuranceOrder/GetInsurancePolicyPayList */
export async function getInsurancePolicyPayList(
  body: API.GetInsurancePolicyPayListInput,
  options?: API.RequestConfig
) {
  return request<API.GetInsurancePolicyPayListItemPageOutput>(
    '/api/InsuranceOrder/GetInsurancePolicyPayList',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** 获取盖章文件 GET /api/InsuranceOrder/GetInsurancePolicyStampFiles */
export async function getInsurancePolicyStampFiles(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
@@ -395,6 +430,18 @@
  });
}
/** 获取补录记录 POST /api/InsuranceOrder/GetOperateRecord */
export async function getOperateRecord(body: API.OperateRecordInput, options?: API.RequestConfig) {
  return request<API.OperateRecordDtoPageOutput>('/api/InsuranceOrder/GetOperateRecord', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 投保详情-导入人员 POST /api/InsuranceOrder/ImportInsDetailStaffToList */
export async function importInsDetailStaffToList(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
@@ -440,12 +487,27 @@
  });
}
/** 提交审核 POST /api/InsuranceOrder/InsurancePolicyAddAudit */
export async function insurancePolicyAddAudit(
  body: API.InsurancePolicyAuditInput,
  options?: API.RequestConfig
) {
  return request<number>('/api/InsuranceOrder/InsurancePolicyAddAudit', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 保单审核 POST /api/InsuranceOrder/InsurancePolicyAudit */
export async function insurancePolicyAudit(
  body: API.InsurancePolicyAuditInput,
  options?: API.RequestConfig
) {
  return request<API.InsurancePolicyAuditOutput>('/api/InsuranceOrder/InsurancePolicyAudit', {
  return request<number>('/api/InsuranceOrder/InsurancePolicyAudit', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
src/services/api/ParkBountyApply.ts
@@ -2,6 +2,36 @@
// @ts-ignore
import { request } from '@/utils/request';
/** 奖励金-出账 POST /api/ParkBountyApply/AuditParkBountyApplyTrade */
export async function auditParkBountyApplyTrade(
  body: API.AuditParkBountyTradeInput,
  options?: API.RequestConfig
) {
  return request<number>('/api/ParkBountyApply/AuditParkBountyApplyTrade', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 奖励金-出账-财务审批 POST /api/ParkBountyApply/FinanceAuditParkBountyApplyTrade */
export async function financeAuditParkBountyApplyTrade(
  body: API.AuditParkBountyTradeInput,
  options?: API.RequestConfig
) {
  return request<number>('/api/ParkBountyApply/FinanceAuditParkBountyApplyTrade', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 运营端-奖励进出账详情 POST /api/ParkBountyApply/GetParkBountyTradeDetailList */
export async function getParkBountyTradeDetailList(
  body: API.GetParkBountyTradeDetailByIdInput,
src/services/api/typings.d.ts
@@ -266,6 +266,11 @@
    year?: number;
  }
  interface APIgetInsuranceOrderAuditRecordIdParams {
    insuranceOrderId: string;
    id: string;
  }
  interface APIgetInsuranceOrderDetailParams {
    id?: string;
  }
@@ -461,6 +466,16 @@
    values?: Record<string, any>;
  }
  interface AuditParkBountyTradeInput {
    /** 出账记录Id */
    id?: string;
    auditStatus?: EnumParkBountyTradeDetailAuditStatus;
    /** 审核备注 */
    auditRemark?: string;
    /** 审核凭证 */
    payAuditFileUrl?: string;
  }
  interface BaseAuthorizeDto {
    moduleType?: number;
    moduleId?: string;
@@ -603,7 +618,9 @@
    /** 保额 */
    insured: number;
    /** 保费 */
    signPremium: number;
    signPremium?: number;
    /** 保费按天计费 */
    signPremiumByDay?: string;
  }
  interface CreateOrUpdateInsureProductSettingInput {
@@ -711,6 +728,8 @@
    properties?: Record<string, any>;
    configuration?: Record<string, any>;
  }
  type EnumParkBountyTradeDetailAuditStatus = 10 | 20 | 30;
  interface ExportInsuranceStaffListInput {
    status?: InsuranceDetailStatusEnum;
@@ -892,6 +911,8 @@
  interface GetInsurancePageOutput {
    id?: string;
    userId?: string;
    /** 产业园区id */
    industrialParkId?: string;
    /** 投保人 */
    insurerName?: string;
    /** 被保险人 */
@@ -956,6 +977,44 @@
    data?: GetInsurancePageOutput[];
  }
  interface GetInsurancePolicyPayListInput {
    pageModel?: Pagination;
    status?: InsurancePolicyPayStatusEnum;
    /** 关键字 */
    keywords?: string;
  }
  interface GetInsurancePolicyPayListItem {
    id?: string;
    /** 用户Id */
    userId?: string;
    /** 产业园区id */
    industrialParkId?: string;
    /** 订单号 */
    channelOrderNo?: string;
    /** 支付短链 */
    payUrl?: string;
    /** 保费金额 */
    sumSignPremium?: number;
    /** 创建日期 */
    creationTime?: string;
    status?: InsurancePolicyPayStatusEnum;
    /** 保单号 */
    policyNo?: string;
    /** 电子保单链接 */
    policyUrl?: string;
    /** 已投保人数 */
    proposalCount?: number;
    /** 完成时间 */
    completionTime?: string;
  }
  interface GetInsurancePolicyPayListItemPageOutput {
    pageModel?: Pagination;
    objectData?: any;
    data?: GetInsurancePolicyPayListItem[];
  }
  interface GetInsuranceStaffListInput {
    pageModel?: Pagination;
    condition?: string;
@@ -980,13 +1039,15 @@
    age?: number;
    birthDay?: string;
    phone?: string;
    claimCount?: number;
    creationTime?: string;
    /** 投保批次号 */
    payOrder?: string;
    status?: InsuranceDetailStatusEnum;
    /** 投保状态 */
    statusText?: string;
    /** 备注 */
    auditRemark?: string;
    claimCount?: number;
  }
  interface GetInsuranceStaffPageTemplatePageOutput {
@@ -1016,9 +1077,19 @@
    /** 出账结束日期 */
    transferTimeEnd?: string;
    enterpriseId?: string;
    auditStatus?: EnumParkBountyTradeDetailAuditStatus;
  }
  interface GetParkBountyTradeDetailOutput {
    enterpriseId?: string;
    /** 账号 */
    userName?: string;
    /** 企业名称 */
    enterpriseName?: string;
    /** 电话 */
    contactPhone?: string;
    /** 社会统一信用代码 */
    societyCreditCode?: string;
    id?: string;
    /** 最近出账金额 */
    tradeAmount?: number;
@@ -1032,6 +1103,13 @@
    /** 奖励金余额 */
    remianAmount?: number;
    financeType?: FinanceTypeEnum;
    auditStatus?: EnumParkBountyTradeDetailAuditStatus;
    /** 审核备注 */
    auditRemark?: string;
    /** 审核时间 */
    auditTime?: string;
    /** 审核凭证 */
    payAuditFileUrl?: string;
  }
  interface GetParkBountyTradeDetailOutputPageOutput {
@@ -1334,10 +1412,12 @@
    url?: string;
    /** 保险产品IdNumber */
    productIdNumber?: string;
    /** 保险产品方案Id */
    /** 保险方案 */
    productSchemeIdNumber?: string;
    /** 保单生效时间 */
    effectStartTime?: string;
    /** 保单截止时间 */
    effectEndTime?: string;
  }
  interface ImportInsStaffToListOutput {
@@ -1477,6 +1557,21 @@
  type InsuranceDetailStatusEnum = 10 | 12 | 13 | 14 | 20 | 30;
  interface InsuranceOrderAuditRecordDto {
    /** 分批订单号 */
    channelOrderNo?: string;
    /** 操作 */
    scene?: string;
    /** 审核备注 */
    auditRemark?: string;
    /** 操作时间 */
    creationTime?: string;
    /** 操作人 */
    creatorId?: string;
    /** 操作人 */
    creator?: string;
  }
  interface InsuranceOrderListOutput {
    id?: string;
    /** 渠道 */
@@ -1573,18 +1668,7 @@
    returnUrl?: string;
  }
  interface InsurancePolicyAuditOutput {
    /** 消息 */
    messages?: string[];
    /** 总投保人数 */
    totalCount?: number;
    /** 投保成功 */
    successCount?: number;
    /** 投保失败 */
    failCount?: number;
  }
  type InsurancePolicyAuditStatusEnum = 10 | 11 | 12 | 15 | 20 | -10;
  type InsurancePolicyAuditStatusEnum = 1 | 10 | 11 | 12 | 15 | 20 | -10;
  type InsurancePolicyListPayStatusEnum = 1 | 2;
@@ -1731,6 +1815,8 @@
    insured?: number;
    /** 保费 */
    signPremium?: number;
    /** 保费按天计费 */
    signPremiumByDay?: string;
  }
  interface InsureProductSchemeDtoPageOutput {
@@ -1754,6 +1840,8 @@
    creationTime?: string;
    /** 投保人数上限 */
    maxCount?: number;
    /** 是否走线上流程 */
    online?: boolean;
  }
  interface InsureProductSettingDtoPageOutput {
@@ -1900,6 +1988,33 @@
  interface ObjectExtensionsDto {
    modules?: Record<string, any>;
    enums?: Record<string, any>;
  }
  interface OperateRecordDto {
    /** 操作 */
    operate?: string;
    /** 操作内容 */
    content?: string;
    /** 操作时间 */
    creationTime?: string;
    /** 操作人 */
    creatorId?: string;
    /** 操作人 */
    creator?: string;
  }
  interface OperateRecordDtoPageOutput {
    pageModel?: Pagination;
    objectData?: any;
    data?: OperateRecordDto[];
  }
  interface OperateRecordInput {
    pageModel?: Pagination;
    /** 场景 */
    scene?: string;
    /** 目标Id */
    targetId?: string;
  }
  interface OrderInput {
@@ -2487,6 +2602,24 @@
    open?: boolean;
    /** 818用户Id */
    humanResourcesServiceUserId?: string;
    /** 用户端Id */
    clientId?: string;
    /** 角色 */
    roleNames?: string[];
    /** 是否理赔提醒 */
    sendClaimMessage?: boolean;
    /** 是否保单到期提醒 */
    sendBillExpireMessage?: boolean;
    /** 是否短信提醒 */
    isSendMessage?: boolean;
    /** 是否人员变更提醒 */
    staffChangeMessage?: boolean;
    /** 是否批改提醒 */
    batchUpdateMessage?: boolean;
    /** 产业园区id */
    industrialParkId?: string;
    /** 园区Ids */
    industrialParkIds?: string[];
    /** 名称 */
    name?: string;
    /** 登录用户名 */
src/views/Home/Home.vue
@@ -18,7 +18,7 @@
          <QueryFilterItem>
            <FieldRadio
              v-model="extraParamState.insurancePeriod"
              :value-enum="insuranceTypeText"
              :value-enum="insuranceTypeTextForFilter"
              buttonStyle
              showAllBtn
              @change="getList()"
@@ -160,11 +160,13 @@
  InsurancePolicyListPayStatusEnum,
  InsurancePolicyListPayStatusEnumText,
  InsuranceOccupationTypeTempPath,
  InsurancePeriodEnum,
  insuranceTypeTextForFilter,
} from '@/constants';
import dayjs from 'dayjs';
import _ from 'lodash';
import InsureInstructionsDialog from './components/InsureInstructionsDialog.vue';
import { useUserInsureProductSetting } from '@/hooks';
import { useInsureProductSchemeAllList, useUserInsureProductSetting } from '@/hooks';
// import { Recorder } from '@/utils/record';
defineOptions({
@@ -219,19 +221,19 @@
      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: 'payBtn',
  //     name: '支付',
  //   },
  //   emits: {
  //     onClick: (role) => handlePay(role),
  //   },
  //   extraProps: {
  //     hide: (row: API.GetInsurancePageOutput) =>
  //       row.payStatus != InsurancePolicyListPayStatusEnum.WaitPay,
  //   },
  // },
  {
    data: {
      enCode: 'stampFilesBtn',
@@ -266,6 +268,19 @@
  //     onClick: (role) => handleStandarEndo(role),
  //   },
  // },
  {
    data: {
      enCode: 'submitAuditBtn',
      name: '提交审核',
    },
    emits: {
      onClick: (role) => handleSubmitAuditBtn(role),
    },
    extraProps: {
      hide: (row: API.GetInsurancePageOutput) =>
        row.auditStatus != InsurancePolicyAuditStatusEnum.WaitAdd,
    },
  },
]).filter(Boolean);
const BaseState = {
@@ -361,6 +376,7 @@
    productIdNumber: '',
    productSchemeIdNumber: '',
    effectStartTime: dayjs().add(1, 'day').format('YYYY-MM-DD'),
    effectEndTime: '',
  },
  closeAfterConfirm: false,
});
@@ -389,6 +405,12 @@
  } catch (error) {}
}
const { isSjbAccount, getInsureProductIdByIdNumber } = useUserInsureProductSetting();
const { getInsureProductSchemeByIdNumber } = useInsureProductSchemeAllList({
  insureProductId: computed(() => getInsureProductIdByIdNumber(editForm.productIdNumber)),
});
async function importInsStaffToList() {
  try {
    let params: API.ImportInsStaffToListFrontInput = {
@@ -398,6 +420,12 @@
      productSchemeIdNumber: editForm.productSchemeIdNumber,
      effectStartTime: editForm.effectStartTime,
    };
    const currentInsureProductScheme = getInsureProductSchemeByIdNumber(
      editForm.productSchemeIdNumber
    );
    if (currentInsureProductScheme?.period === InsurancePeriodEnum['1-29D']) {
      params.effectEndTime = editForm.effectEndTime;
    }
    let res = await insuranceOrderServices.importInsStaffToList(params, {
      timeout: 60 * 1000 * 10,
      customErrorHandler(error) {
@@ -452,8 +480,6 @@
const { dialogProps: dialogInstructionsProps, dialogState: dialogInstructionsState } = useDialog({
  onConfirm: handleUpload,
});
const { isSjbAccount } = useUserInsureProductSetting();
function handleOpenInstructions() {
  if (isSjbAccount.value) {
@@ -650,4 +676,17 @@
    });
  } 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) {}
}
</script>
src/views/Home/InsurancePayManage.vue
New file
@@ -0,0 +1,132 @@
<template>
  <LoadingLayout :loading="state.loading">
    <AppContainer>
      <ProTableQueryFilterBar @on-reset="reset">
        <template #query>
          <QueryFilterItem>
            <FieldRadio
              v-model="extraParamState.status"
              :value-enum="InsurancePolicyListPayStatusEnumText"
              buttonStyle
              showAllBtn
              @change="getList()"
            />
          </QueryFilterItem>
          <QueryFilterItem>
            <SearchInput
              v-model="extraParamState.condition"
              style="width: 260px"
              placeholder="订单号/保单号"
              @on-click-search="getList"
            >
            </SearchInput>
          </QueryFilterItem>
        </template>
      </ProTableQueryFilterBar>
      <ProTableV2
        v-bind="proTableProps"
        :columns="InsurePayManageColumns"
        :operationBtns="operationBtns"
      >
      </ProTableV2>
    </AppContainer>
  </LoadingLayout>
</template>
<script setup lang="ts">
import {
  OperationBtnType,
  ProTableV2,
  LoadingLayout,
  AppContainer,
  useTable,
  ProTableV2Props,
  defineOperationBtns,
  QueryFilterItem,
  FieldRadio,
  SearchInput,
  ProTableQueryFilterBar,
} from '@bole-core/components';
import * as insuranceOrderServices from '@/services/api/InsuranceOrder';
import {
  InsurancePolicyPayStatusEnumText,
  InsurancePolicyPayStatusEnum,
  InsurancePolicyListPayStatusEnum,
  InsurancePolicyListPayStatusEnumText,
} from '@/constants';
import { useQuery } from '@tanstack/vue-query';
import { InsurePayManageColumns } from './constants';
import { OrderInputType } from '@bole-core/core';
defineOptions({
  name: 'InsurancePayManage',
});
const operationBtns = defineOperationBtns([
  {
    data: {
      enCode: 'payBtn',
      name: '支付',
    },
    emits: { onClick: (role) => handlePay(role) },
    extraProps: {
      hide: (row: API.GetInsurancePolicyPayListItem) =>
        row.status !== InsurancePolicyPayStatusEnum.WaitPay,
    },
  },
]);
const BaseState = {
  loading: true,
};
const state = reactive({ ...BaseState });
onMounted(async () => {
  await getList();
  state.loading = false;
});
const {
  getDataSource: getList,
  proTableProps,
  paginationState,
  extraParamState,
  reset,
} = useTable(
  async ({ pageIndex, pageSize }, extraParamState) => {
    try {
      let params: API.GetInsurancePolicyPayListInput = {
        pageModel: {
          rows: pageSize,
          page: pageIndex,
          orderInput: extraParamState.orderInput,
        },
        status: extraParamState.status,
        keywords: extraParamState.condition,
      };
      let res = await insuranceOrderServices.getInsurancePolicyPayList(params, {
        showLoading: !state.loading,
      });
      return res;
    } catch (error) {}
  },
  {
    defaultExtraParams: {
      orderInput: [{ property: 'id', order: OrderInputType.Desc }],
      condition: '',
      status: '' as any as InsurancePolicyListPayStatusEnum,
    },
    columnsRenderProps: {
      sumSignPremium: { type: 'money' },
      status: { type: 'enum', valueEnum: InsurancePolicyListPayStatusEnumText },
      creationTime: { type: 'date' },
      completionTime: { type: 'date' },
    },
  }
);
function handlePay(row: API.GetInsurancePolicyPayListItem) {
  window.open(row.payUrl, '_blank');
}
</script>
src/views/Home/components/InsureOrderInfoView.vue
@@ -327,10 +327,16 @@
      onClick: (role) => handleChangeInfo(role),
    },
    extraProps: {
      hide: (row: API.GetInsuranceStaffPageTemplate) =>
        detail.value?.productOnline ||
        detail.value?.status !== InsurancePolicyStatusEnum.WaitEffect ||
        detail.value?.auditStatus === InsurancePolicyAuditStatusEnum.Pass,
      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
          );
        }
      },
    },
  },
  {
@@ -589,6 +595,7 @@
    productIdNumber: detail.value.productIdNumber,
    productSchemeIdNumber: getInsureProductSchemeByCode(detail.value.productSchemeCode)?.idNumber,
    effectStartTime: detail.value.effectStartTime,
    effectEndTime: detail.value.effectEndTime,
  });
}
@@ -605,6 +612,7 @@
    productIdNumber: '',
    productSchemeIdNumber: '',
    effectStartTime: dayjs().add(1, 'day').format('YYYY-MM-DD'),
    effectEndTime: '',
  },
  closeAfterConfirm: false,
});
src/views/Home/components/UploadInsurePersonDialog.vue
@@ -64,6 +64,22 @@
          placeholder="请选择起保日期"
          :disabled-date="disabledStartDate"
          :disabled="isSupply"
          @change="handleStartDateChange"
        ></ProFormDatePicker>
      </ProFormItemV2>
      <ProFormItemV2
        label="截止日期:"
        prop="effectEndTime"
        :check-rules="[{ message: '请选择截止日期' }]"
        v-if="currentInsureProductScheme?.period === InsurancePeriodEnum['1-29D']"
      >
        <ProFormDatePicker
          v-model="form.effectEndTime"
          type="date"
          value-format="YYYY-MM-DD"
          placeholder="请选择截止日期"
          :disabled-date="disabledEndDate"
          :disabled="isSupply"
        ></ProFormDatePicker>
      </ProFormItemV2>
      <ProFormItemV2
@@ -108,6 +124,7 @@
import dayjs from 'dayjs';
import { FormInstance } from 'element-plus';
import _ from 'lodash';
import { InsurancePeriodEnum } from '@/constants';
defineOptions({
  name: 'UploadInsurePersonDialog',
@@ -121,6 +138,7 @@
    productIdNumber: string;
    productSchemeIdNumber: string;
    effectStartTime: string;
    effectEndTime: string;
  };
  //是否是补提
  isSupply?: boolean;
@@ -140,9 +158,14 @@
const { allUserInsureProductSettingList, getInsureProductIdByIdNumber } =
  useUserInsureProductSetting();
const { allInsureProductSchemeList } = useInsureProductSchemeAllList({
  insureProductId: computed(() => getInsureProductIdByIdNumber(props.form.productIdNumber)),
});
const { allInsureProductSchemeList, getInsureProductSchemeByIdNumber } =
  useInsureProductSchemeAllList({
    insureProductId: computed(() => getInsureProductIdByIdNumber(props.form.productIdNumber)),
  });
const currentInsureProductScheme = computed(() =>
  getInsureProductSchemeByIdNumber(props.form.productSchemeIdNumber)
);
function handleProductChange() {
  innerForm.value.productSchemeIdNumber = '';
@@ -152,6 +175,20 @@
  return dayjs(time).isBefore(dayjs()) || dayjs(time).isAfter(dayjs().add(60, 'day'));
};
const disabledEndDate = (time: Date) => {
  const startDate = dayjs(props.form.effectStartTime);
  return (
    dayjs(time).isBefore(startDate) ||
    dayjs(time).isAfter(dayjs(props.form.effectStartTime).add(28, 'day'))
  );
};
function handleStartDateChange() {
  if (disabledEndDate(props.form.effectEndTime as any)) {
    innerForm.value.effectEndTime = '';
  }
}
const innerVisible = computed({
  get() {
    return props.modelValue;
src/views/Home/constants/index.ts
@@ -62,6 +62,12 @@
    width: 160,
  },
  {
    id: '10-1',
    enCode: 'insureEffectingCount',
    name: '生效人数',
    width: 160,
  },
  {
    id: '11',
    enCode: 'sumInsured',
    name: '总保额(元)',
@@ -168,3 +174,41 @@
    name: '支付状态',
  },
]);
export const InsurePayManageColumns = defineColumns([
  {
    id: '1',
    enCode: 'channelOrderNo',
    name: '订单号',
  },
  {
    id: '2',
    enCode: 'proposalNo',
    name: '投保单号',
  },
  {
    id: '2-1',
    enCode: 'proposalCount',
    name: '投保人数',
  },
  {
    id: '3',
    enCode: 'sumSignPremium',
    name: '保费金额',
  },
  {
    id: '4',
    enCode: 'creationTime',
    name: '创建日期',
  },
  {
    id: '5',
    enCode: 'status',
    name: '支付状态',
  },
  {
    id: '6',
    enCode: 'completionTime',
    name: '支付日期',
  },
]);
vite.config.ts
@@ -97,7 +97,9 @@
      __INTLIFY_PROD_DEVTOOLS__: false,
    },
    build: {
      outDir: `dist/dist-jybfront-${VITE_AppType}-${mode}-${dayjs().format('YYYYMMDD')}`,
      outDir: `dist/${dayjs().format(
        'YYYY-MM-DD'
      )}/dist-jybfront-${VITE_AppType}-${mode}-${dayjs().format('YYYYMMDD')}`,
    },
    optimizeDeps: {
      include: [