serverRoom/adminSystem/src/api/system-manage.ts
lvfengfree c53f658f91 feat: 菜单管理功能增强 - 自动创建Vue组件文件
后端改进:
- MenuController 添加自动创建 Vue 组件文件功能
- 创建菜单时自动生成对应的 .vue 文件模板
- 修复路径处理逻辑,确保子菜单使用相对路径
- 添加菜单名称唯一性检查,自动添加时间戳避免重复
- 修复 ViewsPath 配置路径
- 修复文件写入编码为 UTF-8

前端改进:
- 添加创建目录/子菜单的帮助说明
- 子菜单自动生成组件路径(如果用户未填写)
- 添加 autoCreateComponent 参数支持
- 优化菜单类型判断逻辑
2026-01-20 18:15:14 +08:00

120 lines
2.3 KiB
TypeScript

import request from '@/utils/http'
import { AppRouteRecord } from '@/types/router'
// 获取用户列表
export function fetchGetUserList(params: Api.SystemManage.UserSearchParams) {
return request.get<Api.SystemManage.UserList>({
url: '/api/user/list',
params
})
}
// 创建用户
export function fetchCreateUser(data: {
userName: string
password?: string
nickName?: string
email?: string
phone?: string
gender?: string
roles?: string[]
}) {
return request.post({
url: '/api/user',
params: data,
showSuccessMessage: true
})
}
// 更新用户
export function fetchUpdateUser(id: number, data: {
nickName?: string
email?: string
phone?: string
gender?: string
status?: string
roles?: string[]
}) {
return request.put({
url: `/api/user/${id}`,
params: data,
showSuccessMessage: true
})
}
// 删除用户
export function fetchDeleteUser(id: number) {
return request.del({
url: `/api/user/${id}`,
showSuccessMessage: true
})
}
// 获取角色列表
export function fetchGetRoleList(params: Api.SystemManage.RoleSearchParams) {
return request.get<Api.SystemManage.RoleList>({
url: '/api/role/list',
params
})
}
// 获取菜单列表
export function fetchGetMenuList() {
return request.get<AppRouteRecord[]>({
url: '/api/v3/system/menus/simple'
})
}
// 创建菜单
export function fetchCreateMenu(data: {
parentId?: number | null
name: string
path: string
component?: string
title: string
icon?: string
sort?: number
isHide?: boolean
keepAlive?: boolean
link?: string
isIframe?: boolean
roles?: string[]
autoCreateComponent?: boolean // 是否自动创建组件文件
}) {
return request.post({
url: '/api/menu',
params: data,
showSuccessMessage: true
})
}
// 更新菜单
export function fetchUpdateMenu(id: number, data: {
parentId?: number | null
name?: string
path?: string
component?: string
title?: string
icon?: string
sort?: number
isHide?: boolean
keepAlive?: boolean
link?: string
isIframe?: boolean
roles?: string[]
}) {
return request.put({
url: `/api/menu/${id}`,
params: data,
showSuccessMessage: true
})
}
// 删除菜单
export function fetchDeleteMenu(id: number) {
return request.del({
url: `/api/menu/${id}`,
showSuccessMessage: true
})
}