388 lines
6.9 KiB
Markdown
388 lines
6.9 KiB
Markdown
# 接口文档
|
||
|
||
## 基本格式
|
||
|
||
### 成功响应格式
|
||
|
||
```json
|
||
{
|
||
"success": true,
|
||
"data": {
|
||
"foo": "bar"
|
||
}
|
||
}
|
||
```
|
||
|
||
**NOTE:** 若无特殊说明,`POST`请求的响应`data`字段为空(`{}`),可以不用管。
|
||
|
||
### 失败响应格式
|
||
|
||
```json
|
||
{
|
||
"success": false,
|
||
"err": "some error"
|
||
}
|
||
```
|
||
|
||
### `GET`请求默认格式(若无特殊说明)
|
||
|
||
```json
|
||
{
|
||
"token": "token_test"
|
||
}
|
||
```
|
||
|
||
## 主页面
|
||
|
||
### 统计数据 `GET /stats`
|
||
|
||
data:
|
||
|
||
```json
|
||
{
|
||
"success": true,
|
||
"data": {
|
||
"todayPT": 114, // 今日预填写工单总数
|
||
"totalPT": 514, // 所有预填写工单
|
||
"oreo": 93, // 加入 Oreo 工单数
|
||
"report": 8, // 今日反馈数
|
||
"allSuccess": 1919, // 所有成功工单(包括 Oreo 内)
|
||
"all": 2024 // 所有工单(包括 Oreo 内)
|
||
}
|
||
}
|
||
```
|
||
|
||
## 主席团页面
|
||
|
||
### 值班信息管理
|
||
|
||
#### 当前值班信息 `GET /admin/duty/current`
|
||
|
||
##### 正常值班
|
||
|
||
data:
|
||
|
||
```json
|
||
{
|
||
"isNormalDuty": true, // 判断是否是正常值班时间
|
||
"currentDuty": "1", // 判断是否正在值班 / 值哪一班 "1" | "2" | "3" => 正在值班,"off" => 值班下班
|
||
"inDutyCnt": 3,
|
||
"otherDutyTime": [], // 正常值班时为空
|
||
"offDutyReason": "",
|
||
"place": "204",
|
||
"dutyRecoverTime": ""
|
||
}
|
||
```
|
||
|
||
##### 其他值班
|
||
|
||
data:
|
||
|
||
```json
|
||
{
|
||
"isNormalDuty": false, // 判断是否是正常值班时间
|
||
"currentDuty": "others", // 判断是否正在值班 / 值哪一班 "others" => 正在值班,"off" => 值班下班
|
||
"inDutyCnt": 3,
|
||
"otherDutyTime": [
|
||
{
|
||
"name": "第一班",
|
||
"range": ["2024-03-07T19:52:48.523303", "2024-03-07T19:52:48.523303"]
|
||
},
|
||
{
|
||
"name": "第二班",
|
||
"range": ["2024-03-07T19:52:48.523303", "2024-03-07T19:52:48.523303"]
|
||
},
|
||
...
|
||
],
|
||
"offDutyReason": "",
|
||
"place": "204",
|
||
"dutyRecoverTime": ""
|
||
}
|
||
```
|
||
|
||
#### 更新当前值班情况 `POST /admin/duty/update`
|
||
|
||
无关项返回空字符串,后端手动校验
|
||
|
||
request:
|
||
|
||
```json
|
||
{
|
||
"isNormalDuty": 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/reportlist`
|
||
|
||
request:
|
||
|
||
```json
|
||
{
|
||
"current": 1,
|
||
"pageSize": 10,
|
||
"name?": "西西弗", // 如果不筛选则不出现在 request-body 内
|
||
"phone?": "18888888888" // 如果不筛选则不出现在 request-body 内
|
||
}
|
||
```
|
||
|
||
data:
|
||
|
||
```json
|
||
{
|
||
"page": 1,
|
||
"total": 24,
|
||
"success": true,
|
||
"data": [
|
||
{
|
||
"name": "晓洋",
|
||
"phone": "13333333333",
|
||
"time": "2024-03-07T17:52:48.523303",
|
||
"text": "你们为什么修不好天选3的PD充电?"
|
||
}
|
||
// ...
|
||
]
|
||
}
|
||
```
|
||
|
||
### 日志页面
|
||
|
||
#### 获取日志列表 `GET /admin/loglist`
|
||
|
||
request:
|
||
|
||
```json
|
||
{
|
||
"current": 1,
|
||
"pageSize": 10,
|
||
"op?": "晓洋", // 如果不筛选则不出现在 request-body 内
|
||
"operation": "all" | "add" | "delete" | "change", // all 之外的选项用于筛选
|
||
"target": "all" | "dutyTable" | "dutyInfo" | "conclusion" // all 之外的选项用于筛选
|
||
}
|
||
```
|
||
|
||
data:
|
||
|
||
```json
|
||
{
|
||
"page": 1,
|
||
"total": 24,
|
||
"success": true,
|
||
"data": [
|
||
{
|
||
"op": "宇航员",
|
||
"avatar": "https://...",
|
||
"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}"
|
||
|
||
### 值班总结管理页面
|
||
|
||
#### 获取值班总结列表 `GET /admin/conclusionlist`
|
||
|
||
request:
|
||
|
||
```json
|
||
{
|
||
"current": 1,
|
||
"pageSize": 10,
|
||
"op?": "晓洋", // 如果不筛选则不出现在 request-body 内
|
||
"week": "all" | "mon" | "tue" | "wed" | "thu" | "fri" | "sat" | "sun", // all 之外的选项用于筛选
|
||
"shift": "all" | "first" | "second" | "third" // all 之外的选项用于筛选
|
||
}
|
||
```
|
||
|
||
data:
|
||
|
||
```json
|
||
{
|
||
"page": 1,
|
||
"total": 24,
|
||
"success": true,
|
||
"data": [
|
||
{
|
||
"op": "宇航员",
|
||
"avatar": "https://...",
|
||
"time": "2024-03-07T19:52:48.523303",
|
||
"week": "2",
|
||
"shift": "3",
|
||
"detail": "收到电脑 n 台,维修成功 m 台,已取回 x 台,有 y 台正在维修交接给下一班"
|
||
}
|
||
// ...
|
||
]
|
||
}
|
||
```
|
||
|
||
### 请假管理页面
|
||
|
||
#### 获取请假列表 `GET /leader/askleavelist`
|
||
|
||
request:
|
||
|
||
```json
|
||
{
|
||
"current": 1,
|
||
"pageSize": 10,
|
||
"member?": "晓洋", // 如果不筛选则不出现在 request-body 内
|
||
"week": "all" | "mon" | "tue" | "wed" | "thu" | "fri" | "sat" | "sun", // all 之外的选项用于筛选
|
||
"shift": "all" | "first" | "second" | "third" // all 之外的选项用于筛选
|
||
}
|
||
```
|
||
|
||
data:
|
||
|
||
```json
|
||
{
|
||
"page": 1,
|
||
"total": 24,
|
||
"success": true,
|
||
"data": [
|
||
{
|
||
"member": "宇航员",
|
||
"avatar": "https://...",
|
||
"time": "2024-03-07T19:52:48.523303",
|
||
"week": "2",
|
||
"shift": "3",
|
||
"reason": "家庭原因",
|
||
"substitute": "晓洋" // 未找人代班则为空
|
||
}
|
||
// ...
|
||
]
|
||
}
|
||
```
|