|
|
|
@ -5,67 +5,105 @@ import { mapState } from 'vuex'
|
|
|
|
|
// const mixinsComputed = Vue.config.optionMergeStrategies.computed
|
|
|
|
|
// const mixinsMethods = Vue.config.optionMergeStrategies.methods
|
|
|
|
|
|
|
|
|
|
// 定义一个mixin对象,用于计算属性和方法的混入
|
|
|
|
|
const mixin = {
|
|
|
|
|
// 计算属性
|
|
|
|
|
computed: {
|
|
|
|
|
// 使用mapState函数将state中的app属性映射到计算属性中
|
|
|
|
|
...mapState({
|
|
|
|
|
// 布局模式
|
|
|
|
|
layoutMode: state => state.app.layout,
|
|
|
|
|
// 导航主题
|
|
|
|
|
navTheme: state => state.app.theme,
|
|
|
|
|
// 主色调
|
|
|
|
|
primaryColor: state => state.app.color,
|
|
|
|
|
// 色弱模式
|
|
|
|
|
colorWeak: state => state.app.weak,
|
|
|
|
|
// 固定头部
|
|
|
|
|
fixedHeader: state => state.app.fixedHeader,
|
|
|
|
|
// 固定侧边栏
|
|
|
|
|
fixSiderbar: state => state.app.fixSiderbar,
|
|
|
|
|
fixSidebar: state => state.app.fixSiderbar,
|
|
|
|
|
// 内容宽度
|
|
|
|
|
contentWidth: state => state.app.contentWidth,
|
|
|
|
|
// 自动隐藏头部
|
|
|
|
|
autoHideHeader: state => state.app.autoHideHeader,
|
|
|
|
|
// 侧边栏是否打开
|
|
|
|
|
sidebarOpened: state => state.app.sidebar,
|
|
|
|
|
// 是否开启多标签页
|
|
|
|
|
multiTab: state => state.app.multiTab
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
// 方法
|
|
|
|
|
methods: {
|
|
|
|
|
// 判断是否为顶部菜单
|
|
|
|
|
isTopMenu () {
|
|
|
|
|
return this.layoutMode === 'topmenu'
|
|
|
|
|
},
|
|
|
|
|
// 判断是否为侧边菜单
|
|
|
|
|
isSideMenu () {
|
|
|
|
|
return !this.isTopMenu()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 定义一个mixinDevice对象,用于计算设备类型的混入
|
|
|
|
|
const mixinDevice = {
|
|
|
|
|
// 计算属性
|
|
|
|
|
computed: {
|
|
|
|
|
// 使用mapState函数将state中的app属性映射到计算属性中
|
|
|
|
|
...mapState({
|
|
|
|
|
// 设备类型
|
|
|
|
|
device: state => state.app.device
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
// 方法
|
|
|
|
|
methods: {
|
|
|
|
|
// 判断是否为移动设备
|
|
|
|
|
isMobile () {
|
|
|
|
|
return this.device === DEVICE_TYPE.MOBILE
|
|
|
|
|
},
|
|
|
|
|
// 判断是否为桌面设备
|
|
|
|
|
isDesktop () {
|
|
|
|
|
return this.device === DEVICE_TYPE.DESKTOP
|
|
|
|
|
},
|
|
|
|
|
// 判断是否为平板设备
|
|
|
|
|
isTablet () {
|
|
|
|
|
return this.device === DEVICE_TYPE.TABLET
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 定义一个AppDeviceEnquire对象,用于在组件挂载时检测设备类型
|
|
|
|
|
const AppDeviceEnquire = {
|
|
|
|
|
// 组件挂载时调用
|
|
|
|
|
mounted () {
|
|
|
|
|
// 获取store
|
|
|
|
|
const { $store } = this
|
|
|
|
|
// 检测设备类型
|
|
|
|
|
deviceEnquire(deviceType => {
|
|
|
|
|
// 根据设备类型进行不同的操作
|
|
|
|
|
switch (deviceType) {
|
|
|
|
|
// 桌面设备
|
|
|
|
|
case DEVICE_TYPE.DESKTOP:
|
|
|
|
|
// 将设备类型设置为桌面
|
|
|
|
|
$store.commit('TOGGLE_DEVICE', 'desktop')
|
|
|
|
|
// 设置侧边栏为打开状态
|
|
|
|
|
$store.dispatch('setSidebar', true)
|
|
|
|
|
break
|
|
|
|
|
// 平板设备
|
|
|
|
|
case DEVICE_TYPE.TABLET:
|
|
|
|
|
// 将设备类型设置为平板
|
|
|
|
|
$store.commit('TOGGLE_DEVICE', 'tablet')
|
|
|
|
|
// 设置侧边栏为关闭状态
|
|
|
|
|
$store.dispatch('setSidebar', false)
|
|
|
|
|
break
|
|
|
|
|
// 移动设备
|
|
|
|
|
case DEVICE_TYPE.MOBILE:
|
|
|
|
|
default:
|
|
|
|
|
// 将设备类型设置为移动
|
|
|
|
|
$store.commit('TOGGLE_DEVICE', 'mobile')
|
|
|
|
|
// 设置侧边栏为打开状态
|
|
|
|
|
$store.dispatch('setSidebar', true)
|
|
|
|
|
break
|
|
|
|
|
}
|
|
|
|
@ -73,4 +111,5 @@ const AppDeviceEnquire = {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 导出mixin、AppDeviceEnquire、mixinDevice对象
|
|
|
|
|
export { mixin, AppDeviceEnquire, mixinDevice }
|
|
|
|
|