v0.3.5.2 前端页面重构

master
bruce 2025-05-03 16:44:57 +08:00
parent 6fc4d263f4
commit b72f68f4b5
17 changed files with 32 additions and 1005 deletions

View File

@ -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 标准

View File

@ -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写全局样式 -->

View File

@ -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
})
}

View File

@ -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
})
}
/** /**
* 获取当前登录用户的基本信息 * 获取当前登录用户的基本信息
*/ */

View File

@ -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')
})
})

View File

@ -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'

View File

@ -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' }
} }
] ]

View File

@ -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: '个人中心' }
} }
] ]

View File

@ -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 {

View File

@ -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'

View File

@ -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)

View File

@ -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([])

View File

@ -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()

View File

@ -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()