dataFilter.js 5.15 KB

var pinyin = require("chinese-to-pinyin");
var moment =  require('moment');
/**
 * 按拼音第一个字母排序
 * @param {需要排序的数据表} arr
 * 数据按name字段排序 (需注意)
 */
export function sortArr(arr, renderType) {
  if (arr.length) {
    let list = [];
    for (let i = 0, l = arr.length; i < l; i++) {
      let ltr = arr[i][renderType[0]];
      let letter = pinyin(ltr, {
        noTone: true,
        filterChinese: true
      }).substr(0, 1).toUpperCase();
      if (!/[a-z]/i.test(letter)) letter = '#';
      if (!(letter in list)) {
        list[letter] = [];
      }
      list[letter].push(arr[i]);
    }
    let result = [];
    for (var key in list) {
      result.push({
        letter: key,
        list: list[key]
      });
    }
    result.sort(function (x, y) {
      return x.letter.charCodeAt(0) - y.letter.charCodeAt(0);
    });
    if (result.length > 0 && result[0].letter === '#') {
      var last_arr = result[0];
      result.splice(0, 1);
      result.push(last_arr);
    }

    return result;
  } else {
    return []
  }
}
export function dataFilter(arr, renderType, keywords) {
   let ar = [];
   for (let i = 0, l = arr.length; i < l; i++) {
     let pin = pinyin(arr[i][renderType[0]], {
       noTone: true,
       filterChinese: true
     }).replace(/\s*/g, '');
     let key = pinyin(keywords, {
       noTone: true,
       filterChinese: true
     }).replace(/\s*/g, '')
     if (pin.toUpperCase().indexOf(key.toUpperCase()) >= 0) {
       ar.push(arr[i]);
     }
   }
   return ar;

}
/*
  url参数解析,返回一个参数对象
*/
export function urlGetParams(url) {
   let json = {};
   if(url) {
    let url1 = window.decodeURI(url).split('?').pop();
    let url2 = url1.split('&');
    if(url2.length>0){
      for(let i in url2){
        let item = url2[i].split('=');
        json[item[0]] = item[1];
      }
    }
   }
   return json;

}
/*
  计算年龄
*/
export function getBirthdayAge (dateString) {
  let today = new Date();
  // let aDate = dateString.split('-');
  // let birthDate = new Date(aDate[0] + '-' + (parseInt(aDate[1]) < 10 ? '0' + aDate[1] : aDate[1]) + (parseInt(aDate[2]) < 10 ? '-0' + aDate[2] : '-'+aDate[2]));
  let birthDate = new Date(moment(dateString).format("YYYY-MM-DD"));
  let age = Number(today.getFullYear()) - Number(birthDate.getFullYear());
  let m = today.getMonth() - birthDate.getMonth();
  if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
    age--;
  }
  return age ;
}
/*
  根据key值为value 在计划书中查出对应的计划书
*/
export function getPlanInListWithCode (key,value,list) {
  let [minekey,minevalue,AllList]= [key,value,list];
  let targetList = {};
  for(let i in AllList){
    if(String(AllList[i][minekey]) === String(minevalue)){
      targetList = AllList[i];
      break;
    }
  }
  return targetList ;
}
export let filterDate = {

  'YY_MM_DD': ()=> {
    // 以YY-MM-DD格式返回当前日期
    let date = new Date();
    return date.getFullYear() +'-'+ (date.getMonth()+1) +'-'+date.getDate();
  },
  
  'FromDateToTarget': (num)=>{
    //从当前日期算 距离 num年前 是那一年
    let date = new Date();
    let date2 = date.getFullYear();
    if(num){
      return date2-num-1;
    }else{
      return date2;
    }
  }
}
/*
判断string1,string2时候同时存在arry数组中
*/
export function isContain(string1,string2,arry){
  if(arry.indexOf(string1) > -1 && arry.indexOf(string2) > -1) {
    return true   
  }else{
    return false
  }
  return false
}

export let arrayDeal = {
  // 交集
  'Intersect': (a,b)=> {
    let BB = new Set(b);
    return a.filter(x => BB.has(x));
  },
   // 差集
  'Minus': (a,b)=> {
    let BB = new Set(b);
    return a.filter(x => !BB.has(x));
  },
  // 补集
  'Complement': (a,b)=> {
    let AA = new Set(a);
    let BB = new Set(b);
    return [...a.filter(x => !BB.has(x)), ...b.filter(x => !AA.has(x))];
  },
  // 并集
  'UnionSet': (a,b)=> {
    
    return Array.from(new Set([...a, ...b]));
  }
}

export function StandardFormat (str){
    //将 ****-*-* 转成标准的 ****-**-**
    let string1 = String(str);
    if (string1){
      let arr1 = string1.split("-");
      if (arr1[1].length==1){
        arr1[1] = "0"+arr1[1];
      }
      if (arr1[2].length==1){
        arr1[2] = "0"+arr1[2];
      }
      return arr1.join("-");
    }
    return string1;
  }
//从数组对象中找出特定你的数组
export function getTargetList (param,list){
  let key = param;
  let AllList = list;
  let newList=[];
  if(AllList.length>0){
    for(let ii in AllList){
      if(AllList[ii].riskLabels){
        if(AllList[ii].riskLabels.indexOf(key) != -1){
          newList.push(AllList[ii]);
        }
      }
      
    }

  }
  return newList;
  }
//获取职位
export function getCardName(id){
  let roleid = String(id);
  switch (roleid) {
    case "2":
      return "客户经理";
      break;
    case "3":
      return "督训";
      break;
    default:
      break;
  }

}
//获取字符串的字符长度
export function GetLength(str){
  let str1 = String(str);
  if(str1 != ""){
    return str1.replace(/[\u0391-\uFFE5]/g,"aa").length;   //先把中文替换成两个字节的英文,在计算长度 
  }
  return 0;
}