• 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 + "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, "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='100%;height:100%;border:1px solid black;overflow:hidden'>"
    								+ 	"<textarea style='border:none;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();
    

      

    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
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    VS2010自定义新建文件模版 狼人:
    理解“.NET技术”.NET程序集的执行过程 狼人:
    JAVA与.NET的相互调用——利用JNBridge桥接模式实现远程通讯 狼人:
    《Effective C#中文版:改善C#程序的50种方法》读书笔记 狼人:
    C#中“.NET技术”字符串的内存分配与驻留池 狼人:
    ASP.NET MVC 3和Razor中的@helper 语法 狼人:
    用C#实现HTTP协“.NET技术”议下的多线程文件传输 狼人:
    JA“.NET技术”VA与.NET的相互调用——TCP/IP相互调用基本架构 狼人:
    《Effective C#中文版:改善C#程序的50种方法》“.NET技术”读书笔记 狼人:
    C#“.NET技术” 中奇妙的函数联接序列的五种简单方法 狼人:
  • 原文地址:https://www.cnblogs.com/cfas/p/3125854.html
Copyright © 2020-2023  润新知