String.prototype.trim = function () { return this.replace(/(^\s*)|(\s*$)/g, ""); } function NewGuid() { var guid = ""; for (var i = 1; i <= 32; i++) { var n = Math.floor(Math.random() * 16.0).toString(16); guid += n; if ((i == 8) || (i == 12) || (i == 16) || (i == 20)) guid += "-"; } return guid.toUpperCase(); } function DsOpenEditWin(url, caption, height, width, top, left) { var pageinfo = "height="; /* if (typeof caption == undefined) { var _caption = "添加提单"; } else { var _caption = caption; } if (typeof height == undefined) { var _height = "650"; } else { var _height = height; } if (typeof width == undefined) { var _width = "1000"; } else { var _width = width; }*/ if (caption == undefined) { var _caption = "添加提单"; } else { var _caption = caption; } // //alert(height); if (height == undefined || height == "") { pageinfo = pageinfo.concat("" + (window.screen.availHeight - 50) + ""); } //"650" else { pageinfo = pageinfo.concat(height); } pageinfo = pageinfo.concat("px, width="); if (width == undefined || width == "") { pageinfo = pageinfo.concat("" + (window.screen.availWidth - 10) + ""); } //"900" else { pageinfo = pageinfo.concat(width); } pageinfo = pageinfo.concat("px, top="); if (top == undefined || top == "") { pageinfo = pageinfo.concat("0"); } else { pageinfo = pageinfo.concat(top); } pageinfo = pageinfo.concat("px, left="); if (left == undefined || left == "") { pageinfo = pageinfo.concat("0"); } else { pageinfo = pageinfo.concat(left); } pageinfo = pageinfo.concat("px,center:yes,resizable=yes,status=yes,menubar=no,scrollbars=yes"); //pageinfo = pageinfo.concat("width=" + (window.screen.availWidth - 10) + ",height=" + (window.screen.availHeight - 30) + ",top=0,left=0,resizable=yes,status=yes,menubar=no,scrollbars=yes"); //alert(pageinfo); return window.open(url, _caption, pageinfo); //return window.open(url, _caption, 'width=' + (window.screen.availWidth - 10) + ',height=' + (window.screen.availHeight - 55) + ',top=0,left=0,resizable=yes,status=yes,menubar=no,scrollbars=yes'); // return window.open(url, "添加提单", "height=600px, width=900px,center:yes,help:no,toolbar=no,menubar=no,scrollbars=no,resizable=0,location=no,status=no"); } function DsOpenMultiEditWin(url, caption, height, width, top, left) { var pageinfo = "height="; if (caption == undefined) { var _caption = "添加提单"; } else { var _caption = caption; } if (height == undefined || height == "") { pageinfo = pageinfo.concat("" + (window.screen.availHeight - 50) + ""); } //"650" else { pageinfo = pageinfo.concat(height); } pageinfo = pageinfo.concat("px, width="); if (width == undefined || width == "") { pageinfo = pageinfo.concat("" + (window.screen.availWidth - 10) + ""); } //"900" else { pageinfo = pageinfo.concat(width); } pageinfo = pageinfo.concat("px, top="); if (top == undefined || top == "") { pageinfo = pageinfo.concat("0"); } else { pageinfo = pageinfo.concat(top); } pageinfo = pageinfo.concat("px, left="); if (left == undefined || left == "") { pageinfo = pageinfo.concat("0"); } else { pageinfo = pageinfo.concat(left); } pageinfo = pageinfo.concat("px,center:yes,resizable=yes,status=yes,menubar=no,scrollbars=yes"); //pageinfo = pageinfo.concat("width=" + (window.screen.availWidth - 10) + ",height=" + (window.screen.availHeight - 30) + ",top=0,left=0,resizable=yes,status=yes,menubar=no,scrollbars=yes"); //alert(pageinfo); return window.open(url,null, pageinfo,null); //return window.open(url, _caption, 'width=' + (window.screen.availWidth - 10) + ',height=' + (window.screen.availHeight - 55) + ',top=0,left=0,resizable=yes,status=yes,menubar=no,scrollbars=yes'); // return window.open(url, "添加提单", "height=600px, width=900px,center:yes,help:no,toolbar=no,menubar=no,scrollbars=no,resizable=0,location=no,status=no"); } /* function DsOpenEditWin(url, caption) { return window.open(url, caption, "height=650px, width=900px,center:yes,help:no,toolbar=no,menubar=no,scrollbars=no,resizable=0,location=no,status=no"); } function DsOpenEditWin(url) { return window.open(url, "添加提单", "height=600px, width=900px,center:yes,help:no,toolbar=no,menubar=no,scrollbars=no,resizable=0,location=no,status=no"); }*/ function DsOpenAtMain(url, caption, MainCenter) { var finded = false; // var MainCenter = Ext.getCmp('MainCenter'); if (MainCenter != NaN && MainCenter != null) { var children = MainCenter.items; if (children) { for (var i = 0, len = children.length; i < len; i++) { if (children.items[i].id) { if (children.items[i].id == 'pnl' + caption) { MainCenter.setActiveTab(i); finded = true; } } } } if (finded == false) { var paneltabitems = new Ext.Panel({ id: 'pnl' + caption, layout: "fit", region: "center", autoScroll: true, frame: false, closable: true, bodyStyle: { // background: 'rgba(0, 0, 0, 1) none repeat scroll 0 0 !important' }, title: caption, html: ' ' }); MainCenter.add(paneltabitems); MainCenter.setActiveTab(paneltabitems); MainCenter.doLayout(); } } } function FindAtMain(pnlid, MainCenter) { var finded =null; // var MainCenter = Ext.getCmp('MainCenter'); if (MainCenter != NaN && MainCenter != null) { var children = MainCenter.items; if (children) { for (var i = 0, len = children.length; i < len; i++) { if (children.items[i].id) { if (children.items[i].id == pnlid) { finded = children.items[i]; } } } } } return finded; } //combox的前台模糊查询过滤 function FilterCombox(e) { var combo = e.combo; if (!e.forceAll) { var value = e.query.replace(/^\s*|\s*$/g, "").toUpperCase(); combo.store.filterBy(function (record, id) { var text = record.get(combo.displayField).toUpperCase(); return (text.indexOf(value) != -1); }); var field = combo.displayField; combo.store.sort({ property: field, //direction: state, direction: "ASC", //排序规则(重点) sorterFn: function (v1, v2) { v1 = v1.get(field); v2 = v2.get(field); return v1.indexOf(value) > v2.indexOf(value) ? 1 : (v1.indexOf(value) < v2.indexOf(value) ? -1 : 0); } }); combo.expand(); return false; } } //获取目前表最大的Serialno function DsGetCurSerialNo(store,serialno) { var result = serialno; if (result == 0) { for (var i = 0; i < store.getCount(); i += 1) { var member = store.getAt(i); if (member.data.SerialNo > result) { result = member.data.SerialNo; } } } return result; } //获取目前新SerialNo function DsGetNewSerialNo(store, serialno) { var result = DsGetCurSerialNo(store,serialno) + 1; return result; } //获取字段名为fieldname字段值为value记录集合 function DsStoreQueryBy(store, fieldname, value) { return store.queryBy(function (rec) { if (rec.get(fieldname) == value) { return true; } else { return false; } }); } //获取字段名为fieldname字段值like为value记录集合 function DsStoreQueryLikeBy(store, fieldname,num,value) { return store.queryBy(function (rec) { var str = rec.get(fieldname); if (str.substring(0,num) == value) { return true; } else { return false; } }); } Number.prototype.toFixed = function (len) { var add = 0; var s, temp; var s1 = this + ""; var start = s1.indexOf("."); if (start >= 0) { s1 = s1 + "0"; if (s1.substr(start + len + 1, 1) >= 5) add = 1; var temp = Math.pow(10, len); s = Math.floor(this.mul(temp)) + add; return s / temp; } else return this; } function accDiv(arg1, arg2) { var t1 = 0, t2 = 0, r1, r2; try { t1 = arg1.toString().split(".")[1].length } catch (e) { } try { t2 = arg2.toString().split(".")[1].length } catch (e) { } with (Math) { r1 = Number(arg1.toString().replace(".", "")) r2 = Number(arg2.toString().replace(".", "")) return (r1 / r2) * pow(10, t2 - t1); } } Number.prototype.div = function (arg) { return accDiv(this, arg); } function parseFloatDef(num, defnum) { if (num == '') return defnum; var anum = parseFloat(num); if (anum == NaN) return defnum else return anum } function accMul(arg1, arg2) { var m = 0, s1 = arg1.toString(), s2 = arg2.toString(); try { m += s1.split(".")[1].length } catch (e) { } try { m += s2.split(".")[1].length } catch (e) { } return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m) } Number.prototype.mul = function (arg) { return accMul(arg, this); } function accAdd(arg1, arg2) { var r1, r2, m; try { r1 = arg1.toString().split(".")[1].length } catch (e) { r1 = 0 } try { r2 = arg2.toString().split(".")[1].length } catch (e) { r2 = 0 } m = Math.pow(10, Math.max(r1, r2)) return (arg1 * m + arg2 * m) / m } Number.prototype.add = function (arg) { return accAdd(arg, this); } function Add(a, b, length) { if ((typeof (length) == undefined) || (length == null)) { length = 2; } var _r = parseFloat(a).add(parseFloat(b)).toFixed(parseInt(length)); return parseFloat(_r); } function Cut(a, b, length) { if ((typeof (length) == undefined) || (length == null)) { length = 2; } var _r = parseFloat(a).add(parseFloat(0) - parseFloat(b)).toFixed(parseInt(length)); return parseFloat(_r); } function Mul(a, b, length) { if ((typeof (length) == undefined) || (length == null)) { length = 2; } var _r = parseFloat(a).mul(parseFloat(b)) var _r2 = _r.toFixed(parseInt(length)); return parseFloat(_r2); } function Mul3(a, b, c, length) { if ((typeof (length) == undefined) || (length == null)) { length = 2; } var _r = (parseFloat(a).mul(parseFloat(b)).mul(parseFloat(c))).toFixed(parseInt(length)); return parseFloat(_r); } function Mul4(a, b, c, d, length) { if ((typeof (length) == undefined) || (length == null)) { length = 2; } var _r = (parseFloat(a).mul(parseFloat(b)).mul(parseFloat(c)).mul(parseFloat(d))).toFixed(parseInt(length)); return parseFloat(_r); } function Mul5(a, b, c, d, e, length) { if ((typeof (length) == undefined) || (length == null)) { length = 2; } var _r = (parseFloat(a).mul(parseFloat(b)).mul(parseFloat(c)).mul(parseFloat(d)).mul(parseFloat(e))).toFixed(parseInt(length)); return parseFloat(_r); } function Div(a, b, length) { if ((typeof (length) == undefined) || (length == null)) { length = 2; } var _r = parseFloat(a).div(parseFloat(b)).toFixed(parseInt(length)); return parseFloat(_r); } function returnfloat(value) { if (value=="***") return value; var value = Math.round(parseFloat(value) * 100) / 100; var xsd = value.toString().split("."); if (xsd.length == 1) { value = value.toString() + ".00"; return value; } if (xsd.length > 1) { if (xsd[1].length < 2) { value = value.toString() + "0"; } return value; } } function English(a) { var arr1 = new Array("", " thousand", " million", " billion"), arr2 = new Array("zero", "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"), arr3 = new Array("zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"), arr4 = new Array("ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"); strRet = ""; if (a.length == 3 && a.substr(0, 3) != "000") { if (a.substr(0, 1) != "0") { strRet += arr3[a.substr(0, 1)] + " hundred"; if (a.substr(1, 2) != "00") strRet += " and " } a = a.substring(1) } if (a.length == 2) if (a.substr(0, 1) == "0") a = a.substring(1); else if (a.substr(0, 1) == "1") strRet += arr4[a.substr(1, 2)]; else { strRet += arr2[a.substr(0, 1)]; if (a.substr(1, 1) != "0") strRet += "-"; a = a.substring(1) } if (a.length == 1 && a.substr(0, 1) != "0") strRet += arr3[a.substr(0, 1)]; return strRet }; function ToEn(a) { var arr1 = new Array("", " thousand", " million", " billion"); var b = a.length, f, h = 0, g = "", e = Math.ceil(b / 3), k = b - e * 3; g = ""; for (f = k; f < b; f += 3) { ++h; num3 = f >= 0 ? a.substring(f, f + 3) : a.substring(0, k + 3); strEng = English(num3); if (strEng != "") { if (g != "") g += " "; g += English(num3) + arr1[e - h] } } return g } //#region 合并单元格 /** * Kunoy * 合并单元格 * @param {} grid 要合并单元格的grid对象 * @param {} cols 要合并哪几列 [1,2,4]。另外,如果有check列需要合并,则放到最后[1,2,4,0] */ var mergeCells = function (grid, cols) { var arrayTr = document.getElementById(grid.getId() + "-body").firstChild.firstChild.firstChild.getElementsByTagName('tr'); var trCount = arrayTr.length; var arrayTd; var td; var merge = function (rowspanObj, removeObjs) { //定义合并函数 if (rowspanObj.rowspan != 1) { arrayTd = arrayTr[rowspanObj.tr].getElementsByTagName("td"); //合并行 td = arrayTd[rowspanObj.td - 1]; td.rowSpan = rowspanObj.rowspan; td.vAlign = "middle"; Ext.each(removeObjs, function (obj) { //隐身被合并的单元格 arrayTd = arrayTr[obj.tr].getElementsByTagName("td"); arrayTd[obj.td - 1].style.display = 'none'; }); } }; var rowspanObj = {}; //要进行跨列操作的td对象{tr:1,td:2,rowspan:5} var removeObjs = []; //要进行删除的td对象[{tr:2,td:2},{tr:3,td:2}] var col; var lastCol = 0; Ext.each(cols, function (colIndex) { //逐列去操作tr var rowspan = 1; var divHtml = null; //单元格内的数值 var isCF = ""; for (var i = 1; i < trCount; i++) { //i=0表示表头等没用的行 arrayTd = arrayTr[i].getElementsByTagName("td"); var cold = 0; Ext.each(arrayTd, function (Td) { //获取RowNumber列和check列 if (Td.getAttribute("class").indexOf("x-grid-cell-special") != -1) cold++; }); col = colIndex + cold; //跳过RowNumber列和check列 if (!divHtml) { if (col == 0) { divHtml = arrayTd[col].innerHTML; } else { divHtml = arrayTd[col - 1].innerHTML; } rowspanObj = { tr: i, td: col, rowspan: rowspan } } else { var cellText = arrayTd[col].innerHTML; if (col != 0) { cellText = arrayTd[col - 1].innerHTML; } var addf = function () { rowspanObj["rowspan"] = rowspanObj["rowspan"] + 1; removeObjs.push({ tr: i, td: col }); if (i == trCount - 1) merge(rowspanObj, removeObjs); //执行合并函数 }; var mergef = function () { merge(rowspanObj, removeObjs); //执行合并函数 divHtml = cellText; rowspanObj = { tr: i, td: col, rowspan: rowspan } removeObjs = []; }; if (cellText == divHtml) { if (colIndex != cols[0]) { //取得上一个合并的列号 //var iCol = col; //if (colIndex != lastCol) { // iCol = lastCol; //} var iCol = lastCol + 1; //取得第一个合并的列号 var leftDisplay = arrayTd[iCol - 1].style.display; //判断左边单元格值是否已display if (iCol >= 2) { leftDisplay = arrayTd[iCol - 2].style.display; //判断左边单元格值是否已display } if (leftDisplay == 'none') addf(); else mergef(); } else { addf(); lastCol = col; //取得第一个合并的列号; } } else { mergef(); } } } //lastCol = col; //取得上一个合并的列号 }); }; //#endregion function getAfterDATE(startdate,days) { var myDate = new Date(Date.parse(startdate.toString())); myDate.setDate(myDate.getDate() + (parseInt(days) -1)); var lsDate = Ext.util.Format.date(myDate, 'Y-m-d'); if (lsDate.indexOf("-00-") > -1) { lsDate = (myDate.getFullYear() - 1) + "-12-" + myDate.getDate(); } return lsDate; }; //数值添加小数位数后的“.00” function usMoney(v) { if (v == null || v == "") { v = 0; } v = (Math.round((v - 0) * 100)) / 100; v = (v == Math.floor(v)) ? v + ".00" : ((v * 10 == Math.floor(v * 10)) ? v + "0" : v); v = String(v); var ps = v.split('.'); var whole = ps[0]; var sub = ps[1] ? '.' + ps[1] : '.00'; var r = /(\d+)(\d{3})/; while (r.test(whole)) { whole = whole.replace(r, '$1' + ',' + '$2'); } v = whole + sub; if (v.charAt(0) == '-') { return '-' + v.substr(1); //'-$' } return v; //"$" }; //数值添加小数位数后的“.0”、货币“符号”、“,”分隔符;v:数值,dl:小数位数,symbol:符号,isComma:是否用“,”分隔数值 function usMoney(v, dl, symbol, isComma) { if (v == null || v == "") { v = 0; } //数值添加小数位数后的“0” var iChengShu = 1; var sXiaoShu = "."; for (var n = 1; n <= dl; n++) { iChengShu = Math.pow(10, n); sXiaoShu += "0"; } v = (Math.round((v - 0) * iChengShu)) / iChengShu; //v = (v == Math.floor(v)) ? v + ".00" : ((v * 10 == Math.floor(v * 10)) ? v + "0" : v); if (v == Math.floor(v)) { v = v + sXiaoShu; } else { var sValue = v.toString(); sValue = sValue.substr(sValue.indexOf(".") + 1); var iVLength = sValue.length; var iChengShu2 = 1; for (var k = (1 + iVLength); k <= dl; k++) { iChengShu2 = iChengShu2 * Math.pow(10, k); if ((v * iChengShu2) == Math.floor(v * iChengShu2)) { v = v + "0"; } } } //是否用“,”分隔数值 v = String(v); if (isComma) { //第一种方法 var ps = v.split('.'); var whole = ps[0]; var sub = ps[1] ? '.' + ps[1] : sXiaoShu; var r = /(\d+)(\d{3})/; while (r.test(whole)) { whole = whole.replace(r, '$1' + ',' + '$2'); } v = whole + sub; //第二种方法 //var zhs = v.substr(v, v.indexOf(".")); //if (v.indexOf(".") > -1) { // zhs = v.substr(v, v.indexOf(".")); //} //var iLength = zhs.length / 3; //var iLengthC = zhs.length / 3; //var zhs2 = ""; //for (var i = 1; i <= iLengthC; i++) { // zhs2 = "," + zhs.substring((iLength - 3*i),3); //} } //添加符号 if (v.charAt(0) == '-') { return '-' + symbol + v.substr(1); //'-$' } return symbol + v; //"$" }; function CheckISSTOP(_store, _fieldname, _value) { var field = DsStoreQueryBy(_store, 'name', _value); if (field.getCount() > 0) { var fielddata = field.getAt(0).data; if (fielddata.ISSTOP == "True") { return true; } else { return false; } } }; //#region 用于排序列 //最初用在importTrade模块上 //http://dev.sencha.com/deploy/ext-4.0.2a/examples/grid/multiple-sorting.html function doSort() { store.sort(getSorters()); } function changeSortDirection(button, changeDirection) { var sortData = button.sortData, iconCls = button.iconCls; if (sortData) { if (changeDirection !== false) { button.sortData.direction = Ext.String.toggle(button.sortData.direction, "ASC", "DESC"); button.setIconCls(Ext.String.toggle(iconCls, "sort-asc", "sort-desc")); } store.clearFilter(); doSort(); } } function getSorters() { var sorters = []; Ext.each(tbar.query('button'), function (button) { sorters.push(button.sortData); }, this); return sorters; } function createSorterButtonConfig(config) { config = config || {}; Ext.applyIf(config, { listeners: { click: function (button, e) { changeSortDirection(button, true); } }, iconCls: 'sort-' + config.sortData.direction.toLowerCase(), reorderable: true, xtype: 'button' }); return config; } //#endregion function isRealNum(val) { // isNaN()函数 把空串 空格 以及NUll 按照0来处理 所以先去除, if (val === "" || val == null) { return false; } if (!isNaN(val)) { //对于空数组和只有一个数值成员的数组或全是数字组成的字符串,isNaN返回false,例如:'123'、[]、[2]、['123'],isNaN返回false, //所以如果不需要val包含这些特殊情况,则这个判断改写为if(!isNaN(val) && typeof val === 'number' ) return true; } else { return false; } } function isNullorEmpty(exp) { var a = !exp; var b = typeof (exp); if (exp == null) return true; if (b == "object") return false; if (typeof (exp) == "undefined") return true; if (exp == true || exp == false) { try { //在这里运行代码 if (exp.trim() == "") return true; } catch (err) { //在这里处理错误 } return false; } if (isRealNum(exp)) return false; if (exp.trim() == "") return true; return false; } //#region 对象是否为false function isFalse(str) { if (str == '0' || str == '' || str == false || str == 'false' || str == 'False' || isNullorEmpty(str)) { return true; } else { return false; } } //#endregion //#region 对象是否为true function isTrue(str) { if (isNullorEmpty(str)) return false; if (str == true || str.toUpperCase() == 'true'.toUpperCase() || str.toUpperCase() == "true".toUpperCase() || str == '1' || str == "1" || str == 1) { return true; } else { return false; } } //#endregion