import { createApp } from 'vue' import App from './App.vue' import router from './router/index' import { _createStore } from './vuex'; // 引入http请求插件 import $API from './utils/api' import $http from './utils/http' import { addRequestInterceptor, addResponseInterceptor } from './utils/http' import Qs from 'qs'; // reset 样式 import '@/assets/css/reset.css' // import '@/assets/css/swiper6.min.css' import '@/assets/js/rem.js' // import '@/assets/js/swiper6.min.js' import '@/assets/css/style.scss' import { Toast, Swipe, SwipeItem, Popup, Picker, Tab, Tabs, Dialog, Uploader, DatetimePicker, Slider, Checkbox, CheckboxGroup, Form, Field, CellGroup, Area, Button, Progress, List} from 'vant'; import 'vant/lib/index.css'; Toast.setDefaultOptions({ duration: 1500 }); // 路由拦截器 // router.beforeEach((to, from, next) => { // if (to.matched.length != 0) { // if (to.meta.requireAuth) { // 判断该路由是否需要登录权限 // if (Boolean(localStorage.getItem("userInfo"))) { // 通过vuex state获取当前的user是否存在 // next(); // } else { // next({ // path: '/login', // query: { redirect: to.fullPath } // 将跳转的路由path作为参数,登录成功后跳转到该路由 // }) // } // } else { // if (Boolean(localStorage.getItem("userInfo"))) { // 判断是否登录 // if (to.path != "/" && to.path != "/login") { //判断是否要跳到登录界面 // next(); // } else { // /** // * 防刷新,如果登录,修改路由跳转到登录页面,修改路由为登录后的首页 // */ // next({ // path: '/standardizedData/groupAirline' // }) // } // } else { // next(); // } // } // } else { // next({ // path: '/login', // query: { redirect: to.fullPath } // 将跳转的路由path作为参数,登录成功后跳转到该路由 // }) // } // }) // request前自动添加api配置 addRequestInterceptor( (config) => { let Authorization = ""; if (typeof localStorage !== "undefined") { const userData = JSON.parse(localStorage.getItem('userData')) || ""; if (userData) { let token = ''; if (userData.token) { token = userData.token } else if(userData.data.token){ token = userData.data.token } Authorization = "Bearer " + token; } config.headers['Authorization'] = Authorization; } config.transformRequest = [ function(data){ return Qs.stringify(data) //使用Qs将请求参数序列化 }] /*统一加/api前缀*/ //config.url = `/api${config.url}` return config }, (error) => { return Promise.reject(error) } ) // http 返回response前处理 addResponseInterceptor( (response) => { /*todo 在这里统一前置处理请求响应 */ return Promise.resolve(response.data) }, (error) => { /* * todo 统一处理500、400等错误状态 * 这里reject下,交给entry-server.js的处理 */ const { response, request } = error return Promise.reject({ code: response.status, data: response.data, method: request.method, path: request.path }) } ) const app = createApp(App) const store = _createStore(); app.use(router) app.use(store) app.use(Toast) .use(Swipe) .use(Popup) .use(Picker) .use(Tab) .use(Tabs) .use(Dialog) .use(Uploader) .use(DatetimePicker) .use(SwipeItem) .use(Slider) .use(Checkbox) .use(CheckboxGroup) .use(Form) .use(Field) .use(CellGroup) .use(Area) .use(Button) .use(Progress) .use(List); // app.config.globalProperties.$coverUrl = 'http://192.168.99.67:8080' app.config.globalProperties.$coverUrl = 'http://58.49.77.70:8443' app.config.globalProperties.$API = $API app.config.globalProperties.$http = $http app.mount('#app')