fix(admin): 前端功能与安全修复(角色勾选/月视图新建/附件预览/考勤 late 等)

由 OCR(open-codereview.ai,deepseek-v4-flash)审查驱动修复:
- Roles 多组勾选、Schedules 月视图新建、useDirtyGuard 稳定引用
- JinshujuMatchModal success:false、Attendance store 订阅、EditableCell Enter、DynamicChart 空数据、渲染期 ref
- AttachmentsTab 附件预览不再 window.open(防存储型 XSS)+ 请求乱序防护
- 考勤 late 计入出勤率与主状态

Reviewed-by: OCR (open-codereview.ai)
This commit is contained in:
2026-08-09 21:29:54 +08:00
parent f50301148d
commit a32c0a0731
11 changed files with 134 additions and 49 deletions

View File

@@ -1,4 +1,4 @@
import { useCallback, useRef } from 'react';
import { useCallback, useMemo, useRef } from 'react';
import { App } from 'antd';
import type { FormInstance } from 'antd';
import equal from 'fast-deep-equal';
@@ -46,7 +46,8 @@ export function useDirtyGuard(form: FormInstance) {
[isDirty, modal],
);
return { confirmClose, snapshot, isDirty };
// 用 useMemo 稳定返回对象引用,避免消费方 useEffect 依赖每次渲染都变化
return useMemo(() => ({ confirmClose, snapshot, isDirty }), [confirmClose, snapshot, isDirty]);
}
export default useDirtyGuard;