index.js 8.02 KB
// import parseTime, formatTime and set to filter
export { parseTime, formatTime } from '@/utils'
let moment = require("moment");
/**
 * Show plural label if time is plural number
 * @param {number} time
 * @param {string} label
 * @return {string}
 */
function pluralize(time, label) {
  if (time === 1) {
    return time + label
  }
  return time + label + 's'
}

/**
 * @param {number} time
 */
export function timeAgo(time) {
  const between = Date.now() / 1000 - Number(time)
  if (between < 3600) {
    return pluralize(~~(between / 60), ' minute')
  } else if (between < 86400) {
    return pluralize(~~(between / 3600), ' hour')
  } else {
    return pluralize(~~(between / 86400), ' day')
  }
}

/**
 * Number formatting
 * like 10000 => 10k
 * @param {number} num
 * @param {number} digits
 */
export function numberFormatter(num, digits) {
  const si = [
    { value: 1E18, symbol: 'E' },
    { value: 1E15, symbol: 'P' },
    { value: 1E12, symbol: 'T' },
    { value: 1E9, symbol: 'G' },
    { value: 1E6, symbol: 'M' },
    { value: 1E3, symbol: 'k' }
  ]
  for (let i = 0; i < si.length; i++) {
    if (num >= si[i].value) {
      return (num / si[i].value + 0.1).toFixed(digits).replace(/\.0+$|(\.[0-9]*[1-9])0+$/, '$1') + si[i].symbol
    }
  }
  return num.toString()
}

/**
 * 10000 => "10,000"
 * @param {number} num
 */
export function toThousandFilter(num) {
  return (+num || 0).toString().replace(/^-?\d+/g, m => m.replace(/(?=(?!\b)(\d{3})+$)/g, ','))
}

/**
 * 分转元
 * @param {number} num
 */
export function fen2Yuan(num) {
  if(num == undefined || num == null){
    return 0;
  }
  num = num / 100;
  return (+num || 0).toString().replace(/^-?\d+/g, m => m.replace(/(?=(?!\b)(\d{3})+$)/g, ','))
}

/**
 * Upper case first char
 * @param {String} string
 */
export function uppercaseFirst(string) {
  return string.charAt(0).toUpperCase() + string.slice(1)
}

/**
 * 将制定格式的时间字符串转换成long
 * <li>0-yyyyMMdd</li>
 * <li>1-yyyy-MM-dd</li>
 * <li>2-HHmmss</li>
 * <li>3-HH:mm:ss</li>
 * <li>4-HHmmssSSS</li>
 * <li>5-HH:mm:ss.SSS</li>
 * <li>6-yyyyMMddHHmmss</li>
 * <li>7-yyyy-MM-dd HH:mm:ss</li>
 * <li>8-yyyyMMddHHmmssSSS</li>
 * <li>9-yyyy-MM-dd HH:mm:ss.SSS</li>
 *            <li>10-yyyy/MM/dd HH:mm</li>
 *            <li>11-yyyy/MM/dd HH:mm:ss</li>
 * </ul>
 */
export  function string2Long(str, format) {
  if (str == null || str == "") {
    return "";
  }
  return date2Long(string2Date(str, format));
}

export  function date2Long (date) {
  return date.getTime();
}

/**
 * 将字符串转化为相应时间
 *
 * @param {}
 *            dateStr 时间字符串
 * @param {}
 *            formatType 指定格式:
 *            <ul>
 *            <li>0-yyyyMMdd</li>
 *            <li>1-yyyy-MM-dd</li>
 *            <li>2-HHmmss</li>
 *            <li>3-HH:mm:ss</li>
 *            <li>4-HHmmssSSS</li>
 *            <li>5-HH:mm:ss.SSS</li>
 *            <li>6-yyyyMMddHHmmss</li>
 *            <li>7-yyyy-MM-dd HH:mm:ss</li>
 *            <li>8-yyyyMMddHHmmssSSS</li>
 *            <li>9-yyyy-MM-dd HH:mm:ss.SSS</li>
 *            <li>10-yyyy/MM/dd HH:mm</li>
 *            <li>11-yyyy/MM/dd HH:mm:ss</li>

 *            </ul>
 * @return 解析后的Date对象
 */
