request.js 1.44 KB
import http from '@/components/common/tui-request'
import { APICodeEnum } from '@/utils/enum'
import { baseURL, version } from '@/config/app'
import { useCounterStore } from '@/stores/counter'

function checkParams(params) {
	if (typeof params != 'object') return params;
	for (let key in params) {
		const value = params[key]
		if (value === null || value === undefined || value === "") {
			delete params[key]
		}
	}
	return params
}

const events = {
	// 成功
	success(data) {
		return Promise.resolve(data)
	},
	// 失败
	fail({msg}) {
		uni.showToast({title: msg, icon: 'none'})
		return Promise.reject(msg)
	},
	// 重定向到登录
	redirect({msg}) {
		useCounterStore().loginOut()
		uni.redirectTo({url: '/pages/login'})
		return Promise.reject(msg)
	}
}

//初始化请求配置项
http.create({
	host: baseURL + '/ylapi/yuanl',
	// host: baseURL + '/yuanl/yuanl',
	header: {'content-type': 'application/json', 'version': version},
	timeout: 30000,
	showLoading: false
})

//请求拦截
http.interceptors.request.use(config => {
	const useCounter = useCounterStore()
	// 清除空的字段
	config.data = checkParams(config.data)
	// 请求头token
	if(useCounter.userToken){
		config.header = {'Authorization': useCounter.userToken}
	}
	return config
})

//响应拦截
http.interceptors.response.use(response => {
	var { code,msg } = response.data
	if (code!=401 && code!=200) code = 500
	return events[APICodeEnum[code]](response.data)
})

export default http