Former-commit-id: f246662bbf830bd098145c0a71d80f67259a9583
This commit is contained in:
FairyEver
2019-08-20 22:27:32 +08:00
parent a50ec9aeb8
commit 9b54e8701f
15 changed files with 221 additions and 184 deletions
+92
View File
@@ -1,5 +1,7 @@
import low from 'lowdb' import low from 'lowdb'
import LocalStorage from 'lowdb/adapters/LocalStorage' import LocalStorage from 'lowdb/adapters/LocalStorage'
import util from '@/libs/util'
import { cloneDeep } from 'lodash'
const adapter = new LocalStorage(`d2admin-${process.env.VUE_APP_VERSION}`) const adapter = new LocalStorage(`d2admin-${process.env.VUE_APP_VERSION}`)
const db = low(adapter) const db = low(adapter)
@@ -12,3 +14,93 @@ db
.write() .write()
export default db export default db
/**
* @description 检查路径是否存在 不存在的话初始化
* @param {Object} payload dbName {String} 数据库名称
* @param {Object} payload path {String} 路径
* @param {Object} payload user {Boolean} 区分用户
* @param {Object} payload validator {Function} 数据校验钩子 返回 true 表示验证通过
* @param {Object} payload defaultValue {*} 初始化默认值
* @returns {String} 可以直接使用的路径
*/
export function pathInit ({
dbName = 'database',
path = '',
user = true,
validator = () => true,
defaultValue = ''
}) {
const uuid = util.cookies.get('uuid') || 'ghost-uuid'
const currentPath = `${dbName}.${user ? `user.${uuid}` : 'public'}${path ? `.${path}` : ''}`
const value = db.get(currentPath).value()
if (!(value !== undefined && validator(value))) {
db
.set(currentPath, defaultValue)
.write()
}
return currentPath
}
/**
* @description 将数据存储到指定位置 | 路径不存在会自动初始化
* @description 效果类似于取值 dbName.path = value
* @param {Object} payload dbName {String} 数据库名称
* @param {Object} payload path {String} 存储路径
* @param {Object} payload value {*} 需要存储的值
* @param {Object} payload user {Boolean} 是否区分用户
*/
export function dbSet ({
dbName = 'database',
path = '',
value = '',
user = false
}) {
db.set(pathInit({
dbName,
path,
user
}), value).write()
}
/**
* @description 获取数据
* @description 效果类似于取值 dbName.path || defaultValue
* @param {Object} payload dbName {String} 数据库名称
* @param {Object} payload path {String} 存储路径
* @param {Object} payload defaultValue {*} 取值失败的默认值
* @param {Object} payload user {Boolean} 是否区分用户
*/
export function dbGet ({
dbName = 'database',
path = '',
defaultValue = '',
user = false
}) {
return new Promise(resolve => {
resolve(cloneDeep(db.get(pathInit({
dbName,
path,
user,
defaultValue
})).value()))
})
}
/**
* @description 获取存储数据库对象
* @param {Object} payload user {Boolean} 是否区分用户
*/
export function database ({
dbName = 'database',
path = '',
user = false,
validator = () => true,
defaultValue = ''
} = {}) {
return new Promise(resolve => {
resolve(db.get(pathInit({
dbName, path, user, validator, defaultValue
})))
})
}
+11 -11
View File
@@ -8,10 +8,10 @@ export default {
actions: { actions: {
/** /**
* @description 登录 * @description 登录
* @param {Object} param context * @param {Object} context
* @param {Object} param username {String} 用户账号 * @param {Object} payload username {String} 用户账号
* @param {Object} param password {String} 密码 * @param {Object} payload password {String} 密码
* @param {Object} param route {Object} 登录成功后定向的路由对象 任何 vue-router 支持的格式 * @param {Object} payload route {Object} 登录成功后定向的路由对象 任何 vue-router 支持的格式
*/ */
login ({ dispatch }, { login ({ dispatch }, {
username = '', username = '',
@@ -48,8 +48,8 @@ export default {
}, },
/** /**
* @description 注销用户并返回登录页面 * @description 注销用户并返回登录页面
* @param {Object} param context * @param {Object} context
* @param {Object} param confirm {Boolean} 是否需要确认 * @param {Object} payload confirm {Boolean} 是否需要确认
*/ */
logout ({ commit, dispatch }, { confirm = false } = {}) { logout ({ commit, dispatch }, { confirm = false } = {}) {
/** /**
@@ -69,9 +69,9 @@ export default {
// 判断是否需要确认 // 判断是否需要确认
if (confirm) { if (confirm) {
commit('d2admin/gray/set', true, { root: true }) commit('d2admin/gray/set', true, { root: true })
MessageBox.confirm('注销当前账户吗? 打开的标签页和用户设置将会被保存。', '确认操作', { MessageBox.confirm('确定要注销当前用户吗', '注销用户', {
confirmButtonText: '确定注销', confirmButtonText: '确定',
cancelButtonText: '放弃', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}) })
.then(() => { .then(() => {
@@ -81,7 +81,7 @@ export default {
.catch(() => { .catch(() => {
commit('d2admin/gray/set', false, { root: true }) commit('d2admin/gray/set', false, { root: true })
Message({ Message({
message: '放弃注销用户' message: '取消注销操作'
}) })
}) })
} else { } else {
@@ -90,7 +90,7 @@ export default {
}, },
/** /**
* @description 用户登录后从持久化数据加载一系列的设置 * @description 用户登录后从持久化数据加载一系列的设置
* @param {Object} state vuex state * @param {Object} context
*/ */
load ({ dispatch }) { load ({ dispatch }) {
return new Promise(async resolve => { return new Promise(async resolve => {
+64 -123
View File
@@ -1,33 +1,6 @@
import util from '@/libs/util'
import router from '@/router' import router from '@/router'
import { cloneDeep } from 'lodash' import { cloneDeep } from 'lodash'
import { database as getDatabase, dbGet, dbSet } from '@/libs/util.db'
/**
* @description 检查路径是否存在 不存在的话初始化
* @param {Object} param dbName {String} 数据库名称
* @param {Object} param path {String} 路径
* @param {Object} param user {Boolean} 区分用户
* @param {Object} param validator {Function} 数据校验钩子 返回 true 表示验证通过
* @param {Object} param defaultValue {*} 初始化默认值
* @returns {String} 可以直接使用的路径
*/
function pathInit ({
dbName = 'database',
path = '',
user = true,
validator = () => true,
defaultValue = ''
}) {
const uuid = util.cookies.get('uuid') || 'ghost-uuid'
const currentPath = `${dbName}.${user ? `user.${uuid}` : 'public'}${path ? `.${path}` : ''}`
const value = util.db.get(currentPath).value()
if (!(value !== undefined && validator(value))) {
util.db
.set(currentPath, defaultValue)
.write()
}
return currentPath
}
export default { export default {
namespaced: true, namespaced: true,
@@ -35,10 +8,11 @@ export default {
/** /**
* @description 将数据存储到指定位置 | 路径不存在会自动初始化 * @description 将数据存储到指定位置 | 路径不存在会自动初始化
* @description 效果类似于取值 dbName.path = value * @description 效果类似于取值 dbName.path = value
* @param {Object} param dbName {String} 数据库名称 * @param {Object} context
* @param {Object} param path {String} 存储路径 * @param {Object} payload dbName {String} 数据库名称
* @param {Object} param value {*} 需要存储的值 * @param {Object} payload path {String} 存储路径
* @param {Object} param user {Boolean} 是否区分用户 * @param {Object} payload value {*} 需要存储的值
* @param {Object} payload user {Boolean} 是否区分用户
*/ */
set (context, { set (context, {
dbName = 'database', dbName = 'database',
@@ -46,19 +20,16 @@ export default {
value = '', value = '',
user = false user = false
}) { }) {
util.db.set(pathInit({ dbSet({ dbName, path, value, user })
dbName,
path,
user
}), value).write()
}, },
/** /**
* @description 获取数据 * @description 获取数据
* @description 效果类似于取值 dbName.path || defaultValue * @description 效果类似于取值 dbName.path || defaultValue
* @param {Object} param dbName {String} 数据库名称 * @param {Object} context
* @param {Object} param path {String} 存储路径 * @param {Object} payload dbName {String} 数据库名称
* @param {Object} param defaultValue {*} 取值失败的默认值 * @param {Object} payload path {String} 存储路径
* @param {Object} param user {Boolean} 是否区分用户 * @param {Object} payload defaultValue {*} 取值失败的默认值
* @param {Object} payload user {Boolean} 是否区分用户
*/ */
get (context, { get (context, {
dbName = 'database', dbName = 'database',
@@ -66,150 +37,120 @@ export default {
defaultValue = '', defaultValue = '',
user = false user = false
}) { }) {
return new Promise(resolve => { return dbGet({ dbName, path, defaultValue, user })
resolve(cloneDeep(util.db.get(pathInit({
dbName,
path,
user,
defaultValue
})).value()))
})
}, },
/** /**
* @description 获取存储数据库对象 * @description 获取存储数据库对象
* @param {Object} context context * @param {Object} context
* @param {Object} param user {Boolean} 是否区分用户 * @param {Object} payload user {Boolean} 是否区分用户
*/ */
database (context, { database (context, {
user = false user = false
} = {}) { } = {}) {
return new Promise(resolve => { return getDatabase({
resolve(util.db.get(pathInit({ user,
dbName: 'database', defaultValue: {}
path: '',
user,
defaultValue: {}
})))
}) })
}, },
/** /**
* @description 清空存储数据库对象 * @description 清空存储数据库对象
* @param {Object} context context * @param {Object} context
* @param {Object} param user {Boolean} 是否区分用户 * @param {Object} payload user {Boolean} 是否区分用户
*/ */
databaseClear (context, { databaseClear (context, {
user = false user = false
} = {}) { } = {}) {
return new Promise(resolve => { return getDatabase({
resolve(util.db.get(pathInit({ user,
dbName: 'database', validator: () => false,
path: '', defaultValue: {}
user,
validator: () => false,
defaultValue: {}
})))
}) })
}, },
/** /**
* @description 获取存储数据库对象 [ 区分页面 ] * @description 获取存储数据库对象 [ 区分页面 ]
* @param {Object} context context * @param {Object} context
* @param {Object} param basis {String} 页面区分依据 [ name | path | fullPath ] * @param {Object} payload basis {String} 页面区分依据 [ name | path | fullPath ]
* @param {Object} param user {Boolean} 是否区分用户 * @param {Object} payload user {Boolean} 是否区分用户
*/ */
databasePage (context, { databasePage (context, {
basis = 'fullPath', basis = 'fullPath',
user = false user = false
} = {}) { } = {}) {
return new Promise(resolve => { return getDatabase({
resolve(util.db.get(pathInit({ path: `$page.${router.app.$route[basis]}`,
dbName: 'database', user,
path: `$page.${router.app.$route[basis]}`, defaultValue: {}
user,
defaultValue: {}
})))
}) })
}, },
/** /**
* @description 清空存储数据库对象 [ 区分页面 ] * @description 清空存储数据库对象 [ 区分页面 ]
* @param {Object} context context * @param {Object} context
* @param {Object} param basis {String} 页面区分依据 [ name | path | fullPath ] * @param {Object} payload basis {String} 页面区分依据 [ name | path | fullPath ]
* @param {Object} param user {Boolean} 是否区分用户 * @param {Object} payload user {Boolean} 是否区分用户
*/ */
databasePageClear (context, { databasePageClear (context, {
basis = 'fullPath', basis = 'fullPath',
user = false user = false
} = {}) { } = {}) {
return new Promise(resolve => { return getDatabase({
resolve(util.db.get(pathInit({ path: `$page.${router.app.$route[basis]}`,
dbName: 'database', user,
path: `$page.${router.app.$route[basis]}`, validator: () => false,
user, defaultValue: {}
validator: () => false,
defaultValue: {}
})))
}) })
}, },
/** /**
* @description 快速将页面当前的数据 ( $data ) 持久化 * @description 快速将页面当前的数据 ( $data ) 持久化
* @param {Object} context context * @param {Object} context
* @param {Object} param instance {Object} vue 实例 * @param {Object} payload instance {Object} vue 实例
* @param {Object} param basis {String} 页面区分依据 [ name | path | fullPath ] * @param {Object} payload basis {String} 页面区分依据 [ name | path | fullPath ]
* @param {Object} param user {Boolean} 是否区分用户 * @param {Object} payload user {Boolean} 是否区分用户
*/ */
pageSet (context, { pageSet (context, {
instance, instance,
basis = 'fullPath', basis = 'fullPath',
user = false user = false
}) { }) {
return new Promise(resolve => { return getDatabase({
resolve(util.db.get(pathInit({ path: `$page.${router.app.$route[basis]}.$data`,
dbName: 'database', user,
path: `$page.${router.app.$route[basis]}.$data`, validator: () => false,
user, defaultValue: cloneDeep(instance.$data)
validator: () => false,
defaultValue: cloneDeep(instance.$data)
})))
}) })
}, },
/** /**
* @description 快速获取页面快速持久化的数据 * @description 快速获取页面快速持久化的数据
* @param {Object} context context * @param {Object} context
* @param {Object} param instance {Object} vue 实例 * @param {Object} payload instance {Object} vue 实例
* @param {Object} param basis {String} 页面区分依据 [ name | path | fullPath ] * @param {Object} payload basis {String} 页面区分依据 [ name | path | fullPath ]
* @param {Object} param user {Boolean} 是否区分用户 * @param {Object} payload user {Boolean} 是否区分用户
*/ */
pageGet (context, { pageGet (context, {
instance, instance,
basis = 'fullPath', basis = 'fullPath',
user = false user = false
}) { }) {
return new Promise(resolve => { return dbGet({
resolve(cloneDeep(util.db.get(pathInit({ path: `$page.${router.app.$route[basis]}.$data`,
dbName: 'database', user,
path: `$page.${router.app.$route[basis]}.$data`, defaultValue: cloneDeep(instance.$data)
user,
defaultValue: cloneDeep(instance.$data)
})).value()))
}) })
}, },
/** /**
* @description 清空页面快照 * @description 清空页面快照
* @param {Object} context context * @param {Object} context
* @param {Object} param basis {String} 页面区分依据 [ name | path | fullPath ] * @param {Object} payload basis {String} 页面区分依据 [ name | path | fullPath ]
* @param {Object} param user {Boolean} 是否区分用户 * @param {Object} payload user {Boolean} 是否区分用户
*/ */
pageClear (context, { pageClear (context, {
basis = 'fullPath', basis = 'fullPath',
user = false user = false
}) { }) {
return new Promise(resolve => { return getDatabase({
resolve(util.db.get(pathInit({ path: `$page.${router.app.$route[basis]}.$data`,
dbName: 'database', user,
path: `$page.${router.app.$route[basis]}.$data`, validator: () => false,
user, defaultValue: {}
validator: () => false,
defaultValue: {}
})))
}) })
} }
} }
@@ -9,6 +9,7 @@ export default {
actions: { actions: {
/** /**
* @description 初始化监听 * @description 初始化监听
* @param {Object} context
*/ */
listen ({ commit }) { listen ({ commit }) {
return new Promise(resolve => { return new Promise(resolve => {
@@ -26,6 +27,7 @@ export default {
}, },
/** /**
* @description 切换全屏 * @description 切换全屏
* @param {Object} context
*/ */
toggle ({ commit }) { toggle ({ commit }) {
return new Promise(resolve => { return new Promise(resolve => {
@@ -44,7 +46,7 @@ export default {
mutations: { mutations: {
/** /**
* @description 设置 store 里的全屏状态 * @description 设置 store 里的全屏状态
* @param {Object} state vuex state * @param {Object} state state
* @param {Boolean} active active * @param {Boolean} active active
*/ */
set (state, active) { set (state, active) {
+2 -2
View File
@@ -7,14 +7,14 @@ export default {
mutations: { mutations: {
/** /**
* @description 切换灰度状态 * @description 切换灰度状态
* @param {Object} state vuex state * @param {Object} state state
*/ */
toggle (state) { toggle (state) {
state.active = !state.active state.active = !state.active
}, },
/** /**
* @description 设置灰度模式 * @description 设置灰度模式
* @param {Object} state vuex state * @param {Object} state state
* @param {Boolean} active active * @param {Boolean} active active
*/ */
set (state, active) { set (state, active) {
+4 -3
View File
@@ -32,9 +32,10 @@ export default {
actions: { actions: {
/** /**
* @description 添加一个日志 * @description 添加一个日志
* @param {Object} context
* @param {String} param message {String} 信息 * @param {String} param message {String} 信息
* @param {String} param type {String} 类型 * @param {String} param type {String} 类型
* @param {Object} param meta {Object} 附带的信息 * @param {Object} payload meta {Object} 附带的信息
*/ */
push ({ rootState, commit }, { message, type = 'info', meta }) { push ({ rootState, commit }, { message, type = 'info', meta }) {
commit('push', { commit('push', {
@@ -59,7 +60,7 @@ export default {
mutations: { mutations: {
/** /**
* @description 添加日志 * @description 添加日志
* @param {Object} state vuex state * @param {Object} state state
* @param {Object} log data * @param {Object} log data
*/ */
push (state, log) { push (state, log) {
@@ -67,7 +68,7 @@ export default {
}, },
/** /**
* @description 清空日志 * @description 清空日志
* @param {Object} state vuex state * @param {Object} state state
*/ */
clean (state) { clean (state) {
// store 赋值 // store 赋值
+5 -5
View File
@@ -30,7 +30,7 @@ export default {
actions: { actions: {
/** /**
* 设置侧边栏展开或者收缩 * 设置侧边栏展开或者收缩
* @param {Object} state vuex state * @param {Object} context
* @param {Boolean} collapse is collapse * @param {Boolean} collapse is collapse
*/ */
asideCollapseSet ({ state, dispatch }, collapse) { asideCollapseSet ({ state, dispatch }, collapse) {
@@ -50,7 +50,7 @@ export default {
}, },
/** /**
* 切换侧边栏展开和收缩 * 切换侧边栏展开和收缩
* @param {Object} state vuex state * @param {Object} context
*/ */
asideCollapseToggle ({ state, dispatch }) { asideCollapseToggle ({ state, dispatch }) {
return new Promise(async resolve => { return new Promise(async resolve => {
@@ -69,7 +69,7 @@ export default {
}, },
/** /**
* 从持久化数据读取侧边栏展开或者收缩 * 从持久化数据读取侧边栏展开或者收缩
* @param {Object} state vuex state * @param {Object} context
*/ */
asideCollapseLoad ({ state, dispatch }) { asideCollapseLoad ({ state, dispatch }) {
return new Promise(async resolve => { return new Promise(async resolve => {
@@ -88,7 +88,7 @@ export default {
mutations: { mutations: {
/** /**
* @description 设置顶栏菜单 * @description 设置顶栏菜单
* @param {Object} state vuex state * @param {Object} state state
* @param {Array} menu menu setting * @param {Array} menu menu setting
*/ */
headerSet (state, menu) { headerSet (state, menu) {
@@ -97,7 +97,7 @@ export default {
}, },
/** /**
* @description 设置侧边栏菜单 * @description 设置侧边栏菜单
* @param {Object} state vuex state * @param {Object} state state
* @param {Array} menu menu setting * @param {Array} menu menu setting
*/ */
asideSet (state, menu) { asideSet (state, menu) {
+24 -23
View File
@@ -22,6 +22,7 @@ export default {
actions: { actions: {
/** /**
* @description 确认已经加载多标签页数据 https://github.com/d2-projects/d2-admin/issues/201 * @description 确认已经加载多标签页数据 https://github.com/d2-projects/d2-admin/issues/201
* @param {Object} context
*/ */
isLoaded ({ state }) { isLoaded ({ state }) {
if (state.value) return Promise.resolve() if (state.value) return Promise.resolve()
@@ -36,7 +37,7 @@ export default {
/** /**
* @class opened * @class opened
* @description 从持久化数据载入标签页列表 * @description 从持久化数据载入标签页列表
* @param {Object} state vuex state * @param {Object} context
*/ */
openedLoad ({ state, commit, dispatch }) { openedLoad ({ state, commit, dispatch }) {
return new Promise(async resolve => { return new Promise(async resolve => {
@@ -77,7 +78,7 @@ export default {
}, },
/** /**
* 将 opened 属性赋值并持久化 在这之前请先确保已经更新了 state.opened * 将 opened 属性赋值并持久化 在这之前请先确保已经更新了 state.opened
* @param {Object} state vuex state * @param {Object} context
*/ */
opend2db ({ state, dispatch }) { opend2db ({ state, dispatch }) {
return new Promise(async resolve => { return new Promise(async resolve => {
@@ -95,8 +96,8 @@ export default {
/** /**
* @class opened * @class opened
* @description 更新页面列表上的某一项 * @description 更新页面列表上的某一项
* @param {Object} state vuex state * @param {Object} context
* @param {Object} param { index, params, query, fullPath } 路由信息 * @param {Object} payload { index, params, query, fullPath } 路由信息
*/ */
openedUpdate ({ state, commit, dispatch }, { index, params, query, fullPath }) { openedUpdate ({ state, commit, dispatch }, { index, params, query, fullPath }) {
return new Promise(async resolve => { return new Promise(async resolve => {
@@ -115,8 +116,8 @@ export default {
/** /**
* @class opened * @class opened
* @description 新增一个 tag (打开一个页面) * @description 新增一个 tag (打开一个页面)
* @param {Object} state vuex state * @param {Object} context
* @param {Object} param new tag info * @param {Object} payload new tag info
*/ */
add ({ state, commit, dispatch }, { tag, params, query, fullPath }) { add ({ state, commit, dispatch }, { tag, params, query, fullPath }) {
return new Promise(async resolve => { return new Promise(async resolve => {
@@ -140,8 +141,8 @@ export default {
/** /**
* @class current * @class current
* @description 打开一个新的页面 * @description 打开一个新的页面
* @param {Object} state vuex state * @param {Object} context
* @param {Object} param 从路由钩子的 to 对象上获取 { name, params, query, fullPath } 路由信息 * @param {Object} payload 从路由钩子的 to 对象上获取 { name, params, query, fullPath } 路由信息
*/ */
open ({ state, commit, dispatch }, { name, params, query, fullPath }) { open ({ state, commit, dispatch }, { name, params, query, fullPath }) {
return new Promise(async resolve => { return new Promise(async resolve => {
@@ -183,8 +184,8 @@ export default {
/** /**
* @class opened * @class opened
* @description 关闭一个 tag (关闭一个页面) * @description 关闭一个 tag (关闭一个页面)
* @param {Object} state vuex state * @param {Object} context
* @param {Object} param { tagName: 要关闭的标签名字 } * @param {Object} payload { tagName: 要关闭的标签名字 }
*/ */
close ({ state, commit, dispatch }, { tagName }) { close ({ state, commit, dispatch }, { tagName }) {
return new Promise(async resolve => { return new Promise(async resolve => {
@@ -233,8 +234,8 @@ export default {
/** /**
* @class opened * @class opened
* @description 关闭当前标签左边的标签 * @description 关闭当前标签左边的标签
* @param {Object} state vuex state * @param {Object} context
* @param {Object} param { pageSelect: 当前选中的tagName } * @param {Object} payload { pageSelect: 当前选中的tagName }
*/ */
closeLeft ({ state, commit, dispatch }, { pageSelect } = {}) { closeLeft ({ state, commit, dispatch }, { pageSelect } = {}) {
return new Promise(async resolve => { return new Promise(async resolve => {
@@ -262,8 +263,8 @@ export default {
/** /**
* @class opened * @class opened
* @description 关闭当前标签右边的标签 * @description 关闭当前标签右边的标签
* @param {Object} state vuex state * @param {Object} context
* @param {Object} param { pageSelect: 当前选中的tagName } * @param {Object} payload { pageSelect: 当前选中的tagName }
*/ */
closeRight ({ state, commit, dispatch }, { pageSelect } = {}) { closeRight ({ state, commit, dispatch }, { pageSelect } = {}) {
return new Promise(async resolve => { return new Promise(async resolve => {
@@ -290,8 +291,8 @@ export default {
/** /**
* @class opened * @class opened
* @description 关闭当前激活之外的 tag * @description 关闭当前激活之外的 tag
* @param {Object} state vuex state * @param {Object} context
* @param {Object} param { pageSelect: 当前选中的tagName } * @param {Object} payload { pageSelect: 当前选中的tagName }
*/ */
closeOther ({ state, commit, dispatch }, { pageSelect } = {}) { closeOther ({ state, commit, dispatch }, { pageSelect } = {}) {
return new Promise(async resolve => { return new Promise(async resolve => {
@@ -323,7 +324,7 @@ export default {
/** /**
* @class opened * @class opened
* @description 关闭所有 tag * @description 关闭所有 tag
* @param {Object} state vuex state * @param {Object} context
*/ */
closeAll ({ state, commit, dispatch }) { closeAll ({ state, commit, dispatch }) {
return new Promise(async resolve => { return new Promise(async resolve => {
@@ -346,14 +347,14 @@ export default {
/** /**
* @class keepAlive * @class keepAlive
* @description 从已经打开的页面记录中更新需要缓存的页面记录 * @description 从已经打开的页面记录中更新需要缓存的页面记录
* @param {Object} state vuex state * @param {Object} state state
*/ */
keepAliveRefresh (state) { keepAliveRefresh (state) {
state.keepAlive = state.opened.filter(item => isKeepAlive(item)).map(e => e.name) state.keepAlive = state.opened.filter(item => isKeepAlive(item)).map(e => e.name)
}, },
/** /**
* @description 删除一个页面的缓存设置 * @description 删除一个页面的缓存设置
* @param {Object} state vuex state * @param {Object} state state
* @param {String} name name * @param {String} name name
*/ */
keepAliveRemove (state, name) { keepAliveRemove (state, name) {
@@ -367,7 +368,7 @@ export default {
}, },
/** /**
* @description 增加一个页面的缓存设置 * @description 增加一个页面的缓存设置
* @param {Object} state vuex state * @param {Object} state state
* @param {String} name name * @param {String} name name
*/ */
keepAlivePush (state, name) { keepAlivePush (state, name) {
@@ -377,7 +378,7 @@ export default {
}, },
/** /**
* @description 清空页面缓存设置 * @description 清空页面缓存设置
* @param {Object} state vuex state * @param {Object} state state
*/ */
keepAliveClean (state) { keepAliveClean (state) {
state.keepAlive = [] state.keepAlive = []
@@ -385,7 +386,7 @@ export default {
/** /**
* @class current * @class current
* @description 设置当前激活的页面 fullPath * @description 设置当前激活的页面 fullPath
* @param {Object} state vuex state * @param {Object} state state
* @param {String} fullPath new fullPath * @param {String} fullPath new fullPath
*/ */
currentSet (state, fullPath) { currentSet (state, fullPath) {
@@ -394,7 +395,7 @@ export default {
/** /**
* @class pool * @class pool
* @description 保存 pool (候选池) * @description 保存 pool (候选池)
* @param {Object} state vuex state * @param {Object} state state
* @param {Array} routes routes * @param {Array} routes routes
*/ */
init (state, routes) { init (state, routes) {
@@ -5,7 +5,7 @@ export default {
mutations: { mutations: {
/** /**
* @description 显示版本信息 * @description 显示版本信息
* @param {Object} state vuex state * @param {Object} state state
*/ */
versionShow () { versionShow () {
util.log.capsule('D2Admin', `v${process.env.VUE_APP_VERSION}`) util.log.capsule('D2Admin', `v${process.env.VUE_APP_VERSION}`)
+3 -3
View File
@@ -16,14 +16,14 @@ export default {
mutations: { mutations: {
/** /**
* @description 切换激活状态 * @description 切换激活状态
* @param {Object} state vuex state * @param {Object} state state
*/ */
toggle (state) { toggle (state) {
state.active = !state.active state.active = !state.active
}, },
/** /**
* @description 设置激活模式 * @description 设置激活模式
* @param {Object} state vuex state * @param {Object} state state
* @param {Boolean} active active * @param {Boolean} active active
*/ */
set (state, active) { set (state, active) {
@@ -31,7 +31,7 @@ export default {
}, },
/** /**
* @description 初始化 * @description 初始化
* @param {Object} state vuex state * @param {Object} state state
* @param {Array} menu menu * @param {Array} menu menu
*/ */
init (state, menu) { init (state, menu) {
+4 -2
View File
@@ -10,6 +10,7 @@ export default {
actions: { actions: {
/** /**
* @description 将当前的设置应用到 element * @description 将当前的设置应用到 element
* @param {Object} context
* @param {Boolean} refresh 是否在设置之后刷新页面 * @param {Boolean} refresh 是否在设置之后刷新页面
*/ */
apply ({ state, commit }, refresh) { apply ({ state, commit }, refresh) {
@@ -21,6 +22,7 @@ export default {
}, },
/** /**
* @description 确认已经加载组件尺寸设置 https://github.com/d2-projects/d2-admin/issues/198 * @description 确认已经加载组件尺寸设置 https://github.com/d2-projects/d2-admin/issues/198
* @param {Object} context
*/ */
isLoaded ({ state }) { isLoaded ({ state }) {
if (state.value) return Promise.resolve() if (state.value) return Promise.resolve()
@@ -34,7 +36,7 @@ export default {
}, },
/** /**
* @description 设置尺寸 * @description 设置尺寸
* @param {Object} state vuex state * @param {Object} context
* @param {String} size 尺寸 * @param {String} size 尺寸
*/ */
set ({ state, dispatch }, size) { set ({ state, dispatch }, size) {
@@ -56,7 +58,7 @@ export default {
}, },
/** /**
* @description 从持久化数据读取尺寸设置 * @description 从持久化数据读取尺寸设置
* @param {Object} state vuex state * @param {Object} context
*/ */
load ({ state, dispatch }) { load ({ state, dispatch }) {
return new Promise(async resolve => { return new Promise(async resolve => {
+3 -5
View File
@@ -12,7 +12,7 @@ export default {
getters: { getters: {
/** /**
* @description 返回当前的主题信息 不是一个名字 而是当前激活主题的所有数据 * @description 返回当前的主题信息 不是一个名字 而是当前激活主题的所有数据
* @param {Object} state vuex state * @param {Object} state state
*/ */
activeSetting (state) { activeSetting (state) {
return state.list.find(theme => theme.name === state.activeName) return state.list.find(theme => theme.name === state.activeName)
@@ -21,7 +21,6 @@ export default {
actions: { actions: {
/** /**
* @description 激活一个主题 * @description 激活一个主题
* @param {Object} state vuex state
* @param {String} themeValue 需要激活的主题名称 * @param {String} themeValue 需要激活的主题名称
*/ */
set ({ state, commit, dispatch }, themeName) { set ({ state, commit, dispatch }, themeName) {
@@ -42,8 +41,7 @@ export default {
}) })
}, },
/** /**
* @description 从持久化数据加载主题设置 * @description 从持久化数据加载主题设置 * @param {Object} context
* @param {Object} state vuex state
*/ */
load ({ state, commit, dispatch }) { load ({ state, commit, dispatch }) {
return new Promise(async resolve => { return new Promise(async resolve => {
@@ -77,7 +75,7 @@ export default {
mutations: { mutations: {
/** /**
* @description 将 vuex 中的主题应用到 dom * @description 将 vuex 中的主题应用到 dom
* @param {Object} state vuex state * @param {Object} state state
*/ */
dom (state) { dom (state) {
document.body.className = `theme-${state.activeName}` document.body.className = `theme-${state.activeName}`
@@ -10,7 +10,7 @@ export default {
actions: { actions: {
/** /**
* @description 设置开启状态 * @description 设置开启状态
* @param {Object} state vuex state * @param {Object} context
* @param {Boolean} active 新的状态 * @param {Boolean} active 新的状态
*/ */
set ({ state, dispatch }, active) { set ({ state, dispatch }, active) {
@@ -30,7 +30,7 @@ export default {
}, },
/** /**
* 从数据库读取页面过渡动画设置 * 从数据库读取页面过渡动画设置
* @param {Object} state vuex state * @param {Object} context
*/ */
load ({ state, dispatch }) { load ({ state, dispatch }) {
return new Promise(async resolve => { return new Promise(async resolve => {
+1 -1
View File
@@ -9,7 +9,7 @@ export default {
mutations: { mutations: {
/** /**
* @description 记录 UA * @description 记录 UA
* @param {Object} state vuex state * @param {Object} state state
*/ */
get (state) { get (state) {
state.data = new UaParser().getResult() state.data = new UaParser().getResult()
+2 -2
View File
@@ -7,7 +7,7 @@ export default {
actions: { actions: {
/** /**
* @description 设置用户数据 * @description 设置用户数据
* @param {Object} state vuex state * @param {Object} context
* @param {*} info info * @param {*} info info
*/ */
set ({ state, dispatch }, info) { set ({ state, dispatch }, info) {
@@ -27,7 +27,7 @@ export default {
}, },
/** /**
* @description 从数据库取用户数据 * @description 从数据库取用户数据
* @param {Object} state vuex state * @param {Object} context
*/ */
load ({ state, dispatch }) { load ({ state, dispatch }) {
return new Promise(async resolve => { return new Promise(async resolve => {