From abbba82f252b2ad09d7172d45374154824150a83 Mon Sep 17 00:00:00 2001 From: selfrelease Date: Fri, 31 Jul 2026 10:41:22 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=91=98=E5=B7=A5=E8=A7=84=E9=81=BF?= =?UTF-8?q?=E6=8D=9F=E5=A4=B1=E6=98=8E=E7=BB=86=E6=B7=BB=E5=8A=A0=E8=A7=84?= =?UTF-8?q?=E9=81=BF=E6=96=B9=E5=BC=8F=E5=88=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/services/risk.service.ts | 20 ++++++++++++++++++- .../src/pages/tools/AnnualValueReport.tsx | 12 +++++++++-- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/backend/src/services/risk.service.ts b/backend/src/services/risk.service.ts index a4651e3..aa5b4f8 100644 --- a/backend/src/services/risk.service.ts +++ b/backend/src/services/risk.service.ts @@ -1657,9 +1657,26 @@ export async function getAnnualValueReport(orgId: string, year: number) { riskCount: number lossAvoided: number adjustedLoss: number - details: Map + details: Map }> = {} + // 辅助:根据风险标题推断规避方式 + function getResolutionMethod(title: string): string { + if (title.includes('未签合同') && title.includes('无固定期限')) return '补签书面合同' + if (title.includes('未签合同')) return '签订书面合同' + if (title.includes('到期') && title.includes('未续签')) return '续签合同' + if (title.includes('即将到期')) return '续签或终止合同' + if (title.includes('试用期') && title.includes('不合法')) return '调整试用期条款' + if (title.includes('入职手续未完成')) return '完成入职手续' + if (title.includes('孕期') || title.includes('哺乳期')) return '调整岗位/安排哺乳期待遇' + if (title.includes('工伤')) return '申报工伤/安排适当工作' + if (title.includes('医疗期')) return '保障医疗期待遇' + if (title.includes('社保')) return '补缴社保' + if (title.includes('公积金')) return '补缴公积金' + if (title.includes('工资') || title.includes('个税')) return '发放工资/申报个税' + return '人工处理' + } + // 辅助:根据风险标题推断法律依据 function getLegalBasis(title: string): string { if (title.includes('未签合同')) return '第82条 双倍工资≤11个月' @@ -1713,6 +1730,7 @@ export async function getAnnualValueReport(orgId: string, year: number) { title: r.title, estimatedLoss: r.estimatedLoss || 0, legalBasis: getLegalBasis(r.title || ''), + resolutionMethod: getResolutionMethod(r.title || ''), }) } } diff --git a/frontend/src/pages/tools/AnnualValueReport.tsx b/frontend/src/pages/tools/AnnualValueReport.tsx index 2f08190..b57c39f 100644 --- a/frontend/src/pages/tools/AnnualValueReport.tsx +++ b/frontend/src/pages/tools/AnnualValueReport.tsx @@ -231,7 +231,8 @@ export default function AnnualValueReport() { 员工 部门 风险数 - 预估损失 + 预估损失 + 规避方式 风险明细 @@ -242,6 +243,13 @@ export default function AnnualValueReport() { {emp.department} {emp.riskCount} ¥{emp.adjustedLoss.toLocaleString()} + +
+ {emp.details.map((d: any, i: number) => ( +
{d.resolutionMethod}
+ ))} +
+
{emp.details.map((d: any, i: number) => ( @@ -260,7 +268,7 @@ export default function AnnualValueReport() { - 合计 + 合计 ¥{(report.adjustedLossAvoided || 0).toLocaleString()}