feat: 离线图标功能

This commit is contained in:
dap 2024-11-06 20:56:19 +08:00
parent cce6117157
commit 2cc82a0c05
15 changed files with 238 additions and 74 deletions

View File

@ -24,7 +24,7 @@ const profileRoute: RouteRecordStringComponent[] = [
{ {
component: '/_core/profile/index', component: '/_core/profile/index',
meta: { meta: {
icon: 'mingcute:profile-line', icon: 'mingcute:profile-line|offline',
keepAlive: true, keepAlive: true,
title: $t('ui.widgets.profile'), title: $t('ui.widgets.profile'),
}, },
@ -48,7 +48,7 @@ const profileRoute: RouteRecordStringComponent[] = [
component: '/system/oss-config/index', component: '/system/oss-config/index',
meta: { meta: {
activePath: '/system/oss', activePath: '/system/oss',
icon: 'mingcute:profile-line', icon: 'ant-design:setting-outlined|offline',
keepAlive: true, keepAlive: true,
title: 'oss配置', title: 'oss配置',
}, },
@ -57,7 +57,6 @@ const profileRoute: RouteRecordStringComponent[] = [
}, },
], ],
}, },
// TODO: 图标要改
{ {
component: 'BasicLayout', component: 'BasicLayout',
meta: { meta: {
@ -73,7 +72,7 @@ const profileRoute: RouteRecordStringComponent[] = [
component: '/tool/gen/edit-gen', component: '/tool/gen/edit-gen',
meta: { meta: {
activePath: '/tool/gen', activePath: '/tool/gen',
icon: 'mingcute:profile-line', icon: 'tabler:code|offline',
keepAlive: true, keepAlive: true,
title: '生成配置', title: '生成配置',
}, },
@ -97,7 +96,7 @@ const profileRoute: RouteRecordStringComponent[] = [
component: '/system/role-assign/index', component: '/system/role-assign/index',
meta: { meta: {
activePath: '/system/role', activePath: '/system/role',
icon: 'mingcute:profile-line', icon: 'eos-icons:role-binding-outlined|offline',
keepAlive: true, keepAlive: true,
title: '分配角色', title: '分配角色',
}, },
@ -144,7 +143,7 @@ export const localMenuList: RouteRecordStringComponent[] = [
path: '/vben-admin/document', path: '/vben-admin/document',
component: 'IFrameView', component: 'IFrameView',
meta: { meta: {
icon: 'lucide:book-open-text', icon: 'lucide:book-open-text|offline',
iframeSrc: 'https://dapdap.top', iframeSrc: 'https://dapdap.top',
keepAlive: true, keepAlive: true,
title: $t('demos.vben.document'), title: $t('demos.vben.document'),
@ -156,7 +155,7 @@ export const localMenuList: RouteRecordStringComponent[] = [
component: 'BasicLayout', component: 'BasicLayout',
meta: { meta: {
hideChildrenInMenu: true, hideChildrenInMenu: true,
icon: 'lucide:copyright', icon: 'lucide:copyright|offline',
order: 9999, order: 9999,
title: $t('demos.vben.about'), title: $t('demos.vben.about'),
}, },

View File

@ -28,7 +28,7 @@ const routes: RouteRecordRaw[] = [
path: '/vben-admin/about', path: '/vben-admin/about',
component: () => import('#/views/_core/about/index.vue'), component: () => import('#/views/_core/about/index.vue'),
meta: { meta: {
icon: 'lucide:copyright', icon: 'lucide:copyright|offline',
title: $t('demos.vben.about'), title: $t('demos.vben.about'),
}, },
}, },
@ -37,7 +37,7 @@ const routes: RouteRecordRaw[] = [
path: '/vben-admin/document', path: '/vben-admin/document',
component: IFrameView, component: IFrameView,
meta: { meta: {
icon: 'lucide:book-open-text', icon: 'lucide:book-open-text|offline',
link: VBEN_DOC_URL, link: VBEN_DOC_URL,
title: $t('demos.vben.document'), title: $t('demos.vben.document'),
}, },

View File

@ -6,6 +6,7 @@ import { computed, onMounted, ref, useTemplateRef } from 'vue';
import { AuthenticationLogin, z } from '@vben/common-ui'; import { AuthenticationLogin, z } from '@vben/common-ui';
import { $t } from '@vben/locales'; import { $t } from '@vben/locales';
import { Modal } from 'ant-design-vue';
import { omit } from 'lodash-es'; import { omit } from 'lodash-es';
import { tenantList, type TenantResp } from '#/api'; import { tenantList, type TenantResp } from '#/api';
@ -144,6 +145,14 @@ async function handleAccountLogin(values: LoginAndRegisterParams) {
} }
} }
} }
onMounted(() => {
Modal.info({
title: '提示',
content:
'离线图标分支需要导入[离线图标.sql] 目录:scripts/菜单图标替换sql/update_icon_离线图标.sql',
});
});
</script> </script>
<template> <template>

View File

@ -1,12 +1,15 @@
import type { VxeGridProps } from '#/adapter/vxe-table'; import type { VxeGridProps } from '#/adapter/vxe-table';
import { h } from 'vue';
import { DictEnum } from '@vben/constants'; import { DictEnum } from '@vben/constants';
import { FolderIcon, MenuIcon, OkButtonIcon, VbenIcon } from '@vben/icons';
import { $t } from '@vben/locales'; import { $t } from '@vben/locales';
import { getPopupContainer } from '@vben/utils'; import { getPopupContainer } from '@vben/utils';
import { type FormSchemaGetter, z } from '#/adapter/form'; import { type FormSchemaGetter, z } from '#/adapter/form';
import { getDictOptions } from '#/utils/dict'; import { getDictOptions } from '#/utils/dict';
import { renderDict, renderIcon } from '#/utils/render'; import { renderDict } from '#/utils/render';
export const querySchema: FormSchemaGetter = () => [ export const querySchema: FormSchemaGetter = () => [
{ {
@ -48,11 +51,10 @@ export const yesNoOptions = [
// M目录 C菜单 F按钮 // M目录 C菜单 F按钮
const menuTypes = { const menuTypes = {
M: { value: '目录', icon: 'fxemoji:folder' }, C: { icon: MenuIcon, value: '菜单' },
C: { value: '菜单', icon: 'fluent-emoji-flat:open-book' }, F: { icon: OkButtonIcon, value: '按钮' },
F: { value: '按钮', icon: 'fluent-emoji:ok-button' }, M: { icon: FolderIcon, value: '目录' },
}; };
export const columns: VxeGridProps['columns'] = [ export const columns: VxeGridProps['columns'] = [
{ {
title: '菜单名称', title: '菜单名称',
@ -74,7 +76,9 @@ export const columns: VxeGridProps['columns'] = [
return ''; return '';
} }
return ( return (
<span class={'flex justify-center'}>{renderIcon(row.icon)}</span> <span class={'flex justify-center'}>
<VbenIcon icon={row.icon} />
</span>
); );
}, },
}, },
@ -95,9 +99,9 @@ export const columns: VxeGridProps['columns'] = [
return '未知'; return '未知';
} }
return ( return (
<span class={['flex', 'items-center', 'justify-center']}> <span class="flex items-center justify-center gap-1">
{renderIcon(current.icon)} {h(current.icon, { class: 'size-[18px]' })}
<span style={{ marginLeft: '2px' }}>{current.value}</span> <span>{current.value}</span>
</span> </span>
); );
}, },

View File

@ -99,7 +99,7 @@ onBeforeUnmount(() => {
> >
<template #trigger> <template #trigger>
<div :class="[nsMenu.be('tooltip', 'trigger')]"> <div :class="[nsMenu.be('tooltip', 'trigger')]">
<VbenIcon :class="nsMenu.e('icon')" :icon="menuIcon" offline /> <VbenIcon :class="nsMenu.e('icon')" :icon="menuIcon" />
<slot></slot> <slot></slot>
<span v-if="collapseShowTitle" :class="nsMenu.e('name')"> <span v-if="collapseShowTitle" :class="nsMenu.e('name')">
<slot name="title"></slot> <slot name="title"></slot>
@ -114,7 +114,7 @@ onBeforeUnmount(() => {
class="right-2" class="right-2"
v-bind="props" v-bind="props"
/> />
<VbenIcon :class="nsMenu.e('icon')" :icon="menuIcon" offline /> <VbenIcon :class="nsMenu.e('icon')" :icon="menuIcon" />
<slot></slot> <slot></slot>
<slot name="title"></slot> <slot name="title"></slot>
</div> </div>

View File

@ -87,7 +87,6 @@ const iconArrowStyle = computed(() => {
:class="nsMenu.e('icon')" :class="nsMenu.e('icon')"
:icon="icon" :icon="icon"
fallback fallback
offline
/> />
<div v-if="!hiddenTitle" :class="[e('title')]"> <div v-if="!hiddenTitle" :class="[e('title')]">

View File

@ -13,7 +13,6 @@ const props = defineProps<{
// //
fallback?: boolean; fallback?: boolean;
icon?: Component | Function | string; icon?: Component | Function | string;
offline?: boolean;
}>(); }>();
const isRemoteIcon = computed(() => { const isRemoteIcon = computed(() => {
@ -24,20 +23,37 @@ const isComponent = computed(() => {
const { icon } = props; const { icon } = props;
return !isString(icon) && (isObject(icon) || isFunction(icon)); return !isString(icon) && (isObject(icon) || isFunction(icon));
}); });
/**
* 判断图标是否为离线图标
* 主要是判断后缀是否为 |offline
*/
const offlineIcon = computed(() => {
if (
isString(props.icon) &&
!isHttpUrl(props.icon) &&
props.icon.endsWith('|offline')
) {
return {
confirm: true,
icon: props.icon.replace('|offline', ''),
};
}
return {
confirm: false,
icon: '',
};
});
</script> </script>
<template> <template>
<component :is="icon as Component" v-if="isComponent" v-bind="$attrs" /> <component :is="icon as Component" v-if="isComponent" v-bind="$attrs" />
<img v-else-if="isRemoteIcon" :src="icon as string" v-bind="$attrs" /> <img v-else-if="isRemoteIcon" :src="icon as string" v-bind="$attrs" />
<IconifyOfflineIcon <IconifyOfflineIcon
v-else-if="icon && offline" v-else-if="offlineIcon.confirm"
v-bind="$attrs" v-bind="$attrs"
:icon="icon as string" :icon="offlineIcon.icon"
/>
<IconifyIcon
v-else-if="icon && !offline"
v-bind="$attrs"
:icon="icon as string"
/> />
<IconifyIcon v-else-if="icon" v-bind="$attrs" :icon="icon as string" />
<IconDefault v-else-if="fallback" v-bind="$attrs" /> <IconDefault v-else-if="fallback" v-bind="$attrs" />
</template> </template>

View File

@ -144,7 +144,6 @@ const tabsView = computed(() => {
:icon="tab.icon" :icon="tab.icon"
class="mr-1 flex size-4 items-center overflow-hidden" class="mr-1 flex size-4 items-center overflow-hidden"
/> />
<span class="flex-1 overflow-hidden whitespace-nowrap text-sm"> <span class="flex-1 overflow-hidden whitespace-nowrap text-sm">
{{ tab.title }} {{ tab.title }}
</span> </span>

View File

@ -17,14 +17,18 @@
} }
}, },
"dependencies": { "dependencies": {
"@vben-core/icons": "workspace:*" "@vben-core/icons": "workspace:*",
"@vben-core/shadcn-ui": "workspace:^"
}, },
"devDependencies": { "devDependencies": {
"@iconify/icons-akar-icons": "^1.2.19",
"@iconify/icons-ant-design": "^1.2.7", "@iconify/icons-ant-design": "^1.2.7",
"@iconify/icons-arcticons": "^1.2.77", "@iconify/icons-arcticons": "^1.2.77",
"@iconify/icons-bi": "^1.2.19", "@iconify/icons-bi": "^1.2.19",
"@iconify/icons-bx": "^1.2.6", "@iconify/icons-bx": "^1.2.6",
"@iconify/icons-carbon": "^1.2.20",
"@iconify/icons-devicon": "^1.2.17", "@iconify/icons-devicon": "^1.2.17",
"@iconify/icons-emojione": "^1.2.6",
"@iconify/icons-eos-icons": "^1.2.6", "@iconify/icons-eos-icons": "^1.2.6",
"@iconify/icons-fa-brands": "^1.2.4", "@iconify/icons-fa-brands": "^1.2.4",
"@iconify/icons-fe": "^1.2.5", "@iconify/icons-fe": "^1.2.5",
@ -36,6 +40,7 @@
"@iconify/icons-icon-park-twotone": "^1.2.8", "@iconify/icons-icon-park-twotone": "^1.2.8",
"@iconify/icons-la": "^1.2.3", "@iconify/icons-la": "^1.2.3",
"@iconify/icons-logos": "^1.2.36", "@iconify/icons-logos": "^1.2.36",
"@iconify/icons-lucide": "^1.2.135",
"@iconify/icons-majesticons": "^1.2.6", "@iconify/icons-majesticons": "^1.2.6",
"@iconify/icons-material-symbols": "^1.2.58", "@iconify/icons-material-symbols": "^1.2.58",
"@iconify/icons-mdi": "^1.2.48", "@iconify/icons-mdi": "^1.2.48",
@ -45,6 +50,7 @@
"@iconify/icons-simple-icons": "^1.2.74", "@iconify/icons-simple-icons": "^1.2.74",
"@iconify/icons-solar": "^1.2.3", "@iconify/icons-solar": "^1.2.3",
"@iconify/icons-streamline": "^1.2.3", "@iconify/icons-streamline": "^1.2.3",
"@iconify/icons-tabler": "^1.2.95",
"@iconify/icons-uiw": "^1.2.6", "@iconify/icons-uiw": "^1.2.6",
"@iconify/icons-vscode-icons": "^1.2.29", "@iconify/icons-vscode-icons": "^1.2.29",
"@iconify/icons-wpf": "^1.2.3" "@iconify/icons-wpf": "^1.2.3"

View File

@ -9,6 +9,7 @@ import windowsIcon from '@iconify/icons-devicon/windows8';
import alipayIcon from '@iconify/icons-fa-brands/alipay'; import alipayIcon from '@iconify/icons-fa-brands/alipay';
import androidIcon from '@iconify/icons-flat-color-icons/android-os'; import androidIcon from '@iconify/icons-flat-color-icons/android-os';
import comandLine from '@iconify/icons-flat-color-icons/command-line'; import comandLine from '@iconify/icons-flat-color-icons/command-line';
import folderIcon from '@iconify/icons-flat-color-icons/folder';
import defaultOsIcon from '@iconify/icons-ic/outline-computer'; import defaultOsIcon from '@iconify/icons-ic/outline-computer';
import memoryIcon from '@iconify/icons-la/memory'; import memoryIcon from '@iconify/icons-la/memory';
import chromeIcon from '@iconify/icons-logos/chrome'; import chromeIcon from '@iconify/icons-logos/chrome';
@ -19,6 +20,8 @@ import quarkIcon from '@iconify/icons-logos/quarkus-icon';
import redisIcon from '@iconify/icons-logos/redis'; import redisIcon from '@iconify/icons-logos/redis';
import safariIcon from '@iconify/icons-logos/safari'; import safariIcon from '@iconify/icons-logos/safari';
import iphoneIcon from '@iconify/icons-majesticons/iphone-x-apps-line'; import iphoneIcon from '@iconify/icons-majesticons/iphone-x-apps-line';
import menuIcon from '@iconify/icons-material-symbols/menu';
import okButtonIcon from '@iconify/icons-mdi/button-pointer';
import micromessengerIcon from '@iconify/icons-mdi/wechat'; import micromessengerIcon from '@iconify/icons-mdi/wechat';
import defaultBrowserIcon from '@iconify/icons-ph/browser-duotone'; import defaultBrowserIcon from '@iconify/icons-ph/browser-duotone';
import baiduIcon from '@iconify/icons-ri/baidu-fill'; import baiduIcon from '@iconify/icons-ri/baidu-fill';
@ -31,7 +34,7 @@ import githubOAuthIcon from '@iconify/icons-uiw/github';
import excelIcon from '@iconify/icons-vscode-icons/file-type-excel'; import excelIcon from '@iconify/icons-vscode-icons/file-type-excel';
import osxIcon from '@iconify/icons-wpf/macos'; import osxIcon from '@iconify/icons-wpf/macos';
import './other'; import './menu-icons';
// 用户 下拉菜单 // 用户 下拉菜单
export const GitHubOutlined = createIconifyOfflineIcon( export const GitHubOutlined = createIconifyOfflineIcon(
@ -142,3 +145,17 @@ export const DefaultBrowserIcon = createIconifyOfflineIcon(
'ph:browser-duotone', 'ph:browser-duotone',
defaultBrowserIcon, defaultBrowserIcon,
); );
// 菜单类型 目录/按钮/菜单
export const FolderIcon = createIconifyOfflineIcon(
'flat-color-icons:folder',
folderIcon,
);
export const OkButtonIcon = createIconifyOfflineIcon(
'mdi:button-pointer',
okButtonIcon,
);
export const MenuIcon = createIconifyOfflineIcon(
'material-symbols:menu',
menuIcon,
);

View File

@ -0,0 +1,108 @@
import { addOfflineIcon } from '@vben-core/icons';
import schedule from '@iconify/icons-akar-icons/schedule';
import settingOutline from '@iconify/icons-ant-design/setting-outlined';
import Operation from '@iconify/icons-arcticons/one-hand-operation';
import BaseLineHousesFill from '@iconify/icons-bi/houses-fill';
import BxPackage from '@iconify/icons-bx/package';
import modelAlt from '@iconify/icons-carbon/model-alt';
import taskApproved from '@iconify/icons-carbon/task-approved';
import redisWordmark from '@iconify/icons-devicon/redis-wordmark';
import springWordmark from '@iconify/icons-devicon/spring-wordmark';
import vscode from '@iconify/icons-devicon/vscode';
import evergreenTree from '@iconify/icons-emojione/evergreen-tree';
import RoleBindingOutlined from '@iconify/icons-eos-icons/role-binding-outlined';
import SystemGroup from '@iconify/icons-eos-icons/system-group';
import NoticePush from '@iconify/icons-fe/notice-push';
import plus from '@iconify/icons-flat-color-icons/plus';
import from24 from '@iconify/icons-fluent/form-24-regular';
import builDefinition from '@iconify/icons-fluent-mdl2/build-definition';
import Dictionary from '@iconify/icons-fluent-mdl2/dictionary';
import leaveUser from '@iconify/icons-fluent-mdl2/leave-user';
import BaseLineHouse from '@iconify/icons-ic/baseline-house';
import monitor from '@iconify/icons-ic/baseline-monitor';
import roundLaunch from '@iconify/icons-ic/round-launch';
import MenuSharp from '@iconify/icons-ic/sharp-menu';
import Appointment from '@iconify/icons-icon-park-outline/appointment';
import SettingTwo from '@iconify/icons-icon-park-twotone/setting-two';
import boolOpenText from '@iconify/icons-lucide/book-open-text';
import copyright from '@iconify/icons-lucide/copyright';
import table from '@iconify/icons-lucide/table';
import cloudDoneOutlineRounded from '@iconify/icons-material-symbols/cloud-done-outline-rounded';
import generatingTokensOutline from '@iconify/icons-material-symbols/generating-tokens-outline';
import LogoDevOutline from '@iconify/icons-material-symbols/logo-dev-outline';
import ccOutline from '@iconify/icons-mdi/cc-outline';
import tools from '@iconify/icons-mdi/tools';
import workflowOutline from '@iconify/icons-mdi/workflow-outline';
import DepartmentLine from '@iconify/icons-mingcute/department-line';
import profileLine from '@iconify/icons-mingcute/profile-line';
import UserDuotone from '@iconify/icons-ph/user-duotone';
import insatnceLine from '@iconify/icons-ri/instance-line';
import todoLine from '@iconify/icons-ri/todo-line';
import Authy from '@iconify/icons-simple-icons/authy';
import FolderWithFilesOutline from '@iconify/icons-solar/folder-with-files-outline';
import monitorBoldDuotone from '@iconify/icons-solar/monitor-bold-duotone';
import InterfaceLoginDialPadFingerPasswordDialPadDotFinger from '@iconify/icons-streamline/interface-login-dial-pad-finger-password-dial-pad-dot-finger';
import categoryPlus from '@iconify/icons-tabler/category-plus';
import code from '@iconify/icons-tabler/code';
/**
*
*/
addOfflineIcon('eos-icons:system-group', SystemGroup);
addOfflineIcon('ph:user-duotone', UserDuotone);
addOfflineIcon('eos-icons:role-binding-outlined', RoleBindingOutlined);
addOfflineIcon('ic:sharp-menu', MenuSharp);
addOfflineIcon('mingcute:department-line', DepartmentLine);
addOfflineIcon('icon-park-outline:appointment', Appointment);
addOfflineIcon('fluent-mdl2:dictionary', Dictionary);
addOfflineIcon('icon-park-twotone:setting-two', SettingTwo);
addOfflineIcon('fe:notice-push', NoticePush);
addOfflineIcon('material-symbols:logo-dev-outline', LogoDevOutline);
addOfflineIcon('arcticons:one-hand-operation', Operation);
addOfflineIcon(
'streamline:interface-login-dial-pad-finger-password-dial-pad-dot-finger',
InterfaceLoginDialPadFingerPasswordDialPadDotFinger,
);
addOfflineIcon('solar:folder-with-files-outline', FolderWithFilesOutline);
addOfflineIcon('simple-icons:authy', Authy);
addOfflineIcon('ic:baseline-house', BaseLineHouse);
addOfflineIcon('bi:houses-fill', BaseLineHousesFill);
addOfflineIcon('bx:package', BxPackage);
addOfflineIcon('solar:monitor-bold-duotone', monitorBoldDuotone);
addOfflineIcon(
'material-symbols:generating-tokens-outline',
generatingTokensOutline,
);
addOfflineIcon('devicon:redis-wordmark', redisWordmark);
addOfflineIcon('devicon:spring-wordmark', springWordmark);
addOfflineIcon('akar-icons:schedule', schedule);
addOfflineIcon('mdi:tools', tools);
addOfflineIcon('tabler:code', code);
addOfflineIcon('flat-color-icons:plus', plus);
addOfflineIcon('devicon:vscode', vscode);
addOfflineIcon('lucide:table', table);
addOfflineIcon('emojione:evergreen-tree', evergreenTree);
addOfflineIcon('fluent-mdl2:leave-user', leaveUser);
addOfflineIcon('mdi:workflow-outline', workflowOutline);
addOfflineIcon('tabler:category-plus', categoryPlus);
addOfflineIcon('carbon:model-alt', modelAlt);
addOfflineIcon('fluent-mdl2:build-definition', builDefinition);
addOfflineIcon('fluent-mdl2:build-definition', builDefinition);
addOfflineIcon('icon-park-outline:monitor', monitor);
addOfflineIcon('ri:instance-line', insatnceLine);
addOfflineIcon('ri:todo-line', todoLine);
addOfflineIcon('fluent:form-24-regular', from24);
addOfflineIcon('carbon:task-approved', taskApproved);
addOfflineIcon('ic:round-launch', roundLaunch);
addOfflineIcon(
'material-symbols:cloud-done-outline-rounded',
cloudDoneOutlineRounded,
);
addOfflineIcon('mdi:cc-outline', ccOutline);
addOfflineIcon('lucide:book-open-text', boolOpenText);
addOfflineIcon('lucide:copyright', copyright);
// 个人中心
addOfflineIcon('mingcute:profile-line', profileLine);
// oss配置
addOfflineIcon('ant-design:setting-outlined', settingOutline);

View File

@ -1,40 +0,0 @@
import { addOfflineIcon } from '@vben-core/icons';
import Operation from '@iconify/icons-arcticons/one-hand-operation';
import BaseLineHousesFill from '@iconify/icons-bi/houses-fill';
import BxPackage from '@iconify/icons-bx/package';
import RoleBindingOutlined from '@iconify/icons-eos-icons/role-binding-outlined';
import SystemGroup from '@iconify/icons-eos-icons/system-group';
import NoticePush from '@iconify/icons-fe/notice-push';
import Dictionary from '@iconify/icons-fluent-mdl2/dictionary';
import BaseLineHouse from '@iconify/icons-ic/baseline-house';
import MenuSharp from '@iconify/icons-ic/sharp-menu';
import Appointment from '@iconify/icons-icon-park-outline/appointment';
import SettingTwo from '@iconify/icons-icon-park-twotone/setting-two';
import LogoDevOutline from '@iconify/icons-material-symbols/logo-dev-outline';
import DepartmentLine from '@iconify/icons-mingcute/department-line';
import UserDuotone from '@iconify/icons-ph/user-duotone';
import Authy from '@iconify/icons-simple-icons/authy';
import FolderWithFilesOutline from '@iconify/icons-solar/folder-with-files-outline';
import InterfaceLoginDialPadFingerPasswordDialPadDotFinger from '@iconify/icons-streamline/interface-login-dial-pad-finger-password-dial-pad-dot-finger';
addOfflineIcon('eos-icons:system-group', SystemGroup);
addOfflineIcon('ph:user-duotone', UserDuotone);
addOfflineIcon('eos-icons:role-binding-outlined', RoleBindingOutlined);
addOfflineIcon('ic:sharp-menu', MenuSharp);
addOfflineIcon('mingcute:department-line', DepartmentLine);
addOfflineIcon('icon-park-outline:appointment', Appointment);
addOfflineIcon('fluent-mdl2:dictionary', Dictionary);
addOfflineIcon('icon-park-twotone:setting-two', SettingTwo);
addOfflineIcon('fe:notice-push', NoticePush);
addOfflineIcon('material-symbols:logo-dev-outline', LogoDevOutline);
addOfflineIcon('arcticons:one-hand-operation', Operation);
addOfflineIcon(
'streamline:interface-login-dial-pad-finger-password-dial-pad-dot-finger',
InterfaceLoginDialPadFingerPasswordDialPadDotFinger,
);
addOfflineIcon('solar:folder-with-files-outline', FolderWithFilesOutline);
addOfflineIcon('simple-icons:authy', Authy);
addOfflineIcon('ic:baseline-house', BaseLineHouse);
addOfflineIcon('bi:houses-fill', BaseLineHousesFill);
addOfflineIcon('bx:package', BxPackage);

View File

@ -1,3 +1,4 @@
export * from './iconify/index.js'; export * from './iconify/index.js';
export * from './iconify-offline/index.js'; export * from './iconify-offline/index.js';
export * from './svg/index.js'; export * from './svg/index.js';
export { VbenIcon } from '@vben-core/shadcn-ui';

View File

@ -33,13 +33,13 @@ UPDATE sys_menu SET icon = 'emojione:evergreen-tree' WHERE menu_id = 1506;
UPDATE sys_menu SET icon = 'mdi:workflow-outline' WHERE menu_id = 11616; UPDATE sys_menu SET icon = 'mdi:workflow-outline' WHERE menu_id = 11616;
UPDATE sys_menu SET icon = 'carbon:model-alt' WHERE menu_id = 11617; UPDATE sys_menu SET icon = 'carbon:model-alt' WHERE menu_id = 11617;
UPDATE sys_menu SET icon = 'carbon:task-approved' WHERE menu_id = 11618; UPDATE sys_menu SET icon = 'carbon:task-approved' WHERE menu_id = 11618;
UPDATE sys_menu SET icon = 'streamline:waiting-appointments-calendar' WHERE menu_id = 11619; UPDATE sys_menu SET icon = 'ri:todo-line' WHERE menu_id = 11619;
UPDATE sys_menu SET icon = 'fluent-mdl2:build-definition' WHERE menu_id = 11620; UPDATE sys_menu SET icon = 'fluent-mdl2:build-definition' WHERE menu_id = 11620;
UPDATE sys_menu SET icon = 'ri:instance-line' WHERE menu_id = 11621; UPDATE sys_menu SET icon = 'ri:instance-line' WHERE menu_id = 11621;
UPDATE sys_menu SET icon = 'tabler:category-plus' WHERE menu_id = 11622; UPDATE sys_menu SET icon = 'tabler:category-plus' WHERE menu_id = 11622;
UPDATE sys_menu SET icon = 'ic:round-launch' WHERE menu_id = 11629; UPDATE sys_menu SET icon = 'ic:round-launch' WHERE menu_id = 11629;
UPDATE sys_menu SET icon = 'icon-park-outline:monitor' WHERE menu_id = 11630; UPDATE sys_menu SET icon = 'icon-park-outline:monitor' WHERE menu_id = 11630;
UPDATE sys_menu SET icon = 'streamline:waiting-appointments-calendar' WHERE menu_id = 11631; UPDATE sys_menu SET icon = 'ri:todo-line' WHERE menu_id = 11631;
UPDATE sys_menu SET icon = 'material-symbols:cloud-done-outline-rounded' WHERE menu_id = 11632; UPDATE sys_menu SET icon = 'material-symbols:cloud-done-outline-rounded' WHERE menu_id = 11632;
UPDATE sys_menu SET icon = 'mdi:cc-outline' WHERE menu_id = 11633; UPDATE sys_menu SET icon = 'mdi:cc-outline' WHERE menu_id = 11633;
UPDATE sys_menu SET icon = 'fluent-mdl2:leave-user' WHERE menu_id = 11638; UPDATE sys_menu SET icon = 'fluent-mdl2:leave-user' WHERE menu_id = 11638;

View File

@ -0,0 +1,46 @@
UPDATE sys_menu SET icon = 'eos-icons:system-group|offline' WHERE menu_id = 1;
UPDATE sys_menu SET icon = 'solar:monitor-bold-duotone|offline' WHERE menu_id = 2;
UPDATE sys_menu SET icon = 'mdi:tools|offline' WHERE menu_id = 3;
UPDATE sys_menu SET icon = 'flat-color-icons:plus|offline' WHERE menu_id = 4;
UPDATE sys_menu SET icon = 'devicon:vscode|offline' WHERE menu_id = 5;
UPDATE sys_menu SET icon = 'ic:baseline-house|offline' WHERE menu_id = 6;
UPDATE sys_menu SET icon = 'ph:user-duotone|offline' WHERE menu_id = 100;
UPDATE sys_menu SET icon = 'eos-icons:role-binding-outlined|offline' WHERE menu_id = 101;
UPDATE sys_menu SET icon = 'ic:sharp-menu|offline' WHERE menu_id = 102;
UPDATE sys_menu SET icon = 'mingcute:department-line|offline' WHERE menu_id = 103;
UPDATE sys_menu SET icon = 'icon-park-outline:appointment|offline' WHERE menu_id = 104;
UPDATE sys_menu SET icon = 'fluent-mdl2:dictionary|offline' WHERE menu_id = 105;
UPDATE sys_menu SET icon = 'icon-park-twotone:setting-two|offline' WHERE menu_id = 106;
UPDATE sys_menu SET icon = 'fe:notice-push|offline' WHERE menu_id = 107;
UPDATE sys_menu SET icon = 'material-symbols:logo-dev-outline|offline' WHERE menu_id = 108;
UPDATE sys_menu SET icon = 'material-symbols:generating-tokens-outline|offline' WHERE menu_id = 109;
UPDATE sys_menu SET icon = 'devicon:redis-wordmark|offline' WHERE menu_id = 113;
UPDATE sys_menu SET icon = 'fluent:form-new-24-regular|offline' WHERE menu_id = 114;
UPDATE sys_menu SET icon = 'tabler:code|offline' WHERE menu_id = 115;
UPDATE sys_menu SET icon = 'devicon:spring-wordmark|offline' WHERE menu_id = 117;
UPDATE sys_menu SET icon = 'solar:folder-with-files-outline|offline' WHERE menu_id = 118;
UPDATE sys_menu SET icon = 'akar-icons:schedule|offline' WHERE menu_id = 120;
UPDATE sys_menu SET icon = 'bi:houses-fill|offline' WHERE menu_id = 121;
UPDATE sys_menu SET icon = 'bx:package|offline' WHERE menu_id = 122;
UPDATE sys_menu SET icon = 'simple-icons:authy|offline' WHERE menu_id = 123;
UPDATE sys_menu SET icon = 'arcticons:one-hand-operation|offline' WHERE menu_id = 500;
UPDATE sys_menu SET icon = 'streamline:interface-login-dial-pad-finger-password-dial-pad-dot-finger|offline' WHERE menu_id = 501;
UPDATE sys_menu SET icon = 'lucide:table|offline' WHERE menu_id = 1500;
UPDATE sys_menu SET icon = 'emojione:evergreen-tree|offline' WHERE menu_id = 1506;
/*UPDATE sys_menu SET icon = 'icon-park-twotone:web-page|offline' WHERE menu_id = 4; PLUS官网 */
UPDATE sys_menu SET icon = 'mdi:workflow-outline|offline' WHERE menu_id = 11616;
UPDATE sys_menu SET icon = 'carbon:model-alt|offline' WHERE menu_id = 11617;
UPDATE sys_menu SET icon = 'carbon:task-approved|offline' WHERE menu_id = 11618;
UPDATE sys_menu SET icon = 'ri:todo-line|offline' WHERE menu_id = 11619;
UPDATE sys_menu SET icon = 'fluent-mdl2:build-definition|offline' WHERE menu_id = 11620;
UPDATE sys_menu SET icon = 'ri:instance-line|offline' WHERE menu_id = 11621;
UPDATE sys_menu SET icon = 'tabler:category-plus|offline' WHERE menu_id = 11622;
UPDATE sys_menu SET icon = 'ic:round-launch|offline' WHERE menu_id = 11629;
UPDATE sys_menu SET icon = 'icon-park-outline:monitor|offline' WHERE menu_id = 11630;
UPDATE sys_menu SET icon = 'ri:todo-line|offline' WHERE menu_id = 11631;
UPDATE sys_menu SET icon = 'material-symbols:cloud-done-outline-rounded|offline' WHERE menu_id = 11632;
UPDATE sys_menu SET icon = 'mdi:cc-outline|offline' WHERE menu_id = 11633;
UPDATE sys_menu SET icon = 'fluent-mdl2:leave-user|offline' WHERE menu_id = 11638;
UPDATE sys_menu SET icon = 'fluent:form-24-regular|offline' WHERE menu_id = 11628;