ec-admin/src/api/user.ts
liuyun 77917573c1 feat: real menu rendering + axios/useRequest integration
- axios OO 封装(src/api/http.ts):请求拦截鉴权头、拆 {code,message,data}、401 刷新重放
- useRequest composable(manual/refreshDeps/cancel/mutate)
- ty-crud 列表加载改用 useRequest,修复分页切换不重新请求
- 用户管理对接真实接口(列表/增删改/重置密码/组织下拉),ty-table 日期兼容 ISO
- 菜单真实渲染:GET /auth/menus + 菜单 store,布局/页签/面包屑从接口取
- 登录/注册/忘记密码去掉租户编码字段(用配置默认租户),暗黑模式品牌区背景适配
- 退出登录清空菜单 + 页签

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-11 12:19:24 +08:00

85 lines
2.1 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { http } from '@/api/http'
export type UserStatus = 'enabled' | 'disabled' | 'locked'
export interface User {
id: string
tenantCode: string
username: string
nickname: string | null
email: string | null
phone: string | null
avatar: string | null
status: UserStatus
orgCode: string | null
createdAt: string
updatedAt: string
}
export interface UserListQuery {
page: number
pageSize: number
username?: string
nickname?: string
phone?: string
status?: UserStatus | ''
}
export interface UserListResult {
list: User[]
total: number
page: number
pageSize: number
}
export interface UserUpsertData {
username?: string
password?: string
nickname?: string
email?: string
phone?: string
orgCode?: string | null
status?: UserStatus
}
export interface Org {
id: string
code: string
name: string
}
/** 用户分页列表。 */
export function listUsers(query: UserListQuery, signal?: AbortSignal): Promise<UserListResult> {
const params: Record<string, unknown> = { page: query.page, pageSize: query.pageSize }
if (query.username) params.username = query.username
if (query.nickname) params.nickname = query.nickname
if (query.phone) params.phone = query.phone
if (query.status) params.status = query.status
return http.get<UserListResult>('/users', { params, signal })
}
/** 新增用户。 */
export function createUser(data: UserUpsertData): Promise<User> {
return http.post<User>('/users', data)
}
/** 更新用户(username 不可改)。 */
export function updateUser(id: string, data: UserUpsertData): Promise<User> {
return http.patch<User>(`/users/${id}`, data)
}
/** 删除用户(软删)。 */
export function deleteUser(id: string): Promise<unknown> {
return http.delete(`/users/${id}`)
}
/** 重置密码。 */
export function resetPassword(id: string, password: string): Promise<unknown> {
return http.patch(`/users/${id}/password`, { password })
}
/** 组织列表(用于组织下拉)。 */
export function listOrgs(signal?: AbortSignal): Promise<Org[]> {
return http.get<Org[]>('/orgs', { signal })
}