import { initHeaderDevice } from './header.js'
import api from '@/config/api.js'
const request = async (url, type, data) => {
	const baseUrl = api.common
	// 这里确保一定是可以获取得到的
	let headerDevice = uni.getStorageSync('m-header-device')
	let rd
	if (headerDevice) {
		// 获取版本号
		const device = Object.assign({},JSON.parse(headerDevice))
		console.log(device,'设备头信息')
		console.log('+++++++++++++++++++++++++从缓存拿数据')
		rd = encodeURIComponent(headerDevice)
	} else {
		console.log('=========================不从缓存拿数据')		
		rd = JSON.stringify(initHeaderDevice())
		console.log(rd,'请求头')
	}


	return new Promise((resolve, reject) => {
		const token = uni.getStorageSync('token')
		const tokenFinance = uni.getStorageSync('tokenFinance')
		const $data = Object.assign({}, data);

		uni.request({
			url: baseUrl + url,
			method: type,
			data: {
				...data
			},
			header: {
				Accept: "application/json;charset=UTF-8",
				"Content-Type": "application/json;charset=UTF-8",
				device: rd,
				Authorization: tokenFinance, //贷超
				Author: token, //花花有米
			},
			success: (res) => {

				// #ifdef APP
				console.log('------------')
				console.log(`${baseUrl}${url}`, '接口地址')
				console.log($data, '接口参数')
				if (res.data && res.data.result) console.log(res.data.result, '返回内容')
				else console.log(res.data, '返回内容')


				// #endif
				const { data, statusCode } = res;
				if (statusCode === 200) {
					if (data.success == true) {
						return resolve(data)
					} else {
						if (data.code === '403') {
							uni.removeStorageSync('token');
							uni.removeStorageSync('tokenFinance');
							setTimeout(() => {
								uni.redirectTo({
									url: "/pages/login/login"
								})
							}, 1500)
							return reject({ ...data, message: res.errMsg })
						} else if (data.code === '500') {
							return reject({ ...data })
						}
					}
				} else {
					return reject({ ...data, message: res.errMsg })
				}
			},
			fail: (err) => {
				const locationInfo = uni.getStorageSync('m-location-info')
				if (locationInfo) {
					uni.showToast({
						title: err.message ? err.message : '服务器开小差了~',
						icon: "none",
						duration: 2000
					})
				}
				reject(err)
			}
		});

	})

}
export default request;