From ddc51b33fd7b629f2e2f8aa2df602a03f765b159 Mon Sep 17 00:00:00 2001 From: freedakgmail Date: Wed, 5 Aug 2026 08:44:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=94=B5=E5=AD=90=E7=AD=BE=E7=BD=B2?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E6=96=B0=E5=A2=9E=E5=9F=B9=E8=AE=AD/?= =?UTF-8?q?=E7=BB=A9=E6=95=88/=E8=BF=9D=E7=BA=AA3=E4=B8=AA=E5=BC=80?= =?UTF-8?q?=E5=85=B3=EF=BC=8C=E6=94=B9=E4=B8=BA=E4=B8=A4=E5=88=97=E5=8D=A1?= =?UTF-8?q?=E7=89=87=E5=B8=83=E5=B1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/prisma/schema.prisma | 3 + frontend/src/pages/Settings.tsx | 83 +++++++------------ .../src/pages/roster/DisciplinaryRecords.tsx | 2 +- 3 files changed, 36 insertions(+), 52 deletions(-) diff --git a/backend/prisma/schema.prisma b/backend/prisma/schema.prisma index 5f8ea8f..b74315e 100644 --- a/backend/prisma/schema.prisma +++ b/backend/prisma/schema.prisma @@ -136,6 +136,9 @@ model Organization { esignPolicyEnabled Boolean @default(false) // 规章制度电子签 esignPayslipEnabled Boolean @default(false) // 工资条电子签 esignOnboardingEnabled Boolean @default(false) // 入职文件电子签 + esignTrainingEnabled Boolean @default(false) // 培训记录电子签 + esignPerformanceEnabled Boolean @default(false) // 绩效考核电子签 + esignDisciplinaryEnabled Boolean @default(false) // 违纪记录电子签 createdAt DateTime @default(now()) updatedAt DateTime @updatedAt diff --git a/frontend/src/pages/Settings.tsx b/frontend/src/pages/Settings.tsx index c015939..96459d1 100644 --- a/frontend/src/pages/Settings.tsx +++ b/frontend/src/pages/Settings.tsx @@ -100,6 +100,9 @@ function OrgSettings({ orgData, onSave, saving }: { orgData: any; onSave: (data: esignPolicyEnabled: false, esignPayslipEnabled: false, esignOnboardingEnabled: false, + esignTrainingEnabled: false, + esignPerformanceEnabled: false, + esignDisciplinaryEnabled: false, }) useEffect(() => { @@ -114,6 +117,9 @@ function OrgSettings({ orgData, onSave, saving }: { orgData: any; onSave: (data: esignPolicyEnabled: orgData.esignPolicyEnabled || false, esignPayslipEnabled: orgData.esignPayslipEnabled || false, esignOnboardingEnabled: orgData.esignOnboardingEnabled || false, + esignTrainingEnabled: orgData.esignTrainingEnabled || false, + esignPerformanceEnabled: orgData.esignPerformanceEnabled || false, + esignDisciplinaryEnabled: orgData.esignDisciplinaryEnabled || false, }) } }, [orgData]) @@ -180,58 +186,33 @@ function OrgSettings({ orgData, onSave, saving }: { orgData: any; onSave: (data:

电子签署设置

-
-
-
-
规章制度电子签
-

开启后,员工阅读规章制度时需电子签署;关闭时保持阅读确认

+
+ {([ + { key: 'esignPolicyEnabled', label: '规章制度电子签', desc: '开启后,员工阅读规章制度时需电子签署;关闭时保持阅读确认' }, + { key: 'esignPayslipEnabled', label: '工资条电子签', desc: '开启后,员工确认工资条时需电子签署;关闭时保持点击确认' }, + { key: 'esignOnboardingEnabled', label: '入职文件电子签', desc: '开启后,HR审批通过入职流程时自动创建入职文件签署;关闭时不签' }, + { key: 'esignTrainingEnabled', label: '培训记录电子签', desc: '开启后,员工签收培训记录时需电子签署;关闭时保持点击签收' }, + { key: 'esignPerformanceEnabled', label: '绩效考核电子签', desc: '开启后,员工签字确认绩效时需电子签署;关闭时保持点击确认' }, + { key: 'esignDisciplinaryEnabled', label: '违纪记录电子签', desc: '开启后,员工签字确认违纪记录时需电子签署;关闭时保持点击确认' }, + ] as const).map((item) => ( +
+
+
{item.label}
+

{item.desc}

+
+
- -
-
-
-
工资条电子签
-

开启后,员工确认工资条时需电子签署;关闭时保持点击确认

-
- -
-
-
-
入职文件电子签
-

开启后,HR审批通过入职流程时自动创建入职文件签署;关闭时不签

-
- -
+ ))}
diff --git a/frontend/src/pages/roster/DisciplinaryRecords.tsx b/frontend/src/pages/roster/DisciplinaryRecords.tsx index 122d5e6..0e1977c 100644 --- a/frontend/src/pages/roster/DisciplinaryRecords.tsx +++ b/frontend/src/pages/roster/DisciplinaryRecords.tsx @@ -134,7 +134,7 @@ export default function DisciplinaryRecords() { {r.employeeAck ? ( 已签字 ) : ( - 未签字 + 待签字 )}