From f22cd3fa7e98efb86bba32e4ab4cca6cd604302e Mon Sep 17 00:00:00 2001 From: lzq <2495532633@qq.com> Date: Sat, 17 Jan 2026 17:34:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .editorconfig | 22 ++ src/common/app/app-page-store.ts | 136 +++++----- src/common/app/index.ts | 30 +-- src/common/router/index.ts | 18 +- src/common/router/nav.ts | 383 ++++++++++++++++++--------- src/common/utils/evt.ts | 1 + src/components/a-icon/iconfont.css | 10 +- src/components/a-icon/iconfont.json | 7 + src/components/a-icon/iconfont.ts | 7 + src/components/a-icon/iconfont.ttf | Bin 20372 -> 20512 bytes src/components/a-icon/iconfont.woff | Bin 12952 -> 13064 bytes src/components/a-icon/iconfont.woff2 | Bin 11024 -> 11068 bytes src/components/page/FormPage.vue | 5 +- src/main.ts | 2 + src/pages/a-frame/AAside.tsx | 27 +- src/pages/a-frame/ATabbar.vue | 22 +- src/pages/a-frame/aaside.module.styl | 64 +++-- src/pages/home/.editorconfig | 12 - src/pages/sys/menus/Menus.vue | 20 +- 19 files changed, 438 insertions(+), 328 deletions(-) delete mode 100644 src/pages/home/.editorconfig diff --git a/.editorconfig b/.editorconfig index 36f80cf..f87cbf1 100644 --- a/.editorconfig +++ b/.editorconfig @@ -5,8 +5,30 @@ charset = utf-8 end_of_line = lf indent_style = space indent_size = 2 +tab_width = 2 trim_trailing_whitespace = true insert_final_newline = true max_line_length = 1000 +[*.styl] +ij_continuation_indent_size = 4 +ij_stylus_align_closing_brace_with_properties = false +ij_stylus_blank_lines_around_nested_selector = 1 +ij_stylus_blank_lines_between_blocks = 1 +ij_stylus_brace_placement = 0 +ij_stylus_enforce_property_name_value_separator_on_format = false +ij_stylus_enforce_quotes_on_format = false +ij_stylus_hex_color_long_format = true +ij_stylus_hex_color_lower_case = false +ij_stylus_hex_color_short_format = false +ij_stylus_hex_color_upper_case = true +ij_stylus_is_property_name_value_separated_by_colon = false +ij_stylus_keep_blank_lines_in_code = 2 +ij_stylus_keep_indents_on_empty_lines = false +ij_stylus_keep_single_line_blocks = false +ij_stylus_properties_order = font, font-family, font-size, font-weight, font-style, font-variant, font-size-adjust, font-stretch, line-height, position, z-index, top, right, bottom, left, display, visibility, float, clear, overflow, overflow-x, overflow-y, clip, zoom, align-content, align-items, align-self, flex, flex-flow, flex-basis, flex-direction, flex-grow, flex-shrink, flex-wrap, justify-content, order, box-sizing, width, min-width, max-width, height, min-height, max-height, margin, margin-top, margin-right, margin-bottom, margin-left, padding, padding-top, padding-right, padding-bottom, padding-left, table-layout, empty-cells, caption-side, border-spacing, border-collapse, list-style, list-style-position, list-style-type, list-style-image, content, quotes, counter-reset, counter-increment, resize, cursor, user-select, nav-index, nav-up, nav-right, nav-down, nav-left, transition, transition-delay, transition-timing-function, transition-duration, transition-property, transform, transform-origin, animation, animation-name, animation-duration, animation-play-state, animation-timing-function, animation-delay, animation-iteration-count, animation-direction, text-align, text-align-last, vertical-align, white-space, text-decoration, text-emphasis, text-emphasis-color, text-emphasis-style, text-emphasis-position, text-indent, text-justify, letter-spacing, word-spacing, text-outline, text-transform, text-wrap, text-overflow, text-overflow-ellipsis, text-overflow-mode, word-wrap, word-break, tab-size, hyphens, pointer-events, opacity, color, border, border-width, border-style, border-color, border-top, border-top-width, border-top-style, border-top-color, border-right, border-right-width, border-right-style, border-right-color, border-bottom, border-bottom-width, border-bottom-style, border-bottom-color, border-left, border-left-width, border-left-style, border-left-color, border-radius, border-top-left-radius, border-top-right-radius, border-bottom-right-radius, border-bottom-left-radius, border-image, border-image-source, border-image-slice, border-image-width, border-image-outset, border-image-repeat, outline, outline-width, outline-style, outline-color, outline-offset, background, background-color, background-image, background-repeat, background-attachment, background-position, background-position-x, background-position-y, background-clip, background-origin, background-size, box-decoration-break, box-shadow, text-shadow +ij_stylus_space_after_colon = true +ij_stylus_space_before_opening_brace = true +ij_stylus_use_double_quotes = true +ij_stylus_value_alignment = 0 diff --git a/src/common/app/app-page-store.ts b/src/common/app/app-page-store.ts index dfd9768..dd1624c 100644 --- a/src/common/app/app-page-store.ts +++ b/src/common/app/app-page-store.ts @@ -1,112 +1,102 @@ import { defineStore } from 'pinia' import Evt from '@/common/utils/evt.ts' -import Nav from '@/common/router/nav.ts' - -const pageContextCache = new Map() - - -function initCache() { - pageContextCache.clear() -} - -initCache() +import Strings from '@/common/utils/strings.ts' +import Utils from '@/common/utils' +import { SpecialPage } from '@/common/router/constants.ts' export const useAppPageStore = defineStore('AppPage', () => { - const keepAliveInclude = ref([]) - const pages = ref([]) + const pages = Utils.resetAble(reactive([]))/* as Reactive */ - const currentPage = ref('') + const currentPage = Utils.resetAble(reactive({ + insId: '', + title: '', + keepAlive: false, + params: {}, + routeName: '', + menuId: '', + icon: '', + breadcrumb: [], + }))/* as Reactive */ - const ctx = computed(() => { - return pageContextCache.get(currentPage.value)! + const keepAliveInclude = computed(() => { + return pages.filter(it => it.keepAlive).map(it => it.routeName) }) - function open(ctx_: AppTypes.PageContext) { - currentPage.value = ctx_.insId - if (!pageContextCache.has(ctx_.insId)) { - pageContextCache.set(ctx_.insId, ctx_) - } - if (!keepAliveInclude.value.includes(ctx_.insId)) { - keepAliveInclude.value.push(ctx_.insId) - } - if (!pages.value.find(it => it.insId === ctx_.insId)) { - pages.value.push(ctx_) - } + function open(ctx?: AppTypes.PageContext) { + if ( + ctx == null + || Strings.isBlank(ctx.insId) + || currentPage.insId === ctx.insId) return Promise.reject('已在当前页面') + const page = pages.find(it => it.insId === ctx.insId) + if (page == null) pages.push(ctx) + currentPage.$reset(ctx) + return Promise.resolve(ctx) } function reopen(insId: string) { - if (currentPage.value === insId) { - return - } - const page = pageContextCache.get(insId) - if (page) { - currentPage.value = insId - Nav.open(page.routeName) - } + const page = pages.find(it => it.insId === insId) + return open(page) } function closePage(insId: string) { - pageContextCache.delete(insId) - if (keepAliveInclude.value.includes(insId)) { - keepAliveInclude.value = keepAliveInclude.value.splice(keepAliveInclude.value.indexOf(insId), 1) - } - const index = pages.value.findIndex(it => it.insId === insId) - if (index !== -1) { - const oldLen = pages.value.length - pages.value = pages.value.filter(it => it.insId !== insId) - - if (currentPage.value !== insId) { - return - } - if (index === 0) { - if (pages.value.length > 0) { - reopen(pages.value[0]?.insId) - } else { - Nav.open('home') - } - } else if (index === oldLen - 1) { - if (pages.value.length > 0) { - reopen(pages.value[pages.value.length - 1]?.insId) - } else { - Nav.open('home') - } - } else { - if (pages.value.length > 0) { - reopen(pages.value[index]?.insId) - } else { - Nav.open('home') - } - } + const index = pages.findIndex(it => it.insId === insId) + if (index < 1 || pages[index].routeName === SpecialPage.Home) return Promise.reject('不能关闭首页') + pages.splice(index, 1) + if (currentPage.insId !== insId) return Promise.resolve(null) + const newLen = pages.length + const oldLen = newLen + 1 + let page: AppTypes.PageContext | undefined + if (index === 1) { + page = newLen > 1 ? pages[1] : pages[0] + } else if (index === oldLen - 1) { + page = pages[newLen - 1] + } else { + page = pages[index] } + return open(page) } function closeCurrent() { - closePage(currentPage.value) + return closePage(currentPage.insId) + } + + function closeLeft() { + const index = pages.findIndex(it => it.insId === currentPage.insId) + if (index < 2) return + pages.splice(1, index - 1) + } + + function closeRight() { + const index = pages.findIndex(it => it.insId === currentPage.insId) + if (index < 0) return + pages.splice(index + 1, pages.length - index - 1) } function closeOther() { - pages.value = pages.value.filter(it => it.insId === currentPage.value) + const pageList = pages.filter(it => it.routeName === SpecialPage.Home || it.insId === currentPage.insId) + pages.$reset(pageList) } function closeAll() { - pages.value = [] - Nav.open('home') + const page = pages.find(it => it.routeName === SpecialPage.Home)! + pages.$reset([ page ]) + return open(page) } function $reset() { - keepAliveInclude.value = [] - currentPage.value = '' - initCache() + pages.$reset() + currentPage.$reset() } Evt.on('logout', $reset) return { - ctx, reopen, open, closePage, closeCurrent, + closeLeft, + closeRight, closeOther, closeAll, pages, diff --git a/src/common/app/index.ts b/src/common/app/index.ts index 754be9c..9746762 100644 --- a/src/common/app/index.ts +++ b/src/common/app/index.ts @@ -11,7 +11,7 @@ const home = { 'sn': 'menus', 'pid': '0', 'title': '首页', - 'icon': 'menus', + 'icon': 'home-3-line', 'tier': 1, 'breadcrumb': [ '首页', @@ -22,7 +22,8 @@ const home = { 'routeName': 'home', 'path': '/home', } -export const reloadUserInfo = () => { + +export function reloadUserInfo() { const appSettingStore = useAppSettingStore() const appUserStore = useAppUserStore() return LoginApi.my() @@ -49,31 +50,6 @@ export const reloadUserInfo = () => { }) } -/* export const loadUserInfo = () => { - const appSettingStore = useAppSettingStore() - const appUserStore = useAppUserStore() - return LoginApi.my() - .then(({data}) => { - const menuTree = Utils.clone(Colls.toTree(data.menus)) - appSettingStore.$patch({ - menus: data.menus, menuTree, - theme: data.setting?.theme ?? 'light', - collectedMenus: data.setting?.collectedMenus ?? [], - logo: data.setting?.logo, - language: data.setting?.language ?? 'zh', - }) - appUserStore.$patch({ - userId: data.id, - nickname: data.nickname, - avatar: data.avatar, - tenantId: data.tenantId, - tenantName: data.tenantName, - bizObj: data.bizObj, - roles: data.roles, - }) - }) - } */ - export function hasPermission(resSn?: string) { const appSettingStore = useAppSettingStore() const res = appSettingStore.menus.find(it => it.sn === resSn) diff --git a/src/common/router/index.ts b/src/common/router/index.ts index 4d888e6..d9e10ca 100644 --- a/src/common/router/index.ts +++ b/src/common/router/index.ts @@ -15,7 +15,6 @@ import { getRoutes, } from '@/common/router/route-config.ts' import { SpecialPage } from '@/common/router/constants.ts' -import Nav from '@/common/router/nav.ts' function addRoutes(routNames: string[]) { if (Colls.isEmpty(routNames)) return @@ -81,7 +80,7 @@ router.beforeEach((to, from) => { routeName = SpecialPage.Home } setTimeout(() => { - Nav.open(routeName) + Evt.emit('browserReflash', routeName) }) return false } @@ -118,19 +117,4 @@ export function reloadRouter() { return true } -Evt.on('login', (_) => { - Nav.open(SpecialPage.Home) -}) - -Evt.on('logout', (_) => { - const routes = router - .getRoutes() - .filter((it) => it.name !== SpecialPage.Main && it.name !== SpecialPage.Login && it.name !== SpecialPage.NotFound && it.name !== SpecialPage.Home) - .map((it) => it.name as string) - removeRoutes(routes) - router.push({replace: true, name: SpecialPage.Login}).then(() => { - // console.log(r) - }) -}) - export default router diff --git a/src/common/router/nav.ts b/src/common/router/nav.ts index a0cdfba..f2342dc 100644 --- a/src/common/router/nav.ts +++ b/src/common/router/nav.ts @@ -1,10 +1,14 @@ -import router, { reloadRouter } from '@/common/router/index.ts' +import router, { + reloadRouter, + removeRoutes, +} from '@/common/router/index.ts' import Evt from '@/common/utils/evt.ts' import { useAppSettingStore } from '@/common/app/app-setting-store.ts' import { useAppPageStore } from '@/common/app/app-page-store.ts' -import { nanoid } from 'nanoid' import { reloadUserInfo } from '@/common/app' import { ElMessage } from 'element-plus' +import type { App } from 'vue' +import { SpecialPage } from '@/common/router/constants.ts' type Option = Partial> & Pick @@ -13,153 +17,280 @@ type Option = Partial> * * @param option */ -function open(option: string | Option) { - let ctx: AppTypes.PageContext - const appSettingStore = useAppSettingStore() + +/* function open(option: string | Option) { + let ctx: AppTypes.PageContext + const appSettingStore = useAppSettingStore() + if (typeof option === 'string') { + const routeName = option + if (!router.hasRoute(routeName)) { + return reloadUserInfo() + .then(reloadRouter) + .then(() => { + if (!router.hasRoute(routeName)) { + ElMessage.error('页面不存在') + return Promise.reject('页面不存在') + } + const menu = appSettingStore.menus.find(it => it.routeName === routeName) + if (menu == null) { + ElMessage.error('页面不存在') + return Promise.reject('页面不存在') + } + ctx = { + insId: routeName, + title: menu.title, + keepAlive: true, + params: {}, + routeName, + menuId: menu.id, + icon: menu.icon, + breadcrumb: menu.breadcrumb, + } + useAppPageStore().open(ctx) + return router.push({name: ctx.routeName, params: ctx.params}) + .then(err => { + if (err == null) { + Evt.emit('openPage') + return Promise.resolve(true) + } else { + return Promise.reject(err) + } + }) + .catch(err => { + return Promise.reject(err) + }) + }) + } + const menu = appSettingStore.menus.find(it => it.routeName === routeName) + if (menu == null) { + ElMessage.error('页面不存在') + return Promise.reject('页面不存在') + } + ctx = { + insId: routeName , + title: menu.title, + keepAlive: true, + params: {}, + routeName, + menuId: menu.id, + icon: menu.icon, + breadcrumb: menu.breadcrumb, + } + } else { + const routeName = option.routeName + if (!router.hasRoute(routeName)) { + return reloadUserInfo() + .then(reloadRouter) + .then(() => { + if (!router.hasRoute(routeName)) { + ElMessage.error('页面不存在') + return Promise.reject('页面不存在') + } + const menu = appSettingStore.menus.find(it => it.routeName === routeName) + if (menu == null) { + ElMessage.error('页面不存在') + return Promise.reject('页面不存在') + } + const option_ = option as Option + ctx = { + insId: option_.insId ?? routeName, + title: option_.title ?? menu.title, + routeName: routeName, + keepAlive: true, + params: option_.params ?? {}, + menuId: menu.id, + icon: menu.icon, + breadcrumb: menu.breadcrumb, + } + useAppPageStore().open(ctx) + return router.push({name: ctx.routeName, params: ctx.params}) + .then(err => { + if (err == null) { + Evt.emit('openPage') + return Promise.resolve(true) + } else { + return Promise.reject(err) + } + }) + .catch(err => { + return Promise.reject(err) + }) + }) + } + const menu = appSettingStore.menus.find(it => it.routeName === routeName) + if (menu == null) { + ElMessage.error('页面不存在') + return Promise.reject('页面不存在') + } + + ctx = { + insId: option.insId ?? routeName, + title: option.title ?? menu.title, + routeName: routeName, + keepAlive: true, + params: option.params ?? {}, + menuId: menu.id, + icon: menu.icon, + breadcrumb: menu.breadcrumb, + } + } + useAppPageStore().open(ctx) + return router.push({name: ctx.routeName, params: ctx.params}) + .then(err => { + if (err == null) { + Evt.emit('openPage') + return Promise.resolve(true) + } else { + return Promise.reject(err) + } + }) + .catch(err => { + return Promise.reject(err) + }) + } */ + +function checkRoute(option: string | Option) { + let opt: Option if (typeof option === 'string') { - const routeName = option - if (!router.hasRoute(routeName)) { - return reloadUserInfo() - .then(reloadRouter) - .then(() => { - if (!router.hasRoute(routeName)) { - ElMessage.error('页面不存在') - return Promise.reject('页面不存在') - } - const menu = appSettingStore.menus.find(it => it.routeName === routeName) - if (menu == null) { - ElMessage.error('页面不存在') - return Promise.reject('页面不存在') - } - ctx = { - insId: routeName + '_' + nanoid(), - title: menu.title, - keepAlive: true, - params: {}, - routeName, - menuId: menu.id, - icon: menu.icon, - breadcrumb: menu.breadcrumb, - } - ctx.insId = ctx.routeName - useAppPageStore().open(ctx) - return router.push({name: ctx.routeName, params: ctx.params}) - .then(err => { - if (err == null) { - Evt.emit('openPage') - return Promise.resolve(true) - } else { - return Promise.reject(err) - } - }) - .catch(err => { - return Promise.reject(err) - }) - }) - } - const menu = appSettingStore.menus.find(it => it.routeName === routeName) - if (menu == null) { - ElMessage.error('页面不存在') - return Promise.reject('页面不存在') - } - ctx = { - insId: routeName + '_' + nanoid(), - title: menu.title, - keepAlive: true, - params: {}, - routeName, - menuId: menu.id, - icon: menu.icon, - breadcrumb: menu.breadcrumb, + opt = { + routeName: option, } } else { - const routeName = option.routeName - if (!router.hasRoute(routeName)) { - return reloadUserInfo() - .then(reloadRouter) - .then(() => { - if (!router.hasRoute(routeName)) { - ElMessage.error('页面不存在') - return Promise.reject('页面不存在') - } - const menu = appSettingStore.menus.find(it => it.routeName === routeName) - if (menu == null) { - ElMessage.error('页面不存在') - return Promise.reject('页面不存在') - } - const option_ = option as Option - ctx = { - insId: option_.insId ?? routeName + '_' + nanoid(), - title: option_.title ?? menu.title, - routeName: routeName, - keepAlive: true, - params: option_.params ?? {}, - menuId: menu.id, - icon: menu.icon, - breadcrumb: menu.breadcrumb, - } - ctx.insId = ctx.routeName - useAppPageStore().open(ctx) - return router.push({name: ctx.routeName, params: ctx.params}) - .then(err => { - if (err == null) { - Evt.emit('openPage') - return Promise.resolve(true) - } else { - return Promise.reject(err) - } - }) - .catch(err => { - return Promise.reject(err) - }) - }) - } - const menu = appSettingStore.menus.find(it => it.routeName === routeName) - if (menu == null) { - ElMessage.error('页面不存在') - return Promise.reject('页面不存在') - } - - ctx = { - insId: option.insId ?? routeName + '_' + nanoid(), - title: option.title ?? menu.title, - routeName: routeName, - keepAlive: true, - params: option.params ?? {}, - menuId: menu.id, - icon: menu.icon, - breadcrumb: menu.breadcrumb, - } + opt = option } - ctx.insId = ctx.routeName - useAppPageStore().open(ctx) + const appSettingStore = useAppSettingStore() + const menu = appSettingStore.menus.find(it => it.routeName === opt.routeName) + + if (menu == null + || !router.hasRoute(opt.routeName)) { + return reloadUserInfo() + .then(reloadRouter) + .then(() => { + const menu_ = appSettingStore.menus.find(it => it.routeName === opt.routeName) + if (menu_ == null || !router.hasRoute(opt.routeName)) { + ElMessage.error('页面不存在') + return Promise.reject('页面不存在') + } else { + return {option: opt, menu: menu_} + } + }) + } + return Promise.resolve({option: opt, menu}) +} + +function jump(ctx: AppTypes.PageContext) { return router.push({name: ctx.routeName, params: ctx.params}) .then(err => { if (err == null) { - Evt.emit('openPage') - return Promise.resolve(true) - } else { - return Promise.reject(err) + return Promise.resolve(ctx) } - }) - .catch(err => { return Promise.reject(err) }) } +function open(option: string | Option) { + return checkRoute(option) + .then(({option, menu}) => { + return jump({ + insId: option.insId ?? option.routeName, + title: option.title ?? menu.title, + keepAlive: true, + params: option.params ?? {}, + routeName: option.routeName, + menuId: menu.id, + icon: menu.icon, + breadcrumb: menu.breadcrumb, + }) + }) + .then(useAppPageStore().open) +} + /** * 关闭页面并删除标签 * * @param id */ function close(id: string) { - useAppPageStore().close(id) - Evt.emit('closePage', id) + useAppPageStore() + .closePage(id) + .then(ctx => { + if (ctx == null) return Promise.resolve(null) + return jump(ctx) + }) } +function closeCurrent() { + return useAppPageStore().closeCurrent() + .then(ctx => { + if (ctx == null) return Promise.resolve(null) + return jump(ctx) + }) +} + +function closeLeft() { + useAppPageStore().closeLeft() +} + +function closeRight() { + useAppPageStore().closeRight() +} + +function closeOther() { + useAppPageStore().closeOther() +} + +function closeAll() { + return useAppPageStore().closeAll() + .then(jump) +} + +const install = (_: App): void => { + Evt.on('login', (_) => { + open(SpecialPage.Home) + }) + + Evt.on('browserReflash', (routeName: string) => { + if (routeName === SpecialPage.Home) { + open(routeName) + return + } + checkRoute(SpecialPage.Home) + .then(({option, menu}) => { + useAppPageStore().open({ + insId: option.insId ?? option.routeName, + title: option.title ?? menu.title, + keepAlive: true, + params: option.params ?? {}, + routeName: option.routeName, + menuId: menu.id, + icon: menu.icon, + breadcrumb: menu.breadcrumb, + }) + open(routeName) + }) + }) + + Evt.on('logout', (_) => { + const routes = router + .getRoutes() + .filter((it) => it.name !== SpecialPage.Main && it.name !== SpecialPage.Login && it.name !== SpecialPage.NotFound && it.name !== SpecialPage.Home) + .map((it) => it.name as string) + removeRoutes(routes) + router.push({replace: true, name: SpecialPage.Login}).then(() => { + // console.log(r) + }) + }) + +} export default { open, close, + closeCurrent, + closeLeft, + closeRight, + closeOther, + closeAll, + install, } diff --git a/src/common/utils/evt.ts b/src/common/utils/evt.ts index 619b12d..5a8f012 100644 --- a/src/common/utils/evt.ts +++ b/src/common/utils/evt.ts @@ -3,6 +3,7 @@ import mitt, { type EventType } from 'mitt' export interface EventList extends Record { login?: string logout?: string + browserReflash: string connect_ws?: string disconnect_ws?: string openPage?: string diff --git a/src/components/a-icon/iconfont.css b/src/components/a-icon/iconfont.css index 3842f38..c9fdde8 100644 --- a/src/components/a-icon/iconfont.css +++ b/src/components/a-icon/iconfont.css @@ -1,8 +1,8 @@ @font-face { font-family: "iconfont"; /* 项目名称 再昇云 */ - src: url('@/components/a-icon/iconfont.woff2?t=1768370216119') format('woff2'), - url('@/components/a-icon/iconfont.woff?t=1768370216119') format('woff'), - url('@/components/a-icon/iconfont.ttf?t=1768370216119') format('truetype'); + src: url('@/components/a-icon/iconfont.woff2?t=1768642091253') format('woff2'), + url('@/components/a-icon/iconfont.woff?t=1768642091253') format('woff'), + url('@/components/a-icon/iconfont.ttf?t=1768642091253') format('truetype'); } .iconfont { @@ -13,6 +13,10 @@ -moz-osx-font-smoothing: grayscale; } +.icon-home-3-line:before { + content: "\e6b3"; +} + .icon-bell:before { content: "\e7c4"; } diff --git a/src/components/a-icon/iconfont.json b/src/components/a-icon/iconfont.json index af2ce5f..f6472f0 100644 --- a/src/components/a-icon/iconfont.json +++ b/src/components/a-icon/iconfont.json @@ -5,6 +5,13 @@ "css_prefix_text": "icon-", "description": "", "glyphs": [ + { + "icon_id": "17102563", + "name": "home-3-line", + "font_class": "home-3-line", + "unicode": "e6b3", + "unicode_decimal": 59059 + }, { "icon_id": "4766680", "name": "bell", diff --git a/src/components/a-icon/iconfont.ts b/src/components/a-icon/iconfont.ts index 4b1f051..7d58035 100644 --- a/src/components/a-icon/iconfont.ts +++ b/src/components/a-icon/iconfont.ts @@ -5,6 +5,13 @@ export const icons = { 'css_prefix_text': 'icon-', 'description': '', 'glyphs': [ + { + 'icon_id': '17102563', + 'name': 'home-3-line', + 'font_class': 'home-3-line', + 'unicode': 'e6b3', + 'unicode_decimal': 59059, + }, { 'icon_id': '4766680', 'name': 'bell', diff --git a/src/components/a-icon/iconfont.ttf b/src/components/a-icon/iconfont.ttf index 84c127b4d7921d67623c0e4608f0f8a6889c5c63..7e9b71078b53e4125a0e29b8484346a596e16a25 100644 GIT binary patch delta 2074 zcmaKsTWnNS6o&sjXKtNKXF8o;ruS(91zHNFt+f^lh=8TsZB>*@Z40Gop{c~6Axt&K zR9`4o6XJ`YeK3s===gw1qlsw<@qr*3G|@CX;Np_T7!>1;)_-@6ug>H<=ggTi=geN~ z``6p=nX_lj*vix=xn+fba{}tJ=jQ=4OU4F{c6V*6Z@LNuF7W%W2D^?And4?TzvDAdainXoH~K-# zd0_Jmz;$To=nLUv&C^%1fi3NT`|HzFRjoZRyq0vNK7MC^q~#uhZk_;sI_*9D-+q36 z{-nFqd4-?-aM`nb+28e~%Z$%8o^<*fMi)-Nyb5RGsG9o#A3F-S>ExvqeDluIApSj%h!u3H|UJF+WaTKl@VryqRvz2>~!a6{_3M&Hf zDXa~|udqsxEQR%guqT!jO9u%mEFvVNu$+*v!ootRi-jeIL=+Yq5>;4si2dV)4S>WH zwgQr?uqlwZ!uCM&_uzL_nY+)ZE356Yn6e;X2q*!5>Ateg?4JlRF zc}ST;2O#AN%ITX_C=>&dRHz7~QlTu6DuvoWY)c3Qf@GjdkPMUxl7V_bGEg)~1}X=! zq`0AdkPP$?l7U7-GSE#(2GsI619gS0R46WFl|qFfbqZyMtX8Nsq+X%mNJ#@f5V{Vr zVh|fxvBD7g53!CACIMm{Aq&DkeU5A=Vwj&_dd5 z|J(RsC-+tu!X!hiB!roUY*mdf0yRozU7Ef4kfct)ha|*ZaDV$jN=T`;$c^#NPxwgg9mlfgei(NJ}$J@jtqV(7Q|5To_G! zR1_G f<9FLGMoce)eMbj-YgX3`96r*U{%p$+4$J>9^OnGA delta 1946 zcmZ|PYiQMV9LMqZ|D3aPww>GD=H_&pw>fp{ytdM2n_8xGc}s0ssdHY2%nLSfg?Q@u z$Z8Tjs#y{uA;N;7MnQ=TA6P^XSPw?f*FBIB${v)pK0m+ourprgf6o8h_WyoA-|z5n zbm9Hz&1Ho%4WD0v_yD9DkM_NCq%byi7Sg@2mfpkNhnjaM-T=m>rB^3Xf5rdS<56ko zJ>EYsICF9mqPsHKce1B@>7}*bLFuqwA3NSXa4I?zEz)b#^nBKd?&F8cK5V@PoAmv$ zqo+>3obCVS=9*8T<6B64{nqH*wjLtASMtpR>-Ohc?~_jG1pG2MzWKl7U@b?UA4l<7>)c3YpFw)1w; zt_)p|&mOuHZ!Sc7^~V4Hp-;|b51l+gE05E{BRtAutY(d>)wz6;JpF}n) zTn?4f?I4&680hLS6*bUxVsWP{#?*^I*NzoARRK#n)dNd8RR$||su5P=R4q)M2ns43 zmUb#3mT@X3mUSvCmUAjFmUk*O7XDdL(XlB`<;TjM8i7?fwFIklY7RD4zpp#gC#=e; zV_3CQ?=VF-P#3Wpr+#A7ojQxnaOyEu>(p(m&Z+NMy;B0PnU4B`9?Wuz1vc9e&dqU( z3KrTR3Juoa6d!D!Q;@Jmr$}M*ox+7JaEckW&?#_OlN5BP>|q+xKq4!9oZ{^MZxE2nTcwK^4sq7P8Z({%f4DcBjF@LSRHAhK0b0h7AjW z5se)d@*)~QEaXKride{tXehCe7twfPAupmq#X??0Ba3x}{&(ofb{)4k%`w*LG|^bN zBGGJPTb-sH+vdXlv+#M*H5%$#>;1W=F1nzJ=OPro{2T5YEGtGe6uuZ1>Ej>UJx XSC9OfF0@5GLnpS}h#1+>`D6TFMmwL* diff --git a/src/components/a-icon/iconfont.woff b/src/components/a-icon/iconfont.woff index a3a6fb4ad5ec1cdd3b954e37a237528b8534dba2..5e24df34836d26fe864b1764d53cd304876c9b7d 100644 GIT binary patch delta 12622 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 delta 12509 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 diff --git a/src/components/a-icon/iconfont.woff2 b/src/components/a-icon/iconfont.woff2 index 36ad3352da607a476d4b27e33b166ab4cc1aca7f..992c7fe2d59d3b7ec85250838c7444bef9d231e1 100644 GIT binary patch literal 11068 zcmV-CE5p=xPew8T0RR9104qEI3jhEB08k(R04nPM0RR9100000000000000000000 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 Cl~#TL literal 11024 zcmV+rEAP~IPew8T0RR9104opx3jhEB08f+v04l)%0RR9100000000000000000000 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 - { - const router = useRouter() const appSettingStore = useAppSettingStore() - const defaultActive = ref('') + const menuIns = useTemplateRef('menu') - onMounted(() => { - const currentRouteName = router.currentRoute.value.name - defaultActive.value = appSettingStore.menus.find(it => it.routeName === currentRouteName)?.id - }) + const appPageStore = useAppPageStore() + + watch( + () => appPageStore.currentPage.menuId, + () => { + menuIns.value?.updateActiveIndex(appPageStore.currentPage.menuId) + }) const menuTree = computed(() => { return Colls.toTree(appSettingStore.menus.filter((it) => it.menuCategory === MenuCategory.Page || it.menuCategory === MenuCategory.Group || it.menuCategory === MenuCategory.Catalog).sort((a, b) => (a.sort ?? 0) - (b.sort ?? 0))) @@ -59,10 +62,7 @@ export default defineComponent( const onMenuClick = (menuItem: MenuItemRegistered) => { const menu = appSettingStore.menus.find(it => it.id === menuItem.index) - Nav.open({ - insId: menu?.routeName ?? '', - routeName: menu?.routeName ?? '', - }) + Nav.open(menu?.routeName ?? '') } const renderMenu = (it: Menu) => { let renderChildNode: (() => VNode[] | undefined) | undefined = undefined @@ -116,12 +116,13 @@ export default defineComponent( return () => ( <> -
+
Nav.open('home')}>
再昇云
- + {{ default: () => menuTree.value.map(renderMenu), }} diff --git a/src/pages/a-frame/ATabbar.vue b/src/pages/a-frame/ATabbar.vue index 40d688a..a7fef0b 100644 --- a/src/pages/a-frame/ATabbar.vue +++ b/src/pages/a-frame/ATabbar.vue @@ -8,14 +8,15 @@
+ @click="Nav.open(item.routeName)">
{{ item.title }}
- +
+
@@ -23,9 +24,10 @@ @@ -37,15 +39,17 @@ import { elIcons } from '@/common/element/element.ts' import type { IconName } from '@/components/a-icon/iconfont.ts' import AIcon from '@/components/a-icon/AIcon.vue' import type { ScrollbarInstance } from 'element-plus' +import Nav from '@/common/router/nav.ts' +import { SpecialPage } from '@/common/router/constants.ts' const appPageStore = useAppPageStore() const tabsScrollbarIns = useTemplateRef('tabsScrollbar') watch( - () => appPageStore.currentPage, + () => appPageStore.currentPage.insId, () => { nextTick(() => { - const tabItem = document.getElementById(appPageStore.currentPage) + const tabItem = document.getElementById(appPageStore.currentPage.insId) if (tabItem != null) tabsScrollbarIns.value?.setScrollLeft(tabItem.offsetLeft) }) }) @@ -55,7 +59,7 @@ function reopen(insId: string) { } function handleCommand(command: 'closeCurrent' | 'closeOther' | 'closeAll') { - appPageStore[command]() + Nav[command]() }