refactor(projects): 去除vicons,统一使用iconify图标

This commit is contained in:
Soybean
2021-11-08 05:13:48 +08:00
parent e61ee32a88
commit cd6db3d491
26 changed files with 290 additions and 145 deletions

View File

@ -3,9 +3,23 @@
<template v-for="breadcrumb in breadcrumbList" :key="breadcrumb.key">
<n-breadcrumb-item>
<n-dropdown v-if="breadcrumb.hasChildren" :options="breadcrumb.children" @select="dropdownSelect">
<span>{{ breadcrumb.label }}</span>
<span>
<Icon
v-if="theme.crumbsStyle.showIcon && breadcrumb.iconName"
:icon="breadcrumb.iconName"
class="inline-block mr-4px text-16px"
/>
<span>{{ breadcrumb.label }}</span>
</span>
</n-dropdown>
<span v-else>{{ breadcrumb.label }}</span>
<template v-else>
<Icon
v-if="theme.crumbsStyle.showIcon && breadcrumb.iconName"
:icon="breadcrumb.iconName"
class="inline-block mr-4px text-16px"
/>
<span>{{ breadcrumb.label }}</span>
</template>
</n-breadcrumb-item>
</template>
</n-breadcrumb>
@ -14,10 +28,12 @@
<script lang="ts" setup>
import { computed } from 'vue';
import { useRoute, useRouter } from 'vue-router';
import type { RouteLocationMatched } from 'vue-router';
import { NBreadcrumb, NBreadcrumbItem, NDropdown } from 'naive-ui';
import type { DropdownOption } from 'naive-ui';
import type { RouteLocationMatched } from 'vue-router';
import { Icon } from '@iconify/vue';
import { EnumRoutePath } from '@/enum';
import { useThemeStore } from '@/store';
import type { RoutePathKey } from '@/interface';
type Breadcrumb = DropdownOption & {
@ -26,9 +42,11 @@ type Breadcrumb = DropdownOption & {
disabled: boolean;
routeName: RoutePathKey;
hasChildren: boolean;
iconName?: string;
children?: Breadcrumb[];
};
const theme = useThemeStore();
const route = useRoute();
const router = useRouter();
@ -52,6 +70,9 @@ function recursionBreadcrumb(routeMatched: RouteLocationMatched[]) {
routeName,
hasChildren: false
};
if (item.meta?.icon) {
breadcrumItem.iconName = item.meta.icon as string;
}
if (item.children && item.children.length) {
breadcrumItem.hasChildren = true;
breadcrumItem.children = recursionBreadcrumb(item.children as RouteLocationMatched[]);

View File

@ -9,11 +9,10 @@
<script lang="ts" setup>
import { NDropdown, useDialog } from 'naive-ui';
import { UserAvatar, Logout } from '@vicons/carbon';
import { dynamicIconRender, resetAuthStorage } from '@/utils';
import { HoverContainer } from '@/components';
import avatar from '@/assets/svg/avatar/avatar01.svg';
import { useRouterChange } from '@/hooks';
import { iconifyRender, resetAuthStorage } from '@/utils';
import avatar from '@/assets/svg/avatar/avatar01.svg';
type DropdownKey = 'user-center' | 'logout';
@ -24,7 +23,7 @@ const options = [
{
label: '用户中心',
key: 'user-center',
icon: dynamicIconRender(UserAvatar)
icon: iconifyRender('carbon:user-avatar')
},
{
type: 'divider',
@ -33,7 +32,7 @@ const options = [
{
label: '退出登录',
key: 'logout',
icon: dynamicIconRender(Logout)
icon: iconifyRender('carbon:logout')
}
];

View File

@ -14,12 +14,11 @@
import { computed, watch } from 'vue';
import { NDropdown } from 'naive-ui';
import type { DropdownOption } from 'naive-ui';
import { ReloadOutlined, CloseOutlined, ColumnWidthOutlined, MinusOutlined } from '@vicons/antd';
import { useAppStore } from '@/store';
import { useReloadInject } from '@/context';
import { useBoolean } from '@/hooks';
import { ROUTE_HOME } from '@/router';
import { useReloadInject } from '@/context';
import { dynamicIconRender } from '@/utils';
import { iconifyRender } from '@/utils';
interface Props {
/** 右键菜单可见性 */
@ -59,23 +58,23 @@ const options = computed<Option[]>(() => [
label: '重新加载',
key: 'reload-current',
disabled: props.currentPath !== app.multiTab.activeRoute,
icon: dynamicIconRender(ReloadOutlined)
icon: iconifyRender('ant-design:reload-outlined')
},
{
label: '关闭标签页',
key: 'close-current',
disabled: props.currentPath === ROUTE_HOME.path,
icon: dynamicIconRender(CloseOutlined)
icon: iconifyRender('ant-design:close-outlined')
},
{
label: '关闭其他标签页',
key: 'close-other',
icon: dynamicIconRender(ColumnWidthOutlined)
icon: iconifyRender('ant-design:column-width-outlined')
},
{
label: '关闭全部标签页',
key: 'close-all',
icon: dynamicIconRender(MinusOutlined)
icon: iconifyRender('ant-design:minus-outlined')
}
]);