From d9cbaf6f1cba989e6d4b88dc62e5f820277ac25c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LAPTOP-D7TKRI82=5C=E9=82=93?= <52643018@qq.com> Date: Wed, 23 Jun 2021 10:22:46 +0800 Subject: [PATCH] =?UTF-8?q?[=E6=96=B0=E5=A2=9E]=20=E5=85=A8=E5=B1=80?= =?UTF-8?q?=E5=85=B1=E4=BA=AB=E6=96=B9=E6=B3=95=E9=9B=86=E5=90=88=20[?= =?UTF-8?q?=E6=96=B0=E5=A2=9E]=20http=E8=AF=B7=E6=B1=82=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E6=98=BE=E7=A4=BAloading=E6=A1=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/http.js | 8 +++++++- common/shared.js | 43 +++++++++++++++++++++++++++++++++++++++++++ main.js | 3 +++ 3 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 common/shared.js diff --git a/common/http.js b/common/http.js index c75ad23..69800b2 100644 --- a/common/http.js +++ b/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); diff --git a/common/shared.js b/common/shared.js new file mode 100644 index 0000000..c7a8b9c --- /dev/null +++ b/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 +} \ No newline at end of file diff --git a/main.js b/main.js index 1a69262..a972626 100644 --- a/main.js +++ b/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'