/**
 * 请求封装
 * 根据环境自动切换 API 地址
 */
import config from '@/config/index.js'

const {
	baseUrl,
	timeout,
	debug,
	env
} = config

const noTokenUrls = [
	'/oa/code/sendCode', // 获取验证码
	'/codeLogin', // 登录接口
	'/xcxLogin' // 一键登录
];
// 核心请求方法
const request = (url, method = 'GET', data = {}) => {
	// 1. 检查当前接口是否需要token
	const needToken = !noTokenUrls.some(path => url.startsWith(path));
	// 2. 获取本地存储的token
	const token = uni.getStorageSync('token') || '';

	const fullUrl = baseUrl + url;
	// 构建请求头（有token则自动携带）
	const header = {
		'Content-Type': 'application/json;charset=UTF-8'
	};
	if (needToken && token) {
		header["Authorization"] = "Bearer " + token
		// Bearer
	}
	return new Promise((resolve, reject) => {
		uni.request({
			url: fullUrl,
			method: method.toUpperCase(), // 统一转大写避免错误
			data: data, // POST 参数放请求体
			header: header,
			timeout: 10000,
			success: (res) => {
				resolve(res.data);
			},
			fail: (err) => {
				// 统一错误提示
				uni.showToast({
					title: err.errMsg || '请求失败',
					icon: 'none'
				});
				reject(err);
			}
		});
	});
};

// 导出方法
export default {
	// GET 请求
	get: (url, data = {}) => request(url, 'GET', data),
	// POST 请求
	post: (url, data = {}) => request(url, 'POST', data)
};