/** * 程序通用函数 * @type {{assignObj: (function(*=, *=): *), exitFullScreen: progFunction.exitFullScreen, isFullScreen: (function(): boolean), getMaxZIndex: (function(): any), fullScreen: progFunction.fullScreen}} */ progFunction = { /** * 功能描述 * @author LiuHuiYu * Created DateTime 2021-03-15 9:00 * @param url * @param data * @param backFunction {success,error,complete}回调函数 * @return */ ajax: function (url, data, backFunction) { if (typeof (backFunction.beforeSend) === "undefined") { backFunction.beforeSend = function (xhr) { xhr.setRequestHeader("Authorization", "Basic " + btoa("test:test")); }; } $.ajax({ type: "POST", url: url, dataType: "json", async: true, data: data, traditional: true, beforeSend: function (xhr) { backFunction.beforeSend(xhr); }, success: function (res) { if (res.success) { progFunction.runFunc(backFunction.success, res.data); } else { // debugger; progFunction.runFunc(backFunction.error, res.msg); } }, error: function (res) { // debugger; progFunction.runFunc(backFunction.error, "错误码:" + res.status); }, complete: function () { progFunction.runFunc(backFunction.complete); } }); }, runFunc: function (runFunction, v1, v2, v3, v4, v5) { if (typeof (runFunction) === "function") { runFunction(v1, v2, v3, v4, v5); } }, /** * 进入全屏 */ fullScreen: function () { try { let docElm = document.documentElement; //W3C if (docElm.requestFullscreen) { docElm.requestFullscreen(); } //FireFox else if (docElm.mozRequestFullScreen) { docElm.mozRequestFullScreen(); } //Chrome等 else if (docElm.webkitRequestFullScreen) { docElm.webkitRequestFullScreen(); } //IE11 else if (docElm.msRequestFullscreen) { docElm.msRequestFullscreen(); } } catch (error) { console.error("执行全屏失败:", error); } }, /** * 节点全屏 * @author LiuHuiYu * Created DateTime 2021-03-05 15:01 * @param element 元素 * @return */ launchFullScreen: function (element) { if (element.requestFullscreen) { element.requestFullscreen(); } else if (element.mozRequestFullScreen) { element.mozRequestFullScreen();//火狐 } else if (element.msRequestFullscreen) { element.msRequestFullscreen();//ie浏览器 document.getElementById("fullScreen").style.height = window.screen.height + "px"; document.getElementById("fullScreen").style.width = document.documentElement.clientWidth + "px"; } else if (element.webkitRequestFullscreen) { element.webkitRequestFullScreen();//谷歌浏览器 } }, /** * 退出全屏 */ exitFullScreen: function () { if (document.exitFullscreen) { document.exitFullscreen(); } else if (document.mozCancelFullScreen) { document.mozCancelFullScreen(); } else if (document.webkitCancelFullScreen) { document.webkitCancelFullScreen(); } else if (document.msExitFullscreen) { document.msExitFullscreen(); } }, /** * 当前是否全屏 * @returns {boolean, undefined}ie11检测不到是否全屏 */ isFullScreen: function () { if (document.fullscreen !== undefined) { return document.fullscreen; } else if (document.mozFullScreen !== undefined) { return document.mozFullScreen; } else if (document.webkitIsFullScreen !== undefined) { return document.webkitIsFullScreen; } else if (document.webkitFullScreen !== undefined) { return document.webkitFullScreen; } else if (document.msFullScreen !== undefined) { return document.msFullScreen; } else { return undefined; } }, /** * 最大的 zIndex 获取 * @returns {number} */ getMaxZIndex: function () { return Math.max.apply(null, $.map($('body *'), function (e) { if ($(e).css('position') !== 'static') return parseInt($(e).css('z-index')) || -1; })); }, /** * 对象合并 * @param target 原始对象 * @param sources 加入的合并数据 * @returns {*} */ assignObj: function (target, sources) { let obj = target; if (typeof target != 'object' || typeof sources == 'function') { if (typeof target == 'function' && typeof sources != 'function') { return target; } return sources; } if (typeof sources != 'object') { return target; } for (let key in sources) { if (sources.hasOwnProperty(key)) { // 如果target也存在 那就再次合并 obj[key] = target.hasOwnProperty(key) ? progFunction.assignObj(target[key], sources[key]) : sources[key]; } } return obj; }, /** * 深层复制 * @author LiuHuiYu * Created DateTime 2021-03-03 10:22 * @param obj * @return */ clone: function (obj) { let o; if (typeof obj == "object") { if (obj === null) { o = null; } else { if (obj instanceof Array) { o = []; for (let i = 0, len = obj.length; i < len; i++) { o.push(progFunction.clone(obj[i])); } } else { o = {}; for (let j in obj) { if (obj.hasOwnProperty(j)) { o[j] = progFunction.clone(obj[j]); } } } } } else { o = obj; } return o; }, stringIsEmpty: function (obj) { return typeof (obj) == "string" && obj.trim() === ""; }, stringIsNotEmpty: function (obj) { return typeof (obj) == "string" && obj.trim() !== ""; }, /** * 默认赋值 * @author LiuHuiYu * Created DateTime 2021-03-16 9:56 * @param inputValue 传入值 * @param defValue 默认返回值(null) * @param allowNull 允许null * @return */ defaultValue: function (inputValue, defValue, allowNull) { if (allowNull === undefined) { allowNull = false; } if (inputValue === undefined || (inputValue === null && !allowNull)) { if (defValue === undefined) { return null; } return defValue; } return inputValue; }, /** * 是否是ie浏览器 * @returns {boolean} * @constructor */ isIE: function () { return (!!window.ActiveXObject || "ActiveXObject" in window); }, /** * 遍历循环map * @author LiuHuiYu * Created DateTime 2021-03-06 15:07 * @param map 循环map * @param func(value,key) 对象操作 * @return 是否结束循环 */ forMap: function (map, func) { for (let key in map) { if (map.hasOwnProperty(key)) { let res = func(map[key], key); if (res === true) { break; } } } }, /** * 遍历循环 array(反向循环) * @author LiuHuiYu * Created DateTime 2021-03-08 11:12 * @param array 数组 * @param func 便利函数返回true 结束循环 * @return boolean 是否终止循环跳出 */ forArray: function (array, func) { let isBreak = false; for (let index = array.length - 1; index >= 0; index--) { isBreak = func(array[index], index); if (isBreak === true) { break; } } return isBreak; }, formatDate: function (date, fmt) { if (/(y+)/.test(fmt)) { fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length)); } let o = { 'M+': date.getMonth() + 1, 'd+': date.getDate(), 'h+': date.getHours(), 'm+': date.getMinutes(), 's+': date.getSeconds() }; for (let k in o) { let t = new RegExp('(' + k + ')'); if (t.test(fmt)) { let str = o[k] + ''; fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str)); } } function padLeftZero(str) { return ('00' + str).substr(str.length) } return fmt; }, formatTimestamp: function (timestamp, fmt) { let date = new Date(timestamp); return progFunction.formatDate(date, fmt) }, /** * 获取随机数 * @author LiuHuiYu * Created DateTime 2021-03-18 15:02 * @param start 最小数 * @param end 最大数 * @param fixed 是整数 * @return */ getRandom: function (start, end, fixed) { if (fixed === undefined) { fixed = 0; } let differ = end - start let random = Math.random() return (start + differ * random).toFixed(fixed) }, /** * 消息管理 * @author LiuHuiYu * Created DateTime 2021-04-29 16:07 * @param null * @return null */ messageQueueManagement: { /** * 创建消息管理 * @author LiuHuiYu * Created DateTime 2021-04-29 16:07 * @param props {backFunction} * @return null */ create: function (props) { let baseProps = {backFunction: null}; let nowProps = progFunction.assignObj(baseProps, props); let mqList = []; function newInfo(info) { let newV = { id: "mq" + performance.now() + "_" + Math.floor(Math.random() * 100000000), info: info, } mqList.push(newV); change("D", message); return newV; } function removeInfo(message) { for (let i = mqList.length - 1; i >= 0; i--) { if (mqList[i].id === message.id) { mqList.splice(i, 1); change("D", message); return; } } } function change(type, data) { if (nowProps.backFunction) { nowProps.backFunction(type, data); } } return { putInfo: function (info) { return newInfo(info); }, removeInfo: function (message) { removeInfo(message) }, getList: function () { return mqList; } }; } }, }