util.js 8.1 KB
var uri = require('uri.js')

function formatTime(date, type, connect) {
  var year = date.getFullYear()
  var month = date.getMonth() + 1
  var day = date.getDate()

  var hour = date.getHours()
  var minute = date.getMinutes()
  var second = date.getSeconds()
  if (type == 1) {
    if (connect) {
      return [year, month, day].map(formatNumber).join(connect)
    } else {
      return [year, month, day].map(formatNumber).join('/')
    }
  } else if (type == 2) {
    return [month, day].map(formatNumber).join('/')
  } else {
    return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
  }

}

function formatNumber(n) {
  n = n.toString()
  return n[1] ? n : '0' + n
}

//时间戳转为时间
function unixtoTime(ns, format = '') {
  var result;
  var time = new Date(ns * 1000);
  //result=format || 'YYYY年MM月DD日 HH时II分SS秒 WW';
  result = format || 'YYYY年MM月DD日 HH时II分SS秒';
  //console.log(format);
  result = result.toUpperCase();
  result = result.replace('YYYY', time.getFullYear());
  var m = time.getMonth() + 1;
  result = result.replace('MM', m > 9 ? m : "0" + m);
  var d = time.getDate();
  result = result.replace('DD', d > 9 ? d : '0' + d);
  var hh = time.getHours();
  result = result.replace('HH', hh > 9 ? hh : '0' + hh);
  var ii = time.getMinutes();
  result = result.replace('II', ii > 9 ? ii : '0' + ii);
  var ss = time.getSeconds();
  result = result.replace('SS', ss > 9 ? ss : '0' + ss);
  var week;
  switch (time.getDay()) {
    case 0:
      week = "日";
      break
    case 1:
      week = "一";
      break
    case 2:
      week = "二";
      break
    case 3:
      week = "三";
      break
    case 4:
      week = "四";
      break
    case 5:
      week = "五";
      break
    case 6:
      week = "六";
      break
  }
  result = result.replace('WW', week);
  if (format.indexOf('DAY') > 0) {
    // 获取当天 0 点的时间戳
    var timeStamp = new Date(new Date().setHours(0, 0, 0, 0)) / 1000;

    var day1 = timeStamp + 86400//今天结束
    var day2 = day1 + 86400//明天结束

    //console.log('ns<day.getTime()',timeStamp,ns,day1,day2)

    if (ns >= timeStamp && ns < day1) {
      result = result.replace('DAY', '今天');
    } else {
      if (ns >= day1 && ns < day2) {
        result = result.replace('DAY', '明天');
      } else {
        result = result.replace('DAY', '');
      }
    }
  }
  if (format.indexOf('`') > -1) {
    result = result.replace(/`(.*)\/(.*)`/ig, function ($0, $1, $2) {
      return $1 || $2;
    });
  }
  return result;
}

//时间转为时间戳
function timetouUnix(dasr, connect) {
  if (connect) {
    var newstr = dasr.replace(/-/g, connect);
  } else {
    var newstr = dasr.replace(/-/g, '/');
  }

  var date = new Date(newstr);
  var time_str = date.getTime().toString();
  return time_str.substr(0, 10);
}

