import Vue from 'vue'; import App from './App'; // 引入全局存储 import store from '@/store'; // 引入全局配置 import $mAssetsPath from '@/config/assets.config.js'; import $mConfig from '@/config/index.config.js'; import $mRoutesConfig from '@/config/routes.config.js'; import $mConstDataConfig from '@/config/constData.config'; import $mButtonConfig from '@/config/buttons.config' // 引入全局方法 import { http } from '@/utils/request'; import $mGraceChecker from '@/utils/graceChecker'; import $mHelper from '@/utils/helper'; import $mRouter from '@/utils/router'; // import * as dd from 'dingtalk-jsapi'; // 此方式为整体加载,也可按需进行加载 import { debuggerModule } from 'uni_modules/imengyu-IMDebuggerWindow/common/debuggerExtern.js' const errorHandler = (err, vm, info) => { if(debuggerModule) debuggerModule.addVueError(err, vm, info); } Vue.config.errorHandler = errorHandler; // 挂载全局自定义方法 Vue.prototype.$mStore = store; Vue.prototype.$http = http; Vue.prototype.$mConfig = $mConfig Vue.prototype.$mAssetsPath = $mAssetsPath; Vue.prototype.$mRoutesConfig = $mRoutesConfig; Vue.prototype.$mConstDataConfig = $mConstDataConfig; Vue.prototype.$mButtonConfig = $mButtonConfig; Vue.prototype.$mGraceChecker = $mGraceChecker; Vue.prototype.$mHelper = $mHelper; Vue.prototype.$mRouter = $mRouter; if (process.env.NODE_ENV === 'production') { Vue.config.productionTip = false; } // 路由导航 $mRouter.beforeEach((navType, to) => { if (to.route === undefined) { throw '路由钩子函数中没有找到to对象,路由信息:' + JSON.stringify(to); } if (to.route === $mRoutesConfig.login.path && store.getters.hasLogin) { uni.reLaunch({ url: $mHelper.objParseUrlAndParam($mRoutesConfig.main.path) }); return; } // 过滤需要权限的页面 if (to.route.requiresAuth) { if (store.getters.hasLogin) { // 已经登录 uni[navType]({ url: $mHelper.objParseUrlAndParam(to.route.path, to.query) }); } else { // 登录成功后的重定向地址和参数 const query = { redirectUrl: to.route.path, ...to.query }; // 没有登录 是否强制登录? if (store.state.forcedLogin) { uni.redirectTo({ url: $mHelper.objParseUrlAndParam($mRoutesConfig.login.path, query) }); } else { uni.navigateTo({ url: $mHelper.objParseUrlAndParam($mRoutesConfig.login.path, query) }); } } } else { uni[navType]({ url: $mHelper.objParseUrlAndParam(to.route, to.query) }); } }); App.mpType = 'app'; Vue.mixin({ computed: { themeColor: { get () { return store.getters.themeColor; }, set (val) { store.state.themeColor = val; } } } }); Vue.prototype.moneySymbol = $mConstDataConfig.moneySymbol; Vue.prototype.singleSkuText = $mConstDataConfig.singleSkuText; // 保留小数点后两位 Vue.filter('keepTwoDecimal', value => { return (Math.floor((value || 0) * 100) / 100).toFixed(2); }); const app = new Vue({ ...App, store: store }); app.$mount();