所有需求实现完成

This commit is contained in:
Your Name
2026-02-01 15:57:42 +08:00
parent e651b92d7c
commit 6e1174a59a
16 changed files with 2354 additions and 173 deletions
+181 -10
View File
@@ -53,12 +53,177 @@
---
## 3. 项目列表
## 2.2 用户管理(仅管理员)
以下接口仅**管理员**角色可调用,用于查看、创建、修改、删除其他用户。非管理员返回 HTTP 403。
### 2.2.0 用户列表
| 项目 | 说明 |
|------|------|
| **接口** | `POST /api/users/list` |
| **说明** | 分页获取用户列表(不含密码) |
| **权限** | 已登录,且角色为管理员 |
#### 请求参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| page | number | 否 | 页码,从 1 开始,默认 1 |
| pageSize | number | 否 | 每页条数,默认 100 |
#### 响应参数(成功,HTTP 200
| 参数名 | 类型 | 说明 |
|--------|------|------|
| list | array | 用户列表 |
| list[].id | string | 用户 ID |
| list[].username | string | 账号 |
| list[].role | string | 角色 |
| list[].displayName | string | 显示名称 |
| list[].createdAt | string | 创建时间,ISO8601 |
| list[].updatedAt | string | 更新时间,ISO8601 |
| total | number | 总条数 |
| page | number | 当前页码 |
| pageSize | number | 每页条数 |
---
### 2.2.1 创建用户
| 项目 | 说明 |
|------|------|
| **接口** | `POST /api/users/create` |
| **说明** | 创建新用户 |
| **权限** | 已登录,且角色为管理员 |
#### 请求参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| username | string | 是 | 账号(唯一) |
| password | string | 是 | 密码 |
| role | string | 是 | 角色:管理员、市场部、工程部、技经部、财务部、物贸部 |
| displayName | string | 否 | 显示名称,默认同 username |
#### 响应参数(成功,HTTP 201
| 参数名 | 类型 | 说明 |
|--------|------|------|
| id | string | 新用户 ID |
| message | string | 固定为「创建成功」 |
#### 响应参数(失败)
| HTTP 状态 | 说明 |
|-----------|------|
| 400 | 账号/密码为空、角色无效、账号已存在 |
| 403 | 非管理员 |
---
### 2.2.2 更新用户
| 项目 | 说明 |
|------|------|
| **接口** | `POST /api/users/update` |
| **说明** | 修改指定用户(仅更新传入的字段) |
| **权限** | 已登录,且角色为管理员 |
#### 请求参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| id | string | 是 | 用户 ID |
| password | string | 否 | 新密码,不传则不修改 |
| role | string | 否 | 新角色 |
| displayName | string | 否 | 新显示名称 |
#### 响应参数(成功,HTTP 200
| 参数名 | 类型 | 说明 |
|--------|------|------|
| id | string | 用户 ID |
| message | string | 固定为「保存成功」 |
#### 响应参数(失败)
| HTTP 状态 | 说明 |
|-----------|------|
| 400 | 角色无效等 |
| 403 | 非管理员 |
| 404 | 用户不存在 |
---
### 2.2.3 删除用户
| 项目 | 说明 |
|------|------|
| **接口** | `POST /api/users/delete` |
| **说明** | 删除指定用户。不能删除当前登录用户。 |
| **权限** | 已登录,且角色为管理员 |
#### 请求参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| id | string | 是 | 用户 ID |
#### 响应参数(成功,HTTP 200
| 参数名 | 类型 | 说明 |
|--------|------|------|
| message | string | 固定为「删除成功」 |
#### 响应参数(失败)
| HTTP 状态 | 说明 |
|-----------|------|
| 400 | 不能删除当前登录用户 |
| 403 | 非管理员 |
| 404 | 用户不存在 |
---
## 3. 项目统计
| 项目 | 说明 |
|------|------|
| **接口** | `POST /api/projects/statistics` |
| **说明** | 获取项目统计信息。传入 statisticsType=全部 返回各类型数量(byType);传入具体类型返回该类型项目列表 |
| **权限** | 已登录,所有角色可访问 |
#### 请求参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| statisticsType | string | 否 | 全部(默认)返回各类型数量;基建工程、业扩项目、户表、客户工程、营销项目、检修-技改-抢修、其他 返回该类型项目列表 |
#### 响应参数(statisticsType=全部)
| 参数名 | 类型 | 说明 |
|--------|------|------|
| total | number | 项目总数 |
| statisticsType | string | 固定为「全部」 |
| byType | object | 各统计类型数量,如 { "基建工程": 10, "业扩项目": 5, "其他": 3 } |
#### 响应参数(statisticsType 为具体类型)
| 参数名 | 类型 | 说明 |
|--------|------|------|
| total | number | 该类型项目数 |
| statisticsType | string | 请求的统计类型 |
| list | array | 该类型项目列表,结构同项目列表 list[].* |
---
## 4. 项目列表
| 项目 | 说明 |
|------|------|
| **接口** | `POST /api/projects/list` |
| **说明** | 分页获取项目列表,支持按名称/合同编号搜索、按进度/费用/合同金额筛选、时间筛选、日期异常筛选 |
| **说明** | 分页获取项目列表,支持按名称/合同编号搜索、按进度/费用/合同金额/统计类型筛选、时间筛选、日期异常筛选 |
| **权限** | 已登录,所有角色可访问 |
#### 请求参数
@@ -77,6 +242,7 @@
| dateAbnormal | boolean | 否 | 为 true 时只返回「日期异常」项目(四个日期中任意一个非「日期正常」) |
| amountMin | number | 否 | 合同金额(万元)下限,按中标合同金额筛选 |
| amountMax | number | 否 | 合同金额(万元)上限,按中标合同金额筛选 |
| statisticsType | string | 否 | 统计类型筛选:全部、基建工程、业扩项目、户表、客户工程、营销项目、检修-技改-抢修、其他 |
#### 响应参数(成功,HTTP 200
@@ -84,6 +250,7 @@
|--------|------|------|
| list | array | 项目列表,无数据时为空数组 |
| list[].id | string | 项目 ID |
| list[].statisticsType | string | 统计类型 |
| list[].projectName | string | 项目名称 |
| list[].contractCode | string | 合同编号 |
| list[].progress | string | 项目进度 |
@@ -101,7 +268,7 @@
---
## 4. 项目详情
## 5. 项目详情
| 项目 | 说明 |
|------|------|
@@ -137,7 +304,7 @@
---
## 5. 新建项目
## 6. 新建项目
| 项目 | 说明 |
|------|------|
@@ -183,7 +350,7 @@
---
## 6. 更新项目
## 7. 更新项目
| 项目 | 说明 |
|------|------|
@@ -218,7 +385,7 @@
---
## 7. 操作日志
## 8. 操作日志
| 项目 | 说明 |
|------|------|
@@ -258,7 +425,7 @@
---
## 8. 项目信息字段(5 个分类)
## 9. 项目信息字段(5 个分类)
以下为各分类在 **请求/响应** 中使用的字段定义;单位、是否必填、校验规则由后端统一规定,前端与后端对齐。
@@ -349,7 +516,7 @@
---
## 9. 项目列表/筛选枚举
## 10. 项目列表/筛选枚举
以下由后端定义并提供给前端(如通过配置接口或文档约定):
@@ -360,7 +527,7 @@
---
## 10. 统一错误响应
## 11. 统一错误响应
| HTTP 状态 | 说明 |
|-----------|------|
@@ -394,11 +561,15 @@
---
## 11. 接口一览
## 12. 接口一览
| 接口 | 方法 | 说明 | 权限 |
|------|------|------|------|
| /api/auth/login | POST | 登录 | 公开 |
| /api/users/list | POST | 用户列表(分页) | 已登录且管理员 |
| /api/users/create | POST | 创建用户 | 已登录且管理员 |
| /api/users/update | POST | 更新用户 | 已登录且管理员 |
| /api/users/delete | POST | 删除用户 | 已登录且管理员 |
| /api/projects/list | POST | 项目列表(搜索、筛选、分页) | 已登录 |
| /api/projects/detail | POST | 项目详情 | 已登录 |
| /api/projects/create | POST | 新建项目 | 已登录且市场部 |