import config from "config"

/**
 * http请求
 * @author 
 * @param {Object} params 
 */
function request(params) {
	//console.log(params)
	const token = uni.getStorageSync('token')
	return new Promise((resolve, reject) => {
		try {
			params.url = config.domain + params.url
			params.method = params.method || 'POST'

			if (params.loadingTip === '' || params.loadingTip) {
				uni.showLoading({
					title: params.loadingTip
				})
			}
			uni.request({
				...params,
				header: {
					"Authorization": token || '',
				},
				success: (res) => {
					// 防止组件那边使用showLoading这里提前关闭
					if (params.loadingTip === '' || params.loadingTip) {
						uni.hideLoading()
					}
					// 这里判断code为1，组件那边不需要再判断then回调就是成功
					if (res.statusCode === 200 && res.data.code === 200) {
						resolve(res.data)
					} else if (res.statusCode === 401 || res.data.code === 401) { // 未登录,或登录过期
						toLogin()
					} else if (res.statusCode === 200 || res.data.code === 500) {
						this.$wskj.toast('接口异常')
					} else {
						reject(res.data || {})
					}
					logApiRequest(params, res.data)
				},
				fail: (err) => {
					console.log(err);
					uni.hideLoading()
					reject(err || {})
				}
			})
		} catch (err) {
			reject(err)
		}
	})
}
//封装日志打印函数
function logApiRequest(data, response) {
	console.log(`========== 接口请求start日志 ==========`);
	console.log(data);
	console.log(response);
	if (response.code == 500) {
		uni.showToast({
			title: response.msg,
			icon: 'none',
			duration: 2000 // 持续时间，单位ms
		});
	}
	console.log(`========== 接口请求end日志 ==========`);
}

function toLogin() {
	uni.clearStorageSync();
	uni.showModal({
		title: '提示',
		content: '您的登录失效，是否重新登录？',
		success(res) {
			console.log(res)
			if (res.confirm) {
				uni.redirectTo({
					url: '/pages/login/wechatlogin'
				})
			}
		}
	})
}
export default request