import {
	baseURL
} from './env.js'

import {
	api
} from './api.js'

// 请求拦截
const fetch = (url, opt) => {
	uni.showLoading({
		mask: true
	})

	let urls = (api[opt.url]?.url || api[url]?.url);
	let params = opt.params ? ('?' + Object.keys(opt.params).map(key => key + '=' + opt.params[key]).join('&')) : ''

	opt.url = uni.$baseUrl + urls + params
	opt.method = opt.method || "GET";
	var header = {}
	// 是否禁用token
	if (!opt.hideToken) {
		if (uni.getStorageSync('token')) {
			header = {
				Authorization: 'Bearer ' + uni.getStorageSync('token')
			}
		}
	}
	// 带入租户编号
	if (url === "login") opt.header["tenant-id"] = 122;
	opt.header = {
		...opt.header,
		...header
	}

	// console.log(opt);

	opt.data = opt.data || {};
	return new Promise((resolve, reject) => {
		let options = {}

		Object.keys(opt).map(key => {

			if (key !== "params") {
				return options[key] = opt[key]
			}
		})
		// uni.request(options)
		// 	.then(res => {
		// 		// 响应拦截
		// 		const {
		// 			code
		// 		} = res.data
		// 		if (code == 200) {
		// 			resolve(res.data)
		// 			console.log("请求成功")
		// 		}
		// 		if (code == 401) {
		// 			uni.reLaunch({
		// 				url: "/pages/login/loginPage"
		// 			})
		// 			// console.log("未授权，跳转回登录页")
		// 		}
		// 		uni.hideLoading();
		// 		resolve(res.data);
		// 		// resolve(res.data)
		// 	})
		// 	.catch(err => {
		// 		uni.hideLoading();
		// 		// 异常处理
		// 		console.info("网络异常", err);
		// 		reject(err)
		// 	})
		uni.request(options)
		    .then(res => {
		        if (!res || !res.data) {
		            resolve({ code: -1, msg: '接口返回数据异常' });
		            return;
		        }
		        
		        const { code } = res.data;
				
				if (code == 0 || code == 200) {
					resolve(res.data);
					console.log("请求成功");
					return;
				}
		        
		        if (code == 401) {
		            uni.reLaunch({ url: "/pages/login/loginPage" });
		            resolve(res.data);
		            return;
		        }
		        
		        // 关键：所有情况都 resolve，不改调用方写法
		        resolve(res.data);
		    })
		    .catch(err => {
		        console.info("网络异常", err);
		        
		        let msg = '网络异常';
		        if (err?.errMsg?.includes('timeout')) {
		            msg = '请求超时，请稍后重试';
		        } else if (err?.errMsg === 'request:fail') {
		            msg = '网络连接失败，请检查网络';
		        } else if (err?.errMsg?.includes('request:fail abort')) {
		            msg = '请正确配置地址';
		        } else if (err?.errMsg) {
		            msg = err.errMsg;
		        }
		        
		        resolve({ code: -1, msg });
		    })
		    .finally(() => {
		        uni.hideLoading();
		    });
	})
}


export {
	fetch
}