module.exports = {
  formatTime: formatTime,
  unixtoTime: unixtoTime,
  timetouUnix: timetouUnix,
  cgi: function (act) {
    return uri.HOST__LINE + act   //正式
    //return uri.HOST__TEST+act     //测试
  },
  wxApiIsUse: function (api) {
    if (wx.canIUse(api)) {
      return true;
    } else {
      this.alert('当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。');
    }
  },
  openXcx: function (data) {
    if (this.wxApiIsUse('navigateToMiniProgram')) {
      wx.navigateToMiniProgram({
        appId: data.appId,
        path: data.path,
        extraData: {
          foo: 'bar'
        },
        envVersion: 'trial',
        //envVersion: '',
        success(res) {
          // 打开成功
        }
      })
    }
  },
  loading: function (flag) {
    if (flag == 'clear' || flag == "clean") {
      wx.hideNavigationBarLoading();
      return;
    }
    wx.showNavigationBarLoading();
  },
  alert: function (msg, success, cancel, title) {
    wx.showModal({
      title: title ? title : "提示信息",
      content: msg,
      showCancel: typeof cancel == 'undefined' ? false : true,
      success: function (res) {
        if (res.confirm) {
          if (success) success();
        } else {
          if (cancel) cancel();
        }
      }
    });
  },
  toast: function (title, icon = 'success') {
    wx.showToast({
      title: title,
      icon: icon
    })
  },
  showLoading: function (title) {
    wx.showLoading({
      title: '加载中',
    })

  },
  cache: function (key, value) {
    if (value) {
      wx.setStorageSync(key, value);
    }
    return wx.getStorageSync(key);
  },
  remove: function (key) {
    if (key) {
      wx.removeStorage({key: key})
    }
  },
  image: function (id, width = "") {
    var url = this.cgi(uri.CGI__DOWNLOAD + '/id/' + id);
    if (width) {
      url += '/width/' + width;
    }
    return url;
  },

  avatar: function (id, t = 'pu') {
    return this.cgi(uri.CGI__AVATAR + '/' + t + '/' + id);
  },
  trim: function (str) {
    return str.replace(/^([ ]+)/, "").replace(/([ ]+)$/, "");
  },
  clear: function (str) {//去除html标签
    return this.trim(str.replace(/<[^>]+>/ig, ""));
  },
  val: function (e, key = '') {
    if (key != '') return e.detail.value[key] || '';
    return e.detail.value;
  },
  attr: function (e, key = '') {
    if (!key) {
      return e.currentTarget.dataset
    }
    return e.currentTarget.dataset[key];
  },
  extend: function (destination, source) {
    for (var property in source) {
      destination[property] = source[property];
    }
    return destination;
  },
  compare: function (property) {
    return function (a, b) {
      var value1 = a[property];
      var value2 = b[property];
      return value1 - value2;
    }
  },
  getJsonLength: function (jsonData) {
    var jsonLength = 0;
    for (var item in jsonData) {
      jsonLength++;
    }
    return jsonLength;
  },
  testPhone: function (phone) {
    if (!/^1[3-9][0-9]{9}$/.test(phone)) {
      this.alert("请输入正确的电话号码");
      return false;
    }
  },
  setBarTitle: function (title) {
    wx.setNavigationBarTitle({
      title: title
    })
  },
  //
  isEOne: function (arr, value) {
    for (var i = 0, vlen = arr.length; i < vlen; i++) {
      if (arr[i] == value) {
        return i;
      }
    }
    return -1;
  },
  linkTo: function (url, sellerid, code) {
    var path = 'pages/menu/' + url;
    if (code != '') {
      path += '?sellerid=' + sellerid + '&code=' + code
    }
    if (sellerid != '') {
      path += '?sellerid=' + sellerid
    }
    console.log(path)
    wx.navigateToMiniProgram({
      appId: 'wx52646daaa3f42a4f',
      path: path,
      envVersion: 'release',
      success: function (res) {
        console.log(path)
      }
    })
  },
  setting: function () {
    if (wx.canIUse('openSetting') == true) {
      wx.openSetting({
        success: function (res) {
          console.log(res.authSetting)
          return res.authSetting
        }
      })
    }
  },
  //获取设备信息
  getsystem: function () {
    try {
      var res = wx.getSystemInfoSync()
      return res;
    } catch (e) {
      return false
    }
  },
  http_build_query(obj, url = '') {
    let ps = []
    for (let i in obj) {
      if (typeof obj[i] == 'undefined' || obj[i] == null || obj[i] === false) continue;
      ps.push(i + '=' + obj[i].toString())
    }
    ps = ps.join('&');
    if (!url) {
      return ps;
    }
    if(ps){
      url += (url.indexOf('?') > -1 ? '&' : '?') + ps;
    }
    return url;
  },
  /**
   * @param edata is object: ename,edata
   */
  elog(edata,ename='EVENT_NAME') {
    let key='EVENT_LOG_CACHE'
    let ps=getCurrentPages();
    console.log(ps)
    let page=ps[ps.length-1]
    edata=edata?edata:{}
    edata.curPage={
      path:page.route,
      options:page.options,
    }
    let eobj={
      ename:ename,
      edata:edata,
      page:this.http_build_query(page.options,page.route),
      time:parseInt(new Date()/1000),
    }
    wx.getStorage({
      key:key,
      success:res=>{
        let data=res.data||[]
        data.push(eobj)
        wx.setStorage({
          key:key,
          data:data,
        })
      },
      fail:res=>{
        let data=[eobj]
        wx.setStorage({
          key:key,
          data:data,
        })
      },
    })
  },
}