From 089f6058826ac067061b6ed4958baff50f9bdac9 Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期二, 29 七月 2025 17:40:17 +0800
Subject: [PATCH] fix: 新增生煎保(短期方案)
---
src/views/Home/components/UploadInsurePersonDialog.vue | 43 +++
src/views/Home/InsurancePayManage.vue | 132 ++++++++++++
src/hooks/dic.ts | 4
src/services/api/typings.d.ts | 163 +++++++++++++-
src/views/Home/components/InsureOrderInfoView.vue | 16 +
vite.config.ts | 4
src/constants/insuranceClaim.ts | 20 +
src/views/Home/constants/index.ts | 44 ++++
package.json | 2
src/router/index.ts | 15 +
src/services/api/ParkBountyApply.ts | 30 ++
src/views/Home/Home.vue | 73 +++++-
src/services/api/InsuranceOrder.ts | 64 +++++
13 files changed, 565 insertions(+), 45 deletions(-)
diff --git a/package.json b/package.json
index 2a0c634..4dd2a9b 100644
--- a/package.json
+++ b/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",
diff --git a/src/constants/insuranceClaim.ts b/src/constants/insuranceClaim.ts
index 886c855..c45ee5c 100644
--- a/src/constants/insuranceClaim.ts
+++ b/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]: '寰呭鏍�',
diff --git a/src/hooks/dic.ts b/src/hooks/dic.ts
index e206017..fe72501 100644
--- a/src/hooks/dic.ts
+++ b/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,
};
}
diff --git a/src/router/index.ts b/src/router/index.ts
index f283d1a..3e88bd6 100644
--- a/src/router/index.ts
+++ b/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),
},
{
diff --git a/src/services/api/InsuranceOrder.ts b/src/services/api/InsuranceOrder.ts
index ad9fcb9..d1696f9 100644
--- a/src/services/api/InsuranceOrder.ts
+++ b/src/services/api/InsuranceOrder.ts
@@ -166,6 +166,23 @@
});
}
+/** 鑾峰彇鎶曚繚浜哄憳瀹℃牳璁板綍 GET /api/InsuranceOrder/GetInsuranceOrderAuditRecord/${param1} */
+export async function getInsuranceOrderAuditRecordId(
+ // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟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(
// 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟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(
// 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟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(
// 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟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',
diff --git a/src/services/api/ParkBountyApply.ts b/src/services/api/ParkBountyApply.ts
index e391fd4..2f27c0b 100644
--- a/src/services/api/ParkBountyApply.ts
+++ b/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,
diff --git a/src/services/api/typings.d.ts b/src/services/api/typings.d.ts
index 145b5c3..2cc7939 100644
--- a/src/services/api/typings.d.ts
+++ b/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;
+ /** 绀句細缁熶竴淇$敤浠g爜 */
+ 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;
+ /** 鐢ㄦ埛绔疘d */
+ clientId?: string;
+ /** 瑙掕壊 */
+ roleNames?: string[];
+ /** 鏄惁鐞嗚禂鎻愰啋 */
+ sendClaimMessage?: boolean;
+ /** 鏄惁淇濆崟鍒版湡鎻愰啋 */
+ sendBillExpireMessage?: boolean;
+ /** 鏄惁鐭俊鎻愰啋 */
+ isSendMessage?: boolean;
+ /** 鏄惁浜哄憳鍙樻洿鎻愰啋 */
+ staffChangeMessage?: boolean;
+ /** 鏄惁鎵规敼鎻愰啋 */
+ batchUpdateMessage?: boolean;
+ /** 浜т笟鍥尯id */
+ industrialParkId?: string;
+ /** 鍥尯Ids */
+ industrialParkIds?: string[];
/** 鍚嶇О */
name?: string;
/** 鐧诲綍鐢ㄦ埛鍚� */
diff --git a/src/views/Home/Home.vue b/src/views/Home/Home.vue
index d0dce4a..822087a 100644
--- a/src/views/Home/Home.vue
+++ b/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>
diff --git a/src/views/Home/InsurancePayManage.vue b/src/views/Home/InsurancePayManage.vue
new file mode 100644
index 0000000..8a45765
--- /dev/null
+++ b/src/views/Home/InsurancePayManage.vue
@@ -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>
diff --git a/src/views/Home/components/InsureOrderInfoView.vue b/src/views/Home/components/InsureOrderInfoView.vue
index ab32e98..0bcf47a 100644
--- a/src/views/Home/components/InsureOrderInfoView.vue
+++ b/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,
});
diff --git a/src/views/Home/components/UploadInsurePersonDialog.vue b/src/views/Home/components/UploadInsurePersonDialog.vue
index 0bc713f..9640f65 100644
--- a/src/views/Home/components/UploadInsurePersonDialog.vue
+++ b/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;
diff --git a/src/views/Home/constants/index.ts b/src/views/Home/constants/index.ts
index 9582a45..d46d36a 100644
--- a/src/views/Home/constants/index.ts
+++ b/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: '鏀粯鏃ユ湡',
+ },
+]);
diff --git a/vite.config.ts b/vite.config.ts
index f623cc6..f2a9eca 100644
--- a/vite.config.ts
+++ b/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: [
--
Gitblit v1.9.1