/** 通用的工具类 @author weidy */ /** * 去除前后空格 */ String.prototype.trim = function(){ try { return this.replace(/(^\s*)|(\s*$)/g, ''); }catch (e){ return this; } }; /** * 数组元素索引,没有该值时返回-1 */ Array.prototype.indexOf = function(val) { for (var i = 0; i < this.length; i++) { if (this[i] == val) return i; } return -1; }; Array.prototype.remove = function(val) { var index = this.indexOf(val); if (index > -1) { this.splice(index, 1); } }; window.innerWidth =window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; window.innerHeight =window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; (function($){ vciWebUtil=function() { this.sessionInfoKey = { orgsOid: 'orgsOid', //用户所属组织 orgsName: 'orgsName',//用户所属组织名称 deptOid: 'deptOid',//所属部门 deptName: 'deptName',//所属部门名称 userOid: 'userOid',//用户主键 userId: 'userId',//用户名 userName: 'userName',//用户姓名 personOid: 'personOid',//用户身份主键 personName: 'personName',//真实身份名称 workgroupOid: 'workgroupOid',//所属班组--这个是MES208独有的 workgroupName: 'workgroupName',//所属班组名称--这个是MES208独有的 usertype: 'usertype',//用户的类型 usertypeText: 'usertypeText',//用户类型文本 sex: 'sex',//性别 sextext: 'sextext',//性别名称 photoUrl: 'photoUrl',//用户头像 isMustChangePassword: 'isMustChangePassword', //是否马上修改密码 passwordInfo: 'passwordInfo', token: 'token', userSecret: 'userSecret', userSecretText: 'userSecretText' }; this.systemValueKey = { currentDateTime: 'curentDateTime', currentDateTimeE: 'curentDateTimeE', currentDateTimeSSS: 'curentDateTimeSSS', currentDate: 'currentDate', currentTime: 'currentTime', uuid: 'uuid', orgsOid: 'orgsOid', orgsName: 'orgsName', deptOid: 'deptOid', deptName: 'deptName', userOid: 'userOid', userId: 'userId', userName: 'userName', personOid: 'personOid', personName: 'personName', workgroupOid: 'workgroupOid', workgroupName: 'workgroupName', usertype: 'usertype', usertypeText: 'usertypeText', sex: 'sex', sextext: 'sextext', photoUrl: 'photoUrl', isMustChangePassword: 'isMustChangePassword', passwordInfo: 'passwordInfo', ip: 'ip', language: 'language', userSecret: 'userSecret', userSecretText: 'userSecretText' }; this.deptOid = ''; // 登录时保存用户部门 this.uuid = function () { var s = []; var hexDigits = "0123456789ABCDEF"; for (var i = 0; i < 36; i++) { s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1); } s[14] = "4"; s[19] = hexDigits.substr(s[19] & 0x3 | 0x8, 1); s[8] = s[13] = s[18] = s[23] = "-"; return s.join(''); }; this.isNotNull = function (v) {//不为空 if (v != undefined && v != null && v.toString().length > 0) return true; else return false; }; this.objIsNull = function (v) { var result = true; for (var key in v) { if (v[key]) { result = false; break; } } return result; }; this.isNull = function (v) {//为空 var me = this; return !me.isNotNull(v); }; this.endWith = function (string, subStr) {//以什么结尾 string=string.toString(); var me = this; if (me.isNull(string) || me.isNull(subStr)) return false; if (string.length < subStr.length) return false; if (string.substring(string.length - subStr.length) == subStr) return true; else return false; }; this.startWith = function (string, subStr) {//以什么开头 string=string.toString(); var me = this; if (me.isNull(string) || me.isNull(subStr)) return false; if (string.length < subStr.length) return false; if (string.substring(0, subStr.length) == subStr) return true; else return false; }; this.isArray = function (array) { if (!array) { return false; } else { if (Object.prototype.toString.call(array) == '[object Array]') { return true; } else { return false; } } }; this.inArray = function (array, v) {//是否在数组中 try { for (var i = 0; i < array.length; i++) { if (v == array[i]) return true; } } catch (e) { } return false; }; this.removeFormArray = function (array, v, attr) { try { for (var i = 0; i < array.length; i++) { if (v == array[i] || (attr && array[i][attr] == v[attr])) { array.splice(i, 1); return true; } } } catch (e) { } }; this.showMsgFromResult = function (result, defaultMsg, callback) { if (!result) { result = { msg: defaultMsg }; } if (result && this.isNull(result.msg)) { result.msg = defaultMsg; } this.showMsg(result.msg, callback); }; this.showMsg = function (msg, callBack) {//显示信息 if (!msg) { msg = ""; } if (callBack) { top.layer.msg(msg, callBack); } else { top.layer.msg(msg); } }; this.showDebugMsg = function (msg) { if (!msg) { msg = ""; } if (top.isDebug) { try { console.log(msg); } catch (e) { } } }; this.showConfirmMsg = function (title, callback, cancleCallback) { var lastCallback = function (index) { if (callback) { callback(index); } top.layer.close(index); }; top.layer.confirm(title, {icon: 3, title: '需要您确认'}, lastCallback, cancleCallback); }; this.showErrorMsg = function (msg, callback) { if (!msg) { msg = ""; } var lastCallback = function (index) { if (callback) { callback(index); } top.layer.close(index); }; top.layer.alert(msg, lastCallback); if (top.isDebug && console) {//调试的时候把引用方法的信息打印出来 try { throw msg; } catch (e) { var caller = arguments.callee; //console.log(caller.caller); } } }; this.showAutoMsg = function (msg, timeout, callback) { if (!msg) { msg = ""; } top.layer.msg(msg, {icon: 1, time: timeout}, callback); }; this.showProgress = function (text) { if (top.progressIndex) { }else { //this.closeProgress(); try { if (this.isNotNull(text)) { top.progressIndex = top.layer.load(2, {content: text, area: ['350px', 'auto']}); $(".layui-layer-loading2").css("width", "100%"); $(".layui-layer-loading2").css("background-positionX", "30px"); $(".layui-layer-loading2").css("background-positionY", "center"); $(".layui-layer-loading2").css("background-color", "#fff"); $(".layui-layer-loading2").css("line-height", "30px"); $(".layui-layer-loading2").css("font-size", "20px"); $(".layui-layer-loading2").css("font-weight", "bold") $(".layui-layer-loading2").css("display", "table") $(".layui-layer-loading2 .layui-layer-content-pane").css("display", "table-cell") $(".layui-layer-loading2 .layui-layer-content-pane").css("vertical-align", "middle") $(".layui-layer-loading2 .layui-layer-content-pane").css("padding", "30px 30px 30px 85px"); } } catch (e) { } } }; this.closeProgress = function () { try { if (top.progressIndex) { top.layer.close(top.progressIndex); top.progressIndex = null; } } catch (e) { } }; this.checkResult = function (result) {//检查结果,异步请求的时候使用这个 var me = this; try { if (!result) { me.showMsg("没有返回结果"); return false; } if (result && result.isNoLogin) { me.showLoginDialog(); return false; } if (result && result.isNoRigh) { me.showMsg("你没有权限做此操作"); return false; } if (!result.success) { me.showMsg(result.msg); return false; } return true; } catch (e) { } return false; }; this.processNullForObject = function (obj) {//处理空值 var me = this; if (obj && typeof obj == "object") { for (var key in obj) { var value = obj[key]; if (me.isNull(value)) value = ""; } } }; this.getIEVersion = function () { var IEVersion = {}; if (navigator.userAgent.toLowerCase().indexOf("msie") > -1) { IEVersion['isIE'] = true; var version = $.browser.version; version = parseInt(version.substring(0, version.indexOf('.'))); if (version <= 8) { IEVersion['isIE8'] = true; } } else { IEVersion['isIE'] = false; } return IEVersion; }; /** * 支持系统参数包括: */ this.getSystemVar = function (code) { var me = this; if (me.isNull(code)) return ""; if (me.systemValueKey.currentDateTime == code) { return me.getSystemVar(me.systemValueKey.currentDate) + " " + me.getSystemVar(me.systemValueKey.currentTime); } if (me.systemValueKey.currentDateTimeSSS == code) { var date = new Date(); return me.getSystemVar(me.systemValueKey.currentDateTime) + "." + date.getMilliseconds(); } if (me.systemValueKey.currentDate == code) { var date = new Date(); var month = date.getMonth() + 1; if (month >= 1 && month <= 9) month = "0" + month; var day = date.getDate(); if (day >= 0 && day <= 9) day = "0" + day; return date.getFullYear() + "-" + month + "-" + day; } if (me.systemValueKey.currentDateTimeE == code) {//含有星期几 var date = new Date(); var week = date.getDay(); var weekName = ['日', '一', '二', '三', '四', '五', '六']; dateStr += " 星期" + weekName[week]; return me.getSystemVar(me.systemValueKey.currentDateTime) + dateStr; } if (me.systemValueKey.currentTime == code) { var date = new Date(); var hours = date.getHours(); if (hours >= 0 && hours <= 9) hours = "0" + hours; var minutes = date.getMinutes(); if (minutes >= 0 && minutes <= 9) minutes = "0" + minutes; var secends = date.getSeconds(); if (secends >= 0 && secends <= 9) secends = "0" + secends; return hours + ":" + minutes + ":" + secends; } if (me.systemValueKey.uuid == code) { return me.uuid(); } var value = top.mySessionInfo[code]; if (value == undefined || value == null) return ""; else return value; }; this.isSso = function () { var me = this; return me.getSystemVar('sso'); }; this.getSsoinfo = function () { var me = this; return me.getSystemVar('ssoInfo'); }; this.getToken = function () { var me = this; var token = me.getSystemVar(me.sessionInfoKey.token); if (!token) { token = $.cookie(TOKEN_KEY); } return token; }; this.getWorkGroupName = function () { var me = this; return me.getSystemVar(me.sessionInfoKey.workgroupName); }; this.getRolesName = function () { var me = this; return me.getSystemVar("rolesname") }; this.isNumber = function (value) { var reg = new RegExp("^[0-9]+$"); if (reg.test(value)) { return true; } else { return false; } }; this.isValidCharactor = function (value) { var reg = new RegExp("^[0-9A-Za-z_]*$"); if (reg.test(value)) { return true; } else { return false; } }; this.dateFormate = { dateTime: 'yyyy-MM-dd HH:mm:ss', date: 'yyyy-MM-dd', dateNoSecond: 'yyyy-MM-dd HH:mm' }; this.formateDateTime = function (value) { return this.formateDateByFormate(value, 'yyyy-MM-dd HH:mm:ss'); }; this.formateDateTimeNoSecond = function (value) { var that = this; return this.formateDateByFormate(value, 'yyyy-MM-dd HH:mm'); }; this.formateDate = function (value) { return this.formateDateByFormate(value, 'yyyy-MM-dd'); }; this.formateDateByFormate = function (value, formate) { if (value != null && formate != null) { //验证value var valueType = typeof value; if (valueType == 'number') { value = value.toString(); } if (value.substring(0, 4).indexOf("-") != -1 || value.substring(0, 4).indexOf("/") != -1) { value = "20" + value } return layui.util.toDateString(value, formate); } else { return ""; } }; this.formateUserSecret = function (value) { if (value * 1 == 30) { return "重要"; } else if (value * 1 == 20) { return "一般"; } else if (value * 1 == 10) { return "内部"; } else { return "默认[内部]" } }; this.formateDataSecret = function (value) { if (value * 1 == 30) { return "机密"; } else if (value * 1 == 20) { return "秘密"; } else if (value * 1 == 10) { return "非密"; } else { return "默认[非密]" } }; this.formateBoolean = function (value) { if (!value) { return '否'; } if (value == true || (value != null && 'true' == value.toLowerCase())) { return "是"; } return "否"; }; this.displayButton = function (buttonInfo) {//显示/隐藏按钮 for (var buttonId in buttonInfo) { if (buttonInfo[buttonId]) { $(buttonId).show(); } else { $(buttonId).hide(); } } }; this.getObjectLength = function (obj) {//获取对象里的属性个数 if (!obj) { return 0; } else { var l = 0; for (var key in obj) { l++; } return l; } }; this.getOidFromGrid = function (gridId, checkEmpty, checkOne, pk) { if (!pk) { pk = "oid"; } var checkData = layui.table.checkStatus(gridId); var oids = ""; if (checkData && checkData.data && checkData.data.length > 0) { var rows = checkData.data; for (var i = 0; i < rows.length; i++) { var value = rows[i][pk]; if (!value || value == "undefined") { value = ""; } if (i == rows.length - 1) { oids += value; } else { oids += value + ","; } } } var me = this; if (checkEmpty && me.isNull(oids)) { me.showErrorMsg("没有选择数据"); return false; } if (checkOne && oids.indexOf(",") > -1) { me.showErrorMsg("每次只能选择一条数据"); return false; } return oids; }; //格式如jsPath#methodName?param=aaa¶m1=bbb this.getUrlParams = function (url, urlobj, splitMethod, splitParams) { if (!urlobj) { urlobj = { jsPath: '', methodName: '', params: {} } } if (!urlobj['params']) { urlobj['params'] = {} } if (!splitMethod) { splitMethod = '#' } if (!splitParams) { splitParams = '&' } if (url && url != 'null') { urlobj['jsPath'] = url.split('?')[0].split(splitMethod)[0]; if (url.indexOf(splitMethod) > -1) { urlobj['methodName'] = url.split('?')[0].split(splitMethod)[1]; } else { urlobj['methodName'] = 'doAction' } if (url.indexOf('?') > -1) { var params = url.split('?')[1].split(splitParams); layui.each(params, function (i, item) { urlobj['params'][item.split('=')[0]] = item.split('=')[1] }) } } return urlobj } this.postJsonP = function (ip, funcName, data, callback, failcallback) { if (!ip || this.isNull(ip)) { alert("这个页面没有传递ip地址"); return; } var url = "http://" + ip + funcName; $.ajax({ type: 'post', url: url, dataType: 'jsonp', data: data, cache: false, async: false, success: function (json) { if (json && callback) { callback(json); } }, error: function (result) { if (failcallback) { failcallback(result); } } }); }; this.post = function (url, data, callback, errorCallback, newPath, noprogress, isasync) { var that = this; if (isasync) { that.async("post", url, data, callback, errorCallback, newPath, noprogress); } else { that.ajax("post", url, data, callback, errorCallback, newPath, noprogress); } }; this.ajax = function (requestType, url, data, callback, errorCallback, newPath, noprogres) { var that = this; url = newPath ? newPath + url : (that.startWith(url, "http:") ? url : (path + url)); if (!noprogres) { that.showProgress("执行中,请稍候..."); } var header = {}; header[TOKEN_KEY] = that.getToken(); $.ajax({ type: requestType, headers: header, url: url, data: data, cache: false, contentType: "application/x-www-form-urlencoded", success: function (data) { that.closeProgress(); var result = {}; if (typeof (data) == 'string') { if (data && data.length > 0) result = eval("(" + data + ")"); } else { result = data; } if (callback) { callback(result); } }, error: function (xhr, error) { that.closeProgress(); if (errorCallback) { errorCallback(xhr, error); } } }); }; this.manualAjax = function (requestType, url, data, callback, errorCallback, newPath, noprogres) { var that = this; jQuery.support.cors = true; url = newPath ? newPath + url : (that.startWith(url, "http:") ? url : (path + url)); if (!noprogres) { that.showProgress("执行中,请稍候..."); } var header = {}; header[TOKEN_KEY] = that.getToken(); $.ajax({ type: requestType, headers: header, url: url, data: data, cache: false, contentType: "application/json", success: function (data) { that.closeProgress(); var result = {}; if (typeof (data) == 'string') { if (data && data.length > 0) result = eval("(" + data + ")"); } else { result = data; } if (callback) { callback(result); } }, error: function (xhr, error) { that.closeProgress(); if (errorCallback) { errorCallback(xhr, error); } } }); }; this.async = function (requestType, url, data, callback, errorCallback, newPath, noprogres) { var that = this; jQuery.support.cors = true; url = newPath ? newPath + url : (that.startWith(url, "http:") ? url : (path + url)); if (!noprogres) { that.showProgress("执行中,请稍候..."); } var header = {}; header[TOKEN_KEY] = that.getToken(); $.ajax({ type: requestType, async: true, headers: header, //crossDomain: true == !(document.all), url: url, data: data, success: function (data) { that.closeProgress(); var result = {}; if (typeof (data) == 'string') { if (data && data.length > 0) result = eval("(" + data + ")"); } else { result = data; } if (callback) { callback(result); } }, error: function (xhr, error) { that.closeProgress(); if (errorCallback) { errorCallback(xhr, error); } } }); }; // 同步 this.synchro = function (url, data, callback, errorCallback, newPath, noprogres) { var that = this; jQuery.support.cors = true; url = newPath ? newPath + url : (that.startWith(url, "http:") ? url : (path + url)); if (!noprogres) { that.showProgress("执行中,请稍候..."); } var header = {}; header[TOKEN_KEY] = that.getToken(); $.ajax({ type: 'get', async: false, headers: header, url: url, data: data, success: function (data) { that.closeProgress(); var result = {}; if (typeof (data) == 'string') { if (data && data.length > 0) result = eval("(" + data + ")"); } else { result = data; } if (callback) { callback(result); } }, error: function (xhr, error) { that.closeProgress(); if (errorCallback) { errorCallback(xhr, error); } } }); }; // 同步 this.syncpost = function (url, data, callback, errorCallback, newPath, noprogres) { var that = this; jQuery.support.cors = true; url = newPath ? newPath + url : (that.startWith(url, "http:") ? url : (path + url)); if (!noprogres) { that.showProgress("执行中,请稍候..."); } var header = {}; header[TOKEN_KEY] = that.getToken(); $.ajax({ type: 'post', async: false, headers: header, url: url, data: data, success: function (data) { that.closeProgress(); var result = {}; if (typeof (data) == 'string') { if (data && data.length > 0) result = eval("(" + data + ")"); } else { result = data; } if (callback) { callback(result); } }, error: function (xhr, error) { that.closeProgress(); if (errorCallback) { errorCallback(xhr, error); } } }); }; this.get = function (url, data, callback, errorCallback, newPath, noProgress, isAsync) { var that = this; if (isAsync) { that.async("get", url, data, callback, errorCallback, newPath, noProgress); } else { that.ajax("get", url, data, callback, errorCallback, newPath, noProgress); } }; this.put = function (url, data, callback, errorCallback, newPath, noProgress, isAsync) { var that = this; if (isAsync) { that.async("put", url, data, callback, errorCallback, newPath, noProgress); } else { that.ajax("put", url, data, callback, errorCallback, newPath, noProgress); } }; this.deleteRequest = function (url, data, callback, errorCallback, newPath, noProgress, isAsync) { var that = this; if (isAsync) { that.async("delete", url, data, callback, errorCallback, newPath, noProgress); } else { that.ajax("delete", url, data, callback, errorCallback, newPath, noProgress); } }; this.postForCheckId = function (url, data, callback, errorCallback, newPath, showProgress, isasync, noprogress) { var that = this; jQuery.support.cors = true; url = newPath ? newPath + url : (that.startWith(url, "http:") ? url : (path + url)); var header = {}; header[TOKEN_KEY] = that.getToken(); $.ajax({ type: 'post', async: !isasync, headers: header, url: url, data: data, success: function (data) { var result = {}; if (typeof (data) == 'string') { if (data && data.length > 0) result = eval("(" + data + ")"); } else { result = data; } if (callback) { callback(result); } }, error: function (xhr, error) { //that.closeProgress(); if (errorCallback) { errorCallback(xhr, error); } } }); }; this.postSetHeader = function (url, data, callback, errorCallback, newPath) { var that = this; jQuery.support.cors = true; url = newPath ? newPath + url : (that.startWith(url, "http:") ? url : (path + url)); $.ajax({ type: 'post', async: true, url: url, data: data, headers: {TOKEN_KEY: that.getToken(), 'appCode': '123', 'userId': that.getCurrentUserId()}, success: function (data) { var result = {}; if (typeof (data) == 'string') { if (data && data.length > 0) result = eval("(" + data + ")"); } else { result = data; } if (callback) { callback(result); } }, error: function (xhr, error) { //that.closeProgress(); if (errorCallback) { errorCallback(xhr, error); } } }); }; /** * 根据源数据来获取按钮 */ this.getButtionsBySourceData = function (sourceData, callback, backPath) { var me = this; if (sourceData) { me.getButtionsByFunctionId(sourceData['functionId'], callback, backPath); } else { me.showDebugMsg("来源数据中没有functionId参数的值"); if (callback) { callback([]); } } }; /** * 根据菜单的编号获取按钮 */ this.getButtionsByFunctionId = function (functionId, callback, backPath) { var me = this; if (me.isNull(functionId)) { if (callback) { callback([]); } } else { me.post("/webMenuController/getButtonsByFunctionId", {functionId: functionId}, function (result) { if (callback) { callback(result); } }, function (xhr, error) { if (callback) { callback([]); } }, backPath); } }; /** * 创建按钮的html * @param sourceData 来源数据 * @param buttonIconMap 按钮的图标映射, * @param buttonDivHtml 按钮所在div的元素对象 * @param appendButtons 不受权限控制的按钮 * @param callback 回调事件 * @param backPath 后台路径,常空 */ this.createButtonHtml = function (sourceData, buttonIconMap, buttonDivHtml, buttonIdPrefix, appendButtons, callback, backPath) { var me = this; me.createButtonHtmlEx(sourceData, buttonIconMap, buttonDivHtml, buttonIdPrefix, appendButtons, null, callback, backPath); }; this.createButtonHtmlEx = function (sourceData, buttonIconMap, buttonDivHtml, buttonIdPrefix, appendButtons, unDisplayButtons, callback, backPath) { var me = this; if (me.isNull(buttonIdPrefix)) { buttonIdPrefix = ""; } me.getButtionsBySourceData(sourceData, function (result) { /** * 功能的主键 functionOid * 功能的编号 moduleNo * 功能和按钮关联的主键 oid * 唯一标识符 uniqueFlag; * 描述 description; * 在功能中的排序号 orderNo; * 按钮名称 name * 按钮昵称,是在功能和按钮的关联中的昵称,前端使用这个来显示按钮 alias; * */ var buttons = result.obj; if (!buttons) { buttons = []; } if (appendButtons && appendButtons.length > 0) {//把不受权限控制的按钮也添加进去 layui.each(appendButtons, function (_index, item) { buttons.push(item); }); } var buttonHtml = []; var hasViewRight = false; var hasQueryRight = false; layui.each(buttons, function (_index, _item) { if (_item.uniqueFlag != 'VIEW' && _item.uniqueFlag != 'SEARCH' //TODO 暂时不显示所有的高级查询按钮 && (!unDisplayButtons || unDisplayButtons == null || !me.inArray(unDisplayButtons, _item.uniqueFlag))) {//VIEW是显示这个页面 buttonHtml.push(me.getButtonHtmlFromBtnObject(_item, buttonIdPrefix, buttonIconMap)); } else { if (_item.uniqueFlag == 'VIEW') { hasViewRight = true; } if (_item.uniqueFlag == 'SEARCH') { hasQueryRight = true; } } }); buttonDivHtml.prepend(buttonHtml.join(''));//添加到前面 if (callback) { callback(buttons, hasViewRight, hasQueryRight); } }, backPath); }; this.getButtonHtmlFromBtnObject = function (button, buttonIdPrefix, buttonIconMap) { var me = this; var buttonHtml = []; var executeJs = ""; if(me.isNotNull(button.executeJs)){ executeJs = " execute-js='" + button.executeJs + "' "; } buttonHtml.push(''); return buttonHtml.join(""); }; /** * 创建默认的查询区域,如果传递了tableId,则会自动自动进行查询 */ this.createSearchHtml = function (searchNameMap, searchDiv, tableId) { var me = this; var ieVersion = me.getIEVersion(); var isShow = "none"; if (ieVersion.isIE) { isShow = "block"; } var html = ['
'); html.push(''); html.push(''); searchDiv.append(html.join('')); if (me.isNotNull(tableId)) { //添加监听 searchDiv.find('.layui-input-inline').on('click', function () {//点击DIV下拉框展开 只限于ie if (ieVersion.isIE) { searchDiv.find('select[name="fast_search_select"]').focus(); var WshShell = new ActiveXObject("Wscript.Shell"); try { WshShell.SendKeys("%{DOWN}") } catch (e) { WshShell.Quit } } }); searchDiv.find('input[name="fast_search_select_value"]').keydown(function (e) { if (e && e.keyCode == 13) { var queryValue = $(this).val(); var queryKey = $(this).prev().find('select[name="fast_search_select"]').val(); var lastQueryKeyInput = $(this).next(); var lastQueryKey = lastQueryKeyInput.val(); if (me.isNotNull(queryKey)) { var tableConfig = layui.table.getConfig(tableId) if (tableConfig.page) { tableConfig.page['curr'] = 1 } else { tableConfig.page = { curr: 1 //重新加载当前页 } } tableConfig.queryParams={} tableConfig.queryParams['conditionMap["' + queryKey + '"]'] = (me.isNull(queryValue) ? "" : ("*" + queryValue + "*")); lastQueryKeyInput.val(queryKey); layui.table.setConfig(tableConfig); layui.table.reload(tableId); } return false; } layui.stope(e); }); } }; this.showSearchHtml = function (queryColumns, tableId, filter, name, requestData) { //设置查询区域 var that = this; var table = layui.table; var toolbarElem = $('[layui-filter="hisTable_' + filter + '"]'); //console.log('[layui-filter="hisTable_' + filter +'"]') if (queryColumns) { var toolbarHtml = '
' + '
'; toolbarHtml += '
'; toolbarHtml += '
'; toolbarHtml += '
'; toolbarElem.html(toolbarHtml); layui.form.render('select'); $('[name="referGrid_searchbtn_' + filter + '_' + name + '"]').click(function () { var searchField = $(this).parent().parent().find('select').val(); var searchValue = $(this).parent().parent().find('[name="referGrid_searchvalue_' + filter + '_' + name + '"]').val(); if ($webUtil.isNotNull(searchValue)) { searchValue = "*" + searchValue + "*"; } requestData['conditionMap["' + searchField + '"]'] = searchValue; requestData['page'] = 1; table.reload( tableId, { where: requestData } ); }); } }; this.fastSearch = function (tableId) { var that = this; var thatid = tableId.substring(tableId.lastIndexOf("_") + 1); var searchDiv = $('[layui-filter="toolbar_' + thatid + '"]').find('input[name="fast_search_select_value"]'); var queryValue = searchDiv.val(); var queryKey = searchDiv.prev().find('select[name="fast_search_select"]').val(); var lastQueryKeyInput = searchDiv.next(); var lastQueryKey = lastQueryKeyInput.val(); if (that.isNotNull(queryKey)) { var options = { where: {} }; options.where['conditionMap["' + queryKey + '"]'] = (that.isNull(queryValue) ? "" : ("*" + queryValue + "*")); if (that.isNotNull(lastQueryKey) && lastQueryKey != queryKey) { options.where['conditionMap["' + lastQueryKey + '"]'] = ""; } lastQueryKeyInput.val(queryKey); layui.table.reload(tableId, options); } }; this.wrapperSourceDataByUrl = function(trueUrl,sourceData){ if(trueUrl.indexOf("?") > -1){//说明有参数 var params = trueUrl.substring(trueUrl.indexOf("?")+1); var paramsArray = params.split("&"); for(var i = 0 ; i < paramsArray.length ; i ++){ var preParam =paramsArray[i].split("="); sourceData[preParam[0]] = preParam[1]; } } }; /** * 创建默认的按钮事件 */ this.bindDefultButtonLisenter = function (obj, buttonIdPrefix) { var me = this; $('[layui-filter^="toolbar_' + buttonIdPrefix + '_"]').unbind('click').click(function (e) { var event = $(this).attr("layui-filter"); var executeJs = $(this).attr("execute-js"); var buttonThis = this; if(executeJs){ var urlUp = executeJs.toUpperCase(); if($webUtil.startWith(urlUp,"USEJS:")) { //说明是使用js组件 var trueUrl = executeJs.substring(6); if ($webUtil.startWith(trueUrl, "//")) { trueUrl = trueUrl.substring(2); } var sourceData = {}; me.wrapperSourceDataByUrl(trueUrl, sourceData); if (trueUrl.indexOf("?") > -1) { trueUrl = trueUrl.substring(0, trueUrl.indexOf("?")); } trueUrl = trueUrl.replace(/^\/+/, ''); layui.use([trueUrl], function () { var buttonClass = layui[trueUrl]; buttonClass.id = event; buttonClass.sourceData = sourceData; buttonClass.buttonThis = buttonThis; buttonClass.buttonThat = obj; try { buttonClass.executeButton(); }catch (ex) { me.showDebugMsg(ex); } }); } }else { if (me.isNotNull(event) && event.indexOf("_") > -1) { event = event.substring(event.lastIndexOf("_") + 1); if (me.isNotNull(event)) { if (event in obj) { try { obj[event](event, this);//在其中执行相应的内容 } catch (ex) { me.showDebugMsg(ex); } } else { if (event == 'SENIORSEARCH' && "serinorQueryInstance" in obj) { obj.serinorQueryInstance.open(); } } } } } layui.stope(e); }); }; /** * 创建下拉框 * @selectNameMap 格式[{attributes: {}, key: "web", value: "web服务"}] */ this.createSelectHtml = function (selectNameMap, selectDiv,selecId,selectcallback) { var me = this; if(typeof selecId !='string'){ selecId='fast_select' } function initHtml(selectNameMap, selectDiv,selectcallback){ var html = [''); html.push(''); selectDiv.append(html.join('')); if(selectcallback){ $('select[name="fast_select"]',selectDiv).on('change',function (){ var data= $(this).val(); selectcallback(data) }) } } if(typeof selectNameMap =="string"){ $webUtil.ajax('get',selectNameMap,{},function (res) { if(res.success){ initHtml(res.obj, selectDiv,selectcallback) }else{ $webUtil.showErrorMsg(res.msg); } },function (xhr,error) { $webUtil.showDebugMsg(error); }); }else{ initHtml(selectNameMap, selectDiv,selectcallback) } }; //url转码方法 汉字转unicode this.GB2312ToUnicode = function (str) { return escape(str).toLocaleLowerCase().replace(/%u/gi, '\\u'); }; //url转码方法 unicode转汉字 this.unicodeToGB2312 = function (str) { return unescape(str.replace(/\\u/gi, '%u')); }; this.addEnterListener = function (key, funcs) { var me = this; if (!me.enterListeners) { me.enterListeners = {}; } me.enterListeners[key] = funcs; }; this.clearEnterListener = function (key) { var me = this; if (!me.enterListeners) { me.enterListeners = {}; } if (key in me.enterListeners) { delete me.enterListeners.key; } }; this.getDefaultValue = function (value, sourceData) { var me = this; if (value && me.startWith(value, "${") && me.endWith(value, "}")) { //说明是系统内置的 return me.getSystemVar(value.replace("${", "").replace("}", "")); } else if (value && me.startWith(value, "sourcedata.")) {// TODO 需要跟平台的整合到一起 weidy var attr = sourceData.replace("sourcedata.", ''); if (sourceData && attr in sourceData) { return sourceDara[attr]; } } else { return value; } }; this.getCurrentUserId = function () { var me = this; var userid = me.getSystemVar(me.sessionInfoKey.userId); return userid; }; this.getCurrentUserOid = function () { var me = this; return me.getSystemVar(me.sessionInfoKey.userOid); }; this.getCurrentUserName = function () { var me = this; return me.getSystemVar(me.sessionInfoKey.userName); }; this.showLoginDialog = function () { return portal.relogin(); }; this.formateDateValueForObj = function (obj, fields, dateFormate) { var me = this; if (obj) { if (!dateFormate) { dateFormate = "yyyy-MM-dd HH:mm:ss";//日期控件不支持毫秒,凡是显示日期的,基本不需要毫秒内容 } if (!me.isArray(fields)) { fields = [fields]; } layui.each(fields, function (_index, _item) { if (_item in obj) { var value = obj[_item]; if (me.isNotNull(value)) { value = layui.util.toDateString(value, dateFormate); } obj[_item] = value; } }); } return obj; }; this.getValueFromObj = function (obj, fields, defaultValue) { var me = this; if (!me.isArray(fields)) { fields = [fields]; } for (var i = 0; i < fields.length; i++) { var field = fields[i]; if (field in obj) { return obj[field]; } } if (defaultValue) { return defaultValue; } return ""; }; this.getBoolean = function (v) { if (v == true || 'true' == v) { return true; } else { return false; } }; this.copyConfig = function (tartObject, moduleKey) { var that = this; if (!moduleKey && tartObject) { moduleKey = tartObject.moduleKey; } if (tartObject && configData && configData[moduleKey]) { var configObject = configData[moduleKey]; for (var key in configObject) { var item = configObject[key]; if (item && typeof (item) == 'object') { //说明还是对象 if (!tartObject[key]) { tartObject[key] = {}; } for (var childKey in item) { var childItem = item[childKey]; if (childItem && that.isNotNull(childItem)) { tartObject[key][childKey] = childItem; } } } else if (item && that.isNotNull(item)) { tartObject[key] = item; } } } }; /* 获取json中Key对应的值 */ this.getValueByKey = function (data, field) { var that = this; for (var key in data) { if (key === field) { return data[key]; } else { return that.getValueByKey(data[key], field); } } }; this.unableSubmit = function (id, btnname) {//禁用按钮 防止多次提交 $('[layui-filter="toolbar_' + id + '_' + btnname + '"]').addClass('layui-disabled'); $('[layui-filter="toolbar_' + id + '_' + btnname + '"]').attr('disabled', 'disabled'); }; this.allowSubmit = function (id, btnname) {//恢复 $('[layui-filter="toolbar_' + id + '_' + btnname + '"]').removeClass('layui-disabled'); $('[layui-filter="toolbar_' + id + '_' + btnname + '"]').attr('disabled', false); }; this.getTime = function () { //获取时间 var date = new Date(); var year = date.getFullYear(); var month = date.getMonth() + 1; var day = date.getDate(); var hour = date.getHours(); var minute = date.getMinutes(); var second = date.getSeconds(); //这样写显示时间在1~9会挤占空间;所以要在1~9的数字前补零; if (hour < 10) { hour = '0' + hour; } if (minute < 10) { minute = '0' + minute; } if (second < 10) { second = '0' + second; } var x = date.getDay();//获取星期 var time = year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second; return time; }; this.getDialogScreenSize = function (options) { //获取全屏的尺寸 var that = this; return [that.getDialogScreenWidth(options) + 'px', that.getDialogScreenHeight(options) + 'px']; }; this.getDialogScreenHeight = function (options) { //获取高度 var that = this; var height = (that.isNotNull(options.height) || options.height * 1 > 1) ? options.height * 1 : 600; var windowHeight = 0; if (window.innerHeight) { windowHeight = window.innerHeight; } else { windowHeight = document.documentElement.clientHeight; } if (options.fullScreen) { return windowHeight - 50; } if ((height + 50) > windowHeight) { return windowHeight - 50; } return height; }; this.getDialogScreenWidth = function (options) { //获取宽度 var that = this; var width = (that.isNotNull(options.width) || options.width * 1 > 1) ? options.width * 1 : 950; var windowWidth = 0; if (window.innerWidth) { windowWidth = window.innerWidth; } else { windowWidth = document.documentElement.clientWidth; } if (options.fullScreen) { return windowWidth - 50; } if ((width + 50) > windowWidth) { return windowWidth - 50; } return width; }; this.fileDownload = function (url, successCallback,successMsg) { //GET方式下载文件 var that = this; //weidy@2020-07-27 //添加token if (url.indexOf("?") > -1) { url = url + "&"; } else { url = url + "?"; } url = url + TOKEN_KEY + "=" + that.getToken(); $.fileDownload(url, { httpMethod: 'GET', prepareCallback: function (url) { //console.log(url) that.showProgress("文件下载中。如果下载完成,进度条依然没有关闭,请点击页面空白处"); setTimeout(function (){ that.closeProgress(); },60000*2) }, abortCallback: function (url) { // 异常终止 that.closeProgress(); that.showErrorMsg("文件下载异常!!"); }, successCallback: function (url) { that.showMsg(successMsg||"执行下载成功!!请耐心等待文件下载完成"); that.closeProgress(); if (successCallback) { successCallback(); } }, failCallback: function (html, url) { that.showErrorMsg("文件下载失败!!"); that.closeProgress(); } }); }; this.fileDownloadPost = function (url, data, successCallback) { //POST方式下载文件 var that = this; if (!data) { data = {}; } data[TOKEN_KEY] = that.getToken(); $.fileDownload(url, { httpMethod: 'post', data: data, prepareCallback: function (url) { that.showProgress("文件下载中。如果下载完成,进度条依然没有关闭,请点击页面空白处"); setTimeout(function (){ that.closeProgress(); },60000*2) }, abortCallback: function (url) { // 异常终止 that.closeProgress(); that.showErrorMsg("文件下载异常!!"); }, successCallback: function (url) { that.showMsg("执行下载成功!!请耐心等待文件下载完成"); that.closeProgress(); if (successCallback) { successCallback(); } }, failCallback: function (html, url) { that.showErrorMsg("文件下载失败!!"); that.closeProgress(); } }); }; this.paramLow = function (paramsVOs) { //参数转换为小写 if (!paramsVOs) { paramsVOs = {}; } var params = {}; for (var key in paramsVOs) { params[key.toLowerCase()] = paramsVOs[key]; } return params; }; this.replaceFreeMarker = function (text, dataStore, sourceData) { //替换表达式 if (!sourceData) { sourceData = {}; } if (!dataStore) { dataStore = []; } var replaceData = dataStore.length > 0 ? dataStore[0] : {}; if (text && text.indexOf("${") > -1 && text.indexOf("}")) { //js只能使用${xxx}这种的方式 var reg = "root.${"; while (text.indexOf(reg) > -1) { var temp = text.substring(0, text.indexOf(reg)); var field = text.substring(text.indexOf(reg) + reg.length, text.indexOf("}")); var end = text.substring(text.indexOf("}") + 1); field = replaceData[field] || sourceData[field] || ''; text = temp + field + end; } reg = "sourceData.${"; while (text.indexOf(reg) > -1) { var temp = text.substring(0, text.indexOf(reg)); var field = text.substring(text.indexOf(reg) + reg.length, text.indexOf("}")); var end = text.substring(text.indexOf("}") + 1); field = replaceData[field] || sourceData[field] || ''; text = temp + field + end; } reg = "${"; while (text.indexOf(reg) > -1) { var temp = text.substring(0, text.indexOf(reg)); var field = text.substring(text.indexOf(reg) + reg.length, text.indexOf("}")); var end = text.substring(text.indexOf("}") + 1); field = replaceData[field] || sourceData[field] || ''; text = temp + field + end; } } return text; }; this.setDataTableRowColor = function (TabDivId, RowIndex, ColorString, FontColor) {//table 行变色 var div = $(TabDivId).next(); if (div != null) { var table_main = div.find('.layui-table-main '); if (table_main != null && table_main.length > 0) { var table = table_main[0].getElementsByTagName('table')//getElementsByClassName('layui-table'); if (table != null && table.length > 0) { var trs = table[0].querySelectorAll("tr"); if (trs != null && trs.length > 0) { trs[RowIndex].style.background = ColorString; trs[RowIndex].style.color = FontColor; } } } } }; this.getTrueId = function (btn) {//同一个页面打开多个 之前的页面按钮不起作用 //需要配置页面时传参数 并在渲染时把参数加到页面id里 使页面中使用id的元素唯一 也就是每个页面的getContent中 需要让this.id=this.sourceData.参数名 + this.id (这里是个例子) 保证页面打开多次是所有元素id不同 //这个方法通过按钮的属性 获取当前页面的id //每个按钮方法里第一个参数是名称 第二个参数就是btn 例如 this.refresh(event,btn){} btn就是要传的参数 //需要重复使用的页面 按钮事件中的 that.id 都应该替换成 $webUtil.getTrueId(btn) var target = $(btn).attr("layui-filter"); var name = target.substring(target.indexOf("_") + 1); var trueId = name.substring(0, name.lastIndexOf("_")); return trueId }; this.dialog = function (options) { if (!options) { options = {}; } //把传递进来的参数和默认的参数合并 var diaglogIndex; options = $.extend({ type: 1, //skin: 'layui-layer-lan', //area: ['900px', '500px'], closeBtn: 1, shade: true, shadeClose: true, resize: true }, options); if (options.btn && options.btn[1] && options.btn[1] == '取消' && !('btn2' in options)) { options.btn2 = function (layero) { layer.close(diaglogIndex); if (options.targetObject) { options.targetObject.refresh(); } }; } diaglogIndex = layer.open(options); return diaglogIndex; }; this.userIsDep = function (tab) { var that = this; $("#tab_" + tab).remove(); that.showErrorMsg('此用户没有设置部门、不可展现页面!'); return false }; this.starORstop = function (lcStatus) { if (lcStatus == 'Enabled') { return '已经为启用状态!'; } else { return '已经为停用状态!'; } }; this.createScript = function (src, callback) { var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.type = 'text/javascript'; script.onreadystatechange = function () { if (this.readyState == 'loaded' || this.readyState == 'complete') if (callback) callback(); } script.onload = function () { if (callback) callback(); } script.src = src; head.appendChild(script); } //弹窗内容加载完后重新定位弹窗居中 this.relocationOpen=function (classP){ !(/^\d+%$/.test(classP.config.area[0]) || /^\d+%$/.test(classP.config.area[1])) && classP.auto(classP.index); classP.offset(); classP.config.type == 4 && classP.tips(); } }; })(jQuery);