From b3cc0f9a09e9495d8e354164ad8876ee621ca8d3 Mon Sep 17 00:00:00 2001 From: liyang <1711467488@qq.com> Date: Wed, 6 Feb 2019 15:49:47 +0800 Subject: [PATCH] =?UTF-8?q?db=20=E6=A8=A1=E5=9D=97=E6=9B=B4=E6=96=B0=20?= =?UTF-8?q?=E5=8E=BB=E9=99=A4=E4=B8=8D=E9=9C=80=E8=A6=81=E7=9A=84=20vm=20v?= =?UTF-8?q?m=20=E5=8F=82=E6=95=B0=E5=85=A8=E9=83=A8=E6=94=B9=E5=90=8D?= =?UTF-8?q?=E4=B8=BA=20instance?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- .../components/list/index.vue | 2 +- .../header-aside/components/tabs/index.vue | 3 +- .../business/issues/142/edit-cache-db.vue | 17 +++++---- src/pages/demo/business/issues/142/edit.vue | 6 ++-- .../components/contextmenu/custom-trigger.vue | 4 +-- .../demo/components/contextmenu/disabled.vue | 4 +-- .../demo/components/contextmenu/divier.vue | 4 +-- .../demo/components/contextmenu/simple.vue | 4 +-- .../demo/components/contextmenu/submenu.vue | 4 +-- .../demo/playground/db/page-public/index.vue | 22 ++++-------- .../db/page-snapshot-public/index.vue | 8 ++--- .../db/page-snapshot-user/index.vue | 8 ++--- .../demo/playground/db/page-user/index.vue | 7 +--- .../demo/playground/page-cache/params.vue | 4 +-- src/plugin/error/index.js | 6 ++-- src/router/routes.js | 4 +-- src/store/modules/d2admin/modules/db.js | 36 +++++++------------ src/store/modules/d2admin/modules/log.js | 8 ++--- 18 files changed, 60 insertions(+), 91 deletions(-) diff --git a/src/layout/header-aside/components/header-error-log/components/list/index.vue b/src/layout/header-aside/components/header-error-log/components/list/index.vue index 6ba9ba6b..a49c9f28 100644 --- a/src/layout/header-aside/components/header-error-log/components/list/index.vue +++ b/src/layout/header-aside/components/header-error-log/components/list/index.vue @@ -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', '')"/> { + 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) { diff --git a/src/pages/demo/business/issues/142/edit.vue b/src/pages/demo/business/issues/142/edit.vue index 36b310fa..2679400c 100644 --- a/src/pages/demo/business/issues/142/edit.vue +++ b/src/pages/demo/business/issues/142/edit.vue @@ -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')) diff --git a/src/pages/demo/components/contextmenu/custom-trigger.vue b/src/pages/demo/components/contextmenu/custom-trigger.vue index f616a480..94f3cfe5 100644 --- a/src/pages/demo/components/contextmenu/custom-trigger.vue +++ b/src/pages/demo/components/contextmenu/custom-trigger.vue @@ -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' }) } diff --git a/src/pages/demo/components/contextmenu/disabled.vue b/src/pages/demo/components/contextmenu/disabled.vue index 8f7baba9..f6311945 100644 --- a/src/pages/demo/components/contextmenu/disabled.vue +++ b/src/pages/demo/components/contextmenu/disabled.vue @@ -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' }) } diff --git a/src/pages/demo/components/contextmenu/divier.vue b/src/pages/demo/components/contextmenu/divier.vue index 26cc960a..004bf2f8 100644 --- a/src/pages/demo/components/contextmenu/divier.vue +++ b/src/pages/demo/components/contextmenu/divier.vue @@ -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' }) } diff --git a/src/pages/demo/components/contextmenu/simple.vue b/src/pages/demo/components/contextmenu/simple.vue index 81cf22eb..6a1707b6 100644 --- a/src/pages/demo/components/contextmenu/simple.vue +++ b/src/pages/demo/components/contextmenu/simple.vue @@ -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' }) } diff --git a/src/pages/demo/components/contextmenu/submenu.vue b/src/pages/demo/components/contextmenu/submenu.vue index ef0cce91..19607e77 100644 --- a/src/pages/demo/components/contextmenu/submenu.vue +++ b/src/pages/demo/components/contextmenu/submenu.vue @@ -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' }) } diff --git a/src/pages/demo/playground/db/page-public/index.vue b/src/pages/demo/playground/db/page-public/index.vue index 5bbdab57..1f79a50b 100644 --- a/src/pages/demo/playground/db/page-public/index.vue +++ b/src/pages/demo/playground/db/page-public/index.vue @@ -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() diff --git a/src/pages/demo/playground/db/page-snapshot-public/index.vue b/src/pages/demo/playground/db/page-snapshot-public/index.vue index 4a719656..d3468bb7 100644 --- a/src/pages/demo/playground/db/page-snapshot-public/index.vue +++ b/src/pages/demo/playground/db/page-snapshot-public/index.vue @@ -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('此页面快照已经删除,请重新进入该页面或者关闭选项卡重新打开') } } diff --git a/src/pages/demo/playground/db/page-snapshot-user/index.vue b/src/pages/demo/playground/db/page-snapshot-user/index.vue index e83c11d0..a38100e6 100644 --- a/src/pages/demo/playground/db/page-snapshot-user/index.vue +++ b/src/pages/demo/playground/db/page-snapshot-user/index.vue @@ -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('此页面快照已经删除,请重新进入该页面或者关闭选项卡重新打开') } } diff --git a/src/pages/demo/playground/db/page-user/index.vue b/src/pages/demo/playground/db/page-user/index.vue index 2eea79c6..35ec353f 100644 --- a/src/pages/demo/playground/db/page-user/index.vue +++ b/src/pages/demo/playground/db/page-user/index.vue @@ -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 diff --git a/src/pages/demo/playground/page-cache/params.vue b/src/pages/demo/playground/page-cache/params.vue index c385c36a..586b4c40 100644 --- a/src/pages/demo/playground/page-cache/params.vue +++ b/src/pages/demo/playground/page-cache/params.vue @@ -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')) } diff --git a/src/plugin/error/index.js b/src/plugin/error/index.js index fd14e375..f07eb7a0 100644 --- a/src/plugin/error/index.js +++ b/src/plugin/error/index.js @@ -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) } diff --git a/src/router/routes.js b/src/router/routes.js index 43aa16a7..673e843f 100644 --- a/src/router/routes.js +++ b/src/router/routes.js @@ -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() } diff --git a/src/store/modules/d2admin/modules/db.js b/src/store/modules/d2admin/modules/db.js index 29665aab..240a5d10 100644 --- a/src/store/modules/d2admin/modules/db.js +++ b/src/store/modules/d2admin/modules/db.js @@ -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: {} diff --git a/src/store/modules/d2admin/modules/log.js b/src/store/modules/d2admin/modules/log.js index cabe8130..1f274750 100644 --- a/src/store/modules/d2admin/modules/log.js +++ b/src/store/modules/d2admin/modules/log.js @@ -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) })) }