From 089bf5d2378b3c4a61d795b2a92bede2c193b771 Mon Sep 17 00:00:00 2001
From: admin <344137771@qq.com>
Date: Tue, 06 Jan 2026 11:22:58 +0800
Subject: [PATCH] 1

---
 src/utils/index.js |  240 +++++++++++++++++++++--------------------------------------
 1 files changed, 87 insertions(+), 153 deletions(-)

diff --git a/src/utils/index.js b/src/utils/index.js
index aeead46..1637e2c 100644
--- a/src/utils/index.js
+++ b/src/utils/index.js
@@ -1,166 +1,100 @@
-import i18n from '@/i18n'
-export function getImageUrl(path) {
-  return new URL(path, import.meta.url).href
+import Vue from 'vue'
+import router from '@/router'
+import store from '@/store'
+
+/**
+ * 获取uuid
+ */
+export function getUUID () {
+  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
+    return (c === 'x' ? (Math.random() * 16 | 0) : ('r&0x3' | '0x8')).toString(16)
+  })
 }
 
-// 设置localStorage
-export const setStorage = function (key, obj) {
-  let json = JSON.stringify(obj)
-  window.localStorage.setItem(key, json)
-  // console.log('设置语言', key, json)
-}
-
-// 获取localStorage
-export const getStorage = function (key) {
-  const str = window.localStorage.getItem(key) || ''
-  if (!str) {
-    return null
-  }
-  return JSON.parse(str)
-}
-// 获取浏览器默认语言
-export const getBrowserLang = function () {
-  let browserLang = navigator.language
-    ? navigator.language
-    : navigator.browserLanguage
-  let defaultBrowserLang = ''
-  if (
-    browserLang.toLowerCase() === 'cn' ||
-    browserLang.toLowerCase() === 'zh' ||
-    browserLang.toLowerCase() === 'zh-cn'
-  ) {
-    defaultBrowserLang = 'CN'
-  } else {
-    defaultBrowserLang = 'en'
-  }
-  return defaultBrowserLang
-}
-
-export const dataTime = (data, isTrue) => {
-  var date = new Date(data)
-  let Y = date.getFullYear() + '-'
-  let M =
-    (date.getMonth() + 1 < 10
-      ? '0' + (date.getMonth() + 1)
-      : date.getMonth() + 1) + '-'
-  let D = date.getDate() + ' '
-  let h = date.getHours() + ':'
-  let m = date.getMinutes() + ':'
-  let s = date.getSeconds()
-  let str = Y + M + D
-  if (isTrue) {
-    str = Y + M + D + h + m + s
-  } else {
-    str = Y + M + D
-  }
-  return str
-}
-
-export const debounce = (fn, delay = 500) => {
-  // timer 是在闭包中的
-  let timer = null
-
-  return function () {
-    if (timer) {
-      clearTimeout(timer)
-    }
-    timer = setTimeout(() => {
-      fn.apply(this, arguments)
-      timer = null
-    }, delay)
-  }
-}
-
-export const throttle = (fn, wait = 50) => {
-  // 上一次执行 fn 的时间
-  let previous = 0
-  // 将 throttle 处理结果当作函数返回
-  return function (...args) {
-    // 获取当前时间,转换成时间戳,单位毫秒
-    let now = +new Date()
-    // 将当前时间和上一次执行函数的时间进行对比
-    // 大于等待时间就把 previous 设置为当前时间并执行函数 fn
-    if (now - previous > wait) {
-      previous = now
-      fn.apply(this, args)
+/**
+ * 是否有权限
+ * @param {*} key
+ */
+export function isAuth (key) {
+  let authorities = JSON.parse(sessionStorage.getItem('authorities') || '[]')
+  if (authorities.length) {
+    for (const i in authorities) {
+      const element = authorities[i]
+      if (element === key) {
+        return true
+      }
     }
   }
+  return false
 }
 
-// 小数展示,保留五位小数
-export const formatNumber = (num) => {
-  if (typeof num !== 'number') {
-    return '--'
+/**
+ * 树形数据转换
+ * @param {*} data
+ * @param {*} id
+ * @param {*} pid
+ */
+export function treeDataTranslate (data, id = 'id', pid = 'parentId') {
+  var res = []
+  var temp = {}
+  for (var i = 0; i < data.length; i++) {
+    temp[data[i][id]] = data[i]
   }
-  let count
-  if (num.toString().indexOf('.') < 0) {
-    // 整数
-    return num
-  } else {
-    // 小数
-    count = num.toString().split('.').pop().length
-    if (count > 5) {
-      return num.toFixed(5)
+  for (var k = 0; k < data.length; k++) {
+    if (temp[data[k][pid]] && data[k][id] !== data[k][pid]) {
+      if (!temp[data[k][pid]]['children']) {
+        temp[data[k][pid]]['children'] = []
+      }
+      if (!temp[data[k][pid]]['_level']) {
+        temp[data[k][pid]]['_level'] = 1
+      }
+      data[k]['_level'] = temp[data[k][pid]]._level + 1
+      temp[data[k][pid]]['children'].push(data[k])
     } else {
-      return num
+      res.push(data[k])
+    }
+  }
+  return res
+}
+
+/**
+ * 将数组中的parentId列表取出,倒序排列
+ * @param {*} data
+ * @param {*} id
+ * @param {*} pid
+ */
+export function idList (data, val, id = 'id', children = 'children') {
+  let res = []
+  idListFromTree(data, val, res, id)
+  return res
+}
+
+/**
+ * @param {*} data
+ * @param {*} id
+ * @param {*} pid
+ */
+function idListFromTree (data, val, res = [], id = 'id', children = 'children') {
+  for (let i = 0; i < data.length; i++) {
+    const element = data[i]
+    if (element[children]) {
+      if (idListFromTree(element[children], val, res, id, children)) {
+        res.push(element[id])
+        return true
+      }
+    }
+    if (element[id] === val) {
+      res.push(element[id])
+      return true
     }
   }
 }
 
-
-// 保留两位小数
-export const fixDate = (val, language) => {
-  const value = val / 1
-  if (isNaN(value)) {
-    return '--'
-  }
-  if (i18n.locale === 'CN' || language == "zh-CN" || language == "CN") {
-    if ((value / 10000).toString().split('.')[0].length <= 4) {
-      return (value / 10000).toFixed(2) + ' ' + i18n.global.t('万')
-    } else {
-      return (value / 100000000).toFixed(2) + ' ' + i18n.global.t('亿')
-    }
-  } else {
-    if ((value / 1000000).toString().split('.')[0].length <= 4) {
-      return (value / 1000000).toFixed(2) + ' ' + 'M'
-    } else {
-      return (value / 1000000000).toFixed(2) + ' ' + 'B'
-    }
-  }
-}
-
-export const formatMoney = (val) => {
-  if (val === 0) {
-    return 0
-  }
-  if (!val) {
-    return '-'
-  }
-  const num = 1000 //byte
-  if (val < num) {
-    return val
-  }
-  if (val < Math.pow(num, 2)) {
-    return (val / num).toFixed(2) + 'K' //k
-  }
-  if (val < Math.pow(num, 3)) {
-    return (val / Math.pow(num, 2)).toFixed(2) + 'M' //M
-  }
-  if (val < Math.pow(num, 4)) {
-    return (val / Math.pow(num, 3)).toFixed(2) + 'G' //G
-  }
-  return (val / Math.pow(num, 4)).toFixed(2) + 'T' //T
-}
-
-export const handleImage = (url) => {
-  return new URL(url, import.meta.url).href
-}
-
-export const formatNews = (str) => {
-  if (!str) {
-    return ''
-  }
-  return str
-    .replace(/<img [^>]*src=['"]([^'"]+)[^>]*>/g, '')
-    .replace(/&nbsp;/gi, '')
+/**
+ * 清除登录信息
+ */
+export function clearLoginInfo () {
+  Vue.cookie.delete('Authorization')
+  store.commit('resetStore')
+  router.options.isAddDynamicMenuRoutes = false
 }

--
Gitblit v1.9.3