From e1699c4851f6ca397cd0ad1ff63f32c737654836 Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Wed, 02 Apr 2025 19:14:54 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
src/utils/util.js | 604 +++++++++++++++++++++++++++---------------------------
1 files changed, 302 insertions(+), 302 deletions(-)
diff --git a/src/utils/util.js b/src/utils/util.js
index 7de4a4e..8a7051b 100644
--- a/src/utils/util.js
+++ b/src/utils/util.js
@@ -1,176 +1,176 @@
-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 = [];
- Object.keys(data).forEach(ele => {
- list.push(`${ele}=${data[ele]}`);
- });
- return list.join('&');
-};
+ let list = []
+ Object.keys(data).forEach(ele => {
+ list.push(`${ele}=${data[ele]}`)
+ })
+ return list.join('&')
+}
export const getObjType = obj => {
- var toString = Object.prototype.toString;
- var map = {
- '[object Boolean]': 'boolean',
- '[object Number]': 'number',
- '[object String]': 'string',
- '[object Function]': 'function',
- '[object Array]': 'array',
- '[object Date]': 'date',
- '[object RegExp]': 'regExp',
- '[object Undefined]': 'undefined',
- '[object Null]': 'null',
- '[object Object]': 'object',
- };
- if (obj instanceof Element) {
- return 'element';
- }
- return map[toString.call(obj)];
-};
+ var toString = Object.prototype.toString
+ var map = {
+ '[object Boolean]': 'boolean',
+ '[object Number]': 'number',
+ '[object String]': 'string',
+ '[object Function]': 'function',
+ '[object Array]': 'array',
+ '[object Date]': 'date',
+ '[object RegExp]': 'regExp',
+ '[object Undefined]': 'undefined',
+ '[object Null]': 'null',
+ '[object Object]': 'object',
+ }
+ if (obj instanceof Element) {
+ return 'element'
+ }
+ return map[toString.call(obj)]
+}
/**
* 对象深拷贝
*/
export const deepClone = data => {
- var type = getObjType(data);
- var obj;
- if (type === 'array') {
- obj = [];
- } else if (type === 'object') {
- obj = {};
- } else {
- //不再具有下一层次
- return data;
- }
- if (type === 'array') {
- for (var i = 0, len = data.length; i < len; i++) {
- obj.push(deepClone(data[i]));
- }
- } else if (type === 'object') {
- for (var key in data) {
- obj[key] = deepClone(data[key]);
- }
- }
- return obj;
-};
+ var type = getObjType(data)
+ var obj
+ if (type === 'array') {
+ obj = []
+ } else if (type === 'object') {
+ obj = {}
+ } else {
+ //不再具有下一层次
+ return data
+ }
+ if (type === 'array') {
+ for (var i = 0, len = data.length; i < len; i++) {
+ obj.push(deepClone(data[i]))
+ }
+ } else if (type === 'object') {
+ for (var key in data) {
+ obj[key] = deepClone(data[key])
+ }
+ }
+ return obj
+}
/**
* 设置灰度模式
*/
export const toggleGrayMode = status => {
- if (status) {
- document.body.className = document.body.className + ' grayMode';
- } else {
- document.body.className = document.body.className.replace(' grayMode', '');
- }
-};
+ if (status) {
+ document.body.className = document.body.className + ' grayMode'
+ } else {
+ 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));
- if (type == 'Base64') {
- param.forEach(ele => {
- result[ele] = Base64.stringify(result[ele]);
- });
- } else if (type == 'Aes') {
- param.forEach(ele => {
- result[ele] = sha256(result[ele], key);
- });
- }
- return result;
-};
+ 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])
+ })
+ } else if (type == 'Aes') {
+ param.forEach(ele => {
+ result[ele] = sha256(result[ele], key)
+ })
+ }
+ return result
+}
/**
* 浏览器判断是否全屏
*/
export const fullscreenToggel = () => {
- if (fullscreenEnable()) {
- exitFullScreen();
- } else {
- reqFullScreen();
- }
-};
+ if (fullscreenEnable()) {
+ exitFullScreen()
+ } else {
+ reqFullScreen()
+ }
+}
/**
* esc监听全屏
*/
export const listenfullscreen = callback => {
- function listen() {
- callback();
- }
+ function listen() {
+ callback()
+ }
- document.addEventListener('fullscreenchange', function () {
- listen();
- });
- document.addEventListener('mozfullscreenchange', function () {
- listen();
- });
- document.addEventListener('webkitfullscreenchange', function () {
- listen();
- });
- document.addEventListener('msfullscreenchange', function () {
- listen();
- });
-};
+ document.addEventListener('fullscreenchange', function () {
+ listen()
+ })
+ document.addEventListener('mozfullscreenchange', function () {
+ listen()
+ })
+ document.addEventListener('webkitfullscreenchange', function () {
+ listen()
+ })
+ document.addEventListener('msfullscreenchange', function () {
+ listen()
+ })
+}
/**
* 浏览器判断是否全屏
*/
export const fullscreenEnable = () => {
- var isFullscreen =
- document.isFullScreen || document.mozIsFullScreen || document.webkitIsFullScreen;
- return isFullscreen;
-};
+ var isFullscreen =
+ document.isFullScreen || document.mozIsFullScreen || document.webkitIsFullScreen
+ return isFullscreen
+}
/**
* 浏览器全屏
*/
export const reqFullScreen = () => {
- if (document.documentElement.requestFullScreen) {
- document.documentElement.requestFullScreen();
- } else if (document.documentElement.webkitRequestFullScreen) {
- document.documentElement.webkitRequestFullScreen();
- } else if (document.documentElement.mozRequestFullScreen) {
- document.documentElement.mozRequestFullScreen();
- }
-};
+ if (document.documentElement.requestFullScreen) {
+ document.documentElement.requestFullScreen()
+ } else if (document.documentElement.webkitRequestFullScreen) {
+ document.documentElement.webkitRequestFullScreen()
+ } else if (document.documentElement.mozRequestFullScreen) {
+ document.documentElement.mozRequestFullScreen()
+ }
+}
/**
* 浏览器退出全屏
*/
export const exitFullScreen = () => {
- if (document.documentElement.requestFullScreen) {
- document.exitFullScreen();
- } else if (document.documentElement.webkitRequestFullScreen) {
- document.webkitCancelFullScreen();
- } else if (document.documentElement.mozRequestFullScreen) {
- document.mozCancelFullScreen();
- }
-};
+ if (document.documentElement.requestFullScreen) {
+ document.exitFullScreen()
+ } else if (document.documentElement.webkitRequestFullScreen) {
+ document.webkitCancelFullScreen()
+ } else if (document.documentElement.mozRequestFullScreen) {
+ document.mozCancelFullScreen()
+ }
+}
/**
* 递归寻找子类的父类
*/
export const findParent = (menu, id) => {
- for (let i = 0; i < menu.length; i++) {
- 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];
- } else {
- if (menu[i].children[j].children.length != 0) {
- return findParent(menu[i].children[j].children, id);
- }
- }
- }
- }
- }
-};
+ for (let i = 0; i < menu.length; i++) {
+ 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]
+ } else {
+ if (menu[i].children[j].children.length != 0) {
+ 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;
- if (!o1 || !o2) {
- /* 判断不是对象 */
- return obj1 === obj2;
- }
+ delete obj1.close
+ var o1 = obj1 instanceof Object
+ var o2 = obj2 instanceof Object
+ if (!o1 || !o2) {
+ /* 判断不是对象 */
+ return obj1 === obj2
+ }
- if (Object.keys(obj1).length !== Object.keys(obj2).length) {
- return false;
- //Object.keys() 返回一个由对象的自身可枚举属性(key值)组成的数组,例如:数组返回下表:let arr = ["a", "b", "c"];console.log(Object.keys(arr))->0,1,2;
- }
+ if (Object.keys(obj1).length !== Object.keys(obj2).length) {
+ 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;
- if (t1 && t2) {
- return diff(obj1[attr], obj2[attr]);
- } else if (obj1[attr] !== obj2[attr]) {
- return false;
- }
- }
- return true;
-};
+ for (var attr in obj1) {
+ var t1 = obj1[attr] instanceof Object
+ var t2 = obj2[attr] instanceof Object
+ if (t1 && t2) {
+ return diff(obj1[attr], obj2[attr])
+ } else if (obj1[attr] !== obj2[attr]) {
+ return false
+ }
+ }
+ return true
+}
/**
* 根据字典的value显示label
*/
export const findByvalue = (dic, 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);
- if (index != -1) {
- result = dic[index].label;
- } else {
- result = value;
- }
- } else if (value instanceof Array) {
- result = [];
- let index = 0;
- value.forEach(ele => {
- index = findArray(dic, ele);
- if (index != -1) {
- result.push(dic[index].label);
- } else {
- result.push(value);
- }
- });
- result = result.toString();
- }
- return result;
-};
+ let result = ''
+ if (validatenull(dic)) return value
+ if (typeof value == 'string' || typeof value == 'number' || typeof value == 'boolean') {
+ let index = 0
+ index = findArray(dic, value)
+ if (index != -1) {
+ result = dic[index].label
+ } else {
+ result = value
+ }
+ } else if (value instanceof Array) {
+ result = []
+ let index = 0
+ value.forEach(ele => {
+ index = findArray(dic, ele)
+ if (index != -1) {
+ result.push(dic[index].label)
+ } else {
+ result.push(value)
+ }
+ })
+ result = result.toString()
+ }
+ 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 -1;
-};
+ for (let i = 0; i < dic.length; i++) {
+ if (dic[i].value == value) {
+ return i
+ }
+ }
+ return -1
+}
/**
* 生成随机len位数字
*/
export const randomLenNum = (len, date) => {
- let random = '';
- random = Math.ceil(Math.random() * 100000000000000)
- .toString()
- .substr(0, len ? len : 4);
- if (date) random = random + Date.now();
- return random;
-};
+ let random = ''
+ random = Math.ceil(Math.random() * 100000000000000)
+ .toString()
+ .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;
+ // 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 width = window.innerWidth
- ? window.innerWidth
- : document.documentElement.clientWidth
- ? document.documentElement.clientWidth
- : screen.width;
- const height = window.innerHeight
- ? window.innerHeight
- : document.documentElement.clientHeight
- ? document.documentElement.clientHeight
- : screen.height;
+ const width = window.innerWidth
+ ? window.innerWidth
+ : document.documentElement.clientWidth
+ ? document.documentElement.clientWidth
+ : screen.width
+ const height = window.innerHeight
+ ? window.innerHeight
+ : document.documentElement.clientHeight
+ ? document.documentElement.clientHeight
+ : screen.height
- 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
- );
+ 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
+ )
- // Puts focus on the newWindow
- if (window.focus) {
- newWindow.focus();
- }
-};
+ // Puts focus on the newWindow
+ if (window.focus) {
+ newWindow.focus()
+ }
+}
export const getScreen = isCollapse => {
- if (document.body.clientWidth <= 768) {
- return !isCollapse;
- } else {
- return isCollapse;
- }
-};
+ if (document.body.clientWidth <= 768) {
+ return !isCollapse
+ } else {
+ 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();
- 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;
- }
- 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 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
+ }
+ 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,26 +368,26 @@
* @param {String} name - 文件名,eg: test.png
*/
export const downloadFileBase64 = (path, name) => {
- 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);
- 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 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)
+ 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)
+ }
+ }
+ }
+}
/**
* 下载excel
@@ -395,8 +395,8 @@
* @param {String} filename 文件名称
*/
export const downloadXls = (fileArrayBuffer, filename) => {
- downloadFile(fileArrayBuffer, filename, 'application/vnd.ms-excel,charset=utf-8');
-};
+ downloadFile(fileArrayBuffer, filename, 'application/vnd.ms-excel,charset=utf-8')
+}
/**
* 下载json
@@ -404,8 +404,8 @@
* @param {String} filename 文件名称
*/
export const downloadJson = (fileArrayBuffer, filename) => {
- downloadFile(fileArrayBuffer, filename, 'application/json,charset=utf-8');
-};
+ downloadFile(fileArrayBuffer, filename, 'application/json,charset=utf-8')
+}
/**
* 下载文件
@@ -414,20 +414,20 @@
* @param mimeType 文件类型
*/
export const downloadFile = (fileArrayBuffer, filename, mimeType = 'application/octet-stream') => {
- let data = new Blob([fileArrayBuffer], { type: mimeType });
- if (typeof window.chrome !== 'undefined') {
- // Chrome
- let link = document.createElement('a');
- link.href = window.URL.createObjectURL(data);
- link.download = filename;
- link.click();
- } else if (typeof window.navigator.msSaveBlob !== 'undefined') {
- // IE
- let blob = new Blob([data], { type: 'application/force-download' });
- window.navigator.msSaveBlob(blob, filename);
- } else {
- // Firefox
- let file = new File([data], filename, { type: 'application/force-download' });
- window.open(URL.createObjectURL(file));
- }
-};
+ let data = new Blob([fileArrayBuffer], { type: mimeType })
+ if (typeof window.chrome !== 'undefined') {
+ // Chrome
+ let link = document.createElement('a')
+ link.href = window.URL.createObjectURL(data)
+ link.download = filename
+ link.click()
+ } else if (typeof window.navigator.msSaveBlob !== 'undefined') {
+ // IE
+ let blob = new Blob([data], { type: 'application/force-download' })
+ window.navigator.msSaveBlob(blob, filename)
+ } else {
+ // Firefox
+ let file = new File([data], filename, { type: 'application/force-download' })
+ window.open(URL.createObjectURL(file))
+ }
+}
--
Gitblit v1.9.3