feat: add class roster export button in class detail page
This commit is contained in:
@@ -5,7 +5,7 @@ import {
|
|||||||
Popconfirm, message, Form, Input, DatePicker, InputNumber,
|
Popconfirm, message, Form, Input, DatePicker, InputNumber,
|
||||||
} from 'antd';
|
} from 'antd';
|
||||||
import type { ColumnsType } from 'antd/es/table';
|
import type { ColumnsType } from 'antd/es/table';
|
||||||
import { ArrowLeftOutlined, PlusOutlined } from '@ant-design/icons';
|
import { ArrowLeftOutlined, PlusOutlined, DownloadOutlined } from '@ant-design/icons';
|
||||||
import dayjs from 'dayjs';
|
import dayjs from 'dayjs';
|
||||||
import api from '../../api';
|
import api from '../../api';
|
||||||
import PermissionButton from '../../components/PermissionButton';
|
import PermissionButton from '../../components/PermissionButton';
|
||||||
@@ -402,10 +402,36 @@ const ClassDetailPage: React.FC = () => {
|
|||||||
icon={<PlusOutlined />}
|
icon={<PlusOutlined />}
|
||||||
type="primary"
|
type="primary"
|
||||||
onClick={openStudentModal}
|
onClick={openStudentModal}
|
||||||
style={{ marginBottom: 16 }}
|
style={{ marginBottom: 16, marginRight: 8 }}
|
||||||
>
|
>
|
||||||
添加学员
|
添加学员
|
||||||
</Button>
|
</Button>
|
||||||
|
<PermissionButton
|
||||||
|
permission="class:view"
|
||||||
|
icon={<DownloadOutlined />}
|
||||||
|
onClick={() => {
|
||||||
|
const token = localStorage.getItem('token');
|
||||||
|
fetch(`/api/classes/${id}/roster/export`, {
|
||||||
|
headers: { Authorization: `Bearer ${token}` },
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
|
if (!res.ok) throw new Error('导出失败');
|
||||||
|
return res.blob();
|
||||||
|
})
|
||||||
|
.then((blob) => {
|
||||||
|
const url = URL.createObjectURL(blob);
|
||||||
|
const a = document.createElement('a');
|
||||||
|
a.href = url;
|
||||||
|
a.download = `班级花名册-${detail?.name || id}.xlsx`;
|
||||||
|
a.click();
|
||||||
|
URL.revokeObjectURL(url);
|
||||||
|
message.success('花名册导出成功');
|
||||||
|
})
|
||||||
|
.catch(() => message.error('花名册导出失败'));
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
导出花名册
|
||||||
|
</PermissionButton>
|
||||||
<Table<ClassStudent>
|
<Table<ClassStudent>
|
||||||
columns={studentColumns}
|
columns={studentColumns}
|
||||||
dataSource={students}
|
dataSource={students}
|
||||||
|
|||||||
Reference in New Issue
Block a user