Former-commit-id: 20a4c0f64172d14da9e3e58142f1560ffae46db2
This commit is contained in:
@@ -4,17 +4,8 @@
|
|||||||
<d2-icon name="font" style="font-size: 16px;"/>
|
<d2-icon name="font" style="font-size: 16px;"/>
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-dropdown-menu slot="dropdown">
|
<el-dropdown-menu slot="dropdown">
|
||||||
<el-dropdown-item command="default">
|
<el-dropdown-item v-for="item in options" :key="item.value" :command="item.value">
|
||||||
<d2-icon :name="iconName('default')" class="d2-mr-5"/>默认
|
<d2-icon :name="iconName(item.value)" class="d2-mr-5"/>{{item.label}}
|
||||||
</el-dropdown-item>
|
|
||||||
<el-dropdown-item command="medium">
|
|
||||||
<d2-icon :name="iconName('medium')" class="d2-mr-5"/>中
|
|
||||||
</el-dropdown-item>
|
|
||||||
<el-dropdown-item command="small">
|
|
||||||
<d2-icon :name="iconName('small')" class="d2-mr-5"/>小
|
|
||||||
</el-dropdown-item>
|
|
||||||
<el-dropdown-item command="mini">
|
|
||||||
<d2-icon :name="iconName('mini')" class="d2-mr-5"/>最小
|
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
</el-dropdown-menu>
|
</el-dropdown-menu>
|
||||||
</el-dropdown>
|
</el-dropdown>
|
||||||
@@ -27,27 +18,14 @@ export default {
|
|||||||
computed: {
|
computed: {
|
||||||
...mapState('d2admin/size', [
|
...mapState('d2admin/size', [
|
||||||
'value'
|
'value'
|
||||||
])
|
]),
|
||||||
},
|
options () {
|
||||||
watch: {
|
return [
|
||||||
// 注意 这里是关键
|
{ label: this.$t('layout.header-aside.header-size.options.default'), value: 'default' },
|
||||||
// 因为需要访问 this.$ELEMENT 所以只能在这里使用这种方式
|
{ label: this.$t('layout.header-aside.header-size.options.medium'), value: 'medium' },
|
||||||
value: {
|
{ label: this.$t('layout.header-aside.header-size.options.small'), value: 'small' },
|
||||||
handler (val, oldVal) {
|
{ label: this.$t('layout.header-aside.header-size.options.mini'), value: 'mini' }
|
||||||
// https://github.com/d2-projects/d2-admin/pull/129
|
]
|
||||||
if (oldVal) {
|
|
||||||
// 这个情况在已经加载完页面 用户改变了尺寸时触发
|
|
||||||
this.$ELEMENT.size = val
|
|
||||||
// 由于已经加载过设置 需要清空缓存设置
|
|
||||||
this.pageKeepAliveClean()
|
|
||||||
// 由于已经加载过设置 需要刷新此页面
|
|
||||||
this.$router.replace('/refresh')
|
|
||||||
} else {
|
|
||||||
// 这个情况在刷新页面时触发
|
|
||||||
this.$ELEMENT.size = val
|
|
||||||
}
|
|
||||||
},
|
|
||||||
immediate: true
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@@ -59,6 +37,12 @@ export default {
|
|||||||
}),
|
}),
|
||||||
handleChange (value) {
|
handleChange (value) {
|
||||||
this.sizeSet(value)
|
this.sizeSet(value)
|
||||||
|
this.$notify({
|
||||||
|
title: this.$t('public.notify.special.component-size.changed.title'),
|
||||||
|
dangerouslyUseHTMLString: true,
|
||||||
|
message: this.$t('public.notify.special.component-size.changed.message'),
|
||||||
|
type: 'success'
|
||||||
|
})
|
||||||
},
|
},
|
||||||
iconName (name) {
|
iconName (name) {
|
||||||
return name === this.value ? 'dot-circle-o' : 'circle-o'
|
return name === this.value ? 'dot-circle-o' : 'circle-o'
|
||||||
|
|||||||
+6
-10
@@ -23,7 +23,11 @@ const router = new VueRouter({
|
|||||||
* 路由拦截
|
* 路由拦截
|
||||||
* 权限验证
|
* 权限验证
|
||||||
*/
|
*/
|
||||||
router.beforeEach((to, from, next) => {
|
router.beforeEach(async (to, from, next) => {
|
||||||
|
// 确认已经加载多标签页数据 https://github.com/d2-projects/d2-admin/issues/201
|
||||||
|
await store.dispatch('d2admin/page/isLoaded')
|
||||||
|
// 确认已经加载组件尺寸设置 https://github.com/d2-projects/d2-admin/issues/198
|
||||||
|
await store.dispatch('d2admin/size/isLoaded')
|
||||||
// 进度条
|
// 进度条
|
||||||
NProgress.start()
|
NProgress.start()
|
||||||
// 关闭搜索面板
|
// 关闭搜索面板
|
||||||
@@ -53,17 +57,9 @@ router.beforeEach((to, from, next) => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
router.afterEach(async to => {
|
router.afterEach(to => {
|
||||||
// 进度条
|
// 进度条
|
||||||
NProgress.done()
|
NProgress.done()
|
||||||
// 等待数据加载 https://github.com/d2-projects/d2-admin/issues/201
|
|
||||||
await new Promise (resolve => {
|
|
||||||
const timer = setInterval(() => {
|
|
||||||
if (store.state.d2admin.page.openedLoaded) {
|
|
||||||
resolve(clearInterval(timer))
|
|
||||||
}
|
|
||||||
}, 10)
|
|
||||||
})
|
|
||||||
// 多页控制 打开新的页面
|
// 多页控制 打开新的页面
|
||||||
store.dispatch('d2admin/page/open', to)
|
store.dispatch('d2admin/page/open', to)
|
||||||
// 更改标题
|
// 更改标题
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ export default {
|
|||||||
pool: [],
|
pool: [],
|
||||||
// 当前显示的多页面列表
|
// 当前显示的多页面列表
|
||||||
opened: setting.page.opened,
|
opened: setting.page.opened,
|
||||||
// 标记已经加载多标签页数据 https://github.com/d2-projects/d2-admin/issues/201
|
// 已经加载多标签页数据 https://github.com/d2-projects/d2-admin/issues/201
|
||||||
openedLoaded: false,
|
openedLoaded: false,
|
||||||
// 当前页面
|
// 当前页面
|
||||||
current: '',
|
current: '',
|
||||||
@@ -20,6 +20,19 @@ export default {
|
|||||||
keepAlive: []
|
keepAlive: []
|
||||||
},
|
},
|
||||||
actions: {
|
actions: {
|
||||||
|
/**
|
||||||
|
* @description 确认已经加载多标签页数据 https://github.com/d2-projects/d2-admin/issues/201
|
||||||
|
*/
|
||||||
|
isLoaded ({ state }) {
|
||||||
|
if (state.value) return Promise.resolve()
|
||||||
|
return new Promise(resolve => {
|
||||||
|
const timer = setInterval(() => {
|
||||||
|
if (state.openedLoaded) {
|
||||||
|
resolve(clearInterval(timer))
|
||||||
|
}
|
||||||
|
}, 10)
|
||||||
|
})
|
||||||
|
},
|
||||||
/**
|
/**
|
||||||
* @class opened
|
* @class opened
|
||||||
* @description 从持久化数据载入标签页列表
|
* @description 从持久化数据载入标签页列表
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
import Vue from 'vue'
|
||||||
|
import router from '@/router'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
namespaced: true,
|
namespaced: true,
|
||||||
state: {
|
state: {
|
||||||
@@ -5,6 +8,30 @@ export default {
|
|||||||
value: '' // medium small mini
|
value: '' // medium small mini
|
||||||
},
|
},
|
||||||
actions: {
|
actions: {
|
||||||
|
/**
|
||||||
|
* @description 将当前的设置应用到 element
|
||||||
|
* @param {Boolean} refresh 是否在设置之后刷新页面
|
||||||
|
*/
|
||||||
|
apply ({ state, commit }, refresh) {
|
||||||
|
Vue.prototype.$ELEMENT.size = state.value
|
||||||
|
if (refresh) {
|
||||||
|
commit('d2admin/page/keepAliveClean', null, { root: true })
|
||||||
|
router.replace('/refresh')
|
||||||
|
}
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* @description 确认已经加载组件尺寸设置 https://github.com/d2-projects/d2-admin/issues/198
|
||||||
|
*/
|
||||||
|
isLoaded ({ state }) {
|
||||||
|
if (state.value) return Promise.resolve()
|
||||||
|
return new Promise(resolve => {
|
||||||
|
const timer = setInterval(() => {
|
||||||
|
if (state.value) {
|
||||||
|
resolve(clearInterval(timer))
|
||||||
|
}
|
||||||
|
}, 10)
|
||||||
|
})
|
||||||
|
},
|
||||||
/**
|
/**
|
||||||
* @description 设置尺寸
|
* @description 设置尺寸
|
||||||
* @param {Object} state vuex state
|
* @param {Object} state vuex state
|
||||||
@@ -14,6 +41,8 @@ export default {
|
|||||||
return new Promise(async resolve => {
|
return new Promise(async resolve => {
|
||||||
// store 赋值
|
// store 赋值
|
||||||
state.value = size
|
state.value = size
|
||||||
|
// 应用
|
||||||
|
dispatch('apply', true)
|
||||||
// 持久化
|
// 持久化
|
||||||
await dispatch('d2admin/db/set', {
|
await dispatch('d2admin/db/set', {
|
||||||
dbName: 'sys',
|
dbName: 'sys',
|
||||||
@@ -38,6 +67,8 @@ export default {
|
|||||||
defaultValue: 'default',
|
defaultValue: 'default',
|
||||||
user: true
|
user: true
|
||||||
}, { root: true })
|
}, { root: true })
|
||||||
|
// 应用
|
||||||
|
dispatch('apply')
|
||||||
// end
|
// end
|
||||||
resolve()
|
resolve()
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user