¶Ô±ÈÐÂÎļþ |
| | |
| | | import {validatenull} from './validate' |
| | | //表ååºåå |
| | | export const serialize = data => { |
| | | 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)]; |
| | | }; |
| | | export const getViewDom = () => { |
| | | return window.document.getElementById('avue-view').getElementsByClassName('el-scrollbar__wrap')[0] |
| | | } |
| | | /** |
| | | * 对象深æ·è´ |
| | | */ |
| | | 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; |
| | | }; |
| | | /** |
| | | * 设置ç°åº¦æ¨¡å¼ |
| | | */ |
| | | export const toggleGrayMode = (status) => { |
| | | 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; |
| | | } |
| | | |
| | | /** |
| | | * å å¯å¤ç |
| | | */ |
| | | 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] = btoa(result[ele]); |
| | | }) |
| | | } else if (type == 'Aes') { |
| | | param.forEach(ele => { |
| | | result[ele] = window.CryptoJS.AES.encrypt(result[ele], key).toString(); |
| | | }) |
| | | |
| | | } |
| | | return result; |
| | | }; |
| | | |
| | | |
| | | /** |
| | | * æµè§å¨å¤ææ¯å¦å
¨å± |
| | | */ |
| | | export const fullscreenToggel = () => { |
| | | if (fullscreenEnable()) { |
| | | exitFullScreen(); |
| | | } else { |
| | | reqFullScreen(); |
| | | } |
| | | }; |
| | | /** |
| | | * escçå¬å
¨å± |
| | | */ |
| | | export const listenfullscreen = (callback) => { |
| | | function listen() { |
| | | callback() |
| | | } |
| | | |
| | | 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; |
| | | } |
| | | |
| | | /** |
| | | * æµè§å¨å
¨å± |
| | | */ |
| | | 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(); |
| | | } |
| | | }; |
| | | /** |
| | | * æµè§å¨éåºå
¨å± |
| | | */ |
| | | export const exitFullScreen = () => { |
| | | 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); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }; |
| | | /** |
| | | * 夿2ä¸ªå¯¹è±¡å±æ§å弿¯å¦ç¸ç |
| | | */ |
| | | |
| | | /** |
| | | * 卿æå
¥css |
| | | */ |
| | | |
| | | 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); |
| | | }; |
| | | /** |
| | | * å¤æè·¯ç±æ¯å¦ç¸ç |
| | | */ |
| | | export const diff = (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; |
| | | } |
| | | |
| | | 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; |
| | | }; |
| | | /** |
| | | * æ ¹æ®åå
¸çvalueæ¥æ¾å¯¹åºçindex |
| | | */ |
| | | export const findArray = (dic, value) => { |
| | | 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; |
| | | }; |
| | | /** |
| | | * æå¼å°çªå£ |
| | | */ |
| | | 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 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) |
| | | |
| | | // Puts focus on the newWindow |
| | | if (window.focus) { |
| | | newWindow.focus() |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * è·åé¡¶é¨å°åæ å°å |
| | | */ |
| | | export const getTopUrl = () => { |
| | | 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; |
| | | } |
| | | |
| | | /** |
| | | * ä¸è½½æä»¶ |
| | | * @param {String} path - æä»¶å°å |
| | | * @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); |
| | | } |
| | | }; |
| | | } |
| | | |
| | | /** |
| | | * ä¸è½½æä»¶ |
| | | * @param {String} path - æä»¶å°å |
| | | * @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); |
| | | }; |
| | | } |
| | | }; |
| | | } |
| | | |
| | | /** |
| | | * ä¸è½½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'}); |
| | | if (typeof window.chrome !== 'undefined') { |
| | | // Chrome |
| | | 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); |
| | | } else { |
| | | // Firefox |
| | | var file = new File([data], filename, {type: 'application/force-download'}); |
| | | window.open(URL.createObjectURL(file)); |
| | | } |
| | | } |