import "./wxPromise.js";
// loading配置,请求次数统计
function startLoading(){
	wx.showLoading({
		title: '',
		mask: true
	});
};
function endLoading(){
	wx.hideLoading();
};
function showFullScreenLoading(){
	if(getApp().globalData.loadingCount == 0){
		startLoading();
	};
	getApp().globalData.loadingCount++;
};
function tryHideFullScreenLoading(){
	if(getApp().globalData.loadingCount<=0){
		return;
	};
	getApp().globalData.loadingCount--;
	if(getApp().globalData.loadingCount == 0){
		// console.log('结束..')
		endLoading();
	};
};
// 请求
function wxRequest(url, type, data,nextInvoke) {
    var res = {};
    return new Promise(function (resolve, reject) {
		data.token = getApp().globalData.token;
		realRequest(url, type, data,nextInvoke).then(
			(res) => {
				// console.log(res);
				resolve(res);
			},
			(e) => {
				reject(e);
			}
		);
    });
};
function realRequest(url, type, data,nextInvoke) {
	showFullScreenLoading();
	if(nextInvoke){
		getApp().globalData.loadingCount = 2;
	};
	// console.log('loadingCount',getApp().globalData.loadingCount)
    return new Promise(function (resolve, reject) {
        wx.pro
            .request({
                url: getApp().globalData.api + url,
                method: type,
                data: data,
            })
            .then((res) => {
				tryHideFullScreenLoading();
                var res = res.data;
                // console.log(res);
                if (res.code == 200) {
                    // console.log(res.result)
                    resolve(res);
                }
                // 逻辑报错
                else if (res.code == 204) {
                    reject(res.msg);
                }
                // token失效
                else if (res.code == 401) {
                    getApp().globalData.userInfo = null;
                    getApp().globalData.token = null;
					// token报错，跳转到登录页面
					wx.pro.redirectTo({
						url: '/pages/login/index/index'
					});
					reject(res.msg);
                }
                reject(res.msg);
            })
            .catch((err) => {
				// 接口连续调用时报错,需主动关闭
				if(nextInvoke){
					getApp().globalData.loadingCount = 1;
					tryHideFullScreenLoading();
				}else{
					// 正常 非连续调用
					tryHideFullScreenLoading();
				}
                console.log(err);
                reject("网络异常,请稍后再试");
            });
    });
};
exports.wxRequest = wxRequest;