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
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
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')
|
||||
}
|
||||
Reference in New Issue
Block a user