123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 |
- const util = {
- getStorageSync: (key) => {/*由于wx.getStorageSync有一定概率取不到值,若取不到再取一次*/
- let value = wx.getStorageSync(key);
- if (!value) {
- value = wx.getStorageSync(key);
- }
- return value;
- },
- promisify: (api) => {/*wx api使用转成Promise形式*/
- return (options, ...params) => {
- return new Promise((resolve, reject) => {
- const extras = {
- success: resolve,
- fail: reject
- }
- api({ ...options, ...extras }, ...params)
- })
- }
- },
- filterEmoji: (s) => {/*过滤表情*/
- if (s) {
- return s.replace(/\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g, '');
- }
- return '';
- },
- validator: { /*校验字段合法性rule*/
- checkMobile: (s) => { /*校验手机号格式是否正确*/
- if (s) {
- s = s.toString().trim();
- var rule = /^\d{3,20}$/;
- return rule.test(s);
- }
- return false;
- },
- checkEmail: (s) => { /*校验邮箱格式是否正确*/
- if (s) {
- s = s.toString().trim();
- var rule = /^([0-9A-Za-z\-_\.]+)@([0-9a-z]+\.[a-z]{2,3}(\.[a-z]{2})?)$/g;
- return rule.test(s);
- }
- return false;
- },
- checkPwd: (s) => { /*校验登录密码格式是否正确*/
- if (s) {
- s = s.toString().trim();
- var rule = /^(?=.*[a-zA-Z]+)(?=.*[0-9]+)[a-zA-Z0-9]{8,16}$/;
- return rule.test(s);
- }
- return false;
- },
- checkCode: (s) => { /*校验短信或邮箱验证码格式是否正确*/
- if (s) {
- s = s.toString().trim();
- var rule = /^\d{6}$/;
- return rule.test(s);
- }
- return false;
- },
- checkImgCode: (s) => { /*校验图片验证码格式是否正确*/
- if (s) {
- s = s.toString().trim();
- var rule = /^[a-zA-Z]{4}$/;
- return rule.test(s);
- }
- return false;
- },
- checkNickname: (s) => { /*校验昵称格式是否正确*/
- if (s) {
- s = s.toString().trim();
- var rule = /^[A-Za-z0-9\u4e00-\u9fa5]{2,20}$/;
- return rule.test(s);
- }
- return false;
- },
- },
- deepClone: (obj) => {/*深度克隆对象*/
- if (null === obj || 'object' !== typeof obj) {
- return obj;
- }
- let clone;
- if (obj instanceof Date) {
- clone = new Date();
- clone.setTime(obj.getTime());
- return clone;
- }
- if (obj instanceof Array) {
- clone = [];
- let i, n = obj.length;
- for (i = 0; i < n; i++) {
- clone[i] = util.deepClone(obj[i]);
- }
- return clone;
- }
- if (obj instanceof Object) {
- clone = {};
- for (let key in obj) {
- if (obj.hasOwnProperty(key)) {
- clone[key] = util.deepClone(obj[key]);
- }
- }
- return clone;
- }
- throw new Error(`Unable to clone obj! Its type isn't supported.`);
- },
- arrayRemove: (val, arr) => {/*删除数组内某个元素*/
- if (!arr || !Array.isArray(arr)) {
- return;
- }
- arr.forEach((v, i, a) => {
- if (val === v) {
- a.splice(i, 1);
- }
- });
- },
- cstr: (s) => {/*处理null、undefined或NaN字符串*/
- if (s) {
- return s.toString();
- } else {
- return '';
- }
- },
- formatTimeCount: (t) => {/*格式化时间戳差*/
- if (t > 0) {
- let h = Math.floor(t / 60 / 60 % 24);
- if (h < 10) {
- h = `0${h}`;
- }
- let m = Math.floor(t / 60 % 60);
- if (m < 10) {
- m = `0${m}`;
- }
- let s = Math.floor(t % 60);
- if (s < 10) {
- s = `0${s}`;
- }
- return `${h}:${m}:${s}`;
- }
- return '';
- },
- formatTimeStr: (t) => {
- if (t) {
- t = parseInt(t);
- let time = new Date(t);
- let year = time.getFullYear();
- let month = time.getMonth() + 1;
- if (month < 10) {
- month = `0${month}`;
- }
- let date = time.getDate();
- if (date < 10) {
- date = `0${date}`;
- }
- let hour = time.getHours();
- if (hour < 10) {
- hour = `0${hour}`;
- }
- let minute = time.getMinutes();
- if (minute < 10) {
- minute = `0${minute}`;
- }
- let second = time.getSeconds();
- if (second < 10) {
- second = `0${second}`;
- }
- return `${year}-${month}-${date}`;
- }
- return '';
- },
- money: (m, c, w) => { /*m:金额;c:保留小数位数,只能取值0,1,2;w:1返回整个金额,2返回整数部分,3返回小数部分*/
- if (c !== 0 && c !== 1 && c !== 2) {
- console.log('传入保留小数位数参数错误');
- return '';
- }
- if (w !== 1 && w !== 2 && w !== 3) {
- console.log('传入返回类型参数错误');
- return '';
- }
- if (0 === m) { /*由于0=false,需特殊处理*/
- return deal('0', '');
- } else {
- if (!m || isNaN(m)) {
- return '';
- }
- m = m.toString();
- if (-1 === m.indexOf('.')) {
- return deal(m, '');
- } else {
- var s_arr = m.split('.');
- return deal(s_arr[0], s_arr[1]);
- }
- }
- function deal(p, f) { /*p为整数部分*/
- if (0 === c) {
- if (1 === w) {
- return p;
- } else if (2 === w) {
- return p;
- } else if (3 === w) {
- return '';
- }
- } else if (1 === c) {
- if (0 === f.length) {
- f = '0';
- } else if (f.length >= 2) {
- f = f.substring(0, 1);
- }
- if (1 === w) {
- return p + '.' + f;
- } else if (2 === w) {
- return p;
- } else if (3 === w) {
- return f;
- }
- } else if (2 === c) {
- if (0 === f.length) {
- f = '00';
- } else if (1 === f.length) {
- f = f + '0';
- } else if (f.length >= 3) {
- f = f.substring(0, 2);
- }
- if (1 === w) {
- return p + '.' + f;
- } else if (2 === w) {
- return p;
- } else if (3 === w) {
- return f;
- }
- }
- }
- },
- /**
- * 函数防抖(只执行最后一次点击)
- */
- debounce: (fn, delay) => {
- let timer = null;
- delay = delay || 300;
- return (...args) => {
- clearTimeout(timer);
- timer = setTimeout(() => {
- fn.apply(this, args);
- }, delay);
- };
- },
- /**
- * 函数节流
- */
- throttle: (fn, delay) => {
- let last = Date.now();
- delay = delay || 300;
- return (...args) => {
- let now = Date.now();
- if (now - last >= delay) {
- last = now;
- fn.apply(this, args);
- }
- };
- }
- };
- module.exports = util;
|