feat: 电子签署设置新增培训/绩效/违纪3个开关,改为两列卡片布局
This commit is contained in:
@@ -136,6 +136,9 @@ model Organization {
|
|||||||
esignPolicyEnabled Boolean @default(false) // 规章制度电子签
|
esignPolicyEnabled Boolean @default(false) // 规章制度电子签
|
||||||
esignPayslipEnabled Boolean @default(false) // 工资条电子签
|
esignPayslipEnabled Boolean @default(false) // 工资条电子签
|
||||||
esignOnboardingEnabled Boolean @default(false) // 入职文件电子签
|
esignOnboardingEnabled Boolean @default(false) // 入职文件电子签
|
||||||
|
esignTrainingEnabled Boolean @default(false) // 培训记录电子签
|
||||||
|
esignPerformanceEnabled Boolean @default(false) // 绩效考核电子签
|
||||||
|
esignDisciplinaryEnabled Boolean @default(false) // 违纪记录电子签
|
||||||
createdAt DateTime @default(now())
|
createdAt DateTime @default(now())
|
||||||
updatedAt DateTime @updatedAt
|
updatedAt DateTime @updatedAt
|
||||||
|
|
||||||
|
|||||||
@@ -100,6 +100,9 @@ function OrgSettings({ orgData, onSave, saving }: { orgData: any; onSave: (data:
|
|||||||
esignPolicyEnabled: false,
|
esignPolicyEnabled: false,
|
||||||
esignPayslipEnabled: false,
|
esignPayslipEnabled: false,
|
||||||
esignOnboardingEnabled: false,
|
esignOnboardingEnabled: false,
|
||||||
|
esignTrainingEnabled: false,
|
||||||
|
esignPerformanceEnabled: false,
|
||||||
|
esignDisciplinaryEnabled: false,
|
||||||
})
|
})
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -114,6 +117,9 @@ function OrgSettings({ orgData, onSave, saving }: { orgData: any; onSave: (data:
|
|||||||
esignPolicyEnabled: orgData.esignPolicyEnabled || false,
|
esignPolicyEnabled: orgData.esignPolicyEnabled || false,
|
||||||
esignPayslipEnabled: orgData.esignPayslipEnabled || false,
|
esignPayslipEnabled: orgData.esignPayslipEnabled || false,
|
||||||
esignOnboardingEnabled: orgData.esignOnboardingEnabled || false,
|
esignOnboardingEnabled: orgData.esignOnboardingEnabled || false,
|
||||||
|
esignTrainingEnabled: orgData.esignTrainingEnabled || false,
|
||||||
|
esignPerformanceEnabled: orgData.esignPerformanceEnabled || false,
|
||||||
|
esignDisciplinaryEnabled: orgData.esignDisciplinaryEnabled || false,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}, [orgData])
|
}, [orgData])
|
||||||
@@ -180,58 +186,33 @@ function OrgSettings({ orgData, onSave, saving }: { orgData: any; onSave: (data:
|
|||||||
<PenTool className="w-5 h-5 text-primary" />
|
<PenTool className="w-5 h-5 text-primary" />
|
||||||
<h3 className="font-medium">电子签署设置</h3>
|
<h3 className="font-medium">电子签署设置</h3>
|
||||||
</div>
|
</div>
|
||||||
<div className="space-y-4">
|
<div className="grid grid-cols-2 gap-4">
|
||||||
<div className="flex items-center justify-between">
|
{([
|
||||||
<div>
|
{ key: 'esignPolicyEnabled', label: '规章制度电子签', desc: '开启后,员工阅读规章制度时需电子签署;关闭时保持阅读确认' },
|
||||||
<div className="text-sm font-medium">规章制度电子签</div>
|
{ key: 'esignPayslipEnabled', label: '工资条电子签', desc: '开启后,员工确认工资条时需电子签署;关闭时保持点击确认' },
|
||||||
<p className="text-xs text-gray-500 mt-0.5">开启后,员工阅读规章制度时需电子签署;关闭时保持阅读确认</p>
|
{ key: 'esignOnboardingEnabled', label: '入职文件电子签', desc: '开启后,HR审批通过入职流程时自动创建入职文件签署;关闭时不签' },
|
||||||
|
{ key: 'esignTrainingEnabled', label: '培训记录电子签', desc: '开启后,员工签收培训记录时需电子签署;关闭时保持点击签收' },
|
||||||
|
{ key: 'esignPerformanceEnabled', label: '绩效考核电子签', desc: '开启后,员工签字确认绩效时需电子签署;关闭时保持点击确认' },
|
||||||
|
{ key: 'esignDisciplinaryEnabled', label: '违纪记录电子签', desc: '开启后,员工签字确认违纪记录时需电子签署;关闭时保持点击确认' },
|
||||||
|
] as const).map((item) => (
|
||||||
|
<div key={item.key} className="flex items-center justify-between border rounded-lg p-3">
|
||||||
|
<div className="flex-1 mr-3">
|
||||||
|
<div className="text-sm font-medium">{item.label}</div>
|
||||||
|
<p className="text-xs text-gray-500 mt-0.5">{item.desc}</p>
|
||||||
|
</div>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
onClick={() => {
|
||||||
|
const next = !form[item.key]
|
||||||
|
setForm({ ...form, [item.key]: next })
|
||||||
|
onSave({ [item.key]: next })
|
||||||
|
}}
|
||||||
|
className={`relative inline-flex h-6 w-11 items-center rounded-full transition-colors flex-shrink-0 ${form[item.key] ? 'bg-primary' : 'bg-gray-200'}`}
|
||||||
|
>
|
||||||
|
<span className={`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${form[item.key] ? 'translate-x-6' : 'translate-x-1'}`} />
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<button
|
))}
|
||||||
type="button"
|
|
||||||
onClick={() => {
|
|
||||||
const next = !form.esignPolicyEnabled
|
|
||||||
setForm({ ...form, esignPolicyEnabled: next })
|
|
||||||
onSave({ esignPolicyEnabled: next })
|
|
||||||
}}
|
|
||||||
className={`relative inline-flex h-6 w-11 items-center rounded-full transition-colors ${form.esignPolicyEnabled ? 'bg-primary' : 'bg-gray-200'}`}
|
|
||||||
>
|
|
||||||
<span className={`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${form.esignPolicyEnabled ? 'translate-x-6' : 'translate-x-1'}`} />
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div className="flex items-center justify-between">
|
|
||||||
<div>
|
|
||||||
<div className="text-sm font-medium">工资条电子签</div>
|
|
||||||
<p className="text-xs text-gray-500 mt-0.5">开启后,员工确认工资条时需电子签署;关闭时保持点击确认</p>
|
|
||||||
</div>
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
onClick={() => {
|
|
||||||
const next = !form.esignPayslipEnabled
|
|
||||||
setForm({ ...form, esignPayslipEnabled: next })
|
|
||||||
onSave({ esignPayslipEnabled: next })
|
|
||||||
}}
|
|
||||||
className={`relative inline-flex h-6 w-11 items-center rounded-full transition-colors ${form.esignPayslipEnabled ? 'bg-primary' : 'bg-gray-200'}`}
|
|
||||||
>
|
|
||||||
<span className={`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${form.esignPayslipEnabled ? 'translate-x-6' : 'translate-x-1'}`} />
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div className="flex items-center justify-between">
|
|
||||||
<div>
|
|
||||||
<div className="text-sm font-medium">入职文件电子签</div>
|
|
||||||
<p className="text-xs text-gray-500 mt-0.5">开启后,HR审批通过入职流程时自动创建入职文件签署;关闭时不签</p>
|
|
||||||
</div>
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
onClick={() => {
|
|
||||||
const next = !form.esignOnboardingEnabled
|
|
||||||
setForm({ ...form, esignOnboardingEnabled: next })
|
|
||||||
onSave({ esignOnboardingEnabled: next })
|
|
||||||
}}
|
|
||||||
className={`relative inline-flex h-6 w-11 items-center rounded-full transition-colors ${form.esignOnboardingEnabled ? 'bg-primary' : 'bg-gray-200'}`}
|
|
||||||
>
|
|
||||||
<span className={`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${form.esignOnboardingEnabled ? 'translate-x-6' : 'translate-x-1'}`} />
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -134,7 +134,7 @@ export default function DisciplinaryRecords() {
|
|||||||
{r.employeeAck ? (
|
{r.employeeAck ? (
|
||||||
<span className="text-xs text-green-600">已签字</span>
|
<span className="text-xs text-green-600">已签字</span>
|
||||||
) : (
|
) : (
|
||||||
<span className="text-xs text-gray-400">未签字</span>
|
<span className="text-xs text-amber-600">待签字</span>
|
||||||
)}
|
)}
|
||||||
</td>
|
</td>
|
||||||
<td className="py-2 pr-4">
|
<td className="py-2 pr-4">
|
||||||
|
|||||||
Reference in New Issue
Block a user