From 12a89593d13fa38810c7af54c7ea8cb72ae65a10 Mon Sep 17 00:00:00 2001 From: wujingjing <gersonwu@qq.com> Date: 星期二, 14 一月 2025 14:56:45 +0800 Subject: [PATCH] 使用 url 参数传 session --- src/utils/util.ts | 100 +++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 79 insertions(+), 21 deletions(-) diff --git a/src/utils/util.ts b/src/utils/util.ts index 327d7e7..d92279e 100644 --- a/src/utils/util.ts +++ b/src/utils/util.ts @@ -1,16 +1,15 @@ -import type { Ref } from 'vue'; -import JSONbig from 'json-bigint'; import { ElMessage, ElMessageBox } from 'element-plus'; +import JSONbig from 'json-bigint'; +import { storeToRefs } from 'pinia'; +import type { Ref } from 'vue'; import { useTagsViewRoutes } from '/@/stores/tagsViewRoutes'; import { useThemeConfig } from '/@/stores/themeConfig'; -import { storeToRefs } from 'pinia'; import request from '/@/utils/request'; // 瀵煎叆渚濊禆 +import axios from 'axios'; import FileSaver from 'file-saver'; import * as XLSX from 'xlsx'; -import axios from 'axios'; import { MAIN_URL } from '../constants'; - /** * 鏅�氬璞¤浆涓� formData @@ -45,7 +44,6 @@ addFormData(obj); return formData; }; - /** * @description 褰撶鍒� JSON 涓瓨鍦ㄨ繃闀跨殑鏁板瓧鏃讹紝浣跨敤 JSONbigString 瑙f瀽锛屾暟瀛椾細杞负瀛楃涓插鐞� @@ -290,7 +288,7 @@ ) => { 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) { @@ -539,28 +537,37 @@ themeConfig.value.isTagsview = !isHide; }; - /** * 鏈�杩� n 澶╃殑 startDate銆乪ndDate * @param dates */ -export const getRecentDateRange = (dates: number) => { +export const getRecentDateRange = (dates: number, includesCurrent = true) => { + dates = includesCurrent ? dates - 1 : dates; // 鑾峰彇褰撳墠鏃ユ湡 - const currentDate = new Date(); - + const endDate = new Date(); const startDate = new Date(); - startDate.setDate(currentDate.getDate() - dates + 1); - // 灏嗘椂鍒嗙璁句负0 - startDate.setHours(0); - startDate.setMinutes(0); - startDate.setSeconds(0); - // 鑾峰彇褰撳墠鏃ユ湡浣滀负缁堟鑺傜偣 - const endDate = currentDate; - return { startDate, endDate }; + startDate.setTime(startDate.getTime() - 3600 * 1000 * 24 * dates); + endDate.setHours(23,59,59,59) + startDate.setHours(0, 0, 0, 0); + return [startDate, endDate]; +}; + +/** + * 鏈�杩� n 澶╃殑 date + * @param dates + */ +export const getRecentDate = (dates: number) => { + // 鑾峰彇褰撳墠鏃ユ湡 + const recentDate = new Date(); + recentDate.setTime(recentDate.getTime() - 3600 * 1000 * 24 * dates); + recentDate.setHours(0, 0, 0, 0); + return recentDate; }; //#region ====================== 鏈�杩戞椂闂� ====================== -export const getAWeek = () => getRecentDateRange(7); +export const getAWeek = () => { + return getRecentDateRange(7); +}; export const getHalfMonth = () => getRecentDateRange(15); export const getAMonth = () => getRecentDateRange(30); export const getThreeMonth = () => getRecentDateRange(90); @@ -614,11 +621,28 @@ export const toPercent = (num: number, havePercentSymbol = true, decimalPlaces = 1, defaultValue = '-') => { if (num == null) return `${defaultValue} %`; - let percent = Number(num * 100).toFixed(decimalPlaces); + const factor = Math.pow(10, decimalPlaces); + + let percent = Math.round(Number(num) * 100 * factor) / factor + ''; if (havePercentSymbol) { percent += '%'; } return percent; +}; + + + +/** + * 淇濈暀鎸囧畾绮惧害灏忔暟浣嶏紝涓斾笉琛ラ浂 + * @param num + * @param precision + * @returns + */ +export const toMyFixed = (num, precision) => { + if (num == null) return ''; + if (!precision) return num + ''; + const factor = Math.pow(10, precision); + return Math.round(Number(num) * factor) / factor + ''; }; /** @@ -692,3 +716,37 @@ export const arrayIsEmpty = (arr: any) => { return !arr || arr.length === 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; +} + +export function decodeFormData(formDataString) { + const params = new URLSearchParams(formDataString); + const decodedData = {}; + for (const [key, value] of params) { + decodedData[key] = decodeURIComponent(value); + } + return decodedData; +} -- Gitblit v1.9.3