perf: 扩展本地图标使用方式,首启动再次减少 13 个请求

This commit is contained in:
xiaoxian521 2022-12-03 21:38:44 +08:00
parent c84c447f3e
commit b4a566b2bf
19 changed files with 77 additions and 50 deletions

View File

@ -2,14 +2,6 @@
import { MockMethod } from "vite-plugin-mock"; import { MockMethod } from "vite-plugin-mock";
import { system, permission, frame, tabs } from "@/router/enums"; import { system, permission, frame, tabs } from "@/router/enums";
import FlUser from "@iconify-icons/ri/admin-line";
import Role from "@iconify-icons/ri/admin-fill";
import Dict from "@iconify-icons/ri/git-repository-line";
import Setting from "@iconify-icons/ri/settings-3-line";
import Dept from "@iconify-icons/ri/git-branch-line";
import Lollipop from "@iconify-icons/ep/lollipop";
import Monitor from "@iconify-icons/ep/monitor";
/** /**
* roles "admin""common" * roles "admin""common"
* admin * admin
@ -19,7 +11,7 @@ import Monitor from "@iconify-icons/ep/monitor";
const systemRouter = { const systemRouter = {
path: "/system", path: "/system",
meta: { meta: {
icon: Setting, icon: "setting",
title: "menus.hssysManagement", title: "menus.hssysManagement",
rank: system rank: system
}, },
@ -28,7 +20,7 @@ const systemRouter = {
path: "/system/user/index", path: "/system/user/index",
name: "User", name: "User",
meta: { meta: {
icon: FlUser, icon: "flUser",
title: "menus.hsUser", title: "menus.hsUser",
roles: ["admin"] roles: ["admin"]
} }
@ -37,7 +29,7 @@ const systemRouter = {
path: "/system/role/index", path: "/system/role/index",
name: "Role", name: "Role",
meta: { meta: {
icon: Role, icon: "role",
title: "menus.hsRole", title: "menus.hsRole",
roles: ["admin"] roles: ["admin"]
} }
@ -46,7 +38,7 @@ const systemRouter = {
path: "/system/dept/index", path: "/system/dept/index",
name: "Dept", name: "Dept",
meta: { meta: {
icon: Dept, icon: "dept",
title: "menus.hsDept", title: "menus.hsDept",
roles: ["admin"] roles: ["admin"]
} }
@ -56,7 +48,7 @@ const systemRouter = {
component: "/system/dict/index", component: "/system/dict/index",
name: "Dict", name: "Dict",
meta: { meta: {
icon: Dict, icon: "dict",
title: "menus.hsDict", title: "menus.hsDict",
keepAlive: true, keepAlive: true,
roles: ["admin"] roles: ["admin"]
@ -69,7 +61,7 @@ const permissionRouter = {
path: "/permission", path: "/permission",
meta: { meta: {
title: "menus.permission", title: "menus.permission",
icon: Lollipop, icon: "lollipop",
rank: permission rank: permission
}, },
children: [ children: [
@ -96,7 +88,7 @@ const permissionRouter = {
const frameRouter = { const frameRouter = {
path: "/iframe", path: "/iframe",
meta: { meta: {
icon: Monitor, icon: "monitor",
title: "menus.hsExternalPage", title: "menus.hsExternalPage",
rank: frame rank: frame
}, },

View File

@ -0,0 +1,51 @@
import { addIcon } from "@iconify/vue/dist/offline";
/**
* src/layout/index.vue
*/
// 本地菜单图标后端在路由的icon中返回对应的图标字符串并且前端在此处使用addIcon添加即可渲染菜单图标
import UbuntuFill from "@iconify-icons/ri/ubuntu-fill";
import Menu from "@iconify-icons/ep/menu";
import Edit from "@iconify-icons/ep/edit";
import InformationLine from "@iconify-icons/ri/information-line";
import SetUp from "@iconify-icons/ep/set-up";
import TerminalWindowLine from "@iconify-icons/ri/terminal-window-line";
import Guide from "@iconify-icons/ep/guide";
import HomeFilled from "@iconify-icons/ep/home-filled";
import Card from "@iconify-icons/ri/bank-card-line";
import ListCheck from "@iconify-icons/ri/list-check";
import Histogram from "@iconify-icons/ep/histogram";
import Ppt from "@iconify-icons/ri/file-ppt-2-line";
import CheckboxCircleLine from "@iconify-icons/ri/checkbox-circle-line";
import FlUser from "@iconify-icons/ri/admin-line";
import Role from "@iconify-icons/ri/admin-fill";
import Dict from "@iconify-icons/ri/git-repository-line";
import Setting from "@iconify-icons/ri/settings-3-line";
import Dept from "@iconify-icons/ri/git-branch-line";
import Lollipop from "@iconify-icons/ep/lollipop";
import Monitor from "@iconify-icons/ep/monitor";
addIcon("ubuntuFill", UbuntuFill);
addIcon("menu", Menu);
addIcon("edit", Edit);
addIcon("informationLine", InformationLine);
addIcon("setUp", SetUp);
addIcon("terminalWindowLine", TerminalWindowLine);
addIcon("guide", Guide);
addIcon("homeFilled", HomeFilled);
addIcon("card", Card);
addIcon("listCheck", ListCheck);
addIcon("histogram", Histogram);
addIcon("ppt", Ppt);
addIcon("checkboxCircleLine", CheckboxCircleLine);
addIcon("flUser", FlUser);
addIcon("role", Role);
addIcon("dict", Dict);
addIcon("setting", Setting);
addIcon("dept", Dept);
addIcon("lollipop", Lollipop);
addIcon("monitor", Monitor);
// 非菜单图标
import RefreshRight from "@iconify-icons/ep/refresh-right";
addIcon("refreshRight", RefreshRight);

