where('code', 'super_admin')->first(); if (! $role) { $this->command?->warn('未找到 super_admin,已跳过。'); return; } $workbench = Menu::query()->updateOrCreate( ['path' => '/workbench', 'parent_id' => null], [ 'name' => 'Workbench', 'title' => '工作台', 'component' => null, 'icon' => 'Monitor', 'sort' => 10, 'visible' => 1, 'keep_alive' => 0, 'permission_code' => null, 'status' => 1, ] ); // 若「地图」仍挂在「数据资产」下,删除重复项(保留工作台下的 /map) $assetsRoot = Menu::query()->where('path', '/assets')->whereNull('parent_id')->first(); if ($assetsRoot) { Menu::query() ->where('path', '/map') ->where('parent_id', $assetsRoot->id) ->delete(); } $dashboard = Menu::query()->updateOrCreate( ['path' => '/dashboard'], [ 'parent_id' => $workbench->id, 'name' => 'Dashboard', 'title' => '驾驶舱', 'component' => 'dashboard/index', 'icon' => 'Odometer', 'sort' => 10, 'visible' => 1, 'keep_alive' => 0, 'permission_code' => null, 'status' => 1, ] ); $map = Menu::query()->updateOrCreate( ['path' => '/map'], [ 'parent_id' => $workbench->id, 'name' => 'RadarMap', 'title' => '高校雷达网地图', 'component' => 'assets/map/index', 'icon' => 'MapLocation', 'sort' => 20, 'visible' => 1, 'keep_alive' => 1, 'permission_code' => null, 'status' => 1, ] ); $role->menus()->syncWithoutDetaching([$workbench->id, $dashboard->id, $map->id]); $this->command?->info('工作台菜单已就绪:驾驶舱、高校雷达网地图已归入工作台。'); } }