feat: add Jinshuju student sync
All checks were successful
CI / check (pull_request) Successful in 2m14s

This commit is contained in:
2026-07-22 11:37:20 +08:00
parent 1dc13274de
commit 393ee62168
18 changed files with 1378 additions and 12 deletions

View File

@@ -21,6 +21,7 @@ import {
} from 'antd';
import type { UploadProps } from 'antd';
import {
CloudUploadOutlined,
DownloadOutlined,
ExportOutlined,
EyeOutlined,
@@ -34,6 +35,7 @@ import api from '../../api';
import PermissionButton from '../../components/PermissionButton';
import StudentProfileContent from '../../components/StudentProfileContent';
import EditableCell from '../../components/EditableCell';
import JinshujuMatchModal from '../../components/JinshujuMatchModal';
import { maskIdNumber, maskPhone } from '../../utils/sensitive';
import { message } from '../../ui/app-message';
@@ -109,6 +111,8 @@ const StudentsPage: React.FC = () => {
setDrawerOpen(true);
};
const [jinshujuOpen, setJinshujuOpen] = useState(false);
const handleViewSensitive = (studentId: number, field: string, value: string) => {
modal.confirm({
title: '查看敏感信息',
@@ -775,6 +779,13 @@ const StudentsPage: React.FC = () => {
>
<Button icon={<SwapOutlined />}></Button>
</Upload>
<PermissionButton
permission="student:edit"
icon={<CloudUploadOutlined />}
onClick={() => setJinshujuOpen(true)}
>
</PermissionButton>
<PermissionButton
permission="student:view"
icon={<DownloadOutlined />}
@@ -955,6 +966,11 @@ const StudentsPage: React.FC = () => {
</Form>
</Modal>
<JinshujuMatchModal
open={jinshujuOpen}
onClose={() => setJinshujuOpen(false)}
onApplied={() => { setJinshujuOpen(false); fetchData(); }}
/>
<Drawer
title={null}
open={drawerOpen}