gassafety.js 5.17 KB
Newer Older
耿迪迪's avatar
耿迪迪 committed
1 2 3 4 5
/**
 * 通用js方法封装处理
 * Copyright (c) 2021 gassafety
 */

纪泽龙's avatar
纪泽龙 committed
6
const baseURL = process.env.VUE_APP_BASE_API;
耿迪迪's avatar
耿迪迪 committed
7 8 9

// 日期格式化
export function parseTime(time, pattern) {
纪泽龙's avatar
纪泽龙 committed
10 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
  if (arguments.length === 0 || !time) {
    return null;
  }
  const format = pattern || "{y}-{m}-{d} {h}:{i}:{s}";
  let date;
  if (typeof time === "object") {
    date = time;
  } else {
    if (typeof time === "string" && /^[0-9]+$/.test(time)) {
      time = parseInt(time);
    } else if (typeof time === "string") {
      time = time.replace(new RegExp(/-/gm), "/");
    }
    if (typeof time === "number" && time.toString().length === 10) {
      time = time * 1000;
    }
    date = new Date(time);
  }
  const formatObj = {
    y: date.getFullYear(),
    m: date.getMonth() + 1,
    d: date.getDate(),
    h: date.getHours(),
    i: date.getMinutes(),
    s: date.getSeconds(),
    a: date.getDay()
  };
  const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
    let value = formatObj[key];
    // Note: getDay() returns 0 on Sunday
    if (key === "a") {
      return ["日", "一", "二", "三", "四", "五", "六"][value];
    }
    if (result.length > 0 && value < 10) {
      value = "0" + value;
    }
    return value || 0;
  });
  return time_str;
耿迪迪's avatar
耿迪迪 committed
49 50 51 52
}

// 表单重置
export function resetForm(refName) {
纪泽龙's avatar
纪泽龙 committed
53 54 55
  if (this.$refs[refName]) {
    this.$refs[refName].resetFields();
  }
耿迪迪's avatar
耿迪迪 committed
56 57 58 59
}

// 添加日期范围
export function addDateRange(params, dateRange, propName) {
纪泽龙's avatar
纪泽龙 committed
60 61 62 63 64 65 66 67 68 69 70 71
  var search = params;
  search.params = {};
  if (null != dateRange && "" != dateRange) {
    if (typeof propName === "undefined") {
      search.params["beginTime"] = dateRange[0];
      search.params["endTime"] = dateRange[1];
    } else {
      search.params["begin" + propName] = dateRange[0];
      search.params["end" + propName] = dateRange[1];
    }
  }
  return search;
耿迪迪's avatar
耿迪迪 committed
72 73 74 75
}

// 回显数据字典
export function selectDictLabel(datas, value) {
纪泽龙's avatar
纪泽龙 committed
76 77 78 79 80 81 82 83
  var actions = [];
  Object.keys(datas).some(key => {
    if (datas[key].dictValue == "" + value) {
      actions.push(datas[key].dictLabel);
      return true;
    }
  });
  return actions.join("");
耿迪迪's avatar
耿迪迪 committed
84 85 86 87
}

// 回显数据字典(字符串数组)
export function selectDictLabels(datas, value, separator) {
纪泽龙's avatar
纪泽龙 committed
88 89 90 91 92 93 94 95 96 97 98
  var actions = [];
  var currentSeparator = undefined === separator ? "," : separator;
  var temp = value.split(currentSeparator);
  Object.keys(value.split(currentSeparator)).some(val => {
    Object.keys(datas).some(key => {
      if (datas[key].dictValue == "" + temp[val]) {
        actions.push(datas[key].dictLabel + currentSeparator);
      }
    });
  });
  return actions.join("").substring(0, actions.join("").length - 1);
耿迪迪's avatar
耿迪迪 committed
99 100 101 102
}

// 通用下载方法
export function download(fileName) {
纪泽龙's avatar
纪泽龙 committed
103 104 105 106 107 108
  window.location.href =
    baseURL +
    "/common/download?fileName=" +
    encodeURI(fileName) +
    "&delete=" +
    true;
耿迪迪's avatar
耿迪迪 committed
109 110 111 112
}

// 字符串格式化(%s )
export function sprintf(str) {
纪泽龙's avatar
纪泽龙 committed
113 114 115 116 117 118 119 120 121 122 123 124
  var args = arguments,
    flag = true,
    i = 1;
  str = str.replace(/%s/g, function() {
    var arg = args[i++];
    if (typeof arg === "undefined") {
      flag = false;
      return "";
    }
    return arg;
  });
  return flag ? str : "";
耿迪迪's avatar
耿迪迪 committed
125 126 127 128
}

// 转换字符串,undefined,null等转化为""
export function praseStrEmpty(str) {
纪泽龙's avatar
纪泽龙 committed
129 130 131 132
  if (!str || str == "undefined" || str == "null") {
    return "";
  }
  return str;
耿迪迪's avatar
耿迪迪 committed
133 134 135 136 137 138 139 140 141 142
}

/**
 * 构造树型结构数据
 * @param {*} data 数据源
 * @param {*} id id字段 默认 'id'
 * @param {*} parentId 父节点字段 默认 'parentId'
 * @param {*} children 孩子节点字段 默认 'children'
 */
export function handleTree(data, id, parentId, children) {
纪泽龙's avatar
纪泽龙 committed
143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183
  let config = {
    id: id || "id",
    parentId: parentId || "parentId",
    childrenList: children || "children"
  };

  var childrenListMap = {};
  var nodeIds = {};
  var tree = [];

  for (let d of data) {
    let parentId = d[config.parentId];
    if (childrenListMap[parentId] == null) {
      childrenListMap[parentId] = [];
    }
    nodeIds[d[config.id]] = d;
    childrenListMap[parentId].push(d);
  }

  for (let d of data) {
    let parentId = d[config.parentId];
    if (nodeIds[parentId] == null) {
      tree.push(d);
    }
  }

  for (let t of tree) {
    adaptToChildrenList(t);
  }

  function adaptToChildrenList(o) {
    if (childrenListMap[o[config.id]] !== null) {
      o[config.childrenList] = childrenListMap[o[config.id]];
    }
    if (o[config.childrenList]) {
      for (let c of o[config.childrenList]) {
        adaptToChildrenList(c);
      }
    }
  }
  return tree;
耿迪迪's avatar
耿迪迪 committed
184
}
纪泽龙's avatar
纪泽龙 committed
185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218
// 二维数组转字符串
export const getString = objarr => {
  const typeNO = objarr.length;
  let tree = "[";
  for (var i = 0; i < typeNO; i++) {
    tree += "[";
    tree += "'" + objarr[i][0] + "',";
    tree += "'" + objarr[i][1] + "'";
    tree += "]";
    if (i < typeNO - 1) {
      tree += ",";
    }
  }
  tree += "]";
  return tree;
};

// 二维数组字符串转回数组
export const getArray = str => {
  let newArr = str.slice(1, str.length - 1);
  newArr = newArr.split("],")
  return newArr.map((item, index, own) => {
    let str = "",
      arr = [];
    str = item.replace(/\[/g, "");
    str = str.replace(/]/g, "");
    arr = str.split(",");
    arr = arr.map(item => {
      return Number(item);
    });
    return arr;
  });
  
};