Browse Source

[新增] 全局共享方法集合

[新增] http请求动态显示loading框
master
LAPTOP-D7TKRI82\邓 4 years ago
parent
commit
d9cbaf6f1c
  1. 8
      common/http.js
  2. 43
      common/shared.js
  3. 3
      main.js

8
common/http.js

@ -24,7 +24,7 @@ function getsign(params) {
return params;
}
function $http(url, data = {}){
function $http(url, data = {}, options = {}){
return new Promise((resolve, reject) => {
// 绑定this
let that = this;
@ -74,6 +74,12 @@ function $http(url, data = {}){
// 生成sign
getsign(data);
console.log(url, data);
// 动态赋值是否显示loading加载框 TODO验证一下是否有问题
if(that.$shared.isValueType(options.showLoading) != 'undefined'){
that.$u.http.setConfig({showLoading: options.showLoading});
}
// 发起请求
that.$u.post(url, data).then(res => {
resolve(res);

43
common/shared.js

@ -0,0 +1,43 @@
/*
全局共享实用方法 shared.js
*/
// 设置角标, 必须传入下标值,设置值可传可不传,传参时显示,不传时移除角标
function setBadge(index = 0, value){
if(isRight(value)){
uni.setTabBarBadge({
index: Number(index),
text: value > 99 ? '99+' : String(value)
})
}else{
uni.removeTabBarBadge({index: Number(index)});
}
}
// 判断对错/是否显示,万能校验
function isRight(obj) {
if (isValueType(obj) === 'string') {
obj = obj.trim();
if (obj === 'null' || obj === 'undefined') {
return false;
}
} else if (isValueType(obj) === 'number' && (isValueType(obj) === "number" && !isNaN(obj)) && obj !== 0) {
return true;
}
for (var key in obj) {
return true;
}
return false;
}
// 判断一个值所属的类型,返回一个字符串
function isValueType(value) {
let str = Object.prototype.toString.call(value);
return str.match(/\[object (.*?)\]/)[1].toLowerCase();
}
module.exports = {
setBadge,
isRight,
isValueType
}

3
main.js

@ -2,6 +2,7 @@ import Vue from 'vue'
import App from './App'
import mixin from '@/common/mixin.js';
import * as API from '@/common/api.js';
import $shared from '@/common/shared.js';
Vue.config.productionTip = false
@ -10,6 +11,8 @@ Vue.mixin(mixin);
// 将API注入全局
Vue.prototype.API = API;
// 全局共享方法
Vue.prototype.$shared = $shared;
// 引入全局uView
import uView from 'uview-ui'

Loading…
Cancel
Save