Compare commits
13 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
166c8b6319 | |
|
|
fbaedaad0e | |
|
|
31a782daef | |
|
|
31e48dafc8 | |
|
|
31188c0bb0 | |
|
|
57c0fed976 | |
|
|
56174936d3 | |
|
|
24817aea50 | |
|
|
7316208b21 | |
|
|
fb8b0ddc6e | |
|
|
36bc6653e2 | |
|
|
3187c7be28 | |
|
|
7ee06b9901 |
42
README.md
42
README.md
|
|
@ -3,18 +3,58 @@
|
||||||
## 目标
|
## 目标
|
||||||
|
|
||||||
1. 微信小程序的信息管理页面
|
1. 微信小程序的信息管理页面
|
||||||
2. 人资部后台
|
2. 人资部后台(长期)
|
||||||
|
|
||||||
## 功能
|
## 功能
|
||||||
|
|
||||||
### 主席团管理页面
|
### 主席团管理页面
|
||||||
|
|
||||||
1. 值班表导入、更新
|
1. 值班表导入、更新
|
||||||
|
1. 值班表渲染
|
||||||
|
2. 值班表在线更改、上传后端
|
||||||
|
3. 值班表导出
|
||||||
2. 成员权限管理
|
2. 成员权限管理
|
||||||
|
1. 从 Auth 获取成员职位、部门
|
||||||
|
2. 主席团成员:可更改所有信息
|
||||||
|
3. 当班所有成员:可更改值班人数,可加入 Oreo,可更改状态
|
||||||
|
4. 所有成员:可认领
|
||||||
3. 特殊维修时间(如学园维修)、值班信息更新
|
3. 特殊维修时间(如学园维修)、值班信息更新
|
||||||
|
4. 日志
|
||||||
|
1. 记录每一次操作、操作者
|
||||||
|
5. 自动排班功能(Enhancement)
|
||||||
|
|
||||||
### 值班组长管理页面
|
### 值班组长管理页面
|
||||||
|
|
||||||
ps. 是微信小程序中小组管理页面的pc端替代
|
ps. 是微信小程序中小组管理页面的pc端替代
|
||||||
|
|
||||||
1. 值班组长上传本班相关信息
|
1. 值班组长上传本班相关信息
|
||||||
|
2. 值班组长上传值班总结(Enhancement)
|
||||||
|
|
||||||
|
## UI
|
||||||
|
|
||||||
|
### 仪表盘
|
||||||
|
|
||||||
|
1. 个人信息、职位
|
||||||
|
2. 新系统中(未加入Oreo/预填写工单总数)统计
|
||||||
|
|
||||||
|
### 主席团管理页面
|
||||||
|
|
||||||
|
#### 值班表管理
|
||||||
|
|
||||||
|
1. 值班表渲染
|
||||||
|
2. 值班表在线更改、上传后端
|
||||||
|
1. 特殊时间值班表不上传
|
||||||
|
3. 值班表导出
|
||||||
|
|
||||||
|
#### 特殊值班时间
|
||||||
|
|
||||||
|
1. (switch) 是否启用平常值班时间
|
||||||
|
2. 若不在平常值班时间,选择录入不值班原因/特殊值班时间
|
||||||
|
|
||||||
|
### 值班组长管理页面(暂空)
|
||||||
|
|
||||||
|
1. (Enhancement) 值班总结上传
|
||||||
|
|
||||||
|
### 日志(所有人可见)
|
||||||
|
|
||||||
|
1. 查询功能
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,242 @@
|
||||||
|
# 接口文档
|
||||||
|
|
||||||
|
## 基本格式
|
||||||
|
|
||||||
|
### 成功响应格式
|
||||||
|
|
||||||
|
```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}"
|
||||||
|
|
@ -0,0 +1,63 @@
|
||||||
|
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;
|
||||||
|
|
@ -0,0 +1,127 @@
|
||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,259 @@
|
||||||
|
{
|
||||||
|
"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,6 +8,8 @@
|
||||||
"name": "notify-admin",
|
"name": "notify-admin",
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@ant-design/icons": "^5.3.1",
|
||||||
|
"@ant-design/pro-components": "^2.6.52",
|
||||||
"@types/node": "^16.18.88",
|
"@types/node": "^16.18.88",
|
||||||
"@types/react": "^18.2.65",
|
"@types/react": "^18.2.65",
|
||||||
"@types/react-dom": "^18.2.21",
|
"@types/react-dom": "^18.2.21",
|
||||||
|
|
@ -16,7 +18,8 @@
|
||||||
"react-dom": "^18.2.0",
|
"react-dom": "^18.2.0",
|
||||||
"react-router-dom": "^6.22.3",
|
"react-router-dom": "^6.22.3",
|
||||||
"react-scripts": "5.0.1",
|
"react-scripts": "5.0.1",
|
||||||
"typescript": "^4.9.5"
|
"typescript": "^4.9.5",
|
||||||
|
"xlsx": "^0.18.5"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"eslint-plugin-prettier": "^5.1.3",
|
"eslint-plugin-prettier": "^5.1.3",
|
||||||
|
|
@ -108,6 +111,286 @@
|
||||||
"resolved": "https://registry.npmmirror.com/@ant-design/icons-svg/-/icons-svg-4.4.2.tgz",
|
"resolved": "https://registry.npmmirror.com/@ant-design/icons-svg/-/icons-svg-4.4.2.tgz",
|
||||||
"integrity": "sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA=="
|
"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": {
|
"node_modules/@ant-design/react-slick": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmmirror.com/@ant-design/react-slick/-/react-slick-1.0.2.tgz",
|
"resolved": "https://registry.npmmirror.com/@ant-design/react-slick/-/react-slick-1.0.2.tgz",
|
||||||
|
|
@ -2079,6 +2362,18 @@
|
||||||
"resolved": "https://registry.npmmirror.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
|
"resolved": "https://registry.npmmirror.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
|
||||||
"integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw=="
|
"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": {
|
"node_modules/@csstools/css-parser-algorithms": {
|
||||||
"version": "2.6.0",
|
"version": "2.6.0",
|
||||||
"resolved": "https://registry.npmmirror.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.6.0.tgz",
|
"resolved": "https://registry.npmmirror.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.6.0.tgz",
|
||||||
|
|
@ -2335,6 +2630,68 @@
|
||||||
"node": ">=10"
|
"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": {
|
"node_modules/@emotion/unitless": {
|
||||||
"version": "0.7.5",
|
"version": "0.7.5",
|
||||||
"resolved": "https://registry.npmmirror.com/@emotion/unitless/-/unitless-0.7.5.tgz",
|
"resolved": "https://registry.npmmirror.com/@emotion/unitless/-/unitless-0.7.5.tgz",
|
||||||
|
|
@ -4246,6 +4603,19 @@
|
||||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
"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": {
|
"node_modules/@ungap/structured-clone": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmmirror.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
|
"resolved": "https://registry.npmmirror.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
|
||||||
|
|
@ -4465,6 +4835,14 @@
|
||||||
"node": ">=0.4.0"
|
"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": {
|
"node_modules/address": {
|
||||||
"version": "1.2.2",
|
"version": "1.2.2",
|
||||||
"resolved": "https://registry.npmmirror.com/address/-/address-1.2.2.tgz",
|
"resolved": "https://registry.npmmirror.com/address/-/address-1.2.2.tgz",
|
||||||
|
|
@ -4485,6 +4863,14 @@
|
||||||
"node": ">=8.9"
|
"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": {
|
"node_modules/agent-base": {
|
||||||
"version": "6.0.2",
|
"version": "6.0.2",
|
||||||
"resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz",
|
"resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz",
|
||||||
|
|
@ -5516,6 +5902,18 @@
|
||||||
"node": ">=4"
|
"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": {
|
"node_modules/chalk": {
|
||||||
"version": "2.4.2",
|
"version": "2.4.2",
|
||||||
"resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz",
|
"resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz",
|
||||||
|
|
@ -5715,6 +6113,11 @@
|
||||||
"node": ">=12"
|
"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": {
|
"node_modules/cliui": {
|
||||||
"version": "7.0.4",
|
"version": "7.0.4",
|
||||||
"resolved": "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz",
|
"resolved": "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz",
|
||||||
|
|
@ -5747,6 +6150,14 @@
|
||||||
"node": ">= 4.0"
|
"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": {
|
"node_modules/collect-v8-coverage": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmmirror.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz",
|
"resolved": "https://registry.npmmirror.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz",
|
||||||
|
|
@ -5961,6 +6372,17 @@
|
||||||
"node": ">=10"
|
"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": {
|
"node_modules/cross-spawn": {
|
||||||
"version": "7.0.3",
|
"version": "7.0.3",
|
||||||
"resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz",
|
"resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz",
|
||||||
|
|
@ -8162,6 +8584,14 @@
|
||||||
"node": ">= 0.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": {
|
"node_modules/fraction.js": {
|
||||||
"version": "4.3.7",
|
"version": "4.3.7",
|
||||||
"resolved": "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.3.7.tgz",
|
"resolved": "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.3.7.tgz",
|
||||||
|
|
@ -11838,6 +12268,11 @@
|
||||||
"resolved": "https://registry.npmmirror.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
|
"resolved": "https://registry.npmmirror.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
|
||||||
"integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA=="
|
"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": {
|
"node_modules/lodash.truncate": {
|
||||||
"version": "4.4.2",
|
"version": "4.4.2",
|
||||||
"resolved": "https://registry.npmmirror.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
|
"resolved": "https://registry.npmmirror.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
|
||||||
|
|
@ -12507,6 +12942,11 @@
|
||||||
"resolved": "https://registry.npmmirror.com/obuf/-/obuf-1.1.2.tgz",
|
"resolved": "https://registry.npmmirror.com/obuf/-/obuf-1.1.2.tgz",
|
||||||
"integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg=="
|
"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": {
|
"node_modules/on-finished": {
|
||||||
"version": "2.4.1",
|
"version": "2.4.1",
|
||||||
"resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz",
|
"resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz",
|
||||||
|
|
@ -14982,6 +15422,11 @@
|
||||||
"resolved": "https://registry.npmmirror.com/react-is/-/react-is-17.0.2.tgz",
|
"resolved": "https://registry.npmmirror.com/react-is/-/react-is-17.0.2.tgz",
|
||||||
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
|
"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": {
|
"node_modules/react-refresh": {
|
||||||
"version": "0.11.0",
|
"version": "0.11.0",
|
||||||
"resolved": "https://registry.npmmirror.com/react-refresh/-/react-refresh-0.11.0.tgz",
|
"resolved": "https://registry.npmmirror.com/react-refresh/-/react-refresh-0.11.0.tgz",
|
||||||
|
|
@ -15092,6 +15537,14 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"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": {
|
"node_modules/read-cache": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/read-cache/-/read-cache-1.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/read-cache/-/read-cache-1.0.0.tgz",
|
||||||
|
|
@ -15534,6 +15987,14 @@
|
||||||
"node": ">= 0.4"
|
"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": {
|
"node_modules/safer-buffer": {
|
||||||
"version": "2.1.2",
|
"version": "2.1.2",
|
||||||
"resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
"resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
||||||
|
|
@ -15860,6 +16321,11 @@
|
||||||
"resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz",
|
"resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz",
|
||||||
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
|
"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": {
|
"node_modules/shebang-command": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz",
|
||||||
|
|
@ -16063,6 +16529,17 @@
|
||||||
"resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz",
|
"resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz",
|
||||||
"integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
|
"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": {
|
"node_modules/stable": {
|
||||||
"version": "0.1.8",
|
"version": "0.1.8",
|
||||||
"resolved": "https://registry.npmmirror.com/stable/-/stable-0.1.8.tgz",
|
"resolved": "https://registry.npmmirror.com/stable/-/stable-0.1.8.tgz",
|
||||||
|
|
@ -16854,6 +17331,18 @@
|
||||||
"boolbase": "~1.0.0"
|
"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": {
|
"node_modules/symbol-tree": {
|
||||||
"version": "3.2.4",
|
"version": "3.2.4",
|
||||||
"resolved": "https://registry.npmmirror.com/symbol-tree/-/symbol-tree-3.2.4.tgz",
|
"resolved": "https://registry.npmmirror.com/symbol-tree/-/symbol-tree-3.2.4.tgz",
|
||||||
|
|
@ -17098,6 +17587,11 @@
|
||||||
"resolved": "https://registry.npmmirror.com/thunky/-/thunky-1.1.0.tgz",
|
"resolved": "https://registry.npmmirror.com/thunky/-/thunky-1.1.0.tgz",
|
||||||
"integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA=="
|
"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": {
|
"node_modules/tmpl": {
|
||||||
"version": "1.0.5",
|
"version": "1.0.5",
|
||||||
"resolved": "https://registry.npmmirror.com/tmpl/-/tmpl-1.0.5.tgz",
|
"resolved": "https://registry.npmmirror.com/tmpl/-/tmpl-1.0.5.tgz",
|
||||||
|
|
@ -17476,6 +17970,14 @@
|
||||||
"requires-port": "^1.0.0"
|
"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": {
|
"node_modules/util-deprecate": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
"resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||||
|
|
@ -17567,6 +18069,14 @@
|
||||||
"makeerror": "1.0.12"
|
"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": {
|
"node_modules/watchpack": {
|
||||||
"version": "2.4.0",
|
"version": "2.4.0",
|
||||||
"resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.0.tgz",
|
"resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.0.tgz",
|
||||||
|
|
@ -18014,6 +18524,22 @@
|
||||||
"node": ">= 0.4"
|
"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": {
|
"node_modules/word-wrap": {
|
||||||
"version": "1.2.5",
|
"version": "1.2.5",
|
||||||
"resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz",
|
"resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz",
|
||||||
|
|
@ -18431,6 +18957,26 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"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": {
|
"node_modules/xml-name-validator": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,8 @@
|
||||||
"name": "EVA Tech"
|
"name": "EVA Tech"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@ant-design/icons": "^5.3.1",
|
||||||
|
"@ant-design/pro-components": "^2.6.52",
|
||||||
"@types/node": "^16.18.88",
|
"@types/node": "^16.18.88",
|
||||||
"@types/react": "^18.2.65",
|
"@types/react": "^18.2.65",
|
||||||
"@types/react-dom": "^18.2.21",
|
"@types/react-dom": "^18.2.21",
|
||||||
|
|
@ -14,7 +16,8 @@
|
||||||
"react-dom": "^18.2.0",
|
"react-dom": "^18.2.0",
|
||||||
"react-router-dom": "^6.22.3",
|
"react-router-dom": "^6.22.3",
|
||||||
"react-scripts": "5.0.1",
|
"react-scripts": "5.0.1",
|
||||||
"typescript": "^4.9.5"
|
"typescript": "^4.9.5",
|
||||||
|
"xlsx": "^0.18.5"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "react-scripts start",
|
"start": "react-scripts start",
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
|
<link rel="icon" href="%PUBLIC_URL%/logo.png" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<meta name="theme-color" content="#000000" />
|
<meta name="theme-color" content="#000000" />
|
||||||
<meta
|
<meta
|
||||||
|
|
@ -15,7 +15,7 @@
|
||||||
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
|
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
|
||||||
-->
|
-->
|
||||||
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
|
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
|
||||||
<title>EVA-Notify Admin Page</title>
|
<title>EVA Tea</title>
|
||||||
</head>
|
</head>
|
||||||
<body style="margin: 0;">
|
<body style="margin: 0;">
|
||||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||||
|
|
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 50 KiB |
36
src/App.tsx
36
src/App.tsx
|
|
@ -1,14 +1,16 @@
|
||||||
import { useState, FC } from 'react';
|
import { FC } from 'react';
|
||||||
import { useLocation, useNavigate } from 'react-router-dom';
|
import { useLocation, useNavigate } from 'react-router-dom';
|
||||||
import {
|
import {
|
||||||
TeamOutlined,
|
TeamOutlined,
|
||||||
UserOutlined,
|
|
||||||
DesktopOutlined,
|
|
||||||
HomeOutlined,
|
HomeOutlined,
|
||||||
|
SmileOutlined,
|
||||||
|
CrownOutlined,
|
||||||
|
ClockCircleOutlined,
|
||||||
|
ThunderboltOutlined,
|
||||||
} from '@ant-design/icons';
|
} from '@ant-design/icons';
|
||||||
import type { MenuProps } from 'antd';
|
import type { MenuProps } from 'antd';
|
||||||
import { Breadcrumb, Layout, Menu, theme } from 'antd';
|
import { Breadcrumb, Layout, Menu, theme } from 'antd';
|
||||||
import { AppRouter } from './router';
|
import { AppRouter, routes, routeName } from './router';
|
||||||
import PageFooter from './components/PageFooter';
|
import PageFooter from './components/PageFooter';
|
||||||
|
|
||||||
const { Content, Sider } = Layout;
|
const { Content, Sider } = Layout;
|
||||||
|
|
@ -62,17 +64,16 @@ function defSubMenu(
|
||||||
}
|
}
|
||||||
|
|
||||||
const items: MenuItem[] = [
|
const items: MenuItem[] = [
|
||||||
defMenu('主页', 'mainpage', <DesktopOutlined />, '/'),
|
defMenu('主页', 'mainpage', <SmileOutlined />, routes.main),
|
||||||
defRootMenu('展示信息管理', 'sub1', <UserOutlined />, [
|
defRootMenu('主席团管理', 'admin', <CrownOutlined />, [
|
||||||
defSubMenu('选项1', '1', '/admin/hello1'),
|
defSubMenu('排班表管理', 'dutytable', routes.admin.dutyTable),
|
||||||
defSubMenu('选项2', '2', '/admin/hello2'),
|
defSubMenu('值班信息管理', 'dutyinfo', routes.admin.dutyInfo),
|
||||||
defSubMenu('选项3', '3', '/admin/hello3'),
|
|
||||||
]),
|
]),
|
||||||
defRootMenu('值班组长', 'sub2', <TeamOutlined />, [
|
defRootMenu('值班组长', 'leader', <TeamOutlined />, [
|
||||||
defSubMenu('选项1', '4', '/duty/hi1'),
|
defSubMenu('值班总结', 'conclusion', routes.duty.conclusion),
|
||||||
defSubMenu('选项2', '5', '/duty/hi2'),
|
|
||||||
]),
|
]),
|
||||||
defMenu('关于我们', 'aboutpage', <UserOutlined />, '/about'),
|
defMenu('日志', 'logspage', <ClockCircleOutlined />, routes.logs),
|
||||||
|
defMenu('关于我们', 'aboutpage', <ThunderboltOutlined />, routes.about),
|
||||||
];
|
];
|
||||||
|
|
||||||
interface BreadcrumbItem {
|
interface BreadcrumbItem {
|
||||||
|
|
@ -81,7 +82,6 @@ interface BreadcrumbItem {
|
||||||
}
|
}
|
||||||
|
|
||||||
const AppLayout: FC<{ router: JSX.Element }> = (props) => {
|
const AppLayout: FC<{ router: JSX.Element }> = (props) => {
|
||||||
const [collapsed, setCollapsed] = useState(false);
|
|
||||||
const { colorBgContainer, borderRadiusLG } = theme.getDesignToken();
|
const { colorBgContainer, borderRadiusLG } = theme.getDesignToken();
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
|
||||||
|
|
@ -97,17 +97,13 @@ const AppLayout: FC<{ router: JSX.Element }> = (props) => {
|
||||||
for (var i = 1; i < pathArray.length; i++) {
|
for (var i = 1; i < pathArray.length; i++) {
|
||||||
currentRouteItems.push({
|
currentRouteItems.push({
|
||||||
href: '',
|
href: '',
|
||||||
title: <span>{pathArray[i]}</span>,
|
title: <span>{routeName.get(pathArray[i])}</span>,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Layout style={{ minHeight: '100vh' }}>
|
<Layout style={{ minHeight: '100vh' }}>
|
||||||
<Sider
|
<Sider>
|
||||||
collapsible
|
|
||||||
collapsed={collapsed}
|
|
||||||
onCollapse={(value) => setCollapsed(value)}
|
|
||||||
>
|
|
||||||
<div className='demo-logo-vertical' />
|
<div className='demo-logo-vertical' />
|
||||||
<Menu
|
<Menu
|
||||||
theme='dark'
|
theme='dark'
|
||||||
|
|
|
||||||
|
|
@ -12,9 +12,12 @@ const PageFooter: React.FC = () => {
|
||||||
yearStr = startYear.toString() + ' - ' + curYear.toString();
|
yearStr = startYear.toString() + ' - ' + curYear.toString();
|
||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
<Footer style={{ textAlign: 'center' }}>
|
<div>
|
||||||
EVA-Notify Admin Page © {yearStr} EVA Tech
|
<Footer style={{ textAlign: 'center', color: '#808080' }}>
|
||||||
|
EVA Tea <br /> <br />
|
||||||
|
© {yearStr} EVA Tech
|
||||||
</Footer>
|
</Footer>
|
||||||
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
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;
|
||||||
|
|
@ -0,0 +1,61 @@
|
||||||
|
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,15 +1,42 @@
|
||||||
import { Routes, Route } from 'react-router-dom';
|
import { Routes, Route } from 'react-router-dom';
|
||||||
import Todo from './components/Todo';
|
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 = () => {
|
export const AppRouter: React.FC = () => {
|
||||||
return (
|
return (
|
||||||
<Routes>
|
<Routes>
|
||||||
<Route path='/' element={<Todo />} />
|
<Route path={routes.main} element={<Todo />} />
|
||||||
<Route path='/admin/hello1' element={<Todo />} />
|
<Route path={routes.admin.dutyTable} element={<DutyTablePage />} />
|
||||||
<Route path='/admin/hello2' element={<Todo />} />
|
<Route path={routes.admin.userControl} element={<Todo />} />
|
||||||
<Route path='/admin/hello3' element={<Todo />} />
|
<Route path={routes.admin.dutyInfo} element={<Todo />} />
|
||||||
<Route path='/duty/hi1' element={<Todo />} />
|
<Route path={routes.duty.conclusion} element={<Todo />} />
|
||||||
<Route path='/duty/hi2' element={<Todo />} />
|
<Route path={routes.about} element={<Todo />} />
|
||||||
|
<Route path={routes.logs} element={<LogsPage />} />
|
||||||
</Routes>
|
</Routes>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
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