gerson
2024-09-08 18aeed6ed17a3aeacc157e0019159957aeaec556
src/utils/util.ts
@@ -168,9 +168,9 @@
export const convertListToTree = (
   data: any[],
   defaultProps = {
      ID: 'ID',
      Children: 'Children',
      ParentID: 'ParentID',
      ID: 'id',
      Children: 'children',
      ParentID: 'parent',
   }
) => {
   if (!data || data?.length === 0) return [];
@@ -210,7 +210,7 @@
   callback: (value: T, index?, array?, parent?) => any,
   parent: any = null,
   markParent = false,
   childrenKey = 'Children'
   childrenKey = 'children'
) => {
   if (!treeData || treeData.length === 0) return;
   if (!parent) parent = treeData;
@@ -575,7 +575,23 @@
      }, wait);
   };
};
/**
 * 文件大小字节转换为XXX
 * @param size 字节大小
 * @returns {string|*}
 */
export const convertFileSize = (size) => {
   if (!size && size !== 0) return '';
   if (size < pow1024(1)) return size + ' B';
   if (size < pow1024(2)) return (size / pow1024(1)).toFixed(2) + ' KB';
   if (size < pow1024(3)) return (size / pow1024(2)).toFixed(2) + ' MB';
   if (size < pow1024(4)) return (size / pow1024(3)).toFixed(2) + ' GB';
   return (size / pow1024(4)).toFixed(2) + ' TB';
};
// 求次幂
function pow1024(num) {
   return Math.pow(1024, num);
}
/**
 *
 * @param {*} func 节流函数
@@ -684,11 +700,37 @@
/**
 * 保留指定精度小数位,且不补零
 * @param num
 * @param precision
 * @returns
 * @param num
 * @param precision
 * @returns
 */
export const toMyFixed = (num, precision) => {
   if (num == null) return '';
   return num.toFixed(precision).replace(/\.?0+$/, '');
};
type GetTextWidthOption = {
   size?: string;
   family?: string;
};
export function getTextWidth(text: string, option: GetTextWidthOption) {
   if (!text) return 0;
   const { size = '14px', family = 'Microsoft YaHei' } = option;
   const spanEle = document.createElement('span');
   document.body.appendChild(spanEle);
   spanEle.style.font = 'times new roman';
   spanEle.style.fontSize = size;
   spanEle.style.height = 'auto';
   spanEle.style.width = 'auto';
   spanEle.style.position = 'absolute';
   spanEle.style.whiteSpace = 'no-wrap';
   spanEle.innerHTML = text;
   const width = spanEle.clientWidth;
   document.body.removeChild(spanEle);
   return width;
}