feat: 增加菜单管理
Build and Deploy Vue3 / build (push) Successful in 1m26s
Build and Deploy Vue3 / deploy (push) Successful in 1m15s

This commit is contained in:
2026-04-18 16:24:57 +08:00
parent 2916c04ba5
commit 8b2251ef97
10 changed files with 2005 additions and 200 deletions
+550 -193
View File
@@ -7,20 +7,54 @@
},
"tags": [
{
"name": "VNC指令管理"
"name": "后台菜单权限管理"
},
{
"name": "后台菜单管理"
}
],
"paths": {
"/api/v1/admin/server/vnc_command/group/list": {
"/api/v1/admin/server/web_routs/permission/list": {
"get": {
"summary": "获取指令分组列表(含指令项)",
"summary": "获取后台菜单权限列表",
"deprecated": false,
"description": "",
"operationId": "VncCommandGroupList",
"tags": [
"VNC指令管理"
"后台菜单权限管理"
],
"parameters": [
{
"name": "owner_type",
"in": "query",
"description": "所属类型",
"required": false,
"schema": {
"type": "string",
"enum": [
"user",
"group"
],
"default": "group"
}
},
{
"name": "user_id",
"in": "query",
"description": "用户IDowner_type为user时必填)",
"required": false,
"schema": {
"type": "integer"
}
},
{
"name": "admin_group_id",
"in": "query",
"description": "管理员组IDowner_type为group时必填)",
"required": false,
"schema": {
"type": "integer"
}
},
{
"name": "Authorization",
"in": "header",
@@ -34,12 +68,14 @@
],
"responses": {
"200": {
"description": "查询成功",
"description": "成功",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {}
"type": "array",
"items": {
"$ref": "#/components/schemas/AdminWebRoutsPermission"
}
}
}
},
@@ -49,14 +85,13 @@
"security": []
}
},
"/api/v1/admin/server/vnc_command/group/create": {
"/api/v1/admin/server/web_routs/permission/add": {
"post": {
"summary": "创建指令分组",
"summary": "新增后台菜单权限",
"deprecated": false,
"description": "",
"operationId": "VncCommandGroupCreate",
"tags": [
"VNC指令管理"
"后台菜单权限管理"
],
"parameters": [
{
@@ -76,53 +111,69 @@
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "分组名称",
"example": ""
},
"sort": {
"web_routs_id": {
"type": "integer",
"description": "排序",
"description": "菜单ID",
"example": 0
},
"default_icon": {
"description": "分组文本图标(如 📚),当无文件图标时使用",
"example": "",
"type": "string"
"enable": {
"type": "boolean",
"default": true,
"description": "是否启用",
"example": "true"
},
"icon_file_id": {
"description": "分组图标文件ID",
"example": "",
"type": "string"
"owner_type": {
"type": "string",
"enum": [
"user",
"group"
],
"description": "所属类型",
"example": ""
},
"admin_group_id": {
"type": "integer",
"description": "管理员组IDowner_type为group时使用)",
"example": 0
},
"user_id": {
"type": "integer",
"description": "用户IDowner_type为user时使用)",
"example": 0
}
},
"required": [
"name"
"web_routs_id",
"owner_type"
]
},
"examples": {}
}
}
},
"required": true
},
"responses": {
"200": {
"description": "创建成功",
"description": "成功",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AdminWebRoutsPermission"
}
}
},
"headers": {}
}
},
"security": []
}
},
"/api/v1/admin/server/vnc_command/group/update": {
"/api/v1/admin/server/web_routs/permission/update": {
"post": {
"summary": "修改指令分组",
"summary": "修改后台菜单权限",
"deprecated": false,
"description": "",
"operationId": "VncCommandGroupUpdate",
"tags": [
"VNC指令管理"
"后台菜单权限管理"
],
"parameters": [
{
@@ -144,143 +195,42 @@
"properties": {
"id": {
"type": "integer",
"description": "分组ID",
"description": "权限记录ID",
"example": 0
},
"name": {
"type": "string",
"web_routs_id": {
"type": "integer",
"description": "菜单ID",
"example": 0
},
"enable": {
"type": "boolean",
"description": "是否启用",
"example": ""
},
"sort": {
"admin_group_id": {
"type": "integer",
"description": "管理员组ID",
"example": 0
},
"default_icon": {
"description": "分组文本图标(如 📚),当无文件图标时使用",
"example": "",
"type": "string"
},
"icon_file_id": {
"user_id": {
"type": "integer",
"description": "分组图标文件ID",
"description": "用户ID",
"example": 0
},
"owner_type": {
"type": "string",
"enum": [
"user",
"group"
],
"description": "所属类型",
"example": ""
}
},
"required": [
"id"
]
},
"examples": {}
}
},
"required": true
},
"responses": {
"200": {
"description": "修改成功",
"headers": {}
}
},
"security": []
}
},
"/api/v1/admin/server/vnc_command/group/delete": {
"delete": {
"summary": "删除指令分组(级联删除指令项)",
"deprecated": false,
"description": "",
"operationId": "VncCommandGroupDelete",
"tags": [
"VNC指令管理"
],
"parameters": [
{
"name": "id",
"in": "query",
"description": "",
"required": true,
"schema": {
"type": "integer"
}
},
{
"name": "Authorization",
"in": "header",
"description": "",
"example": "Bearer {{token}}",
"schema": {
"type": "string",
"default": "Bearer {{token}}"
}
}
],
"responses": {
"200": {
"description": "删除成功",
"headers": {}
}
},
"security": []
}
},
"/api/v1/admin/server/vnc_command/item/create": {
"post": {
"summary": "创建指令项",
"deprecated": false,
"description": "",
"operationId": "VncCommandItemCreate",
"tags": [
"VNC指令管理"
],
"parameters": [
{
"name": "Authorization",
"in": "header",
"description": "",
"example": "Bearer {{token}}",
"schema": {
"type": "string",
"default": "Bearer {{token}}"
}
}
],
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"type": "object",
"properties": {
"group_id": {
"type": "integer",
"description": "所属分组ID",
"example": 0
},
"label": {
"type": "string",
"description": "指令名称",
"example": ""
},
"cmd": {
"type": "string",
"description": "指令内容(支持 %var% 变量占位符)",
"example": ""
},
"vars": {
"type": "string",
"description": "变量列表 JSON,格式 [{\"k\":\"path\",\"p\":\"目录路径\"}]",
"example": ""
},
"sort": {
"type": "integer",
"description": "排序",
"example": 0
}
},
"required": [
"group_id",
"label",
"cmd"
]
}
}
},
@@ -288,21 +238,27 @@
},
"responses": {
"200": {
"description": "创建成功",
"description": "成功",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AdminWebRoutsPermission"
}
}
},
"headers": {}
}
},
"security": []
}
},
"/api/v1/admin/server/vnc_command/item/update": {
"post": {
"summary": "修改指令项",
"/api/v1/admin/server/web_routs/permission/delete": {
"delete": {
"summary": "删除后台菜单权限",
"deprecated": false,
"description": "",
"operationId": "VncCommandItemUpdate",
"tags": [
"VNC指令管理"
"后台菜单权限管理"
],
"parameters": [
{
@@ -324,23 +280,7 @@
"properties": {
"id": {
"type": "integer",
"description": "指令项ID",
"example": 0
},
"label": {
"type": "string",
"example": ""
},
"cmd": {
"type": "string",
"example": ""
},
"vars": {
"type": "string",
"example": ""
},
"sort": {
"type": "integer",
"description": "权限记录ID",
"example": 0
}
},
@@ -354,28 +294,114 @@
},
"responses": {
"200": {
"description": "修改成功",
"description": "成功",
"headers": {}
}
},
"security": []
}
},
"/api/v1/admin/server/vnc_command/item/delete": {
"delete": {
"summary": "删除指令项",
"/api/v1/admin/server/web_routs/my": {
"get": {
"summary": "获取当前用户的后台菜单权限树",
"deprecated": false,
"description": "",
"operationId": "VncCommandItemDelete",
"description": "自动读取当前用户的 user_id 与 AdminGroupId,合并用户级与管理员组级菜单权限,返回完整的菜单树形结构。每个菜单节点包含 enable 状态,用户级权限优先于管理员组级权限。",
"tags": [
"VNC指令管理"
"后台菜单权限管理"
],
"parameters": [
{
"name": "id",
"in": "query",
"name": "Authorization",
"in": "header",
"description": "",
"required": true,
"example": "Bearer {{token}}",
"schema": {
"type": "string",
"default": "Bearer {{token}}"
}
}
],
"responses": {
"200": {
"description": "成功",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/WebRoutsWithPermission"
}
},
"example": {
"id": 1,
"path": "/dashboard",
"title": "仪表盘",
"icon": "dashboard",
"parentId": null,
"enable": true,
"children": [
{
"id": 2,
"path": "/dashboard/overview",
"title": "概览",
"icon": "overview",
"parentId": 1,
"enable": true,
"children": []
}
]
}
}
},
"headers": {}
}
},
"security": []
}
},
"/api/v1/admin/server/web_routs/list": {
"get": {
"summary": "获取后台菜单列表",
"deprecated": false,
"description": "",
"tags": [
"后台菜单管理"
],
"parameters": [
{
"name": "page",
"in": "query",
"description": "页码",
"required": false,
"schema": {
"type": "integer",
"default": 1
}
},
{
"name": "count",
"in": "query",
"description": "每页数量",
"required": false,
"schema": {
"type": "integer",
"default": 10
}
},
{
"name": "key",
"in": "query",
"description": "搜索关键字(匹配标题或路径)",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "parent_id",
"in": "query",
"description": "父级菜单ID,不传则获取顶级菜单",
"required": false,
"schema": {
"type": "integer"
}
@@ -393,7 +419,223 @@
],
"responses": {
"200": {
"description": "删除成功",
"description": "成功",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"list": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AdminWebRouts"
}
},
"all_count": {
"type": "integer"
}
}
}
}
},
"headers": {}
}
},
"security": []
}
},
"/api/v1/admin/server/web_routs/add": {
"post": {
"summary": "新增后台菜单",
"deprecated": false,
"description": "",
"tags": [
"后台菜单管理"
],
"parameters": [
{
"name": "Authorization",
"in": "header",
"description": "",
"example": "Bearer {{token}}",
"schema": {
"type": "string",
"default": "Bearer {{token}}"
}
}
],
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "菜单路径",
"example": ""
},
"title": {
"type": "string",
"description": "菜单名称",
"example": ""
},
"icon": {
"type": "string",
"description": "菜单图标",
"example": ""
},
"parent_id": {
"type": "integer",
"description": "父级菜单ID",
"example": 0
}
},
"required": [
"path",
"title",
"icon"
]
}
}
},
"required": true
},
"responses": {
"200": {
"description": "成功",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AdminWebRouts"
}
}
},
"headers": {}
}
},
"security": []
}
},
"/api/v1/admin/server/web_routs/update": {
"post": {
"summary": "修改后台菜单",
"deprecated": false,
"description": "",
"tags": [
"后台菜单管理"
],
"parameters": [
{
"name": "Authorization",
"in": "header",
"description": "",
"example": "Bearer {{token}}",
"schema": {
"type": "string",
"default": "Bearer {{token}}"
}
}
],
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "菜单ID",
"example": 0
},
"path": {
"type": "string",
"description": "菜单路径",
"example": ""
},
"title": {
"type": "string",
"description": "菜单名称",
"example": ""
},
"icon": {
"type": "string",
"description": "菜单图标",
"example": ""
},
"parent_id": {
"type": "integer",
"description": "父级菜单ID",
"example": 0
}
},
"required": [
"id"
]
}
}
},
"required": true
},
"responses": {
"200": {
"description": "成功",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AdminWebRouts"
}
}
},
"headers": {}
}
},
"security": []
}
},
"/api/v1/admin/server/web_routs/delete": {
"delete": {
"summary": "删除后台菜单",
"deprecated": false,
"description": "",
"tags": [
"后台菜单管理"
],
"parameters": [
{
"name": "Authorization",
"in": "header",
"description": "",
"example": "Bearer {{token}}",
"schema": {
"type": "string",
"default": "Bearer {{token}}"
}
}
],
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "菜单ID",
"example": 0
}
},
"required": [
"id"
]
}
}
},
"required": true
},
"responses": {
"200": {
"description": "成功",
"headers": {}
}
},
@@ -402,7 +644,122 @@
}
},
"components": {
"schemas": {},
"schemas": {
"AdminWebRouts": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"path": {
"type": "string",
"description": "菜单路径"
},
"title": {
"type": "string",
"description": "菜单名称"
},
"icon": {
"type": "string",
"description": "菜单图标"
},
"parentId": {
"type": "integer",
"description": "父级菜单ID",
"nullable": true
},
"children": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AdminWebRouts"
},
"description": "子菜单列表"
},
"CreatedAt": {
"type": "string",
"format": "date-time"
},
"UpdatedAt": {
"type": "string",
"format": "date-time"
}
}
},
"WebRoutsWithPermission": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "菜单ID"
},
"path": {
"type": "string",
"description": "菜单路径"
},
"title": {
"type": "string",
"description": "菜单名称"
},
"icon": {
"type": "string",
"description": "菜单图标"
},
"parentId": {
"type": "integer",
"description": "父级菜单ID",
"nullable": true
},
"enable": {
"type": "boolean",
"description": "是否启用(合并用户级与管理员组级权限后的结果,用户级优先)"
},
"children": {
"type": "array",
"items": {
"$ref": "#/components/schemas/WebRoutsWithPermission"
},
"description": "子菜单列表"
}
}
},
"AdminWebRoutsPermission": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"webRoutsId": {
"type": "integer",
"description": "菜单ID"
},
"webRouts": {
"$ref": "#/components/schemas/AdminWebRouts"
},
"enable": {
"type": "boolean",
"description": "是否启用"
},
"adminGroupId": {
"type": "integer",
"description": "管理员组ID",
"nullable": true
},
"userId": {
"type": "integer",
"description": "用户ID",
"nullable": true
},
"CreatedAt": {
"type": "string",
"format": "date-time"
},
"UpdatedAt": {
"type": "string",
"format": "date-time"
}
}
}
},
"responses": {},
"securitySchemes": {}
},