UNPKG

ty-mobile-uni

Version:

uView UI,是uni-app生态优秀的UI框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水

99 lines (93 loc) 2.6 kB
import uni_request from './uni_request.js' import { getToken } from './auth.js' import { showFullScreenLoading, tryHideFullScreenLoading } from './loading' import Vue from 'vue' const request = uni_request({ timeout: 10000, // 超时时间 header: { 'x-custom-header': 'x-custom-header', }, // 设置请求头,建议放在请求拦截器中 statusCode: [200, 401], // 服务器相应状态码为 200/401 时,网络请求不会 reject }) // 请求失败统一处理方法 request.onerror = async (...args) => { //console.log('网络请求失败了', `url为${args[1]}`) tryHideFullScreenLoading() } //请求拦截器 request.interceptors.request.use( (config, ...args) => { var token = getToken() if (token) { config.header.Authorization = token } var obj = { contractRoot: { svcCont: { requestObject: config.body, }, tcpCont: { appKey: 'string', dstSysId: 'string', reqTime: 0, rspTime: 0, sign: 'string', svcCode: 'string', transactionId: 'string', version: 'string', }, }, } if (config.body && args[0] != 'get') { config.body = obj } if (!config.hideLoading) { //全局加载 showFullScreenLoading() } return config }, (error) => { tryHideFullScreenLoading() return Promise.reject(error) } ) //响应拦截器 request.interceptors.response.use( (response, ...args) => { // 响应拦截器(可以设置多个, 同时可以也可以使用异步方法) //关闭loading tryHideFullScreenLoading() var resData = typeof response.data === 'string' ? JSON.parse(response.data) : response.data var info = resData.contractRoot.svcCont if (info.resultCode == '0000') { return info.responseObject } else if (info.resultCode == '10015') { setTimeout(() => { if (Vue.prototype.tokenInvalidCallback) { Vue.prototype.tokenInvalidCallback() } }, 1000) uni.showToast({ icon: 'none', title: 'token无效,请重新登录!', duration: 2000, }) } else { uni.showToast({ icon: 'none', title: info.resultMsg || '请求异常!', duration: 2000, }) } return Promise.reject(info) }, (error) => { tryHideFullScreenLoading() return Promise.reject(error) } ) export default request