/** * 移动端混入 */ import { mapGetters } from 'vuex' import { isMobile, isIOS, isAndroid, getDeviceType } from '@/utils/mobile' export default { computed: { ...mapGetters(['device']), $isMobile() { return this.device === 'mobile' || isMobile() }, $isIOS() { return isIOS() }, $isAndroid() { return isAndroid() }, $deviceType() { return getDeviceType() }, $isTablet() { return window.innerWidth >= 768 && window.innerWidth < 1024 }, $isPhone() { return window.innerWidth < 768 } }, methods: { /** * 移动端提示 */ $mobileToast(message, type = 'info') { if (this.$isMobile) { this.$message({ message, type, duration: 2000, showClose: false }) } else { this.$message({ message, type }) } }, /** * 移动端确认对话框 */ $mobileConfirm(message, title = '提示', options = {}) { return this.$confirm(message, title, { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning', ...options }) }, /** * 移动端表格列过滤 */ $filterMobileColumns(columns) { if (this.$isMobile) { // 移动端只显示重要列 return columns.filter(col => { if (col.mobile === false) return false if (col.mobile === true) return true // 默认显示前5列 return columns.indexOf(col) < 5 }) } return columns }, /** * 格式化移动端显示值 */ $formatMobileValue(value, column) { if (value === null || value === undefined || value === '') { return '-' } if (column && column.formatter) { return column.formatter(null, column, value) } if (typeof value === 'object') { return JSON.stringify(value) } return String(value) } } }