
let baseUrl = ''; 
if (process.env.NODE_ENV === 'development') {
	baseUrl = 'http://192.168.0.224:8080'; // 开发环境
} else {
	baseUrl = 'http://192.168.1.224:8080'; // 生产环境
}

export default function request(url, data = {}, method = "GET") {
	return new Promise((resolve, reject) => {
		// 加载中提示（提升用户体验）
		uni.showLoading({ title: '请求中...', mask: true });

		uni.request({
			url: baseUrl + url,
			data: data,
			method: method,
			header: {
				"token": uni.getStorageSync("token") || '',
				'content-type': 'application/json'
			},
			success: (res) => {
				uni.hideLoading(); // 关闭加载提示

				// 处理HTTP状态码（网络层面）
				if (res.statusCode !== 200) {
					const errMsg = `请求失败（${res.statusCode}）`;
					uni.showToast({ title: errMsg, icon: "none", duration: 2000 });
					reject(errMsg);
					return; 
				}

				// 处理业务状态码（后端返回的data里）
				const resData = res.data || {}; // 兼容后端返回空的情况

				// 优先处理token过期（401）
				if (resData.code === 401) {
					uni.showToast({ title: '登录过期，请重新登录', icon: 'none', duration: 2000 });
					uni.clearStorageSync('token');
					setTimeout(() => {
						uni.reLaunch({ url: '/pages/login/login' });
					}, 1500);
					reject('token 过期');
					return;
				}

				// 业务成功（code=1）
				if (resData.code === 200) {
					resolve(resData.data); // 只返回核心数据，简化页面调用
				}
				// 业务失败（code=2）
				else if (resData.code === 500) {
					const errMsg = resData.msg || '请求失败';
					uni.showToast({ title: errMsg, icon: "none", duration: 2000 });
					resolve(null)
					// reject(errMsg);
				}
				else {
					const errMsg = resData.msg || '业务异常';
					uni.showToast({ title: errMsg, icon: "none", duration: 2000 });
					reject(errMsg);
				}
			},
			fail: (err) => {
				uni.hideLoading(); // 关闭加载提示
				uni.showToast({ title: '网络连接失败', icon: "none", duration: 2000 });
				reject(err);
			}
		});
	});
}
export const get = (url, data) => request(url, data, 'GET');
export const post = (url, data) => request(url, data, 'POST');


