/** * Created by JasonChou on 17/2/20. */ try { if (typeof JSON3 !== 'undefined' && JSON3) { JSON.parse = function (text) { try { return JSON3.parse(text) } catch (err) { return text } } } } catch (error) { console.log(error) } function httpPost(url, params, sync, method) { method = method || 'POST'; if (method === 'GET' || method === 'DELETE') { url += generateQuery(params); } try { if (params) { for (var key in params) { var value = params[key]; if (isArray(value) || isObject(value)) { params[key] = JSON.stringify(value); } } } var options = { url: url, beforeSend: function (request) { request.setRequestHeader("csrf-token", localStorage.getItem('csrf_token')); }, type: method, xhrFields: { withCredentials: true, }, }; if (sync == true) { options.async = false; } if (method == 'POST' || method == 'PUT') { options['data'] = params; options['dataType'] = 'json'; // options = Object.assign(options, { // data: params, // dataType: 'json' // }) } return $.ajax(options).done(function (res) { if (res.errcode == 0 && res.data) { var params = res.data; if (isArray(params)) { for (var index = 0; index < params.length; index++) { stringToObject(params[index]); } } else { stringToObject(params); } } return res; }); } catch (e) { // loadingObj.hide(); alert(e.toString()); } function generateQuery(param) { var list = []; for (var key in param) { list.push(key + '=' + param[key]); } return '?' + list.join('&'); } } function httpPostFormData(url, params, async) { // async 默认值 if (typeof (async) === 'undefined') { async = true; } try { var options = { url: url, beforeSend: function (request) { request.setRequestHeader("csrf-token", localStorage.getItem('csrf_token')); }, data: params, type: 'POST', processData: false, contentType: false, xhrFields: { withCredentials: true, }, }; return $.ajax(options).done(function (res) { if (res.errcode == 0 && res.data) { var params = res.data; } return res; }); } catch (e) { // loadingObj.hide(); alert(e.toString()); } } // 取得后缀 function getSuffix(filename) { var pos = filename.lastIndexOf('.') var suffix = '' if (pos !== -1) { suffix = filename.substring(pos) } return suffix; } function stringToObject(params) { for (var key in params) { var value = params[key]; if (isString(value)) { try { if (typeof JSON.parse(value) == 'object') { params[key] = JSON.parse(value); } } catch (e) { } } else if (isArray(value)) { try { for (var index = 0; index < value.length; index++) { stringToObject(value[index]); } } catch (e) { } } else if (isObject(value)) { try { stringToObject(params[key]) } catch (e) { } } } } function isArray(o) { return Object.prototype.toString.call(o) === '[object Array]'; } function isString(o) { return Object.prototype.toString.call(o) === '[object String]'; } function isObject(o) { return Object.prototype.toString.call(o) === '[object Object]'; } function isEmptyObject(o) { var item; for (item in o) return false; return true; } function getUrlParam(name) { var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)'); var r = window.location.search.substr(1).match(reg); if (r != null) { return decodeURIComponent(r[2]); } return null; //返回参数值 } function setUrlParam(url, paramDict) { for (var key in paramDict) { var param = paramDict[key]; var re = new RegExp('(/?|^|&)' + key + '=([^&]*)(&|$)'); var m = url.match(re); if (m) { url = url.replace(re, function ($0, $1, $2) { if ($2 === '') { var re1 = new RegExp('&$'); var mm = $0.match(re1); return mm ? ($0.split("=&")[0] + '=' + param + "&") : ($0 + param); } else return ($0.replace($2, param)); }) } else { if (url.indexOf('?') == -1) url += '?' + key + '=' + param; else url += '&' + key + '=' + param; } } return url; } function getSrc(temp, isShowOrigin, width, height, isAddSingleQuotationMarks) { var srcUrl = getSrcWithNoSingleMark(temp, isShowOrigin, width, height); if (isAddSingleQuotationMarks) { return srcUrl; } return "'" + srcUrl + "'"; } function getSrcWithNoSingleMark(temp, isShowOrigin, width, height) { var srcUrl = ''; if (isArray(temp)) { if (isObject(temp[0]) && temp[0].type && temp[0].imageInfo) { srcUrl = temp[0].imageInfo; } else { srcUrl = temp[0] || ''; } } else if (isObject(temp) && temp.url) { srcUrl = temp.url; } else if (isObject(temp) && temp.type && temp.imageInfo) { srcUrl = temp.imageInfo; } else srcUrl = temp; if (!isShowOrigin && srcUrl && srcUrl.indexOf('.oss-') !== -1 && (width || height)) { srcUrl += '?x-oss-process=image/resize'; if (width) srcUrl += ',w_' + width; if (height) srcUrl += ',h_' + height; } return "" + srcUrl + ""; } //轮播图url做编码处理 function existBlankDoEncodeURI(srcUrl) { // if(srcUrl.indexOf(' ')) return encodeURI(srcUrl); } function getSrcWithCarousel(temp, field) { var srcUrl = ''; if (isArray(temp)) { if (isObject(temp[0]) && !!field && field != 'undefined' && temp[0][field] != undefined) { srcUrl = temp[0][field]; } else if (isObject(temp[0]) && temp[0].type && temp[0].imageInfo) { srcUrl = temp[0].imageInfo; } else { srcUrl = temp[0]; } } else if (isObject(temp) && !!field && field != 'undefined' && temp[field] != undefined) { if (isArray(temp[field])) { if (isObject(temp[field][0]) && temp[field][0].type && temp[field][0].imageInfo) { srcUrl = temp[field][0].imageInfo; } else { srcUrl = temp[field][0]; } } else if (isObject(temp[field]) && temp[field].url) { srcUrl = temp[field].url; } else if (isObject(temp[field]) && temp[field].type && temp[field].imageInfo) { srcUrl = temp[field].imageInfo; } else { srcUrl = temp[field]; } } else if (isObject(temp) && temp.url) { srcUrl = temp.url; } else if (isObject(temp) && temp.type && temp.imageInfo) { srcUrl = temp.imageInfo; } else { srcUrl = temp; } if (isString(srcUrl)) { srcUrl = existBlankDoEncodeURI(srcUrl); } else { srcUrl = "'" + srcUrl + "'"; srcUrl = existBlankDoEncodeURI(srcUrl); } return srcUrl; } //为了修正之前JSON.parse的问题 function handleJsonParse(params) { try { return JSON.parse(params); } catch (error) { return params; } } function handleDataSource(val, assignPropWithControlId, fieldName) { // console.log("assignPropWithControlId", assignPropWithControlId); if (isArray(val)) { if (isArray(assignPropWithControlId)) { assignPropWithControlId = []; if (val.length) { for (var i = 0; i < val.length; i++) { if (isArray(val[i][fieldName])) { if (val[i][fieldName].length) { for (var j = 0; j < val[i][fieldName].length; j++) { assignPropWithControlId.push(val[i][fieldName][j]); } } } else { assignPropWithControlId.push(val[i][fieldName] || ''); } } } } else { assignPropWithControlId = val.length ? val[0][fieldName] : ''; } } else { assignPropWithControlId = val[fieldName]; } // console.log("assignPropWithControlId res", assignPropWithControlId); return assignPropWithControlId; } function handleDataSourceWithOption(val, assignPropWithControlId, valueField, keyField) { assignPropWithControlId = []; if (isArray(val)) { for (var i = 0; i < val.length; i++) { if (isArray(val[i][valueField]) && isArray(val[i][keyField])) { if (val[i][valueField].length && val[i][keyField].length && (val[i][valueField].length == val[i][keyField].length)) { for (var j = 0; j < val[i][valueField].length; j++) { var oneOption; oneOption = { text: val[i][valueField][j] || '', value: val[i][keyField][j] || '', }; assignPropWithControlId.push(oneOption); } } } else { var oneOption; oneOption = { text: val[i][valueField] || '', value: val[i][keyField] || '', }; assignPropWithControlId.push(oneOption); } } } else { assignPropWithControlId = [{ text: val[valueField] || '', value: val[keyField] || '', }]; } return assignPropWithControlId; } function handleDataSourceForMenu(val, nameField, pathField, numberField, paramsField, iconField) { var menuList = []; if (isArray(val)) { for (var i = 0; i < val.length; i++) { var nameProp = val[i][nameField]; var pathProp = val[i][pathField]; var numberProp = val[i][numberField]; var paramsProp = val[i][paramsField]; var iconProp = val[i][iconField]; if (isArray(nameProp) && isArray(pathProp) && isArray(numberProp)) { if (nameProp.length && pathProp.length && numberProp.length && (nameProp.length == pathProp.length)) { for (var j = 0; j < nameProp.length; j++) { var oneOption; oneOption = { name: nameProp[j] || '', path: pathProp[j] || '', number: numberProp[j] || '', }; if (isArray(iconProp) && iconProp.length) { oneOption.normalIconUrl = iconProp[j] || ''; } if (paramsProp[j]) { oneOption.path += '?params_id=' + paramsProp[j]; } menuList.push(oneOption); } } } else { var oneOption; oneOption = { name: nameProp || '', path: pathProp || '', number: numberProp || '', normalIconUrl: iconProp || '' }; if (paramsProp) { oneOption.path += '?params_id=' + paramsProp; } menuList.push(oneOption); } } } else { menuList = [{ name: val[nameField] || '', path: val[pathField] || '', number: val[numberField] || '', normalIconUrl: val[iconField] || '', }]; } return menuList; } function judgePathInMenuList(menuList, pathName) { if (menuList) { for (var i = 0; i < menuList.length; i++) { var item = menuList[i]; if (item.path == pathName) { return true; } if (item.children) { for (var j = 0; j < item.children.length; j++) { var childItem = item.children[j]; if (childItem.path == pathName) { return true; } } } } } return false; } /** * 数组数据分组 */ function groupBy(array, field) { var list = [], map = {}; array.forEach(function (item) { var key = item[field]; if (map[key]) { map[key].push(item); } else { map[key] = [item]; } }); for (var key in map) { var item = { value: map[key], }; item[field] = key; list.push(item); } return list; } /** * sortByDistanceNearToFar */ function sortByDistanceNearToFar(list, field, currentLocation) { var result = []; // alert(currentLocation.latitude + ',' + currentLocation.longitude) if (!currentLocation) return list; if (list && list.length) { var fieldArray = field.split('_'); var distanceName = ''; for (var i = 0; i < list.length; i++) { var item = list[i]; var location = { lat: currentLocation.latitude, lng: currentLocation.longitude, }; var distance = getDistance(item[field], location); if (fieldArray.length < 2) { distanceName = 'distance'; } else { for (var key in item) { if (key.lastIndexOf('_distance') >= 0) { distanceName = key; break; } } } item[distanceName] = distance || 0; result.push(item); } result.sort(function (a, b) { return a[distanceName] - b[distanceName]; }); for (var i = 0; i < result.length; i++) { var item = result[i]; item[distanceName] *= 1000; if (item[distanceName] > 1000) item[distanceName] = (item[distanceName] / 1000.00).toFixed(1) + 'km'; else item[distanceName] = parseInt(item[distanceName]) + 'm'; } } return result; } function getDistance(locationOne, locationTwo) { var radLat1 = rad(locationOne.lat); var radLat2 = rad(locationTwo.lat); var a = radLat1 - radLat2; var b = rad(locationOne.lng) - rad(locationTwo.lng); var distance = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2))); distance *= 6378.137; //earth radius return distance; } //根据字符串处理数据,处理三目运算 function conditionalExp(data, dataStr, defaultReturn) { var result = defaultReturn; try { function getResult(tmpData, current, defaultRe) { if (tmpData) { return tmpData ? tmpData[current] : defaultRe; } else return defaultRe; } var splitArr = []; if (dataStr && dataStr.length) { dataStr = dataStr.replace(/\[/g, ".").replace(/\]/g, "").replace(/"/g, "").replace(/'/, ""); splitArr = dataStr.split('.'); } result = data; if (splitArr && splitArr.length) { for (var i = 1; i < splitArr.length; i++) { var tmp = splitArr[i]; result = getResult(result, tmp, defaultReturn); if (result == defaultReturn) { return defaultReturn; } } } } catch (error) { } return result || defaultReturn; } function rad(d) { return d * Math.PI / 180; } /** * url param */ function querystring(param) { var array = []; for (var key in param) { var value = param[key]; array.push(key + '=' + value); } return array.join('&'); } /** * 日期格式化 */ function formatDate(fmt, timestamp) { Date.prototype.Format = function (fmt) { //author: meizz var o = { 'M+': this.getMonth() + 1, //月份 'd+': this.getDate(), //日 'h+': this.getHours(), //小时 'm+': this.getMinutes(), //分 's+': this.getSeconds(), //秒 'q+': Math.floor((this.getMonth() + 3) / 3), //季度 'S': this.getMilliseconds() //毫秒 }; if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length)); for (var k in o) if (new RegExp('(' + k + ')').test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length))); return fmt; }; if (timestamp) { timestamp = (typeof timestamp === 'string' && timestamp.indexOf(' ') !== -1) ? timestamp.replace(' ', 'T') : timestamp; return new Date(timestamp).Format(fmt); } return new Date().Format(fmt); } /** * 根据字段排序返回数组中最小值 * @param {数组} list * @param {字段名} field */ function getMinValue(list, field) { var compare = function (a, b) { return a[field] > b[field]; }; return list.sort(compare)[0]; } /** * 验证字符串格式 * @param text 字符串 * @param type 验证类型 */ function validate(text, type) { var res; switch (type) { case 'email': var reg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/; res = reg.test(text); break; case 'mobile': var reg = /^1[0-9]{10}$/; res = reg.test(text); break; case 'idcard': var res = checkIDCard(text); break; case 'number': var reg = /^[+-]?[\d.]+$/; res = reg.test(text); break; case 'dollar': var reg = /^[+-]?[\d.,]+$/; res = reg.test(text); break; default: res = true; break; } var map = { 'email': '邮箱', 'mobile': '手机', 'idcard': '身份证号', 'number': '数字', 'dollar': '金额', }; return { status: res, message: res == true ? '验证通过' : map[type] + '格式不正确', }; } function checkIDCard(idcode) { // 加权因子 var weight_factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; // 校验码 var check_code = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']; var code = idcode + ''; var last = idcode[17]; //最后一个 var seventeen = code.substring(0, 17); // ISO 7064:1983.MOD 11-2 // 判断最后一位校验码是否正确 var arr = seventeen.split(''); var len = arr.length; var num = 0; for (var i = 0; i < len; i++) { num = num + arr[i] * weight_factor[i]; } // 获取余数 var resisue = num % 11; var last_no = check_code[resisue]; // 格式的正则 // 正则思路 /* 第一位不可能是0 第二位到第六位可以是0-9 第七位到第十位是年份,所以七八位为19或者20 十一位和十二位是月份,这两位是01-12之间的数值 十三位和十四位是日期,是从01-31之间的数值 十五,十六,十七都是数字0-9 十八位可能是数字0-9,也可能是X */ var idcard_patter = /^[1-9][0-9]{5}([1][9][0-9]{2}|[2][0][0|1][0-9])([0][1-9]|[1][0|1|2])([0][1-9]|[1|2][0-9]|[3][0|1])[0-9]{3}([0-9]|[X])$/; // 判断格式是否正确 var format = idcard_patter.test(idcode); // 返回验证结果,校验码和格式同时正确才算是合法的身份证号码 return last === last_no && format; } /** * 数组转为对象 */ function arrayToMap(list, key, return_key) { var map = {}; list.forEach(function (item) { var value = item[key]; if (value) { map[value] = return_key ? item[return_key] : item; } }); return map; } /** * * @param {*数组} list * @param {*分组字段} keys * @param {*返回字段} fields */ var grouping = function (list, keys, fields) { var result = [], map = {}; if (!keys && !fields) { return list; } keys = keys ? keys.split(',') : null; fields = fields ? fields.split(',') : null; var extract = function (item, keys) { if (!keys) { return item; } var res = {}; keys.forEach(function (key) { res[key] = item[key]; }); return res; }; var push = function (item, uniq, fields) { if (uniq) { var index = find(uniq); result[index].value.push(item); } else { var extra = extract(item, fields); extra.value = [item]; result.push(extra); } return result; }; var find = function (uniq) { for (var index in result) { var item = result[index], flag = true; for (var key in uniq) { if (uniq[key] != item[key]) { flag = false; } } if (flag) { return index; } } return -1; }; var hash = {}; list.forEach(function (item) { var uniq = extract(item, keys); var uniqstring = JSON.stringify(uniq); if (hash[uniqstring]) { push(item, uniq, fields); } else { hash[uniqstring] = true; push(item, null, fields); } }); return result; }; /** * 查找数组中对象数量 * @param {*数组} list * @param {*键(多个键以逗号隔开)} keys * @param {*值(多个值以逗号隔开)} values */ var count = function (list, keys, values) { if (!(Object.prototype.toString.call(list) === '[object Array]')) { return 0; } if (!keys && !values) { return list.length; } keys = keys.split(','); values = values.split(','); return list.filter(function (item) { for (var index in keys) { var key = keys[index]; var value = values[index]; if (item[key] != value) { return false; } } return true; }).length; }; /** * 数组 flatting 去重 */ var flatting = function (list, field) { var hash = {}, array = []; list.forEach(function (item) { var value = item[field], key; if (typeof value === 'object') { key = JSON.stringify(value); } else { key = value; } // hash if (!hash[key]) { array.push(value); hash[key] = true; } }); return array; }; /** * 计算数组平均值 */ var average = function (list, field) { var sum = 0; list.forEach(function (item) { var value = field ? item[field] : item; sum += parseFloat(value); }); var result = (sum / list.length).toFixed(2); return result; }; /** * 生成分页数据结构 */ var pagination = function (count, page) { var pages = [], status; for (var i = 1; i <= count; i++) { status = i == page ? 'current' : 'num'; if (i == 1) { push(i, status); first(); continue; } if (i == count) { end(); push(i, status); continue; } if (i < page - 3 || i > page + 3) { continue; } push(i, status); } function push(name, status) { pages.push({ name: name, status: status, }); } function first() { if (page > 1) { push('<<', 'pre'); } } function end() { if (page < count) { push('>>', 'next'); } } return pages; }; /** * 生成分页数据结构2 */ var paginationText = function (count, page) { var pages = [], status; for (var i = 1; i <= count; i++) { status = i == page ? 'current' : 'num'; if (i == 1) { push(i, status); first(); add(); continue; } if (i == count) { middle(); push(i, status); end(); continue; } if (i < page - 3 || i > page + 3) { continue; } push(i, status); } function push(name, status) { pages.push({ name: name, status: status, }); } function unshift(name, status) { pages.unshift({ name: name, status: status, }); } function splice(name, status) { pages.splice(2, 0, { name: name, status: status, }); } function first() { if (page > 1 && page <= count) { unshift('上一页', 'pre'); } } function add() { if (page == count && count > 5 || (page < count && count > 5 && page > 5)) { splice('...', 'more'); } } function middle() { if (page < count && count - page > 4) { push('...', 'more'); } } function end() { if (page < count) { push('下一页', 'next'); } } return pages; }; /** * 生成随机字符串 * @param number 字符串长度 */ function generateRandomString(number) { number = parseInt(number); var str = ''; var possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; for (var i = 0; i < number; i++) { str += possible.charAt(Math.floor(Math.random() * possible.length)); } return str; } /** * 通用逻辑判断 */ function computeLogic(logic, value, target) { switch (logic) { case '==': return value == target; case '<': return value < parseFloat(target); case '<=': return value < parseFloat(target); case '>': return value > parseFloat(target); case '>=': return value > parseFloat(target); case '!=': return value != parseFloat(target); case 'in': var list = target.split(','); return list.indexOf(valur.toString()) != -1; case 'not-in': var list = target.split(','); return list.indexOf(value.toString()) == -1; case 'between': var minmax = target.split(','); var minvalue = parseFloat(minmax[0]); var maxvalue = parseFloat(minmax[1]); return value >= minvalue && value <= maxvalue; } return false; } /** * 计算画廊控件images的值 */ function generateGalleryImages(images, keyword) { if (isString(images)) { // 处理JSON.encode后存储的数据 images = JSON.parse(images); } return images.map(function (image) { if (isString(image)) { // 处理有空格的情况 return encodeURI(image); } if (isObject(image) && keyword) { return getSrcWithNoSingleMark(image[keyword]); } else { var srcUrl = getSrcWithNoSingleMark(image); return srcUrl; } return ''; }); } function generateGalleryImages2(images, keyword) { if (isString(images)) { // 处理JSON.encode后存储的数据 images = JSON.parse(images); } function transform(srcUrl) { srcUrl = JSON.parse(srcUrl) if (isArray(srcUrl) && isObject(srcUrl[0]) && srcUrl[0].imageInfo) { srcUrl = srcUrl[0].imageInfo } return srcUrl } return images.map(function (image) { var srcUrl = '' if (isString(image)) { // 处理有空格的情况 srcUrl = encodeURI(image); } if (isObject(image) && keyword) { srcUrl = getSrcWithNoSingleMark(image[keyword]); } else { srcUrl = getSrcWithNoSingleMark(image); } try { if (isString(srcUrl)) { srcUrl = transform(srcUrl) } } catch (e) { } return srcUrl; }); } /** * 转换字符串为JSON格式 */ function parseJSON(string) { if (!isString(string)) { return string; } try { string = JSON.parse(string); } catch (e) { } return string; } function IEVersion() { var userAgent = navigator.userAgent; var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1; var isEdge = userAgent.indexOf("Edge") > -1 && !isIE; var isIE11 = userAgent.indexOf('Trident') > -1 && userAgent.indexOf("rv:11.0") > -1; if (isIE) { var reIE = new RegExp("MSIE (\\d+\\.\\d+);"); reIE.test(userAgent); var fIEVersion = parseFloat(RegExp["$1"]); if (fIEVersion == 7) { return 7; } else if (fIEVersion == 8) { return 8; } else if (fIEVersion == 9) { return 9; } else if (fIEVersion == 10) { return 10; } else { return 6; } } else if (isEdge) { return 'edge'; } else if (isIE11) { return 11; } else { return -1; } } function lessIEVersion(version) { var cur = IEVersion(); if (cur !== -1 && cur !== 'edge') { return cur < version; } return false; } function IE9() { return IEVersion() === 9; } function lessIE9() { return lessIEVersion(9); } /** * 滚动到顶部 * @param {*位置} pos */ function scrollTop(pos) { document.body.scrollTop = document.documentElement.scrollTop = pos || 0; } /** * 根据下载链接随机生成文件名 * @param {*链接} url */ function generateFileName(url) { var postfix = /\.[^\.]+$/.exec(url); return Date.now() + '-' + Math.random().toString(36).substr(2) + postfix; } // polyfill if (!String.prototype.startsWith) { String.prototype.startsWith = function (search, pos) { return this.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search; }; } /** * 合并菜单 * @param {*} list * @param {*} field */ function combine_menu(list, field) { var menulist = [].concat(list) menulist = menulist.sort(function (u, v) { var weightU = parseFloat(u[field]); var weightV = parseFloat(v[field]); return weightU - weightV }) var map = {} function isInt(weightber) { return weightber % 1 === 0 } menulist.forEach(function (item) { var weight = item[field]; if (isInt(weight)) { item.children = [] map[weight] = item; } else { if (map[parseInt(weight)]) { map[parseInt(weight)].children.push(item); } } }) menulist = [] for (var key in map) { menulist.push(map[key]) } return menulist; } //搜索文本并高亮显示 function highlight(keyword) { var oDiv = document.body.innerHtml, oChilds = document.body.childNodes, bgColor = bgColor || "yellow"; for (var i = 0; i < oChilds.length - 1; i++) { if (oChilds[i].nodeType == 3 && /\s/.test(oChilds[i].nodeValue)) { //删除空白的节点 oChilds[i].parentNode.removeChild(oChilds[i]); } var inner = oChilds[i].innerHTML; if (inner) { for (var j = 0; j < keyword.length; j++) { sKey = "" + keyword[j] + "", rStr = new RegExp(keyword[j], "g"); inner = inner.replace(rStr, sKey); } oChilds[i].innerHTML = inner; } } } /** * 日历控件 */ var langSets = { en: { weekNames: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], monthNames: [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ], titleFormat: "MMMM yyyy" }, zh: { weekNames: ["日", "一", "二", "三", "四", "五", "六"], monthNames: [ "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月" ], titleFormat: "yyyy年MM月" }, fr: { weekNames: ["Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam"], monthNames: [ "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre" ], titleFormat: "MMMM yyyy" } }; var shortMonth = [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ] var defMonthNames = [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ] var dateFunc = { getDuration: function (date) { // how many days of this month var dt = new Date(date) var month = dt.getMonth() dt.setMonth(dt.getMonth() + 1) dt.setDate(0); return dt.getDate() }, changeDay: function (date, num) { var dt = new Date(date) return new Date(dt.setDate(dt.getDate() + num)) }, getStartDate: function (date) { // return first day of this month return new Date(date.getFullYear(), date.getMonth(), 1) }, getEndDate: function (date) { // get last day of this month var dt = new Date(date.getFullYear(), date.getMonth() + 1, 1) // 1st day of next month return new Date(dt.setDate(dt.getDate() - 1)) // last day of this month }, formatDateString: function (dateString) { if (!dateString) { return; } var newString = ''; var arr = dateString.split('-') newString += arr[0]; newString += arr[1].length === 2 ? '-' + arr[1] : '-0' + arr[1]; if (arr[2]) { newString += arr[2].length === 2 ? '-' + arr[2] : '-0' + arr[2]; } return newString; }, format: function (date, format, monthNames) { monthNames = monthNames || defMonthNames if (typeof date === 'string') { date = new Date(date.replace(/-/g, '/')) } else { date = new Date(date) } var map = { 'M': date.getMonth() + 1, 'd': date.getDate(), 'h': date.getHours(), 'm': date.getMinutes(), 's': date.getSeconds(), 'q': Math.floor((date.getMonth() + 3) / 3), 'S': date.getMilliseconds() } format = format.replace(/([yMdhmsqS])+/g, function (all, t) { // console.log('all', all, t, format) var v = map[t] if (v !== undefined) { if (all === 'MMMM') { return monthNames[v - 1]; } if (all === 'MMM') { return shortMonth[v - 1]; } if (all.length > 1) { v = '0' + v; v = v.substr(v.length - 2); } return v } else if (t === 'y') { return String(date.getFullYear()).substr(4 - all.length); } return all; }) // format = format.replace(/([yMdhmsqS])+/g, function(all, t) ({ // }) // console.log('format res', format) return format; } } // log error // window.onerror = function (msg, url, row, col, error) { // // var params = { msg: msg, url: url, row: row, col: col, name: error ? error.name : 'error'}; // alert('操作失败'); // console.log(error); // // httpPost('/api/logerror', params, false, 'POST').done(function (res) { // // }).fail(function (res) { // // console.log('logerror failed: ', res.responseJSON); // // }); // return true; // }; ; (function (exports) { exports.lessIE9 = lessIE9; exports.IE9 = IE9; exports.stringToObject = stringToObject; exports.lessIEVersion = lessIEVersion; })(window)