178 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			178 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
//  统一给参数
 | 
						||
const dataObj = (url, params) => {
 | 
						||
    let options = params
 | 
						||
    // #ifdef APP-PLUS
 | 
						||
    // DOTO:暂时没处理过,只是放在这里
 | 
						||
    let data = null; //业务数据
 | 
						||
    let terminal = 1 //终端类型,web:0,app:1
 | 
						||
    options = {
 | 
						||
        ...params,
 | 
						||
        data,
 | 
						||
        sign,
 | 
						||
        terminal
 | 
						||
    }
 | 
						||
    // #endif
 | 
						||
    return options
 | 
						||
}
 | 
						||
const goLogin = () => {
 | 
						||
    // uni.clearStorageSync();
 | 
						||
	console.log('token失效');
 | 
						||
    // uni.reLaunch({
 | 
						||
    //     url: '/pages/login/Login'
 | 
						||
    // }) //未授权,请重新登录(401)
 | 
						||
}
 | 
						||
// 请求错误处理
 | 
						||
const checkError = (e, reject) => {
 | 
						||
    // console.error("----接口错误----", e)
 | 
						||
    if (e.data) {
 | 
						||
        if (e.data.code) {
 | 
						||
            switch (Number(e.data.code)) {
 | 
						||
                case 4001:
 | 
						||
                    goLogin()
 | 
						||
                    break;
 | 
						||
            }
 | 
						||
        }
 | 
						||
        reject(e.data)
 | 
						||
    } else reject({msg:'接口错误'})
 | 
						||
}
 | 
						||
 | 
						||
// 封装请求
 | 
						||
const request = (method, url, options) => {
 | 
						||
    let methods = '';
 | 
						||
    let headers = {};
 | 
						||
    switch (method) {
 | 
						||
        case 'get':
 | 
						||
            methods = 'GET'
 | 
						||
            headers = {
 | 
						||
                'Content-Type': 'application/json; charset=UTF-8',
 | 
						||
				'Authorization': 'Bearer '+uni.getStorageSync('token') || ''
 | 
						||
            }
 | 
						||
            break;
 | 
						||
        case 'post':
 | 
						||
            methods = 'POST'
 | 
						||
            headers = {
 | 
						||
                'Content-Type': 'application/json; charset=UTF-8',
 | 
						||
				'Authorization': 'Bearer '+uni.getStorageSync('token') || ''
 | 
						||
            }
 | 
						||
            break;
 | 
						||
        case 'postForm':
 | 
						||
            methods = 'POST'
 | 
						||
            headers = {
 | 
						||
                'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
 | 
						||
				'Authorization': 'Bearer '+uni.getStorageSync('token') || ''
 | 
						||
            }
 | 
						||
            break;
 | 
						||
    }
 | 
						||
    let obj = {},
 | 
						||
        hideLoading = false,
 | 
						||
        loadingText = 'loading...';
 | 
						||
    if (options) { //如果有options
 | 
						||
        if (options.hideLoading) {
 | 
						||
            hideLoading = options.hideLoading
 | 
						||
            delete options.hideLoading
 | 
						||
        }
 | 
						||
        if (options.loadingText) {
 | 
						||
            loadingText = options.loadingText
 | 
						||
            delete options.loadingText
 | 
						||
        }
 | 
						||
    }
 | 
						||
	return new Promise((resolve, reject) => {
 | 
						||
		uni.request({
 | 
						||
			// url: `${getApp().globalData.domainName}${url}`,
 | 
						||
			url: `${uni.getStorageSync('hostapi')}${url}`,
 | 
						||
			method: methods,
 | 
						||
			data: dataObj(url, options),
 | 
						||
			header: headers,
 | 
						||
			success: res => {
 | 
						||
				// console.log('反的结果===>',res);
 | 
						||
				if (res.statusCode == 200) {
 | 
						||
					if (res.data.code == 0) {
 | 
						||
						resolve(res.data)
 | 
						||
					} else {
 | 
						||
						resolve(res.data)
 | 
						||
					}
 | 
						||
				} else {
 | 
						||
					reject(res.data)
 | 
						||
				}
 | 
						||
			},
 | 
						||
			fail: e => {
 | 
						||
				checkError(e, reject)
 | 
						||
			},
 | 
						||
			complete: rest => {
 | 
						||
				// console.log(rest);
 | 
						||
				!hideLoading && uni.hideToast()
 | 
						||
			}
 | 
						||
		})
 | 
						||
	})
 | 
						||
}
 | 
						||
 | 
						||
 | 
						||
// 上传文件 封装请求
 | 
						||
const uploadFile = (url, options) => {
 | 
						||
	this.log(1)
 | 
						||
    let tempData = options || {}
 | 
						||
    uni.showLoading({title: "上传中..."})
 | 
						||
    return new Promise((resolve, reject) => {
 | 
						||
        uni.uploadFile({
 | 
						||
            // url: `${getApp().globalData.domainName}${url}`,
 | 
						||
			url: `${uni.getStorageSync('hostapi')}${url}`,
 | 
						||
            filePath: tempData.file,
 | 
						||
            name: 'image',
 | 
						||
			fileType:'image',
 | 
						||
            formData: tempData,
 | 
						||
			header: {
 | 
						||
				'Content-Type': 'multipart/form-data;charset=UTF-8',
 | 
						||
				'Authorization': 'Bearer '+uni.getStorageSync('token') || ''
 | 
						||
			},
 | 
						||
            success: res => {
 | 
						||
                if (res.statusCode == 200) {
 | 
						||
                    let temp = JSON.parse(res.data)
 | 
						||
                    if (temp.code == 0) {
 | 
						||
                        resolve(temp)
 | 
						||
                    } else {
 | 
						||
                        reject(temp)
 | 
						||
                        uni.showToast({
 | 
						||
                            title: temp.msg || '接口错误(' + temp.code + ')',
 | 
						||
                            icon: 'none'
 | 
						||
                        })
 | 
						||
                    }
 | 
						||
                } else {
 | 
						||
                    uni.showToast({
 | 
						||
                        title: `未知错误(${res.statusCode})`,
 | 
						||
                        icon: 'none'
 | 
						||
                    })
 | 
						||
                }
 | 
						||
            },
 | 
						||
            fail(e) {
 | 
						||
                // uni.showToast({
 | 
						||
                //     title: '接口请求超时',
 | 
						||
                //     icon: 'none'
 | 
						||
                // })
 | 
						||
                // reject(e.data)
 | 
						||
            },
 | 
						||
            complete: () => {
 | 
						||
                uni.hideLoading()
 | 
						||
            }
 | 
						||
        });
 | 
						||
    })
 | 
						||
}
 | 
						||
 | 
						||
 | 
						||
export default {
 | 
						||
    get: (url, options) => {
 | 
						||
        return request('get', url, options)
 | 
						||
    },
 | 
						||
    // JOSN格式
 | 
						||
    post: (url, options) => {
 | 
						||
        return request('post', url, options)
 | 
						||
    },
 | 
						||
    // form-data格式
 | 
						||
    postForm: (url, options) => {
 | 
						||
        return request('postForm', url, options)
 | 
						||
    },
 | 
						||
    // 上传
 | 
						||
    upload: (url, options) => {
 | 
						||
        return uploadFile(url, options)
 | 
						||
    }
 | 
						||
}
 |