uniapp 封装公共请求方法

版本 vue2

在main.js 中引用

//导入封装好的请求数据的方法
import Util from '@/util/util.js'
import Http from '@/util/request.js'

 //封装请求路径
import storage from '@/store/storage.js'

Vue.prototype.$storage =storage
Vue.prototype.$Util =Util
Vue.prototype.$Http =Http

// 线上环境
Vue.prototype.imageUrl =''

跟目录中增加文件util

request.js

import Util from '@/util/util.js'
import storage from '@/store/storage.js'



const common = {
	
	// 测试
	// baseUrl: "/api/",
	// 线上
	baseUrl: "/api/",
	header: {
		'Content-Type': 'application/json;charset=UTF-8',
	},
	data: {},
	method: 'GET',
	dataType: 'json', //设为 json,会尝试对返回的数据做一次 JSON.parse
	token: uni.getStorageSync('token')
}

export default {
	//全局配置
	common: common,
	//请求返回Promise对象
	request(options = {}) {
		
		var that=this;
		//参数处理整合
		options.url = common.baseUrl + options.url
		options.header = options.header || common.header
		options.data = options.data || common.data
		options.method = options.method || common.method
		options.dataType = options.dataType || common.dataType
		options.token = options.token ||common.token
		
		var login_url='/pages/login/login'
		//请求
		return new Promise((res, rej) => {
			// 请求之前看下token标识,登录接口是不需要token(token=false),此标识将token验证过滤
			if (options.token) {
				let token = options.token
				// 往header头中添加token
				options.header["token"] = token
			}
			//发送请求
			uni.request({
				...options,
				success: (result) => {
					//因为后端返回结果不同意此处没法弄直接返回害
					var res_data=result.data
					if(res_data.code==0){
						Util.shibai(res_data.msg)
						return
					}
					
					if(res_data.code=='401'){
						// uni.redirectTo({
						// 	url:login_url ,
						// });
						Util.shibai('请先登录')
						return
					} 
					
					return res(res_data)
				},
				fail: (error) => {
					
					Util.shibai(error.errMsg || '请求失败',function(){
						return rej(error)
					});
					
				}

			})
		})
	},
	// get请求
	get(url, data = {}, options = {}) {
		options.url = url
		options.data = data
		options.method = 'GET'
		return this.request(options)
	},
	// post请求
	post(url, data = {}, options = {}) {
		options.url = url
		options.data = data
		options.method = 'POST'
		return this.request(options)
	},
	// put请求
	put(url, data = {}, options = {}) {
		options.url = url
		options.data = data
		options.method = 'PUT'
		return this.request(options)
	},
	// delete请求
	delete(url, data = {}, options = {}) {
		options.url = url
		options.data = data
		options.method = 'DELETE'
		return this.request(options)
	},
}

util.js  公用方法

module.exports = {

	//加载中
	loading(msg) {

		uni.showLoading({
			title: msg || '正在加载中',
			duration: 3000
		});

		uni.showNavigationBarLoading({
			duration: 1000
		});
	},
	//隐藏加载中
	hideloading() {
		uni.hideNavigationBarLoading()
		uni.hideLoading()
	},
	chenggong(msg, callback = '') {
		uni.showToast({
			title: msg,
			icon: 'success',
			duration: 1500,
			success: function() {

				if (callback) {
					setTimeout(function() {
						//要延时执行的代码
						callback()
					}, 1000) //延迟时间
				}

			},
		})
	},
	shibai(msg, callback = '') {
		uni.showToast({
			title: msg,
			icon: 'none',
			duration: 1500,
			success: function() {
				if (callback) {
					setTimeout(function() {
						//要延时执行的代码
						callback()
					}, 1000) //延迟时间
				}
			},
		});
		return false;
	},
	//校验邮箱格式
	checkEmail: function(email) {
			return RegExp(
					/^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/)
				.test(email);
		}
		//校验手机格式
		,
	checkMobile(mobile) {
		return RegExp(/^1[3456789]\d{9}$/).test(mobile);
	},
	
	
	
	getDiffTime(end_date){
		
		// dq_date 当前时间
		// end_date 截止时间
		end_date=end_date
		var timestamp = Date.parse(new Date())/1000
		dq_date=timestamp
		
		
	    var subtime = end_date-dq_date;    //计算时间差,并将毫秒转化为秒
	    var days = parseInt(subtime / 86400);  //天  24*60*60*1000
	    var hours = parseInt(subtime / 3600) - 24 * days;   //小时  60*60  总小时数-过去小时数=现在小时数
	    var mins = parseInt(subtime % 3600 / 60);    //分钟 - (day*24)  以60秒为一整份  取余 剩下秒数 秒数/60就是分钟数
	    var secs = parseInt(subtime % 60);   //以60秒为一整份  取余  剩下秒数
		
		if(dq_date>end_date){
			days=0
			hours=0
			mins=0
			secs=0
		}
		
		var obj={};
		obj.d=days;
		obj.h=hours;
		obj.m=mins;
		obj.s=secs;
		
	    return obj;
	}

	
	
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值