1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- import config from '@/common/config.js'
- // 此vm参数为页面的实例,可以通过它引用vuex中的变量
- module.exports = (vm) => {
- const isDev = process.env.NODE_ENV === 'development'
- const appTokenKey = config.const.access_token
- // 根据运行环境判断获取baseUrl地址
- let base_url = 'https://ldb-airport.hz-hanghui.com:9100/ldb-pass-app/'
- // if(isDev){
- // // 开发环境
- // base_url = 'http://192.168.11.17:13022/ldb-pass-app/app/safeThing/'
- // // base_url = 'http://tsmgdn.natappfree.cc/ldb-pass-app/app/safeThing/'
- // }else if(process.env.NODE_ENV === 'production'){
- // // 生产环境
- // base_url = 'https://ldb-airport.hz-hanghui.com:9100/ldb-pass-app/app/safeThing/'
- // }
- // 初始化请求配置
- uni.$u.http.setConfig((config) => {
- /* config 为默认全局配置*/
- config.baseURL = base_url
- config.method = 'POST'
- // 设置为json,返回后会对数据进行一次JSON.parse()
- config.dataType = 'json'
- // #ifdef H5 || APP-PLUS || MP-ALIPAY || MP-WEIXIN
- config.timeout = 60000
- // #endif
- // config.showLoading = true, // 是否显示请求中的loading
- // config.loadingText = '努力加载中~', // 请求loading中的文字提示
- // config.loadingTime = 800, // 在此时间内,请求还没回来的话,就显示加载中动画,单位ms
- // config.originalData = false, // 是否在拦截器中返回服务端的原始数据
- // config.loadingMask = true, // 展示loading的时候,是否给一个透明的蒙层,防止触摸穿透
- // 配置请求头信息
- // config.header = {
- // 'content-type': 'application/json;charset=UTF-8'
- // }
- return config
- })
- // 请求拦截
- uni.$u.http.interceptors.request.use((config) => { // 可使用async await 做异步操作
- // 初始化请求拦截器时,会执行此方法,此时data为undefined,赋予默认{}
- config.data = config.data || {}
- if(isDev) console.info('request--->config', config)
- if(config?.custom?.type === 'json') {
- config.header['Content-Type'] = 'application/json'
- } else {
- config.header['Content-Type'] = 'application/x-www-form-urlencoded'
- }
- const appToken = uni.getStorageSync(appTokenKey)
- if (appToken) {
- // 可以在此通过vm引用vuex中的变量,具体值在vm.$store.state中
- config.header[appTokenKey] = appToken
- }
- if (config?.custom?.loadingText) {
- uni.showLoading({
- title: config.custom.loadingText
- })
- }
- return config
- }, config => { // 可使用async await 做异步操作
- return Promise.reject(config)
- })
- // 响应拦截
- uni.$u.http.interceptors.response.use((response) => {
- /* 对响应成功做点什么 可使用async await 做异步操作*/
- const data = response.data
- if(isDev) console.info('response:data-->', data)
- if (response.config?.custom?.loadingText) {
- uni.hideLoading()
- }
- if(data.code === 200) {
- return data
- } else {
- if (response.config?.custom?.hasMsg) {
- uni.$u.toast(data.msg)
- }
- if(data.code === 10001) {
- // 清除缓存数据
- uni.removeStorageSync('app-userId')
- uni.removeStorageSync(appTokenKey)
- // 重新登录
- uni.$u.throttle(() => {
- uni.$u.sleep(500).then(() => {
- vm.$u.route(config.route.login)
- })
- }, 2000)
- }
- return Promise.reject(data)
- }
- }, (response) => {
- // 对响应错误做点什么 (statusCode !== 200)
- return Promise.reject(response)
- })
- }
|