From e1afd6281a8cccd1484fb03cccee3985f98777d4 Mon Sep 17 00:00:00 2001
From: rain <1679827795@qq.com>
Date: Tue, 06 May 2025 18:40:52 +0800
Subject: [PATCH] Merge branch 'master' into test
---
src/utils/util.js | 369 +++++++++++++++++++++++++++-------------------------
1 files changed, 193 insertions(+), 176 deletions(-)
diff --git a/src/utils/util.js b/src/utils/util.js
index 0cdfc47..978bddf 100644
--- a/src/utils/util.js
+++ b/src/utils/util.js
@@ -1,16 +1,16 @@
-import { validatenull } from './validate';
-import sha256 from 'crypto-js/sha256';
-import Base64 from 'crypto-js/enc-base64';
+import { validatenull } from './validate'
+import sha256 from 'crypto-js/sha256'
+import Base64 from 'crypto-js/enc-base64'
//表单序列化
export const serialize = data => {
- let list = [];
+ let list = []
Object.keys(data).forEach(ele => {
- list.push(`${ele}=${data[ele]}`);
- });
- return list.join('&');
-};
+ list.push(`${ele}=${data[ele]}`)
+ })
+ return list.join('&')
+}
export const getObjType = obj => {
- var toString = Object.prototype.toString;
+ var toString = Object.prototype.toString
var map = {
'[object Boolean]': 'boolean',
'[object Number]': 'number',
@@ -22,136 +22,136 @@
'[object Undefined]': 'undefined',
'[object Null]': 'null',
'[object Object]': 'object',
- };
- if (obj instanceof Element) {
- return 'element';
}
- return map[toString.call(obj)];
-};
+ if (obj instanceof Element) {
+ return 'element'
+ }
+ return map[toString.call(obj)]
+}
/**
* 对象深拷贝
*/
export const deepClone = data => {
- var type = getObjType(data);
- var obj;
+ var type = getObjType(data)
+ var obj
if (type === 'array') {
- obj = [];
+ obj = []
} else if (type === 'object') {
- obj = {};
+ obj = {}
} else {
//不再具有下一层次
- return data;
+ return data
}
if (type === 'array') {
for (var i = 0, len = data.length; i < len; i++) {
- obj.push(deepClone(data[i]));
+ obj.push(deepClone(data[i]))
}
} else if (type === 'object') {
for (var key in data) {
- obj[key] = deepClone(data[key]);
+ obj[key] = deepClone(data[key])
}
}
- return obj;
-};
+ return obj
+}
/**
* 设置灰度模式
*/
export const toggleGrayMode = status => {
if (status) {
- document.body.className = document.body.className + ' grayMode';
+ document.body.className = document.body.className + ' grayMode'
} else {
- document.body.className = document.body.className.replace(' grayMode', '');
+ document.body.className = document.body.className.replace(' grayMode', '')
}
-};
+}
/**
* 设置主题
*/
export const setTheme = name => {
- document.body.className = name;
-};
+ document.body.className = name
+}
/**
* 加密处理
*/
export const encryption = params => {
- let { data = {}, type, param, key } = params;
- let result = JSON.parse(JSON.stringify(data));
+ let { data = {}, type, param, key } = params
+ let result = JSON.parse(JSON.stringify(data))
if (type == 'Base64') {
param.forEach(ele => {
- result[ele] = Base64.stringify(result[ele]);
- });
+ result[ele] = Base64.stringify(result[ele])
+ })
} else if (type == 'Aes') {
param.forEach(ele => {
- result[ele] = sha256(result[ele], key);
- });
+ result[ele] = sha256(result[ele], key)
+ })
}
- return result;
-};
+ return result
+}
/**
* 浏览器判断是否全屏
*/
export const fullscreenToggel = () => {
if (fullscreenEnable()) {
- exitFullScreen();
+ exitFullScreen()
} else {
- reqFullScreen();
+ reqFullScreen()
}
-};
+}
/**
* esc监听全屏
*/
export const listenfullscreen = callback => {
- function listen() {
- callback();
+ function listen () {
+ callback()
}
document.addEventListener('fullscreenchange', function () {
- listen();
- });
+ listen()
+ })
document.addEventListener('mozfullscreenchange', function () {
- listen();
- });
+ listen()
+ })
document.addEventListener('webkitfullscreenchange', function () {
- listen();
- });
+ listen()
+ })
document.addEventListener('msfullscreenchange', function () {
- listen();
- });
-};
+ listen()
+ })
+}
/**
* 浏览器判断是否全屏
*/
export const fullscreenEnable = () => {
var isFullscreen =
- document.isFullScreen || document.mozIsFullScreen || document.webkitIsFullScreen;
- return isFullscreen;
-};
+ document.isFullScreen || document.mozIsFullScreen || document.webkitIsFullScreen
+ return isFullscreen
+}
/**
* 浏览器全屏
*/
export const reqFullScreen = () => {
if (document.documentElement.requestFullScreen) {
- document.documentElement.requestFullScreen();
+ document.documentElement.requestFullScreen()
} else if (document.documentElement.webkitRequestFullScreen) {
- document.documentElement.webkitRequestFullScreen();
+ document.documentElement.webkitRequestFullScreen()
} else if (document.documentElement.mozRequestFullScreen) {
- document.documentElement.mozRequestFullScreen();
+ document.documentElement.mozRequestFullScreen()
}
-};
+}
/**
* 浏览器退出全屏
*/
export const exitFullScreen = () => {
if (document.documentElement.requestFullScreen) {
- document.exitFullScreen();
+ document.exitFullScreen()
} else if (document.documentElement.webkitRequestFullScreen) {
- document.webkitCancelFullScreen();
+ document.webkitCancelFullScreen()
} else if (document.documentElement.mozRequestFullScreen) {
- document.mozCancelFullScreen();
+ document.mozCancelFullScreen()
}
-};
+}
/**
* 递归寻找子类的父类
*/
@@ -161,16 +161,16 @@
if (menu[i].children.length != 0) {
for (let j = 0; j < menu[i].children.length; j++) {
if (menu[i].children[j].id == id) {
- return menu[i];
+ return menu[i]
} else {
if (menu[i].children[j].children.length != 0) {
- return findParent(menu[i].children[j].children, id);
+ return findParent(menu[i].children[j].children, id)
}
}
}
}
}
-};
+}
/**
* 判断2个对象属性和值是否相等
*/
@@ -180,157 +180,157 @@
*/
export const loadStyle = url => {
- const link = document.createElement('link');
- link.type = 'text/css';
- link.rel = 'stylesheet';
- link.href = url;
- const head = document.getElementsByTagName('head')[0];
- head.appendChild(link);
-};
+ const link = document.createElement('link')
+ link.type = 'text/css'
+ link.rel = 'stylesheet'
+ link.href = url
+ const head = document.getElementsByTagName('head')[0]
+ head.appendChild(link)
+}
/**
* 判断路由是否相等
*/
export const diff = (obj1, obj2) => {
- delete obj1.close;
- var o1 = obj1 instanceof Object;
- var o2 = obj2 instanceof Object;
+ delete obj1.close
+ var o1 = obj1 instanceof Object
+ var o2 = obj2 instanceof Object
if (!o1 || !o2) {
/* 判断不是对象 */
- return obj1 === obj2;
+ return obj1 === obj2
}
if (Object.keys(obj1).length !== Object.keys(obj2).length) {
- return false;
+ return false
//Object.keys() 返回一个由对象的自身可枚举属性(key值)组成的数组,例如:数组返回下表:let arr = ["a", "b", "c"];console.log(Object.keys(arr))->0,1,2;
}
for (var attr in obj1) {
- var t1 = obj1[attr] instanceof Object;
- var t2 = obj2[attr] instanceof Object;
+ var t1 = obj1[attr] instanceof Object
+ var t2 = obj2[attr] instanceof Object
if (t1 && t2) {
- return diff(obj1[attr], obj2[attr]);
+ return diff(obj1[attr], obj2[attr])
} else if (obj1[attr] !== obj2[attr]) {
- return false;
+ return false
}
}
- return true;
-};
+ return true
+}
/**
* 根据字典的value显示label
*/
export const findByvalue = (dic, value) => {
- let result = '';
- if (validatenull(dic)) return value;
+ let result = ''
+ if (validatenull(dic)) return value
if (typeof value == 'string' || typeof value == 'number' || typeof value == 'boolean') {
- let index = 0;
- index = findArray(dic, value);
+ let index = 0
+ index = findArray(dic, value)
if (index != -1) {
- result = dic[index].label;
+ result = dic[index].label
} else {
- result = value;
+ result = value
}
} else if (value instanceof Array) {
- result = [];
- let index = 0;
+ result = []
+ let index = 0
value.forEach(ele => {
- index = findArray(dic, ele);
+ index = findArray(dic, ele)
if (index != -1) {
- result.push(dic[index].label);
+ result.push(dic[index].label)
} else {
- result.push(value);
+ result.push(value)
}
- });
- result = result.toString();
+ })
+ result = result.toString()
}
- return result;
-};
+ return result
+}
/**
* 根据字典的value查找对应的index
*/
export const findArray = (dic, value) => {
for (let i = 0; i < dic.length; i++) {
if (dic[i].value == value) {
- return i;
+ return i
}
}
- return -1;
-};
+ return -1
+}
/**
* 生成随机len位数字
*/
export const randomLenNum = (len, date) => {
- let random = '';
+ let random = ''
random = Math.ceil(Math.random() * 100000000000000)
.toString()
- .substr(0, len ? len : 4);
- if (date) random = random + Date.now();
- return random;
-};
+ .substr(0, len ? len : 4)
+ if (date) random = random + Date.now()
+ return random
+}
/**
* 打开小窗口
*/
export const openWindow = (url, title, w, h) => {
// Fixes dual-screen position Most browsers Firefox
- const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : screen.left;
- const dualScreenTop = window.screenTop !== undefined ? window.screenTop : screen.top;
+ const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : screen.left
+ const dualScreenTop = window.screenTop !== undefined ? window.screenTop : screen.top
const width = window.innerWidth
? window.innerWidth
: document.documentElement.clientWidth
- ? document.documentElement.clientWidth
- : screen.width;
+ ? document.documentElement.clientWidth
+ : screen.width
const height = window.innerHeight
? window.innerHeight
: document.documentElement.clientHeight
- ? document.documentElement.clientHeight
- : screen.height;
+ ? document.documentElement.clientHeight
+ : screen.height
- const left = width / 2 - w / 2 + dualScreenLeft;
- const top = height / 2 - h / 2 + dualScreenTop;
+ const left = width / 2 - w / 2 + dualScreenLeft
+ const top = height / 2 - h / 2 + dualScreenTop
const newWindow = window.open(
url,
title,
'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=yes, copyhistory=no, width=' +
- w +
- ', height=' +
- h +
- ', top=' +
- top +
- ', left=' +
- left
- );
+ w +
+ ', height=' +
+ h +
+ ', top=' +
+ top +
+ ', left=' +
+ left
+ )
// Puts focus on the newWindow
if (window.focus) {
- newWindow.focus();
+ newWindow.focus()
}
-};
+}
export const getScreen = isCollapse => {
if (document.body.clientWidth <= 768) {
- return !isCollapse;
+ return !isCollapse
} else {
- return isCollapse;
+ return isCollapse
}
-};
+}
/**
* 获取顶部地址栏地址
*/
export const getTopUrl = () => {
- return window.location.href.split('/#/')[0];
-};
+ return window.location.href.split('/#/')[0]
+}
/**
* 获取url参数
* @param name 参数名
*/
export const getQueryString = name => {
- let reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
- let r = window.location.search.substr(1).match(reg);
- if (r != null) return unescape(decodeURI(r[2]));
- return null;
-};
+ let reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i')
+ let r = window.location.search.substr(1).match(reg)
+ if (r != null) return unescape(decodeURI(r[2]))
+ return null
+}
/**
* 下载文件
@@ -338,29 +338,29 @@
* @param {String} name - 文件名,eg: test.png
*/
export const downloadFileBlob = (path, name) => {
- const xhr = new XMLHttpRequest();
- xhr.open('get', path);
- xhr.responseType = 'blob';
- xhr.send();
+ const xhr = new XMLHttpRequest()
+ xhr.open('get', path)
+ xhr.responseType = 'blob'
+ xhr.send()
xhr.onload = function () {
if (this.status === 200 || this.status === 304) {
// 如果是IE10及以上,不支持download属性,采用msSaveOrOpenBlob方法,但是IE10以下也不支持msSaveOrOpenBlob
if ('msSaveOrOpenBlob' in navigator) {
- navigator.msSaveOrOpenBlob(this.response, name);
- return;
+ navigator.msSaveOrOpenBlob(this.response, name)
+ return
}
- const url = URL.createObjectURL(this.response);
- const a = document.createElement('a');
- a.style.display = 'none';
- a.href = url;
- a.download = name;
- document.body.appendChild(a);
- a.click();
- document.body.removeChild(a);
- URL.revokeObjectURL(url);
+ const url = URL.createObjectURL(this.response)
+ const a = document.createElement('a')
+ a.style.display = 'none'
+ a.href = url
+ a.download = name
+ document.body.appendChild(a)
+ a.click()
+ document.body.removeChild(a)
+ URL.revokeObjectURL(url)
}
- };
-};
+ }
+}
/**
* 下载文件
@@ -368,46 +368,63 @@
* @param {String} name - 文件名,eg: test.png
*/
export const downloadFileBase64 = (path, name) => {
- const xhr = new XMLHttpRequest();
- xhr.open('get', path);
- xhr.responseType = 'blob';
- xhr.send();
+ const xhr = new XMLHttpRequest()
+ xhr.open('get', path)
+ xhr.responseType = 'blob'
+ xhr.send()
xhr.onload = function () {
if (this.status === 200 || this.status === 304) {
- const fileReader = new FileReader();
- fileReader.readAsDataURL(this.response);
+ const fileReader = new FileReader()
+ fileReader.readAsDataURL(this.response)
fileReader.onload = function () {
- const a = document.createElement('a');
- a.style.display = 'none';
- a.href = this.result;
- a.download = name;
- document.body.appendChild(a);
- a.click();
- document.body.removeChild(a);
- };
+ const a = document.createElement('a')
+ a.style.display = 'none'
+ a.href = this.result
+ a.download = name
+ document.body.appendChild(a)
+ a.click()
+ document.body.removeChild(a)
+ }
}
- };
-};
+ }
+}
/**
* 下载excel
* @param {blob} fileArrayBuffer 文件流
* @param {String} filename 文件名称
*/
export const downloadXls = (fileArrayBuffer, filename) => {
- let data = new Blob([fileArrayBuffer], { type: 'application/vnd.ms-excel,charset=utf-8' });
+ let data = new Blob([fileArrayBuffer], { type: 'application/vnd.ms-excel,charset=utf-8' })
if (typeof window.chrome !== 'undefined') {
// Chrome
- var link = document.createElement('a');
- link.href = window.URL.createObjectURL(data);
- link.download = filename;
- link.click();
+ var link = document.createElement('a')
+ link.href = window.URL.createObjectURL(data)
+ link.download = filename
+ link.click()
} else if (typeof window.navigator.msSaveBlob !== 'undefined') {
// IE
- var blob = new Blob([data], { type: 'application/force-download' });
- window.navigator.msSaveBlob(blob, filename);
+ var blob = new Blob([data], { type: 'application/force-download' })
+ window.navigator.msSaveBlob(blob, filename)
} else {
// Firefox
- var file = new File([data], filename, { type: 'application/force-download' });
- window.open(URL.createObjectURL(file));
+ var file = new File([data], filename, { type: 'application/force-download' })
+ window.open(URL.createObjectURL(file))
}
-};
+}
+
+export const calculateDefaultRange = () => {
+ const now = new Date()
+ const currentYear = now.getFullYear()
+ const currentMonth = now.getMonth() // 0-11
+
+ // 计算上个月
+ let lastMonthYear = currentYear
+ let lastMonth = currentMonth - 1
+ if (lastMonth < 0) {
+ lastMonth = 11
+ lastMonthYear = currentYear - 1
+ }
+
+ // 设置默认范围 [上个月, 当前月]
+ return [new Date(lastMonthYear, lastMonth, 1), new Date(currentYear, currentMonth, 1)]
+}
--
Gitblit v1.9.3