From 3af6e604451bb1568d13d8cad362612255aa39d8 Mon Sep 17 00:00:00 2001 From: Dong Xia Date: Mon, 30 Dec 2024 15:42:41 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=8A=A8=E6=80=81=E8=B7=AF=E7=94=B1?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/store/modules/app.js | 128 ++++++++++++++++++--------------------- 1 file changed, 59 insertions(+), 69 deletions(-) diff --git a/src/store/modules/app.js b/src/store/modules/app.js index 7e6d877..ea0b014 100644 --- a/src/store/modules/app.js +++ b/src/store/modules/app.js @@ -3,106 +3,96 @@ import { ACTIVE_TAB_KEY, TAB_LIST_KEY, ACTIVE_MENU_KEY } from '../../utils/const const app = { state: { activeTabKey: sessionStorage.getItem(ACTIVE_TAB_KEY), - tabList: JSON.parse(sessionStorage.getItem(TAB_LIST_KEY)), + tabList: JSON.parse(sessionStorage.getItem(TAB_LIST_KEY)) || [], activeMenuKey: sessionStorage.getItem(ACTIVE_MENU_KEY) }, mutations: { setActiveTabKey(state, activeKey) { state.activeTabKey = activeKey + sessionStorage.setItem(ACTIVE_TAB_KEY, activeKey) }, setTabList(state, tabList) { state.tabList = tabList + sessionStorage.setItem(TAB_LIST_KEY, JSON.stringify(tabList)) }, setActiveMenuKey(state, activeMenuKey) { state.activeMenuKey = activeMenuKey + sessionStorage.setItem(ACTIVE_MENU_KEY, activeMenuKey) } }, actions: { addTab({ commit, state, rootGetters }, tab) { - return new Promise((resolve) => { - const menus = rootGetters.getMenus - let currentMenu = {} - menus.forEach(menu => { - if (menu.childs) { - menu.childs.forEach(subMenu => { - if (subMenu.path === tab.path) { - currentMenu = subMenu - } - }) - } else { - if (menu.path === tab.path) { - currentMenu = menu - } - } - }) - tab.title = currentMenu.title - tab.id = currentMenu.id - let tabList = state.tabList || [] - const index = tabList.findIndex(ele => ele.key === tab.key) - if (index > -1) { - commit('setActiveTabKey', tab.key) - sessionStorage.setItem(ACTIVE_TAB_KEY, tab.key) - } else { - tabList.push(tab) - commit('setTabList', tabList) - commit('setActiveTabKey', tab.key) - sessionStorage.setItem(ACTIVE_TAB_KEY, tab.key) - sessionStorage.setItem(TAB_LIST_KEY, JSON.stringify(tabList)) - } - commit('setActiveMenuKey', tab.id) - sessionStorage.setItem(ACTIVE_MENU_KEY, tab.id) - resolve() - }) + const menus = rootGetters.getMenus + let currentMenu = findMenuByPath(menus, tab.path) + + if (!currentMenu) { + console.error('Menu not found for path:', tab.path) + return + } + + tab.title = currentMenu.title + tab.id = currentMenu.id + + let tabList = [...state.tabList] + const index = tabList.findIndex(ele => ele.key === tab.key) + + if (index > -1) { + commit('setActiveTabKey', tab.key) + } else { + tabList.push(tab) + commit('setTabList', tabList) + commit('setActiveTabKey', tab.key) + } + + commit('setActiveMenuKey', tab.id) }, removeTab({ commit, state }, key) { - return new Promise((resolve) => { - let tabList = state.tabList - const index = tabList.findIndex(ele => ele.key === key) - tabList.splice(index, 1) - if (state.activeTabKey === key) { - const tempTab = tabList[Math.min(index, 0)] - if (state.activeTabKey !== tempTab.key) { - commit('setActiveTabKey', tempTab.key) - sessionStorage.setItem(ACTIVE_TAB_KEY, tempTab.key) - } + let tabList = [...state.tabList] + const index = tabList.findIndex(ele => ele.key === key) + + if (index === -1) return + + tabList.splice(index, 1) + + if (state.activeTabKey === key) { + const tempTab = tabList[Math.max(0, index - 1)] || tabList[0] + if (tempTab && tempTab.key !== state.activeTabKey) { + commit('setActiveTabKey', tempTab.key) } - commit('setTabList', tabList) - sessionStorage.setItem(TAB_LIST_KEY, JSON.stringify(tabList)) - resolve() - }) + } + + commit('setTabList', tabList) }, - clearTabs({ commit, state }, isAll) { + clearTabs({ commit, state }, isAll = false) { if (isAll) { commit('setTabList', []) sessionStorage.removeItem(TAB_LIST_KEY) return } - let tabList = state.tabList - const index = tabList.findIndex(ele => ele.key === state.activeTabKey) - const currentTab = tabList[index] - tabList = [currentTab] - commit('setTabList', tabList) - sessionStorage.setItem(TAB_LIST_KEY, JSON.stringify(tabList)) + + const currentTab = state.tabList.find(ele => ele.key === state.activeTabKey) + commit('setTabList', currentTab ? [currentTab] : []) }, activeMenu({ commit }, activeMenuKey) { commit('setActiveMenuKey', activeMenuKey) - sessionStorage.setItem(ACTIVE_MENU_KEY, activeMenuKey) } }, getters: { - getTabList(state) { - return state.tabList - }, - getActiveTabKey(state) { - return state.activeTabKey - }, - getActiveMenuKey(state) { - return state.activeMenuKey - }, - getGuideFlag(state) { - return state.guideFlag + getTabList: state => state.tabList, + getActiveTabKey: state => state.activeTabKey, + getActiveMenuKey: state => state.activeMenuKey + } +} + +function findMenuByPath(menus, path) { + for (const menu of menus) { + if (menu.path === path) return menu + if (menu.childs) { + const subMenu = findMenuByPath(menu.childs, path) + if (subMenu) return subMenu } } + return null } -export default app +export default app \ No newline at end of file -- Gitee From 74f843938c6dff35419de3be55515ea88ec2be85 Mon Sep 17 00:00:00 2001 From: Dong Xia Date: Mon, 30 Dec 2024 15:46:01 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E7=BB=84=E4=BB=B6=E5=BC=82=E5=B8=B8=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/file-upload/index.vue | 76 ++++++++++++++++++++-------- 1 file changed, 54 insertions(+), 22 deletions(-) diff --git a/src/components/file-upload/index.vue b/src/components/file-upload/index.vue index 43a87a7..3ec7dd4 100644 --- a/src/components/file-upload/index.vue +++ b/src/components/file-upload/index.vue @@ -1,12 +1,22 @@