CRM的JS
var Utility = {}; //----------------------------------------------------------------------- // client //----------------------------------------------------------------------- Utility.navigate = function (url, args, wnd) { (wnd || window).navigate(Utility.getUrl(url, args)); } Utility.openTab = function (url, args, title, icon, hint, id) { Esc.getTopWindow().MainFrame.tabStrip.add(title, Utility.getUrl(url, args), icon, hint, id); } Utility.closeTab = function () { Esc.getTopWindow().MainFrame.tabStrip.closeCurrentTab(); } Utility.isInTab = function () { var top = Esc.getTopWindow(); return top != window && top.MainFrame != null && top.MainFrame.tabStrip != null ; } Utility.openWindow = function (url, args, name, features) { window.open(Utility.getUrl(url, args), name, features || "" ); } Utility.close = function () { if (Utility.isInDialog()) { Utility.closeDialog(); } else if (Utility.isInTab()) { Utility.closeTab(); } else { window.close(); } } Utility.openDialog = function (url, args, style, callback, dialogArgs) { Esc.openDialog(Utility.getUrl(url, args), style, callback, dialogArgs); } Utility.closeDialog = function (result) { var dialog = Esc.getCurrentDialog(); if ( typeof (result) != "undefined" ) { dialog == null ? (window.returnValue = result) : (dialog.result = result); } dialog == null ? window.close() : dialog.hide(); } Utility.setDialogSize = function (width, height) { var dialog = Esc.getCurrentDialog(); dialog.setSize(width, height); } Utility.getDialogResult = function () { var dialog = Esc.getCurrentDialog(); return dialog == null ? window.returnValue : dialog.result; } Utility.setDialogResult = function (result) { var dialog = Esc.getCurrentDialog(); dialog == null ? (window.returnValue = result) : (dialog.result = result); } Utility.setDialogResultAttribute = function (key, value) { var dialog = Esc.getCurrentDialog(); var result = (dialog == null ? window.returnValue : dialog.result) || {}; result[key] = value; dialog == null ? (window.returnValue = result) : (dialog.result = result); } Utility.getDialogArguments = function () { var dialog = Esc.getCurrentDialog(); return dialog == null ? undefined : dialog.arguments; } Utility.isInDialog = function () { return window.dialogWidth != null || Esc.getCurrentDialog() != null ; } Utility.isDialogTop = function () { if (window == window.top && window.dialogWidth != null ) { return true ; } dialog = Esc.getCurrentDialog(); return dialog != null && window == dialog.getContentWindow(); } Utility.download = function (url, args) { if (!/\.jdn$/.test(url)) { url += ".jdn" ; } url = Utility.setUrlParam(url, "pageCode" , clientData.pageCode); url = Utility.setUrlParam(url, "rand" , Math.random()); Utility.openWindow(url, args); } Utility.getUrl = function (url, args) { if (args == null ) { return url; } var result = Utility.setUrlParam(url, "args" , JSON.stringify(args)); if (args != null && result.length > 1000) { var key = Utility.invoke( "Ecp.Misc.putUrlArguments" , args).key; result = Utility.setUrlParam(url, "argsKey" , key); } return result; } Utility.showError = function (error) { var url = error.page == null ? "Ecp.ActionError.jdp" : error.page.url; var width = error.page == null ? "400" : error.page.dialogWidth; var height = error.page == null ? "125" : error.page.dialogHeight; /* var features = "dialogWidth:" + width + "px;dialogHeight:" + height + "px;status:no;resizable:yes;help:no"; var args = { message : error.message, stackTrace : error.stackTrace, data : error.page && error.page.data }; Utility._openRealDialog(url, args, features); */ var style = "width:" + width + "px;height:" + height + "px" ; var args = { message : error.message, stackTrace : error.stackTrace, data : error.page && error.page.data }; Utility.openDialog(url, args, style); } Utility.prompt = function (title, information, defaultValue, allowEmpty, callback) { var args = {information:information}; if (!Esc.isEmpty(title)) { args.title = title; } if (!Esc.isEmpty(defaultValue)) { args.defaultValue = defaultValue; } if (allowEmpty) { args.allowEmpty = true ; } Utility.openDialog( "Ecp.Misc.Prompt.jdp" , args, "width:350px;height:150px" , callback); } Utility.isUuid = function (s) { return /^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$/.test(s); } Utility.formatText = function (code) { var text = Esc.i18n(code); for ( var i = 1; i < arguments.length; ++i) { text = text.replace( "${" + (i - 1) + "}" , arguments[i]); } return text; } //----------------------------------------------------------------------- // AJAX //----------------------------------------------------------------------- Utility.invoke = function (url, args, async, callback, options) { var ajax = new Utility.Ajax(url, async); ajax.progressBarArgs = options && options.progressBar; ajax.onsuccess = callback; if (options && options.ignoreError) { ajax.onerror = null ; } return ajax.submit(args); } Utility.Ajax = function (url, async) { this ._url = /\.jdt/.test(url) ? url : url + ".jdt" ; this ._async = async == true ; this ._text = null ; this ._json = null ; this ._success = true ; this .onerror = this .showError; this .onsuccess = null ; } Utility.Ajax.prototype.setUrl = function (url) { this ._url = url; } Utility.Ajax.prototype.setAsync = function (async) { this ._async = async != false ; } Utility.Ajax.prototype.success = function () { return this ._success; } Utility.Ajax.prototype.getResult = function () { return this ._json; } Utility.Ajax.prototype.getErrorMessage = function () { if ( this ._success || this ._json == null || typeof ( this ._json) != "object" ) { return null ; } return this ._json.message; } Utility.Ajax.prototype.showError = function () { if (Esc.isEmpty( this ._text)) { alert(Utility.serverNotAccessableMessage); } else if ( this ._json == null ) { alert( "Invalid JSON format:\n\n" + this ._text); } else { Utility.showError( this ._json); } } Utility.Ajax.prototype.submit = function (data) { var http = new ActiveXObject( "Microsoft.XMLHTTP" ); var json = { args: (data == null ? {} : data), pageCode: ( typeof (clientData) == "undefined" ? "" : clientData.pageCode) }; http.open( "POST" , this ._url, this ._async); if ( this ._async) { var ajax = this ; http.onreadystatechange = function () { if (http.readyState == 4) { if (ajax._progressBar != null ) { ajax._progressBar.hide(); ajax._progressBar = null ; } if (http.status != 200) { if ( this .onerror != null ) { alert(Utility.serverNotAccessableMessage); } } else { ajax._parse(http.responseText); } } }; var pbArgs = this .progressBarArgs; if (pbArgs != null && pbArgs.text != null ) { this ._progressBar = Esc.showProgressBar(pbArgs.text, pbArgs.target, pbArgs.showMask); } http.send(JSON.stringify(json)); } else { try { http.send(JSON.stringify(json)); } catch (e) { if ( this .onerror != null ) { alert(Utility.serverNotAccessableMessage); } return undefined; } if (http.status != 200) { if ( this .onerror != null ) { alert(Utility.serverNotAccessableMessage); } return undefined; } this ._parse(http.responseText); return this ._success ? this ._json : undefined; } } Utility.Ajax.prototype._parse = function (text) { try { this ._text = text; this ._json = JSON.parse(text); this ._success = !Esc.isObject( this ._json) || ! this ._json[ "<isError>" ]; } catch (e) { this ._success = false ; } if (! this ._success && this .onerror != null ) { this .onerror( this ._json); } if ( this ._success && this .onsuccess != null ) { this ._json = this .onsuccess( this ._json); } } //----------------------------------------------------------------------- // UrlBuilder //----------------------------------------------------------------------- Utility.getUrlParam = function (url, key) { var url = url || window.location.href; var reg = new RegExp( "(\\?|&)" + key + "=([^&]*)" ); return reg.test(url) ? RegExp.$2 : null ; } Utility.setUrlParam = function (url, key, value) { var reg = new RegExp( "(\\?|&)" + key + "=[^&]*" ); if (reg.test(url)) { url = url.replace(reg, "$1" + key + "=" + encodeURIComponent(value)); } else { url += (url.indexOf( "?" ) == -1 ? "?" : "&" ) + key + "=" + encodeURIComponent(value); } return url; } Utility.removeUrlParam = function (url, key, ignoreCase) { var flag = ignoreCase ? "" : "i" ; var reg1 = new RegExp( "\\?" + key + "=[^&]*$" , flag); var reg2 = new RegExp( "\\?" + key + "=[^&]*&" , flag); var reg3 = new RegExp( "&" + key + "=[^&]*" , flag); return url.replace(reg1, "" ).replace(reg2, "?" ).replace(reg3, "" ); } Utility.UrlBuilder = function (url) { this .url = url; } Utility.UrlBuilder.prototype.set = function (key, value) { this .url = Utility.setUrlParam( this .url, key, value); return this ; } Utility.UrlBuilder.prototype.remove = function (key) { this .url = Utility.removeUrlParam( this .url, key); return this ; } Utility.UrlBuilder.prototype.toString = function () { return this .url; } //----------------------------------------------------------------------- // cache //----------------------------------------------------------------------- Utility.ClientCache = function (){}; Utility.ClientCache.prototype.getCacheItem = function (key) { var keyParts = key.split( "." ); var hash = this ._getCacheItemHash(keyParts); return hash && hash[keyParts[keyParts.length - 1] + "__" ]; } Utility.ClientCache.prototype.setCacheItem = function (key, value) { var keyParts = key.split( "." ); var hash = this ._getCacheItemHash(keyParts, true ); hash[keyParts[keyParts.length - 1] + "__" ] = value; } Utility.ClientCache.prototype.deleteCacheItem = function (key) { var keyParts = key.split( "." ); var hash = this ._getCacheItemHash(keyParts); if (hash != null ) { delete hash[keyParts[keyParts.length - 1] + "__" ]; } } Utility.ClientCache.prototype.getCacheItems = function (keys, prefix) { var ret = []; for ( var i = 0; i < keys.length; ++i) { var key = prefix == null ? keys[i] : prefix + keys[i]; ret.push( this .getCacheItem(key)); } return ret; } Utility.ClientCache.prototype.setCacheItems = function (keys, values, prefix) { for ( var i = 0; i < keys.length; ++i) { var key = prefix == null ? keys[i] : prefix + keys[i]; this .setCacheItem(key, values[i]); } } Utility.ClientCache.prototype.clearCache = function () { Esc.getTopWindow()._cache = {}; } Utility.ClientCache.prototype._getCacheItemHash = function (keyParts, createIfNotExists) { var hash = Esc.getTopWindow()._cache; if (hash == null ) { hash = {}; Esc.getTopWindow()._cache = hash; } for ( var i = 0; i < keyParts.length - 1; ++i) { var keyPart = keyParts[i]; if (!(keyPart in hash)) { if (createIfNotExists) { hash[keyPart] = {}; } else { return null ; } } hash = hash[keyPart]; } return hash; } //----------------------------------------------------------------------- // i18n //----------------------------------------------------------------------- Utility.I18nLoader = function () {}; Utility.I18nLoader.prototype.load = function (keys) { return Utility.invoke( "Ecp.I18n.getText" , {keys:keys}, false , function (ret) { if (ret.text != null ) { for ( var i = 0; i < ret.text.length; ++i) { if (ret.text[i] != null ) { ret.text[i] = ret.text[i].replace(/\\n/g, "\n" ); } } } return ret.text; }); } //----------------------------------------------------------------------- // Other //----------------------------------------------------------------------- Utility.log = function (level, message) { Utility.invoke( "Ecp.Misc.writeLog" , {message:message, level:level}, true , null , {ignoreError: true }); } Utility.randomUuid = function () { var dg = new Date(1582, 10, 15, 0, 0, 0, 0); var dc = new Date(); var t = dc.getTime() - dg.getTime(); var tl = Utility._getUuidBits(t, 0, 31); var tm = Utility._getUuidBits(t, 32, 47); var thv = Utility._getUuidBits(t, 48, 59) + '1' ; var csar = Utility._getUuidBits(Utility.random(0x01000), 0, 7); var csl = Utility._getUuidBits(Utility.random(0x01000), 0, 7); var n = Utility._getUuidBits(Utility.random(0x10000), 0, 15) + Utility._getUuidBits(Utility.random(0x10000), 0, 15) + Utility._getUuidBits(Utility.random(0x10000), 0, 15); return [tl, tm, thv, csar + csl, n].join( "-" ); } Utility.random = function (upperBound) { return Math.floor(Math.random() * upperBound); } Utility._getUuidBits = function (value, start, end) { var hex = value.toString(16).toLowerCase() + "0000000000000000" ; return hex.substring(start >> 2, (end >> 2) + 1); } //----------------------------------------------------------------------- // private //----------------------------------------------------------------------- Utility._openRealDialog = function (url, args, features) { if (Esc.IEVERSION <= 6 && /dialogHeight:(\d+)/.test(features)) { var temp = "dialogHeight:" + (parseInt(RegExp.$1) + 52); features = features.replace(/dialogHeight:(\d+)/, temp); } return window.showModalDialog(url, args, features); } Utility._init = function () { Esc.setCacheManager( new Utility.ClientCache()); Esc.setI18nLoader( new Utility.I18nLoader()); document.attachEvent( "onclick" , function (){ if (event.ctrlKey && clientData && clientData.isDevelopMode) { if (window.messagePopup == null ) { window.messagePopup = window.createPopup(); var body = window.messagePopup.document.body; body.innerHTML = "<div style='width:100%;height:100%;border:1px solid black;overflow:hidden'>" + "<textarea style='border:none;width:100%;height:100%;background-color:#FFFFDD'></textarea>" + "</div>" ; } var popup = window.messagePopup; var textarea = popup.document.body.firstChild.firstChild; var width = window.screen.availWidth - 100; var height = Math.round((window.screen.availHeight - 100) * 0.8); textarea.value = window.location.href + "\n\n" + event.srcElement.outerHTML; popup.show(50, 50, width, height); } }); Utility.serverNotAccessableMessage = Esc.i18n( "Public.ServerNotAccessable" ); } Utility._init(); |
Rust编程语言群 1036955113
java新手自学群 626070845
java/springboot/hadoop/JVM 群 4915800
Hadoop/mongodb(搭建/开发/运维)Q群481975850
GOLang Q1群:6848027
GOLang Q2群:450509103
GOLang Q3群:436173132
GOLang Q4群:141984758
GOLang Q5群:215535604
C/C++/QT群 1414577
单片机嵌入式/电子电路入门群群 306312845
MUD/LIB/交流群 391486684
Electron/koa/Nodejs/express 214737701
大前端群vue/js/ts 165150391
操作系统研发群:15375777
汇编/辅助/破解新手群:755783453
大数据 elasticsearch 群 481975850
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
java新手自学群 626070845
java/springboot/hadoop/JVM 群 4915800
Hadoop/mongodb(搭建/开发/运维)Q群481975850
GOLang Q1群:6848027
GOLang Q2群:450509103
GOLang Q3群:436173132
GOLang Q4群:141984758
GOLang Q5群:215535604
C/C++/QT群 1414577
单片机嵌入式/电子电路入门群群 306312845
MUD/LIB/交流群 391486684
Electron/koa/Nodejs/express 214737701
大前端群vue/js/ts 165150391
操作系统研发群:15375777
汇编/辅助/破解新手群:755783453
大数据 elasticsearch 群 481975850
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南