function getUrlParam(param) { var params = Ext.urlDecode(location.search.substring(1)); return param ? params[param] : params; } function isEmptyObject(e) { var t; for (t in e) return !1; return !0 } function checkzimu(value) { var Regx = /^[a-z]*$/; if (Regx.test(value)) { return true; } else { return false; } } function formatDate(date) { var myyear = date.getFullYear(); var mymonth = date.getMonth() + 1; var myweekday = date.getDate(); if (mymonth < 10) { mymonth = "0" + mymonth; } if (myweekday < 10) { myweekday = "0" + myweekday; } return (myyear + "-" + mymonth + "-" + myweekday); } function getMonthDays(myMonth) { var now = new Date(); //当前日期 var nowYear = now.getFullYear(); //当前年 var monthStartDate = new Date(nowYear, myMonth, 1); var monthEndDate = new Date(nowYear, myMonth + 1, 1); var days = (monthEndDate - monthStartDate) / (1000 * 60 * 60 * 24); return days; } function CheckFileExt(extstr, exg) { var extstr = extstr.substring(extstr.lastIndexOf(".")).toLowerCase(); if (!extstr.match(exg)) { return false; } return true; } function DateToStr(dt){ var str=""; if(dt.getFullYear){ var y,m,d; y=formatNumber(dt.getFullYear(),'0000'); m=formatNumber((dt.getMonth()+1),'00'); //01-12 d=formatNumber(dt.getDate(),'00'); str= y+"-"+m+"-"+d; } return str; } function DateTimeToStr(dt){ var str=""; if(dt.getFullYear){ var y,m,d,h,mi,s; y=formatNumber(dt.getFullYear(),'0000'); m=formatNumber((dt.getMonth()+1),'00'); //01-12 d=formatNumber(dt.getDate(),'00'); h=formatNumber(dt.getHours(),'00'); mi=formatNumber(dt.getMinutes(),'00'); s=formatNumber(dt.getSeconds(),'00'); str= y+"-"+m+"-"+d+" "+h+":"+mi+":"+s; } return str; } function StrToDate(str){ var arys= new Array(); arys=str.split('-'); var newDate=new Date(arys[0],arys[1]-1,arys[2]); return newDate; } function getDays(strDateStart, strDateEnd) { var strSeparator = "-"; //日期分隔符 var oDate1; var oDate2; var iDays; oDate1 = strDateStart.split(strSeparator); oDate2 = strDateEnd.split(strSeparator); var strDateS = new Date(oDate1[0], oDate1[1] - 1, oDate1[2]); var strDateE = new Date(oDate2[0], oDate2[1] - 1, oDate2[2]); iDays = parseInt(Math.abs(strDateS - strDateE) / 1000 / 60 / 60 / 24)//把相差的毫秒数转换为天数 return iDays; } function getNewDay(dateTemp, days) { var dateTemp = dateTemp.split("-"); var nDate = new Date(dateTemp[1] + '-' + dateTemp[2] + '-' + dateTemp[0]); //转换为MM-DD-YYYY格式 var millSeconds = Math.abs(nDate) + (days * 24 * 60 * 60 * 1000); var rDate = new Date(millSeconds); var year = rDate.getFullYear(); var month = rDate.getMonth() + 1; if (month < 10) month = "0" + month; var date = rDate.getDate(); if (date < 10) date = "0" + date; return (year + "-" + month + "-" + date); } /* 数字格式化函数 “,” (半角的豆号) 如果有的话,看豆号到小数点(如果有的话)前有几位,则按几位划分整数部分 “0”(数字零) 如果该位上没有数字,就补0 “#”(井号) 如果该位上有数字就输出数字,没有则不输出 */ function formatNumber(number,pattern){ var str = number.toString(); var strInt; var strFloat; var formatInt; var formatFloat; if(/\./g.test(pattern)){ formatInt = pattern.split('.')[0]; formatFloat = pattern.split('.')[1]; }else{ formatInt = pattern; formatFloat = null; } if(/\./g.test(str)){ if(formatFloat!=null){ var tempFloat = Math.round(parseFloat('0.'+str.split('.')[1])*Math.pow(10,formatFloat.length))/Math.pow(10,formatFloat.length); strInt = (Math.floor(number)+Math.floor(tempFloat)).toString(); strFloat = /\./g.test(tempFloat.toString())?tempFloat.toString().split('.')[1]:'0'; }else{ strInt = Math.round(number).toString(); strFloat = '0'; } }else{ strInt = str; strFloat = '0'; } if(formatInt!=null){ var outputInt = ''; var zero = formatInt.match(/0*$/)[0].length; var comma = null; if(/,/g.test(formatInt)){ comma = formatInt.match(/,[^,]*/)[0].length-1; } var newReg = new RegExp('(\\d{'+comma+'})','g'); if(strInt.length0 && str.charAt(j-1)==" " ; j--) ; if(i>j) return ""; return str.substring(i,j); } function Billstrnum(str,len) { var result = ""; var AlertStr = ""; if (str == '') return result; var slist = str.split("\n"); for (var i = 0; i < slist.length; i += 1) { var member = slist[i]; if (member.length > len) { if (result=='') result = result + (i + 1) + '行'; else result = result+','+ (i + 1) + '行'; } } if (result != '') AlertStr = "第" + result + '字符超过' + len + ""; //增加中文判断 var reg = new RegExp("[\\u4E00-\\u9FFF]+", "g"); if (reg.test(str)) { AlertStr += " 文本中包含汉字 "; } var reg2 = /[\u3002|\uff1f|\uff01|\uff0c|\u3001|\uff1b|\uff1a|\u201c|\u201d|\u2018|\u2019|\uff08|\uff09|\u300a|\u300b|\u3008|\u3009|\u3010|\u3011|\u300e|\u300f|\u300c|\u300d|\ufe43|\ufe44|\u3014|\u3015|\u2026|\u2014|\uff5e|\ufe4f|\uffe5]/; if (reg2.test(str)) { AlertStr += " 文本中包含中文标点 "; } return " " +AlertStr+ ""; } function ExportExcel(gridPanel, config) { if (gridPanel) { var tmpStore = gridPanel.getStore(); var tmpExportContent = ''; //以下处理分页grid数据导出的问题,从服务器中获取所有数据,需要考虑性能 var tmpParam = Ext.clone(tmpStore.lastOptions); //此处克隆了原网格数据源的参数信息 // if (tmpParam && tmpParam.params) { // delete (tmpParam.params[tmpStore.paramNames.start]); //删除分页参数 // delete (tmpParam.params[tmpStore.paramNames.limit]); // } var tmpAllStore = new Ext.data.Store({//重新定义一个数据源 proxy: tmpStore.proxy, reader: tmpStore.reader }); tmpAllStore.on('load', function (store) { config.store = store; tmpExportContent = gridPanel.getExcelXml(false, config); //此方法用到了一中的扩展 if (Ext.isIE || Ext.isSafari || Ext.isSafari2 || Ext.isSafari3 || Ext.isChrome) {//在这几种浏览器中才需要,IE8测试不能直接下载了 if (!Ext.fly('frmDummy')) { var frm = document.createElement('form'); frm.id = 'frmDummy'; frm.name = id; frm.className = 'x-hidden'; document.body.appendChild(frm); } Ext.Ajax.request({ //将生成的xml发送到服务器端,需特别注意这个页面的地址 url: '/CommMng/PubSys/ExportGrid', method: 'POST', form: Ext.fly('frmDummy'), callback: function (o, s, r) { //alert(r.responseText); }, isUpload: true, params: { ExportContent: tmpExportContent, ExportFile: gridPanel.id + '.xls' } }); } else { document.location = 'data:application/vnd.ms-excel;base64,' + Base64.encode(tmpExportContent); } }); tmpAllStore.load(tmpParam); //获取所有数据 } }; function GridExportExcelPage(grid) { var vExportContent = grid.getExcelXml(); if (Ext.isIE6 || Ext.isIE7 || Ext.isIE8 || Ext.isIE9 || Ext.isSafari || Ext.isSafari2 || Ext.isSafari3 || Ext.isChrome) { if (!Ext.fly('frmDummy')) { var frm = document.createElement('form'); frm.id = 'frmDummy'; frm.name = ''; //id; frm.className = 'x-hidden'; document.body.appendChild(frm); } Ext.Ajax.request({ url: '/CommMng/PubSys/ExportGrid', method: 'POST', form: Ext.fly('frmDummy'), callback: function (o, s, r) { //alert(r.responseText); }, isUpload: true, params: { ExportContent: Base64.encode(vExportContent), ExportFile: '导出数据.xls' } }); } else { document.location = 'data:application/vnd.ms-excel;base64,' + Base64.encode(vExportContent); } } function PrintComm(printType, sql1, sql2, sql3, sql4, sql5, sql6, billno, rpid, rptmode, Mailid,bsno) { //Ext.Msg.wait('正在准备打印数据, 请稍侯..'); Ext.Ajax.request({ waitMsg: '正在准备打印数据...', url: '/CommMng/Print/GetPrintInfo', scope: this, params: { type: printType, sql1: sql1, sql2: sql2, sql3: sql3, sql4: sql4, sql5: sql5, sql6: sql6, billno: billno, RpID:rpid, RptMode: rptmode, bsno: bsno }, callback: function (options, success, response) { if (success) { if (Ext.MessageBox.isVisible()) { Ext.MessageBox.hide(); } var jsonresult = Ext.JSON.decode(response.responseText); if (jsonresult.Success) { var printUrl = "print://?comp=" + jsonresult.CompanyID + "&type=" + printType + "&dbid=" + jsonresult.DbSourceID + "&uid=" + jsonresult.UserId; //alert(printUrl); if (jsonresult.PrServer != NaN && jsonresult.PrServer != null && jsonresult.PrServer != "") { if (Mailid != undefined && Mailid !='') { printUrl = "print://?comp=" + jsonresult.CompanyID + "&type=" + printType + "&dbid=" + jsonresult.DbSourceID + "&uid=" + jsonresult.UserId + "&PrServer=" + jsonresult.PrServer + "&dbStr=" + jsonresult.dbStr + "&RpID=" + jsonresult.RpID + "&RptMode=" + jsonresult.RptMode + "&Mailid=" + Mailid; //alert(printUrl); } else { printUrl = "print://?comp=" + jsonresult.CompanyID + "&type=" + printType + "&dbid=" + jsonresult.DbSourceID + "&uid=" + jsonresult.UserId + "&PrServer=" + jsonresult.PrServer + "&dbStr=" + jsonresult.dbStr + "&RpID=" + jsonresult.RpID + "&RptMode=" + jsonresult.RptMode; //alert(printUrl); } } window.location.href = window.location.href; location.href = printUrl; } else { Ext.Msg.show({ title: '错误', msg: jsonresult.Message, icon: Ext.Msg.ERROR, buttons: Ext.Msg.OK }); } } else { Ext.Msg.show({ title: '请重试', msg: '服务器响应出错', icon: Ext.Msg.ERROR, buttons: Ext.Msg.OK }); } } }); } function GridExportExcel(gridPanel, config) { if (!config) { config = { store: null, //因为后续可能需要处理分页,因此此处一般不直接传递GridPanel的数据源 title: '', //需要显示标题 limit: 4000 }; } if (gridPanel) { var tmpStore = gridPanel.getStore(); var vExportContent = ''; //以下处理分页grid数据导出的问题,从服务器中获取所有数据,需要考虑性能 var tmpParam = Ext.ux.constructor(tmpStore.lastOptions); //此处克隆了原网格数据源的参数信息 //alert(tmpParam.params[tmpStore.paramNames.limit]); //此处作者原先为Ext.ux.clone(tmpStore.lastOptions)方法,但不好使 var tmpAllStore = new Ext.data.Store({//重新定义一个数据源 proxy: tmpStore.proxy, reader: tmpStore.reader }); tmpParam.params[tmpStore.paramNames.limit] = config.limit; tmpAllStore.load(tmpParam); //获取所有数据 tmpAllStore.on('load', function (store) { config.store = store; vExportContent = gridPanel.getExcelXml(false, config); //此方法用到了一中的扩展 if (Ext.isIE6 || Ext.isIE7 || Ext.isIE8 || Ext.isSafari || Ext.isSafari2 || Ext.isSafari3) { if (!Ext.fly('frmDummy')) { var frm = document.createElement('form'); frm.id = 'frmDummy'; frm.name = id; frm.className = 'x-hidden'; document.body.appendChild(frm); } Ext.Ajax.request({ url: '/PubSys/ExportGrid', method: 'POST', form: Ext.fly('frmDummy'), callback: function (o, s, r) { }, isUpload: true, params: { ExportContent: Base64.encode(vExportContent), ExportFile: '导出数据.xls' } }); } else { document.location = 'data:application/vnd.ms-excel;base64,' + Base64.encode(vExportContent); } }); } }; function GridExportBySql(Condition, formname,filename) { if (!Ext.fly('frmDummy')) { var frm = document.createElement('form'); frm.id = 'frmDummy'; frm.name = 'frmDummy'; frm.className = 'x-hidden'; document.body.appendChild(frm); } Ext.Ajax.request({ waitMsg: '正在导出数据...', url: '../../CommMng/PubSys/ExcelRptIndex', scope: this, form: Ext.fly('frmDummy'), method: 'POST', isUpload: true, params: { strCondition: Condition, formname: formname, filename: filename }, callback: function (options, success, response) { if (success) { Ext.MessageBox.hide(); var jsonresult = Ext.JSON.decode(response.responseText); if (!jsonresult.success) Ext.Msg.show({ title: '错误', msg: jsonresult.message, icon: Ext.Msg.ERROR, buttons: Ext.Msg.OK }); } else { Ext.Msg.show({ title: '请重试', msg: '服务器响应出错', icon: Ext.Msg.ERROR, buttons: Ext.Msg.OK }); } } }); }; function saveQuerySetting(formname, form,isvisible,issavevalue) { var form = form.getForm(); var fieldvalue = form.getValues(); Ext.Ajax.request({ waitMsg: '正在保存数据...', url: '/MvcShipping/MsBaseInfo/SaveUserQuerySetting', scope: this, params: { formname: formname, isvisible: isvisible, issavevalue: issavevalue, querydetail: Ext.JSON.encode(fieldvalue) } }); } function LoadQueryData(formname, form,checkbox) { Ext.Ajax.request({ waitMsg: '正在查询主表数据...', url: '/MvcShipping/MsBaseInfo/GetUserQuerySetting', params: { formname: formname }, callback: function (options, success, response) { if (success) { var result = Ext.JSON.decode(response.responseText); if (!result.success) { Ext.Msg.show({ title: '提示', msg: result.Message, icon: Ext.MessageBox.ERROR, buttons: Ext.Msg.OK }); return false; } data = result.data; if (data.ISSAVEVALUE == true) { form.getForm().reset(); if (data.FIELDVALUES !== "") { form.getForm().setValues(Ext.JSON.decode(data.FIELDVALUES)); } if (checkbox && checkbox.setValue) { checkbox.setValue(true); } } else if (checkbox != NaN && checkbox != null) { checkbox.setValue(false); } return true; } else { Ext.MessageBox.alert('请求出现错误,请重试', response.responseText); return false; } }, scope: this }); return true; } function formatRMB(num) { var _F = ""; if (num < 0) { _F = "负"; num = 0 - num; } //#region 转换人民币金额大小写 var c = "零壹贰叁肆伍陆柒捌玖".split(""); // ["零","壹","贰","叁","肆","伍","陆","柒","捌","玖"] var _c = {}; // 反向对应关系 for (var i = 0; i < c.length; i++) { _c[c[i]] = i; }; var d = "元***万***亿***万"; var e = ",拾,佰,仟".split(","); function unit4(arr) { var str = "", i = 0; while (arr.length) { var t = arr.pop(); str = (c[t] + (t == 0 ? "" : e[i])) + str; i++; } str = str.replace(/[零]{2,}/g, "零"); str = str.replace(/^[零]/, ""); str = str.replace(/[零]$/, ""); if (str.indexOf("零") == 0) { str = str.substring(1); } if (str.lastIndexOf("零") == str.length - 1) { str = str.substring(0, str.length - 1); } return _F+str; } function _formatD(a) { // 转化整数部分 var arr = a.split(""), i = 0, result = ""; while (arr.length) { var arr1 = arr.splice(-4, 4); var dw = d.charAt(i), unit = unit4(arr1); if (dw == '万' && !unit) { dw = ""; } result = unit + dw + result; i += 4; } return result == "元" ? "" : result; } function _formatF(b) { // 转化小数部分 b = b || ""; switch (b.length) { case 0: return "整"; case 1: return c[b] + "角"; default: return c[b.charAt(0)] + "角" + c[b.charAt(1)] + "分"; } } function _format(n) { var a = ("" + n).split("."), a0 = a[0], a1 = a[1]; return _formatD(a0) + _formatF(a1); } function parse4(u4) { var res = 0; while (t = /([零壹贰叁肆伍陆柒捌玖])([拾佰仟]?)/g.exec(u4)) { var n = _c[t[1]], d = { "": 1, "拾": 10, "佰": 100, "仟": 1000 }[t[2]]; res += n * d; u4 = u4.replace(t[0], ""); } var result = ("0000" + res); return result.substring(result.length - 4); } function _parseD(d) { var arr = d.replace(/[零]/g, "").split(/[万亿]/), rs = ""; for (var i = 0; i < arr.length; i++) { rs += parse4(arr[i]); } ; return rs.replace(/^[0]+/, ""); }; function _parseF(f) { var res = "", t = f.replace(/[^零壹贰叁肆伍陆柒捌玖]+/g, "").split(""); // 去掉单位 if (t.length) { res = "."; } else { return ""; } ; for (var i = 0; (i < t.length && i < 2); i++) { res += _c[t[i]]; } ; return res; }; function _parse(rmb) { var a = rmb.split("元"), a1 = a[1], a0 = a[0]; if (a.length == 1) { a1 = a0; a0 = ""; } return _parseD(a0) + _parseF(a1); }; //小写转大写 function formatRMB(num) { var n = Number(num); if (!isNaN(num)) { if (num == 0) { return "零元整"; } else { return _format(n); } } else { return false; } } //大写转小写 function parseRMB(rmb) { if (/^[零壹贰叁肆伍陆柒捌玖元万亿拾佰仟角分整]{2,}$/.test(rmb)) { var result = _parse(rmb); return rmb == this.formatRMB(result) ? result : result + "(?)"; } else { return false; } }; /*小写转大写*/ var xcc = "12.22"; //document.write(xcc + "=>" + formatRMB(xcc) + "
"); /*大写转小写*/ var rrrr = "壹拾贰元贰角贰分"; //document.write(rrrr + "=>" + parseRMB(rrrr)); //#endregion return formatRMB(num); } function formatUSD(num) { var _F = ""; if (num < 0) { _F = "负"; num = 0 - num; } //#region 转换人民币金额大小写 var c = "零壹贰叁肆伍陆柒捌玖".split(""); // ["零","壹","贰","叁","肆","伍","陆","柒","捌","玖"] var _c = {}; // 反向对应关系 for (var i = 0; i < c.length; i++) { _c[c[i]] = i; }; var d = "元***万***亿***万"; var e = ",拾,佰,仟".split(","); function unit4(arr) { var str = "", i = 0; while (arr.length) { var t = arr.pop(); str = (c[t] + (t == 0 ? "" : e[i])) + str; i++; } str = str.replace(/[零]{2,}/g, "零"); str = str.replace(/^[零]/, ""); str = str.replace(/[零]$/, ""); if (str.indexOf("零") == 0) { str = str.substring(1); } if (str.lastIndexOf("零") == str.length - 1) { str = str.substring(0, str.length - 1); } return _F + str; } function _formatD(a) { // 转化整数部分 var arr = a.split(""), i = 0, result = ""; while (arr.length) { var arr1 = arr.splice(-4, 4); var dw = d.charAt(i), unit = unit4(arr1); if (dw == '万' && !unit) { dw = ""; } result = unit + dw + result; i += 4; } return result == "元" ? "" : result; } function _formatF(b) { // 转化小数部分 b = b || ""; switch (b.length) { case 0: return "整"; case 1: return c[b] + "拾美分"; default: { if (c[b.charAt(0)] !="0") { return c[b.charAt(0)] + "拾" + c[b.charAt(1)] + "美分"; } else { return c[b.charAt(1)] + "美分"; } } } } function _format(n) { var a = ("" + n).split("."), a0 = a[0], a1 = a[1]; return _formatD(a0) + _formatF(a1); } function parse4(u4) { var res = 0; while (t = /([零壹贰叁肆伍陆柒捌玖])([拾佰仟]?)/g.exec(u4)) { var n = _c[t[1]], d = { "": 1, "拾": 10, "佰": 100, "仟": 1000 }[t[2]]; res += n * d; u4 = u4.replace(t[0], ""); } var result = ("0000" + res); return result.substring(result.length - 4); } function _parseD(d) { var arr = d.replace(/[零]/g, "").split(/[万亿]/), rs = ""; for (var i = 0; i < arr.length; i++) { rs += parse4(arr[i]); } ; return rs.replace(/^[0]+/, ""); }; function _parseF(f) { var res = "", t = f.replace(/[^零壹贰叁肆伍陆柒捌玖]+/g, "").split(""); // 去掉单位 if (t.length) { res = "."; } else { return ""; } ; for (var i = 0; (i < t.length && i < 2); i++) { res += _c[t[i]]; } ; return res; }; function _parse(rmb) { var a = rmb.split("元"), a1 = a[1], a0 = a[0]; if (a.length == 1) { a1 = a0; a0 = ""; } return _parseD(a0) + _parseF(a1); }; //小写转大写 function formatRMB(num) { var n = Number(num); if (!isNaN(num)) { if (num == 0) { return "零美元整"; } else { var _r = _format(n); // _t=_r.replace('元', '美元') return _r; } } else { return false; } } //大写转小写 function parseRMB(rmb) { if (/^[零壹贰叁肆伍陆柒捌玖元万亿拾佰仟角分整]{2,}$/.test(rmb)) { var result = _parse(rmb); return rmb == this.formatRMB(result) ? result : result + "(?)"; } else { return false; } }; /*小写转大写*/ var xcc = "12.22"; //document.write(xcc + "=>" + formatRMB(xcc) + "
"); /*大写转小写*/ var rrrr = "壹拾贰元贰角贰分"; //document.write(rrrr + "=>" + parseRMB(rrrr)); //#endregion return formatRMB(num); } //在js中获取当前日期(参数0)或当前日期前后某天(参数1为后一天,-2为两天前) function GetDateStr(AddDayCount) { var dd = new Date(); dd.setDate(dd.getDate() + AddDayCount); //获取AddDayCount天后的日期 var y = dd.getFullYear(); var m = dd.getMonth() + 1; //获取当前月份的日期 var d = dd.getDate(); return y + "-" + m + "-" + d; } /** * Created with IntelliJ IDEA. * User: zhuhq * Date: 14-3-17 * Time: 下午12:26 * To change this template use File | Settings | File Templates. */ /** * * function grid2Excel(grid,filename) * @param grid Extjs grid panel * @param filename Excel 文件名称 * * **/ (function () { var format = function (s, c) { return s.replace(/{(\w+)}/g, function (m, p) { return c[p]; }) }; var tableToExcel = function (table, fileName) { var uri = 'data:application/vnd.ms-excel;base64,' , fileName = fileName || 'excelexport' , template = '' + '' + '{table}'; var ctx = { worksheet: 'Worksheet', table: table }; var a = document.createElement('a'); document.body.appendChild(a); a.hreflang = 'zh'; a.charset = 'utf8'; a.type = "application/vnd.ms-excel"; a.href = uri + Base64.encode(format(template, ctx)); a.target = '_blank'; a.download = fileName + '.xls'; a.click(); }; window.grid2Excel = function (grid, fileName) { // var columns = grid.initialConfig.columns || [], var columns = grid.columns || [], store = grid.getStore(), headLevel1 = [], headLevel2 = [], headLevel = 1, isGroup = false, dataIndex = [], tableStr = '{thead}{tbody}
'; columns.forEach(function (column) { if ((column.columns&&column.columns.length!=0)|| (column.items&&column.items.length!=0)){ isGroup = true; return false; } }); if (isGroup) { headLevel = 2; //只支持二级表头 } columns.forEach(function (column) { if (column.hidden!=true){ if (column.columns == undefined && (column.items == undefined||column.items.length==0)) { column.colspan = 1; column.rowspan = headLevel; headLevel1.push(column); dataIndex.push(column); } else { if (column.columns!=undefined){ var items = column.columns || []; } else items = column.items.items || []; column.rowspan = 1; headLevel1.push(column); var colspan=0; items.forEach(function (item) { if (item.hidden!=true){ item.colspan = 1; item.rowspan = 1; headLevel2.push(item); dataIndex.push(item); colspan=colspan+1; } }) column.colspan =colspan; } } }); var headLevel1Str = ''; headLevel1.forEach(function (head) { headLevel1Str += '' + head.text + ''; }); headLevel1Str += ''; var headLevel2Str = ''; if (headLevel2.length > 0) { headLevel2Str += ''; headLevel2.forEach(function (head) { headLevel2Str += '' + head.text + ''; }); headLevel2Str += '' } var theadStr = headLevel1Str + headLevel2Str, tbodyStr = '', defRenderer = function (value) { return value; }; store.each(function (r) { tbodyStr += ''; dataIndex.forEach(function (c) { var renderere = c.renderer || defRenderer; tbodyStr += '' + renderere.call(r, r.get(c.dataIndex)) + '' }); tbodyStr += '' }); tableStr = format(tableStr, { thead: theadStr, tbody: tbodyStr }); tableToExcel(tableStr, fileName); } })(); function SetFormReadOnly(form, readOnly) { var fields = form.getForm().getFields(); for (var i = 0, len = fields.length; i < len; i++) { fields.items[i].setReadOnly(readOnly); } } function BoxSelectgetStrValue(list) { var _list = []; for (var _i = 0; _i < list.length; _i++) { _list.push("'" + list[_i] + "'"); } return _list; } function getStoreFieldCount(store, fieldname) { var _List = []; for (var i = 0; i < store.getCount(); i += 1) { var member = store.getAt(i); var _fieldvalue = member.get(fieldname); if (_List.indexOf(_fieldvalue) >= 0) { } else { _List.push(member.get(fieldname)); } } return _List.length; } function GetDirty (store1, Delstore1) { var changelines = store1.getModifiedRecords(); var delcount = Delstore1.length; var changecount = changelines.length; if (delcount == 0 && changecount == 0) { return false; } else { return true; } } function GetDirty1 (store1) { var changelines = store1.getModifiedRecords(); if (changelines == 0) { return false; } else { return true; } } //用于树型结构的父子节点联动 //// /** 递归遍历父节点 子节点有未选中的则父节点改为不选中**/ travelParentUnChecked = function (node, checkStatus, opts) { //父节点 var upNode = node.parentNode; if (upNode != null) { var opts = {}; opts["isPassive"] = true; //父节点当前选中状态 var upChecked = upNode.data.checked; //选中状态,遍历父节点,判断有父节点下的子节点是否都全选 if (checkStatus) { var allChecked = true; //此时父节点不可能是选中状态 //如果有一个节点未选中,可以判断,当前父节点肯定是未选中状态,所以此时不必向上遍历 upNode.eachChild(function (child) { if (!child.data.checked) { allChecked = false; return false; } }); upNode.set('checked', allChecked); if (allChecked) { travelParentUnChecked(upNode, allChecked, opts); } else {//如果后台传递数据时,选择状态正确的话,此处不需要执行 //travelParentUnChecked(upNode, allChecked, opts); } } else {//未选中,让父节点全都 不选 if (upNode.data.checked) { upNode.set('checked', checkStatus); travelParentUnChecked(upNode, checkStatus, opts); } else { //travelParentUnChecked(upNode, allChecked, opts); } } } } /** 递归遍历子节点,复选框 选中父节点时选中全部子节点**/ travelChildrenChecked = function (node, checkStatus, eOpts) { var isLeaf = node.data.leaf; if (!isLeaf) { node.expand(false, function () { if (eOpts["isPassive"] == null) {//主动点击 node.eachChild(function (child) { child.set('checked', checkStatus); travelChildrenChecked(child, checkStatus, eOpts); //child.fireEvent('checkchange',child, checked);//不知什么原因,不起作用 }); } }); } node.set('checked', checkStatus); } /** 递归遍历父节点 子节点有 选中的 则父节点改为 选中**/ travelParentChecked = function (node, checkStatus, opts) { //父节点 var upNode = node.parentNode; if (upNode != null) { var opts = {}; opts["isPassive"] = true; //父节点当前选中状态 //var upChecked = upNode.data.checked; //选中状态,遍历父节点,判断有父节点下的子节点是否有选中 if (checkStatus) { upNode.set('checked', checkStatus); travelParentChecked(upNode, checkStatus, opts); } else {//未选中,如父节点下方没有选中项 才改为不选中;只要有一个子项选中即设置为选中 var allUnChecked = true;// //此时父节点不可能是选中状态 //如果有一个节点未选中,可以判断,当前父节点肯定是未选中状态,所以此时不必向上遍历 upNode.eachChild(function (child) { if (child.data.checked) { allUnChecked = false; return false; } }); upNode.set('checked', !allUnChecked); if (allUnChecked) { travelParentChecked(upNode, !allUnChecked, opts); } else {//如果后台传递数据时,选择状态正确的话,此处不需要执行 //travelParentUnChecked(upNode, allChecked, opts); } } } } getTreeLeafNodes = function (tree) { return getNodes(tree.getRootNode(),null,true); } getNodes = function (node, NodeArr, isOnlyLeaf)///参数依次为 1-tree节点,2-调用时直接传null,3-传true表示只要叶du节点 { //调用方式 var allLeafArr=getNodes(root,null,true);//root是tree根节点 var nodeArr; if (!NodeArr) nodeArr = new Array();//没有传zhi递第二个参数时初始为新数组dao else nodeArr = NodeArr; if (node.data.leaf ) nodeArr.push(node);//如果是叶节点,加入数组 if (!node.childNodes || node.childNodes.length == 0) return nodeArr;//没有子节点,返回 for (var i = 0; i <= node.childNodes.length - 1; i++) { getNodes(node.childNodes[i], nodeArr, isOnlyLeaf);//对每一个子节点进行递归调用将其中的叶节点添加到数组 } return nodeArr; } //把List转化成json function ConvertStringListToJson(List) { if (List.length == 0) { return ""; } var jsonData = "["; for (i = 0; i < List.length; i++) { jsonData += Ext.JSON.encode(List[i]) + ","; } if (jsonData != "[") { jsonData = jsonData.substring(0, jsonData.length - 1) + "]"; } else jsonData = ""; return jsonData; }