版本 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;
}
}