|
|
@@ -86,7 +86,7 @@ let disableTransitionTimer, updateContentSizeTimer;
|
|
|
/**
|
|
|
* 读取缓存配置
|
|
|
*/
|
|
|
-function getCacheSetting () {
|
|
|
+function getCacheSetting() {
|
|
|
try {
|
|
|
const value = localStorage.getItem(THEME_STORE_NAME);
|
|
|
if (value) {
|
|
|
@@ -104,7 +104,7 @@ function getCacheSetting () {
|
|
|
/**
|
|
|
* 缓存配置
|
|
|
*/
|
|
|
-function cacheSetting (key, value) {
|
|
|
+function cacheSetting(key, value) {
|
|
|
const cache = getCacheSetting();
|
|
|
if (cache[key] !== value) {
|
|
|
cache[key] = value;
|
|
|
@@ -115,7 +115,7 @@ function cacheSetting (key, value) {
|
|
|
/**
|
|
|
* 开关响应式布局
|
|
|
*/
|
|
|
-function changeStyleResponsive (styleResponsive) {
|
|
|
+function changeStyleResponsive(styleResponsive) {
|
|
|
if (styleResponsive) {
|
|
|
document.body.classList.remove(BODY_LIMIT_CLASS);
|
|
|
} else {
|
|
|
@@ -126,7 +126,7 @@ function changeStyleResponsive (styleResponsive) {
|
|
|
/**
|
|
|
* 切换色弱模式
|
|
|
*/
|
|
|
-function changeWeakMode (weakMode) {
|
|
|
+function changeWeakMode(weakMode) {
|
|
|
if (weakMode) {
|
|
|
document.body.classList.add(WEAK_CLASS);
|
|
|
} else {
|
|
|
@@ -137,7 +137,7 @@ function changeWeakMode (weakMode) {
|
|
|
/**
|
|
|
* 切换主题
|
|
|
*/
|
|
|
-function changeTheme (value, dark) {
|
|
|
+function changeTheme(value, dark) {
|
|
|
return new Promise((resolve, reject) => {
|
|
|
try {
|
|
|
changeColor(value, dark);
|
|
|
@@ -151,7 +151,7 @@ function changeTheme (value, dark) {
|
|
|
/**
|
|
|
* 切换布局时禁用过渡动画
|
|
|
*/
|
|
|
-function disableTransition () {
|
|
|
+function disableTransition() {
|
|
|
disableTransitionTimer && clearTimeout(disableTransitionTimer);
|
|
|
document.body.classList.add(DISABLES_CLASS);
|
|
|
disableTransitionTimer = setTimeout(() => {
|
|
|
@@ -173,16 +173,23 @@ export default {
|
|
|
})(),
|
|
|
getters: {
|
|
|
// 需要 keep-alive 的组件
|
|
|
- keepAliveInclude (state) {
|
|
|
+ keepAliveInclude(state) {
|
|
|
if (!TAB_KEEP_ALIVE || !state.showTabs) {
|
|
|
return [];
|
|
|
}
|
|
|
const components = new Set();
|
|
|
const { reloadPath, reloadHome } = state.routeReload || {};
|
|
|
+ console.log(state.tabs, 'state.tabs');
|
|
|
+
|
|
|
state.tabs?.forEach((t) => {
|
|
|
const isAlive = t.meta?.keepAlive !== false;
|
|
|
+
|
|
|
+
|
|
|
const isExclude = KEEP_ALIVE_EXCLUDES.includes(t.path);
|
|
|
const isReload = reloadPath && reloadPath === t.fullPath;
|
|
|
+ console.log(isAlive, 'isAlive');
|
|
|
+ console.log(isExclude, 'isAlive');
|
|
|
+ console.log(isReload, 'isAlive');
|
|
|
if (isAlive && !isExclude && !isReload && t.components) {
|
|
|
t.components.forEach((c) => {
|
|
|
if (typeof c === 'string' && c) {
|
|
|
@@ -202,100 +209,100 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
mutations: {
|
|
|
- SET (state, { key, value }) {
|
|
|
+ SET(state, { key, value }) {
|
|
|
state[key] = value;
|
|
|
}
|
|
|
},
|
|
|
actions: {
|
|
|
- setTabs ({ commit }, value) {
|
|
|
+ setTabs({ commit }, value) {
|
|
|
commit('SET', { key: 'tabs', value });
|
|
|
//cacheSetting('tabs', value);
|
|
|
},
|
|
|
- setCollapse ({ commit, dispatch }, value) {
|
|
|
+ setCollapse({ commit, dispatch }, value) {
|
|
|
commit('SET', { key: 'collapse', value });
|
|
|
dispatch('delayUpdateContentSize', 800);
|
|
|
},
|
|
|
- setSideNavCollapse ({ commit, dispatch }, value) {
|
|
|
+ setSideNavCollapse({ commit, dispatch }, value) {
|
|
|
commit('SET', { key: 'sideNavCollapse', value });
|
|
|
dispatch('delayUpdateContentSize', 800);
|
|
|
},
|
|
|
- setBodyFullscreen ({ commit, dispatch }, value) {
|
|
|
+ setBodyFullscreen({ commit, dispatch }, value) {
|
|
|
disableTransition();
|
|
|
commit('SET', { key: 'bodyFullscreen', value });
|
|
|
dispatch('delayUpdateContentSize', 800);
|
|
|
},
|
|
|
- setShowTabs ({ commit, dispatch }, value) {
|
|
|
+ setShowTabs({ commit, dispatch }, value) {
|
|
|
commit('SET', { key: 'showTabs', value });
|
|
|
cacheSetting('showTabs', value);
|
|
|
dispatch('delayUpdateContentSize');
|
|
|
},
|
|
|
- setShowFooter ({ commit, dispatch }, value) {
|
|
|
+ setShowFooter({ commit, dispatch }, value) {
|
|
|
commit('SET', { key: 'showFooter', value });
|
|
|
cacheSetting('showFooter', value);
|
|
|
dispatch('delayUpdateContentSize');
|
|
|
},
|
|
|
- setHeadStyle ({ commit }, value) {
|
|
|
+ setHeadStyle({ commit }, value) {
|
|
|
commit('SET', { key: 'headStyle', value });
|
|
|
cacheSetting('headStyle', value);
|
|
|
},
|
|
|
- setSideStyle ({ commit }, value) {
|
|
|
+ setSideStyle({ commit }, value) {
|
|
|
commit('SET', { key: 'sideStyle', value });
|
|
|
cacheSetting('sideStyle', value);
|
|
|
},
|
|
|
- setLayoutStyle ({ commit, dispatch }, value) {
|
|
|
+ setLayoutStyle({ commit, dispatch }, value) {
|
|
|
disableTransition();
|
|
|
commit('SET', { key: 'layoutStyle', value });
|
|
|
cacheSetting('layoutStyle', value);
|
|
|
dispatch('delayUpdateContentSize');
|
|
|
},
|
|
|
- setSideMenuStyle ({ commit, dispatch }, value) {
|
|
|
+ setSideMenuStyle({ commit, dispatch }, value) {
|
|
|
disableTransition();
|
|
|
commit('SET', { key: 'sideMenuStyle', value });
|
|
|
cacheSetting('sideMenuStyle', value);
|
|
|
dispatch('delayUpdateContentSize');
|
|
|
},
|
|
|
- setTabStyle ({ commit }, value) {
|
|
|
+ setTabStyle({ commit }, value) {
|
|
|
commit('SET', { key: 'tabStyle', value });
|
|
|
cacheSetting('tabStyle', value);
|
|
|
},
|
|
|
- setTransitionName ({ commit }, value) {
|
|
|
+ setTransitionName({ commit }, value) {
|
|
|
commit('SET', { key: 'transitionName', value });
|
|
|
cacheSetting('transitionName', value);
|
|
|
},
|
|
|
- setFixedHeader ({ commit }, value) {
|
|
|
+ setFixedHeader({ commit }, value) {
|
|
|
disableTransition();
|
|
|
commit('SET', { key: 'fixedHeader', value });
|
|
|
cacheSetting('fixedHeader', value);
|
|
|
},
|
|
|
- setFixedSidebar ({ commit }, value) {
|
|
|
+ setFixedSidebar({ commit }, value) {
|
|
|
disableTransition();
|
|
|
commit('SET', { key: 'fixedSidebar', value });
|
|
|
cacheSetting('fixedSidebar', value);
|
|
|
},
|
|
|
- setFixedBody ({ commit }, value) {
|
|
|
+ setFixedBody({ commit }, value) {
|
|
|
disableTransition();
|
|
|
commit('SET', { key: 'fixedBody', value });
|
|
|
cacheSetting('fixedBody', value);
|
|
|
},
|
|
|
- setBodyFull ({ commit, dispatch }, value) {
|
|
|
+ setBodyFull({ commit, dispatch }, value) {
|
|
|
commit('SET', { key: 'bodyFull', value });
|
|
|
cacheSetting('bodyFull', value);
|
|
|
dispatch('delayUpdateContentSize');
|
|
|
},
|
|
|
- setLogoAutoSize ({ commit }, value) {
|
|
|
+ setLogoAutoSize({ commit }, value) {
|
|
|
disableTransition();
|
|
|
commit('SET', { key: 'logoAutoSize', value });
|
|
|
cacheSetting('logoAutoSize', value);
|
|
|
},
|
|
|
- setColorfulIcon ({ commit }, value) {
|
|
|
+ setColorfulIcon({ commit }, value) {
|
|
|
commit('SET', { key: 'colorfulIcon', value });
|
|
|
cacheSetting('colorfulIcon', value);
|
|
|
},
|
|
|
- setSideUniqueOpen ({ commit }, value) {
|
|
|
+ setSideUniqueOpen({ commit }, value) {
|
|
|
commit('SET', { key: 'sideUniqueOpen', value });
|
|
|
cacheSetting('sideUniqueOpen', value);
|
|
|
},
|
|
|
- setStyleResponsive ({ commit }, value) {
|
|
|
+ setStyleResponsive({ commit }, value) {
|
|
|
changeStyleResponsive(value);
|
|
|
commit('SET', { key: 'styleResponsive', value });
|
|
|
cacheSetting('styleResponsive', value);
|
|
|
@@ -304,7 +311,7 @@ export default {
|
|
|
* 切换色弱模式
|
|
|
* @param value 是否是色弱模式
|
|
|
*/
|
|
|
- setWeakMode ({ commit }, value) {
|
|
|
+ setWeakMode({ commit }, value) {
|
|
|
return new Promise((resolve) => {
|
|
|
changeWeakMode(value);
|
|
|
commit('SET', { key: 'weakMode', value });
|
|
|
@@ -316,7 +323,7 @@ export default {
|
|
|
* 切换暗黑模式
|
|
|
* @param value 是否是暗黑模式
|
|
|
*/
|
|
|
- setDarkMode ({ commit, state }, value) {
|
|
|
+ setDarkMode({ commit, state }, value) {
|
|
|
return new Promise((resolve, reject) => {
|
|
|
changeTheme(state.color, value)
|
|
|
.then(() => {
|
|
|
@@ -333,7 +340,7 @@ export default {
|
|
|
* 切换主题色
|
|
|
* @param value 主题色
|
|
|
*/
|
|
|
- setColor ({ commit, state }, value) {
|
|
|
+ setColor({ commit, state }, value) {
|
|
|
return new Promise((resolve, reject) => {
|
|
|
changeTheme(value, state.darkMode)
|
|
|
.then(() => {
|
|
|
@@ -350,20 +357,20 @@ export default {
|
|
|
* 设置主页路由对应的组件名称
|
|
|
* @param components 组件名称
|
|
|
*/
|
|
|
- setHomeComponents ({ commit }, value) {
|
|
|
+ setHomeComponents({ commit }, value) {
|
|
|
commit('SET', { key: 'homeComponents', value });
|
|
|
},
|
|
|
/**
|
|
|
* 设置刷新路由信息
|
|
|
* @param option 路由刷新参数
|
|
|
*/
|
|
|
- setRouteReload ({ commit }, value) {
|
|
|
+ setRouteReload({ commit }, value) {
|
|
|
commit('SET', { key: 'routeReload', value });
|
|
|
},
|
|
|
/**
|
|
|
* 更新屏幕尺寸
|
|
|
*/
|
|
|
- updateScreenSize ({ commit, dispatch }) {
|
|
|
+ updateScreenSize({ commit, dispatch }) {
|
|
|
commit('SET', { key: 'screenWidth', value: screenWidth() });
|
|
|
commit('SET', { key: 'screenHeight', value: screenHeight() });
|
|
|
dispatch('updateContentSize');
|
|
|
@@ -371,7 +378,7 @@ export default {
|
|
|
/**
|
|
|
* 更新内容区域尺寸
|
|
|
*/
|
|
|
- updateContentSize ({ commit }) {
|
|
|
+ updateContentSize({ commit }) {
|
|
|
commit('SET', { key: 'contentWidth', value: contentWidth() });
|
|
|
commit('SET', { key: 'contentHeight', value: contentHeight() });
|
|
|
},
|
|
|
@@ -379,7 +386,7 @@ export default {
|
|
|
* 延时更新内容区域尺寸
|
|
|
* @param delay 延迟时间
|
|
|
*/
|
|
|
- delayUpdateContentSize ({ dispatch }, delay) {
|
|
|
+ delayUpdateContentSize({ dispatch }, delay) {
|
|
|
updateContentSizeTimer && clearTimeout(updateContentSizeTimer);
|
|
|
updateContentSizeTimer = setTimeout(() => {
|
|
|
dispatch('updateContentSize');
|
|
|
@@ -388,7 +395,7 @@ export default {
|
|
|
/**
|
|
|
* 重置设置
|
|
|
*/
|
|
|
- resetSetting ({ commit, state }) {
|
|
|
+ resetSetting({ commit, state }) {
|
|
|
return new Promise((resolve, reject) => {
|
|
|
disableTransition();
|
|
|
[
|
|
|
@@ -431,7 +438,7 @@ export default {
|
|
|
/**
|
|
|
* 恢复主题
|
|
|
*/
|
|
|
- recoverTheme ({ state }) {
|
|
|
+ recoverTheme({ state }) {
|
|
|
// 关闭响应式布局
|
|
|
if (!state.styleResponsive) {
|
|
|
changeStyleResponsive(false);
|
|
|
@@ -451,7 +458,7 @@ export default {
|
|
|
* 添加页签或更新相同 key 的页签数据
|
|
|
* @param data 页签数据
|
|
|
*/
|
|
|
- tabAdd ({ dispatch, state }, data) {
|
|
|
+ tabAdd({ dispatch, state }, data) {
|
|
|
if (Array.isArray(data)) {
|
|
|
data.forEach((d) => {
|
|
|
dispatch('tabAdd', d);
|
|
|
@@ -475,7 +482,7 @@ export default {
|
|
|
* 关闭页签
|
|
|
* @param key 页签 key
|
|
|
*/
|
|
|
- async tabRemove ({ dispatch, state }, { key, active }) {
|
|
|
+ async tabRemove({ dispatch, state }, { key, active }) {
|
|
|
const i = state.tabs.findIndex(
|
|
|
(t) => t.key === key || t.fullPath === key
|
|
|
);
|
|
|
@@ -496,7 +503,7 @@ export default {
|
|
|
/**
|
|
|
* 关闭左侧页签
|
|
|
*/
|
|
|
- async tabRemoveLeft ({ dispatch, state }, { key, active }) {
|
|
|
+ async tabRemoveLeft({ dispatch, state }, { key, active }) {
|
|
|
let index = -1; // 选中页签的 index
|
|
|
for (let i = 0; i < state.tabs.length; i++) {
|
|
|
if (state.tabs[i].key === active) {
|
|
|
@@ -520,7 +527,7 @@ export default {
|
|
|
/**
|
|
|
* 关闭右侧页签
|
|
|
*/
|
|
|
- async tabRemoveRight ({ dispatch, state }, { key, active }) {
|
|
|
+ async tabRemoveRight({ dispatch, state }, { key, active }) {
|
|
|
if (state.tabs.length) {
|
|
|
let index = -1; // 选中页签的 index
|
|
|
for (let i = 0; i < state.tabs.length; i++) {
|
|
|
@@ -557,7 +564,7 @@ export default {
|
|
|
/**
|
|
|
* 关闭其它页签
|
|
|
*/
|
|
|
- async tabRemoveOther ({ dispatch, state }, { key, active }) {
|
|
|
+ async tabRemoveOther({ dispatch, state }, { key, active }) {
|
|
|
let index = -1; // 选中页签的 index
|
|
|
let path; // 关闭后跳转的 path
|
|
|
const temp = state.tabs.filter((d, i) => {
|
|
|
@@ -582,7 +589,7 @@ export default {
|
|
|
* 关闭全部页签
|
|
|
* @param active 选中页签的 key
|
|
|
*/
|
|
|
- async tabRemoveAll ({ dispatch, state }, active) {
|
|
|
+ async tabRemoveAll({ dispatch, state }, active) {
|
|
|
const t = state.tabs.find((d) => d.key === active);
|
|
|
const home = typeof t !== 'undefined' && t.closable === true; // 是否跳转主页
|
|
|
const temp = state.tabs.filter((d) => !d.closable);
|
|
|
@@ -596,7 +603,7 @@ export default {
|
|
|
* 修改页签
|
|
|
* @param data 页签数据
|
|
|
*/
|
|
|
- tabSetItem ({ dispatch, state }, data) {
|
|
|
+ tabSetItem({ dispatch, state }, data) {
|
|
|
let i = -1;
|
|
|
if (data.key) {
|
|
|
i = state.tabs.findIndex((d) => d.key === data.key);
|