Files
prop-data-guard/frontend/src/api/user.ts
T
hiderfong 377e9cba22 feat: user management - add/edit/delete users
Backend:
- Add GET /users/roles endpoint (list all roles)
- Add GET /users/depts endpoint (list all departments)

Frontend:
- Add user.ts API client (getUsers, createUser, updateUser, deleteUser, getRoles, getDepts)
- Rewrite System.vue with full user CRUD:
  - User list table with pagination
  - Add User button + dialog form
  - Edit user (username disabled, password hidden)
  - Delete user (disabled for superadmin)
  - Role and department dropdowns
  - Status radio buttons
2026-04-23 11:32:45 +08:00

63 lines
1.2 KiB
TypeScript

import request from './request'
export interface UserItem {
id: number
username: string
email?: string
real_name?: string
phone?: string
dept_id?: number
is_active: boolean
is_superuser: boolean
dept?: { id: number; name: string }
roles: { id: number; name: string; code: string }[]
created_at: string
}
export interface RoleItem {
id: number
name: string
code: string
description?: string
}
export interface DeptItem {
id: number
name: string
parent_id?: number
sort_order: number
}
export function getUsers(params?: { page?: number; page_size?: number; keyword?: string }) {
return request.get('/users', { params })
}
export function createUser(data: {
username: string
password: string
email?: string
real_name?: string
phone?: string
dept_id?: number
is_active?: boolean
role_ids?: number[]
}) {
return request.post('/users', data)
}
export function updateUser(id: number, data: Partial<UserItem> & { role_ids?: number[] }) {
return request.put(`/users/${id}`, data)
}
export function deleteUser(id: number) {
return request.delete(`/users/${id}`)
}
export function getRoles() {
return request.get('/users/roles')
}
export function getDepts() {
return request.get('/users/depts')
}