123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289 |
- const api = require('../request/api');
- const http = require('../request/http.js');
- const storeKeys = require('./storageKeys');
- /**
- * 工具类
- */
- module.exports = {
- // 提示
- toast(text, time = 1500) {
- wx.showToast({
- title: text,
- icon: 'none',
- duration: time
- })
- },
- //重置缓存
- setStorageSync(key, value) {
- wx.setStorageSync(key, value)
- },
- //获取缓存
- getStorageSync(key) {
- try {
- let value = wx.getStorageSync(key) || "";
- return value;
- } catch (e) {
- return "";
- }
- },
- //删除缓存
- removeStorageSync(key) {
- wx.removeStorageSync(key);
- },
- // 防抖
- throttle: function (fn, gapTime) {
- if (gapTime == null || gapTime == undefined) {
- gapTime = 1000;
- }
- let _lastTime = null;
- return function () {
- let _nowTime = +new Date()
- if (_nowTime - _lastTime > gapTime || !_lastTime) {
- fn.apply(this, arguments);
- _lastTime = _nowTime;
- }
- }
- },
- //scene解码
- scene_decode(e) {
- if (e === undefined)
- return {};
- let scene = decodeURIComponent(e),
- params = scene.split(','),
- data = {};
- for (let i in params) {
- let val = params[i].split(':');
- val.length > 0 && val[0] && (data[val[0]] = val[1] || null)
- }
- return data;
- },
- //格式化日期格式 (用于兼容ios Date对象)
- format_date(time) {
- // 将xxxx-xx-xx的时间格式,转换为 xxxx/xx/xx的格式
- return time.replace(/\-/g, "/");
- },
- //对象转URL
- urlEncode(data) {
- var _result = [];
- for (var key in data) {
- var value = data[key];
- if (value.constructor == Array) {
- value.forEach(_value => {
- _result.push(key + "=" + _value);
- });
- } else {
- _result.push(key + '=' + value);
- }
- }
- return _result.join('&');
- },
- //遍历对象
- objForEach(obj, callback) {
- Object.keys(obj).forEach((key) => {
- callback(obj[key], key);
- });
- },
- //是否在数组内
- inArray(search, array) {
- for (var i in array) {
- if (array[i] == search) {
- return true;
- }
- }
- return false;
- },
- // canvas,文字,x,y,最大宽,行高,行数,字体样式
- canvasWraptitleText(canvas, text, x, y, maxWidth, lineHeight, maxRowNum, font) {
- if (typeof text != 'string' || typeof x != 'number' || typeof y != 'number') {
- return;
- }
- canvas.font = font;
- let arrText = text.split('');
- let line = '';
- let rowNum = 1
- for (let n = 0; n < arrText.length; n++) {
- let testLine = line + arrText[n];
- let metrics = canvas.measureText(testLine);
- let testWidth = metrics.width;
- if (testWidth > maxWidth && n > 0) {
- if (rowNum >= maxRowNum) {
- let arrLine = testLine.split('')
- arrLine.splice(-2)
- let newTestLine = arrLine.join("")
- newTestLine += "..."
- canvas.fillText(newTestLine, x, y);
- return
- }
- canvas.fillText(line, x, y);
- line = arrText[n];
- y += lineHeight;
- rowNum += 1
- } else {
- line = testLine;
- }
- }
- canvas.fillText(line, x, y);
- },
- //设定宽 设定高 图片本身宽 图片本身高
- getSXYWH(cW, cH, iW, iH) {
- let width = cW; //设定宽
- let height = cH; //设定高
- let w = iW; //图片本身宽
- let h = iH; //图片本身高
- let dw = width / w; //宽比例
- let dh = height / h; //高比例
- let sX; //裁剪偏移X
- let sY; //裁剪偏移Y
- let sW; //裁剪宽
- let sH; //裁剪高
- // 裁剪图片中间部分
- if (w > width && h > height || w < width && h < height) {
- if (dw > dh) {
- sX = 0;
- sY = (h - height / dw) / 2;
- sW = w
- sH = height / dw
- } else {
- sX = (w - width / dh) / 2;
- sY = 0;
- sW = width / dh
- sH = h
- }
- } else { // 拉伸图片
- if (w < width) {
- sX = 0
- sY = (h - height / dw) / 2;
- sW = w
- sH = height / dw
- } else {
- sX = (w - width / dh) / 2;
- sY = 0;
- sW = width / dh
- sH = h
- }
- }
- let returnData = {
- sX,
- sY,
- sW,
- sH
- };
- return returnData
- },
- //事件防抖
- throttle: function(fn, gapTime) {
- if (gapTime == null || gapTime == undefined) {gapTime = 1000;}
- let _lastTime = null;
- return function () {
- let _nowTime = + new Date()
- if (_nowTime - _lastTime > gapTime || !_lastTime) {
- fn.apply(this, arguments);
- _lastTime = _nowTime;
- }
- }
- },
- //禁止金额输入多个小数点
- money(param) {
- let num = param.toString(); //先转换成字符串类型
- if (num.indexOf('.') == 0) { //第一位就是 .
- num = '0' + num
- }
- num = num.replace(/[^\d.]/g, ""); //清除“数字”和“.”以外的字符
- num = num.replace(/\.{2,}/g, "."); //只保留第一个. 清除多余的
- num = num.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
- num = num.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3'); //只能输入两个小数
- if (num.indexOf(".") < 0 && num != "") {
- num = parseFloat(num);
- }
- return num
- },
- //获取当前时间
- formatTime(date,type){
- const year = date.getFullYear()
- const month = date.getMonth() + 1
- const day = date.getDate()
- const hour = date.getHours()
- const minute = date.getMinutes()
- const second = date.getSeconds()
- // 1: 2021-10-10 10:10:10
- let joinType = "/";
- if(type == 1){
- joinType = "-"
- }
- return [year, month, day].map(this.formatNumber).join(joinType) + ' ' + [hour, minute, second].map(this.formatNumber).join(':')
- },
- // 时间格式化输出 day--天 hours--时 minutes--分 seconds--秒
- dateForma(micro_second,type) {
- let second = Math.floor(micro_second / 1000);
- let value;
- switch(type) {
- case "day":
- value = Math.floor(second / 3600 / 24);
- break;
- case "hours":
- value = this.formatNumber(Math.floor(second / 3600 % 24));
- break;
- case "minutes":
- value = this.formatNumber(Math.floor(second / 60 % 60));
- break;
- case "seconds":
- value = this.formatNumber(Math.floor(second % 60));
- break;
- }
- return value;
- },
- newDateForma(micro_second,type) {
- let second = micro_second;
- let value;
- switch(type) {
- case "day":
- value = Math.floor(second / 3600 / 24);
- break;
- case "hours":
- value = this.formatNumber(Math.floor(second / 3600 % 24));
- break;
- case "minutes":
- value = this.formatNumber(Math.floor(second / 60 % 60));
- break;
- case "seconds":
- value = this.formatNumber(Math.floor(second % 60));
- break;
- }
- return value;
- },
- formatNumber(n){
- n = n.toString()
- return n[1] ? n : '0' + n
- },
- toDecimal2(x) {
- var f = parseFloat(x);
- if (isNaN(f)) {
- return "";
- }
- var f = Math.round(x*100)/100;
- var s = f.toString();
- var rs = s.indexOf('.');
- if (rs < 0) {
- rs = s.length;
- s += '.';
- }
- while (s.length <= rs + 2) {
- s += '0';
- }
- return s;
- }
- };
|