对接后端

This commit is contained in:
ovo 2024-12-06 22:01:17 +08:00
parent 8f9a6371c4
commit 1e49191b9a
1 changed files with 54 additions and 12 deletions

View File

@ -1,37 +1,79 @@
import request from '@/utils/request' import request from '@/utils/request'
import type { ApiResponse } from './types' import type { ApiResponse, PageResult } from './types'
// 定义接口的请求参数类型
export interface LoginParams { export interface LoginParams {
username: string phone: string
password: string password: string
verifyCode?: string
} }
// 定义后端返回的用户信息类型
export interface UserInfo { export interface UserInfo {
id: number id: number
username: string phone: string
nickname: string nickname: string
avatar: string avatar: string
roles: string[] gender: 0 | 1 // 0-女 1-男
age: number
address: string
emergencyContact: {
name: string
phone: string
relation: string
}
} }
// 定义用户列表查询参数
export interface UserQueryParams {
page: number
pageSize: number
nickname?: string
phone?: string
gender?: 0 | 1
ageRange?: [number, number]
}
// 用户API接口
export const userApi = { export const userApi = {
// 登录 // 手机号密码登录
login(data: LoginParams) { login(data: LoginParams) {
return request.post<ApiResponse<{ token: string }>>('/auth/login', data) return request.post<ApiResponse<{ token: string }>>('/auth/login', data)
}, },
// 获取用户信息 // 发送验证码
getUserInfo() { sendVerifyCode(phone: string) {
return request.get<ApiResponse<UserInfo>>('/user/info') return request.post<ApiResponse<void>>('/auth/send-code', { phone })
}, },
// 修改密码 // 获取当前登录用户信息
changePassword(data: { oldPassword: string; newPassword: string }) { getCurrentUser() {
return request.post<ApiResponse>('/user/change-password', data) return request.get<ApiResponse<UserInfo>>('/user/current')
}, },
// 更新用户信息 // 更新用户信息
updateUserInfo(data: Partial<UserInfo>) { updateUserInfo(data: Partial<UserInfo>) {
return request.put<ApiResponse>('/user/info', data) return request.put<ApiResponse<UserInfo>>('/user/info', data)
},
// 更新用户头像
updateAvatar(file: File) {
const formData = new FormData()
formData.append('avatar', file)
return request.post<ApiResponse<{ avatarUrl: string }>>('/user/avatar', formData, {
headers: {
'Content-Type': 'multipart/form-data'
}
})
},
// 分页获取用户列表(管理员接口)
getUserList(params: UserQueryParams) {
return request.get<ApiResponse<PageResult<UserInfo>>>('/admin/users', { params })
},
// 修改密码
changePassword(data: { oldPassword: string; newPassword: string }) {
return request.post<ApiResponse<void>>('/user/change-password', data)
} }
} }