From 8fcc7ae1431b6a66cc648ebf7c050a43e27db905 Mon Sep 17 00:00:00 2001 From: selfrelease Date: Sat, 15 Aug 2026 16:51:41 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=BD=AC=E6=AD=A3=E5=BC=B9=E7=AA=97?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E5=8E=9F=E8=96=AA=E8=B5=84=20+=20=E8=96=AA?= =?UTF-8?q?=E8=B5=84=E5=8F=98=E5=8C=96=E6=97=B6=E8=81=94=E5=8A=A8=E7=AD=BE?= =?UTF-8?q?=E7=BD=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ConfirmModal 显示原薪资(¥xxx),转正薪资默认填入原薪资 - 转正薪资与原薪资不同时,提示"将发起薪酬调整确认书签署" - confirmMutation onSuccess:薪资变化时弹出签署方式选择弹窗 - scene=POLICY,文件标题为"转正薪酬调整确认书" - 备注记录薪资变化:¥原薪资 → ¥新薪资 Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com> --- frontend/src/pages/Roster.tsx | 19 +++++++++++++++++-- frontend/src/pages/roster/modals.tsx | 18 ++++++++++++++---- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/frontend/src/pages/Roster.tsx b/frontend/src/pages/Roster.tsx index d12ce8d..48bd126 100644 --- a/frontend/src/pages/Roster.tsx +++ b/frontend/src/pages/Roster.tsx @@ -281,13 +281,28 @@ export default function Roster() { const confirmMutation = useMutation({ mutationFn: (data: { employeeId: string; confirmDate: string; regularSalary?: number }) => workProcessApi.create({ type: 'CONFIRM', title: '转正', employeeId: data.employeeId, formData: { employeeId: data.employeeId, confirmDate: data.confirmDate, regularSalary: data.regularSalary }, status: 'DRAFT' }), - onSuccess: () => { + onSuccess: (_data, variables) => { queryClient.invalidateQueries({ queryKey: ['roster'] }) queryClient.invalidateQueries({ queryKey: ['dashboard'] }) queryClient.invalidateQueries({ queryKey: ['roster-profile'] }) setShowConfirmModal(false) + const originalSalary = confirmEmployee?.monthlySalary ? Number(confirmEmployee.monthlySalary) : null + const newSalary = variables.regularSalary + // 薪资有变化时弹出签署方式选择 + if (newSalary && newSalary !== originalSalary) { + setSignChoice({ + open: true, + employeeId: variables.employeeId, + employeeName: confirmEmployee?.name || '', + scene: 'POLICY', + documentTitle: `${confirmEmployee?.name || ''}的转正薪酬调整确认书`, + remark: `转正薪资调整:¥${originalSalary || 0} → ¥${newSalary}`, + actionName: '转正调薪', + }) + } else { + toast.success('转正已提交') + } setConfirmEmployee(null) - toast.success('转正已提交') }, onError: (err: any) => toast.error(err?.response?.data?.error?.message || '转正失败'), }) diff --git a/frontend/src/pages/roster/modals.tsx b/frontend/src/pages/roster/modals.tsx index 6bf9523..d6cb15a 100644 --- a/frontend/src/pages/roster/modals.tsx +++ b/frontend/src/pages/roster/modals.tsx @@ -335,11 +335,15 @@ export function ConfirmModal({ employee, onClose, onSubmit, loading, error }: { loading: boolean error: any }) { + const originalSalary = employee.monthlySalary ? Number(employee.monthlySalary) : null const [form, setForm] = useState({ confirmDate: new Date().toISOString().slice(0, 10), - regularSalary: '', + regularSalary: originalSalary ? String(originalSalary) : '', }) + /** 转正薪资与原薪资是否不同 */ + const salaryChanged = form.regularSalary !== '' && Number(form.regularSalary) !== originalSalary + const handleSubmit = () => { onSubmit({ employeeId: employee.id, @@ -363,9 +367,15 @@ export function ConfirmModal({ employee, onClose, onSubmit, loading, error }: { setForm({ ...form, confirmDate: e.target.value })} />
- - setForm({ ...form, regularSalary: e.target.value })} placeholder="不填则保持原薪资" /> -
填写后将更新员工月工资并记录薪资变更
+ + setForm({ ...form, regularSalary: e.target.value })} placeholder={originalSalary ? `不填则保持原薪资 ¥${originalSalary}` : '请输入转正薪资'} /> +
+ {originalSalary + ? (salaryChanged + ? ⚠ 转正薪资与原薪资不同,提交后将发起薪酬调整确认书签署 + : '填写后将更新员工月工资并记录薪资变更') + : '填写后将更新员工月工资并记录薪资变更'} +
{error && (