// import Vue from 'vue' import { deviceEnquire, DEVICE_TYPE } from '@/utils/device' import { mapState } from 'vuex' // const mixinsComputed = Vue.config.optionMergeStrategies.computed // const mixinsMethods = Vue.config.optionMergeStrategies.methods const mixin = { computed: { ...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() } } } const mixinDevice = { computed: { ...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 } } } const AppDeviceEnquire = { mounted() { 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 } }) } } const mixinPermissions = { computed: { ...mapState({ detailPermissions: state => state.user.detailPermissions }) }, methods: { // 根据appName 资源名 perms名 返回true/false // 判断该登录用户是否有传入的perms权限 hasDetailPermission(appName, resourceName, perms = []) { const appNamePer = this.detailPermissions[`${appName}`] const _findResourcePermissions = appNamePer.find(item => item.name === resourceName) return _findResourcePermissions.permissions.some(item => perms.includes(item)) } } } export { mixin, AppDeviceEnquire, mixinDevice, mixinPermissions }