diff --git a/src/api/login/index.ts b/src/api/login/index.ts index b5012b2..72c55a9 100644 --- a/src/api/login/index.ts +++ b/src/api/login/index.ts @@ -1,34 +1,24 @@ import request from '@/axios' -import type { UserType } from './types' +import type { UserLoginRequest, LoginResponse } from './types' -interface RoleParams { - roleName: string -} - -export const loginApi = (data: UserType): Promise> => { - return request.post({ url: '/mock/user/login', data }) +/** + * 用户登录 + * @param data 登录请求体 + * @returns 返回一个 Promise,包含 token 和用户信息 + */ +export const loginApi = (data: UserLoginRequest): Promise> => { + return request.post({ + url: '/api/login', + data + }) } +/** + * 用户退出登录 + * @returns 返回一个 Promise + */ export const loginOutApi = (): Promise => { - return request.get({ url: '/mock/user/loginOut' }) -} - -export const getUserListApi = ({ params }: AxiosConfig) => { - return request.get<{ - code: string - data: { - list: UserType[] - total: number - } - }>({ url: '/mock/user/list', params }) -} - -export const getAdminRoleApi = ( - params: RoleParams -): Promise> => { - return request.get({ url: '/mock/role/list', params }) -} - -export const getTestRoleApi = (params: RoleParams): Promise> => { - return request.get({ url: '/mock/role/list2', params }) + return request.post({ + url: '/api/loginOut' + }) } diff --git a/src/api/login/types.ts b/src/api/login/types.ts index 31bb526..1e3c3dc 100644 --- a/src/api/login/types.ts +++ b/src/api/login/types.ts @@ -1,11 +1,34 @@ -export interface UserLoginType { - username: string - password: string +export interface IResponse { + code: number + msg: string + data: T } -export interface UserType { +/** + * 用户登录时提交的请求体类型 + */ +export interface UserLoginRequest { username: string password: string - role: string - roleId: string +} + +/** + * 登录成功后,后端返回的用户信息结构 + */ +export interface UserInfo { + id: number // 用户ID + username: string // 登录账号 + realName: string // 真实姓名 + roleId: number // 权限等级 (1=管理员, 2=班主任, 3=老师) + deptId?: number // 所属班级ID (班主任才有值) + status: number // 账号状态 (0=禁用, 1=正常) + // ... 其他你需要的字段 +} + +/** + * 登录接口的完整返回类型 + */ +export interface LoginResponse { + token: string // JWT Token + userInfo: UserInfo // 用户详细信息 } diff --git a/src/axios/index.ts b/src/axios/index.ts index 60b46c0..77783ae 100644 --- a/src/axios/index.ts +++ b/src/axios/index.ts @@ -6,6 +6,8 @@ const request = (option: AxiosConfig) => { const { url, method, params, data, headers, responseType } = option const userStore = useUserStoreWithOut() + const token = userStore.getToken() // 先获取 token(函数调用,拿到字符串值) + return service.request({ url: url, method, @@ -14,8 +16,9 @@ const request = (option: AxiosConfig) => { responseType: responseType, headers: { 'Content-Type': CONTENT_TYPE, - [userStore.getTokenKey ?? 'Authorization']: userStore.getToken ?? '', - ...headers + // 正确设置 Authorization 头:键名固定为 'Authorization',值为 Bearer + token(token 存在时) + ...(token ? { Authorization: `Bearer ${token}` } : {}), + ...headers // 合并传入的自定义 headers(覆盖默认值) } }) } diff --git a/src/components/UserInfo/src/UserInfo.vue b/src/components/UserInfo/src/UserInfo.vue index 526b0a0..0ad7d18 100644 --- a/src/components/UserInfo/src/UserInfo.vue +++ b/src/components/UserInfo/src/UserInfo.vue @@ -52,7 +52,7 @@ const toPage = (path: string) => { class="w-[calc(var(--logo-height)-25px)] rounded-[50%]" /> {{ - userStore.getUserInfo?.username + userStore.getUserInfo()?.username }}