diff --git a/src/components/core/d2-layout-main/index.vue b/src/components/core/d2-layout-main/index.vue
index bd757071..6be0e832 100644
--- a/src/components/core/d2-layout-main/index.vue
+++ b/src/components/core/d2-layout-main/index.vue
@@ -34,7 +34,9 @@
-
+
+
+
@@ -68,7 +70,8 @@ export default {
computed: {
...mapState({
themeActive: state => state.d2admin.themeActive,
- isGrayMode: state => state.d2admin.isGrayMode
+ isGrayMode: state => state.d2admin.isGrayMode,
+ pageCacheList: state => state.d2admin.pageCacheList
}),
styleLayoutMainGroup () {
return {
diff --git a/src/components/core/d2-multiple-page-control/index.vue b/src/components/core/d2-multiple-page-control/index.vue
index b7d4cc11..882fa3a4 100644
--- a/src/components/core/d2-multiple-page-control/index.vue
+++ b/src/components/core/d2-multiple-page-control/index.vue
@@ -1,13 +1,13 @@
@@ -23,12 +23,20 @@ export default {
},
computed: {
...mapState({
- pageOpenedList: state => state.d2admin.pageOpenedList
+ pageOpenedList: state => state.d2admin.pageOpenedList,
+ pageCurrent: state => state.d2admin.pageCurrent
})
},
methods: {
handleClick (tab, event) {
- // console.log(tab, event)
+ const page = this.pageOpenedList.find(page => page.name === tab.name)
+ if (page) {
+ this.$router.push({
+ name: page.name,
+ params: page.argu,
+ query: page.query
+ })
+ }
}
}
}
diff --git a/src/libs/db.js b/src/libs/db.js
index 869ddd50..604d87eb 100644
--- a/src/libs/db.js
+++ b/src/libs/db.js
@@ -6,7 +6,8 @@ const db = low(adapter)
db.defaults({
themeActive: [],
- pageOpenedList: []
+ pageOpenedList: [],
+ pageCacheList: []
})
.write()
diff --git a/src/libs/util.js b/src/libs/util.js
index 9860226a..10039d3c 100644
--- a/src/libs/util.js
+++ b/src/libs/util.js
@@ -59,21 +59,16 @@ util.openNewPage = function (vm, name, argu, query) {
})
if (pageOpend) {
// 页面以前打开过 但是新的页面可能 name 一样,参数不一样
- vm.$store.commit('d2adminpageOpenedListUpdateItem', {
- index: pageOpendIndex,
- argu,
- query
- })
+ vm.$store.commit('d2adminpageOpenedListUpdateItem', { index: pageOpendIndex, argu, query })
} else {
// 页面以前没有打开过
const tagPool = vm.$store.state.d2admin.tagPool
let tag = tagPool.find(t => t.name === name)
if (tag) {
- vm.$store.commit('d2adminTagIncreate', {
- tag, argu, query
- })
+ vm.$store.commit('d2adminTagIncreate', { tag, argu, query })
}
}
+ vm.$store.commit('d2adminPageSetCurrentName', name)
}
/**
@@ -81,7 +76,7 @@ util.openNewPage = function (vm, name, argu, query) {
* @param {*} ele element
* @param {array} targetArr array
*/
-util.oneOf = function (ele, targetArr) {
+util.isOneOf = function (ele, targetArr) {
if (targetArr.indexOf(ele) >= 0) {
return true
} else {
diff --git a/src/router/index.js b/src/router/index.js
index a3d6dd80..7d3cdf72 100755
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -39,13 +39,6 @@ router.afterEach(to => {
// 需要的信息
const app = router.app
const { name, params, query } = to
- // dev
- console.group('router.afterEach')
- console.log('app: ', app)
- console.log('name: ', name)
- console.log('params: ', params)
- console.log('query: ', query)
- console.groupEnd()
// 多页控制 打开新的页面
util.openNewPage(app, name, params, query)
})
diff --git a/src/store/modules/d2admin.js b/src/store/modules/d2admin.js
index 6164bb42..bdd91245 100644
--- a/src/store/modules/d2admin.js
+++ b/src/store/modules/d2admin.js
@@ -11,29 +11,36 @@ export default {
// 主题
themeList,
themeActive: themeList[1],
+ // 可以在多页 tab 模式下显示的页面
+ tagPool: [],
// 当前显示的多页面列表
pageOpenedList: [
- {
- name: 'index',
- title: '首页'
- }
+ { name: 'index', title: '首页' }
],
- // 可以在多页 tab 模式下显示的页面
- tagPool: []
+ // 当前页面
+ pageCurrent: '',
+ // 使用缓存的页面 (需要在页面中写 name)
+ pageCacheList: [],
+ // 不使用缓存的页面
+ pageDisableCacheList: [
+ 'no-cache'
+ ]
},
mutations: {
+ /**
+ * 设置当前激活的页面 name
+ * @param {state} state vuex state
+ * @param {string} name new name
+ */
+ d2adminPageSetCurrentName (state, name) {
+ state.pageCurrent = name
+ },
/**
* 更新页面列表上的某一项
* @param {state} state vuex state
* @param {info} param1 new page info
*/
d2adminpageOpenedListUpdateItem (state, { index, argu, query }) {
- // dev
- console.group('d2adminpageOpenedListUpdateItem')
- console.log('index: ', index)
- console.log('argu: ', argu)
- console.log('query: ', query)
- console.groupEnd()
// 更新页面列表某一项
let page = state.pageOpenedList[index]
page.argu = argu || page.argu
@@ -64,12 +71,37 @@ export default {
* @param {object} param1 new tag info
*/
d2adminTagIncreate (state, { tag, argu, query }) {
- // if (!Util.oneOf(tagObj.name, state.dontCache)) {
- // state.cachePage.push(tagObj.name);
- // localStorage.cachePage = JSON.stringify(state.cachePage);
- // }
- // state.pageOpenedList.push(tagObj);
- // localStorage.pageOpenedList = JSON.stringify(state.pageOpenedList);
+ // 设置新的 tag
+ let newTag = tag
+ newTag.argu = argu || newTag.argu
+ newTag.query = query || newTag.query
+ // 检查这个页面是不是属于不使用缓存的页面
+ if (!util.isOneOf(newTag.name, state.pageDisableCacheList)) {
+ // 在缓存页面的列表加入这个页面的 name
+ state.pageCacheList.push(newTag.name)
+ // 更新设置到数据库
+ const setting = db.get('pageCacheList').find({uuid: util.uuid()})
+ if (setting.value()) {
+ setting.assign({value: state.pageCacheList}).write()
+ } else {
+ db.get('pageCacheList').push({
+ uuid: util.uuid(),
+ value: state.pageCacheList
+ }).write()
+ }
+ }
+ // 添加进当前显示的页面数组
+ state.pageOpenedList.push(newTag)
+ // 更新设置到数据库
+ const setting = db.get('pageOpenedList').find({uuid: util.uuid()})
+ if (setting.value()) {
+ setting.assign({value: state.pageOpenedList}).write()
+ } else {
+ db.get('pageOpenedList').push({
+ uuid: util.uuid(),
+ value: state.pageOpenedList
+ }).write()
+ }
console.log('d2adminTagIncreate')
},
/**