From ecd886a41bf737ec05c0d02043f55bc367d7f68e Mon Sep 17 00:00:00 2001 From: "YUN-PC5\\user" Date: Thu, 14 Dec 2023 16:42:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=87=E7=AD=BE=E6=8C=81=E4=B9=85=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 4 ++-- src/layout/components/Settings/index.vue | 20 ++++++++++++++++++-- src/settings.js | 14 +++++++++----- src/store/modules/settings.js | 20 ++++++++++++++++---- src/store/modules/tagsView.js | 5 +++++ src/store/modules/user.js | 2 ++ 6 files changed, 52 insertions(+), 13 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 08bb1c3..2efd25e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -22,8 +22,8 @@ "editor.formatOnSave": true, // 保存时自动启用 eslint --fix 自动修复 "editor.codeActionsOnSave": { - "source.fixAll": true, - "eslint.autoFixOnSave": true + "source.fixAll": "explicit", + "eslint.autoFixOnSave": "explicit" }, "eslint.options": { "overrideConfig": { diff --git a/src/layout/components/Settings/index.vue b/src/layout/components/Settings/index.vue index 26d7d2e..586e8d0 100644 --- a/src/layout/components/Settings/index.vue +++ b/src/layout/components/Settings/index.vue @@ -52,7 +52,7 @@
- {{ $t('layout.open') }} Tags-Views + {{ $t('layout.open') }} 标签 @@ -90,6 +90,13 @@
+
+ 标签持久化 + + + +
+ {{ $t('layout.saveConfig') }} @@ -185,6 +192,14 @@ const showWatermark = computed({ changeWatermark() } }) + +/**标签持久化 */ +const tabsPersist = computed({ + get: () => storeSettings.value.tagsViewPersist, + set: (val) => { + settingsStore.changeSetting({ key: 'tagsViewPersist', value: val }) + } +}) const changeWatermark = () => { storeSettings.value.showWatermark ? setWatermark(useUserStore().userInfo.userName) : removeWatermark() } @@ -254,7 +269,8 @@ function saveSetting() { sideTheme: storeSettings.value.sideTheme, theme: storeSettings.value.theme, showFooter: storeSettings.value.showFooter, - showWatermark: storeSettings.value.showWatermark + showWatermark: storeSettings.value.showWatermark, + tagsViewPersist: storeSettings.value.tagsViewPersist } localStorage.setItem('layout-setting', JSON.stringify(layoutSetting)) setTimeout(proxy.$modal.closeLoading(), 100) diff --git a/src/settings.js b/src/settings.js index c3b9050..752234c 100644 --- a/src/settings.js +++ b/src/settings.js @@ -75,9 +75,13 @@ export default { /** * 默认大小 */ - defaultSize: 'default', - /** - * 默认语言 - */ - defaultLang: 'zh-cn' + defaultSize: 'default', + /** + * 默认语言 + */ + defaultLang: 'zh-cn', + /** + * 标签页持久化 + */ + tagsViewPersist: true } diff --git a/src/store/modules/settings.js b/src/store/modules/settings.js index 82daafa..d42a20f 100644 --- a/src/store/modules/settings.js +++ b/src/store/modules/settings.js @@ -1,8 +1,20 @@ import defaultSettings from '@/settings' import { useDynamicTitle } from '@/utils/dynamicTitle' -const { sideTheme, theme, showSettings, topNav, tagsView, fixedHeader, sidebarLogo, dynamicTitle, showFooter, showWatermark, watermarkText } = - defaultSettings +const { + sideTheme, + theme, + showSettings, + topNav, + tagsView, + fixedHeader, + sidebarLogo, + dynamicTitle, + showFooter, + showWatermark, + watermarkText, + tagsViewPersist +} = defaultSettings const storageSetting = JSON.parse(localStorage.getItem('layout-setting')) || '' const useSettingsStore = defineStore('settings', { @@ -18,13 +30,13 @@ const useSettingsStore = defineStore('settings', { dynamicTitle: storageSetting.dynamicTitle === undefined ? dynamicTitle : storageSetting.dynamicTitle, showFooter: storageSetting.showFooter === undefined ? showFooter : storageSetting.showFooter, showWatermark: storageSetting.showWatermark === undefined ? showWatermark : storageSetting.showWatermark, - watermarkText: storageSetting.watermarkText === undefined ? watermarkText : storageSetting.watermarkText + watermarkText: storageSetting.watermarkText === undefined ? watermarkText : storageSetting.watermarkText, + tagsViewPersist: storageSetting.tagsViewPersist === undefined ? tagsViewPersist : storageSetting.tagsViewPersist }), actions: { // 修改布局设置 changeSetting(data) { const { key, value } = data - // if (this.hasOwnProperty(key)) { if (Object.prototype.hasOwnProperty.call(this.$state, key)) { this[key] = value } diff --git a/src/store/modules/tagsView.js b/src/store/modules/tagsView.js index 93ae11a..98acbc5 100644 --- a/src/store/modules/tagsView.js +++ b/src/store/modules/tagsView.js @@ -1,4 +1,9 @@ +const storageSetting = JSON.parse(localStorage.getItem('layout-setting')) || '' + const useTagsViewStore = defineStore('tagsView', { + persist: { + paths: [storageSetting.tagsViewPersist ? 'visitedViews' : ''] //存储指定key + }, state: () => ({ visitedViews: [], cachedViews: [], diff --git a/src/store/modules/user.js b/src/store/modules/user.js index fd70184..4ea5e5a 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -1,5 +1,6 @@ import { login, logout, getInfo, oauthCallback, getRsaKey } from '@/api/system/login' import { getToken, setToken, removeToken } from '@/utils/auth' +import useTagsViewStore from './tagsView' import defAva from '@/assets/images/profile.jpg' import { encryptByPublicKey } from '@/utils/jsencrypt' const useUserStore = defineStore('user', { @@ -110,6 +111,7 @@ const useUserStore = defineStore('user', { this.roles = [] this.permissions = [] removeToken() + useTagsViewStore().visitedViews = [] resolve(res) }) .catch((error) => {