From ebbd788fbb2c0b45d4473798efc57eec8ba74a25 Mon Sep 17 00:00:00 2001 From: Ben Lin <maobin001@msn.com> Date: 星期二, 18 六月 2024 14:51:16 +0800 Subject: [PATCH] 版本更新至2.11.5 --- src/layouts/default/menu/index.vue | 328 +++++++++++++++++++++++++++--------------------------- 1 files changed, 164 insertions(+), 164 deletions(-) diff --git a/src/layouts/default/menu/index.vue b/src/layouts/default/menu/index.vue index bd9982c..259b133 100644 --- a/src/layouts/default/menu/index.vue +++ b/src/layouts/default/menu/index.vue @@ -1,118 +1,118 @@ <script lang="tsx"> -import type { PropType, CSSProperties } from 'vue'; + import type { PropType, CSSProperties } from 'vue'; -import { computed, defineComponent, unref, toRef } from 'vue'; -import { BasicMenu } from '/@/components/Menu'; -import { SimpleMenu } from '/@/components/SimpleMenu'; -import { AppLogo } from '/@/components/Application'; + import { computed, defineComponent, unref, toRef } from 'vue'; + import { BasicMenu } from '@/components/Menu'; + import { SimpleMenu } from '@/components/SimpleMenu'; + import { AppLogo } from '@/components/Application'; -import { MenuModeEnum, MenuSplitTyeEnum } from '/@/enums/menuEnum'; + import { MenuModeEnum, MenuSplitTyeEnum } from '@/enums/menuEnum'; -import { useMenuSetting } from '/@/hooks/setting/useMenuSetting'; -import { ScrollContainer } from '/@/components/Container'; + import { useMenuSetting } from '@/hooks/setting/useMenuSetting'; + import { ScrollContainer } from '@/components/Container'; -import { useGo } from '/@/hooks/web/usePage'; -import { useSplitMenu } from './useLayoutMenu'; -import { openWindow } from '/@/utils'; -import { propTypes } from '/@/utils/propTypes'; -import { isNullOrUnDef, isUrl } from '/@/utils/is'; -import { useRootSetting } from '/@/hooks/setting/useRootSetting'; -import { useAppInject } from '/@/hooks/web/useAppInject'; -import { useDesign } from '/@/hooks/web/useDesign'; + import { useGo } from '@/hooks/web/usePage'; + import { useSplitMenu } from './useLayoutMenu'; + import { openWindow } from '@/utils'; + import { propTypes } from '@/utils/propTypes'; + import { isHttpUrl, isNullOrUnDef } from '@/utils/is'; + import { useRootSetting } from '@/hooks/setting/useRootSetting'; + import { useAppInject } from '@/hooks/web/useAppInject'; + import { useDesign } from '@/hooks/web/useDesign'; import { getEntity } from '/@/api/tigerapi/system'; -export default defineComponent({ - name: 'LayoutMenu', - props: { - theme: propTypes.oneOf(['light', 'dark']), + export default defineComponent({ + name: 'LayoutMenu', + props: { + theme: propTypes.oneOf(['light', 'dark']), - splitType: { - type: Number as PropType<MenuSplitTyeEnum>, - default: MenuSplitTyeEnum.NONE, + splitType: { + type: Number as PropType<MenuSplitTyeEnum>, + default: MenuSplitTyeEnum.NONE, + }, + + isHorizontal: propTypes.bool, + // menu Mode + menuMode: { + type: [String] as PropType<MenuModeEnum | null>, + default: '', + }, }, + setup(props) { + const go = useGo(); - isHorizontal: propTypes.bool, - // menu Mode - menuMode: { - type: [String] as PropType<MenuModeEnum | null>, - default: '', - }, - }, - setup(props) { - const go = useGo(); + const { + getMenuMode, + getMenuType, + getMenuTheme, + getCollapsed, + getCollapsedShowTitle, + getAccordion, + getIsHorizontal, + getIsSidebarType, + getSplit, + } = useMenuSetting(); + const { getShowLogo } = useRootSetting(); - const { - getMenuMode, - getMenuType, - getMenuTheme, - getCollapsed, - getCollapsedShowTitle, - getAccordion, - getIsHorizontal, - getIsSidebarType, - getSplit, - } = useMenuSetting(); - const { getShowLogo } = useRootSetting(); + const { prefixCls } = useDesign('layout-menu'); - const { prefixCls } = useDesign('layout-menu'); + const { menusRef } = useSplitMenu(toRef(props, 'splitType')); - const { menusRef } = useSplitMenu(toRef(props, 'splitType')); + const { getIsMobile } = useAppInject(); - const { getIsMobile } = useAppInject(); - - const getComputedMenuMode = computed(() => - unref(getIsMobile) ? MenuModeEnum.INLINE : props.menuMode || unref(getMenuMode), - ); - - const getComputedMenuTheme = computed(() => props.theme || unref(getMenuTheme)); - - const getIsShowLogo = computed(() => unref(getShowLogo) && unref(getIsSidebarType)); - - const getUseScroll = computed(() => { - return ( - !unref(getIsHorizontal) && - (unref(getIsSidebarType) || - props.splitType === MenuSplitTyeEnum.LEFT || - props.splitType === MenuSplitTyeEnum.NONE) + const getComputedMenuMode = computed(() => + unref(getIsMobile) ? MenuModeEnum.INLINE : props.menuMode || unref(getMenuMode), ); - }); - const getWrapperStyle = computed((): CSSProperties => { - return { - height: `calc(100% - ${unref(getIsShowLogo) ? '48px' : '0px'})`, - }; - }); + const getComputedMenuTheme = computed(() => props.theme || unref(getMenuTheme)); - const getLogoClass = computed(() => { - return [ - `${prefixCls}-logo`, - unref(getComputedMenuTheme), - { - [`${prefixCls}--mobile`]: unref(getIsMobile), - }, - ]; - }); + const getIsShowLogo = computed(() => unref(getShowLogo) && unref(getIsSidebarType)); - const getCommonProps = computed(() => { - const menus = unref(menusRef); - return { - menus, - beforeClickFn: beforeMenuClickFn, - items: menus, - theme: unref(getComputedMenuTheme), - accordion: unref(getAccordion), - collapse: unref(getCollapsed), - collapsedShowTitle: unref(getCollapsedShowTitle), - onMenuClick: handleMenuClick, - }; - }); - /** - * click menu - * @param menu - */ + const getUseScroll = computed(() => { + return ( + !unref(getIsHorizontal) && + (unref(getIsSidebarType) || + props.splitType === MenuSplitTyeEnum.LEFT || + props.splitType === MenuSplitTyeEnum.NONE) + ); + }); - function handleMenuClick(path: string) { - if (path.split('/').length > 2 && path.split('/')[2] == 'LC') { + const getWrapperStyle = computed((): CSSProperties => { + return { + height: `calc(100% - ${unref(getIsShowLogo) ? '48px' : '0px'})`, + }; + }); + + const getLogoClass = computed(() => { + return [ + `${prefixCls}-logo`, + unref(getComputedMenuTheme), + { + [`${prefixCls}--mobile`]: unref(getIsMobile), + }, + ]; + }); + + const getCommonProps = computed(() => { + const menus = unref(menusRef); + return { + menus, + beforeClickFn: beforeMenuClickFn, + items: menus, + theme: unref(getComputedMenuTheme), + accordion: unref(getAccordion), + collapse: unref(getCollapsed), + collapsedShowTitle: unref(getCollapsedShowTitle), + onMenuClick: handleMenuClick, + }; + }); + /** + * click menu + * @param menu + */ + + function handleMenuClick(path: string) { + if (path.split('/').length > 2 && path.split('/')[2] == 'LC') { getEntity({ sqlcmd: `ASSEMBLY_NAME ='${path.split('/')[1]}'`, entityName: 'SYS_LOW_CODE', @@ -141,86 +141,86 @@ } else { go(path); } - } - - /** - * before click menu - * @param menu - */ - async function beforeMenuClickFn(path: string) { - if (!isUrl(path)) { - return true; } - openWindow(path); - return false; - } - function renderHeader() { - if (!unref(getIsShowLogo) && !unref(getIsMobile)) return null; + /** + * before click menu + * @param menu + */ + async function beforeMenuClickFn(path: string) { + if (!isHttpUrl(path)) { + return true; + } + openWindow(path); + return false; + } - return ( - <AppLogo - showTitle={!unref(getCollapsed)} - class={unref(getLogoClass)} - theme={unref(getComputedMenuTheme)} - /> - ); - } + function renderHeader() { + if (!unref(getIsShowLogo) && !unref(getIsMobile)) return null; - function renderMenu() { - const { menus, ...menuProps } = unref(getCommonProps); - // console.log(menus); - if (!menus || !menus.length) return null; - return !props.isHorizontal ? ( - <SimpleMenu {...menuProps} isSplitMenu={unref(getSplit)} items={menus} /> - ) : ( - <BasicMenu - {...(menuProps as any)} - isHorizontal={props.isHorizontal} - type={unref(getMenuType)} - showLogo={unref(getIsShowLogo)} - mode={unref(getComputedMenuMode as any)} - items={menus} - /> - ); - } + return ( + <AppLogo + showTitle={!unref(getCollapsed)} + class={unref(getLogoClass)} + theme={unref(getComputedMenuTheme)} + /> + ); + } - return () => { - return ( - <> - {renderHeader()} - {unref(getUseScroll) ? ( - <ScrollContainer style={unref(getWrapperStyle)}>{() => renderMenu()}</ScrollContainer> - ) : ( - renderMenu() - )} - </> - ); - }; - }, -}); + function renderMenu() { + const { menus, ...menuProps } = unref(getCommonProps); + // console.log(menus); + if (!menus || !menus.length) return null; + return !props.isHorizontal ? ( + <SimpleMenu {...menuProps} isSplitMenu={unref(getSplit)} items={menus} /> + ) : ( + <BasicMenu + {...(menuProps as any)} + isHorizontal={props.isHorizontal} + type={unref(getMenuType)} + showLogo={unref(getIsShowLogo)} + mode={unref(getComputedMenuMode as any)} + items={menus} + /> + ); + } + + return () => { + return ( + <> + {renderHeader()} + {unref(getUseScroll) ? ( + <ScrollContainer style={unref(getWrapperStyle)}>{() => renderMenu()}</ScrollContainer> + ) : ( + renderMenu() + )} + </> + ); + }; + }, + }); </script> <style lang="less"> -@prefix-cls: ~'@{namespace}-layout-menu'; -@logo-prefix-cls: ~'@{namespace}-app-logo'; + @prefix-cls: ~'@{namespace}-layout-menu'; + @logo-prefix-cls: ~'@{namespace}-app-logo'; -.@{prefix-cls} { - &-logo { - height: @header-height; - padding: 10px 4px 10px 10px; + .@{prefix-cls} { + &-logo { + height: @header-height; + padding: 10px 4px 10px 10px; - img { - width: 150px; //@logo-width; - height: @logo-width; + img { + width: @logo-width; + height: @logo-width; + } } - } - &--mobile { - .@{logo-prefix-cls} { - &__title { - opacity: 1; + &--mobile { + .@{logo-prefix-cls} { + &__title { + opacity: 1; + } } } } -} </style> -- Gitblit v1.9.3