v0.3.5.2 前端页面重构
parent
6fc4d263f4
commit
b72f68f4b5
961
doc/api.md
961
doc/api.md
|
|
@ -1,961 +0,0 @@
|
||||||
# SAMS系统接口文档
|
|
||||||
|
|
||||||
## 1. 认证接口 (AuthController)
|
|
||||||
|
|
||||||
### 1.1 用户登录
|
|
||||||
- **接口路径**: `/login`
|
|
||||||
- **请求方式**: POST
|
|
||||||
- **请求参数**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"username": "string", // 用户名/学号/邮箱
|
|
||||||
"password": "string" // 密码
|
|
||||||
}
|
|
||||||
```
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "登录成功",
|
|
||||||
"data": "JWT令牌"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## 2. 系统管理接口 (sys)
|
|
||||||
|
|
||||||
### 2.1 用户管理 (UserController)
|
|
||||||
- **接口路径**: `/api/user`
|
|
||||||
- **功能**: 普通用户管理相关接口
|
|
||||||
|
|
||||||
#### 2.1.1 修改密码
|
|
||||||
- **接口路径**: `/api/user/change-password`
|
|
||||||
- **请求方式**: PUT
|
|
||||||
- **请求参数**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"userId": "number", // 用户ID
|
|
||||||
"oldPassword": "string", // 旧密码
|
|
||||||
"newPassword": "string" // 新密码
|
|
||||||
}
|
|
||||||
```
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "密码修改成功",
|
|
||||||
"data": null
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 2.1.2 更新个人信息
|
|
||||||
- **接口路径**: `/api/user/profile`
|
|
||||||
- **请求方式**: PUT
|
|
||||||
- **请求参数**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"userId": "number", // 用户ID
|
|
||||||
"nickname": "string", // 昵称
|
|
||||||
"email": "string", // 邮箱
|
|
||||||
"avatar": "string" // 头像URL
|
|
||||||
}
|
|
||||||
```
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "个人信息更新成功",
|
|
||||||
"data": null
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 2.1.3 获取用户详情
|
|
||||||
- **接口路径**: `/api/user/{userId}`
|
|
||||||
- **请求方式**: GET
|
|
||||||
- **路径参数**:
|
|
||||||
- userId: 用户ID
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "success",
|
|
||||||
"data": {
|
|
||||||
"userId": "number",
|
|
||||||
"username": "string",
|
|
||||||
"nickname": "string",
|
|
||||||
"email": "string",
|
|
||||||
"avatar": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 2.1.4 上传头像
|
|
||||||
- **接口路径**: `/api/user/avatar`
|
|
||||||
- **请求方式**: POST
|
|
||||||
- **请求参数**:
|
|
||||||
- file: 头像文件(MultipartFile)
|
|
||||||
- **响应结果**: 返回上传后的头像URL字符串
|
|
||||||
|
|
||||||
### 2.2 管理员用户管理 (AdminUserController)
|
|
||||||
- **接口路径**: `/api/admin/user`
|
|
||||||
- **功能**: 管理员用户管理相关接口
|
|
||||||
|
|
||||||
#### 2.2.1 批量导入用户
|
|
||||||
- **接口路径**: `/api/admin/user/import`
|
|
||||||
- **请求方式**: POST
|
|
||||||
- **请求参数**:
|
|
||||||
```json
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"username": "string",
|
|
||||||
"password": "string",
|
|
||||||
"email": "string",
|
|
||||||
"role": "string"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
```
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "用户导入成功",
|
|
||||||
"data": null
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 2.2.2 查询用户列表
|
|
||||||
- **接口路径**: `/api/admin/user/list`
|
|
||||||
- **请求方式**: GET
|
|
||||||
- **请求参数**:
|
|
||||||
- keyword: 关键字(可选,用于搜索用户名、学号、邮箱)
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "success",
|
|
||||||
"data": [
|
|
||||||
{
|
|
||||||
"userId": "number",
|
|
||||||
"username": "string",
|
|
||||||
"email": "string",
|
|
||||||
"role": "string",
|
|
||||||
"status": "string"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 2.2.3 更新用户信息
|
|
||||||
- **接口路径**: `/api/admin/user/update`
|
|
||||||
- **请求方式**: PUT
|
|
||||||
- **请求参数**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"userId": "number",
|
|
||||||
"role": "string",
|
|
||||||
"status": "string",
|
|
||||||
"password": "string"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "用户信息更新成功",
|
|
||||||
"data": null
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 2.2.4 重置用户密码
|
|
||||||
- **接口路径**: `/api/admin/user/reset-password/{userId}`
|
|
||||||
- **请求方式**: PUT
|
|
||||||
- **路径参数**:
|
|
||||||
- userId: 用户ID
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "密码已重置为 123456",
|
|
||||||
"data": null
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 2.2.5 封禁用户
|
|
||||||
- **接口路径**: `/api/admin/user/ban/{userId}`
|
|
||||||
- **请求方式**: PUT
|
|
||||||
- **路径参数**:
|
|
||||||
- userId: 用户ID
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "用户已封禁",
|
|
||||||
"data": null
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 2.2.6 删除用户
|
|
||||||
- **接口路径**: `/api/admin/user/{userId}`
|
|
||||||
- **请求方式**: DELETE
|
|
||||||
- **路径参数**:
|
|
||||||
- userId: 用户ID
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "用户已删除",
|
|
||||||
"data": null
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2.3 文件管理 (FileController)
|
|
||||||
- **接口路径**: `/api/file`
|
|
||||||
- **功能**: 文件上传下载相关接口
|
|
||||||
- **说明**: 该模块目前为空,待实现
|
|
||||||
|
|
||||||
## 3. 活动管理接口 (ams)
|
|
||||||
|
|
||||||
### 3.1 活动管理 (ActivityController)
|
|
||||||
- **接口路径**: `/api/admin/activity`
|
|
||||||
- **功能**: 活动创建、修改、查询等
|
|
||||||
- **权限要求**: 需要相应角色权限
|
|
||||||
|
|
||||||
#### 3.1.1 创建活动
|
|
||||||
- **接口路径**: `/api/admin/activity/create`
|
|
||||||
- **请求方式**: POST
|
|
||||||
- **权限要求**: USER, CLUB_ADMIN
|
|
||||||
- **请求参数**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"title": "string", // 活动标题
|
|
||||||
"description": "string", // 活动描述
|
|
||||||
"startTime": "string", // 开始时间
|
|
||||||
"endTime": "string", // 结束时间
|
|
||||||
"location": "string", // 活动地点
|
|
||||||
"maxParticipants": "number", // 最大参与人数
|
|
||||||
"clubId": "number" // 主办社团ID
|
|
||||||
}
|
|
||||||
```
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "活动创建成功,等待审批",
|
|
||||||
"data": null
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 3.1.2 取消活动
|
|
||||||
- **接口路径**: `/api/admin/activity/cancel`
|
|
||||||
- **请求方式**: PUT
|
|
||||||
- **权限要求**: CLUB_ADMIN
|
|
||||||
- **请求参数**:
|
|
||||||
- actId: 活动ID
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "活动已取消",
|
|
||||||
"data": null
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3.2 审批管理 (ApprovalController)
|
|
||||||
- **接口路径**: `/api/admin/approval`
|
|
||||||
- **功能**: 活动审批相关接口
|
|
||||||
- **权限要求**: 需要相应角色权限
|
|
||||||
|
|
||||||
#### 3.2.1 审批通过
|
|
||||||
- **接口路径**: `/api/admin/approval/approve`
|
|
||||||
- **请求方式**: POST
|
|
||||||
- **权限要求**: CLUB_ADMIN, DEPARTMENT_ADMIN, COLLEGE_ADMIN
|
|
||||||
- **请求参数**:
|
|
||||||
- apprId: 审批ID
|
|
||||||
- approverId: 审批人ID
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "审批已通过",
|
|
||||||
"data": null
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 3.2.2 审批拒绝
|
|
||||||
- **接口路径**: `/api/admin/approval/reject`
|
|
||||||
- **请求方式**: POST
|
|
||||||
- **权限要求**: CLUB_ADMIN, DEPARTMENT_ADMIN, COLLEGE_ADMIN
|
|
||||||
- **请求参数**:
|
|
||||||
- apprId: 审批ID
|
|
||||||
- reason: 拒绝原因
|
|
||||||
- approverId: 审批人ID
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "审批已拒绝",
|
|
||||||
"data": null
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3.3 评论管理 (CommentController)
|
|
||||||
- **接口路径**: `/api/comment`
|
|
||||||
- **功能**: 活动评论相关接口
|
|
||||||
- **权限要求**: 需要相应角色权限
|
|
||||||
|
|
||||||
#### 3.3.1 发表评论
|
|
||||||
- **接口路径**: `/api/comment/add`
|
|
||||||
- **请求方式**: POST
|
|
||||||
- **权限要求**: USER
|
|
||||||
- **请求参数**:
|
|
||||||
- userId: 用户ID
|
|
||||||
- actId: 活动ID
|
|
||||||
- content: 评论内容
|
|
||||||
- parentCommentId: 父评论ID(可选,用于回复)
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "评论成功",
|
|
||||||
"data": null
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 3.3.2 删除评论
|
|
||||||
- **接口路径**: `/api/comment/delete`
|
|
||||||
- **请求方式**: DELETE
|
|
||||||
- **权限要求**: USER, ADMIN
|
|
||||||
- **请求参数**:
|
|
||||||
- commentId: 评论ID
|
|
||||||
- userId: 用户ID
|
|
||||||
- isAdmin: 是否为管理员
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "评论已删除",
|
|
||||||
"data": null
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 3.3.3 获取活动评论列表
|
|
||||||
- **接口路径**: `/api/comment/list`
|
|
||||||
- **请求方式**: GET
|
|
||||||
- **请求参数**:
|
|
||||||
- actId: 活动ID
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "success",
|
|
||||||
"data": [
|
|
||||||
{
|
|
||||||
"commentId": "number",
|
|
||||||
"userId": "number",
|
|
||||||
"content": "string",
|
|
||||||
"createTime": "string"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 3.3.4 获取评论回复
|
|
||||||
- **接口路径**: `/api/comment/replies`
|
|
||||||
- **请求方式**: GET
|
|
||||||
- **请求参数**:
|
|
||||||
- parentCommentId: 父评论ID
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "success",
|
|
||||||
"data": [
|
|
||||||
{
|
|
||||||
"commentId": "number",
|
|
||||||
"userId": "number",
|
|
||||||
"content": "string",
|
|
||||||
"createTime": "string"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3.4 反应管理 (ReactionController)
|
|
||||||
- **接口路径**: `/api/reaction`
|
|
||||||
- **功能**: 活动反应(点赞等)相关接口
|
|
||||||
- **权限要求**: 需要相应角色权限
|
|
||||||
|
|
||||||
#### 3.4.1 添加反应
|
|
||||||
- **接口路径**: `/api/reaction/add`
|
|
||||||
- **请求方式**: POST
|
|
||||||
- **权限要求**: USER
|
|
||||||
- **请求参数**:
|
|
||||||
- actId: 活动ID
|
|
||||||
- userId: 用户ID
|
|
||||||
- reactionType: 反应类型(LIKE/DISLIKE)
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "操作成功",
|
|
||||||
"data": null
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 3.4.2 取消反应
|
|
||||||
- **接口路径**: `/api/reaction/remove`
|
|
||||||
- **请求方式**: DELETE
|
|
||||||
- **权限要求**: USER
|
|
||||||
- **请求参数**:
|
|
||||||
- actId: 活动ID
|
|
||||||
- userId: 用户ID
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "已取消点赞/点踩",
|
|
||||||
"data": null
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 3.4.3 获取反应统计
|
|
||||||
- **接口路径**: `/api/reaction/stats`
|
|
||||||
- **请求方式**: GET
|
|
||||||
- **请求参数**:
|
|
||||||
- actId: 活动ID
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "success",
|
|
||||||
"data": {
|
|
||||||
"likes": "number",
|
|
||||||
"dislikes": "number"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 3.4.4 获取活动反应列表
|
|
||||||
- **接口路径**: `/api/reaction/list`
|
|
||||||
- **请求方式**: GET
|
|
||||||
- **权限要求**: ADMIN
|
|
||||||
- **请求参数**:
|
|
||||||
- actId: 活动ID
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "success",
|
|
||||||
"data": [
|
|
||||||
{
|
|
||||||
"reactionId": "number",
|
|
||||||
"userId": "number",
|
|
||||||
"reactionType": "string",
|
|
||||||
"createTime": "string"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3.5 报名管理 (RegistrationController)
|
|
||||||
- **接口路径**: `/api/registration`
|
|
||||||
- **功能**: 活动报名相关接口
|
|
||||||
- **权限要求**: 需要相应角色权限
|
|
||||||
|
|
||||||
#### 3.5.1 报名活动
|
|
||||||
- **接口路径**: `/api/registration/register`
|
|
||||||
- **请求方式**: POST
|
|
||||||
- **权限要求**: USER
|
|
||||||
- **请求参数**:
|
|
||||||
- actId: 活动ID
|
|
||||||
- userId: 用户ID
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "报名成功",
|
|
||||||
"data": null
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 3.5.2 取消报名
|
|
||||||
- **接口路径**: `/api/registration/cancel`
|
|
||||||
- **请求方式**: PUT
|
|
||||||
- **权限要求**: USER
|
|
||||||
- **请求参数**:
|
|
||||||
- actId: 活动ID
|
|
||||||
- userId: 用户ID
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "报名已取消",
|
|
||||||
"data": null
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 3.5.3 活动签到
|
|
||||||
- **接口路径**: `/api/registration/attend`
|
|
||||||
- **请求方式**: PUT
|
|
||||||
- **权限要求**: USER
|
|
||||||
- **请求参数**:
|
|
||||||
- actId: 活动ID
|
|
||||||
- userId: 用户ID
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "签到成功",
|
|
||||||
"data": null
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 3.5.4 获取我的报名列表
|
|
||||||
- **接口路径**: `/api/registration/my-registrations`
|
|
||||||
- **请求方式**: GET
|
|
||||||
- **权限要求**: USER
|
|
||||||
- **请求参数**:
|
|
||||||
- userId: 用户ID
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "success",
|
|
||||||
"data": [
|
|
||||||
{
|
|
||||||
"registrationId": "number",
|
|
||||||
"actId": "number",
|
|
||||||
"userId": "number",
|
|
||||||
"status": "string",
|
|
||||||
"createTime": "string"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 3.5.5 获取活动报名列表
|
|
||||||
- **接口路径**: `/api/registration/list`
|
|
||||||
- **请求方式**: GET
|
|
||||||
- **权限要求**: ADMIN, COLLEGE_ADMIN, DEPARTMENT_ADMIN
|
|
||||||
- **请求参数**:
|
|
||||||
- actId: 活动ID
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "success",
|
|
||||||
"data": [
|
|
||||||
{
|
|
||||||
"registrationId": "number",
|
|
||||||
"actId": "number",
|
|
||||||
"userId": "number",
|
|
||||||
"status": "string",
|
|
||||||
"createTime": "string"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## 4. 社团管理接口 (sms)
|
|
||||||
|
|
||||||
### 4.1 社团管理 (ClubController)
|
|
||||||
- **接口路径**: `/api/admin/club`
|
|
||||||
- **功能**: 社团基本信息管理
|
|
||||||
- **权限要求**: 需要相应角色权限
|
|
||||||
|
|
||||||
#### 4.1.1 添加社团
|
|
||||||
- **接口路径**: `/api/admin/club/add`
|
|
||||||
- **请求方式**: POST
|
|
||||||
- **权限要求**: ADMIN, COLLEGE_ADMIN, DEPARTMENT_ADMIN
|
|
||||||
- **请求参数**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"name": "string", // 社团名称
|
|
||||||
"description": "string", // 社团描述
|
|
||||||
"collegeId": "number", // 所属学院ID
|
|
||||||
"type": "string" // 社团类型
|
|
||||||
}
|
|
||||||
```
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "社团添加成功",
|
|
||||||
"data": null
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 4.1.2 更新社团信息
|
|
||||||
- **接口路径**: `/api/admin/club/update`
|
|
||||||
- **请求方式**: PUT
|
|
||||||
- **权限要求**: ADMIN, CLUB_ADMIN
|
|
||||||
- **请求参数**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"clubId": "number", // 社团ID
|
|
||||||
"name": "string", // 社团名称
|
|
||||||
"description": "string", // 社团描述
|
|
||||||
"type": "string" // 社团类型
|
|
||||||
}
|
|
||||||
```
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "社团信息更新成功",
|
|
||||||
"data": null
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 4.1.3 删除社团
|
|
||||||
- **接口路径**: `/api/admin/club/delete/{clubId}`
|
|
||||||
- **请求方式**: DELETE
|
|
||||||
- **权限要求**: ADMIN, COLLEGE_ADMIN, DEPARTMENT_ADMIN
|
|
||||||
- **路径参数**:
|
|
||||||
- clubId: 社团ID
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "社团删除成功",
|
|
||||||
"data": null
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 4.1.4 获取社团详情
|
|
||||||
- **接口路径**: `/api/admin/club/{clubId}`
|
|
||||||
- **请求方式**: GET
|
|
||||||
- **权限要求**: ADMIN, COLLEGE_ADMIN, DEPARTMENT_ADMIN, CLUB_ADMIN
|
|
||||||
- **路径参数**:
|
|
||||||
- clubId: 社团ID
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "success",
|
|
||||||
"data": {
|
|
||||||
"clubId": "number",
|
|
||||||
"name": "string",
|
|
||||||
"description": "string",
|
|
||||||
"collegeId": "number",
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 4.1.5 查询社团列表
|
|
||||||
- **接口路径**: `/api/admin/club/list`
|
|
||||||
- **请求方式**: GET
|
|
||||||
- **权限要求**: ADMIN, COLLEGE_ADMIN, DEPARTMENT_ADMIN, CLUB_ADMIN
|
|
||||||
- **请求参数**:
|
|
||||||
- keyword: 关键字(可选,用于搜索)
|
|
||||||
- userId: 用户ID
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "success",
|
|
||||||
"data": [
|
|
||||||
{
|
|
||||||
"clubId": "number",
|
|
||||||
"name": "string",
|
|
||||||
"description": "string",
|
|
||||||
"collegeId": "number",
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### 4.2 社团成员管理 (ClubUserController)
|
|
||||||
- **接口路径**: `/api/admin/club/user`
|
|
||||||
- **功能**: 社团成员管理相关接口
|
|
||||||
- **权限要求**: 需要相应角色权限
|
|
||||||
|
|
||||||
#### 4.2.1 添加社团成员
|
|
||||||
- **接口路径**: `/api/admin/club/user/add`
|
|
||||||
- **请求方式**: POST
|
|
||||||
- **权限要求**: CLUB_ADMIN
|
|
||||||
- **请求参数**:
|
|
||||||
- clubId: 社团ID
|
|
||||||
- userId: 用户ID
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "成员已加入社团",
|
|
||||||
"data": null
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 4.2.2 移除社团成员
|
|
||||||
- **接口路径**: `/api/admin/club/user/remove`
|
|
||||||
- **请求方式**: DELETE
|
|
||||||
- **权限要求**: CLUB_ADMIN, COLLEGE_ADMIN
|
|
||||||
- **请求参数**:
|
|
||||||
- clubId: 社团ID
|
|
||||||
- userId: 用户ID
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "成员已移除",
|
|
||||||
"data": null
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 4.2.3 查询社团成员列表
|
|
||||||
- **接口路径**: `/api/admin/club/user/list`
|
|
||||||
- **请求方式**: GET
|
|
||||||
- **权限要求**: ADMIN, COLLEGE_ADMIN, DEPARTMENT_ADMIN
|
|
||||||
- **请求参数**:
|
|
||||||
- clubId: 社团ID
|
|
||||||
- userId: 用户ID
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "success",
|
|
||||||
"data": [
|
|
||||||
{
|
|
||||||
"userId": "number",
|
|
||||||
"username": "string",
|
|
||||||
"role": "string"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 4.2.4 查看我的社团成员
|
|
||||||
- **接口路径**: `/api/admin/club/user/my-club-members`
|
|
||||||
- **请求方式**: GET
|
|
||||||
- **权限要求**: CLUB_ADMIN
|
|
||||||
- **请求参数**:
|
|
||||||
- clubId: 社团ID
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "success",
|
|
||||||
"data": [
|
|
||||||
{
|
|
||||||
"userId": "number",
|
|
||||||
"username": "string",
|
|
||||||
"role": "string"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### 4.3 学院管理 (CollegeController)
|
|
||||||
- **接口路径**: `/api/admin/college`
|
|
||||||
- **功能**: 学院信息管理相关接口
|
|
||||||
- **权限要求**: 需要相应角色权限
|
|
||||||
|
|
||||||
#### 4.3.1 添加学院
|
|
||||||
- **接口路径**: `/api/admin/college/add`
|
|
||||||
- **请求方式**: POST
|
|
||||||
- **权限要求**: ADMIN, COLLEGE_ADMIN
|
|
||||||
- **请求参数**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"name": "string", // 学院名称
|
|
||||||
"description": "string", // 学院描述
|
|
||||||
"code": "string" // 学院代码
|
|
||||||
}
|
|
||||||
```
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "学院添加成功",
|
|
||||||
"data": null
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 4.3.2 更新学院信息
|
|
||||||
- **接口路径**: `/api/admin/college/update`
|
|
||||||
- **请求方式**: PUT
|
|
||||||
- **权限要求**: ADMIN, COLLEGE_ADMIN
|
|
||||||
- **请求参数**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"collegeId": "number", // 学院ID
|
|
||||||
"name": "string", // 学院名称
|
|
||||||
"description": "string", // 学院描述
|
|
||||||
"code": "string" // 学院代码
|
|
||||||
}
|
|
||||||
```
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "学院更新成功",
|
|
||||||
"data": null
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 4.3.3 删除学院
|
|
||||||
- **接口路径**: `/api/admin/college/delete/{collegeId}`
|
|
||||||
- **请求方式**: DELETE
|
|
||||||
- **权限要求**: ADMIN, COLLEGE_ADMIN
|
|
||||||
- **路径参数**:
|
|
||||||
- collegeId: 学院ID
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "学院删除成功",
|
|
||||||
"data": null
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 4.3.4 获取学院详情
|
|
||||||
- **接口路径**: `/api/admin/college/{collegeId}`
|
|
||||||
- **请求方式**: GET
|
|
||||||
- **权限要求**: ADMIN, COLLEGE_ADMIN
|
|
||||||
- **路径参数**:
|
|
||||||
- collegeId: 学院ID
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "success",
|
|
||||||
"data": {
|
|
||||||
"collegeId": "number",
|
|
||||||
"name": "string",
|
|
||||||
"description": "string",
|
|
||||||
"code": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 4.3.5 获取我的学院信息
|
|
||||||
- **接口路径**: `/api/admin/college/my-college`
|
|
||||||
- **请求方式**: GET
|
|
||||||
- **权限要求**: DEPARTMENT_ADMIN
|
|
||||||
- **请求参数**:
|
|
||||||
- userId: 用户ID
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "success",
|
|
||||||
"data": {
|
|
||||||
"collegeId": "number",
|
|
||||||
"name": "string",
|
|
||||||
"description": "string",
|
|
||||||
"code": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 4.3.6 查询学院列表
|
|
||||||
- **接口路径**: `/api/admin/college/list`
|
|
||||||
- **请求方式**: GET
|
|
||||||
- **权限要求**: ADMIN, COLLEGE_ADMIN, DEPARTMENT_ADMIN
|
|
||||||
- **请求参数**:
|
|
||||||
- keyword: 关键字(可选,用于搜索)
|
|
||||||
- userId: 用户ID
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "success",
|
|
||||||
"data": [
|
|
||||||
{
|
|
||||||
"collegeId": "number",
|
|
||||||
"name": "string",
|
|
||||||
"description": "string",
|
|
||||||
"code": "string"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 4.3.7 指派学院负责人
|
|
||||||
- **接口路径**: `/api/admin/college/assign`
|
|
||||||
- **请求方式**: POST
|
|
||||||
- **权限要求**: ADMIN, COLLEGE_ADMIN
|
|
||||||
- **请求参数**:
|
|
||||||
- collegeId: 学院ID
|
|
||||||
- userId: 用户ID
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "负责人指派成功",
|
|
||||||
"data": null
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 4.3.8 移除学院负责人
|
|
||||||
- **接口路径**: `/api/admin/college/remove`
|
|
||||||
- **请求方式**: DELETE
|
|
||||||
- **权限要求**: ADMIN, COLLEGE_ADMIN
|
|
||||||
- **请求参数**:
|
|
||||||
- collegeId: 学院ID
|
|
||||||
- userId: 用户ID
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "负责人移除成功",
|
|
||||||
"data": null
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 4.3.9 获取学院负责人
|
|
||||||
- **接口路径**: `/api/admin/college/getleader/{collegeId}`
|
|
||||||
- **请求方式**: GET
|
|
||||||
- **权限要求**: ADMIN, COLLEGE_ADMIN, DEPARTMENT_ADMIN
|
|
||||||
- **路径参数**:
|
|
||||||
- collegeId: 学院ID
|
|
||||||
- **请求参数**:
|
|
||||||
- userId: 用户ID
|
|
||||||
- **响应结果**:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "success",
|
|
||||||
"data": {
|
|
||||||
"userId": "number",
|
|
||||||
"username": "string",
|
|
||||||
"role": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## 通用说明
|
|
||||||
|
|
||||||
1. **认证方式**:
|
|
||||||
- 除登录接口外,所有接口都需要在请求头中携带 JWT Token
|
|
||||||
- Token 格式:`Authorization: Bearer <token>`
|
|
||||||
|
|
||||||
2. **响应格式**:
|
|
||||||
- 所有接口统一使用 `AjaxResult` 封装响应
|
|
||||||
- 成功响应示例:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"msg": "操作成功",
|
|
||||||
"data": {}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
- 失败响应示例:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"code": 500,
|
|
||||||
"msg": "操作失败",
|
|
||||||
"data": null
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
3. **请求方式**:
|
|
||||||
- 查询类接口使用 GET
|
|
||||||
- 创建类接口使用 POST
|
|
||||||
- 更新类接口使用 PUT
|
|
||||||
- 删除类接口使用 DELETE
|
|
||||||
|
|
||||||
4. **数据格式**:
|
|
||||||
- 请求和响应均使用 JSON 格式
|
|
||||||
- 日期时间格式统一使用 ISO 8601 标准
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { RouterLink, RouterView } from 'vue-router'
|
import { RouterView } from 'vue-router'
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<!-- ✅ 取消 scoped,写全局样式 -->
|
<!-- ✅ 取消 scoped,写全局样式 -->
|
||||||
|
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
import request from '@/utils/request'
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 登录请求
|
|
||||||
* @param {Object} data - 登录表单,包含 username / schoolId / email + password
|
|
||||||
*/
|
|
||||||
export function loginApi(data) {
|
|
||||||
return request({
|
|
||||||
url: '/login',
|
|
||||||
method: 'post',
|
|
||||||
data
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
@ -1,5 +1,17 @@
|
||||||
import request from '@/utils/request'
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 登录请求
|
||||||
|
* @param {Object} data - 登录表单,包含 username / schoolId / email + password
|
||||||
|
*/
|
||||||
|
export function loginApi(data) {
|
||||||
|
return request({
|
||||||
|
url: '/login',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取当前登录用户的基本信息
|
* 获取当前登录用户的基本信息
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
import { describe, it, expect } from 'vitest'
|
|
||||||
|
|
||||||
import { mount } from '@vue/test-utils'
|
|
||||||
import HelloWorld from '../HelloWorld.vue'
|
|
||||||
|
|
||||||
describe('HelloWorld', () => {
|
|
||||||
it('renders properly', () => {
|
|
||||||
const wrapper = mount(HelloWorld, { props: { msg: 'Hello Vitest' } })
|
|
||||||
expect(wrapper.text()).toContain('Hello Vitest')
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import { createRouter, createWebHistory } from 'vue-router'
|
import { createRouter, createWebHistory } from 'vue-router'
|
||||||
import LoginView from '@/views/login/index.vue'
|
import LoginView from '@/views/user/UserLogin.vue'
|
||||||
import studentRoutes from './modules/student'
|
import studentRoutes from './modules/student'
|
||||||
import adminRoutes from './modules/admin'
|
import adminRoutes from './modules/admin'
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,25 +15,25 @@ const adminRoutes: RouteRecordRaw = {
|
||||||
{
|
{
|
||||||
path: 'activity/list',
|
path: 'activity/list',
|
||||||
name: 'AdminActivityList',
|
name: 'AdminActivityList',
|
||||||
component: () => import('@/views/admin/ActivityManage.vue'),
|
component: () => import('@/views/admin/activity/ActivityManage.vue'),
|
||||||
meta: { title: '活动管理', icon: 'el-icon-notebook-2' }
|
meta: { title: '活动管理', icon: 'el-icon-notebook-2' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'club/list',
|
path: 'club/list',
|
||||||
name: 'AdminClubList',
|
name: 'AdminClubList',
|
||||||
component: () => import('@/views/admin/ClubList.vue'),
|
component: () => import('@/views/admin/club/ClubList.vue'),
|
||||||
meta: { title: '社团列表', icon: 'el-icon-collection-tag' }
|
meta: { title: '社团列表', icon: 'el-icon-collection-tag' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'club/approval',
|
path: 'club/approval',
|
||||||
name: 'AdminClubApproval',
|
name: 'AdminClubApproval',
|
||||||
component: () => import('@/views/admin/ClubApproval.vue'),
|
component: () => import('@/views/admin/club/ClubApproval.vue'),
|
||||||
meta: { title: '审批列表', icon: 'el-icon-files' }
|
meta: { title: '审批列表', icon: 'el-icon-files' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'user/member',
|
path: 'user/member',
|
||||||
name: 'AdminMemberManage',
|
name: 'AdminMemberManage',
|
||||||
component: () => import('@/views/admin/MemberManage.vue'),
|
component: () => import('@/views/admin/user/UserManage.vue'),
|
||||||
meta: { title: '成员管理', icon: 'el-icon-user' }
|
meta: { title: '成员管理', icon: 'el-icon-user' }
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -18,25 +18,25 @@ const studentRoutes: RouteRecordRaw = {
|
||||||
{
|
{
|
||||||
path: 'activities',
|
path: 'activities',
|
||||||
name: 'StudentActivityList',
|
name: 'StudentActivityList',
|
||||||
component: () => import('@/views/student/ActivityList.vue'),
|
component: () => import('@/views/student/activity/ActivityList.vue'),
|
||||||
meta: { title: '活动列表', keepAlive: true }
|
meta: { title: '活动列表', keepAlive: true }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'activity/:id',
|
path: 'activity/:id',
|
||||||
name: 'StudentActivityDetail',
|
name: 'StudentActivityDetail',
|
||||||
component: () => import('@/views/student/ActivityDetail.vue'),
|
component: () => import('@/views/student/activity/ActivityDetail.vue'),
|
||||||
meta: { title: '活动详情', hidden: true }
|
meta: { title: '活动详情', hidden: true }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'clubs',
|
path: 'clubs',
|
||||||
name: 'StudentClubCenter',
|
name: 'StudentClubCenter',
|
||||||
component: () => import('@/views/student/ClubCenter.vue'),
|
component: () => import('@/views/student/club/ClubCenter.vue'),
|
||||||
meta: { title: '社团中心' }
|
meta: { title: '社团中心' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'profile',
|
path: 'profile',
|
||||||
name: 'StudentProfile',
|
name: 'StudentProfile',
|
||||||
component: () => import('@/views/student/Profile.vue'),
|
component: () => import('@/views/student/user/UserProfile.vue'),
|
||||||
meta: { title: '个人中心' }
|
meta: { title: '个人中心' }
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="member-manage">
|
<div class="user-manage">
|
||||||
<h2 class="title">成员管理</h2>
|
<h2 class="title">成员管理</h2>
|
||||||
|
|
||||||
<div class="filter-bar">
|
<div class="filter-bar">
|
||||||
|
|
@ -127,7 +127,7 @@ onMounted(fetchData)
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.member-manage {
|
.user-manage {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
}
|
}
|
||||||
.title {
|
.title {
|
||||||
|
|
@ -23,7 +23,7 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted } from 'vue'
|
import { ref, onMounted } from 'vue'
|
||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
import request from '@/utils/request'
|
import request from '@/utils/request.js'
|
||||||
import StudentHeader from '@/components/common/StudentHeader.vue'
|
import StudentHeader from '@/components/common/StudentHeader.vue'
|
||||||
import StudentFooter from '@/components/common/StudentFooter.vue'
|
import StudentFooter from '@/components/common/StudentFooter.vue'
|
||||||
import CommentList from '@/components/student/CommentList.vue'
|
import CommentList from '@/components/student/CommentList.vue'
|
||||||
|
|
@ -38,7 +38,7 @@ import { ref, onMounted } from 'vue'
|
||||||
import StudentHeader from '@/components/common/StudentHeader.vue'
|
import StudentHeader from '@/components/common/StudentHeader.vue'
|
||||||
import StudentFooter from '@/components/common/StudentFooter.vue'
|
import StudentFooter from '@/components/common/StudentFooter.vue'
|
||||||
import ActivityCard from '@/components/student/ActivityCard.vue'
|
import ActivityCard from '@/components/student/ActivityCard.vue'
|
||||||
import request from '@/utils/request'
|
import request from '@/utils/request.js'
|
||||||
|
|
||||||
const list = ref([])
|
const list = ref([])
|
||||||
const total = ref(0)
|
const total = ref(0)
|
||||||
|
|
@ -32,7 +32,7 @@ import StudentHeader from '@/components/common/StudentHeader.vue'
|
||||||
import StudentFooter from '@/components/common/StudentFooter.vue'
|
import StudentFooter from '@/components/common/StudentFooter.vue'
|
||||||
import ClubCard from '@/components/student/ClubCard.vue'
|
import ClubCard from '@/components/student/ClubCard.vue'
|
||||||
import { ref, onMounted } from 'vue'
|
import { ref, onMounted } from 'vue'
|
||||||
import request from '@/utils/request'
|
import request from '@/utils/request.js'
|
||||||
|
|
||||||
const myClubs = ref([])
|
const myClubs = ref([])
|
||||||
const otherClubs = ref([])
|
const otherClubs = ref([])
|
||||||
|
|
@ -59,8 +59,8 @@ import { useRouter } from 'vue-router'
|
||||||
import StudentFooter from '@/components/common/StudentFooter.vue'
|
import StudentFooter from '@/components/common/StudentFooter.vue'
|
||||||
import UserEditDialog from '@/components/student/UserEditDialog.vue'
|
import UserEditDialog from '@/components/student/UserEditDialog.vue'
|
||||||
import ChangePasswordDialog from '@/components/student/ChangePasswordDialog.vue'
|
import ChangePasswordDialog from '@/components/student/ChangePasswordDialog.vue'
|
||||||
import { getUserProfile } from '@/api/user'
|
import { getUserProfile } from '@/api/user.js'
|
||||||
import { getMyCreatedActivities, getMyJoinedActivities } from '@/api/activity'
|
import { getMyCreatedActivities, getMyJoinedActivities } from '@/api/activity.js'
|
||||||
|
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
<div class="login-card">
|
<div class="login-card">
|
||||||
<!-- 右侧图片区 -->
|
<!-- 右侧图片区 -->
|
||||||
<div class="login-right">
|
<div class="login-right">
|
||||||
<img src="@/assets/images/loginPic.jpg" alt="login" />
|
<img src="../../assets/images/loginPic.jpg" alt="login" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 左侧表单区 -->
|
<!-- 左侧表单区 -->
|
||||||
|
|
@ -36,8 +36,8 @@
|
||||||
import { reactive, ref } from 'vue'
|
import { reactive, ref } from 'vue'
|
||||||
import { ElMessage } from 'element-plus'
|
import { ElMessage } from 'element-plus'
|
||||||
import { useRouter } from 'vue-router'
|
import { useRouter } from 'vue-router'
|
||||||
import { loginApi } from '@/api/auth'
|
import { loginApi } from '@/api/user.js'
|
||||||
import { getRolesFromToken } from '@/utils/token' // ✅ 引入解析工具
|
import { getRolesFromToken } from '@/utils/token.js'
|
||||||
|
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const formRef = ref()
|
const formRef = ref()
|
||||||
Loading…
Reference in New Issue