View File

@ -13,7 +13,6 @@ import { isString } from "@pureadmin/utils";
import { propTypes } from "@/utils/propTypes"; import { propTypes } from "@/utils/propTypes";
import { IconifyIconOffline } from "../../ReIcon"; import { IconifyIconOffline } from "../../ReIcon";
import QRCode, { QRCodeRenderersOptions } from "qrcode"; import QRCode, { QRCodeRenderersOptions } from "qrcode";
import RefreshRight from "@iconify-icons/ep/refresh-right";
interface QrcodeLogo { interface QrcodeLogo {
src?: string; src?: string;
@ -248,7 +247,7 @@ export default defineComponent({
<div class="absolute top-[50%] left-[50%] font-bold"> <div class="absolute top-[50%] left-[50%] font-bold">
<IconifyIconOffline <IconifyIconOffline
class="cursor-pointer" class="cursor-pointer"
icon={RefreshRight} icon="refreshRight"
width="30" width="30"
color="var(--el-color-primary)" color="var(--el-color-primary)"
/> />

View File

@ -6,7 +6,6 @@ import { IconifyIconOffline } from "../../ReIcon";
import Expand from "@iconify-icons/mdi/arrow-expand-down"; import Expand from "@iconify-icons/mdi/arrow-expand-down";
import ArrowCollapse from "@iconify-icons/mdi/arrow-collapse-vertical"; import ArrowCollapse from "@iconify-icons/mdi/arrow-collapse-vertical";
import Setting from "@iconify-icons/ri/settings-3-line"; import Setting from "@iconify-icons/ri/settings-3-line";
import RefreshRight from "@iconify-icons/ep/refresh-right";
export const loadingSvg = ` export const loadingSvg = `
<path class="path" d=" <path class="path" d="
@ -153,7 +152,7 @@ export default defineComponent({
<el-tooltip effect="dark" content="刷新" placement="top"> <el-tooltip effect="dark" content="刷新" placement="top">
<IconifyIconOffline <IconifyIconOffline
class="cursor-pointer" class="cursor-pointer"
icon={RefreshRight} icon="refreshRight"
width="16" width="16"
color="text_color_regular" color="text_color_regular"
onClick={() => emit("refresh")} onClick={() => emit("refresh")}

View File

@ -1,5 +1,7 @@
<script setup lang="ts"> <script setup lang="ts">
import "animate.css"; import "animate.css";
// src/components/ReIcon/src/offlineIcon.ts 使addIcon
import "@/components/ReIcon/src/offlineIcon";
// vxe-tableiconcomponentfont-awesome // vxe-tableiconcomponentfont-awesome
import "font-awesome/css/font-awesome.min.css"; import "font-awesome/css/font-awesome.min.css";
import { setType } from "./types"; import { setType } from "./types";

View File

@ -1,5 +1,4 @@
import type { IconifyIcon } from "@iconify/vue"; import type { IconifyIcon } from "@iconify/vue";
import HomeFilled from "@iconify-icons/ep/home-filled";
export const routerArrays: Array<RouteConfigs> = [ export const routerArrays: Array<RouteConfigs> = [
{ {
@ -7,7 +6,7 @@ export const routerArrays: Array<RouteConfigs> = [
parentPath: "/", parentPath: "/",
meta: { meta: {
title: "menus.hshome", title: "menus.hshome",
icon: HomeFilled icon: "homeFilled"
} }
} }
]; ];

View File

@ -1,12 +1,11 @@
import { $t } from "@/plugins/i18n"; import { $t } from "@/plugins/i18n";
import { able } from "@/router/enums"; import { able } from "@/router/enums";
import UbuntuFill from "@iconify-icons/ri/ubuntu-fill";
export default { export default {
path: "/able", path: "/able",
redirect: "/able/watermark", redirect: "/able/watermark",
meta: { meta: {
icon: UbuntuFill, icon: "ubuntuFill",
title: $t("menus.hsAble"), title: $t("menus.hsAble"),
rank: able rank: able
}, },

View File

@ -1,12 +1,11 @@
import { $t } from "@/plugins/i18n"; import { $t } from "@/plugins/i18n";
import { components } from "@/router/enums"; import { components } from "@/router/enums";
import Menu from "@iconify-icons/ep/menu";
export default { export default {
path: "/components", path: "/components",
redirect: "/components/video", redirect: "/components/video",
meta: { meta: {
icon: Menu, icon: "menu",
title: $t("menus.hscomponents"), title: $t("menus.hscomponents"),
rank: components rank: components
}, },

View File

@ -1,12 +1,11 @@
import { $t } from "@/plugins/i18n"; import { $t } from "@/plugins/i18n";
import { editor } from "@/router/enums"; import { editor } from "@/router/enums";
import Edit from "@iconify-icons/ep/edit";
export default { export default {
path: "/editor", path: "/editor",
redirect: "/editor/index", redirect: "/editor/index",
meta: { meta: {
icon: Edit, icon: "edit",
title: $t("menus.hseditor"), title: $t("menus.hseditor"),
rank: editor rank: editor
}, },

View File

@ -1,12 +1,11 @@
import { $t } from "@/plugins/i18n"; import { $t } from "@/plugins/i18n";
import { error } from "@/router/enums"; import { error } from "@/router/enums";
import InformationLine from "@iconify-icons/ri/information-line";
export default { export default {
path: "/error", path: "/error",
redirect: "/error/403", redirect: "/error/403",
meta: { meta: {
icon: InformationLine, icon: "informationLine",
title: $t("menus.hsabnormal"), title: $t("menus.hsabnormal"),
rank: error rank: error
}, },

View File

@ -1,12 +1,11 @@
import { $t } from "@/plugins/i18n"; import { $t } from "@/plugins/i18n";
import { flowchart } from "@/router/enums"; import { flowchart } from "@/router/enums";
import SetUp from "@iconify-icons/ep/set-up";
export default { export default {
path: "/flowChart", path: "/flowChart",
redirect: "/flowChart/index", redirect: "/flowChart/index",
meta: { meta: {
icon: SetUp, icon: "setUp",
title: $t("menus.hsflowChart"), title: $t("menus.hsflowChart"),
rank: flowchart rank: flowchart
}, },

View File

@ -2,13 +2,11 @@ import { $t } from "@/plugins/i18n";
import { formdesign } from "@/router/enums"; import { formdesign } from "@/router/enums";
const IFrame = () => import("@/layout/frameView.vue"); const IFrame = () => import("@/layout/frameView.vue");
import TerminalWindowLine from "@iconify-icons/ri/terminal-window-line";
export default { export default {
path: "/formDesign", path: "/formDesign",
redirect: "/formDesign/index", redirect: "/formDesign/index",
meta: { meta: {
icon: TerminalWindowLine, icon: "terminalWindowLine",
title: $t("menus.hsFormDesign"), title: $t("menus.hsFormDesign"),
rank: formdesign rank: formdesign
}, },

View File

@ -1,12 +1,11 @@
import { $t } from "@/plugins/i18n"; import { $t } from "@/plugins/i18n";
import { guide } from "@/router/enums"; import { guide } from "@/router/enums";
import Guide from "@iconify-icons/ep/guide";
export default { export default {
path: "/guide", path: "/guide",
redirect: "/guide/index", redirect: "/guide/index",
meta: { meta: {
icon: Guide, icon: "guide",
title: $t("menus.hsguide"), title: $t("menus.hsguide"),
rank: guide rank: guide
}, },

View File

@ -1,7 +1,6 @@
import { $t } from "@/plugins/i18n"; import { $t } from "@/plugins/i18n";
import { home } from "@/router/enums"; import { home } from "@/router/enums";
const Layout = () => import("@/layout/index.vue"); const Layout = () => import("@/layout/index.vue");
import HomeFilled from "@iconify-icons/ep/home-filled";
export default { export default {
path: "/", path: "/",
@ -9,7 +8,7 @@ export default {
component: Layout, component: Layout,
redirect: "/welcome", redirect: "/welcome",
meta: { meta: {
icon: HomeFilled, icon: "homeFilled",
title: $t("menus.hshome"), title: $t("menus.hshome"),
rank: home rank: home
}, },

View File

@ -1,13 +1,11 @@
import { $t } from "@/plugins/i18n"; import { $t } from "@/plugins/i18n";
import { list } from "@/router/enums"; import { list } from "@/router/enums";
import ListCheck from "@iconify-icons/ri/list-check";
import Card from "@iconify-icons/ri/bank-card-line";
export default { export default {
path: "/list", path: "/list",
redirect: "/list/card", redirect: "/list/card",
meta: { meta: {
icon: ListCheck, icon: "listCheck",
title: $t("menus.hsList"), title: $t("menus.hsList"),
rank: list rank: list
}, },
@ -17,7 +15,7 @@ export default {
name: "ListCard", name: "ListCard",
component: () => import("@/views/list/card/index.vue"), component: () => import("@/views/list/card/index.vue"),
meta: { meta: {
icon: Card, icon: "card",
title: $t("menus.hsListCard"), title: $t("menus.hsListCard"),
showParent: true showParent: true
} }

View File

@ -1,13 +1,12 @@
import { $t } from "@/plugins/i18n"; import { $t } from "@/plugins/i18n";
import { nested } from "@/router/enums"; import { nested } from "@/router/enums";
import Histogram from "@iconify-icons/ep/histogram";
export default { export default {
path: "/nested", path: "/nested",
redirect: "/nested/menu1/menu1-1", redirect: "/nested/menu1/menu1-1",
meta: { meta: {
title: $t("menus.hsmenus"), title: $t("menus.hsmenus"),
icon: Histogram, icon: "histogram",
rank: nested rank: nested
}, },
children: [ children: [

View File

@ -1,12 +1,11 @@
import { ppt } from "@/router/enums"; import { ppt } from "@/router/enums";
const IFrame = () => import("@/layout/frameView.vue"); const IFrame = () => import("@/layout/frameView.vue");
import Ppt from "@iconify-icons/ri/file-ppt-2-line";
export default { export default {
path: "/ppt", path: "/ppt",
redirect: "/ppt/index", redirect: "/ppt/index",
meta: { meta: {
icon: Ppt, icon: "ppt",
title: "PPT", title: "PPT",
rank: ppt rank: ppt
}, },

View File

@ -1,6 +1,5 @@
import { $t } from "@/plugins/i18n"; import { $t } from "@/plugins/i18n";
const Layout = () => import("@/layout/index.vue"); const Layout = () => import("@/layout/index.vue");
import HomeFilled from "@iconify-icons/ep/home-filled";
export default [ export default [
{ {
@ -17,7 +16,7 @@ export default [
path: "/redirect", path: "/redirect",
component: Layout, component: Layout,
meta: { meta: {
icon: HomeFilled, icon: "homeFilled",
title: $t("menus.hshome"), title: $t("menus.hshome"),
showLink: false, showLink: false,
rank: 102 rank: 102

View File

@ -1,12 +1,11 @@
import { $t } from "@/plugins/i18n"; import { $t } from "@/plugins/i18n";
import { result } from "@/router/enums"; import { result } from "@/router/enums";
import CheckboxCircleLine from "@iconify-icons/ri/checkbox-circle-line";
export default { export default {
path: "/result", path: "/result",
redirect: "/result/success", redirect: "/result/success",
meta: { meta: {
icon: CheckboxCircleLine, icon: "checkboxCircleLine",
title: $t("menus.hsResult"), title: $t("menus.hsResult"),
rank: result rank: result
}, },