From f12fd0b36f027cbbae0fb322b237abe857a32e2b Mon Sep 17 00:00:00 2001 From: wujingjing <gersonwu@qq.com> Date: 星期一, 30 十二月 2024 15:35:47 +0800 Subject: [PATCH] 工作流修改颜色,图标; 返回不清除缓存 --- src/utils/util.ts | 102 ++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 85 insertions(+), 17 deletions(-) diff --git a/src/utils/util.ts b/src/utils/util.ts index 071491b..a317c29 100644 --- a/src/utils/util.ts +++ b/src/utils/util.ts @@ -1,11 +1,11 @@ -import { ElMessage, ElMessageBox } from 'element-plus'; +import { ElMessage, ElMessageBox, ElMessageBoxOptions } from 'element-plus'; import JSONbig from 'json-bigint'; + import { storeToRefs } from 'pinia'; import { unref, type Ref } from 'vue'; import { useTagsViewRoutes } from '/@/stores/tagsViewRoutes'; import { useThemeConfig } from '/@/stores/themeConfig'; import request from '/@/utils/request'; - /** * @description 褰撶鍒� JSON 涓瓨鍦ㄨ繃闀跨殑鏁板瓧鏃讹紝浣跨敤 JSONbigString 瑙f瀽锛屾暟瀛椾細杞负瀛楃涓插鐞� * 鐢ㄦ硶锛欽SONbigString.parse(jsonStr)锛� @@ -110,8 +110,8 @@ export const getImg = (name) => `src/assets/images/${name}`; -export const downloadJSON = (jsonData: Object, fileName: String) => { - const dataStr = 'data:text/json;charset=utf-8,' + encodeURIComponent(JSON.stringify(jsonData)); +export const downloadJSON = (jsonData: string, fileName: String) => { + const dataStr = 'data:text/json;charset=utf-8,' + encodeURIComponent(jsonData); const downloadAnchorNode = document.createElement('a'); downloadAnchorNode.setAttribute('href', dataStr); downloadAnchorNode.setAttribute('download', fileName + '.json'); @@ -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,11 +210,10 @@ 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; - for (let index = 0; index < treeData.length; index++) { const value = treeData[index] as any; if (markParent) { @@ -233,7 +232,7 @@ if (value[childrenKey] && value[childrenKey].length !== 0) { // 閫掑綊璺冲嚭 - const callResult = travelTree(value[childrenKey], callback, value, markParent); + const callResult = travelTree(value[childrenKey], callback, value, markParent, childrenKey); if (callResult) { return true; } @@ -258,7 +257,7 @@ * @param tableData * @returns */ -export const flatten = (tableData: any[], removeChild?: boolean, children = 'Children'): any[] => { +export const flatten = (tableData: any[], removeChild?: boolean, children = 'children'): any[] => { const flattenedData: any[] = []; for (const item of tableData) { @@ -464,12 +463,14 @@ * 鏈�杩� n 澶╃殑 startDate銆乪ndDate * @param dates */ -export const getRecentDateRange = (dates: number) => { +export const getRecentDateRange = (dates: number, includesCurrent = true) => { + dates = includesCurrent ? dates - 1 : dates; // 鑾峰彇褰撳墠鏃ユ湡 const endDate = new Date(); const startDate = new Date(); startDate.setTime(startDate.getTime() - 3600 * 1000 * 24 * dates); startDate.setHours(0, 0, 0, 0); + endDate.setHours(23, 59, 59, 59); return [startDate, endDate]; }; @@ -575,7 +576,23 @@ }, wait); }; }; - +/** + * 鏂囦欢澶у皬瀛楄妭杞崲涓篨XX + * @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 +701,62 @@ /** * 淇濈暀鎸囧畾绮惧害灏忔暟浣嶏紝涓斾笉琛ラ浂 - * @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+$/, ''); + if (!precision) return num + ''; + const factor = Math.pow(10, precision); + return Math.round(Number(num) * factor) / factor + ''; +}; + +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; +} + +export function decodeFormData(formDataString) { + const params = new URLSearchParams(formDataString); + const decodedData = {}; + for (const [key, value] of params) { + decodedData[key] = decodeURIComponent(value); + } + return decodedData; +} + +export const elConfirm = ( + message, + options: ElMessageBoxOptions = { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning', + } +) => { + return new Promise((resolve, reject) => { + ElMessageBox.confirm(message, '鎻愮ず', options) + .then(() => resolve(true)) + .catch(() => reject(false)); + }); }; -- Gitblit v1.9.3