From 12e23a9264b464435291c4db67ac4e3c6d4873d6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E4=B8=8D=E5=81=9A=E7=A0=81=E5=86=9C?= <599854767@qq.com>
Date: Thu, 28 Sep 2023 18:11:40 +0800
Subject: [PATCH] =?UTF-8?q?:sparkles:=E6=96=B0=E5=A2=9EtagView=E6=8C=81?=
=?UTF-8?q?=E4=B9=85=E5=8C=96=E9=85=8D=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/layout/components/Settings/index.vue | 20 ++++++++++++++++++--
src/settings.js | 6 +++++-
src/store/modules/settings.js | 20 ++++++++++++++++----
src/store/modules/tagsView.js | 5 +++++
src/store/modules/user.js | 2 ++
5 files changed, 46 insertions(+), 7 deletions(-)
diff --git a/src/layout/components/Settings/index.vue b/src/layout/components/Settings/index.vue
index 12e1064..8624e6b 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 7d1c33e..8300f82 100644
--- a/src/settings.js
+++ b/src/settings.js
@@ -91,5 +91,9 @@ export default {
/**
* 是否显示手机号登录
*/
- showPhoneLogin: true
+ showPhoneLogin: true,
+ /**
+ * 标签页持久化
+ */
+ tagsViewPersist: false
}
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 7edfe1e..dff8eb7 100644
--- a/src/store/modules/user.js
+++ b/src/store/modules/user.js
@@ -1,5 +1,6 @@
import { login, logout, getInfo, oauthCallback } from '@/api/system/login'
import { getToken, setToken, removeToken } from '@/utils/auth'
+import useTagsViewStore from './tagsView'
import defAva from '@/assets/images/profile.jpg'
import cache from '@/plugins/cache'
import md5 from 'crypto-js/md5'
@@ -121,6 +122,7 @@ const useUserStore = defineStore('user', {
this.roles = []
this.permissions = []
removeToken()
+ useTagsViewStore().visitedViews = []
resolve(res)
})
.catch((error) => {