常用工具类的封装

/**
 * 常用工具类封装
 */
var CommonUtils = (function() {
	return {
		getUserToken: function(options) {
			options = $.extend(true, {
				async: options.async ? options.async : false,
				type: 'POST',
				queryType: '2',
				dataType: 'JSON',
				url: url_BusizImmovables
			}, options);
			let result = null;
			var promise = new Promise(function(resolve, reject) {
				$.ajax(
					$.extend(true, {}, options, {
						success: function(data) {
							typeof options.success === 'function' && options.success(data);
							resolve(data);
							result = data;
						},
						error: function(data) {
							typeof options.error === 'function' && options.error(data);
							reject(data);
							result = data;
						}
					})
				);
			});
			return options.async ? promise : result;
		},
		setUserInfo: function(obj) {
			sessionStorage.setItem('userDetail', JSON.stringify(obj));
		},
		getUserInfo: function(obj) {
			try {
				return JSON.parse(sessionStorage.getItem('userDetail'))
				//return userDetail = {cardid: "362524199104132028"}
			} catch (e) {
				return sessionStorage.getItem('userDetail')
			}
		},
		removeUserInfo: function(obj) {
			sessionStorage.removeItem('userDetail');
		},
		ajax: function(options) {
			options = $.extend(true, {
				async: options.async ? options.async : false,
				type: 'POST',
				dataType: 'JSON'
			}, options);
			let result = null;
			var promise = new Promise(function(resolve, reject) {
				$.ajax(
					$.extend(true, {}, options, {
						beforeSend:function(XMLHttpRequest){ 
							console.log('===>>before');
						}, 
						success: function(data) {
							typeof options.success === 'function' && options.success(data);
							resolve(data);
							result = data;
						},
						error: function(data) {
							typeof options.error === 'function' && options.error(data);
							reject(data);
							result = data;
						},
						fail: function(data) {
							CommonUtils.alert('系统异常,请稍后再试!')
						}
					})
				);
			});
			return options.async ? promise : result;
		},
		//dec加密
		desEncryptCBC: function(message, desKey) {
			let messageKey = encodeURIComponent(message);
			messageKey = encode64(messageKey);

			let keyHex = CryptoJS.enc.Utf8.parse(desKey),
				encrypted = CryptoJS.DES.encrypt(message, keyHex, {
					iv: keyHex,
					mode: CryptoJS.mode.CBC,
					padding: CryptoJS.pad.Pkcs7
				});
			return encrypted.ciphertext.toString().toUpperCase();
		},
		//dec解密
		desDecryptCBC: function(message, desKey) {
			message = message.toLowerCase();
			let keyHex = CryptoJS.enc.Utf8.parse(desKey),
				decrypted = CryptoJS.DES.decrypt({
					ciphertext: CryptoJS.enc.Hex.parse(message)
				}, keyHex, {
					iv: keyHex,
					mode: CryptoJS.mode.CBC,
					padding: CryptoJS.pad.Pkcs7
				});

			return decrypted.toString(CryptoJS.enc.Utf8);
		},
		//获取token
		getToken: function() {
			var url = document.location.toString();
			var arrObj = url.split("?");
			if (arrObj.length > 1) {
				var arrPara = arrObj[1].split("&");
				var arr;
				for (var i = 0; i < arrPara.length; i++) {
					arr = arrPara[i].split("=");

					if (arr != null && arr[0] == 'auth_token') {
						return arr[1];

					}
				}
				return "";
			} else {
				return "";
			}
		},
		//将xml解析json对象
		parseXMLToJSon: function(xmlStr) {
			return xotree.parseXML(xmlStr);
		},
		/**
		 * @desc 警告框
		 * @param message: 提示对话框上显示的内容
		 * @param title: 提示对话框上显示的标题
		 * @param btnValue: 提示对话框上按钮显示的内容
		 * @param callback: 提示对话框上关闭后的回调函数
		 * @param type: 是否使用h5绘制的对话框 Value: 'div'
		 */
		alert: function(message, title, btnValue, callback, type) {
			mui.alert(message, title, btnValue, callback, type);
		},
		/**
		 * @desc 确认框
		 * @param message: 提示对话框上显示的内容
		 * @param title: 提示对话框上显示的标题
		 * @param btnValue: 提示对话框上按钮显示的内容
		 * @param callback: 提示对话框上关闭后的回调函数
		 * @param type: 是否使用h5绘制的对话框 Value: 'div'
		 */
		confirm: function(message, title, btnValue, callback, type) {
			mui.confirm(message, title, btnValue, callback, type);
		},
		/**
		 * @desc 输入对话框
		 * @param message: 提示对话框上显示的内容
		 * @param placeholder: 编辑框显示的提示文字
		 * @param title: 提示对话框上显示的标题
		 * @param btnValue: 提示对话框上按钮显示的内容
		 * @param callback: 提示对话框上关闭后的回调函数
		 * @param type: 是否使用h5绘制的对话框 Value: 'div'
		 */
		propmpt: function(message, placeholder, title, btnValue, callback, type) {
			mui.confirm(message, title, btnValue, callback, type);
		},
		/**
		 * @desc 消息提示框
		 * @param message: 提示对话框上显示的内容
		 * @param options: 编辑框显示的提示文字
		 */
		toast: function(message, options) {
			mui.toast(message, options);
		},
		//获取url上的参数
		getQueryString: function(name) {
			var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
			var r = window.location.search.substr(1).match(reg);
			if (r != null) {
				return unescape(r[2]);
			}
			return null;
		},

		getUrlVars: function(url) {
			var hash;
			var myJson = {};
			var hashes = url.slice(url.indexOf('?') + 1).split('&');
			for (var i = 0; i < hashes.length; i++) {
				hash = hashes[i].split('=');
				myJson[hash[0]] = hash[1];
			}
			return myJson;
		},
		//判断数组或者对象
		isArrOrObj: function(object) {
			//console.log('isArr',typeof object);
			if (typeof object !== 'object') {
				return;
			}
			if (typeof object.length == 'number') {
				return 'Array';
			} else {
				return 'Object';
			}
		},
		desensitization: function(str, beginStr, endStr) {
			var len = str.length;
			var leftStr = str.substring(0, beginStr);
			var rightStr = str.substring(endStr, len);
			var strResult = '';
			var i = 0;
			try {
				for (i = 0; i < endStr - beginStr; i++) {
					strResult = strResult + '*';
				}
			} catch (error) {

			}
			strResult = leftStr + strResult + rightStr;
			return strResult;
		}

	}
})();

