utils.js 2.91 KB
Newer Older
1
import moment from 'moment';
ddcat1115's avatar
ddcat1115 committed
2 3 4
import cloneDeep from 'lodash/cloneDeep';
import navData from '../common/nav';

5

偏右's avatar
偏右 committed
6
export function fixedZero(val) {
7 8 9
  return val * 1 < 10 ? `0${val}` : val;
}

偏右's avatar
偏右 committed
10
export function getTimeDistance(type) {
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
  const now = new Date();
  const oneDay = 1000 * 60 * 60 * 24;

  if (type === 'today') {
    now.setHours(0);
    now.setMinutes(0);
    now.setSeconds(0);
    return [moment(now), moment(now.getTime() + (oneDay - 1000))];
  }

  if (type === 'week') {
    let day = now.getDay();
    now.setHours(0);
    now.setMinutes(0);
    now.setSeconds(0);

    if (day === 0) {
      day = 6;
    } else {
      day -= 1;
    }

    const beginTime = now.getTime() - (day * oneDay);

    return [moment(beginTime), moment(beginTime + ((7 * oneDay) - 1000))];
  }

  if (type === 'month') {
    const year = now.getFullYear();
    const month = now.getMonth();
    const nextDate = moment(now).add(1, 'months');
    const nextYear = nextDate.year();
    const nextMonth = nextDate.month();

    return [moment(`${year}-${fixedZero(month + 1)}-01 00:00:00`), moment(new Date(`${nextYear}-${fixedZero(nextMonth + 1)}-01 00:00:00`).getTime() - 1000)];
  }

  if (type === 'year') {
    const year = now.getFullYear();

    return [moment(`${year}-01-01 00:00:00`), moment(`${year}-12-31 23:59:59`)];
  }
}
ddcat1115's avatar
ddcat1115 committed
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81

function getPlainNode(nodeList, parentPath = '') {
  const arr = [];
  nodeList.forEach((node) => {
    const item = node;
    item.path = `${parentPath}/${item.path || ''}`.replace(/\/+/g, '/');
    item.exact = true;
    if (item.children && !item.component) {
      arr.push(...getPlainNode(item.children, item.path));
    } else {
      if (item.children && item.component) {
        item.exact = false;
      }
      arr.push(item);
    }
  });
  return arr;
}

export function getRouteData(path) {
  if (!navData.some(item => item.layout === path) ||
      !(navData.filter(item => item.layout === path)[0].children)) {
    return null;
  }
  const dataList = cloneDeep(navData.filter(item => item.layout === path)[0]);
  const nodeList = getPlainNode(dataList.children);
  return nodeList;
}
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107

export function digitUppercase(n) {
  const fraction = ['θ§’', 'εˆ†'];
  const digit = ['ι›Ά', 'ε£Ή', 'θ΄°', '叁', '肆', '伍', '陆', 'ζŸ’', '捌', 'ηŽ–'];
  const unit = [
    ['ε…ƒ', 'δΈ‡', 'δΊΏ'],
    ['', 'ζ‹Ύ', 'δ½°', '仟'],
  ];
  let num = Math.abs(n);
  let s = '';
  fraction.forEach((item, index) => {
    s += (digit[Math.floor(num * 10 * (10 ** index)) % 10] + item).replace(/ι›Ά./, '');
  });
  s = s || 'ζ•΄';
  num = Math.floor(num);
  for (let i = 0; i < unit[0].length && num > 0; i += 1) {
    let p = '';
    for (let j = 0; j < unit[1].length && num > 0; j += 1) {
      p = digit[num % 10] + unit[1][j] + p;
      num = Math.floor(num / 10);
    }
    s = p.replace(/(ι›Ά.)*ι›Ά$/, '').replace(/^$/, 'ι›Ά') + unit[0][i] + s;
  }

  return s.replace(/(ι›Ά.)*ι›Άε…ƒ/, 'ε…ƒ').replace(/(ι›Ά.)+/g, 'ι›Ά').replace(/^ζ•΄$/, 'ι›Άε…ƒζ•΄');
}