部分代码简化

RegionSelector的数据存放改用Vue.observable
部分beforeDestroy使用hook声明
master
toesbieya 6 years ago
parent 6dc561543c
commit 58abb624cc
  1. 2
      vue/src/assets/styles/variables.scss
  2. 5
      vue/src/components/Guide/main.vue
  3. 5
      vue/src/components/RegionSelector/Tab/index.vue
  4. 7
      vue/src/components/RegionSelector/Tree/TreeDialog.vue
  5. 12
      vue/src/components/RegionSelector/store.js
  6. 5
      vue/src/components/SearchForm/index.vue
  7. 4
      vue/src/components/SignautreBoard/main.vue
  8. 7
      vue/src/components/TinymceEditor/index.vue
  9. 4
      vue/src/layout/components/Header.vue
  10. 4
      vue/src/layout/components/Sidebar/index.vue
  11. 4
      vue/src/layout/components/TagsView/mixin/shortcuts.js
  12. 8
      vue/src/layout/mixin/ResizeHandler.js
  13. 15
      vue/src/mixins/chart/resize.js
  14. 2
      vue/src/mixins/tablePageMixin.js
  15. 4
      vue/src/router/authority/modules/message.js
  16. 8
      vue/src/router/authority/modules/purchase.js
  17. 8
      vue/src/router/authority/modules/sell.js
  18. 2
      vue/src/router/authority/modules/stock.js
  19. 14
      vue/src/router/authority/modules/system.js
  20. 4
      vue/src/router/constant/index.js
  21. 24
      vue/src/router/constant/modules/example.js
  22. 2
      vue/src/router/util.js
  23. 18
      vue/src/store/modules/dataCache.js
  24. 3
      vue/src/store/modules/iframe.js
  25. 2
      vue/src/store/modules/resource.js
  26. 2
      vue/src/store/modules/setting.js
  27. 8
      vue/src/views/app/login/LoginForm.vue
  28. 4
      vue/src/views/app/login/RegisterForm.vue
  29. 4
      vue/src/views/example/cool/fluid.vue
  30. 8
      vue/src/views/example/stylePage.vue
  31. 2
      vue/src/views/message/manage/EditDialog.vue
  32. 2
      vue/src/views/purchase/inbound/components/OrderSelector.vue
  33. 2
      vue/src/views/purchase/inbound/index.vue
  34. 2
      vue/src/views/sell/outbound/components/OrderSelector.vue
  35. 6
      vue/src/views/sell/outbound/detail.vue
  36. 13
      vue/src/views/stock/current/DetailDialog.vue
  37. 2
      vue/src/views/stock/current/index.vue
  38. 7
      vue/src/views/system/category/components/List.vue

