Compare commits
No commits in common. "mgy" and "main" have entirely different histories.
42
README.md
42
README.md
|
|
@ -3,58 +3,18 @@
|
|||
## 目标
|
||||
|
||||
1. 微信小程序的信息管理页面
|
||||
2. 人资部后台(长期)
|
||||
2. 人资部后台
|
||||
|
||||
## 功能
|
||||
|
||||
### 主席团管理页面
|
||||
|
||||
1. 值班表导入、更新
|
||||
1. 值班表渲染
|
||||
2. 值班表在线更改、上传后端
|
||||
3. 值班表导出
|
||||
2. 成员权限管理
|
||||
1. 从 Auth 获取成员职位、部门
|
||||
2. 主席团成员:可更改所有信息
|
||||
3. 当班所有成员:可更改值班人数,可加入 Oreo,可更改状态
|
||||
4. 所有成员:可认领
|
||||
3. 特殊维修时间(如学园维修)、值班信息更新
|
||||
4. 日志
|
||||
1. 记录每一次操作、操作者
|
||||
5. 自动排班功能(Enhancement)
|
||||
|
||||
### 值班组长管理页面
|
||||
|
||||
ps. 是微信小程序中小组管理页面的pc端替代
|
||||
|
||||
1. 值班组长上传本班相关信息
|
||||
2. 值班组长上传值班总结(Enhancement)
|
||||
|
||||
## UI
|
||||
|
||||
### 仪表盘
|
||||
|
||||
1. 个人信息、职位
|
||||
2. 新系统中(未加入Oreo/预填写工单总数)统计
|
||||
|
||||
### 主席团管理页面
|
||||
|
||||
#### 值班表管理
|
||||
|
||||
1. 值班表渲染
|
||||
2. 值班表在线更改、上传后端
|
||||
1. 特殊时间值班表不上传
|
||||
3. 值班表导出
|
||||
|
||||
#### 特殊值班时间
|
||||
|
||||
1. (switch) 是否启用平常值班时间
|
||||
2. 若不在平常值班时间,选择录入不值班原因/特殊值班时间
|
||||
|
||||
### 值班组长管理页面(暂空)
|
||||
|
||||
1. (Enhancement) 值班总结上传
|
||||
|
||||
### 日志(所有人可见)
|
||||
|
||||
1. 查询功能
|
||||
|
|
|
|||
242
doc/api.md
242
doc/api.md
|
|
@ -1,242 +0,0 @@
|
|||
# 接口文档
|
||||
|
||||
## 基本格式
|
||||
|
||||
### 成功响应格式
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": {
|
||||
"foo": "bar"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**NOTE:** 若无特殊说明,`POST`请求的响应`data`字段为空(`{}`),可以不用管。
|
||||
|
||||
### 失败响应格式
|
||||
|
||||
```json
|
||||
{
|
||||
"success": false,
|
||||
"err": "some error"
|
||||
}
|
||||
```
|
||||
|
||||
### `GET`请求默认格式(若无特殊说明)
|
||||
|
||||
```json
|
||||
{
|
||||
"token": "token_test"
|
||||
}
|
||||
```
|
||||
|
||||
## 主页面
|
||||
|
||||
### 统计数据 `GET /admin/stats`
|
||||
|
||||
data:
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": {
|
||||
"notInOreo": 114,
|
||||
"total": 514
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 当前值班信息 `GET /admin/duty/current`
|
||||
|
||||
data:
|
||||
|
||||
```json
|
||||
{
|
||||
"isInDuty": true,
|
||||
"currentDuty": "2",
|
||||
"inDutyCnt": 3,
|
||||
"otherDutyTime": "",
|
||||
"offDutyReason": "",
|
||||
"place": "204",
|
||||
"dutyRecoverTime": ""
|
||||
}
|
||||
```
|
||||
|
||||
## 主席团页面
|
||||
|
||||
### 值班表管理
|
||||
|
||||
#### 更新值班表 `POST /admin/sheet/create`
|
||||
|
||||
request:
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "2024 春学期值班表",
|
||||
"sheet": [
|
||||
{
|
||||
"weekday": 1,
|
||||
"shift": 1,
|
||||
"workers": ["马嘉祺", "丁程鑫", "宋亚轩"],
|
||||
"leader": "蔡徐坤"
|
||||
},
|
||||
{
|
||||
"weekday": 1,
|
||||
"shift": 2,
|
||||
"workers": ["王俊凯", "易烊千玺", "王源"],
|
||||
"leader": "丁真珍珠"
|
||||
}
|
||||
// ...
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
#### 更新值班表 `POST /admin/sheet/update`
|
||||
|
||||
request:
|
||||
|
||||
```json
|
||||
{
|
||||
"id": 114514,
|
||||
"name": "2024 春学期值班表",
|
||||
"sheet": [
|
||||
{
|
||||
"weekday": 1,
|
||||
"shift": 1,
|
||||
"workers": ["马嘉祺", "丁程鑫", "宋亚轩"],
|
||||
"leader": "蔡徐坤"
|
||||
},
|
||||
{
|
||||
"weekday": 1,
|
||||
"shift": 2,
|
||||
"workers": ["王俊凯", "易烊千玺", "王源"],
|
||||
"leader": "丁真珍珠"
|
||||
}
|
||||
// ...
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
#### 获取当前值班表 `GET /admin/sheet/current`
|
||||
|
||||
data:
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "2024 春学期值班表",
|
||||
"id": 114514,
|
||||
"createdTime": "2024-03-07T19:52:48.523303",
|
||||
"sheet": [
|
||||
{
|
||||
"weekday": 1,
|
||||
"shift": 1,
|
||||
"workers": ["马嘉祺", "丁程鑫", "宋亚轩"],
|
||||
"leader": "蔡徐坤"
|
||||
},
|
||||
{
|
||||
"weekday": 1,
|
||||
"shift": 2,
|
||||
"workers": ["王俊凯", "易烊千玺", "王源"],
|
||||
"leader": "丁真珍珠"
|
||||
}
|
||||
// ...
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
#### 获取所有值班表 `GET /admin/sheet/list`
|
||||
|
||||
data:
|
||||
|
||||
```json
|
||||
{
|
||||
"current": 114514,
|
||||
"list": [
|
||||
{
|
||||
"name": "2024 春学期值班表",
|
||||
"id": 114514,
|
||||
"createdTime": "2024-03-07T19:52:48.523303",
|
||||
"sheet": [
|
||||
{
|
||||
"weekday": 1,
|
||||
"shift": 1,
|
||||
"workers": ["马嘉祺", "丁程鑫", "宋亚轩"],
|
||||
"leader": "蔡徐坤"
|
||||
},
|
||||
{
|
||||
"weekday": 1,
|
||||
"shift": 2,
|
||||
"workers": ["王俊凯", "易烊千玺", "王源"],
|
||||
"leader": "丁真珍珠"
|
||||
}
|
||||
// ...
|
||||
]
|
||||
}
|
||||
// ...
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### 特殊值班
|
||||
|
||||
#### 获取当前值班情况 `GET /admin/duty/current`
|
||||
|
||||
data:
|
||||
|
||||
```json
|
||||
{
|
||||
"isInDuty": true,
|
||||
"currentDuty": "2",
|
||||
"inDutyCnt": 3,
|
||||
"otherDutyTime": "",
|
||||
"offDutyReason": "",
|
||||
"place": "",
|
||||
"dutyRecoverTime": "",
|
||||
},
|
||||
```
|
||||
|
||||
#### 更新当前值班情况 `POST /admin/duty/update`
|
||||
|
||||
无关项返回空字符串,后端手动校验
|
||||
|
||||
request:
|
||||
|
||||
```json
|
||||
{
|
||||
"isInDuty": true,
|
||||
"currentDuty": "2",
|
||||
"inDutyCnt": 3,
|
||||
"otherDutyTime": "",
|
||||
"offDutyReason": "",
|
||||
"place": "204",
|
||||
"dutyRecoverTime": "",
|
||||
},
|
||||
```
|
||||
|
||||
## 日志页面
|
||||
|
||||
### 获取日志列表 `GET /admin/loglist`
|
||||
|
||||
data:
|
||||
|
||||
```json
|
||||
{
|
||||
"op": "宇航员",
|
||||
"time": "2024-03-07T19:52:48.523303",
|
||||
"operation": 2,
|
||||
"target": 1,
|
||||
"prev": {
|
||||
"id": 114,
|
||||
"info": "马嘉祺"
|
||||
},
|
||||
"curr": {
|
||||
"id": 514,
|
||||
"info": "何君琳"
|
||||
}
|
||||
},
|
||||
```
|
||||
|
||||
前端显示的信息:"{op} 于 {time} {operation} 了 {target}:{prev.info} -> {curr.info}"
|
||||
63
mock/api.ts
63
mock/api.ts
|
|
@ -1,63 +0,0 @@
|
|||
import sheetlist from './sheetlist.json';
|
||||
import sheet from './sheet.json';
|
||||
|
||||
const api = {
|
||||
'GET /admin/stats': {
|
||||
success: true,
|
||||
data: {
|
||||
notInOreo: 114,
|
||||
total: 514,
|
||||
},
|
||||
},
|
||||
'POST /admin/sheet/update': {
|
||||
success: true,
|
||||
data: {},
|
||||
},
|
||||
'POST /admin/sheet/create': {
|
||||
success: true,
|
||||
data: {},
|
||||
},
|
||||
'GET /admin/sheet/current': {
|
||||
success: true,
|
||||
data: sheet,
|
||||
},
|
||||
'GET /admin/sheet/list': {
|
||||
success: true,
|
||||
data: sheetlist,
|
||||
},
|
||||
'GET /admin/duty/current': {
|
||||
success: true,
|
||||
data: {
|
||||
isInDuty: true,
|
||||
currentDuty: '2',
|
||||
inDutyCnt: 3,
|
||||
otherDutyTime: '',
|
||||
offDutyReason: '',
|
||||
place: '204',
|
||||
dutyRecoverTime: '',
|
||||
},
|
||||
},
|
||||
'POST /admin/duty/update': {
|
||||
success: true,
|
||||
data: {},
|
||||
},
|
||||
'GET /admin/loglist': {
|
||||
success: true,
|
||||
data: {
|
||||
op: '宇航员',
|
||||
time: '2024-03-07T19:52:48.523303',
|
||||
operation: 2,
|
||||
target: 1,
|
||||
prev: {
|
||||
id: 114,
|
||||
info: '马嘉祺',
|
||||
},
|
||||
curr: {
|
||||
id: 514,
|
||||
info: '何君琳',
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
export default api;
|
||||
127
mock/sheet.json
127
mock/sheet.json
|
|
@ -1,127 +0,0 @@
|
|||
{
|
||||
"name": "2024 春学期值班表",
|
||||
"createdTime": "2024-03-07T19:52:48.523303",
|
||||
"id": 114,
|
||||
"sheet": [
|
||||
{
|
||||
"weekday": 1,
|
||||
"shift": 1,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 1,
|
||||
"shift": 2,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 1,
|
||||
"shift": 3,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 2,
|
||||
"shift": 1,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 2,
|
||||
"shift": 2,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 2,
|
||||
"shift": 3,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 3,
|
||||
"shift": 1,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 3,
|
||||
"shift": 2,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 3,
|
||||
"shift": 3,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 4,
|
||||
"shift": 1,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 4,
|
||||
"shift": 2,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 4,
|
||||
"shift": 3,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 5,
|
||||
"shift": 1,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 5,
|
||||
"shift": 2,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 5,
|
||||
"shift": 3,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 6,
|
||||
"shift": 1,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 6,
|
||||
"shift": 2,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 6,
|
||||
"shift": 3,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 7,
|
||||
"shift": 1,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 7,
|
||||
"shift": 2,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,259 +0,0 @@
|
|||
{
|
||||
"current": 514,
|
||||
"list": [
|
||||
{
|
||||
"name": "2024 春学期值班表",
|
||||
"createdTime": "2024-03-07T19:52:48.523303",
|
||||
"id": 114,
|
||||
"sheet": [
|
||||
{
|
||||
"weekday": 1,
|
||||
"shift": 1,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 1,
|
||||
"shift": 2,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 1,
|
||||
"shift": 3,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 2,
|
||||
"shift": 1,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 2,
|
||||
"shift": 2,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 2,
|
||||
"shift": 3,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 3,
|
||||
"shift": 1,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 3,
|
||||
"shift": 2,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 3,
|
||||
"shift": 3,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 4,
|
||||
"shift": 1,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 4,
|
||||
"shift": 2,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 4,
|
||||
"shift": 3,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 5,
|
||||
"shift": 1,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 5,
|
||||
"shift": 2,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 5,
|
||||
"shift": 3,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 6,
|
||||
"shift": 1,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 6,
|
||||
"shift": 2,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 6,
|
||||
"shift": 3,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 7,
|
||||
"shift": 1,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 7,
|
||||
"shift": 2,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "2024 秋学期值班表",
|
||||
"createdTime": "2024-03-07T11:45:14.523303",
|
||||
"id": 514,
|
||||
"sheet": [
|
||||
{
|
||||
"weekday": 1,
|
||||
"shift": 1,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 1,
|
||||
"shift": 2,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 1,
|
||||
"shift": 3,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 2,
|
||||
"shift": 1,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 2,
|
||||
"shift": 2,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 2,
|
||||
"shift": 3,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 3,
|
||||
"shift": 1,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 3,
|
||||
"shift": 2,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 3,
|
||||
"shift": 3,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 4,
|
||||
"shift": 1,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 4,
|
||||
"shift": 2,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 4,
|
||||
"shift": 3,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 5,
|
||||
"shift": 1,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 5,
|
||||
"shift": 2,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 5,
|
||||
"shift": 3,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 6,
|
||||
"shift": 1,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 6,
|
||||
"shift": 2,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 6,
|
||||
"shift": 3,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 7,
|
||||
"shift": 1,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
},
|
||||
{
|
||||
"weekday": 7,
|
||||
"shift": 2,
|
||||
"workers": ["123423", "31424", "31242"],
|
||||
"leader": "3902487"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -8,8 +8,6 @@
|
|||
"name": "notify-admin",
|
||||
"version": "0.1.0",
|
||||
"dependencies": {
|
||||
"@ant-design/icons": "^5.3.1",
|
||||
"@ant-design/pro-components": "^2.6.52",
|
||||
"@types/node": "^16.18.88",
|
||||
"@types/react": "^18.2.65",
|
||||
"@types/react-dom": "^18.2.21",
|
||||
|
|
@ -18,8 +16,7 @@
|
|||
"react-dom": "^18.2.0",
|
||||
"react-router-dom": "^6.22.3",
|
||||
"react-scripts": "5.0.1",
|
||||
"typescript": "^4.9.5",
|
||||
"xlsx": "^0.18.5"
|
||||
"typescript": "^4.9.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint-plugin-prettier": "^5.1.3",
|
||||
|
|
@ -111,286 +108,6 @@
|
|||
"resolved": "https://registry.npmmirror.com/@ant-design/icons-svg/-/icons-svg-4.4.2.tgz",
|
||||
"integrity": "sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA=="
|
||||
},
|
||||
"node_modules/@ant-design/pro-card": {
|
||||
"version": "2.5.30",
|
||||
"resolved": "https://registry.npmmirror.com/@ant-design/pro-card/-/pro-card-2.5.30.tgz",
|
||||
"integrity": "sha512-3r1DB9NZ+yQ9636ZR8zgIBbmEd9/TrJnTBBTBDfOgNbiLLq3Rg4FfVNy6m1O8bF1YcGHI3uTP2/eWq4SSk1hWA==",
|
||||
"dependencies": {
|
||||
"@ant-design/icons": "^5.0.0",
|
||||
"@ant-design/pro-provider": "2.14.0",
|
||||
"@ant-design/pro-utils": "2.15.5",
|
||||
"@babel/runtime": "^7.18.0",
|
||||
"classnames": "^2.3.2",
|
||||
"omit.js": "^2.0.2",
|
||||
"rc-resize-observer": "^1.0.0",
|
||||
"rc-util": "^5.4.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"antd": "^4.24.15 || ^5.11.2",
|
||||
"react": ">=17.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ant-design/pro-components": {
|
||||
"version": "2.6.52",
|
||||
"resolved": "https://registry.npmmirror.com/@ant-design/pro-components/-/pro-components-2.6.52.tgz",
|
||||
"integrity": "sha512-TocUF5k5tjGRW65y/NAnS+gZxx5aconoOvENfjwrwPxJ9HP49FD8nMiH97xOqVI+6ew4Mr9+9+Acs+C/bw4glA==",
|
||||
"dependencies": {
|
||||
"@ant-design/pro-card": "2.5.30",
|
||||
"@ant-design/pro-descriptions": "2.5.35",
|
||||
"@ant-design/pro-field": "2.14.8",
|
||||
"@ant-design/pro-form": "2.25.0",
|
||||
"@ant-design/pro-layout": "7.18.0",
|
||||
"@ant-design/pro-list": "2.5.50",
|
||||
"@ant-design/pro-provider": "2.14.0",
|
||||
"@ant-design/pro-skeleton": "2.1.11",
|
||||
"@ant-design/pro-table": "3.15.1",
|
||||
"@ant-design/pro-utils": "2.15.5",
|
||||
"@babel/runtime": "^7.16.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"antd": "^4.24.15 || ^5.11.2",
|
||||
"react": ">=17.0.0",
|
||||
"react-dom": ">=17.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ant-design/pro-descriptions": {
|
||||
"version": "2.5.35",
|
||||
"resolved": "https://registry.npmmirror.com/@ant-design/pro-descriptions/-/pro-descriptions-2.5.35.tgz",
|
||||
"integrity": "sha512-GhoN013irN3q+G1MQa0HrY3/YxbwYNp4GYSuCxYSRpoC2VG9Y8NyxY+v88p2e1g9kn4Y6WtbxG+nScVObgaUJQ==",
|
||||
"dependencies": {
|
||||
"@ant-design/pro-field": "2.14.8",
|
||||
"@ant-design/pro-form": "2.25.0",
|
||||
"@ant-design/pro-skeleton": "2.1.11",
|
||||
"@ant-design/pro-utils": "2.15.5",
|
||||
"@babel/runtime": "^7.18.0",
|
||||
"rc-resize-observer": "^0.2.3",
|
||||
"rc-util": "^5.0.6"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"antd": "^4.24.15 || ^5.11.2",
|
||||
"react": ">=17.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ant-design/pro-descriptions/node_modules/rc-resize-observer": {
|
||||
"version": "0.2.6",
|
||||
"resolved": "https://registry.npmmirror.com/rc-resize-observer/-/rc-resize-observer-0.2.6.tgz",
|
||||
"integrity": "sha512-YX6nYnd6fk7zbuvT6oSDMKiZjyngjHoy+fz+vL3Tez38d/G5iGdaDJa2yE7345G6sc4Mm1IGRUIwclvltddhmA==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.10.1",
|
||||
"classnames": "^2.2.1",
|
||||
"rc-util": "^5.0.0",
|
||||
"resize-observer-polyfill": "^1.5.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": ">=16.9.0",
|
||||
"react-dom": ">=16.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ant-design/pro-field": {
|
||||
"version": "2.14.8",
|
||||
"resolved": "https://registry.npmmirror.com/@ant-design/pro-field/-/pro-field-2.14.8.tgz",
|
||||
"integrity": "sha512-FwxUoBX33cN/A4c7PB+D/erUASOI2uIAFybc/7TbBg+LmVO5RoH2EZZIGvZ4IeYaqMiwH1k0Y0GwOg7sNoUpAQ==",
|
||||
"dependencies": {
|
||||
"@ant-design/icons": "^5.0.0",
|
||||
"@ant-design/pro-provider": "2.14.0",
|
||||
"@ant-design/pro-utils": "2.15.5",
|
||||
"@babel/runtime": "^7.18.0",
|
||||
"@chenshuai2144/sketch-color": "^1.0.8",
|
||||
"classnames": "^2.3.2",
|
||||
"dayjs": "^1.11.10",
|
||||
"lodash.tonumber": "^4.0.3",
|
||||
"omit.js": "^2.0.2",
|
||||
"rc-util": "^5.4.0",
|
||||
"swr": "^2.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"antd": "^4.24.15 || ^5.11.2",
|
||||
"react": ">=17.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ant-design/pro-form": {
|
||||
"version": "2.25.0",
|
||||
"resolved": "https://registry.npmmirror.com/@ant-design/pro-form/-/pro-form-2.25.0.tgz",
|
||||
"integrity": "sha512-XH1G05LpVOfdTv2SPix0eg1q59L1pDC98MbF/D0Kjq0DVrwsJ7Ze0NrmR80Apy26JLUMnLTPPjIhBI5mhvmDkw==",
|
||||
"dependencies": {
|
||||
"@ant-design/icons": "^5.0.0",
|
||||
"@ant-design/pro-field": "2.14.8",
|
||||
"@ant-design/pro-provider": "2.14.0",
|
||||
"@ant-design/pro-utils": "2.15.5",
|
||||
"@babel/runtime": "^7.18.0",
|
||||
"@chenshuai2144/sketch-color": "^1.0.7",
|
||||
"@umijs/use-params": "^1.0.9",
|
||||
"classnames": "^2.3.2",
|
||||
"dayjs": "^1.11.10",
|
||||
"lodash.merge": "^4.6.2",
|
||||
"omit.js": "^2.0.2",
|
||||
"rc-resize-observer": "^1.1.0",
|
||||
"rc-util": "^5.0.6"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@types/lodash.merge": "^4.6.7",
|
||||
"antd": "^4.24.15 || ^5.11.2",
|
||||
"rc-field-form": "^1.22.0",
|
||||
"react": ">=17.0.0",
|
||||
"react-dom": ">=17.0.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@types/lodash.merge": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@ant-design/pro-layout": {
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmmirror.com/@ant-design/pro-layout/-/pro-layout-7.18.0.tgz",
|
||||
"integrity": "sha512-Es/mQAif5RJVynC/rVM+DsX1Kvp3xkjlAgZta3Sak4GZmkq3lRMq80MPlsKLeIZMwOBE1k3CZ4i7VEdWTcXCgg==",
|
||||
"dependencies": {
|
||||
"@ant-design/icons": "^5.0.0",
|
||||
"@ant-design/pro-provider": "2.14.0",
|
||||
"@ant-design/pro-utils": "2.15.5",
|
||||
"@babel/runtime": "^7.18.0",
|
||||
"@umijs/route-utils": "^4.0.0",
|
||||
"@umijs/use-params": "^1.0.9",
|
||||
"classnames": "^2.3.2",
|
||||
"lodash.merge": "^4.6.2",
|
||||
"omit.js": "^2.0.2",
|
||||
"path-to-regexp": "2.4.0",
|
||||
"rc-resize-observer": "^1.1.0",
|
||||
"rc-util": "^5.0.6",
|
||||
"swr": "^2.0.0",
|
||||
"warning": "^4.0.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"antd": "^4.24.15 || ^5.11.2",
|
||||
"react": ">=17.0.0",
|
||||
"react-dom": ">=17.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ant-design/pro-layout/node_modules/path-to-regexp": {
|
||||
"version": "2.4.0",
|
||||
"resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-2.4.0.tgz",
|
||||
"integrity": "sha512-G6zHoVqC6GGTQkZwF4lkuEyMbVOjoBKAEybQUypI1WTkqinCOrq2x6U2+phkJ1XsEMTy4LjtwPI7HW+NVrRR2w=="
|
||||
},
|
||||
"node_modules/@ant-design/pro-list": {
|
||||
"version": "2.5.50",
|
||||
"resolved": "https://registry.npmmirror.com/@ant-design/pro-list/-/pro-list-2.5.50.tgz",
|
||||
"integrity": "sha512-FiTn96C5NAMFwIl4ibM9QAwD01Q4EE9CV632jj8VX16w/KhBu4Gox8CvuOkWxvhw+Fw5Vz49jDLuToZrE9nNTA==",
|
||||
"dependencies": {
|
||||
"@ant-design/icons": "^5.0.0",
|
||||
"@ant-design/pro-card": "2.5.30",
|
||||
"@ant-design/pro-field": "2.14.8",
|
||||
"@ant-design/pro-table": "3.15.1",
|
||||
"@ant-design/pro-utils": "2.15.5",
|
||||
"@babel/runtime": "^7.18.0",
|
||||
"classnames": "^2.3.2",
|
||||
"dayjs": "^1.11.10",
|
||||
"rc-resize-observer": "^1.0.0",
|
||||
"rc-util": "^4.19.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"antd": "^4.24.15 || ^5.11.2",
|
||||
"react": ">=17.0.0",
|
||||
"react-dom": ">=17.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ant-design/pro-list/node_modules/rc-util": {
|
||||
"version": "4.21.1",
|
||||
"resolved": "https://registry.npmmirror.com/rc-util/-/rc-util-4.21.1.tgz",
|
||||
"integrity": "sha512-Z+vlkSQVc1l8O2UjR3WQ+XdWlhj5q9BMQNLk2iOBch75CqPfrJyGtcWMcnhRlNuDu0Ndtt4kLVO8JI8BrABobg==",
|
||||
"dependencies": {
|
||||
"add-dom-event-listener": "^1.1.0",
|
||||
"prop-types": "^15.5.10",
|
||||
"react-is": "^16.12.0",
|
||||
"react-lifecycles-compat": "^3.0.4",
|
||||
"shallowequal": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ant-design/pro-list/node_modules/react-is": {
|
||||
"version": "16.13.1",
|
||||
"resolved": "https://registry.npmmirror.com/react-is/-/react-is-16.13.1.tgz",
|
||||
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
|
||||
},
|
||||
"node_modules/@ant-design/pro-provider": {
|
||||
"version": "2.14.0",
|
||||
"resolved": "https://registry.npmmirror.com/@ant-design/pro-provider/-/pro-provider-2.14.0.tgz",
|
||||
"integrity": "sha512-C89hwefeC7OJlLBzPjYS5XbW/t3NAM1KKqPiBeTkr0+KHQE7xjYfh+bi7RcQ7TsHNIYHjd52cEZuEdTJqzyHPg==",
|
||||
"dependencies": {
|
||||
"@ant-design/cssinjs": "^1.11.1",
|
||||
"@babel/runtime": "^7.18.0",
|
||||
"@ctrl/tinycolor": "^3.4.0",
|
||||
"rc-util": "^5.0.1",
|
||||
"swr": "^2.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"antd": "^4.24.15 || ^5.11.2",
|
||||
"react": ">=17.0.0",
|
||||
"react-dom": ">=17.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ant-design/pro-skeleton": {
|
||||
"version": "2.1.11",
|
||||
"resolved": "https://registry.npmmirror.com/@ant-design/pro-skeleton/-/pro-skeleton-2.1.11.tgz",
|
||||
"integrity": "sha512-a1drmZSDXHFexFniN1YD7PgYiWvhdBAM9OwzSOO3eXPAltAg2cGcaVBlFmweShN+dupO220RN+6aaLUv3G9B2Q==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.18.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"antd": "^4.24.15 || ^5.11.2",
|
||||
"react": ">=17.0.0",
|
||||
"react-dom": ">=17.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ant-design/pro-table": {
|
||||
"version": "3.15.1",
|
||||
"resolved": "https://registry.npmmirror.com/@ant-design/pro-table/-/pro-table-3.15.1.tgz",
|
||||
"integrity": "sha512-rLM1gzcI4VQ/mdU6UzkgnF/6eisrhVqMtGa7XfOVgAyQ8JePWSHAkc4aTk4Psgbk2nDLepobEAodWy7DOaIuGQ==",
|
||||
"dependencies": {
|
||||
"@ant-design/icons": "^5.0.0",
|
||||
"@ant-design/pro-card": "2.5.30",
|
||||
"@ant-design/pro-field": "2.14.8",
|
||||
"@ant-design/pro-form": "2.25.0",
|
||||
"@ant-design/pro-provider": "2.14.0",
|
||||
"@ant-design/pro-utils": "2.15.5",
|
||||
"@babel/runtime": "^7.18.0",
|
||||
"@dnd-kit/core": "^6.0.8",
|
||||
"@dnd-kit/modifiers": "^6.0.1",
|
||||
"@dnd-kit/sortable": "^7.0.2",
|
||||
"@dnd-kit/utilities": "^3.2.1",
|
||||
"classnames": "^2.3.2",
|
||||
"dayjs": "^1.11.10",
|
||||
"lodash.merge": "^4.6.2",
|
||||
"omit.js": "^2.0.2",
|
||||
"rc-resize-observer": "^1.0.0",
|
||||
"rc-util": "^5.0.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"antd": "^4.24.15 || ^5.11.2",
|
||||
"rc-field-form": "^1.22.0",
|
||||
"react": ">=17.0.0",
|
||||
"react-dom": ">=17.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ant-design/pro-utils": {
|
||||
"version": "2.15.5",
|
||||
"resolved": "https://registry.npmmirror.com/@ant-design/pro-utils/-/pro-utils-2.15.5.tgz",
|
||||
"integrity": "sha512-352WZhzWRsyRd85R0fIxJgDEl9+vgxIzDxIW7G0/oWpXilxDIUnVVB/U46UM3d1YuR+0PQsKBXJmS1niro8sXA==",
|
||||
"dependencies": {
|
||||
"@ant-design/icons": "^5.0.0",
|
||||
"@ant-design/pro-provider": "2.14.0",
|
||||
"@babel/runtime": "^7.18.0",
|
||||
"classnames": "^2.3.2",
|
||||
"dayjs": "^1.11.10",
|
||||
"lodash.merge": "^4.6.2",
|
||||
"rc-util": "^5.0.6",
|
||||
"safe-stable-stringify": "^2.4.3",
|
||||
"swr": "^2.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"antd": "^4.24.15 || ^5.11.2",
|
||||
"react": ">=17.0.0",
|
||||
"react-dom": ">=17.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ant-design/react-slick": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/@ant-design/react-slick/-/react-slick-1.0.2.tgz",
|
||||
|
|
@ -2362,18 +2079,6 @@
|
|||
"resolved": "https://registry.npmmirror.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
|
||||
"integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw=="
|
||||
},
|
||||
"node_modules/@chenshuai2144/sketch-color": {
|
||||
"version": "1.0.9",
|
||||
"resolved": "https://registry.npmmirror.com/@chenshuai2144/sketch-color/-/sketch-color-1.0.9.tgz",
|
||||
"integrity": "sha512-obzSy26cb7Pm7OprWyVpgMpIlrZpZ0B7vbrU0RMbvRg0YAI890S5Xy02Aj1Nhl4+KTbi1lVYHt6HQP8Hm9s+1w==",
|
||||
"dependencies": {
|
||||
"reactcss": "^1.2.3",
|
||||
"tinycolor2": "^1.4.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": ">=16.12.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@csstools/css-parser-algorithms": {
|
||||
"version": "2.6.0",
|
||||
"resolved": "https://registry.npmmirror.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.6.0.tgz",
|
||||
|
|
@ -2630,68 +2335,6 @@
|
|||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/@dnd-kit/accessibility": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/@dnd-kit/accessibility/-/accessibility-3.1.0.tgz",
|
||||
"integrity": "sha512-ea7IkhKvlJUv9iSHJOnxinBcoOI3ppGnnL+VDJ75O45Nss6HtZd8IdN8touXPDtASfeI2T2LImb8VOZcL47wjQ==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": ">=16.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@dnd-kit/core": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/@dnd-kit/core/-/core-6.1.0.tgz",
|
||||
"integrity": "sha512-J3cQBClB4TVxwGo3KEjssGEXNJqGVWx17aRTZ1ob0FliR5IjYgTxl5YJbKTzA6IzrtelotH19v6y7uoIRUZPSg==",
|
||||
"dependencies": {
|
||||
"@dnd-kit/accessibility": "^3.1.0",
|
||||
"@dnd-kit/utilities": "^3.2.2",
|
||||
"tslib": "^2.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": ">=16.8.0",
|
||||
"react-dom": ">=16.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@dnd-kit/modifiers": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/@dnd-kit/modifiers/-/modifiers-6.0.1.tgz",
|
||||
"integrity": "sha512-rbxcsg3HhzlcMHVHWDuh9LCjpOVAgqbV78wLGI8tziXY3+qcMQ61qVXIvNKQFuhj75dSfD+o+PYZQ/NUk2A23A==",
|
||||
"dependencies": {
|
||||
"@dnd-kit/utilities": "^3.2.1",
|
||||
"tslib": "^2.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@dnd-kit/core": "^6.0.6",
|
||||
"react": ">=16.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@dnd-kit/sortable": {
|
||||
"version": "7.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/@dnd-kit/sortable/-/sortable-7.0.2.tgz",
|
||||
"integrity": "sha512-wDkBHHf9iCi1veM834Gbk1429bd4lHX4RpAwT0y2cHLf246GAvU2sVw/oxWNpPKQNQRQaeGXhAVgrOl1IT+iyA==",
|
||||
"dependencies": {
|
||||
"@dnd-kit/utilities": "^3.2.0",
|
||||
"tslib": "^2.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@dnd-kit/core": "^6.0.7",
|
||||
"react": ">=16.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@dnd-kit/utilities": {
|
||||
"version": "3.2.2",
|
||||
"resolved": "https://registry.npmmirror.com/@dnd-kit/utilities/-/utilities-3.2.2.tgz",
|
||||
"integrity": "sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": ">=16.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@emotion/unitless": {
|
||||
"version": "0.7.5",
|
||||
"resolved": "https://registry.npmmirror.com/@emotion/unitless/-/unitless-0.7.5.tgz",
|
||||
|
|
@ -4603,19 +4246,6 @@
|
|||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@umijs/route-utils": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/@umijs/route-utils/-/route-utils-4.0.1.tgz",
|
||||
"integrity": "sha512-+1ixf1BTOLuH+ORb4x8vYMPeIt38n9q0fJDwhv9nSxrV46mxbLF0nmELIo9CKQB2gHfuC4+hww6xejJ6VYnBHQ=="
|
||||
},
|
||||
"node_modules/@umijs/use-params": {
|
||||
"version": "1.0.9",
|
||||
"resolved": "https://registry.npmmirror.com/@umijs/use-params/-/use-params-1.0.9.tgz",
|
||||
"integrity": "sha512-QlN0RJSBVQBwLRNxbxjQ5qzqYIGn+K7USppMoIOVlf7fxXHsnQZ2bEsa6Pm74bt6DVQxpUE8HqvdStn6Y9FV1w==",
|
||||
"peerDependencies": {
|
||||
"react": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@ungap/structured-clone": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
|
||||
|
|
@ -4835,14 +4465,6 @@
|
|||
"node": ">=0.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/add-dom-event-listener": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/add-dom-event-listener/-/add-dom-event-listener-1.1.0.tgz",
|
||||
"integrity": "sha512-WCxx1ixHT0GQU9hb0KI/mhgRQhnU+U3GvwY6ZvVjYq8rsihIGoaIOUbY0yMPBxLH5MDtr0kz3fisWGNcbWW7Jw==",
|
||||
"dependencies": {
|
||||
"object-assign": "4.x"
|
||||
}
|
||||
},
|
||||
"node_modules/address": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmmirror.com/address/-/address-1.2.2.tgz",
|
||||
|
|
@ -4863,14 +4485,6 @@
|
|||
"node": ">=8.9"
|
||||
}
|
||||
},
|
||||
"node_modules/adler-32": {
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz",
|
||||
"integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==",
|
||||
"engines": {
|
||||
"node": ">=0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/agent-base": {
|
||||
"version": "6.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz",
|
||||
|
|
@ -5902,18 +5516,6 @@
|
|||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/cfb": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmmirror.com/cfb/-/cfb-1.2.2.tgz",
|
||||
"integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==",
|
||||
"dependencies": {
|
||||
"adler-32": "~1.3.0",
|
||||
"crc-32": "~1.2.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/chalk": {
|
||||
"version": "2.4.2",
|
||||
"resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz",
|
||||
|
|
@ -6113,11 +5715,6 @@
|
|||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/client-only": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/client-only/-/client-only-0.0.1.tgz",
|
||||
"integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="
|
||||
},
|
||||
"node_modules/cliui": {
|
||||
"version": "7.0.4",
|
||||
"resolved": "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz",
|
||||
|
|
@ -6150,14 +5747,6 @@
|
|||
"node": ">= 4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/codepage": {
|
||||
"version": "1.15.0",
|
||||
"resolved": "https://registry.npmmirror.com/codepage/-/codepage-1.15.0.tgz",
|
||||
"integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==",
|
||||
"engines": {
|
||||
"node": ">=0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/collect-v8-coverage": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz",
|
||||
|
|
@ -6372,17 +5961,6 @@
|
|||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/crc-32": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz",
|
||||
"integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==",
|
||||
"bin": {
|
||||
"crc32": "bin/crc32.njs"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/cross-spawn": {
|
||||
"version": "7.0.3",
|
||||
"resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz",
|
||||
|
|
@ -8584,14 +8162,6 @@
|
|||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/frac": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz",
|
||||
"integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==",
|
||||
"engines": {
|
||||
"node": ">=0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/fraction.js": {
|
||||
"version": "4.3.7",
|
||||
"resolved": "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.3.7.tgz",
|
||||
|
|
@ -12268,11 +11838,6 @@
|
|||
"resolved": "https://registry.npmmirror.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
|
||||
"integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA=="
|
||||
},
|
||||
"node_modules/lodash.tonumber": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmmirror.com/lodash.tonumber/-/lodash.tonumber-4.0.3.tgz",
|
||||
"integrity": "sha512-SY0SwuPOHRwKcCNTdsntPYb+Zddz5mDUIVFABzRMqmAiL41pMeyoQFGxYAw5zdc9NnH4pbJqiqqp5ckfxa+zSA=="
|
||||
},
|
||||
"node_modules/lodash.truncate": {
|
||||
"version": "4.4.2",
|
||||
"resolved": "https://registry.npmmirror.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
|
||||
|
|
@ -12942,11 +12507,6 @@
|
|||
"resolved": "https://registry.npmmirror.com/obuf/-/obuf-1.1.2.tgz",
|
||||
"integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg=="
|
||||
},
|
||||
"node_modules/omit.js": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/omit.js/-/omit.js-2.0.2.tgz",
|
||||
"integrity": "sha512-hJmu9D+bNB40YpL9jYebQl4lsTW6yEHRTroJzNLqQJYHm7c+NQnJGfZmIWh8S3q3KoaxV1aLhV6B3+0N0/kyJg=="
|
||||
},
|
||||
"node_modules/on-finished": {
|
||||
"version": "2.4.1",
|
||||
"resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz",
|
||||
|
|
@ -15422,11 +14982,6 @@
|
|||
"resolved": "https://registry.npmmirror.com/react-is/-/react-is-17.0.2.tgz",
|
||||
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
|
||||
},
|
||||
"node_modules/react-lifecycles-compat": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmmirror.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
|
||||
"integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
|
||||
},
|
||||
"node_modules/react-refresh": {
|
||||
"version": "0.11.0",
|
||||
"resolved": "https://registry.npmmirror.com/react-refresh/-/react-refresh-0.11.0.tgz",
|
||||
|
|
@ -15537,14 +15092,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"node_modules/reactcss": {
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmmirror.com/reactcss/-/reactcss-1.2.3.tgz",
|
||||
"integrity": "sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A==",
|
||||
"dependencies": {
|
||||
"lodash": "^4.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/read-cache": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/read-cache/-/read-cache-1.0.0.tgz",
|
||||
|
|
@ -15987,14 +15534,6 @@
|
|||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/safe-stable-stringify": {
|
||||
"version": "2.4.3",
|
||||
"resolved": "https://registry.npmmirror.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz",
|
||||
"integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==",
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/safer-buffer": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
||||
|
|
@ -16321,11 +15860,6 @@
|
|||
"resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz",
|
||||
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
|
||||
},
|
||||
"node_modules/shallowequal": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/shallowequal/-/shallowequal-1.1.0.tgz",
|
||||
"integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="
|
||||
},
|
||||
"node_modules/shebang-command": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz",
|
||||
|
|
@ -16529,17 +16063,6 @@
|
|||
"resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz",
|
||||
"integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
|
||||
},
|
||||
"node_modules/ssf": {
|
||||
"version": "0.11.2",
|
||||
"resolved": "https://registry.npmmirror.com/ssf/-/ssf-0.11.2.tgz",
|
||||
"integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==",
|
||||
"dependencies": {
|
||||
"frac": "~1.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/stable": {
|
||||
"version": "0.1.8",
|
||||
"resolved": "https://registry.npmmirror.com/stable/-/stable-0.1.8.tgz",
|
||||
|
|
@ -17331,18 +16854,6 @@
|
|||
"boolbase": "~1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/swr": {
|
||||
"version": "2.2.5",
|
||||
"resolved": "https://registry.npmmirror.com/swr/-/swr-2.2.5.tgz",
|
||||
"integrity": "sha512-QtxqyclFeAsxEUeZIYmsaQ0UjimSq1RZ9Un7I68/0ClKK/U3LoyQunwkQfJZr2fc22DfIXLNDc2wFyTEikCUpg==",
|
||||
"dependencies": {
|
||||
"client-only": "^0.0.1",
|
||||
"use-sync-external-store": "^1.2.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "^16.11.0 || ^17.0.0 || ^18.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/symbol-tree": {
|
||||
"version": "3.2.4",
|
||||
"resolved": "https://registry.npmmirror.com/symbol-tree/-/symbol-tree-3.2.4.tgz",
|
||||
|
|
@ -17587,11 +17098,6 @@
|
|||
"resolved": "https://registry.npmmirror.com/thunky/-/thunky-1.1.0.tgz",
|
||||
"integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA=="
|
||||
},
|
||||
"node_modules/tinycolor2": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmmirror.com/tinycolor2/-/tinycolor2-1.6.0.tgz",
|
||||
"integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw=="
|
||||
},
|
||||
"node_modules/tmpl": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmmirror.com/tmpl/-/tmpl-1.0.5.tgz",
|
||||
|
|
@ -17970,14 +17476,6 @@
|
|||
"requires-port": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/use-sync-external-store": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz",
|
||||
"integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==",
|
||||
"peerDependencies": {
|
||||
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/util-deprecate": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||
|
|
@ -18069,14 +17567,6 @@
|
|||
"makeerror": "1.0.12"
|
||||
}
|
||||
},
|
||||
"node_modules/warning": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmmirror.com/warning/-/warning-4.0.3.tgz",
|
||||
"integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
|
||||
"dependencies": {
|
||||
"loose-envify": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/watchpack": {
|
||||
"version": "2.4.0",
|
||||
"resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.0.tgz",
|
||||
|
|
@ -18524,22 +18014,6 @@
|
|||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/wmf": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz",
|
||||
"integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==",
|
||||
"engines": {
|
||||
"node": ">=0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/word": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmmirror.com/word/-/word-0.3.0.tgz",
|
||||
"integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==",
|
||||
"engines": {
|
||||
"node": ">=0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/word-wrap": {
|
||||
"version": "1.2.5",
|
||||
"resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz",
|
||||
|
|
@ -18957,26 +18431,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"node_modules/xlsx": {
|
||||
"version": "0.18.5",
|
||||
"resolved": "https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz",
|
||||
"integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==",
|
||||
"dependencies": {
|
||||
"adler-32": "~1.3.0",
|
||||
"cfb": "~1.2.1",
|
||||
"codepage": "~1.15.0",
|
||||
"crc-32": "~1.2.1",
|
||||
"ssf": "~0.11.2",
|
||||
"wmf": "~1.0.1",
|
||||
"word": "~0.3.0"
|
||||
},
|
||||
"bin": {
|
||||
"xlsx": "bin/xlsx.njs"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/xml-name-validator": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
|
||||
|
|
|
|||
|
|
@ -6,8 +6,6 @@
|
|||
"name": "EVA Tech"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ant-design/icons": "^5.3.1",
|
||||
"@ant-design/pro-components": "^2.6.52",
|
||||
"@types/node": "^16.18.88",
|
||||
"@types/react": "^18.2.65",
|
||||
"@types/react-dom": "^18.2.21",
|
||||
|
|
@ -16,8 +14,7 @@
|
|||
"react-dom": "^18.2.0",
|
||||
"react-router-dom": "^6.22.3",
|
||||
"react-scripts": "5.0.1",
|
||||
"typescript": "^4.9.5",
|
||||
"xlsx": "^0.18.5"
|
||||
"typescript": "^4.9.5"
|
||||
},
|
||||
"scripts": {
|
||||
"start": "react-scripts start",
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<link rel="icon" href="%PUBLIC_URL%/logo.png" />
|
||||
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="theme-color" content="#000000" />
|
||||
<meta
|
||||
|
|
@ -15,7 +15,7 @@
|
|||
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
|
||||
-->
|
||||
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
|
||||
<title>EVA Tea</title>
|
||||
<title>EVA-Notify Admin Page</title>
|
||||
</head>
|
||||
<body style="margin: 0;">
|
||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||
|
|
|
|||
BIN
public/logo.png
BIN
public/logo.png
Binary file not shown.
|
Before Width: | Height: | Size: 50 KiB |
36
src/App.tsx
36
src/App.tsx
|
|
@ -1,16 +1,14 @@
|
|||
import { FC } from 'react';
|
||||
import { useState, FC } from 'react';
|
||||
import { useLocation, useNavigate } from 'react-router-dom';
|
||||
import {
|
||||
TeamOutlined,
|
||||
UserOutlined,
|
||||
DesktopOutlined,
|
||||
HomeOutlined,
|
||||
SmileOutlined,
|
||||
CrownOutlined,
|
||||
ClockCircleOutlined,
|
||||
ThunderboltOutlined,
|
||||
} from '@ant-design/icons';
|
||||
import type { MenuProps } from 'antd';
|
||||
import { Breadcrumb, Layout, Menu, theme } from 'antd';
|
||||
import { AppRouter, routes, routeName } from './router';
|
||||
import { AppRouter } from './router';
|
||||
import PageFooter from './components/PageFooter';
|
||||
|
||||
const { Content, Sider } = Layout;
|
||||
|
|
@ -64,16 +62,17 @@ function defSubMenu(
|
|||
}
|
||||
|
||||
const items: MenuItem[] = [
|
||||
defMenu('主页', 'mainpage', <SmileOutlined />, routes.main),
|
||||
defRootMenu('主席团管理', 'admin', <CrownOutlined />, [
|
||||
defSubMenu('排班表管理', 'dutytable', routes.admin.dutyTable),
|
||||
defSubMenu('值班信息管理', 'dutyinfo', routes.admin.dutyInfo),
|
||||
defMenu('主页', 'mainpage', <DesktopOutlined />, '/'),
|
||||
defRootMenu('展示信息管理', 'sub1', <UserOutlined />, [
|
||||
defSubMenu('选项1', '1', '/admin/hello1'),
|
||||
defSubMenu('选项2', '2', '/admin/hello2'),
|
||||
defSubMenu('选项3', '3', '/admin/hello3'),
|
||||
]),
|
||||
defRootMenu('值班组长', 'leader', <TeamOutlined />, [
|
||||
defSubMenu('值班总结', 'conclusion', routes.duty.conclusion),
|
||||
defRootMenu('值班组长', 'sub2', <TeamOutlined />, [
|
||||
defSubMenu('选项1', '4', '/duty/hi1'),
|
||||
defSubMenu('选项2', '5', '/duty/hi2'),
|
||||
]),
|
||||
defMenu('日志', 'logspage', <ClockCircleOutlined />, routes.logs),
|
||||
defMenu('关于我们', 'aboutpage', <ThunderboltOutlined />, routes.about),
|
||||
defMenu('关于我们', 'aboutpage', <UserOutlined />, '/about'),
|
||||
];
|
||||
|
||||
interface BreadcrumbItem {
|
||||
|
|
@ -82,6 +81,7 @@ interface BreadcrumbItem {
|
|||
}
|
||||
|
||||
const AppLayout: FC<{ router: JSX.Element }> = (props) => {
|
||||
const [collapsed, setCollapsed] = useState(false);
|
||||
const { colorBgContainer, borderRadiusLG } = theme.getDesignToken();
|
||||
const navigate = useNavigate();
|
||||
|
||||
|
|
@ -97,13 +97,17 @@ const AppLayout: FC<{ router: JSX.Element }> = (props) => {
|
|||
for (var i = 1; i < pathArray.length; i++) {
|
||||
currentRouteItems.push({
|
||||
href: '',
|
||||
title: <span>{routeName.get(pathArray[i])}</span>,
|
||||
title: <span>{pathArray[i]}</span>,
|
||||
});
|
||||
}
|
||||
|
||||
return (
|
||||
<Layout style={{ minHeight: '100vh' }}>
|
||||
<Sider>
|
||||
<Sider
|
||||
collapsible
|
||||
collapsed={collapsed}
|
||||
onCollapse={(value) => setCollapsed(value)}
|
||||
>
|
||||
<div className='demo-logo-vertical' />
|
||||
<Menu
|
||||
theme='dark'
|
||||
|
|
|
|||
|
|
@ -12,12 +12,9 @@ const PageFooter: React.FC = () => {
|
|||
yearStr = startYear.toString() + ' - ' + curYear.toString();
|
||||
}
|
||||
return (
|
||||
<div>
|
||||
<Footer style={{ textAlign: 'center', color: '#808080' }}>
|
||||
EVA Tea <br /> <br />
|
||||
© {yearStr} EVA Tech
|
||||
<Footer style={{ textAlign: 'center' }}>
|
||||
EVA-Notify Admin Page © {yearStr} EVA Tech
|
||||
</Footer>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,24 +0,0 @@
|
|||
import { Button, Upload } from 'antd';
|
||||
import { UploadOutlined } from '@ant-design/icons';
|
||||
import { FC } from 'react';
|
||||
import { readExcelFile } from '../../utils/excel';
|
||||
|
||||
const DutyTablePage: FC = () => {
|
||||
return (
|
||||
<Upload
|
||||
name='file'
|
||||
action=''
|
||||
beforeUpload={(file) => {
|
||||
let data = readExcelFile(file, 0);
|
||||
data
|
||||
.then((d) => console.log('read data', d))
|
||||
.catch((e) => console.log('got error', e));
|
||||
return false;
|
||||
}}
|
||||
>
|
||||
<Button icon={<UploadOutlined />}>上传排班表文件</Button>
|
||||
</Upload>
|
||||
);
|
||||
};
|
||||
|
||||
export default DutyTablePage;
|
||||
|
|
@ -1,61 +0,0 @@
|
|||
import { FC } from 'react';
|
||||
import { EllipsisOutlined } from '@ant-design/icons';
|
||||
import { ProList } from '@ant-design/pro-components';
|
||||
import { Progress, Tag } from 'antd';
|
||||
|
||||
const data = [
|
||||
'语雀的天空',
|
||||
'Ant Design',
|
||||
'蚂蚁金服体验科技',
|
||||
'TechUI',
|
||||
'TechUI 2.0',
|
||||
'Bigfish',
|
||||
'Umi',
|
||||
].map((item) => ({
|
||||
title: item,
|
||||
subTitle: <Tag color='#5BD8A6'>语雀专栏</Tag>,
|
||||
actions: [<EllipsisOutlined />],
|
||||
avatar:
|
||||
'https://gw.alipayobjects.com/zos/antfincdn/UCSiy1j6jx/xingzhuang.svg',
|
||||
content: (
|
||||
<div
|
||||
style={{
|
||||
flex: 1,
|
||||
display: 'flex',
|
||||
justifyContent: 'flex-end',
|
||||
}}
|
||||
>
|
||||
<div
|
||||
style={{
|
||||
width: 200,
|
||||
}}
|
||||
>
|
||||
<div>发布中</div>
|
||||
<Progress percent={80} />
|
||||
</div>
|
||||
</div>
|
||||
),
|
||||
}));
|
||||
|
||||
const LogsPage: FC = () => {
|
||||
return (
|
||||
<ProList<any>
|
||||
pagination={{
|
||||
defaultPageSize: 5,
|
||||
showSizeChanger: true,
|
||||
}}
|
||||
metas={{
|
||||
title: {},
|
||||
subTitle: {},
|
||||
type: {},
|
||||
avatar: {},
|
||||
content: {},
|
||||
actions: {},
|
||||
}}
|
||||
headerTitle='翻页'
|
||||
dataSource={data}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
export default LogsPage;
|
||||
|
|
@ -1,42 +1,15 @@
|
|||
import { Routes, Route } from 'react-router-dom';
|
||||
import Todo from './components/Todo';
|
||||
import DutyTablePage from './pages/duty/DutyTable';
|
||||
import LogsPage from './pages/logs/Logs';
|
||||
|
||||
export const routes = {
|
||||
main: '/',
|
||||
about: '/about',
|
||||
admin: {
|
||||
dutyTable: '/admin/dutytable',
|
||||
userControl: '/admin/usercontrol',
|
||||
dutyInfo: '/admin/dutyinfo',
|
||||
},
|
||||
duty: {
|
||||
conclusion: '/duty/conclusion',
|
||||
},
|
||||
logs: '/logs',
|
||||
};
|
||||
|
||||
export const routeName = new Map<string, string>([
|
||||
['admin', '主席团管理'],
|
||||
['about', '关于我们'],
|
||||
['duty', '值班组长'],
|
||||
['dutytable', '排班表'],
|
||||
['dutyinfo', '值班信息'],
|
||||
['conclusion', '值班总结'],
|
||||
['logs', '日志'],
|
||||
]);
|
||||
|
||||
export const AppRouter: React.FC = () => {
|
||||
return (
|
||||
<Routes>
|
||||
<Route path={routes.main} element={<Todo />} />
|
||||
<Route path={routes.admin.dutyTable} element={<DutyTablePage />} />
|
||||
<Route path={routes.admin.userControl} element={<Todo />} />
|
||||
<Route path={routes.admin.dutyInfo} element={<Todo />} />
|
||||
<Route path={routes.duty.conclusion} element={<Todo />} />
|
||||
<Route path={routes.about} element={<Todo />} />
|
||||
<Route path={routes.logs} element={<LogsPage />} />
|
||||
<Route path='/' element={<Todo />} />
|
||||
<Route path='/admin/hello1' element={<Todo />} />
|
||||
<Route path='/admin/hello2' element={<Todo />} />
|
||||
<Route path='/admin/hello3' element={<Todo />} />
|
||||
<Route path='/duty/hi1' element={<Todo />} />
|
||||
<Route path='/duty/hi2' element={<Todo />} />
|
||||
</Routes>
|
||||
);
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,10 +0,0 @@
|
|||
import { read as xlsxRead, utils as xlsxUtils } from 'xlsx';
|
||||
import { readFile } from './readfile';
|
||||
|
||||
export async function readExcelFile(file: File, sheetIndex: number) {
|
||||
let data = await readFile(file);
|
||||
let workbook = xlsxRead(data, { type: 'binary' });
|
||||
let worksheet = workbook.Sheets[workbook.SheetNames[sheetIndex]];
|
||||
data = xlsxUtils.sheet_to_json(worksheet);
|
||||
return data;
|
||||
}
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
export function readFile(file: File) {
|
||||
return new Promise((resolve) => {
|
||||
let reader = new FileReader();
|
||||
reader.readAsBinaryString(file);
|
||||
reader.onload = (ev) => {
|
||||
resolve(ev.target?.result);
|
||||
};
|
||||
});
|
||||
}
|
||||
Loading…
Reference in New Issue