diff --git a/backend/src/routes/esign.routes.ts b/backend/src/routes/esign.routes.ts index e8c8b8a..9805088 100644 --- a/backend/src/routes/esign.routes.ts +++ b/backend/src/routes/esign.routes.ts @@ -221,6 +221,12 @@ router.post('/sign-date', async (req: AuthRequest, res: Response, next: NextFunc if (isNaN(parsedDate.getTime())) { return res.status(400).json({ success: false, error: { code: 'VALIDATION_ERROR', message: '签署日期格式无效' } }) } + // 签署日期不能晚于当前日期 + const today = new Date() + today.setHours(23, 59, 59, 999) + if (parsedDate > today) { + return res.status(400).json({ success: false, error: { code: 'VALIDATION_ERROR', message: '签署日期不能晚于当前日期' } }) + } // 更新合同签署日期 await prisma.laborContract.update({ where: { id: contractId }, @@ -623,6 +629,14 @@ router.post('/paper-sign', authMiddleware, async (req: AuthRequest, res: Respons return res.status(404).json({ success: false, error: { code: 'NOT_FOUND', message: '员工不存在' } }) } + // 签署日期不能晚于当前日期 + const signDate = new Date(data.signedAt) + const todayEnd = new Date() + todayEnd.setHours(23, 59, 59, 999) + if (signDate > todayEnd) { + return res.status(400).json({ success: false, error: { code: 'VALIDATION_ERROR', message: '签署日期不能晚于当前日期' } }) + } + // 创建签署记录(线下手签直接为 COMPLETED 状态) const record = await prisma.eSignRecord.create({ data: { diff --git a/frontend/src/pages/ESign.tsx b/frontend/src/pages/ESign.tsx index 89604b4..e151f1c 100644 --- a/frontend/src/pages/ESign.tsx +++ b/frontend/src/pages/ESign.tsx @@ -528,7 +528,7 @@ function PaperSignModal({ onClose, onSuccess, initialEmployeeId, initialScene, i