@ -26,7 +26,7 @@ $--color-warning: $--color-deep-orange;
$--color-danger: $--color-red; $--color-danger: $--color-red;
$--color-info: $--color-teal; $--color-info: $--color-teal;
@mixin clearfix{ @mixin clearfix {
&::after { &::after {
visibility: hidden; visibility: hidden;
display: block; display: block;

@ -230,11 +230,12 @@
mounted() { mounted() {
this.resize = debounce(this.resize) this.resize = debounce(this.resize)
window.addEventListener('resize', this.resize) window.addEventListener('resize', this.resize)
},
beforeDestroy() { this.$once('hook:beforeDestroy', () => {
window.removeEventListener('resize', this.resize) window.removeEventListener('resize', this.resize)
})
} }
} }
</script> </script>

@ -61,6 +61,7 @@
<script> <script>
import {debounce} from "@/utils" import {debounce} from "@/utils"
import {createLimitTree, getNodeId} from "@/utils/tree" import {createLimitTree, getNodeId} from "@/utils/tree"
import {store, init} from '../store'
import common from '../mixin' import common from '../mixin'
const PROVINCE_CITIES = ['北京市', '天津市', '上海市', '重庆市'] const PROVINCE_CITIES = ['北京市', '天津市', '上海市', '重庆市']
@ -91,7 +92,7 @@
computed: { computed: {
regionTree() { regionTree() {
return this.$store.state.dataCache.regionTree return store.data
}, },
}, },
@ -235,7 +236,7 @@
init() { init() {
this.loading = true this.loading = true
const hasInit = this.regionTree.length > 0 const hasInit = this.regionTree.length > 0
const promise = () => hasInit ? Promise.resolve() : this.$store.dispatch('dataCache/initRegion') const promise = () => hasInit ? Promise.resolve() : init()
return promise() return promise()
.then(() => this.limit ? this.limitApi() : Promise.resolve()) .then(() => this.limit ? this.limitApi() : Promise.resolve())
.then(data => { .then(data => {

@ -1,5 +1,5 @@
<script type="text/jsx"> <script type="text/jsx">
import store from '@/store' import {store,init} from '../store'
import FormDialog from "@/components/FormDialog" import FormDialog from "@/components/FormDialog"
import {createLimitTree, getNodeId} from "@/utils/tree" import {createLimitTree, getNodeId} from "@/utils/tree"
@ -20,7 +20,7 @@
computed: { computed: {
regionTree() { regionTree() {
return store.state.dataCache.regionTree return store.data
} }
}, },
@ -31,6 +31,7 @@
nodeClick(obj) { nodeClick(obj) {
const payload = [obj] const payload = [obj]
if (this.getChildrenOnSelect) { if (this.getChildrenOnSelect) {
const ids = getNodeId(obj.children) const ids = getNodeId(obj.children)
ids.unshift(obj.id) ids.unshift(obj.id)
@ -45,7 +46,7 @@
init() { init() {
this.loading = true this.loading = true
const hasInit = this.regionTree.length > 0 const hasInit = this.regionTree.length > 0
const promise = () => hasInit ? Promise.resolve() : store.dispatch('dataCache/initRegion') const promise = () => hasInit ? Promise.resolve() : init()
return promise() return promise()
.then(() => this.limit ? this.limitApi() : Promise.resolve()) .then(() => this.limit ? this.limitApi() : Promise.resolve())
.then(data => data && (this.limitTree = createLimitTree(this.regionTree, data))) .then(data => data && (this.limitTree = createLimitTree(this.regionTree, data)))

@ -0,0 +1,12 @@
import Vue from 'vue'
import {regionDataUrl} from '@/config'
export const store = Vue.observable({
data: []
})
export function init() {
return fetch(regionDataUrl)
.then(r => r.json())
.then(r => store.data = r || [])
}

@ -51,11 +51,12 @@
mounted() { mounted() {
this.resize() this.resize()
window.addEventListener('resize', this.resize) window.addEventListener('resize', this.resize)
},
beforeDestroy() { this.$once('hook:beforeDestroy', () => {
window.removeEventListener('resize', this.resize) window.removeEventListener('resize', this.resize)
})
}, },
render() { render() {

@ -132,11 +132,11 @@
mounted() { mounted() {
window.addEventListener('resize', this.resize) window.addEventListener('resize', this.resize)
},
beforeDestroy() { this.$once('hook:beforeDestroy', () => {
this.clear() this.clear()
window.removeEventListener('resize', this.resize) window.removeEventListener('resize', this.resize)
})
} }
} }
</script> </script>

@ -103,11 +103,8 @@
mounted() { mounted() {
this.init() this.init()
}, this.$once('hook:beforeDestroy', this.destroy)
}
beforeDestroy() {
this.destroy()
},
} }
</script> </script>

@ -73,10 +73,8 @@
mounted() { mounted() {
this.appMain = document.querySelector('.app-main') this.appMain = document.querySelector('.app-main')
if (this.headerAutoHidden) this.addEvent() if (this.headerAutoHidden) this.addEvent()
},
beforeDestroy() { this.$once('hook:beforeDestroy', this.removeEvent)
this.removeEvent()
} }
} }
</script> </script>

@ -104,10 +104,10 @@
if (this.sidebarAutoHidden) { if (this.sidebarAutoHidden) {
document.addEventListener('mousemove', this.moveEvent) document.addEventListener('mousemove', this.moveEvent)
} }
},
beforeDestroy() { this.$once('hook:beforeDestroy', () => {
document.removeEventListener('mousemove', this.moveEvent) document.removeEventListener('mousemove', this.moveEvent)
})
}, },
render() { render() {

@ -42,9 +42,9 @@ export default {
mounted() { mounted() {
window.addEventListener('keydown', this.shortcutsListen) window.addEventListener('keydown', this.shortcutsListen)
},
beforeDestroy() { this.$once('hook:beforeDestroy', () => {
window.removeEventListener('keydown', this.shortcutsListen) window.removeEventListener('keydown', this.shortcutsListen)
})
} }
} }

@ -13,10 +13,12 @@ export default {
}, },
mounted() { mounted() {
this.$_resizeHandler = debounce(this.$_resizeHandler) this.$_resizeHandler = debounce(this.$_resizeHandler)
window.addEventListener('resize', this.$_resizeHandler)
this.$_resizeHandler() this.$_resizeHandler()
},
beforeDestroy() { window.addEventListener('resize', this.$_resizeHandler)
this.$once('hook:beforeDestroy', () => {
window.removeEventListener('resize', this.$_resizeHandler) window.removeEventListener('resize', this.$_resizeHandler)
})
} }
} }

@ -7,6 +7,7 @@ export default {
$_resizeHandler: null $_resizeHandler: null
} }
}, },
methods: { methods: {
$_initResizeEvent() { $_initResizeEvent() {
window.addEventListener('resize', this.$_resizeHandler) window.addEventListener('resize', this.$_resizeHandler)
@ -15,19 +16,17 @@ export default {
window.removeEventListener('resize', this.$_resizeHandler) window.removeEventListener('resize', this.$_resizeHandler)
} }
}, },
mounted() { mounted() {
this.$_resizeHandler = debounce(() => this.chart && this.chart.resize()) this.$_resizeHandler = debounce(() => this.chart && this.chart.resize())
this.$_initResizeEvent() this.$_initResizeEvent()
this.$nextTick(() => this.$_resizeHandler()) this.$nextTick(this.$_resizeHandler)
}, this.$once('hook:deactivated', this.$_destroyResizeEvent)
beforeDestroy() { this.$once('hook:beforeDestroy', this.$_destroyResizeEvent)
this.$_destroyResizeEvent()
}, },
activated() { activated() {
this.$_initResizeEvent() this.$_initResizeEvent()
this.$nextTick(() => this.$_resizeHandler()) this.$nextTick(this.$_resizeHandler)
},
deactivated() {
this.$_destroyResizeEvent()
} }
} }

@ -38,7 +38,7 @@ const mixin = {
tablePageNeedSearchMap: { tablePageNeedSearchMap: {
deep: true, deep: true,
handler(v) { handler(v) {
if (this._routePath === this.$route.path){ if (this._routePath === this.$route.path) {
this.reSearch(v) this.reSearch(v)
} }
} }

@ -11,13 +11,13 @@ const router = {
{ {
path: 'manage', path: 'manage',
name: 'messageManagement', name: 'messageManagement',
component: () => lazyLoadView(import('@/views/message/manage')), component: lazyLoadView(import('@/views/message/manage')),
meta: {title: '消息管理'} meta: {title: '消息管理'}
}, },
{ {
path: 'user', path: 'user',
name: 'userMessage', name: 'userMessage',
component: () => lazyLoadView(import('@/views/message/user')), component: lazyLoadView(import('@/views/message/user')),
meta: {title: '个人消息', noAuth: true, noCache: true} meta: {title: '个人消息', noAuth: true, noCache: true}
} }
] ]

@ -11,7 +11,7 @@ const router = {
{ {
path: 'order', path: 'order',
name: 'purchaseOrder', name: 'purchaseOrder',
component: () => lazyLoadView(import('@/views/purchase/order')), component: lazyLoadView(import('@/views/purchase/order')),
meta: {title: '采购订单'} meta: {title: '采购订单'}
}, },
{ {
@ -19,7 +19,7 @@ const router = {
name: 'purchaseOrderDetail', name: 'purchaseOrderDetail',
hidden: true, hidden: true,
props: true, props: true,
component: () => lazyLoadView(import('@/views/purchase/order/detail')), component: lazyLoadView(import('@/views/purchase/order/detail')),
meta: { meta: {
title: '采购订单详情', title: '采购订单详情',
activeMenu: '/document/purchase/order', activeMenu: '/document/purchase/order',
@ -30,7 +30,7 @@ const router = {
{ {
path: 'inbound', path: 'inbound',
name: 'purchaseInbound', name: 'purchaseInbound',
component: () => lazyLoadView(import('@/views/purchase/inbound')), component: lazyLoadView(import('@/views/purchase/inbound')),
meta: {title: '采购入库'} meta: {title: '采购入库'}
}, },
{ {
@ -38,7 +38,7 @@ const router = {
name: 'purchaseInboundDetail', name: 'purchaseInboundDetail',
hidden: true, hidden: true,
props: true, props: true,
component: () => lazyLoadView(import('@/views/purchase/inbound/detail')), component: lazyLoadView(import('@/views/purchase/inbound/detail')),
meta: { meta: {
title: '采购入库详情', title: '采购入库详情',
activeMenu: '/document/purchase/inbound', activeMenu: '/document/purchase/inbound',

@ -11,7 +11,7 @@ const router = {
{ {
path: 'order', path: 'order',
name: 'sellOrder', name: 'sellOrder',
component: () => lazyLoadView(import('@/views/sell/order')), component: lazyLoadView(import('@/views/sell/order')),
meta: {title: '销售订单'} meta: {title: '销售订单'}
}, },
{ {
@ -19,7 +19,7 @@ const router = {
name: 'purchaseOrderDetail', name: 'purchaseOrderDetail',
hidden: true, hidden: true,
props: true, props: true,
component: () => lazyLoadView(import('@/views/sell/order/detail')), component: lazyLoadView(import('@/views/sell/order/detail')),
meta: { meta: {
title: '销售订单详情', title: '销售订单详情',
activeMenu: '/document/sell/order', activeMenu: '/document/sell/order',
@ -30,7 +30,7 @@ const router = {
{ {
path: 'outbound', path: 'outbound',
name: 'sellOutbound', name: 'sellOutbound',
component: () => lazyLoadView(import('@/views/sell/outbound')), component: lazyLoadView(import('@/views/sell/outbound')),
meta: {title: '销售出库'} meta: {title: '销售出库'}
}, },
{ {
@ -38,7 +38,7 @@ const router = {
name: 'purchaseOutboundDetail', name: 'purchaseOutboundDetail',
hidden: true, hidden: true,
props: true, props: true,
component: () => lazyLoadView(import('@/views/sell/outbound/detail')), component: lazyLoadView(import('@/views/sell/outbound/detail')),
meta: { meta: {
title: '销售出库详情', title: '销售出库详情',
activeMenu: '/document/outbound/order', activeMenu: '/document/outbound/order',

@ -11,7 +11,7 @@ const router = {
{ {
path: 'current', path: 'current',
name: 'currentStock', name: 'currentStock',
component: () => lazyLoadView(import('@/views/stock/current')), component: lazyLoadView(import('@/views/stock/current')),
meta: {title: '当前库存'} meta: {title: '当前库存'}
} }
] ]

@ -11,43 +11,43 @@ const router = {
{ {
path: 'department', path: 'department',
name: 'departmentManagement', name: 'departmentManagement',
component: () => lazyLoadView(import('@/views/system/department')), component: lazyLoadView(import('@/views/system/department')),
meta: {title: '部门管理'} meta: {title: '部门管理'}
}, },
{ {
path: 'role', path: 'role',
name: 'roleManagement', name: 'roleManagement',
component: () => lazyLoadView(import('@/views/system/role')), component: lazyLoadView(import('@/views/system/role')),
meta: {title: '角色管理'} meta: {title: '角色管理'}
}, },
{ {
path: 'user', path: 'user',
name: 'userManagement', name: 'userManagement',
component: () => lazyLoadView(import('@/views/system/user')), component: lazyLoadView(import('@/views/system/user')),
meta: {title: '用户管理'} meta: {title: '用户管理'}
}, },
{ {
path: 'category', path: 'category',
name: 'categorySetting', name: 'categorySetting',
component: () => lazyLoadView(import('@/views/system/category')), component: lazyLoadView(import('@/views/system/category')),
meta: {title: '商品分类'} meta: {title: '商品分类'}
}, },
{ {
path: 'customer', path: 'customer',
name: 'customerManagement', name: 'customerManagement',
component: () => lazyLoadView(import('@/views/system/customer')), component: lazyLoadView(import('@/views/system/customer')),
meta: {title: '客户管理'} meta: {title: '客户管理'}
}, },
{ {
path: 'supplier', path: 'supplier',
name: 'supplierManagement', name: 'supplierManagement',
component: () => lazyLoadView(import('@/views/system/supplier')), component: lazyLoadView(import('@/views/system/supplier')),
meta: {title: '供应商管理'} meta: {title: '供应商管理'}
}, },
{ {
path: 'resource', path: 'resource',
name: 'resourceManagement', name: 'resourceManagement',
component: () => lazyLoadView(import('@/views/system/resource')), component: lazyLoadView(import('@/views/system/resource')),
hidden: true, hidden: true,
meta: {title: '接口设置'} meta: {title: '接口设置'}
} }

@ -22,7 +22,7 @@ const routes = [
children: [ children: [
{ {
path: 'index', path: 'index',
component: () => lazyLoadView(import('@/views/index')), component: lazyLoadView(import('@/views/index')),
name: 'index', name: 'index',
meta: {title: '首页', affix: true, icon: 'home'} meta: {title: '首页', affix: true, icon: 'home'}
} }
@ -42,7 +42,7 @@ const routes = [
{ {
path: 'index', path: 'index',
name: 'userCenter', name: 'userCenter',
component: () => lazyLoadView(import('@/views/userCenter')), component: lazyLoadView(import('@/views/userCenter')),
meta: {title: '个人中心', noCache: true, icon: 'user'}, meta: {title: '个人中心', noCache: true, icon: 'user'},
} }
] ]

@ -10,13 +10,13 @@ const router = {
{ {
path: 'stylePage', path: 'stylePage',
name: 'stylePage', name: 'stylePage',
component: () => lazyLoadView(import('@/views/example/stylePage')), component: lazyLoadView(import('@/views/example/stylePage')),
meta: {title: '样 式'} meta: {title: '样 式'}
}, },
{ {
path: 'icons', path: 'icons',
name: 'icons', name: 'icons',
component: () => lazyLoadView(import('@/views/example/icons')), component: lazyLoadView(import('@/views/example/icons')),
meta: {title: '图 标'} meta: {title: '图 标'}
}, },
{ {
@ -32,13 +32,13 @@ const router = {
{ {
path: 'fluid', path: 'fluid',
name: 'fluid', name: 'fluid',
component: () => lazyLoadView(import('@/views/example/cool/fluid')), component: lazyLoadView(import('@/views/example/cool/fluid')),
meta: {title: '流体动画'} meta: {title: '流体动画'}
}, },
{ {
path: 'l2d', path: 'l2d',
name: 'l2d', name: 'l2d',
component: () => lazyLoadView(import('@/views/example/cool/l2d')), component: lazyLoadView(import('@/views/example/cool/l2d')),
meta: {title: '看板娘'} meta: {title: '看板娘'}
}, },
] ]
@ -51,31 +51,31 @@ const router = {
{ {
path: 'uploadExample', path: 'uploadExample',
name: 'uploadExample', name: 'uploadExample',
component: () => lazyLoadView(import('@/views/example/components/uploadExample')), component: lazyLoadView(import('@/views/example/components/uploadExample')),
meta: {title: '上传文件'} meta: {title: '上传文件'}
}, },
{ {
path: 'skeletonExample', path: 'skeletonExample',
name: 'skeletonExample', name: 'skeletonExample',
component: () => lazyLoadView(import('@/views/example/components/skeletonExample')), component: lazyLoadView(import('@/views/example/components/skeletonExample')),
meta: {title: '骨架屏'} meta: {title: '骨架屏'}
}, },
{ {
path: 'rippleExample', path: 'rippleExample',
name: 'rippleExample', name: 'rippleExample',
component: () => lazyLoadView(import('@/views/example/components/rippleExample')), component: lazyLoadView(import('@/views/example/components/rippleExample')),
meta: {title: '波纹'} meta: {title: '波纹'}
}, },
{ {
path: 'signatureExample', path: 'signatureExample',
name: 'signatureExample', name: 'signatureExample',
component: () => lazyLoadView(import('@/views/example/components/signatureExample')), component: lazyLoadView(import('@/views/example/components/signatureExample')),
meta: {title: '手写签名'} meta: {title: '手写签名'}
}, },
{ {
path: 'regionSelectorExample', path: 'regionSelectorExample',
name: 'regionSelectorExample', name: 'regionSelectorExample',
component: () => lazyLoadView(import('@/views/example/components/regionSelectorExample')), component: lazyLoadView(import('@/views/example/components/regionSelectorExample')),
meta: {title: '行政区划选择'} meta: {title: '行政区划选择'}
} }
] ]
@ -83,19 +83,19 @@ const router = {
{ {
path: 'developingTest', path: 'developingTest',
name: 'developingTest', name: 'developingTest',
component: () => lazyLoadView(import('@/views/example/developingTest')), component: lazyLoadView(import('@/views/example/developingTest')),
meta: {title: '开发测试'} meta: {title: '开发测试'}
}, },
{ {
path: 'detailPage1', path: 'detailPage1',
name: 'detailPage1', name: 'detailPage1',
component: () => lazyLoadView(import('@/views/example/detailPage')), component: lazyLoadView(import('@/views/example/detailPage')),
meta: {title: '详情页缓存1', noCache: false, isDetailPage: true} meta: {title: '详情页缓存1', noCache: false, isDetailPage: true}
}, },
{ {
path: 'detailPage2', path: 'detailPage2',
name: 'detailPage2', name: 'detailPage2',
component: () => lazyLoadView(import('@/views/example/detailPage')), component: lazyLoadView(import('@/views/example/detailPage')),
meta: {title: '详情页缓存2', noCache: false, isDetailPage: true} meta: {title: '详情页缓存2', noCache: false, isDetailPage: true}
} }
] ]

@ -33,7 +33,7 @@ export function metaExtend(routes, meta) {
export function lazyLoadView(component) { export function lazyLoadView(component) {
const AsyncHandler = () => ({component, loading: PageSkeleton}) const AsyncHandler = () => ({component, loading: PageSkeleton})
return Promise.resolve({ return () => Promise.resolve({
functional: true, functional: true,
render(h, {data, children}) { render(h, {data, children}) {
return h(AsyncHandler, data, children) return h(AsyncHandler, data, children)

@ -2,30 +2,17 @@
* 数据缓存 * 数据缓存
* 比如商品分类信息等等 * 比如商品分类信息等等
* */ * */
import {regionDataUrl} from '@/config'
import {createTree} from '@/utils/tree' import {createTree} from '@/utils/tree'
const state = { const state = {
categories: [], categories: [],
categoryTree: [], categoryTree: []
regionTree: []
} }
const mutations = { const mutations = {
categories(state, categories) { categories(state, categories) {
state.categories = categories || [] state.categories = categories || []
state.categoryTree = createTree(state.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 { export default {
namespaced: true, namespaced: true,
state, state,
mutations, mutations
actions
} }

@ -9,8 +9,7 @@ const state = {
const mutations = { const mutations = {
...createMutations(state), ...createMutations(state),
add(state, src) { add(state, src) {
if (state.list.some(i => i === src)) return !state.list.includes(src) && state.list.push(src)
state.list.push(src)
}, },
del(state, src) { del(state, src) {
const index = state.list.findIndex(i => i === src) const index = state.list.findIndex(i => i === src)

@ -4,7 +4,7 @@ import authorityRoutes from '@/router/authority'
import {needAuth} from "@/utils/auth" import {needAuth} from "@/utils/auth"
import {createTree} from "@/utils/tree" import {createTree} from "@/utils/tree"
import {getAllResources} from "@/api/system/resource" import {getAllResources} from "@/api/system/resource"
import {emptyOrDefault, isEmpty} from "@/utils" import {isEmpty} from "@/utils"
import {isExternal} from "@/utils/validate" import {isExternal} from "@/utils/validate"
const finalConstantRoutes = transformOriginRoutes(constantRoutes) const finalConstantRoutes = transformOriginRoutes(constantRoutes)

@ -43,6 +43,7 @@ Object.keys(state).forEach(key => {
const mutations = { const mutations = {
...createMutations(state), ...createMutations(state),
sidebarCollapse(state, v) { sidebarCollapse(state, v) {
if (v && state.sidebarAutoHidden) { if (v && state.sidebarAutoHidden) {
state.sidebarAutoHidden = false state.sidebarAutoHidden = false
@ -50,6 +51,7 @@ const mutations = {
state.sidebarCollapse = v state.sidebarCollapse = v
setLocalPersonalSettings(state) setLocalPersonalSettings(state)
}, },
sidebarAutoHidden(state, v) { sidebarAutoHidden(state, v) {
if (v && state.sidebarCollapse) { if (v && state.sidebarCollapse) {
state.sidebarCollapse = false state.sidebarCollapse = false

@ -137,12 +137,10 @@
mounted() { mounted() {
this.addCapsLockEvent() this.addCapsLockEvent()
if (isEmpty(this.form.username)) this.$refs.username.focus() const key = isEmpty(this.form.username) ? 'username' : 'password'
else this.$refs.password.focus() this.$refs[key].focus()
},
beforeDestroy() { this.$once('hook:beforeDestroy', this.removeEvent)
this.removeEvent()
} }
} }
</script> </script>

@ -122,10 +122,8 @@
mounted() { mounted() {
this.addEvent() this.addEvent()
this.$nextTick(() => this.$refs.username.focus()) this.$nextTick(() => this.$refs.username.focus())
},
beforeDestroy() { this.$once('hook:beforeDestroy', this.removeEvent)
this.removeEvent()
} }
} }
</script> </script>

@ -9,6 +9,7 @@
export default { export default {
name: "fluid", name: "fluid",
data() { data() {
return { return {
sign: true, sign: true,
@ -18,6 +19,7 @@
parentDom: null parentDom: null
} }
}, },
methods: { methods: {
$_initResizeEvent() { $_initResizeEvent() {
window.addEventListener('resize', this.$_resizeHandler) window.addEventListener('resize', this.$_resizeHandler)
@ -32,6 +34,7 @@
window.location.reload() window.location.reload()
} }
}, },
mounted() { mounted() {
this.parentDom = document.querySelector('.app-main') this.parentDom = document.querySelector('.app-main')
this.width = this.parentDom.clientWidth this.width = this.parentDom.clientWidth
@ -43,6 +46,7 @@
this.$_initResizeEvent() this.$_initResizeEvent()
this.$nextTick(() => this.start()) this.$nextTick(() => this.start())
}, },
beforeDestroy() { beforeDestroy() {
this.$_destroyResizeEvent() this.$_destroyResizeEvent()
this.close() this.close()

@ -66,7 +66,9 @@
export default { export default {
name: "stylePage", name: "stylePage",
components: {AbstractTable, LinerProgress, FormDialog}, components: {AbstractTable, LinerProgress, FormDialog},
data() { data() {
return { return {
dialog: false, dialog: false,
@ -83,6 +85,7 @@
] ]
} }
}, },
mounted() { mounted() {
const f = (type, time = 0) => { const f = (type, time = 0) => {
setTimeout(() => { setTimeout(() => {
@ -99,9 +102,8 @@
f(t, i) f(t, i)
i += 200 i += 200
}) })
},
beforeDestroy() { this.$once('hook:beforeDestroy', this.$notify.closeAll)
this.$notify.closeAll()
} }
} }
</script> </script>

@ -68,7 +68,7 @@
mixins: [dialogMixin], mixins: [dialogMixin],
components: {AbstractForm,AbstractFormItem,FormDialog, TinymceEditor, UserSelector}, components: {AbstractForm, AbstractFormItem, FormDialog, TinymceEditor, UserSelector},
props: { props: {
value: {type: Boolean, default: false}, value: {type: Boolean, default: false},

@ -16,7 +16,7 @@
</el-row> </el-row>
<el-row v-loading="config.loading" class="table-container"> <el-row v-loading="config.loading" class="table-container">
<abstract-table :data="tableData" @expand-change="getSubList"> <abstract-table :data="tableData" :highlight-current-row="false" @expand-change="getSubList">
<el-table-column align="center" type="expand"> <el-table-column align="center" type="expand">
<template v-slot="{row}"> <template v-slot="{row}">
<liner-progress :show="row._loading"/> <liner-progress :show="row._loading"/>

@ -99,7 +99,7 @@
import SearchForm from '@/components/SearchForm' import SearchForm from '@/components/SearchForm'
import SearchFormItem from "@/components/SearchForm/SearchFormItem" import SearchFormItem from "@/components/SearchForm/SearchFormItem"
import documentTableMixin from '@/mixins/bizDocumentTableMixin' import documentTableMixin from '@/mixins/bizDocumentTableMixin'
import {baseUrl,del, getSubById, search} from "@/api/document/purchase/inbound" import {baseUrl, del, getSubById, search} from "@/api/document/purchase/inbound"
export default { export default {
name: "purchaseInbound", name: "purchaseInbound",

@ -16,7 +16,7 @@
</el-row> </el-row>
<el-row v-loading="config.loading" class="table-container"> <el-row v-loading="config.loading" class="table-container">
<abstract-table :data="tableData" @expand-change="getSubList"> <abstract-table :data="tableData" :highlight-current-row="false" @expand-change="getSubList">
<el-table-column align="center" type="expand"> <el-table-column align="center" type="expand">
<template v-slot="{row}"> <template v-slot="{row}">
<liner-progress :show="row._loading"/> <liner-progress :show="row._loading"/>

@ -24,12 +24,14 @@
<el-card header="出库商品"> <el-card header="出库商品">
<abstract-table :data="form.data" :highlight-current-row="false"> <abstract-table :data="form.data" :highlight-current-row="false">
<el-table-column align="center" type="expand"> <el-table-column align="center" type="expand">
<el-table slot-scope="{row}" :data="row.data" border show-summary :summary-method="summaryStock(row)"> <el-table slot-scope="{row}" :data="row.data" border show-summary
:summary-method="summaryStock(row)">
<el-table-column align="center" label="#" type="index" width="80"/> <el-table-column align="center" label="#" type="index" width="80"/>
<el-table-column align="center"> <el-table-column align="center">
<template slot="header"> <template slot="header">
出库数量 出库数量
<el-button v-if="canSave" type="text" size="small" @click="openStock(row)">选择库存</el-button> <el-button v-if="canSave" type="text" size="small" @click="openStock(row)">选择库存
</el-button>
</template> </template>
<template v-slot="d"> <template v-slot="d">
<el-input-number <el-input-number

@ -2,11 +2,18 @@
<form-dialog :value="value" :loading="false" :title="title" width="70%" @close="cancel" @open="search"> <form-dialog :value="value" :loading="false" :title="title" width="70%" @close="cancel" @open="search">
<liner-progress :show="loading"/> <liner-progress :show="loading"/>
<abstract-table :data="tableData" border show-summary :summary-method="summary" :span-method="span"> <abstract-table
:data="tableData"
:highlight-current-row="false"
border
show-summary
:summary-method="summary"
:span-method="span"
>
<el-table-column align="center" label="采购订单" show-overflow-tooltip> <el-table-column align="center" label="采购订单" show-overflow-tooltip>
<router-link <router-link
slot-scope="{row}" slot-scope="{row}"
:to="{name:'purchaseOrder',params:{type:'see',id:row.cgddid}}" :to="{name:'purchaseOrderDetail',params:{type:'see',id:row.cgddid}}"
@click.native="cancel" @click.native="cancel"
> >
{{row.cgddid}} {{row.cgddid}}
@ -16,7 +23,7 @@
<el-table-column align="center" label="采购入库单" show-overflow-tooltip> <el-table-column align="center" label="采购入库单" show-overflow-tooltip>
<router-link <router-link
slot-scope="{row}" slot-scope="{row}"
:to="{name:'purchaseInbound',params:{type:'see',id:row.cgrkid}}" :to="{name:'purchaseInboundDetail',params:{type:'see',id:row.cgrkid}}"
@click.native="cancel" @click.native="cancel"
> >
{{row.cgrkid}} {{row.cgrkid}}

@ -40,7 +40,7 @@
</el-row> </el-row>
<el-row v-loading="config.loading" class="table-container"> <el-row v-loading="config.loading" class="table-container">
<abstract-table :data="tableData" show-summary :summary-method="summary"> <abstract-table :data="tableData" :highlight-current-row="false" show-summary :summary-method="summary">
<el-table-column align="center" label="#" type="index" width="80"/> <el-table-column align="center" label="#" type="index" width="80"/>
<el-table-column align="center" label="商品分类" prop="cname" show-overflow-tooltip/> <el-table-column align="center" label="商品分类" prop="cname" show-overflow-tooltip/>
<el-table-column align="center" label="库存数量" prop="total_num" show-overflow-tooltip/> <el-table-column align="center" label="库存数量" prop="total_num" show-overflow-tooltip/>

@ -103,15 +103,16 @@
}, },
mounted() { mounted() {
this.$el.querySelector(".el-card__body").addEventListener('contextmenu', this.openContextMenu)
waitUntilSuccess( waitUntilSuccess(
() => !isEmpty(this.form()), () => !isEmpty(this.form()),
() => this.form().$on('commit-success', this.commitSuccess) () => this.form().$on('commit-success', this.commitSuccess)
) )
},
beforeDestroy() { this.$el.querySelector(".el-card__body").addEventListener('contextmenu', this.openContextMenu)
this.$once('hook:beforeDestroy', () => {
this.$el.querySelector(".el-card__body").removeEventListener('contextmenu', this.openContextMenu) this.$el.querySelector(".el-card__body").removeEventListener('contextmenu', this.openContextMenu)
})
} }
} }
</script> </script>

Loading…
Cancel
Save