request.js 2.84 KB
import config from '@/config.js'
import {
	h5LoginAuto
} from './login'

const excludeUrls = ['login/login', 'login/register']

// 获取Token
function getToken() {
	try {
		const token = uni.getStorageSync('token')
		if (token) {
			return token
		} else {
			return ''
		}
	} catch (e) {
		console.log(e)
	}
}

// 获取请求头
function getHeaders() {
	const token = getToken()
	const header = {
		'Authorization': token,
		'Content-Type': 'application/json', // 根据自己的数据类型
		'Content-Language': 'zh_CN',
		// "Content-Type":"application/x-www-form-urlencoded",
		'Ztx-Per-Id': uni.getStorageSync('perId') || '-1'
	}
	return header
}

const request = function(req) {
	req.method = req.method.toUpperCase()
	if (!['GET', 'POST', 'PUT', 'DELETE'].includes(req.method)) {
		uni.showToast({
			title: `暂不支持的请求方式: ${req.method}`,
			icon: 'none'
		})
		return
	}

	// if (req.method === 'GET') {
	// if (!req.params) {
	// req.params = {}
	// }
	// req.params.pageNum = req.params.pageNum || 1
	// req.params.pageSize = req.params.pageSize || 50
	// }

	// if (req.method == 'POST' && !req.hideLoding) {
	// 	uni.showLoading({
	// 		title: '提交中...'
	// 	})
	// }

	return new Promise((resolve, reject) => {
		uni.request({
			url: config.baseUrl_api + req.url,
			method: req.method,
			data: req.params,
			header: getHeaders()
		}).then(res => {
			switch (res.statusCode) {
				case 200:
					const data = res.data || {}
					if (data.code === 0 || data.code === 200 || data.pageData?.code === 200) {
						resolve(data)
					} else if (req.url.indexOf('getMemberCountInfo') > -1) {
						resolve(data)
					} else {
						// if (!excludeUrls.includes(req.url)) {
						// if (data.msg) {
						// uni.showModal({
						// 	content: data.msg,
						// 	success: function(res) {

						// 	}
						// })
						uni.showToast({
							title: data.msg,
							icon: 'none',
							duration: 2000
						})
						// }
						// uni.hideLoading()

						// }

						// 登录超时
						if (data.code === 60002 || data.code === 60001) {
							uni.redirectTo({
								url: '/login/login'
							})
						} else if (data.code === 401) {
							h5LoginAuto()
								.then(() => {
									uni.hideLoading()
									uni.redirectTo({
										url: getCurrentPages()[getCurrentPages()
											.length - 1].$page.fullPath
									})
								})
								.catch(() => {
									uni.showToast({
										title: '服务异常,请稍后重试',
										icon: 'none'
									})
								})
						}

						reject(res)
					}
					break
				default:
					reject(res)
			}
		}).catch(res => {
			reject(res)
		}).finally(() => {
			// if (req.method == 'POST' && !req.hideLoding) {
			// 	uni.hideLoading()
			// }
		})
	})
}

export default request