db 模块更新 去除不需要的 vm
vm 参数全部改名为 instance Former-commit-id: 31eace893963f8ec80b381259e95c5be612bb24b [formerly 31eace893963f8ec80b381259e95c5be612bb24b [formerly 31eace893963f8ec80b381259e95c5be612bb24b [formerly 31eace893963f8ec80b381259e95c5be612bb24b [formerly 142d265d06dff6f2f8479e1c02d1f1bb422c819c [formerly d512ac72e712f18109203ed77adda18dd780209f]]]]] Former-commit-id: 38c36f8f289cc0194605f6bc30218ed84d01df61 Former-commit-id: 7e1d26c28a90ba3bb3b74c9874401e1d1dd0a1eb Former-commit-id: a138950066ac8203549d3f0a98efd7df2f42d5f1 [formerly 7574226fcaee9f148973a0ee355c33c055dbe479] Former-commit-id: 05c995e96c33e934edc51cf5928ac2f560108f2f Former-commit-id: 3893a7761db8baa15af6d1d02edbaee8323a5539 Former-commit-id: 094ab1e39e3bd9af618d767dfec3c7c4f5ed0d2a Former-commit-id: 14ee8ce1a85a958d2323907dd3e8da7f33b350c8 Former-commit-id: 709a0c724ec21c1c4bb3da67c12b766c90b4fa5c
This commit is contained in:
@@ -20,7 +20,7 @@
|
||||
v-if="props.row.type === 'error'"
|
||||
type="error"
|
||||
title="报错组件"
|
||||
:value="get(props.row.vm, '$vnode.tag', '')"/>
|
||||
:value="get(props.row.instance, '$vnode.tag', '')"/>
|
||||
<expand-item
|
||||
v-if="props.row.type === 'error'"
|
||||
type="error"
|
||||
|
||||
@@ -168,8 +168,7 @@ export default {
|
||||
handleTabsEdit (tagName, action) {
|
||||
if (action === 'remove') {
|
||||
this.close({
|
||||
tagName,
|
||||
vm: this
|
||||
tagName
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,12 +37,12 @@ export default {
|
||||
beforeRouteEnter (to, from, next) {
|
||||
const id = to.params.id
|
||||
if (id) {
|
||||
next(async vm => {
|
||||
next(async instance => {
|
||||
if (from.name === 'demo-business-issues-142') {
|
||||
await vm.getFormData(id)
|
||||
vm.saveDataToDb()
|
||||
await instance.getFormData(id)
|
||||
instance.saveDataToDb()
|
||||
} else {
|
||||
vm.loadDataFromDb(to)
|
||||
instance.loadDataFromDb(to)
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -67,23 +67,22 @@ export default {
|
||||
methods: {
|
||||
...mapActions('d2admin/db', [
|
||||
'pageSet',
|
||||
'pageGet',
|
||||
'pageClear'
|
||||
'pageGet'
|
||||
]),
|
||||
// 将页面数据同步到持久化存储
|
||||
saveDataToDb () {
|
||||
this.pageSet({ vm: this, user: true })
|
||||
this.pageSet({ instance: this, user: true })
|
||||
},
|
||||
// 从持久化存储恢复数据到页面
|
||||
async loadDataFromDb (to) {
|
||||
const vm = {
|
||||
const instance = {
|
||||
$route: {
|
||||
fullPath: to.fullPath
|
||||
},
|
||||
$data: {}
|
||||
}
|
||||
const data = await this.pageGet({
|
||||
vm,
|
||||
instance,
|
||||
user: true
|
||||
})
|
||||
for (const key in data) {
|
||||
|
||||
@@ -36,9 +36,9 @@ export default {
|
||||
beforeRouteEnter (to, from, next) {
|
||||
const id = to.params.id
|
||||
if (id) {
|
||||
next(vm => {
|
||||
vm.resetFormData()
|
||||
vm.getFormData(id)
|
||||
next(instance => {
|
||||
instance.resetFormData()
|
||||
instance.getFormData(id)
|
||||
})
|
||||
} else {
|
||||
next(new Error('未指定ID'))
|
||||
|
||||
@@ -36,9 +36,9 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleClick (vm, event) {
|
||||
handleClick (instance, event) {
|
||||
this.$message({
|
||||
message: `你点击了${vm.$slots.default[0].text}`,
|
||||
message: `你点击了${instance.$slots.default[0].text}`,
|
||||
type: 'info'
|
||||
})
|
||||
}
|
||||
|
||||
@@ -28,9 +28,9 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleClick (vm, event) {
|
||||
handleClick (instance, event) {
|
||||
this.$message({
|
||||
message: `你点击了${vm.$slots.default[0].text}`,
|
||||
message: `你点击了${instance.$slots.default[0].text}`,
|
||||
type: 'info'
|
||||
})
|
||||
}
|
||||
|
||||
@@ -21,9 +21,9 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleClick (vm, event) {
|
||||
handleClick (instance, event) {
|
||||
this.$message({
|
||||
message: `你点击了${vm.$slots.default[0].text}`,
|
||||
message: `你点击了${instance.$slots.default[0].text}`,
|
||||
type: 'info'
|
||||
})
|
||||
}
|
||||
|
||||
@@ -20,9 +20,9 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleClick (vm, event) {
|
||||
handleClick (instance, event) {
|
||||
this.$message({
|
||||
message: `你点击了${vm.$slots.default[0].text}`,
|
||||
message: `你点击了${instance.$slots.default[0].text}`,
|
||||
type: 'info'
|
||||
})
|
||||
}
|
||||
|
||||
@@ -30,9 +30,9 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleClick (vm, event) {
|
||||
handleClick (instance, event) {
|
||||
this.$message({
|
||||
message: `你点击了${vm.$slots.default[0].text}`,
|
||||
message: `你点击了${instance.$slots.default[0].text}`,
|
||||
type: 'info'
|
||||
})
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
:closable="false"
|
||||
title="路由存储指当前路由的存储区域,
|
||||
不同路由之间存储不会相互干扰,
|
||||
使用 await this.$store.dispatch('d2admin/db/databasePage', { vm: this }) 获得存储实例进行操作,
|
||||
使用 await this.$store.dispatch('d2admin/db/databasePage') 获得存储实例进行操作,
|
||||
不同路由条件下获取的存储实例指向位置不同,
|
||||
可以指定路由区分依据 name | path | fullPath,
|
||||
默认根据路由的 name 区分不同的路由"/>
|
||||
@@ -73,9 +73,7 @@ export default {
|
||||
* 加载本地数据
|
||||
*/
|
||||
async load () {
|
||||
const db = await this.databasePage({
|
||||
vm: this
|
||||
})
|
||||
const db = await this.databasePage()
|
||||
this.dataDisplay = JSON.stringify(db.value(), null, 2)
|
||||
this.keyNameList = Object.keys(db.value()).map(k => ({
|
||||
value: k,
|
||||
@@ -86,9 +84,7 @@ export default {
|
||||
* 删除一个字段
|
||||
*/
|
||||
async handleDelete (name) {
|
||||
const db = await this.databasePage({
|
||||
vm: this
|
||||
})
|
||||
const db = await this.databasePage()
|
||||
db
|
||||
.unset(name)
|
||||
.write()
|
||||
@@ -99,9 +95,7 @@ export default {
|
||||
* 清空当前用户的数据
|
||||
*/
|
||||
async handleClear () {
|
||||
await this.databasePageClear({
|
||||
vm: this
|
||||
})
|
||||
await this.databasePageClear()
|
||||
this.load()
|
||||
},
|
||||
/**
|
||||
@@ -112,9 +106,7 @@ export default {
|
||||
this.$message.error('字段名不能为空')
|
||||
return
|
||||
}
|
||||
const db = await this.databasePage({
|
||||
vm: this
|
||||
})
|
||||
const db = await this.databasePage()
|
||||
db
|
||||
.set(this.keyNameToSet, this.valueToSet)
|
||||
.write()
|
||||
@@ -125,9 +117,7 @@ export default {
|
||||
*/
|
||||
async handleSetRandom () {
|
||||
const id = uniqueId()
|
||||
const db = await this.databasePage({
|
||||
vm: this
|
||||
})
|
||||
const db = await this.databasePage()
|
||||
db
|
||||
.set(`uniqueKey${id}`, `value${id}`)
|
||||
.write()
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
type="success"
|
||||
:closable="false"
|
||||
title="路由快照相当于路由存储一种快捷操作,
|
||||
会将传入 vm 实例的 $data 全部持久化,
|
||||
会将传入的 vue instance 携带的 $data 全部持久化,
|
||||
下面的表单来自 Element 的表单示例,
|
||||
在 D2Admin 的本页示例中你可以随意填写这个表单,
|
||||
表单内容会自动实时持久化,
|
||||
@@ -87,7 +87,7 @@ export default {
|
||||
}
|
||||
},
|
||||
async created () {
|
||||
const data = await this.pageGet({ vm: this })
|
||||
const data = await this.pageGet({ instance: this })
|
||||
for (const key in data) {
|
||||
if (data.hasOwnProperty(key)) this[key] = data[key]
|
||||
}
|
||||
@@ -95,7 +95,7 @@ export default {
|
||||
watch: {
|
||||
$data: {
|
||||
handler () {
|
||||
this.pageSet({ vm: this })
|
||||
this.pageSet({ instance: this })
|
||||
},
|
||||
deep: true
|
||||
}
|
||||
@@ -107,7 +107,7 @@ export default {
|
||||
'pageClear'
|
||||
]),
|
||||
async handleClear () {
|
||||
await this.pageClear({ vm: this })
|
||||
await this.pageClear({ instance: this })
|
||||
this.$message.success('此页面快照已经删除,请重新进入该页面或者关闭选项卡重新打开')
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
type="success"
|
||||
:closable="false"
|
||||
title="私有路由快照相当于私有路由存储一种快捷操作,
|
||||
会将传入 vm 实例的 $data 全部根据用户区分持久化,
|
||||
会将传入的 vue instance 携带的 $data 全部根据用户区分持久化,
|
||||
下面的表单来自 Element 的表单示例,
|
||||
在 D2Admin 的本页示例中你可以随意填写这个表单,
|
||||
表单内容会自动实时持久化,
|
||||
@@ -87,7 +87,7 @@ export default {
|
||||
}
|
||||
},
|
||||
async created () {
|
||||
const data = await this.pageGet({ vm: this, user: true })
|
||||
const data = await this.pageGet({ instance: this, user: true })
|
||||
for (const key in data) {
|
||||
if (data.hasOwnProperty(key)) this[key] = data[key]
|
||||
}
|
||||
@@ -95,7 +95,7 @@ export default {
|
||||
watch: {
|
||||
$data: {
|
||||
handler () {
|
||||
this.pageSet({ vm: this, user: true })
|
||||
this.pageSet({ instance: this, user: true })
|
||||
},
|
||||
deep: true
|
||||
}
|
||||
@@ -107,7 +107,7 @@ export default {
|
||||
'pageClear'
|
||||
]),
|
||||
async handleClear () {
|
||||
await this.pageClear({ vm: this, user: true })
|
||||
await this.pageClear({ instance: this, user: true })
|
||||
this.$message.success('此页面快照已经删除,请重新进入该页面或者关闭选项卡重新打开')
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
并且同时还根据用户区分,
|
||||
相当于结合了 “路由存储” 和 “私有存储”,
|
||||
不同路由以及不同用户之间存储不会相互干扰,
|
||||
使用 await this.$store.dispatch('d2admin/db/databasePage', { vm: this, user: true }) 获得存储实例进行操作,
|
||||
使用 await this.$store.dispatch('d2admin/db/databasePage', { user: true }) 获得存储实例进行操作,
|
||||
不同路由和用户条件下获取的存储实例指向位置不同,
|
||||
可以指定路由区分依据 name | path | fullPath,
|
||||
默认根据路由的 name 区分不同的路由"/>
|
||||
@@ -76,7 +76,6 @@ export default {
|
||||
*/
|
||||
async load () {
|
||||
const db = await this.databasePage({
|
||||
vm: this,
|
||||
user: true
|
||||
})
|
||||
this.dataDisplay = JSON.stringify(db.value(), null, 2)
|
||||
@@ -90,7 +89,6 @@ export default {
|
||||
*/
|
||||
async handleDelete (name) {
|
||||
const db = await this.databasePage({
|
||||
vm: this,
|
||||
user: true
|
||||
})
|
||||
db
|
||||
@@ -104,7 +102,6 @@ export default {
|
||||
*/
|
||||
async handleClear () {
|
||||
await this.databasePageClear({
|
||||
vm: this,
|
||||
user: true
|
||||
})
|
||||
this.load()
|
||||
@@ -118,7 +115,6 @@ export default {
|
||||
return
|
||||
}
|
||||
const db = await this.databasePage({
|
||||
vm: this,
|
||||
user: true
|
||||
})
|
||||
db
|
||||
@@ -132,7 +128,6 @@ export default {
|
||||
async handleSetRandom () {
|
||||
const id = uniqueId()
|
||||
const db = await this.databasePage({
|
||||
vm: this,
|
||||
user: true
|
||||
})
|
||||
db
|
||||
|
||||
@@ -43,9 +43,7 @@ export default {
|
||||
console.log('beforeRouteEnter => ', to)
|
||||
const id = to.params.id
|
||||
if (id) {
|
||||
next(vm => {
|
||||
vm.switchData(id)
|
||||
})
|
||||
next(instance => instance.switchData(id))
|
||||
} else {
|
||||
next(new Error('未指定ID'))
|
||||
}
|
||||
|
||||
@@ -3,13 +3,13 @@ import util from '@/libs/util'
|
||||
|
||||
export default {
|
||||
install (Vue, options) {
|
||||
Vue.config.errorHandler = function (err, vm, info) {
|
||||
Vue.config.errorHandler = function (err, instance, info) {
|
||||
Vue.nextTick(() => {
|
||||
// 添加 log
|
||||
store.dispatch('d2admin/log/add', {
|
||||
type: 'error',
|
||||
err,
|
||||
vm,
|
||||
instance,
|
||||
info
|
||||
})
|
||||
// 只在开发模式下打印 log
|
||||
@@ -18,7 +18,7 @@ export default {
|
||||
util.log.danger('>>>>>> 错误信息 >>>>>>')
|
||||
console.log(info)
|
||||
util.log.danger('>>>>>> Vue 实例 >>>>>>')
|
||||
console.log(vm)
|
||||
console.log(instance)
|
||||
util.log.danger('>>>>>> Error >>>>>>')
|
||||
console.log(err)
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ const frameIn = [
|
||||
hidden: true,
|
||||
component: {
|
||||
beforeRouteEnter (to, from, next) {
|
||||
next(vm => vm.$router.replace(from.fullPath))
|
||||
next(instance => instance.$router.replace(from.fullPath))
|
||||
},
|
||||
render: h => h()
|
||||
}
|
||||
@@ -47,7 +47,7 @@ const frameIn = [
|
||||
hidden: true,
|
||||
component: {
|
||||
beforeRouteEnter (to, from, next) {
|
||||
next(vm => vm.$router.replace(JSON.parse(from.params.route)))
|
||||
next(instance => instance.$router.replace(JSON.parse(from.params.route)))
|
||||
},
|
||||
render: h => h()
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import util from '@/libs/util'
|
||||
import router from '@/router'
|
||||
import { cloneDeep } from 'lodash'
|
||||
|
||||
/**
|
||||
@@ -20,13 +21,6 @@ function pathInit ({
|
||||
const uuid = util.cookies.get('uuid') || 'ghost-uuid'
|
||||
const currentPath = `${dbName}.${user ? `user.${uuid}` : 'public'}${path ? `.${path}` : ''}`
|
||||
const value = util.db.get(currentPath).value()
|
||||
// console.group('pathInit')
|
||||
// console.log('dbName', dbName)
|
||||
// console.log('path', path)
|
||||
// console.log('user', user)
|
||||
// console.log('defaultValue', defaultValue)
|
||||
// console.log('value', value)
|
||||
// console.groupEnd()
|
||||
if (!(value !== undefined && validator(value))) {
|
||||
util.db
|
||||
.set(currentPath, defaultValue)
|
||||
@@ -119,19 +113,17 @@ export default {
|
||||
/**
|
||||
* @description 获取存储数据库对象 [ 区分页面 ]
|
||||
* @param {Object} context context
|
||||
* @param {Object} param vm {Object} vue
|
||||
* @param {Object} param basis {String} 页面区分依据 [ name | path | fullPath ]
|
||||
* @param {Object} param user {Boolean} 是否区分用户
|
||||
*/
|
||||
databasePage (context, {
|
||||
vm,
|
||||
basis = 'fullPath',
|
||||
user = false
|
||||
} = {}) {
|
||||
return new Promise(resolve => {
|
||||
resolve(util.db.get(pathInit({
|
||||
dbName: 'database',
|
||||
path: `$page.${vm.$route[basis]}`,
|
||||
path: `$page.${router.app.$route[basis]}`,
|
||||
user,
|
||||
defaultValue: {}
|
||||
})))
|
||||
@@ -140,19 +132,17 @@ export default {
|
||||
/**
|
||||
* @description 清空存储数据库对象 [ 区分页面 ]
|
||||
* @param {Object} context context
|
||||
* @param {Object} param vm {Object} vue
|
||||
* @param {Object} param basis {String} 页面区分依据 [ name | path | fullPath ]
|
||||
* @param {Object} param user {Boolean} 是否区分用户
|
||||
*/
|
||||
databasePageClear (context, {
|
||||
vm,
|
||||
basis = 'fullPath',
|
||||
user = false
|
||||
} = {}) {
|
||||
return new Promise(resolve => {
|
||||
resolve(util.db.get(pathInit({
|
||||
dbName: 'database',
|
||||
path: `$page.${vm.$route[basis]}`,
|
||||
path: `$page.${router.app.$route[basis]}`,
|
||||
user,
|
||||
validator: () => false,
|
||||
defaultValue: {}
|
||||
@@ -162,62 +152,60 @@ export default {
|
||||
/**
|
||||
* @description 快速将页面当前的数据 ( $data ) 持久化
|
||||
* @param {Object} context context
|
||||
* @param {Object} param vm {Object} vue
|
||||
* @param {Object} param instance {Object} vue 实例
|
||||
* @param {Object} param basis {String} 页面区分依据 [ name | path | fullPath ]
|
||||
* @param {Object} param user {Boolean} 是否区分用户
|
||||
*/
|
||||
pageSet (context, {
|
||||
vm,
|
||||
instance,
|
||||
basis = 'fullPath',
|
||||
user = false
|
||||
}) {
|
||||
return new Promise(resolve => {
|
||||
resolve(util.db.get(pathInit({
|
||||
dbName: 'database',
|
||||
path: `$page.${vm.$route[basis]}.$data`,
|
||||
path: `$page.${router.app.$route[basis]}.$data`,
|
||||
user,
|
||||
validator: () => false,
|
||||
defaultValue: cloneDeep(vm.$data)
|
||||
defaultValue: cloneDeep(instance.$data)
|
||||
})))
|
||||
})
|
||||
},
|
||||
/**
|
||||
* @description 快速获取页面快速持久化的数据
|
||||
* @param {Object} context context
|
||||
* @param {Object} param vm {Object} vue
|
||||
* @param {Object} param instance {Object} vue 实例
|
||||
* @param {Object} param basis {String} 页面区分依据 [ name | path | fullPath ]
|
||||
* @param {Object} param user {Boolean} 是否区分用户
|
||||
*/
|
||||
pageGet (context, {
|
||||
vm,
|
||||
instance,
|
||||
basis = 'fullPath',
|
||||
user = false
|
||||
}) {
|
||||
return new Promise(resolve => {
|
||||
resolve(cloneDeep(util.db.get(pathInit({
|
||||
dbName: 'database',
|
||||
path: `$page.${vm.$route[basis]}.$data`,
|
||||
path: `$page.${router.app.$route[basis]}.$data`,
|
||||
user,
|
||||
defaultValue: cloneDeep(vm.$data)
|
||||
defaultValue: cloneDeep(instance.$data)
|
||||
})).value()))
|
||||
})
|
||||
},
|
||||
/**
|
||||
* @description 清空页面快照
|
||||
* @param {Object} context context
|
||||
* @param {Object} param vm {Object} vue
|
||||
* @param {Object} param basis {String} 页面区分依据 [ name | path | fullPath ]
|
||||
* @param {Object} param user {Boolean} 是否区分用户
|
||||
*/
|
||||
pageClear (context, {
|
||||
vm,
|
||||
basis = 'fullPath',
|
||||
user = false
|
||||
}) {
|
||||
return new Promise(resolve => {
|
||||
resolve(util.db.get(pathInit({
|
||||
dbName: 'database',
|
||||
path: `$page.${vm.$route[basis]}.$data`,
|
||||
path: `$page.${router.app.$route[basis]}.$data`,
|
||||
user,
|
||||
validator: () => false,
|
||||
defaultValue: {}
|
||||
|
||||
@@ -29,10 +29,10 @@ export default {
|
||||
* @description 添加一个日志
|
||||
* @param {Object} param type {String} 类型
|
||||
* @param {Object} param err {Error} 错误对象
|
||||
* @param {Object} param vm {Object} vue 实例
|
||||
* @param {Object} param instance {Object} vue 实例
|
||||
* @param {Object} param info {String} 信息
|
||||
*/
|
||||
add ({ state, rootState }, { type, err, vm, info }) {
|
||||
add ({ state, rootState }, { type, err, instance, info }) {
|
||||
// store 赋值
|
||||
state.list.push(Object.assign({
|
||||
// 记录类型
|
||||
@@ -42,7 +42,7 @@ export default {
|
||||
// 错误对象
|
||||
err: '',
|
||||
// vue 实例
|
||||
vm: '',
|
||||
instance: '',
|
||||
// 当前用户信息
|
||||
user: rootState.d2admin.user.info,
|
||||
// 当前用户的 uuid
|
||||
@@ -56,7 +56,7 @@ export default {
|
||||
}, {
|
||||
type,
|
||||
err,
|
||||
vm,
|
||||
instance,
|
||||
info: toString(info)
|
||||
}))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user