/**
 * 将字符串(yyyymmdd)转换成日期格式(yyyy-mm-dd)
 * @param str
 * @returns {string|void|never|string}
 */
function formatStringDate(str) {
	return str.replace(/^(\d{4})(\d{2})(\d{2})$/, "$1-$2-$3");
}

/**
 * @desc base64加密
 * @param input
 * @returns
 */
function encode64(input) {
	_keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

	var output = "";
	var chr1, chr2, chr3 = "";
	var enc1, enc2, enc3, enc4 = "";
	var i = 0;
	do {
		chr1 = input.charCodeAt(i++);
		chr2 = input.charCodeAt(i++);
		chr3 = input.charCodeAt(i++);
		enc1 = chr1 >> 2;
		enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
		enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
		enc4 = chr3 & 63;
		if (isNaN(chr2)) {
			enc3 = enc4 = 64;
		} else if (isNaN(chr3)) {
			enc4 = 64;
		}
		output = output + _keyStr.charAt(enc1) + _keyStr.charAt(enc2) +
			_keyStr.charAt(enc3) + _keyStr.charAt(enc4);
		chr1 = chr2 = chr3 = "";
		enc1 = enc2 = enc3 = enc4 = "";
	} while (i < input.length);

	return output;
}

var xotree = new XML.ObjTree();

posted on 2020-06-24 10:05  是夏目呀  阅读(14)  评论(0)    收藏  举报

导航