From bcf3d9ec3498753a2211e021c4843ed7e544194d Mon Sep 17 00:00:00 2001 From: JaguarJack Date: Wed, 1 Mar 2023 15:11:53 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=8F=9C=E5=8D=95=E6=96=B0=E5=A2=9E=20?= =?UTF-8?q?active=5Fmenu=20=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/Permissions/Models/Permissions.php | 7 +- .../2022_12_07_103318_create_permissions.php | 1 - ...23_03_01_142043_create_remove_is_inner.php | 34 ++++ .../views/permissions/form/create.vue | 30 ++-- .../admin/components/breadcrumbs/index.vue | 13 +- resources/admin/components/editor/index.vue | 151 +++++++++--------- .../admin/stores/modules/user/permissions.ts | 2 +- resources/admin/styles/theme/dark.scss | 4 - resources/admin/support/http.ts | 2 + resources/admin/types/Menu.ts | 2 +- resources/admin/types/Permission.ts | 2 +- 11 files changed, 145 insertions(+), 103 deletions(-) create mode 100644 modules/Permissions/database/migrations/2023_03_01_142043_create_remove_is_inner.php diff --git a/modules/Permissions/Models/Permissions.php b/modules/Permissions/Models/Permissions.php index 2130799..831a2a4 100644 --- a/modules/Permissions/Models/Permissions.php +++ b/modules/Permissions/Models/Permissions.php @@ -26,6 +26,7 @@ use Modules\Permissions\Enums\MenuType; * @property $type * @property $hidden * @property $sort + * @property $active_menu * @property $creator_id * @property $created_at * @property $updated_at @@ -35,19 +36,19 @@ class Permissions extends Model { protected $table = 'permissions'; - protected $fillable = ['id', 'parent_id', 'permission_name', 'route', 'icon', 'module', 'permission_mark', 'component', 'redirect', 'keepalive', 'type', 'hidden', 'is_inner', 'sort', 'creator_id', 'created_at', 'updated_at', 'deleted_at']; + protected $fillable = ['id', 'parent_id', 'permission_name', 'route', 'icon', 'module', 'permission_mark', 'component', 'redirect', 'keepalive', 'type', 'hidden', 'active_menu', 'sort', 'creator_id', 'created_at', 'updated_at', 'deleted_at']; /** * @var array */ - protected array $fields = ['id','parent_id','permission_name','route','icon','module','permission_mark','component','redirect','keepalive','type','hidden','is_inner','sort','created_at','updated_at']; + protected array $fields = ['id','parent_id','permission_name','route','icon','module','permission_mark','component','redirect','keepalive','type','hidden','active_menu','sort','created_at','updated_at']; protected bool $isPaginate = false; /** * @var array */ - protected array $form = ['parent_id','permission_name','route','icon','module','permission_mark','component','redirect','keepalive','type','is_inner', 'hidden','sort']; + protected array $form = ['parent_id','permission_name','route','icon','module','permission_mark','component','redirect','keepalive','type','active_menu', 'hidden','sort']; /** * @var array diff --git a/modules/Permissions/database/migrations/2022_12_07_103318_create_permissions.php b/modules/Permissions/database/migrations/2022_12_07_103318_create_permissions.php index e34eccd..709ce94 100644 --- a/modules/Permissions/database/migrations/2022_12_07_103318_create_permissions.php +++ b/modules/Permissions/database/migrations/2022_12_07_103318_create_permissions.php @@ -28,7 +28,6 @@ return new class () extends Migration { $table->string('redirect')->nullable()->comment('跳转地址'); $table->tinyInteger('keepalive')->default(1)->comment('1 缓存 2 不缓存'); $table->tinyInteger('type')->default(1)->comment('1 目录 2 菜单 3 按钮'); - $table->tinyInteger('is_inner')->default(2)->comment('1 是 2 否'); $table->tinyInteger('hidden')->default(1)->comment('1 显示 2 隐藏'); $table->integer('sort')->default(1)->comment('排序'); $table->creatorId(); diff --git a/modules/Permissions/database/migrations/2023_03_01_142043_create_remove_is_inner.php b/modules/Permissions/database/migrations/2023_03_01_142043_create_remove_is_inner.php new file mode 100644 index 0000000..c1a96e0 --- /dev/null +++ b/modules/Permissions/database/migrations/2023_03_01_142043_create_remove_is_inner.php @@ -0,0 +1,34 @@ +removeColumn('is_inner'); + } + + $table->string('active_menu')->default('')->comment('访问内页时,需要激活的菜单栏')->after('sort'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down(): void + { + + } +}; diff --git a/modules/Permissions/views/permissions/form/create.vue b/modules/Permissions/views/permissions/form/create.vue index ce5a531..083ffca 100644 --- a/modules/Permissions/views/permissions/form/create.vue +++ b/modules/Permissions/views/permissions/form/create.vue @@ -32,20 +32,6 @@ - - - {{ item.label }} - -
@@ -92,6 +78,16 @@
+
+ +
+ + +
说明
+
+
+
+
{{ $t('system.confirm') }}
@@ -115,6 +111,9 @@ const props = defineProps({ api: String, }) +const activeMenuIntro = + '
如果是访问内页的菜单路由,例如创建文章 create/post, 虽然它隶属于文章列表,但实际上并不会嵌套在文章列表路由里
而是单独的一个路由,并且是不显示在左侧菜单的。所以在访问它的时候,需要左侧菜单高亮,则需要设置该参数
' + const { formData, form, loading, submitForm, close, beforeCreate, beforeUpdate } = useCreate(props.api, props.primary) // 选择 icon @@ -128,13 +127,12 @@ const closeSelectIcon = () => { const defaultSort = 1 const defaultKeepalive = 1 const defaultHidden = 1 -const defaultIsInner = 2 + // 初始化 formData.value.sort = defaultSort formData.value.keepalive = defaultKeepalive formData.value.type = MenuType.TOP_TYPE formData.value.hidden = defaultHidden -formData.value.is_inner = defaultIsInner // 默认目录 const isTop = ref(true) diff --git a/resources/admin/components/breadcrumbs/index.vue b/resources/admin/components/breadcrumbs/index.vue index 5c06a1d..174a6a8 100644 --- a/resources/admin/components/breadcrumbs/index.vue +++ b/resources/admin/components/breadcrumbs/index.vue @@ -19,9 +19,9 @@ const breadcrumbs = ref([]) // 监听当前路由的变化 watch(router.currentRoute, (newValue, oldValue) => { - // 如果是内页,则不切换激活菜单 - if (newValue.meta.is_inner === undefined || !newValue.meta.is_inner) { - appStore.setActiveMenu(newValue.path) + // 激活菜单 + if (newValue.meta.active_menu) { + appStore.setActiveMenu(newValue.meta.active_menu) } getBreadcrumbs(newValue) }) @@ -29,7 +29,12 @@ watch(router.currentRoute, (newValue, oldValue) => { // get init breadcrumb onMounted(() => { if (router.currentRoute.value.path !== '/') { - appStore.setActiveMenu(router.currentRoute.value.path) + // 如果是内页,并且设置激活菜单 + if (router.currentRoute.value.meta.active_menu) { + appStore.setActiveMenu(router.currentRoute.value.meta.active_menu) + } else { + appStore.setActiveMenu(router.currentRoute.value.path) + } } getBreadcrumbs(router.currentRoute.value) diff --git a/resources/admin/components/editor/index.vue b/resources/admin/components/editor/index.vue index 6ca6c8b..fb7ce4f 100644 --- a/resources/admin/components/editor/index.vue +++ b/resources/admin/components/editor/index.vue @@ -1,103 +1,110 @@ diff --git a/resources/admin/stores/modules/user/permissions.ts b/resources/admin/stores/modules/user/permissions.ts index bfdd044..5ce9131 100644 --- a/resources/admin/stores/modules/user/permissions.ts +++ b/resources/admin/stores/modules/user/permissions.ts @@ -138,7 +138,7 @@ export const usePermissionsStore = defineStore('PermissionsStore', { name: permission.module + '_' + permission.permission_mark, component: importComponent, redirect: permission.redirect, - meta: Object.assign({ title: permission.permission_name, icon: permission.icon, hidden: permission.hidden, is_inner: permission.is_inner }), + meta: Object.assign({ title: permission.permission_name, icon: permission.icon, hidden: permission.hidden, active_menu: permission.active_menu }), }) // child menu diff --git a/resources/admin/styles/theme/dark.scss b/resources/admin/styles/theme/dark.scss index 313aee0..c78dfba 100644 --- a/resources/admin/styles/theme/dark.scss +++ b/resources/admin/styles/theme/dark.scss @@ -19,16 +19,12 @@ html.dark { /* 自定义深色背景颜色 */ --el-bg-color: var(--sider-sub-menu-hover-bg-color); - --el-fill-color-blank: var(--sider-bg-color); - --el-bg-color-overlay: var(--sider-bg-color); - --header-bg-color: var(--sider-bg-color); // border color --el-border-color-lighter: #3b4253; - --el-fill-color-light: #161d31; // side sub menu margin diff --git a/resources/admin/support/http.ts b/resources/admin/support/http.ts index eed7728..c63d3e3 100644 --- a/resources/admin/support/http.ts +++ b/resources/admin/support/http.ts @@ -141,6 +141,8 @@ class Http { // set ajax request this.headers['X-Requested-With'] = 'XMLHttpRequest' + // set dashboard request + this.headers['Request-from'] = 'Dashboard' this.config.headers = this.headers return this.config diff --git a/resources/admin/types/Menu.ts b/resources/admin/types/Menu.ts index c469940..e5a107e 100644 --- a/resources/admin/types/Menu.ts +++ b/resources/admin/types/Menu.ts @@ -14,7 +14,7 @@ export interface Meta { keepalive?: boolean - is_inner?: boolean + active_menu?: string } // @ts-ignore diff --git a/resources/admin/types/Permission.ts b/resources/admin/types/Permission.ts index 604a95d..e60a02b 100644 --- a/resources/admin/types/Permission.ts +++ b/resources/admin/types/Permission.ts @@ -11,5 +11,5 @@ export interface Permission { redirect: string keepAlive: boolean hidden: boolean - is_inner: boolean + active_menu: string }