export  function string2Date(date,formatType) {
  if(date == null || date == undefined){
    return "";
  }
  let dateTime;
  switch (formatType) {
    case 0 :
      dateTime= moment(date).format("YYYYMMDD");
      break;
    case 1 :
      dateTime= moment(date).format("YYYY-MM-DD");
      break;
    case 2 :
      dateTime= moment(date).format("HHmmss");
      break;
    case 3 :
      dateTime= moment(date).format("HH:mm:ss");
      break;
    case 4 :
      dateTime= moment(date).format("HHmmssSSS");
      break;
    case 5 :
      dateTime= moment(date).format("HH:mm:ss.SSS");
      break;
    case 6 :
      dateTime= moment(date).format("YYYY-MM-DDHHmmss");
      break;
    case 7 :
      dateTime= moment(date).format("YYYY-MM-DD HH:mm:ss");

      break;
    case 8 :
      dateTime= moment(date).format("yyyyMMddHHmmssSSS");
      break;
    case 9 :
      dateTime= moment(date).format("yyyy-MM-dd HH:mm:ss.SSS");
      break;
    case 10 ://yyyy/MM/dd HH:mm
      dateTime= moment(date).format("yyyy/MM/dd HH:mm");
      break;
    case 11 ://yyyy/MM/dd HH:mm:ss
      dateTime= moment(date).format("yyyy/MM/dd HH:mm:ss");
      break;
  }
    return dateTime;
}

/**类型转换*/
export function busTypeFomatter(value){
  //业务类型: 1:收入 2:退款 3:支出
  if(value == 1){
    return '交易';
  }else if(value == 2){
    return '退款';
  }else if(value == 3){
    return '支出';
  }else{
    return '未知';
  }
};
export function payTypeFomatter(value){
  //业务类型: 1:收入 2:退款 3:支出
  if(value == 1){
    return '支付宝';
  }else if(value == 2){
    return '微信';
  }else if(value == 3){
    return '银联';
  }else if(value == 4){
    return '服务号';
  }else{
    return '未知';
  }
};
export function payOrderTypeFomatter(row,value){
  //101:停车付款单,102:停车预付单,103:停车补缴单,104:共享车位;201:余额充值单,202:押金充值;301:会员卡购买单,302:会员卡续费
  if(value == 101){
    return '交易-临停支付';
  }else if(value == 102){
    return '交易-停车预付';
  }else if(value == 103){
    return '交易-停车补缴';
  }else if(value == 104){
    return '交易-共享车位预定';
  }else if(value == 201){
    if(row.terminalSource!='' ||row.terminalSource!=null ||row.terminalSource!=undefined||row.terminalSource!='null'){
      if(row.terminalSource == 1){
        return '交易-余额充值';
      } else if(row.terminalSource == 2){
        return '交易-收费员充值';
      }else {
        return '交易-余额充值';
      }
    }
    else{
      return '交易-余额充值';
    }

  }else if(value == 202){
    return '交易-押金充值';
  }else if(value == 301){
    return '交易-会员卡购买';
  }else if(value == 302){
    return '交易-会员卡续费';
  }else{
    return '未知';
  }
};

/**
 * 订单状态
 * @param row
 * @param value
 * @returns {string}
 */
export function inOutStateFormatter(row, value) {

  let orderState = row.orderState;
  //停车状态 10:在场 ,20:离场,30:预订
  let parkState = row.parkState;
  if (null == parkState) {
    if (null != row.parkOutTime) {
      parkState = 20;
    } else {
      parkState = 10;
    }
  }

  if (parkState == 10) {
    return "在场";
  }

  if (parkState == 20) {

    if (orderState == 52) {
      return "欠费";
    }else if (orderState == 53) {
      return "欠费已补缴";
    } else {
      return "离场";
    }
  }
};

/**
 * 停车时长
 * @param row
 * @param value
 * @returns {*}
 */
export function parkingDurationFormatter (row, value) {
  //
  let parkState = row.parkState;
  if (null == parkState) {
    if (null != row.parkOutTime) {
      parkState = 20;
    } else {
      parkState = 10;
    }
  }

  let inTime = row.parkInTime;
  if (parkState == 10) {
    let thisTime = new Date().getTime();
    let parkDuration = (thisTime - inTime) / 1000;
    return formatSeconds(parkDuration);
  }


  if (value == null) {
    return "";
  } else {
    return formatSeconds(value);
  }
};
function formatSeconds(value) {
  let theTime = parseInt(value);// 秒
  let theTime1 = 0;// 分
  let theTime2 = 0;// 小时
  let theTime3 = 0;//天
  if (theTime < 60) {
    return theTime + '秒';
  }
  if (theTime > 60) {
    theTime1 = parseInt(theTime / 60);
    theTime = parseInt(theTime % 60);


  }

  if (theTime1 > 60) {
    theTime2 = parseInt(theTime1 / 60);
    theTime1 = parseInt(theTime1 % 60);
  }

  if (theTime2 > 24) {
    theTime3 = parseInt(theTime2 / 24);
    theTime2 = parseInt(theTime2 % 24);
  }

  let result = '';
  if (theTime1 == 0 && theTime2 == 0 && theTime3 == 0) {
    result = parseInt(theTime) + "秒"
  }

  if (theTime1 > 0) {
    result = "" + parseInt(theTime1) + "分钟" + result;
  }
  if (theTime2 > 0) {
    result = "" + parseInt(theTime2) + "小时" + result;
  }

  if (theTime3 > 0) {
    result = "" + parseInt(theTime3) + "天" + result;
  }
  return result;
};