From e4f79a7e36214e5836cb0e667b3ffbd3db45456d Mon Sep 17 00:00:00 2001 From: Ben Lin <maobin001@msn.com> Date: 星期二, 22 十月 2024 23:54:26 +0800 Subject: [PATCH] 工单变量删除优化,预览优化 --- src/components/SimpleMenu/src/SimpleSubMenu.vue | 110 ++++++++++++++++++++++++------------------------------- 1 files changed, 48 insertions(+), 62 deletions(-) diff --git a/src/components/SimpleMenu/src/SimpleSubMenu.vue b/src/components/SimpleMenu/src/SimpleSubMenu.vue index e3e9a2e..255b7b2 100644 --- a/src/components/SimpleMenu/src/SimpleSubMenu.vue +++ b/src/components/SimpleMenu/src/SimpleSubMenu.vue @@ -5,6 +5,7 @@ v-bind="$props" :class="getLevelClass" > + <img v-if="getImg" :src="getImg" class="w-16px h-16px align-top" /> <Icon v-if="getIcon" :icon="getIcon" :size="16" /> <div v-if="collapsedShowTitle && getIsCollapseParent" class="mt-1 collapse-title"> {{ getI18nName }} @@ -23,6 +24,7 @@ :collapsedShowTitle="collapsedShowTitle" > <template #title> + <img v-if="getImg" :src="getImg" class="w-16px h-16px align-top" /> <Icon v-if="getIcon" :icon="getIcon" :size="16" /> <div v-if="collapsedShowTitle && getIsCollapseParent" class="mt-2 collapse-title"> @@ -42,75 +44,59 @@ </template> </SubMenu> </template> -<script lang="ts"> +<script lang="ts" setup> import type { PropType } from 'vue'; - import type { Menu } from '/@/router/types'; + import type { Menu } from '@/router/types'; - import { defineComponent, computed } from 'vue'; - import { useDesign } from '/@/hooks/web/useDesign'; + import { computed } from 'vue'; + import { useDesign } from '@/hooks/web/useDesign'; import Icon from '@/components/Icon/Icon.vue'; import MenuItem from './components/MenuItem.vue'; import SubMenu from './components/SubMenuItem.vue'; - import { propTypes } from '/@/utils/propTypes'; - import { useI18n } from '/@/hooks/web/useI18n'; - import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent'; + import { propTypes } from '@/utils/propTypes'; + import { useI18n } from '@/hooks/web/useI18n'; + import { createAsyncComponent } from '@/utils/factory/createAsyncComponent'; - export default defineComponent({ - name: 'SimpleSubMenu', - components: { - SubMenu, - MenuItem, - SimpleMenuTag: createAsyncComponent(() => import('./SimpleMenuTag.vue')), - Icon, + const SimpleMenuTag = createAsyncComponent(() => import('./SimpleMenuTag.vue')); + + defineOptions({ name: 'SimpleSubMenu' }); + + const props = defineProps({ + item: { + type: Object as PropType<Menu>, + default: () => ({}), }, - props: { - item: { - type: Object as PropType<Menu>, - default: () => ({}), - }, - parent: propTypes.bool, - collapsedShowTitle: propTypes.bool, - collapse: propTypes.bool, - theme: propTypes.oneOf(['dark', 'light']), - }, - setup(props) { - const { t } = useI18n(); - const { prefixCls } = useDesign('simple-menu'); - - const getShowMenu = computed(() => !props.item?.meta?.hideMenu); - const getIcon = computed(() => props.item?.icon); - const getI18nName = computed(() => t(props.item?.name)); - const getShowSubTitle = computed(() => !props.collapse || !props.parent); - const getIsCollapseParent = computed(() => !!props.collapse && !!props.parent); - const getLevelClass = computed(() => { - return [ - { - [`${prefixCls}__parent`]: props.parent, - [`${prefixCls}__children`]: !props.parent, - }, - ]; - }); - - function menuHasChildren(menuTreeItem: Menu): boolean { - return ( - !menuTreeItem.meta?.hideChildrenInMenu && - Reflect.has(menuTreeItem, 'children') && - !!menuTreeItem.children && - menuTreeItem.children.length > 0 - ); - } - - return { - prefixCls, - menuHasChildren, - getShowMenu, - getIcon, - getI18nName, - getShowSubTitle, - getLevelClass, - getIsCollapseParent, - }; - }, + parent: propTypes.bool, + collapsedShowTitle: propTypes.bool, + collapse: propTypes.bool, + theme: propTypes.oneOf(['dark', 'light']), }); + + const { t } = useI18n(); + const { prefixCls } = useDesign('simple-menu'); + + const getShowMenu = computed(() => !props.item?.meta?.hideMenu); + const getIcon = computed(() => (props.item?.img ? undefined : props.item?.icon)); + const getImg = computed(() => props.item?.img); + const getI18nName = computed(() => t(props.item?.meta?.title || props.item?.name)); + const getShowSubTitle = computed(() => !props.collapse || !props.parent); + const getIsCollapseParent = computed(() => !!props.collapse && !!props.parent); + const getLevelClass = computed(() => { + return [ + { + [`${prefixCls}__parent`]: props.parent, + [`${prefixCls}__children`]: !props.parent, + }, + ]; + }); + + function menuHasChildren(menuTreeItem: Menu): boolean { + return ( + !menuTreeItem.meta?.hideChildrenInMenu && + Reflect.has(menuTreeItem, 'children') && + !!menuTreeItem.children && + menuTreeItem.children.length > 0 + ); + } </script> -- Gitblit v1.9.3