403 lines
		
	
	
		
			8.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
		
			
		
	
	
			403 lines
		
	
	
		
			8.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
| 
								 | 
							
								import { ID_NUMBER } from "../regular";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 计算序号
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function serialNumber(pagination, index) {
							 | 
						||
| 
								 | 
							
								  return (pagination.current - 1) * pagination.pageSize + (index + 1);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 字符串数组转数组
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function toArrayString(value) {
							 | 
						||
| 
								 | 
							
								  // eslint-disable-next-line no-eval
							 | 
						||
| 
								 | 
							
								  return value ? eval(value).map(String) : [];
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 判断文件后缀名是否符合
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function interceptTheSuffix(name, suffix) {
							 | 
						||
| 
								 | 
							
								  return (
							 | 
						||
| 
								 | 
							
								    name.substring(name.lastIndexOf("."), name.length).toLowerCase()
							 | 
						||
| 
								 | 
							
								    === suffix.toLowerCase()
							 | 
						||
| 
								 | 
							
								  );
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 图片转base64
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function image2Base64(imgUrl) {
							 | 
						||
| 
								 | 
							
								  return new Promise((resolve) => {
							 | 
						||
| 
								 | 
							
								    const img = new Image();
							 | 
						||
| 
								 | 
							
								    img.src = imgUrl;
							 | 
						||
| 
								 | 
							
								    img.crossOrigin = "Anonymous";
							 | 
						||
| 
								 | 
							
								    img.onload = function () {
							 | 
						||
| 
								 | 
							
								      const canvas = document.createElement("canvas");
							 | 
						||
| 
								 | 
							
								      canvas.width = img.width;
							 | 
						||
| 
								 | 
							
								      canvas.height = img.height;
							 | 
						||
| 
								 | 
							
								      const ctx = canvas.getContext("2d");
							 | 
						||
| 
								 | 
							
								      ctx.drawImage(img, 0, 0, img.width, img.height);
							 | 
						||
| 
								 | 
							
								      const ext = img.src.substring(img.src.lastIndexOf(".") + 1).toLowerCase();
							 | 
						||
| 
								 | 
							
								      resolve(canvas.toDataURL(`image/${ext}`));
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 图片转base64 (File对象版本)
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function image2Base642(file) {
							 | 
						||
| 
								 | 
							
								  return new Promise((resolve, reject) => {
							 | 
						||
| 
								 | 
							
								    const reader = new FileReader();
							 | 
						||
| 
								 | 
							
								    reader.readAsDataURL(file);
							 | 
						||
| 
								 | 
							
								    reader.onload = (e) => {
							 | 
						||
| 
								 | 
							
								      resolve(e.target.result); // 返回 base64
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								    reader.onerror = (error) => {
							 | 
						||
| 
								 | 
							
								      reject(error); // 处理错误
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 判断图片是否可访问成功
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function checkImgExists(imgUrl) {
							 | 
						||
| 
								 | 
							
								  return new Promise((resolve, reject) => {
							 | 
						||
| 
								 | 
							
								    const ImgObj = new Image();
							 | 
						||
| 
								 | 
							
								    ImgObj.src = imgUrl;
							 | 
						||
| 
								 | 
							
								    ImgObj.onload = function (res) {
							 | 
						||
| 
								 | 
							
								      resolve(res);
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								    ImgObj.onerror = function (err) {
							 | 
						||
| 
								 | 
							
								      reject(err);
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 获取数据类型
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function getDataType(data) {
							 | 
						||
| 
								 | 
							
								  return Object.prototype.toString.call(data).slice(8, -1);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 数组去重
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function ArrayDeduplication(arr) {
							 | 
						||
| 
								 | 
							
								  return [...new Set(arr)];
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 数组对象去重
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function arrayObjectDeduplication(arr, key) {
							 | 
						||
| 
								 | 
							
								  const obj = {};
							 | 
						||
| 
								 | 
							
								  arr = arr.reduce((previousValue, currentValue) => {
							 | 
						||
| 
								 | 
							
								    if (!obj[currentValue[key]]) {
							 | 
						||
| 
								 | 
							
								      obj[currentValue[key]] = true;
							 | 
						||
| 
								 | 
							
								      previousValue.push(currentValue);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    return previousValue;
							 | 
						||
| 
								 | 
							
								  }, []);
							 | 
						||
| 
								 | 
							
								  return arr;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 查找字符串中指定的值第几次出现的位置
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function findCharIndex(options) {
							 | 
						||
| 
								 | 
							
								  const { str, char, num } = options;
							 | 
						||
| 
								 | 
							
								  let index = str.indexOf(char);
							 | 
						||
| 
								 | 
							
								  if (index === -1)
							 | 
						||
| 
								 | 
							
								    return -1;
							 | 
						||
| 
								 | 
							
								  for (let i = 0; i < num - 1; i++) {
							 | 
						||
| 
								 | 
							
								    index = str.indexOf(char, index + 1);
							 | 
						||
| 
								 | 
							
								    if (index === -1)
							 | 
						||
| 
								 | 
							
								      return -1;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return index;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 生成指定两个值之间的随机数
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function randoms(min, max) {
							 | 
						||
| 
								 | 
							
								  return Math.random() * (max - min + 1) + min;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 千位分隔符
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function numFormat(num) {
							 | 
						||
| 
								 | 
							
								  if (num) {
							 | 
						||
| 
								 | 
							
								    const numArr = num.toString().split(".");
							 | 
						||
| 
								 | 
							
								    const arr = numArr[0].split("").reverse();
							 | 
						||
| 
								 | 
							
								    let res = [];
							 | 
						||
| 
								 | 
							
								    for (let i = 0; i < arr.length; i++) {
							 | 
						||
| 
								 | 
							
								      if (i % 3 === 0 && i !== 0) {
							 | 
						||
| 
								 | 
							
								        res.push(",");
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								      res.push(arr[i]);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    res.reverse();
							 | 
						||
| 
								 | 
							
								    if (numArr[1]) {
							 | 
						||
| 
								 | 
							
								      res = res.join("").concat(`.${numArr[1]}`);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    else {
							 | 
						||
| 
								 | 
							
								      res = res.join("");
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    return res;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 验证是否为空
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function isEmpty(value) {
							 | 
						||
| 
								 | 
							
								  return (
							 | 
						||
| 
								 | 
							
								    value === undefined
							 | 
						||
| 
								 | 
							
								    || value === null
							 | 
						||
| 
								 | 
							
								    || (typeof value === "object" && Object.keys(value).length === 0)
							 | 
						||
| 
								 | 
							
								    || (typeof value === "string" && value.trim().length === 0)
							 | 
						||
| 
								 | 
							
								  );
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 获取url参数
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function getUrlParam(key) {
							 | 
						||
| 
								 | 
							
								  const reg = new RegExp(`(^|&)${key}=([^&]*)(&|$)`);
							 | 
						||
| 
								 | 
							
								  const r = window.location.search.substr(1).match(reg);
							 | 
						||
| 
								 | 
							
								  if (r != null)
							 | 
						||
| 
								 | 
							
								    return decodeURI(r[2]);
							 | 
						||
| 
								 | 
							
								  return "";
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 数据分页
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function paging(options) {
							 | 
						||
| 
								 | 
							
								  const { list, currentPage, pageSize } = options;
							 | 
						||
| 
								 | 
							
								  return list.filter((item, index) => {
							 | 
						||
| 
								 | 
							
								    return (
							 | 
						||
| 
								 | 
							
								      index < +currentPage * +pageSize
							 | 
						||
| 
								 | 
							
								      && index >= (+currentPage - 1) * +pageSize
							 | 
						||
| 
								 | 
							
								    );
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 获取文件后缀
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function getFileSuffix(name) {
							 | 
						||
| 
								 | 
							
								  return name.substring(name.lastIndexOf(".") + 1);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 获取文件名称
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function getFileName(name) {
							 | 
						||
| 
								 | 
							
								  if (!name)
							 | 
						||
| 
								 | 
							
								    return "";
							 | 
						||
| 
								 | 
							
								  return name.substring(name.lastIndexOf("/") + 1);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 读取txt文档
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function readTxtDocument(filePah) {
							 | 
						||
| 
								 | 
							
								  return new Promise((resolve) => {
							 | 
						||
| 
								 | 
							
								    const FILE_URL = getFileUrl();
							 | 
						||
| 
								 | 
							
								    const file_url = FILE_URL + filePah;
							 | 
						||
| 
								 | 
							
								    const xhr = new XMLHttpRequest();
							 | 
						||
| 
								 | 
							
								    xhr.open("get", file_url, true);
							 | 
						||
| 
								 | 
							
								    xhr.responseType = "blob";
							 | 
						||
| 
								 | 
							
								    xhr.onload = function (event) {
							 | 
						||
| 
								 | 
							
								      const reader = new FileReader();
							 | 
						||
| 
								 | 
							
								      reader.readAsText(event.target.response, "GB2312");
							 | 
						||
| 
								 | 
							
								      reader.onload = function () {
							 | 
						||
| 
								 | 
							
								        resolve(reader.result);
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								    xhr.send();
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 将秒转换成时分秒
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function secondConversion(second) {
							 | 
						||
| 
								 | 
							
								  if (!second)
							 | 
						||
| 
								 | 
							
								    return 0;
							 | 
						||
| 
								 | 
							
								  const h = Number.parseInt(second / 60 / 60, 10);
							 | 
						||
| 
								 | 
							
								  const m = Number.parseInt((second / 60) % 60, 10);
							 | 
						||
| 
								 | 
							
								  const s = Number.parseInt(second % 60, 10);
							 | 
						||
| 
								 | 
							
								  if (h) {
							 | 
						||
| 
								 | 
							
								    return `${h}小时${m}分钟${s}秒`;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  else {
							 | 
						||
| 
								 | 
							
								    if (m) {
							 | 
						||
| 
								 | 
							
								      return `${m}分钟${s}秒`;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    else {
							 | 
						||
| 
								 | 
							
								      return `${s}秒`;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 附件添加前缀
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function addingPrefixToFile(list, options = {}) {
							 | 
						||
| 
								 | 
							
								  if (!list)
							 | 
						||
| 
								 | 
							
								    return [];
							 | 
						||
| 
								 | 
							
								  const {
							 | 
						||
| 
								 | 
							
								    pathKey = "filePath",
							 | 
						||
| 
								 | 
							
								    nameKey = "fileName",
							 | 
						||
| 
								 | 
							
								    idKey = "imgFilesId",
							 | 
						||
| 
								 | 
							
								  } = options;
							 | 
						||
| 
								 | 
							
								  const FILE_URL = getFileUrl();
							 | 
						||
| 
								 | 
							
								  for (let i = 0; i < list.length; i++) {
							 | 
						||
| 
								 | 
							
								    list[i].url = FILE_URL + list[i][pathKey];
							 | 
						||
| 
								 | 
							
								    list[i].name = list[i][nameKey] || getFileName(list[i][pathKey]);
							 | 
						||
| 
								 | 
							
								    list[i].imgFilesId = list[i][idKey];
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return list;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 翻译状态
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function getLabelName(options) {
							 | 
						||
| 
								 | 
							
								  const { status, list, idKey = "id", nameKey = "name" } = options;
							 | 
						||
| 
								 | 
							
								  for (let i = 0; i < list.length; i++) {
							 | 
						||
| 
								 | 
							
								    if (status?.toString() === list[i][idKey]?.toString()) {
							 | 
						||
| 
								 | 
							
								      return list[i][nameKey];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 计算文件大小
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function calculateFileSize(size) {
							 | 
						||
| 
								 | 
							
								  return size > 1024
							 | 
						||
| 
								 | 
							
								    ? `${(`${size / 1024}`).substring(0, (`${size / 1024}`).lastIndexOf(".") + 3)
							 | 
						||
| 
								 | 
							
								    }MB`
							 | 
						||
| 
								 | 
							
								    : `${size}KB`;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 根据身份证号获取出生日期和性别
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function idCardGetDateAndGender(idCard) {
							 | 
						||
| 
								 | 
							
								  let sex = "";
							 | 
						||
| 
								 | 
							
								  let date = "";
							 | 
						||
| 
								 | 
							
								  if (ID_NUMBER.test(idCard)) {
							 | 
						||
| 
								 | 
							
								    const org_birthday = idCard.substring(6, 14);
							 | 
						||
| 
								 | 
							
								    const org_gender = idCard.substring(16, 17);
							 | 
						||
| 
								 | 
							
								    const birthday
							 | 
						||
| 
								 | 
							
								      = `${org_birthday.substring(0, 4)
							 | 
						||
| 
								 | 
							
								      }-${
							 | 
						||
| 
								 | 
							
								        org_birthday.substring(4, 6)
							 | 
						||
| 
								 | 
							
								      }-${
							 | 
						||
| 
								 | 
							
								        org_birthday.substring(6, 8)}`;
							 | 
						||
| 
								 | 
							
								    const birthdays = new Date(birthday.replace(/-/g, "/"));
							 | 
						||
| 
								 | 
							
								    const Month = birthdays.getMonth() + 1;
							 | 
						||
| 
								 | 
							
								    let MonthDate;
							 | 
						||
| 
								 | 
							
								    const DayDate = birthdays.getDate();
							 | 
						||
| 
								 | 
							
								    let Day;
							 | 
						||
| 
								 | 
							
								    if (Month < 10)
							 | 
						||
| 
								 | 
							
								      MonthDate = `0${Month}`;
							 | 
						||
| 
								 | 
							
								    else MonthDate = Month;
							 | 
						||
| 
								 | 
							
								    if (DayDate < 10)
							 | 
						||
| 
								 | 
							
								      Day = `0${DayDate}`;
							 | 
						||
| 
								 | 
							
								    else Day = DayDate;
							 | 
						||
| 
								 | 
							
								    sex = org_gender % 2 === 1 ? "1" : "0";
							 | 
						||
| 
								 | 
							
								    date = `${birthdays.getFullYear()}-${MonthDate}-${Day}`;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return { sex, date };
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 获取select中指定项组成的数组
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function getSelectAppointItemList(options) {
							 | 
						||
| 
								 | 
							
								  const { list, value, idKey = "id" } = options;
							 | 
						||
| 
								 | 
							
								  return list.filter(item => value.includes(item[idKey]));
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * json转换为树形结构
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function listTransTree(options) {
							 | 
						||
| 
								 | 
							
								  const { json, idKey, parentIdKey, childrenKey } = options;
							 | 
						||
| 
								 | 
							
								  const r = [];
							 | 
						||
| 
								 | 
							
								  const hash = {};
							 | 
						||
| 
								 | 
							
								  let i = 0;
							 | 
						||
| 
								 | 
							
								  let j = 0;
							 | 
						||
| 
								 | 
							
								  const len = json.length;
							 | 
						||
| 
								 | 
							
								  for (; i < len; i++) {
							 | 
						||
| 
								 | 
							
								    hash[json[i][idKey]] = json[i];
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  for (; j < len; j++) {
							 | 
						||
| 
								 | 
							
								    const aVal = json[j];
							 | 
						||
| 
								 | 
							
								    const hashVP = hash[aVal[parentIdKey]];
							 | 
						||
| 
								 | 
							
								    if (hashVP) {
							 | 
						||
| 
								 | 
							
								      !hashVP[childrenKey] && (hashVP[childrenKey] = []);
							 | 
						||
| 
								 | 
							
								      hashVP[childrenKey].push(aVal);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    else {
							 | 
						||
| 
								 | 
							
								      r.push(aVal);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return r;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 将值转换为"是"/"否"显示文本
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function isEmptyToWhether(value, options = {}) {
							 | 
						||
| 
								 | 
							
								  const { yesText = "是", noText = "否", yesValue = "1" } = options;
							 | 
						||
| 
								 | 
							
								  return !isEmpty(value)
							 | 
						||
| 
								 | 
							
								    ? value.toString() === yesValue.toString()
							 | 
						||
| 
								 | 
							
								      ? yesText
							 | 
						||
| 
								 | 
							
								      : noText
							 | 
						||
| 
								 | 
							
								    : "";
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 生成指定长度的guid
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function createGuid(len = 32) {
							 | 
						||
| 
								 | 
							
								  const chars = "abcdefghijklmnopqrstuvwxyz0123456789";
							 | 
						||
| 
								 | 
							
								  let result = "";
							 | 
						||
| 
								 | 
							
								  for (let i = 0; i < len; i++) {
							 | 
						||
| 
								 | 
							
								    result += chars.charAt(Math.floor(Math.random() * chars.length));
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return result;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 获取序号列
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function getIndexColumn(pagination) {
							 | 
						||
| 
								 | 
							
								  return {
							 | 
						||
| 
								 | 
							
								    title: "序号",
							 | 
						||
| 
								 | 
							
								    key: "index",
							 | 
						||
| 
								 | 
							
								    width: 70,
							 | 
						||
| 
								 | 
							
								    render: (_, __, index) => pagination === false ? index + 1 : serialNumber(pagination, index),
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 获取文件url
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function getFileUrl() {
							 | 
						||
| 
								 | 
							
								  return process.env.app["fileUrl"];
							 | 
						||
| 
								 | 
							
								}
							 |