From adf74575029dc057338422755521682bcd6a85d4 Mon Sep 17 00:00:00 2001 From: molong Date: Mon, 9 Feb 2026 22:51:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Auth/Admin/Permission.php | 10 +- app/Models/Auth/Permission.php | 4 +- app/Models/Auth/User.php | 2 +- app/Services/Auth/AuthService.php | 9 +- app/Services/Auth/PermissionCacheService.php | 12 +- app/Services/Auth/PermissionService.php | 46 +- config/laravels.php | 2 +- .../2024_01_01_000000_create_auth_tables.php | 9 +- database/seeders/AuthSeeder.php | 502 +++++++++++++----- database/seeders/SystemSeeder.php | 389 +++++++++----- .../admin/src/layouts/components/navMenu.vue | 4 +- resources/admin/src/layouts/index.vue | 4 +- 12 files changed, 695 insertions(+), 298 deletions(-) diff --git a/app/Http/Controllers/Auth/Admin/Permission.php b/app/Http/Controllers/Auth/Admin/Permission.php index efd795b..2021d98 100644 --- a/app/Http/Controllers/Auth/Admin/Permission.php +++ b/app/Http/Controllers/Auth/Admin/Permission.php @@ -79,12 +79,11 @@ class Permission extends Controller public function store(Request $request) { $validated = $request->validate([ - 'name' => 'required|string|max:50', - 'code' => 'required|string|max:100|unique:auth_permissions,code', + 'title' => 'required|string|max:50', + 'name' => 'required|string|max:100|unique:auth_permissions,name', 'type' => 'required|in:menu,api,button', 'route' => 'nullable|string|max:200', 'component' => 'nullable|string|max:200', - 'icon' => 'nullable|string|max:50', 'parent_id' => 'nullable|integer|exists:auth_permissions,id', 'sort' => 'nullable|integer|min:0', 'status' => 'nullable|integer|in:0,1', @@ -106,12 +105,11 @@ class Permission extends Controller public function update(Request $request, $id) { $validated = $request->validate([ - 'name' => 'nullable|string|max:50', - 'code' => 'nullable|string|max:100|unique:auth_permissions,code,' . $id, + 'title' => 'nullable|string|max:50', + 'name' => 'nullable|string|max:100|unique:auth_permissions,name,' . $id, 'type' => 'nullable|in:menu,api,button', 'route' => 'nullable|string|max:200', 'component' => 'nullable|string|max:200', - 'icon' => 'nullable|string|max:50', 'parent_id' => 'nullable|integer|exists:auth_permissions,id', 'sort' => 'nullable|integer|min:0', 'status' => 'nullable|integer|in:0,1', diff --git a/app/Models/Auth/Permission.php b/app/Models/Auth/Permission.php index 42ab587..f187650 100644 --- a/app/Models/Auth/Permission.php +++ b/app/Models/Auth/Permission.php @@ -13,11 +13,11 @@ class Permission extends Model protected $table = 'auth_permissions'; protected $fillable = [ + 'title', 'name', - 'code', 'type', 'parent_id', - 'route', + 'path', 'component', 'meta', 'sort', diff --git a/app/Models/Auth/User.php b/app/Models/Auth/User.php index 7d5d2f4..2c1f39b 100644 --- a/app/Models/Auth/User.php +++ b/app/Models/Auth/User.php @@ -71,7 +71,7 @@ class User extends Authenticatable implements JWTSubject { foreach ($this->roles as $role) { foreach ($role->permissions as $permission) { - if ($permission->code === $permissionCode) { + if ($permission->name === $permissionCode) { return true; } } diff --git a/app/Services/Auth/AuthService.php b/app/Services/Auth/AuthService.php index bb92e09..c3cf9f9 100644 --- a/app/Services/Auth/AuthService.php +++ b/app/Services/Auth/AuthService.php @@ -203,8 +203,9 @@ class AuthService foreach ($permissions as $permission) { if ($permission->parent_id == $parentId) { $node = [ - 'path' => $permission->route, - 'name' => $permission->code, + 'path' => $permission->path, + 'name' => $permission->name, + 'title' => $permission->title, 'meta' => $permission->meta ? json_decode($permission->meta, true) : [], ]; @@ -238,8 +239,8 @@ class AuthService $permissions = []; foreach ($user->roles as $role) { foreach ($role->permissions as $permission) { - if (!in_array($permission->code, $permissions)) { - $permissions[] = $permission->code; + if (!in_array($permission->name, $permissions)) { + $permissions[] = $permission->name; } } } diff --git a/app/Services/Auth/PermissionCacheService.php b/app/Services/Auth/PermissionCacheService.php index 0736a2d..ad85f03 100644 --- a/app/Services/Auth/PermissionCacheService.php +++ b/app/Services/Auth/PermissionCacheService.php @@ -30,10 +30,10 @@ class PermissionCacheService foreach ($role->permissions as $permission) { $permissions[$permission->id] = [ 'id' => $permission->id, + 'title' => $permission->title, 'name' => $permission->name, - 'code' => $permission->code, 'type' => $permission->type, - 'route' => $permission->route, + 'path' => $permission->path, ]; } } @@ -51,7 +51,7 @@ class PermissionCacheService return Cache::remember($cacheKey, now()->addMinutes($this->cacheMinutes), function() use ($userId) { $permissions = $this->getUserPermissions($userId); - return array_column($permissions, 'code'); + return array_column($permissions, 'name'); }); } @@ -112,8 +112,8 @@ class PermissionCacheService return $role->permissions->map(function($permission) { return [ 'id' => $permission->id, + 'title' => $permission->title, 'name' => $permission->name, - 'code' => $permission->code, 'type' => $permission->type, ]; })->toArray(); @@ -195,10 +195,10 @@ class PermissionCacheService if ($permission['parent_id'] == $parentId) { $node = [ 'id' => $permission['id'], + 'title' => $permission['title'], 'name' => $permission['name'], - 'code' => $permission['code'], 'type' => $permission['type'], - 'route' => $permission['route'], + 'path' => $permission['path'], 'component' => $permission['component'], 'meta' => json_decode($permission['meta'] ?? '{}', true), 'sort' => $permission['sort'], diff --git a/app/Services/Auth/PermissionService.php b/app/Services/Auth/PermissionService.php index ce12da7..d2b9554 100644 --- a/app/Services/Auth/PermissionService.php +++ b/app/Services/Auth/PermissionService.php @@ -18,8 +18,8 @@ class PermissionService // 搜索条件 if (!empty($params['keyword'])) { $query->where(function ($q) use ($params) { - $q->where('name', 'like', '%' . $params['keyword'] . '%') - ->orWhere('code', 'like', '%' . $params['keyword'] . '%'); + $q->where('title', 'like', '%' . $params['keyword'] . '%') + ->orWhere('name', 'like', '%' . $params['keyword'] . '%'); }); } @@ -109,15 +109,15 @@ class PermissionService return [ 'id' => $permission->id, + 'title' => $permission->title, 'name' => $permission->name, - 'code' => $permission->code, 'type' => $permission->type, 'parent_id' => $permission->parent_id, 'parent' => $permission->parent ? [ 'id' => $permission->parent->id, 'name' => $permission->parent->name, ] : null, - 'route' => $permission->route, + 'path' => $permission->path, 'component' => $permission->component, 'meta' => $permission->meta, 'sort' => $permission->sort, @@ -132,17 +132,17 @@ class PermissionService */ public function create(array $data): Permission { - // 检查权限名称是否已存在 - if (Permission::where('name', $data['name'])->exists()) { + // 检查权限标题是否已存在 + if (isset($data['title']) && Permission::where('title', $data['title'])->exists()) { throw ValidationException::withMessages([ - 'name' => ['权限名称已存在'], + 'title' => ['权限标题已存在'], ]); } // 检查权限编码是否已存在 - if (Permission::where('code', $data['code'])->exists()) { + if (Permission::where('name', $data['name'])->exists()) { throw ValidationException::withMessages([ - 'code' => ['权限编码已存在'], + 'name' => ['权限编码已存在'], ]); } @@ -157,11 +157,11 @@ class PermissionService } return Permission::create([ + 'title' => $data['title'], 'name' => $data['name'], - 'code' => $data['code'], - 'type' => $data['type'] ?? 'api', + 'type' => $data['type'] ?? 'menu', 'parent_id' => $data['parent_id'] ?? 0, - 'route' => $data['route'] ?? null, + 'path' => $data['path'] ?? null, 'component' => $data['component'] ?? null, 'meta' => $data['meta'] ?? null, 'sort' => $data['sort'] ?? 0, @@ -182,20 +182,20 @@ class PermissionService ]); } - // 检查权限名称是否已被其他权限使用 - if (isset($data['name']) && $data['name'] !== $permission->name) { - if (Permission::where('name', $data['name'])->exists()) { + // 检查权限标题是否已被其他权限使用 + if (isset($data['title']) && $data['title'] !== $permission->title) { + if (Permission::where('title', $data['title'])->exists()) { throw ValidationException::withMessages([ - 'name' => ['权限名称已存在'], + 'title' => ['权限标题已存在'], ]); } } // 检查权限编码是否已被其他权限使用 - if (isset($data['code']) && $data['code'] !== $permission->code) { - if (Permission::where('code', $data['code'])->exists()) { + if (isset($data['name']) && $data['name'] !== $permission->name) { + if (Permission::where('name', $data['name'])->exists()) { throw ValidationException::withMessages([ - 'code' => ['权限编码已存在'], + 'name' => ['权限编码已存在'], ]); } } @@ -218,11 +218,11 @@ class PermissionService } $updateData = [ + 'title' => $data['title'] ?? $permission->title, 'name' => $data['name'] ?? $permission->name, - 'code' => $data['code'] ?? $permission->code, 'type' => $data['type'] ?? $permission->type, 'parent_id' => $data['parent_id'] ?? $permission->parent_id, - 'route' => $data['route'] ?? $permission->route, + 'path' => $data['path'] ?? $permission->path, 'component' => $data['component'] ?? $permission->component, 'meta' => isset($data['meta']) ? $data['meta'] : $permission->meta, 'sort' => $data['sort'] ?? $permission->sort, @@ -305,10 +305,10 @@ class PermissionService if ($permission->parent_id == $parentId) { $node = [ 'id' => $permission->id, + 'title' => $permission->title, 'name' => $permission->name, - 'code' => $permission->code, 'type' => $permission->type, - 'route' => $permission->route, + 'path' => $permission->path, 'component' => $permission->component, 'meta' => $permission->meta, 'sort' => $permission->sort, diff --git a/config/laravels.php b/config/laravels.php index 7cf199b..84d633f 100644 --- a/config/laravels.php +++ b/config/laravels.php @@ -32,7 +32,7 @@ return [ | */ - 'listen_port' => env('LARAVELS_LISTEN_PORT', 8000), + 'listen_port' => env('LARAVELS_LISTEN_PORT', 8080), /* |-------------------------------------------------------------------------- diff --git a/database/migrations/2024_01_01_000000_create_auth_tables.php b/database/migrations/2024_01_01_000000_create_auth_tables.php index a64f8b4..1a69217 100644 --- a/database/migrations/2024_01_01_000000_create_auth_tables.php +++ b/database/migrations/2024_01_01_000000_create_auth_tables.php @@ -64,11 +64,11 @@ return new class extends Migration // 权限表 Schema::create('auth_permissions', function (Blueprint $table) { $table->id(); - $table->string('name', 100)->unique()->comment('权限名称'); - $table->string('code', 100)->unique()->comment('权限编码'); - $table->string('type', 20)->default('api')->comment('类型:api 菜单 按钮'); + $table->string('title', 100)->comment('权限标题'); + $table->string('name', 100)->unique()->comment('权限编码'); + $table->string('type', 20)->default('menu')->comment('类型:api button menu url'); $table->unsignedBigInteger('parent_id')->default(0)->comment('父级ID'); - $table->string('route')->nullable()->comment('路由'); + $table->string('path')->nullable()->comment('路由路径'); $table->string('component')->nullable()->comment('前端组件路径'); $table->json('meta')->nullable()->comment('元数据(隐藏菜单、面包屑等)'); $table->integer('sort')->default(0)->comment('排序'); @@ -79,6 +79,7 @@ return new class extends Migration $table->index('parent_id'); $table->index('type'); $table->index('status'); + $table->index('name'); }); // 用户角色关联表 diff --git a/database/seeders/AuthSeeder.php b/database/seeders/AuthSeeder.php index c90a4a2..6a34df1 100644 --- a/database/seeders/AuthSeeder.php +++ b/database/seeders/AuthSeeder.php @@ -55,31 +55,48 @@ class AuthSeeder extends Seeder private function createPermissions(): void { $permissions = [ - // 系统管理 + // 首页顶级菜单 [ - 'name' => '系统管理', - 'code' => 'system', + 'title' => '首页', + 'name' => 'home', 'type' => 'menu', 'parent_id' => 0, - 'route' => '/system', - 'component' => 'Layout', + 'path' => '/home', + 'component' => null, 'meta' => json_encode([ - 'icon' => 'Setting', + 'icon' => 'Dashboard', 'hidden' => false, 'hiddenBreadcrumb' => false, - 'affix' => null, + 'affix' => true, ]), 'sort' => 1, 'status' => 1, ], - // 用户管理 + // 仪表盘 [ - 'name' => '用户管理', - 'code' => 'system.users', + 'title' => '仪表盘', + 'name' => 'home.dashboard', 'type' => 'menu', - 'parent_id' => 0, - 'route' => '/system/users', - 'component' => 'system/users/index', + 'parent_id' => 0, // 稍后更新为首页菜单的ID + 'path' => '/dashboard', + 'component' => 'home/index', + 'meta' => json_encode([ + 'icon' => 'DataLine', + 'hidden' => false, + 'hiddenBreadcrumb' => false, + 'affix' => true, + ]), + 'sort' => 1, + 'status' => 1, + ], + // 个人中心 + [ + 'title' => '个人中心', + 'name' => 'home.profile', + 'type' => 'menu', + 'parent_id' => 0, // 稍后更新为首页菜单的ID + 'path' => '/ucenter', + 'component' => 'ucenter/index', 'meta' => json_encode([ 'icon' => 'User', 'hidden' => false, @@ -89,77 +106,143 @@ class AuthSeeder extends Seeder 'status' => 1, ], [ - 'name' => '查看用户', - 'code' => 'system.users.view', + 'title' => '查看个人信息', + 'name' => 'home.profile.view', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.users.index', + 'parent_id' => 0, // 稍后更新为个人中心菜单的ID + 'path' => null, 'component' => null, 'meta' => null, 'sort' => 1, 'status' => 1, ], [ - 'name' => '创建用户', - 'code' => 'system.users.create', + 'title' => '编辑个人信息', + 'name' => 'home.profile.update', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.users.store', + 'parent_id' => 0, // 稍后更新为个人中心菜单的ID + 'path' => null, 'component' => null, 'meta' => null, 'sort' => 2, 'status' => 1, ], [ - 'name' => '编辑用户', - 'code' => 'system.users.update', + 'title' => '修改密码', + 'name' => 'home.profile.change-password', 'type' => 'button', + 'parent_id' => 0, // 稍后更新为个人中心菜单的ID + 'path' => null, + 'component' => null, + 'meta' => null, + 'sort' => 3, + 'status' => 1, + ], + + // 权限顶级菜单 + [ + 'title' => '权限', + 'name' => 'auth', + 'type' => 'menu', 'parent_id' => 0, - 'route' => 'admin.users.update', + 'path' => '/auth', + 'component' => null, + 'meta' => json_encode([ + 'icon' => 'User', + 'hidden' => false, + 'hiddenBreadcrumb' => false, + ]), + 'sort' => 2, + 'status' => 1, + ], + // 用户管理 + [ + 'title' => '用户管理', + 'name' => 'auth.users', + 'type' => 'menu', + 'parent_id' => 0, // 稍后更新为权限菜单的ID + 'path' => '/auth/users', + 'component' => 'auth/users/index', + 'meta' => json_encode([ + 'icon' => 'UserOutlined', + 'hidden' => false, + 'hiddenBreadcrumb' => false, + ]), + 'sort' => 1, + 'status' => 1, + ], + [ + 'title' => '查看用户', + 'name' => 'auth.users.view', + 'type' => 'button', + 'parent_id' => 0, // 稍后更新为用户管理菜单的ID + 'path' => 'admin.users.index', + 'component' => null, + 'meta' => null, + 'sort' => 1, + 'status' => 1, + ], + [ + 'title' => '创建用户', + 'name' => 'auth.users.create', + 'type' => 'button', + 'parent_id' => 0, // 稍后更新为用户管理菜单的ID + 'path' => 'admin.users.store', + 'component' => null, + 'meta' => null, + 'sort' => 2, + 'status' => 1, + ], + [ + 'title' => '编辑用户', + 'name' => 'auth.users.update', + 'type' => 'button', + 'parent_id' => 0, // 稍后更新为用户管理菜单的ID + 'path' => 'admin.users.update', 'component' => null, 'meta' => null, 'sort' => 3, 'status' => 1, ], [ - 'name' => '删除用户', - 'code' => 'system.users.delete', + 'title' => '删除用户', + 'name' => 'auth.users.delete', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.users.destroy', + 'parent_id' => 0, // 稍后更新为用户管理菜单的ID + 'path' => 'admin.users.destroy', 'component' => null, 'meta' => null, 'sort' => 4, 'status' => 1, ], [ - 'name' => '批量删除用户', - 'code' => 'system.users.batch-delete', + 'title' => '批量删除用户', + 'name' => 'auth.users.batch-delete', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.users.batch-delete', + 'parent_id' => 0, // 稍后更新为用户管理菜单的ID + 'path' => 'admin.users.batch-delete', 'component' => null, 'meta' => null, 'sort' => 5, 'status' => 1, ], [ - 'name' => '导出用户', - 'code' => 'system.users.export', + 'title' => '导出用户', + 'name' => 'auth.users.export', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.users.export', + 'parent_id' => 0, // 稍后更新为用户管理菜单的ID + 'path' => 'admin.users.export', 'component' => null, 'meta' => null, 'sort' => 6, 'status' => 1, ], [ - 'name' => '导入用户', - 'code' => 'system.users.import', + 'title' => '导入用户', + 'name' => 'auth.users.import', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.users.import', + 'parent_id' => 0, // 稍后更新为用户管理菜单的ID + 'path' => 'admin.users.import', 'component' => null, 'meta' => null, 'sort' => 7, @@ -167,81 +250,81 @@ class AuthSeeder extends Seeder ], // 角色管理 [ - 'name' => '角色管理', - 'code' => 'system.roles', + 'title' => '角色管理', + 'name' => 'auth.roles', 'type' => 'menu', - 'parent_id' => 0, - 'route' => '/system/roles', - 'component' => 'system/roles/index', + 'parent_id' => 0, // 稍后更新为权限菜单的ID + 'path' => '/auth/roles', + 'component' => 'auth/roles/index', 'meta' => json_encode([ 'icon' => 'UserFilled', 'hidden' => false, 'hiddenBreadcrumb' => false, ]), - 'sort' => 3, + 'sort' => 2, 'status' => 1, ], [ - 'name' => '查看角色', - 'code' => 'system.roles.view', + 'title' => '查看角色', + 'name' => 'auth.roles.view', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.roles.index', + 'parent_id' => 0, // 稍后更新为角色管理菜单的ID + 'path' => 'admin.roles.index', 'component' => null, 'meta' => null, 'sort' => 1, 'status' => 1, ], [ - 'name' => '创建角色', - 'code' => 'system.roles.create', + 'title' => '创建角色', + 'name' => 'auth.roles.create', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.roles.store', + 'parent_id' => 0, // 稍后更新为角色管理菜单的ID + 'path' => 'admin.roles.store', 'component' => null, 'meta' => null, 'sort' => 2, 'status' => 1, ], [ - 'name' => '编辑角色', - 'code' => 'system.roles.update', + 'title' => '编辑角色', + 'name' => 'auth.roles.update', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.roles.update', + 'parent_id' => 0, // 稍后更新为角色管理菜单的ID + 'path' => 'admin.roles.update', 'component' => null, 'meta' => null, 'sort' => 3, 'status' => 1, ], [ - 'name' => '删除角色', - 'code' => 'system.roles.delete', + 'title' => '删除角色', + 'name' => 'auth.roles.delete', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.roles.destroy', + 'parent_id' => 0, // 稍后更新为角色管理菜单的ID + 'path' => 'admin.roles.destroy', 'component' => null, 'meta' => null, 'sort' => 4, 'status' => 1, ], [ - 'name' => '批量删除角色', - 'code' => 'system.roles.batch-delete', + 'title' => '批量删除角色', + 'name' => 'auth.roles.batch-delete', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.roles.batch-delete', + 'parent_id' => 0, // 稍后更新为角色管理菜单的ID + 'path' => 'admin.roles.batch-delete', 'component' => null, 'meta' => null, 'sort' => 5, 'status' => 1, ], [ - 'name' => '分配权限', - 'code' => 'system.roles.assign-permissions', + 'title' => '分配权限', + 'name' => 'auth.roles.assign-permissions', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.roles.assign-permissions', + 'parent_id' => 0, // 稍后更新为角色管理菜单的ID + 'path' => 'admin.roles.assign-permissions', 'component' => null, 'meta' => null, 'sort' => 6, @@ -249,70 +332,70 @@ class AuthSeeder extends Seeder ], // 权限管理 [ - 'name' => '权限管理', - 'code' => 'system.permissions', + 'title' => '权限管理', + 'name' => 'auth.permissions', 'type' => 'menu', - 'parent_id' => 0, - 'route' => '/system/permissions', - 'component' => 'system/permissions/index', + 'parent_id' => 0, // 稍后更新为权限菜单的ID + 'path' => '/auth/permissions', + 'component' => 'auth/permissions/index', 'meta' => json_encode([ 'icon' => 'Lock', 'hidden' => false, 'hiddenBreadcrumb' => false, ]), - 'sort' => 4, + 'sort' => 3, 'status' => 1, ], [ - 'name' => '查看权限', - 'code' => 'system.permissions.view', + 'title' => '查看权限', + 'name' => 'auth.permissions.view', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.permissions.index', + 'parent_id' => 0, // 稍后更新为权限管理菜单的ID + 'path' => 'admin.permissions.index', 'component' => null, 'meta' => null, 'sort' => 1, 'status' => 1, ], [ - 'name' => '创建权限', - 'code' => 'system.permissions.create', + 'title' => '创建权限', + 'name' => 'auth.permissions.create', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.permissions.store', + 'parent_id' => 0, // 稍后更新为权限管理菜单的ID + 'path' => 'admin.permissions.store', 'component' => null, 'meta' => null, 'sort' => 2, 'status' => 1, ], [ - 'name' => '编辑权限', - 'code' => 'system.permissions.update', + 'title' => '编辑权限', + 'name' => 'auth.permissions.update', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.permissions.update', + 'parent_id' => 0, // 稍后更新为权限管理菜单的ID + 'path' => 'admin.permissions.update', 'component' => null, 'meta' => null, 'sort' => 3, 'status' => 1, ], [ - 'name' => '删除权限', - 'code' => 'system.permissions.delete', + 'title' => '删除权限', + 'name' => 'auth.permissions.delete', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.permissions.destroy', + 'parent_id' => 0, // 稍后更新为权限管理菜单的ID + 'path' => 'admin.permissions.destroy', 'component' => null, 'meta' => null, 'sort' => 4, 'status' => 1, ], [ - 'name' => '批量删除权限', - 'code' => 'system.permissions.batch-delete', + 'title' => '批量删除权限', + 'name' => 'auth.permissions.batch-delete', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.permissions.batch-delete', + 'parent_id' => 0, // 稍后更新为权限管理菜单的ID + 'path' => 'admin.permissions.batch-delete', 'component' => null, 'meta' => null, 'sort' => 5, @@ -320,70 +403,70 @@ class AuthSeeder extends Seeder ], // 部门管理 [ - 'name' => '部门管理', - 'code' => 'system.departments', + 'title' => '部门管理', + 'name' => 'auth.departments', 'type' => 'menu', - 'parent_id' => 0, - 'route' => '/system/departments', - 'component' => 'system/departments/index', + 'parent_id' => 0, // 稍后更新为权限菜单的ID + 'path' => '/auth/departments', + 'component' => 'auth/departments/index', 'meta' => json_encode([ 'icon' => 'OfficeBuilding', 'hidden' => false, 'hiddenBreadcrumb' => false, ]), - 'sort' => 5, + 'sort' => 4, 'status' => 1, ], [ - 'name' => '查看部门', - 'code' => 'system.departments.view', + 'title' => '查看部门', + 'name' => 'auth.departments.view', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.departments.index', + 'parent_id' => 0, // 稍后更新为部门管理菜单的ID + 'path' => 'admin.departments.index', 'component' => null, 'meta' => null, 'sort' => 1, 'status' => 1, ], [ - 'name' => '创建部门', - 'code' => 'system.departments.create', + 'title' => '创建部门', + 'name' => 'auth.departments.create', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.departments.store', + 'parent_id' => 0, // 稍后更新为部门管理菜单的ID + 'path' => 'admin.departments.store', 'component' => null, 'meta' => null, 'sort' => 2, 'status' => 1, ], [ - 'name' => '编辑部门', - 'code' => 'system.departments.update', + 'title' => '编辑部门', + 'name' => 'auth.departments.update', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.departments.update', + 'parent_id' => 0, // 稍后更新为部门管理菜单的ID + 'path' => 'admin.departments.update', 'component' => null, 'meta' => null, 'sort' => 3, 'status' => 1, ], [ - 'name' => '删除部门', - 'code' => 'system.departments.delete', + 'title' => '删除部门', + 'name' => 'auth.departments.delete', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.departments.destroy', + 'parent_id' => 0, // 稍后更新为部门管理菜单的ID + 'path' => 'admin.departments.destroy', 'component' => null, 'meta' => null, 'sort' => 4, 'status' => 1, ], [ - 'name' => '批量删除部门', - 'code' => 'system.departments.batch-delete', + 'title' => '批量删除部门', + 'name' => 'auth.departments.batch-delete', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.departments.batch-delete', + 'parent_id' => 0, // 稍后更新为部门管理菜单的ID + 'path' => 'admin.departments.batch-delete', 'component' => null, 'meta' => null, 'sort' => 5, @@ -394,6 +477,181 @@ class AuthSeeder extends Seeder foreach ($permissions as $permission) { Permission::create($permission); } + + // 更新parent_id + $this->updateParentIds(); + } + + /** + * 更新parent_id,建立层级关系 + */ + private function updateParentIds(): void + { + $permissions = Permission::all(); + + // 获取顶级菜单ID + $homeMenu = $permissions->where('name', 'home')->first(); + $authMenu = $permissions->where('name', 'auth')->first(); + + // 获取首页子菜单ID + $dashboardMenu = $permissions->where('name', 'home.dashboard')->first(); + $profileMenu = $permissions->where('name', 'home.profile')->first(); + + // 获取权限子菜单ID + $usersMenu = $permissions->where('name', 'auth.users')->first(); + $rolesMenu = $permissions->where('name', 'auth.roles')->first(); + $permissionsMenu = $permissions->where('name', 'auth.permissions')->first(); + $departmentsMenu = $permissions->where('name', 'auth.departments')->first(); + + // 更新首页子菜单的parent_id + if ($homeMenu) { + if ($dashboardMenu) { + $dashboardMenu->update(['parent_id' => $homeMenu->id]); + } + if ($profileMenu) { + $profileMenu->update(['parent_id' => $homeMenu->id]); + } + } + + // 更新权限子菜单的parent_id + if ($authMenu) { + if ($usersMenu) { + $usersMenu->update(['parent_id' => $authMenu->id]); + } + if ($rolesMenu) { + $rolesMenu->update(['parent_id' => $authMenu->id]); + } + if ($permissionsMenu) { + $permissionsMenu->update(['parent_id' => $authMenu->id]); + } + if ($departmentsMenu) { + $departmentsMenu->update(['parent_id' => $authMenu->id]); + } + } + + // 更新按钮权限的parent_id - 首页部分 + $profileViewBtn = $permissions->where('name', 'home.profile.view')->first(); + $profileUpdateBtn = $permissions->where('name', 'home.profile.update')->first(); + $profilePasswordBtn = $permissions->where('name', 'home.profile.change-password')->first(); + if ($profileMenu) { + if ($profileViewBtn) { + $profileViewBtn->update(['parent_id' => $profileMenu->id]); + } + if ($profileUpdateBtn) { + $profileUpdateBtn->update(['parent_id' => $profileMenu->id]); + } + if ($profilePasswordBtn) { + $profilePasswordBtn->update(['parent_id' => $profileMenu->id]); + } + } + + // 更新按钮权限的parent_id - 用户管理 + $userViewBtn = $permissions->where('name', 'auth.users.view')->first(); + $userCreateBtn = $permissions->where('name', 'auth.users.create')->first(); + $userUpdateBtn = $permissions->where('name', 'auth.users.update')->first(); + $userDeleteBtn = $permissions->where('name', 'auth.users.delete')->first(); + $userBatchDeleteBtn = $permissions->where('name', 'auth.users.batch-delete')->first(); + $userExportBtn = $permissions->where('name', 'auth.users.export')->first(); + $userImportBtn = $permissions->where('name', 'auth.users.import')->first(); + if ($usersMenu) { + if ($userViewBtn) { + $userViewBtn->update(['parent_id' => $usersMenu->id]); + } + if ($userCreateBtn) { + $userCreateBtn->update(['parent_id' => $usersMenu->id]); + } + if ($userUpdateBtn) { + $userUpdateBtn->update(['parent_id' => $usersMenu->id]); + } + if ($userDeleteBtn) { + $userDeleteBtn->update(['parent_id' => $usersMenu->id]); + } + if ($userBatchDeleteBtn) { + $userBatchDeleteBtn->update(['parent_id' => $usersMenu->id]); + } + if ($userExportBtn) { + $userExportBtn->update(['parent_id' => $usersMenu->id]); + } + if ($userImportBtn) { + $userImportBtn->update(['parent_id' => $usersMenu->id]); + } + } + + // 更新按钮权限的parent_id - 角色管理 + $roleViewBtn = $permissions->where('name', 'auth.roles.view')->first(); + $roleCreateBtn = $permissions->where('name', 'auth.roles.create')->first(); + $roleUpdateBtn = $permissions->where('name', 'auth.roles.update')->first(); + $roleDeleteBtn = $permissions->where('name', 'auth.roles.delete')->first(); + $roleBatchDeleteBtn = $permissions->where('name', 'auth.roles.batch-delete')->first(); + $roleAssignBtn = $permissions->where('name', 'auth.roles.assign-permissions')->first(); + if ($rolesMenu) { + if ($roleViewBtn) { + $roleViewBtn->update(['parent_id' => $rolesMenu->id]); + } + if ($roleCreateBtn) { + $roleCreateBtn->update(['parent_id' => $rolesMenu->id]); + } + if ($roleUpdateBtn) { + $roleUpdateBtn->update(['parent_id' => $rolesMenu->id]); + } + if ($roleDeleteBtn) { + $roleDeleteBtn->update(['parent_id' => $rolesMenu->id]); + } + if ($roleBatchDeleteBtn) { + $roleBatchDeleteBtn->update(['parent_id' => $rolesMenu->id]); + } + if ($roleAssignBtn) { + $roleAssignBtn->update(['parent_id' => $rolesMenu->id]); + } + } + + // 更新按钮权限的parent_id - 权限管理 + $permViewBtn = $permissions->where('name', 'auth.permissions.view')->first(); + $permCreateBtn = $permissions->where('name', 'auth.permissions.create')->first(); + $permUpdateBtn = $permissions->where('name', 'auth.permissions.update')->first(); + $permDeleteBtn = $permissions->where('name', 'auth.permissions.delete')->first(); + $permBatchDeleteBtn = $permissions->where('name', 'auth.permissions.batch-delete')->first(); + if ($permissionsMenu) { + if ($permViewBtn) { + $permViewBtn->update(['parent_id' => $permissionsMenu->id]); + } + if ($permCreateBtn) { + $permCreateBtn->update(['parent_id' => $permissionsMenu->id]); + } + if ($permUpdateBtn) { + $permUpdateBtn->update(['parent_id' => $permissionsMenu->id]); + } + if ($permDeleteBtn) { + $permDeleteBtn->update(['parent_id' => $permissionsMenu->id]); + } + if ($permBatchDeleteBtn) { + $permBatchDeleteBtn->update(['parent_id' => $permissionsMenu->id]); + } + } + + // 更新按钮权限的parent_id - 部门管理 + $deptViewBtn = $permissions->where('name', 'auth.departments.view')->first(); + $deptCreateBtn = $permissions->where('name', 'auth.departments.create')->first(); + $deptUpdateBtn = $permissions->where('name', 'auth.departments.update')->first(); + $deptDeleteBtn = $permissions->where('name', 'auth.departments.delete')->first(); + $deptBatchDeleteBtn = $permissions->where('name', 'auth.departments.batch-delete')->first(); + if ($departmentsMenu) { + if ($deptViewBtn) { + $deptViewBtn->update(['parent_id' => $departmentsMenu->id]); + } + if ($deptCreateBtn) { + $deptCreateBtn->update(['parent_id' => $departmentsMenu->id]); + } + if ($deptUpdateBtn) { + $deptUpdateBtn->update(['parent_id' => $departmentsMenu->id]); + } + if ($deptDeleteBtn) { + $deptDeleteBtn->update(['parent_id' => $departmentsMenu->id]); + } + if ($deptBatchDeleteBtn) { + $deptBatchDeleteBtn->update(['parent_id' => $departmentsMenu->id]); + } + } } /** diff --git a/database/seeders/SystemSeeder.php b/database/seeders/SystemSeeder.php index b7187d4..e8bd8c8 100644 --- a/database/seeders/SystemSeeder.php +++ b/database/seeders/SystemSeeder.php @@ -48,72 +48,88 @@ class SystemSeeder extends Seeder private function createSystemPermissions(): void { $permissions = [ - // 系统配置 + // 系统顶级菜单 [ - 'name' => '系统配置', - 'code' => 'system.config', + 'title' => '系统', + 'name' => 'system', 'type' => 'menu', 'parent_id' => 0, - 'route' => '/system/config', + 'path' => '/system', + 'component' => null, + 'meta' => json_encode([ + 'icon' => 'Setting', + 'hidden' => false, + 'hiddenBreadcrumb' => false, + ]), + 'sort' => 3, + 'status' => 1, + ], + // 系统配置 + [ + 'title' => '系统配置', + 'name' => 'system.config', + 'type' => 'menu', + 'parent_id' => 0, // 稍后更新为系统菜单的ID + 'path' => '/system/config', 'component' => 'system/config/index', 'meta' => json_encode([ 'icon' => 'SettingFilled', 'hidden' => false, 'hiddenBreadcrumb' => false, ]), - 'sort' => 6, + 'sort' => 1, 'status' => 1, ], [ - 'name' => '查看配置', - 'code' => 'system.config.view', + 'title' => '查看配置', + 'name' => 'system.config.view', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.config.index', + 'parent_id' => 0, // 稍后更新为系统配置菜单的ID + 'path' => 'admin.config.index', 'component' => null, 'meta' => null, 'sort' => 1, 'status' => 1, ], [ - 'name' => '创建配置', - 'code' => 'system.config.create', + 'title' => '创建配置', + 'name' => 'system.config.create', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.config.store', + 'parent_id' => 0, // 稍后更新为系统配置菜单的ID + 'path' => 'admin.config.store', 'component' => null, 'meta' => null, 'sort' => 2, 'status' => 1, ], [ - 'name' => '编辑配置', - 'code' => 'system.config.update', + 'title' => '编辑配置', + 'name' => 'system.config.update', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.config.update', + 'parent_id' => 0, // 稍后更新为系统配置菜单的ID + 'path' => 'admin.config.update', 'component' => null, 'meta' => null, 'sort' => 3, 'status' => 1, ], [ - 'name' => '删除配置', - 'code' => 'system.config.delete', + 'title' => '删除配置', + 'name' => 'system.config.delete', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.config.destroy', + 'parent_id' => 0, // 稍后更新为系统配置菜单的ID + 'path' => 'admin.config.destroy', 'component' => null, 'meta' => null, 'sort' => 4, 'status' => 1, ], [ - 'name' => '批量删除配置', - 'code' => 'system.config.batch-delete', + 'title' => '批量删除配置', + 'name' => 'system.config.batch-delete', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.config.batch-delete', + 'parent_id' => 0, // 稍后更新为系统配置菜单的ID + 'path' => 'admin.config.batch-delete', 'component' => null, 'meta' => null, 'sort' => 5, @@ -122,59 +138,59 @@ class SystemSeeder extends Seeder // 系统日志 [ - 'name' => '系统日志', - 'code' => 'system.logs', + 'title' => '系统日志', + 'name' => 'system.logs', 'type' => 'menu', - 'parent_id' => 0, - 'route' => '/system/logs', + 'parent_id' => 0, // 稍后更新为系统菜单的ID + 'path' => '/system/logs', 'component' => 'system/logs/index', 'meta' => json_encode([ 'icon' => 'DocumentCopy', 'hidden' => false, 'hiddenBreadcrumb' => false, ]), - 'sort' => 7, + 'sort' => 2, 'status' => 1, ], [ - 'name' => '查看日志', - 'code' => 'system.logs.view', + 'title' => '查看日志', + 'name' => 'system.logs.view', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.logs.index', + 'parent_id' => 0, // 稍后更新为系统日志菜单的ID + 'path' => 'admin.logs.index', 'component' => null, 'meta' => null, 'sort' => 1, 'status' => 1, ], [ - 'name' => '删除日志', - 'code' => 'system.logs.delete', + 'title' => '删除日志', + 'name' => 'system.logs.delete', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.logs.destroy', + 'parent_id' => 0, // 稍后更新为系统日志菜单的ID + 'path' => 'admin.logs.destroy', 'component' => null, 'meta' => null, 'sort' => 2, 'status' => 1, ], [ - 'name' => '批量删除日志', - 'code' => 'system.logs.batch-delete', + 'title' => '批量删除日志', + 'name' => 'system.logs.batch-delete', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.logs.batch-delete', + 'parent_id' => 0, // 稍后更新为系统日志菜单的ID + 'path' => 'admin.logs.batch-delete', 'component' => null, 'meta' => null, 'sort' => 3, 'status' => 1, ], [ - 'name' => '导出日志', - 'code' => 'system.logs.export', + 'title' => '导出日志', + 'name' => 'system.logs.export', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.logs.export', + 'parent_id' => 0, // 稍后更新为系统日志菜单的ID + 'path' => 'admin.logs.export', 'component' => null, 'meta' => null, 'sort' => 4, @@ -183,70 +199,70 @@ class SystemSeeder extends Seeder // 数据字典 [ - 'name' => '数据字典', - 'code' => 'system.dictionaries', + 'title' => '数据字典', + 'name' => 'system.dictionaries', 'type' => 'menu', - 'parent_id' => 0, - 'route' => '/system/dictionaries', + 'parent_id' => 0, // 稍后更新为系统菜单的ID + 'path' => '/system/dictionaries', 'component' => 'system/dictionaries/index', 'meta' => json_encode([ 'icon' => 'Notebook', 'hidden' => false, 'hiddenBreadcrumb' => false, ]), - 'sort' => 8, + 'sort' => 3, 'status' => 1, ], [ - 'name' => '查看字典', - 'code' => 'system.dictionaries.view', + 'title' => '查看字典', + 'name' => 'system.dictionaries.view', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.dictionaries.index', + 'parent_id' => 0, // 稍后更新为数据字典菜单的ID + 'path' => 'admin.dictionaries.index', 'component' => null, 'meta' => null, 'sort' => 1, 'status' => 1, ], [ - 'name' => '创建字典', - 'code' => 'system.dictionaries.create', + 'title' => '创建字典', + 'name' => 'system.dictionaries.create', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.dictionaries.store', + 'parent_id' => 0, // 稍后更新为数据字典菜单的ID + 'path' => 'admin.dictionaries.store', 'component' => null, 'meta' => null, 'sort' => 2, 'status' => 1, ], [ - 'name' => '编辑字典', - 'code' => 'system.dictionaries.update', + 'title' => '编辑字典', + 'name' => 'system.dictionaries.update', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.dictionaries.update', + 'parent_id' => 0, // 稍后更新为数据字典菜单的ID + 'path' => 'admin.dictionaries.update', 'component' => null, 'meta' => null, 'sort' => 3, 'status' => 1, ], [ - 'name' => '删除字典', - 'code' => 'system.dictionaries.delete', + 'title' => '删除字典', + 'name' => 'system.dictionaries.delete', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.dictionaries.destroy', + 'parent_id' => 0, // 稍后更新为数据字典菜单的ID + 'path' => 'admin.dictionaries.destroy', 'component' => null, 'meta' => null, 'sort' => 4, 'status' => 1, ], [ - 'name' => '批量删除字典', - 'code' => 'system.dictionaries.batch-delete', + 'title' => '批量删除字典', + 'name' => 'system.dictionaries.batch-delete', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.dictionaries.batch-delete', + 'parent_id' => 0, // 稍后更新为数据字典菜单的ID + 'path' => 'admin.dictionaries.batch-delete', 'component' => null, 'meta' => null, 'sort' => 5, @@ -255,130 +271,253 @@ class SystemSeeder extends Seeder // 定时任务 [ - 'name' => '定时任务', - 'code' => 'system.tasks', + 'title' => '定时任务', + 'name' => 'system.tasks', 'type' => 'menu', - 'parent_id' => 0, - 'route' => '/system/tasks', + 'parent_id' => 0, // 稍后更新为系统菜单的ID + 'path' => '/system/tasks', 'component' => 'system/tasks/index', 'meta' => json_encode([ 'icon' => 'Timer', 'hidden' => false, 'hiddenBreadcrumb' => false, ]), - 'sort' => 9, + 'sort' => 4, 'status' => 1, ], [ - 'name' => '查看任务', - 'code' => 'system.tasks.view', + 'title' => '查看任务', + 'name' => 'system.tasks.view', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.tasks.index', + 'parent_id' => 0, // 稍后更新为定时任务菜单的ID + 'path' => 'admin.tasks.index', 'component' => null, 'meta' => null, 'sort' => 1, 'status' => 1, ], [ - 'name' => '创建任务', - 'code' => 'system.tasks.create', + 'title' => '创建任务', + 'name' => 'system.tasks.create', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.tasks.store', + 'parent_id' => 0, // 稍后更新为定时任务菜单的ID + 'path' => 'admin.tasks.store', 'component' => null, 'meta' => null, 'sort' => 2, 'status' => 1, ], [ - 'name' => '编辑任务', - 'code' => 'system.tasks.update', + 'title' => '编辑任务', + 'name' => 'system.tasks.update', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.tasks.update', + 'parent_id' => 0, // 稍后更新为定时任务菜单的ID + 'path' => 'admin.tasks.update', 'component' => null, 'meta' => null, 'sort' => 3, 'status' => 1, ], [ - 'name' => '删除任务', - 'code' => 'system.tasks.delete', + 'title' => '删除任务', + 'name' => 'system.tasks.delete', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.tasks.destroy', + 'parent_id' => 0, // 稍后更新为定时任务菜单的ID + 'path' => 'admin.tasks.destroy', 'component' => null, 'meta' => null, 'sort' => 4, 'status' => 1, ], [ - 'name' => '批量删除任务', - 'code' => 'system.tasks.batch-delete', + 'title' => '批量删除任务', + 'name' => 'system.tasks.batch-delete', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.tasks.batch-delete', + 'parent_id' => 0, // 稍后更新为定时任务菜单的ID + 'path' => 'admin.tasks.batch-delete', 'component' => null, 'meta' => null, 'sort' => 5, 'status' => 1, ], [ - 'name' => '执行任务', - 'code' => 'system.tasks.execute', + 'title' => '执行任务', + 'name' => 'system.tasks.execute', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.tasks.execute', + 'parent_id' => 0, // 稍后更新为定时任务菜单的ID + 'path' => 'admin.tasks.execute', 'component' => null, 'meta' => null, 'sort' => 6, 'status' => 1, ], [ - 'name' => '启用任务', - 'code' => 'system.tasks.enable', + 'title' => '启用任务', + 'name' => 'system.tasks.enable', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.tasks.enable', + 'parent_id' => 0, // 稍后更新为定时任务菜单的ID + 'path' => 'admin.tasks.enable', 'component' => null, 'meta' => null, 'sort' => 7, 'status' => 1, ], [ - 'name' => '禁用任务', - 'code' => 'system.tasks.disable', + 'title' => '禁用任务', + 'name' => 'system.tasks.disable', 'type' => 'button', - 'parent_id' => 0, - 'route' => 'admin.tasks.disable', + 'parent_id' => 0, // 稍后更新为定时任务菜单的ID + 'path' => 'admin.tasks.disable', 'component' => null, 'meta' => null, 'sort' => 8, 'status' => 1, ], - - // 个人中心 - [ - 'name' => '个人中心', - 'code' => 'system.profile', - 'type' => 'menu', - 'parent_id' => 0, - 'route' => '/system/profile', - 'component' => 'system/profile/index', - 'meta' => json_encode([ - 'icon' => 'UserFilled', - 'hidden' => false, - 'hiddenBreadcrumb' => false, - ]), - 'sort' => 10, - 'status' => 1, - ], ]; foreach ($permissions as $permission) { Permission::create($permission); } + + // 更新parent_id + $this->updateParentIds(); + } + + /** + * 更新parent_id,建立层级关系 + */ + private function updateParentIds(): void + { + $permissions = Permission::all(); + + // 获取系统顶级菜单ID + $systemMenu = $permissions->where('name', 'system')->first(); + + // 获取系统子菜单ID + $configMenu = $permissions->where('name', 'system.config')->first(); + $logsMenu = $permissions->where('name', 'system.logs')->first(); + $dictionariesMenu = $permissions->where('name', 'system.dictionaries')->first(); + $tasksMenu = $permissions->where('name', 'system.tasks')->first(); + + // 更新系统子菜单的parent_id + if ($systemMenu) { + if ($configMenu) { + $configMenu->update(['parent_id' => $systemMenu->id]); + } + if ($logsMenu) { + $logsMenu->update(['parent_id' => $systemMenu->id]); + } + if ($dictionariesMenu) { + $dictionariesMenu->update(['parent_id' => $systemMenu->id]); + } + if ($tasksMenu) { + $tasksMenu->update(['parent_id' => $systemMenu->id]); + } + } + + // 更新按钮权限的parent_id - 系统配置 + $configViewBtn = $permissions->where('name', 'system.config.view')->first(); + $configCreateBtn = $permissions->where('name', 'system.config.create')->first(); + $configUpdateBtn = $permissions->where('name', 'system.config.update')->first(); + $configDeleteBtn = $permissions->where('name', 'system.config.delete')->first(); + $configBatchDeleteBtn = $permissions->where('name', 'system.config.batch-delete')->first(); + if ($configMenu) { + if ($configViewBtn) { + $configViewBtn->update(['parent_id' => $configMenu->id]); + } + if ($configCreateBtn) { + $configCreateBtn->update(['parent_id' => $configMenu->id]); + } + if ($configUpdateBtn) { + $configUpdateBtn->update(['parent_id' => $configMenu->id]); + } + if ($configDeleteBtn) { + $configDeleteBtn->update(['parent_id' => $configMenu->id]); + } + if ($configBatchDeleteBtn) { + $configBatchDeleteBtn->update(['parent_id' => $configMenu->id]); + } + } + + // 更新按钮权限的parent_id - 系统日志 + $logsViewBtn = $permissions->where('name', 'system.logs.view')->first(); + $logsDeleteBtn = $permissions->where('name', 'system.logs.delete')->first(); + $logsBatchDeleteBtn = $permissions->where('name', 'system.logs.batch-delete')->first(); + $logsExportBtn = $permissions->where('name', 'system.logs.export')->first(); + if ($logsMenu) { + if ($logsViewBtn) { + $logsViewBtn->update(['parent_id' => $logsMenu->id]); + } + if ($logsDeleteBtn) { + $logsDeleteBtn->update(['parent_id' => $logsMenu->id]); + } + if ($logsBatchDeleteBtn) { + $logsBatchDeleteBtn->update(['parent_id' => $logsMenu->id]); + } + if ($logsExportBtn) { + $logsExportBtn->update(['parent_id' => $logsMenu->id]); + } + } + + // 更新按钮权限的parent_id - 数据字典 + $dictViewBtn = $permissions->where('name', 'system.dictionaries.view')->first(); + $dictCreateBtn = $permissions->where('name', 'system.dictionaries.create')->first(); + $dictUpdateBtn = $permissions->where('name', 'system.dictionaries.update')->first(); + $dictDeleteBtn = $permissions->where('name', 'system.dictionaries.delete')->first(); + $dictBatchDeleteBtn = $permissions->where('name', 'system.dictionaries.batch-delete')->first(); + if ($dictionariesMenu) { + if ($dictViewBtn) { + $dictViewBtn->update(['parent_id' => $dictionariesMenu->id]); + } + if ($dictCreateBtn) { + $dictCreateBtn->update(['parent_id' => $dictionariesMenu->id]); + } + if ($dictUpdateBtn) { + $dictUpdateBtn->update(['parent_id' => $dictionariesMenu->id]); + } + if ($dictDeleteBtn) { + $dictDeleteBtn->update(['parent_id' => $dictionariesMenu->id]); + } + if ($dictBatchDeleteBtn) { + $dictBatchDeleteBtn->update(['parent_id' => $dictionariesMenu->id]); + } + } + + // 更新按钮权限的parent_id - 定时任务 + $taskViewBtn = $permissions->where('name', 'system.tasks.view')->first(); + $taskCreateBtn = $permissions->where('name', 'system.tasks.create')->first(); + $taskUpdateBtn = $permissions->where('name', 'system.tasks.update')->first(); + $taskDeleteBtn = $permissions->where('name', 'system.tasks.delete')->first(); + $taskBatchDeleteBtn = $permissions->where('name', 'system.tasks.batch-delete')->first(); + $taskExecuteBtn = $permissions->where('name', 'system.tasks.execute')->first(); + $taskEnableBtn = $permissions->where('name', 'system.tasks.enable')->first(); + $taskDisableBtn = $permissions->where('name', 'system.tasks.disable')->first(); + if ($tasksMenu) { + if ($taskViewBtn) { + $taskViewBtn->update(['parent_id' => $tasksMenu->id]); + } + if ($taskCreateBtn) { + $taskCreateBtn->update(['parent_id' => $tasksMenu->id]); + } + if ($taskUpdateBtn) { + $taskUpdateBtn->update(['parent_id' => $tasksMenu->id]); + } + if ($taskDeleteBtn) { + $taskDeleteBtn->update(['parent_id' => $tasksMenu->id]); + } + if ($taskBatchDeleteBtn) { + $taskBatchDeleteBtn->update(['parent_id' => $tasksMenu->id]); + } + if ($taskExecuteBtn) { + $taskExecuteBtn->update(['parent_id' => $tasksMenu->id]); + } + if ($taskEnableBtn) { + $taskEnableBtn->update(['parent_id' => $tasksMenu->id]); + } + if ($taskDisableBtn) { + $taskDisableBtn->update(['parent_id' => $tasksMenu->id]); + } + } } /** diff --git a/resources/admin/src/layouts/components/navMenu.vue b/resources/admin/src/layouts/components/navMenu.vue index 798fb87..bb631ee 100644 --- a/resources/admin/src/layouts/components/navMenu.vue +++ b/resources/admin/src/layouts/components/navMenu.vue @@ -5,7 +5,7 @@ - + @@ -14,7 +14,7 @@ - {{ item.meta?.title || item.name }} + {{ item.title || item.name }} diff --git a/resources/admin/src/layouts/index.vue b/resources/admin/src/layouts/index.vue index b3ec299..a410a3e 100644 --- a/resources/admin/src/layouts/index.vue +++ b/resources/admin/src/layouts/index.vue @@ -12,7 +12,7 @@ :class="{ active: selectedParentMenu?.path === item.path }" @click="handleParentMenuClick(item)"> - {{ item.meta?.title }} + {{ item.title }} @@ -24,7 +24,7 @@ :collapsed-width="64" class="right-sidebar">
- {{ selectedParentMenu.meta?.title }} + {{ selectedParentMenu.title }}