/** * Copyright (c) 2013-Now http://jeesite.com All rights reserved. */ import errorCode from "./errorCode"; // 此处第二个参数vm,就是我们在页面使用的this,你可以通过vm获取vuex等操作 const install = (Vue, vm) => { // 通用请求头设定 const ajaxHeader = 'x-ajax'; const sessionIdHeader = 'Authorization'; const contentType = 'Content-Type'; // 请求参数默认配置 Vue.prototype.$u.http.setConfig({ baseUrl: vm.vuex_config.baseUrl, originalData: true, }); // 请求拦截,配置Token等参数 Vue.prototype.$u.http.interceptor.request = (req) => { if (!req.header) { req.header = []; } // 默认指定返回 JSON 数据 if (!req.header[ajaxHeader]) { req.header[ajaxHeader] = 'json'; req.header[contentType] = 'application/json' } // 设定传递 Token 认证参数 if (!req.header[sessionIdHeader] && vm.vuex_token) { req.header[sessionIdHeader] = vm.vuex_token; } return req; } // 响应拦截,判断状态码是否通过 Vue.prototype.$u.http.interceptor.response = async (res, req) => { const code = res.data.code; const message = res.data.msg; // token过期,重新登录 if (code === 401) { vm.$u.toast('身份过期,请重新登录'); // vm.$u.api.logout().then(res => { //清空存储信息 vm.$u.vuex('vuex_token', '') vm.$u.vuex('vuex_user', {}) vm.$u.vuex('vuex_code', '') setTimeout(() => { uni.reLaunch({ url: "/pages/login/login", }); }, 500); // }); return } // if (code !== 200) { // vm.$u.toast(message); // return Promise.reject(new Error(message)) // } return res.data; } // 封装 post json 请求 vm.$u.postJson = (url, data = {}, header = {}) => { header['content-type'] = 'application/json'; return vm.$u.http.request({ url, method: 'POST', data }) } } export default { install }