diff --git a/vue/src/assets/styles/variables.scss b/vue/src/assets/styles/variables.scss index e0d3b64..516fd55 100644 --- a/vue/src/assets/styles/variables.scss +++ b/vue/src/assets/styles/variables.scss @@ -26,7 +26,7 @@ $--color-warning: $--color-deep-orange; $--color-danger: $--color-red; $--color-info: $--color-teal; -@mixin clearfix{ +@mixin clearfix { &::after { visibility: hidden; display: block; diff --git a/vue/src/components/Guide/main.vue b/vue/src/components/Guide/main.vue index ef99d94..b33cf15 100644 --- a/vue/src/components/Guide/main.vue +++ b/vue/src/components/Guide/main.vue @@ -230,11 +230,12 @@ mounted() { this.resize = debounce(this.resize) + window.addEventListener('resize', this.resize) - }, - beforeDestroy() { - window.removeEventListener('resize', this.resize) + this.$once('hook:beforeDestroy', () => { + window.removeEventListener('resize', this.resize) + }) } } diff --git a/vue/src/components/RegionSelector/Tab/index.vue b/vue/src/components/RegionSelector/Tab/index.vue index e3552ea..dea19a8 100644 --- a/vue/src/components/RegionSelector/Tab/index.vue +++ b/vue/src/components/RegionSelector/Tab/index.vue @@ -61,6 +61,7 @@ diff --git a/vue/src/components/TinymceEditor/index.vue b/vue/src/components/TinymceEditor/index.vue index 8a12aae..5b46707 100644 --- a/vue/src/components/TinymceEditor/index.vue +++ b/vue/src/components/TinymceEditor/index.vue @@ -103,11 +103,8 @@ mounted() { this.init() - }, - - beforeDestroy() { - this.destroy() - }, + this.$once('hook:beforeDestroy', this.destroy) + } } diff --git a/vue/src/layout/components/Header.vue b/vue/src/layout/components/Header.vue index 04f305e..a4ad1cd 100644 --- a/vue/src/layout/components/Header.vue +++ b/vue/src/layout/components/Header.vue @@ -73,10 +73,8 @@ mounted() { this.appMain = document.querySelector('.app-main') if (this.headerAutoHidden) this.addEvent() - }, - beforeDestroy() { - this.removeEvent() + this.$once('hook:beforeDestroy', this.removeEvent) } } diff --git a/vue/src/layout/components/Sidebar/index.vue b/vue/src/layout/components/Sidebar/index.vue index b2b3b71..5455023 100644 --- a/vue/src/layout/components/Sidebar/index.vue +++ b/vue/src/layout/components/Sidebar/index.vue @@ -104,10 +104,10 @@ if (this.sidebarAutoHidden) { document.addEventListener('mousemove', this.moveEvent) } - }, - beforeDestroy() { - document.removeEventListener('mousemove', this.moveEvent) + this.$once('hook:beforeDestroy', () => { + document.removeEventListener('mousemove', this.moveEvent) + }) }, render() { diff --git a/vue/src/layout/components/TagsView/mixin/shortcuts.js b/vue/src/layout/components/TagsView/mixin/shortcuts.js index 42ede8e..f37812a 100644 --- a/vue/src/layout/components/TagsView/mixin/shortcuts.js +++ b/vue/src/layout/components/TagsView/mixin/shortcuts.js @@ -42,9 +42,9 @@ export default { mounted() { window.addEventListener('keydown', this.shortcutsListen) - }, - beforeDestroy() { - window.removeEventListener('keydown', this.shortcutsListen) + this.$once('hook:beforeDestroy', () => { + window.removeEventListener('keydown', this.shortcutsListen) + }) } } diff --git a/vue/src/layout/mixin/ResizeHandler.js b/vue/src/layout/mixin/ResizeHandler.js index 580853d..d29357b 100644 --- a/vue/src/layout/mixin/ResizeHandler.js +++ b/vue/src/layout/mixin/ResizeHandler.js @@ -13,10 +13,12 @@ export default { }, mounted() { this.$_resizeHandler = debounce(this.$_resizeHandler) - window.addEventListener('resize', this.$_resizeHandler) this.$_resizeHandler() - }, - beforeDestroy() { - window.removeEventListener('resize', this.$_resizeHandler) + + window.addEventListener('resize', this.$_resizeHandler) + + this.$once('hook:beforeDestroy', () => { + window.removeEventListener('resize', this.$_resizeHandler) + }) } } diff --git a/vue/src/mixins/chart/resize.js b/vue/src/mixins/chart/resize.js index 8f704a9..e0dc20c 100644 --- a/vue/src/mixins/chart/resize.js +++ b/vue/src/mixins/chart/resize.js @@ -7,6 +7,7 @@ export default { $_resizeHandler: null } }, + methods: { $_initResizeEvent() { window.addEventListener('resize', this.$_resizeHandler) @@ -15,19 +16,17 @@ export default { window.removeEventListener('resize', this.$_resizeHandler) } }, + mounted() { this.$_resizeHandler = debounce(() => this.chart && this.chart.resize()) this.$_initResizeEvent() - this.$nextTick(() => this.$_resizeHandler()) - }, - beforeDestroy() { - this.$_destroyResizeEvent() + this.$nextTick(this.$_resizeHandler) + this.$once('hook:deactivated', this.$_destroyResizeEvent) + this.$once('hook:beforeDestroy', this.$_destroyResizeEvent) }, + activated() { this.$_initResizeEvent() - this.$nextTick(() => this.$_resizeHandler()) - }, - deactivated() { - this.$_destroyResizeEvent() + this.$nextTick(this.$_resizeHandler) } } diff --git a/vue/src/mixins/tablePageMixin.js b/vue/src/mixins/tablePageMixin.js index 585a111..9570877 100644 --- a/vue/src/mixins/tablePageMixin.js +++ b/vue/src/mixins/tablePageMixin.js @@ -38,7 +38,7 @@ const mixin = { tablePageNeedSearchMap: { deep: true, handler(v) { - if (this._routePath === this.$route.path){ + if (this._routePath === this.$route.path) { this.reSearch(v) } } diff --git a/vue/src/router/authority/modules/message.js b/vue/src/router/authority/modules/message.js index 64f8913..fb741cb 100644 --- a/vue/src/router/authority/modules/message.js +++ b/vue/src/router/authority/modules/message.js @@ -11,13 +11,13 @@ const router = { { path: 'manage', name: 'messageManagement', - component: () => lazyLoadView(import('@/views/message/manage')), + component: lazyLoadView(import('@/views/message/manage')), meta: {title: '消息管理'} }, { path: 'user', name: 'userMessage', - component: () => lazyLoadView(import('@/views/message/user')), + component: lazyLoadView(import('@/views/message/user')), meta: {title: '个人消息', noAuth: true, noCache: true} } ] diff --git a/vue/src/router/authority/modules/purchase.js b/vue/src/router/authority/modules/purchase.js index 9dfcc18..1ecc570 100644 --- a/vue/src/router/authority/modules/purchase.js +++ b/vue/src/router/authority/modules/purchase.js @@ -11,7 +11,7 @@ const router = { { path: 'order', name: 'purchaseOrder', - component: () => lazyLoadView(import('@/views/purchase/order')), + component: lazyLoadView(import('@/views/purchase/order')), meta: {title: '采购订单'} }, { @@ -19,7 +19,7 @@ const router = { name: 'purchaseOrderDetail', hidden: true, props: true, - component: () => lazyLoadView(import('@/views/purchase/order/detail')), + component: lazyLoadView(import('@/views/purchase/order/detail')), meta: { title: '采购订单详情', activeMenu: '/document/purchase/order', @@ -30,7 +30,7 @@ const router = { { path: 'inbound', name: 'purchaseInbound', - component: () => lazyLoadView(import('@/views/purchase/inbound')), + component: lazyLoadView(import('@/views/purchase/inbound')), meta: {title: '采购入库'} }, { @@ -38,7 +38,7 @@ const router = { name: 'purchaseInboundDetail', hidden: true, props: true, - component: () => lazyLoadView(import('@/views/purchase/inbound/detail')), + component: lazyLoadView(import('@/views/purchase/inbound/detail')), meta: { title: '采购入库详情', activeMenu: '/document/purchase/inbound', diff --git a/vue/src/router/authority/modules/sell.js b/vue/src/router/authority/modules/sell.js index f6be7a9..0ba208b 100644 --- a/vue/src/router/authority/modules/sell.js +++ b/vue/src/router/authority/modules/sell.js @@ -11,7 +11,7 @@ const router = { { path: 'order', name: 'sellOrder', - component: () => lazyLoadView(import('@/views/sell/order')), + component: lazyLoadView(import('@/views/sell/order')), meta: {title: '销售订单'} }, { @@ -19,7 +19,7 @@ const router = { name: 'purchaseOrderDetail', hidden: true, props: true, - component: () => lazyLoadView(import('@/views/sell/order/detail')), + component: lazyLoadView(import('@/views/sell/order/detail')), meta: { title: '销售订单详情', activeMenu: '/document/sell/order', @@ -30,7 +30,7 @@ const router = { { path: 'outbound', name: 'sellOutbound', - component: () => lazyLoadView(import('@/views/sell/outbound')), + component: lazyLoadView(import('@/views/sell/outbound')), meta: {title: '销售出库'} }, { @@ -38,7 +38,7 @@ const router = { name: 'purchaseOutboundDetail', hidden: true, props: true, - component: () => lazyLoadView(import('@/views/sell/outbound/detail')), + component: lazyLoadView(import('@/views/sell/outbound/detail')), meta: { title: '销售出库详情', activeMenu: '/document/outbound/order', diff --git a/vue/src/router/authority/modules/stock.js b/vue/src/router/authority/modules/stock.js index c43b2f9..8583a71 100644 --- a/vue/src/router/authority/modules/stock.js +++ b/vue/src/router/authority/modules/stock.js @@ -11,7 +11,7 @@ const router = { { path: 'current', name: 'currentStock', - component: () => lazyLoadView(import('@/views/stock/current')), + component: lazyLoadView(import('@/views/stock/current')), meta: {title: '当前库存'} } ] diff --git a/vue/src/router/authority/modules/system.js b/vue/src/router/authority/modules/system.js index df418f4..502e1cd 100644 --- a/vue/src/router/authority/modules/system.js +++ b/vue/src/router/authority/modules/system.js @@ -11,43 +11,43 @@ const router = { { path: 'department', name: 'departmentManagement', - component: () => lazyLoadView(import('@/views/system/department')), + component: lazyLoadView(import('@/views/system/department')), meta: {title: '部门管理'} }, { path: 'role', name: 'roleManagement', - component: () => lazyLoadView(import('@/views/system/role')), + component: lazyLoadView(import('@/views/system/role')), meta: {title: '角色管理'} }, { path: 'user', name: 'userManagement', - component: () => lazyLoadView(import('@/views/system/user')), + component: lazyLoadView(import('@/views/system/user')), meta: {title: '用户管理'} }, { path: 'category', name: 'categorySetting', - component: () => lazyLoadView(import('@/views/system/category')), + component: lazyLoadView(import('@/views/system/category')), meta: {title: '商品分类'} }, { path: 'customer', name: 'customerManagement', - component: () => lazyLoadView(import('@/views/system/customer')), + component: lazyLoadView(import('@/views/system/customer')), meta: {title: '客户管理'} }, { path: 'supplier', name: 'supplierManagement', - component: () => lazyLoadView(import('@/views/system/supplier')), + component: lazyLoadView(import('@/views/system/supplier')), meta: {title: '供应商管理'} }, { path: 'resource', name: 'resourceManagement', - component: () => lazyLoadView(import('@/views/system/resource')), + component: lazyLoadView(import('@/views/system/resource')), hidden: true, meta: {title: '接口设置'} } diff --git a/vue/src/router/constant/index.js b/vue/src/router/constant/index.js index 7d9cf42..f23cd78 100644 --- a/vue/src/router/constant/index.js +++ b/vue/src/router/constant/index.js @@ -22,7 +22,7 @@ const routes = [ children: [ { path: 'index', - component: () => lazyLoadView(import('@/views/index')), + component: lazyLoadView(import('@/views/index')), name: 'index', meta: {title: '首页', affix: true, icon: 'home'} } @@ -42,7 +42,7 @@ const routes = [ { path: 'index', name: 'userCenter', - component: () => lazyLoadView(import('@/views/userCenter')), + component: lazyLoadView(import('@/views/userCenter')), meta: {title: '个人中心', noCache: true, icon: 'user'}, } ] diff --git a/vue/src/router/constant/modules/example.js b/vue/src/router/constant/modules/example.js index e6ae09f..135e53a 100644 --- a/vue/src/router/constant/modules/example.js +++ b/vue/src/router/constant/modules/example.js @@ -10,13 +10,13 @@ const router = { { path: 'stylePage', name: 'stylePage', - component: () => lazyLoadView(import('@/views/example/stylePage')), + component: lazyLoadView(import('@/views/example/stylePage')), meta: {title: '样 式'} }, { path: 'icons', name: 'icons', - component: () => lazyLoadView(import('@/views/example/icons')), + component: lazyLoadView(import('@/views/example/icons')), meta: {title: '图 标'} }, { @@ -32,13 +32,13 @@ const router = { { path: 'fluid', name: 'fluid', - component: () => lazyLoadView(import('@/views/example/cool/fluid')), + component: lazyLoadView(import('@/views/example/cool/fluid')), meta: {title: '流体动画'} }, { path: 'l2d', name: 'l2d', - component: () => lazyLoadView(import('@/views/example/cool/l2d')), + component: lazyLoadView(import('@/views/example/cool/l2d')), meta: {title: '看板娘'} }, ] @@ -51,31 +51,31 @@ const router = { { path: 'uploadExample', name: 'uploadExample', - component: () => lazyLoadView(import('@/views/example/components/uploadExample')), + component: lazyLoadView(import('@/views/example/components/uploadExample')), meta: {title: '上传文件'} }, { path: 'skeletonExample', name: 'skeletonExample', - component: () => lazyLoadView(import('@/views/example/components/skeletonExample')), + component: lazyLoadView(import('@/views/example/components/skeletonExample')), meta: {title: '骨架屏'} }, { path: 'rippleExample', name: 'rippleExample', - component: () => lazyLoadView(import('@/views/example/components/rippleExample')), + component: lazyLoadView(import('@/views/example/components/rippleExample')), meta: {title: '波纹'} }, { path: 'signatureExample', name: 'signatureExample', - component: () => lazyLoadView(import('@/views/example/components/signatureExample')), + component: lazyLoadView(import('@/views/example/components/signatureExample')), meta: {title: '手写签名'} }, { path: 'regionSelectorExample', name: 'regionSelectorExample', - component: () => lazyLoadView(import('@/views/example/components/regionSelectorExample')), + component: lazyLoadView(import('@/views/example/components/regionSelectorExample')), meta: {title: '行政区划选择'} } ] @@ -83,19 +83,19 @@ const router = { { path: 'developingTest', name: 'developingTest', - component: () => lazyLoadView(import('@/views/example/developingTest')), + component: lazyLoadView(import('@/views/example/developingTest')), meta: {title: '开发测试'} }, { path: 'detailPage1', name: 'detailPage1', - component: () => lazyLoadView(import('@/views/example/detailPage')), + component: lazyLoadView(import('@/views/example/detailPage')), meta: {title: '详情页缓存1', noCache: false, isDetailPage: true} }, { path: 'detailPage2', name: 'detailPage2', - component: () => lazyLoadView(import('@/views/example/detailPage')), + component: lazyLoadView(import('@/views/example/detailPage')), meta: {title: '详情页缓存2', noCache: false, isDetailPage: true} } ] diff --git a/vue/src/router/util.js b/vue/src/router/util.js index 0a68819..df73a29 100644 --- a/vue/src/router/util.js +++ b/vue/src/router/util.js @@ -33,7 +33,7 @@ export function metaExtend(routes, meta) { export function lazyLoadView(component) { const AsyncHandler = () => ({component, loading: PageSkeleton}) - return Promise.resolve({ + return () => Promise.resolve({ functional: true, render(h, {data, children}) { return h(AsyncHandler, data, children) diff --git a/vue/src/store/modules/dataCache.js b/vue/src/store/modules/dataCache.js index ba4c17c..cc832fc 100644 --- a/vue/src/store/modules/dataCache.js +++ b/vue/src/store/modules/dataCache.js @@ -2,30 +2,17 @@ * 数据缓存 * 比如商品分类信息等等 * */ -import {regionDataUrl} from '@/config' import {createTree} from '@/utils/tree' const state = { categories: [], - categoryTree: [], - regionTree: [] + categoryTree: [] } const mutations = { categories(state, categories) { state.categories = categories || [] state.categoryTree = createTree(state.categories) - }, - regionTree(state, regionTree) { - state.regionTree = regionTree || [] - }, -} - -const actions = { - initRegion({commit}) { - return fetch(regionDataUrl) - .then(r => r.json()) - .then(r => commit('regionTree', r)) } } @@ -33,6 +20,5 @@ const actions = { export default { namespaced: true, state, - mutations, - actions + mutations } diff --git a/vue/src/store/modules/iframe.js b/vue/src/store/modules/iframe.js index 7985a17..37d130f 100644 --- a/vue/src/store/modules/iframe.js +++ b/vue/src/store/modules/iframe.js @@ -9,8 +9,7 @@ const state = { const mutations = { ...createMutations(state), add(state, src) { - if (state.list.some(i => i === src)) return - state.list.push(src) + !state.list.includes(src) && state.list.push(src) }, del(state, src) { const index = state.list.findIndex(i => i === src) diff --git a/vue/src/store/modules/resource.js b/vue/src/store/modules/resource.js index 838b883..5629254 100644 --- a/vue/src/store/modules/resource.js +++ b/vue/src/store/modules/resource.js @@ -4,7 +4,7 @@ import authorityRoutes from '@/router/authority' import {needAuth} from "@/utils/auth" import {createTree} from "@/utils/tree" import {getAllResources} from "@/api/system/resource" -import {emptyOrDefault, isEmpty} from "@/utils" +import {isEmpty} from "@/utils" import {isExternal} from "@/utils/validate" const finalConstantRoutes = transformOriginRoutes(constantRoutes) diff --git a/vue/src/store/modules/setting.js b/vue/src/store/modules/setting.js index 6c25ed6..1492fb9 100644 --- a/vue/src/store/modules/setting.js +++ b/vue/src/store/modules/setting.js @@ -43,6 +43,7 @@ Object.keys(state).forEach(key => { const mutations = { ...createMutations(state), + sidebarCollapse(state, v) { if (v && state.sidebarAutoHidden) { state.sidebarAutoHidden = false @@ -50,6 +51,7 @@ const mutations = { state.sidebarCollapse = v setLocalPersonalSettings(state) }, + sidebarAutoHidden(state, v) { if (v && state.sidebarCollapse) { state.sidebarCollapse = false diff --git a/vue/src/views/app/login/LoginForm.vue b/vue/src/views/app/login/LoginForm.vue index cccbffc..53e5b66 100644 --- a/vue/src/views/app/login/LoginForm.vue +++ b/vue/src/views/app/login/LoginForm.vue @@ -137,12 +137,10 @@ mounted() { this.addCapsLockEvent() - if (isEmpty(this.form.username)) this.$refs.username.focus() - else this.$refs.password.focus() - }, + const key = isEmpty(this.form.username) ? 'username' : 'password' + this.$refs[key].focus() - beforeDestroy() { - this.removeEvent() + this.$once('hook:beforeDestroy', this.removeEvent) } } diff --git a/vue/src/views/app/login/RegisterForm.vue b/vue/src/views/app/login/RegisterForm.vue index 3e277cb..0e53157 100644 --- a/vue/src/views/app/login/RegisterForm.vue +++ b/vue/src/views/app/login/RegisterForm.vue @@ -122,10 +122,8 @@ mounted() { this.addEvent() this.$nextTick(() => this.$refs.username.focus()) - }, - beforeDestroy() { - this.removeEvent() + this.$once('hook:beforeDestroy', this.removeEvent) } } diff --git a/vue/src/views/example/cool/fluid.vue b/vue/src/views/example/cool/fluid.vue index 57d3281..f6ce45c 100644 --- a/vue/src/views/example/cool/fluid.vue +++ b/vue/src/views/example/cool/fluid.vue @@ -9,6 +9,7 @@ export default { name: "fluid", + data() { return { sign: true, @@ -18,6 +19,7 @@ parentDom: null } }, + methods: { $_initResizeEvent() { window.addEventListener('resize', this.$_resizeHandler) @@ -32,6 +34,7 @@ window.location.reload() } }, + mounted() { this.parentDom = document.querySelector('.app-main') this.width = this.parentDom.clientWidth @@ -43,6 +46,7 @@ this.$_initResizeEvent() this.$nextTick(() => this.start()) }, + beforeDestroy() { this.$_destroyResizeEvent() this.close() diff --git a/vue/src/views/example/stylePage.vue b/vue/src/views/example/stylePage.vue index 17ab376..155795f 100644 --- a/vue/src/views/example/stylePage.vue +++ b/vue/src/views/example/stylePage.vue @@ -66,7 +66,9 @@ export default { name: "stylePage", + components: {AbstractTable, LinerProgress, FormDialog}, + data() { return { dialog: false, @@ -83,6 +85,7 @@ ] } }, + mounted() { const f = (type, time = 0) => { setTimeout(() => { @@ -99,9 +102,8 @@ f(t, i) i += 200 }) - }, - beforeDestroy() { - this.$notify.closeAll() + + this.$once('hook:beforeDestroy', this.$notify.closeAll) } } diff --git a/vue/src/views/message/manage/EditDialog.vue b/vue/src/views/message/manage/EditDialog.vue index ed79ca5..37aea71 100644 --- a/vue/src/views/message/manage/EditDialog.vue +++ b/vue/src/views/message/manage/EditDialog.vue @@ -68,7 +68,7 @@ mixins: [dialogMixin], - components: {AbstractForm,AbstractFormItem,FormDialog, TinymceEditor, UserSelector}, + components: {AbstractForm, AbstractFormItem, FormDialog, TinymceEditor, UserSelector}, props: { value: {type: Boolean, default: false}, diff --git a/vue/src/views/purchase/inbound/components/OrderSelector.vue b/vue/src/views/purchase/inbound/components/OrderSelector.vue index 24dafa3..7f8ad1d 100644 --- a/vue/src/views/purchase/inbound/components/OrderSelector.vue +++ b/vue/src/views/purchase/inbound/components/OrderSelector.vue @@ -16,7 +16,7 @@ - +