** * 整個body顯示半透明的遮罩層 */ function showWindow(){ var mask=document.createElement("div"); var W=$(document).width(); var H=$(document).height(); mask.id="mask"; mask.style.cssText="position:absolute;z-index:5;width:"+W+"px;height:"+H+"px;background:#000;filter:alpha(opacity=30);opacity:0.3;top:0;left:0;"; document.body.appendChild(mask); } /** * 給指定的div顯示半透明的遮罩層 * params param 是class(needModal) */ function showModal(param,isAll){ var array = $(param); if(array && array.length > 0){ for(var i = 0 ;i< array.length; i++){ var mask=document.createElement("div"); var W1 = 0; var H1 = 30; if(!isAll){ W1 = 16;//留出滾動條(讓滾動條能夠不被覆蓋,可以拖動,費率參數頁面) H1 = 30;//讓費率參數頁面徹底被覆蓋(由於有滾動條,因此被覆蓋的div的實際大小會超出範圍) } var W=$(array[i]).width()-W1; var H=$(array[i]).height()+H1; mask.id="mask"; mask.style.cssText="position:absolute;z-index:5;width:"+W+"px;height:"+H+"px;background:#000;filter:alpha(opacity=30);opacity:0.3;top:0;left:0;"; $(array[i]).append(mask); } } } /** * 清除顯示半透明的遮罩層 * params param 是class(needModal) */ function clearModal(param){ var array = $(param); if(array && array.length > 0){ for(var i = 0 ;i< array.length; i++){ $(array[i]).find('#mask').remove(); } } } /** * 給指定的div顯示半透明的遮罩層 * params param 是class(needModal) */ function showModalForDjcsPage(param){ var array = $(param); if(array && array.length > 0){ for(var i = 0 ;i< array.length; i++){ var mask=document.createElement("div"); var W=$(array[i]).width(); var H=$(array[i]).height(); mask.id="mask"; mask.style.cssText="position:absolute;z-index:5;width:"+W+"px;height:"+H+"px;background:#000;filter:alpha(opacity=30);opacity:0.3;top:0;left:0;"; $(array[i]).append(mask); } } } function showModalForWidth(param){ var array = $(param); var width = 0; if(array && array.length > 0){ for(var i = 0 ;i< array.length; i++){ var mask=document.createElement("div"); //設定遮罩層所佔的寬度 var W=$(array[i]).width(); var H=$(array[i]).height()+30; mask.id="mask"+[i]; //設定遮罩層的絕對位置的起始點(從哪裏開始遮罩層--->left屬性,遮罩層的寬度等於該元素的寬度) // width = W+width; //1.<div class="needModal">這個是能夠的,可是須要每一個要添加覆蓋層的區域都須要套上一個div,並且要給這個div添加上class="needModal",在給這個元素添加遮罩層的時候,由於它沒有relative屬性,因此添加的時候是從左側left=0開始添加遮罩層 // mask.style.cssText="position:absolute;z-index:5;width:"+W+"px;height:"+H+"px;background:#000;filter:alpha(opacity=30);opacity:0.3;top:0;left:"+W+";"; //2.給該覆蓋層加上relative樣式:<div class="needModal" style="position: relative;">,那麼在給該元素添加遮罩層的時候,absolute絕對定位會從當前的這個元素(position: relative)開始添加遮罩層,而不是從左側添加遮罩層 mask.style.cssText="position:absolute;z-index:5;width:"+W+"px;height:"+H+"px;background:#000;filter:alpha(opacity=30);opacity:0.3;top:0;left:0;"; $(array[i]).append(mask); } } } /** * 將數字每三位分割 * @param num * @returns */ function formatNumber(num) { if (!/^(\+|-)?(\d+)(\.\d+)?$/.test(num)) { return num; } var a = RegExp.$1, b = RegExp.$2, c = RegExp.$3; var re = new RegExp("(\\d)(\\d{3})(,|$)"); while (re.test(b)) b = b.replace(re, "$1,$2$3"); var value = addChineseUnit(num, 5); var content = ''; var abValue = value +''; if(value != undefined){ // if(value.length>=22) { // abValue = value.substring(0,19) + "..."; // content = '<a href="javascript:;" title="' + chineseUnit + '" class="easyui-tooltip">' + abValue + '</a>'; // }else{ // content = '<a href="javascript:;" title="' + abValue + '" class="easyui-tooltip">' + abValue + '</a>'; // } content = '<a href="#" title="' + value + '" class="easyui-tooltip easyui-linkbutton" style="text-decoration: none">' + (a + "" + b + "" + c) + '</a>'; } return content; } /** * 爲數字加上單位:萬或億 * * 例如: * 1000.01 => 1000.01 * 10000 => 1萬 * 99000 => 9.9萬 * 566000 => 56.6萬 * 5660000 => 566萬 * 44440000 => 4444萬 * 11111000 => 1111.1萬 * 444400000 => 4.44億 * 40000000,00000000,00000000 => 4000萬億億 * 4,00000000,00000000,00000000 => 4億億億 * * @param {number} number 輸入數字. * @param {number} decimalDigit 小數點後最多位數,默認爲2 * @return {string} 加上單位後的數字 */ function addChineseUnit(number, decimalDigit) { var addWan = function(integer, number, mutiple, decimalDigit) { var digit = getDigit(integer); if (digit > 3) { var remainder = digit % 8; if (remainder >= 5) { // ‘十萬’、‘百萬’、‘千萬’顯示爲‘萬’ remainder = 4; } return Math.round(number / Math.pow(10, remainder + mutiple - decimalDigit)) / Math.pow(10, decimalDigit) + '萬'; } else { return Math.round(number / Math.pow(10, mutiple - decimalDigit)) / Math.pow(10, decimalDigit); } }; var getDigit = function(integer) { var digit = -1; while (integer >= 1) { digit++; integer = integer / 10; } return digit; }; return function(number, decimalDigit) { decimalDigit = decimalDigit == null ? 2 : decimalDigit; var integer = Math.floor(number); var digit = getDigit(integer); // ['個', '十', '百', '千', '萬', '十萬', '百萬', '千萬']; var unit = []; if (digit > 3) { var multiple = Math.floor(digit / 8); if (multiple >= 1) { var tmp = Math.round(integer / Math.pow(10, 8 * multiple)); unit.push(addWan(tmp, number, 8 * multiple, decimalDigit)); for (var i = 0; i < multiple; i++) { unit.push('億'); } return unit.join(''); } else { return addWan(integer, number, 0, decimalDigit); } } else { return number; } }(number, decimalDigit); } /** * 加入遮蓋層 * @returns */ function setModulFun(){ var mask=document.createElement("div"); var W=$('document').width()-16; var H=$('document').height()+30; mask.id="modulMask"; mask.style.cssText="position:absolute;z-index:9999;width:100%;height:100%;background:#ccc;filter:alpha(opacity=30);opacity:0.3;top:0;left:0;"; document.body.appendChild(mask); } /** * 結束遮蓋 * @returns */ function endModulFun(){ $('#modulMask').remove(); } /** * 刪除菜單 * @param name * @param menuId */ function deleteMenu(name,menuId){ var item = $(menuId).menu('findItem', name); if(item){ $(menuId).menu('removeItem', item); } } /** * 添加菜單 * @param name * @param fun * @param menuId */ function addMenu(name,fun,menuId,iconCls){ var item = $(menuId).menu('findItem', name); if(!item){ $(menuId).menu('appendItem', { text: name, iconCls: iconCls, onclick: fun, }); } } /** * layout方法擴展 * @param {Object} jq * @param {Object} region */ $.extend($.fn.layout.methods, { /** * 面板是否存在和可見 * @param {Object} jq * @param {Object} params */ isVisible: function(jq, params) { var panels = $.data(jq[0], 'layout').panels; var pp = panels[params]; if(!pp) { return false; } if(pp.length) { return pp.panel('panel').is(':visible'); } else { return false; } }, /** * 隱藏除某個region,center除外。 * @param {Object} jq * @param {Object} params */ hidden: function(jq, params) { return jq.each(function() { var opts = $.data(this, 'layout').options; var panels = $.data(this, 'layout').panels; if(!opts.regionState){ opts.regionState = {}; } var region = params; function hide(dom,region,doResize){ var first = region.substring(0,1); var others = region.substring(1); var expand = 'expand' + first.toUpperCase() + others; if(panels[expand]) { if($(dom).layout('isVisible', expand)) { opts.regionState[region] = 1; panels[expand].panel('close'); } else if($(dom).layout('isVisible', region)) { opts.regionState[region] = 0; panels[region].panel('close'); } } else { panels[region].panel('close'); } if(doResize){ $(dom).layout('resize'); } }; if(region.toLowerCase() == 'all'){ hide(this,'east',false); hide(this,'north',false); hide(this,'west',false); hide(this,'south',true); }else{ hide(this,region,true); } }); }, /** * 顯示某個region,center除外。 * @param {Object} jq * @param {Object} params */ show: function(jq, params) { return jq.each(function() { var opts = $.data(this, 'layout').options; var panels = $.data(this, 'layout').panels; var region = params; function show(dom,region,doResize){ var first = region.substring(0,1); var others = region.substring(1); var expand = 'expand' + first.toUpperCase() + others; if(panels[expand]) { if(!$(dom).layout('isVisible', expand)) { if(!$(dom).layout('isVisible', region)) { if(opts.regionState[region] == 1) { panels[expand].panel('open'); } else { panels[region].panel('open'); } } } } else { panels[region].panel('open'); } if(doResize){ $(dom).layout('resize'); } }; if(region.toLowerCase() == 'all'){ show(this,'east',false); show(this,'north',false); show(this,'west',false); show(this,'south',true); }else{ show(this,region,true); } }); } }); /** * 隱藏被禁用的菜單 * @param jq */ function getContentMenuFun(jq){ var menuDom = jq.parent().find(".menu-top.menu:visible"); var $item = menuDom.children(".menu-item-disabled"); var $sep = menuDom.find('.menu-sep'); if($item.length >0 ){ $item.hide(); menuDom.height(menuDom.height() - $item.length*22); menuDom.next().remove(); } if($sep.length >0){ for(var i = $sep.length-1;i>=0;i--){ var $current = $($sep[i]); removeTogetherMenuSepFun($current,menuDom); } } } /** * 移除多餘的菜單分隔符 * @param current * @param menuDom * @param falg 用來標記兩個分割線之間有沒有正常可見的菜單項 */ function removeTogetherMenuSepFun($current,menuDom){ var $prevAll = $current.prevAll(); if($prevAll){ var flag = false;//假設該分割線是要隱藏的 for(var i = 0;i<$prevAll.length;i++){ var prevDom = $prevAll[i]; if($(prevDom).hasClass("menu-sep")){ break; } if($(prevDom).is(':visible')){ flag = true; } } if(!flag){ $current.hide(); } } } function hidenOrShowMenuFun(easyuiDom,isTree,row,$dom,dblClickRowMenuIndex){ var menuObj = createMenu(true); var newMenu = hiddenRightMenu(menuObj,row,dblClickRowMenuIndex,easyuiDom); easyuiDom.treegrid('options').rowContextMenu = newMenu; if($dom && $dom.length > 0){ newMenu = hiddenRightMenu($dom.menu("options").items); $dom.menu("options").items = newMenu; } } function hiddenRightMenu(oldMenu,row,dblClickRowMenuIndex,easyuiDom){ if(oldMenu){ var text = null; for(var i = oldMenu.length-1;i >= 0;i--){ if(oldMenu[i].disabled && $.isFunction(oldMenu[i].disabled)){ var disable = oldMenu[i].disabled(null,row); if(typeof(menuFlag) != 'undefined' && menuFlag){ oldMenu[0].children[1].text = "子預算文件"; } if(disable){ oldMenu.splice(i, 1); } if(dblClickRowMenuIndex && dblClickRowMenuIndex == i){ if(disable){ easyuiDom.treegrid('options').dblClickRowMenuIndex = undefined; continue; } text = oldMenu[i]; } } } if(text){ for(var i = 0;i < oldMenu.length;i++){ if(oldMenu[i] == text){ easyuiDom.treegrid('options').dblClickRowMenuIndex = i; } } } } return oldMenu; } /** * 初始化菜單項 */ function setMenuHeight(){ var menus = $('.menu'); for(var i = 0;i < menus.length;i++){ var $menu = $(menus[i]); var menuHeight = $menu.height(); var items = $menu.find('.menu-item:not([style*="display: none"])'); if(items.length > 0 && menuHeight == 0){ var unitHeight = 22; $menu.height(unitHeight*items.length+"px"); } } } /** * 字段懸浮提示的通常方法 * @param title 超連接懸浮顯示的內容 * @param contentVal 超連接文本中內容 */ function defaultFormatter(title,contentVal){ var returnVal = ""; if(!contentVal){ contentVal = title; } returnVal = '<a href="#" title="' + value + '" style="text-decoration: none;color:#000000;cursor:default;" class="easyui-tooltip easyui-linkbutton">' + contentVal + '</a>'; return returnVal; } /** * js截取字符串,中英文都能用 * @param str:須要截取的字符串 * @param len: 須要截取的長度 */ function cutstr(str, len) { var str_length = 0; var str_len = 0; str_cut = new String(); str_len = str.length; for (var i = 0; i < str_len; i++) { a = str.charAt(i); str_length++; if (escape(a).length > 4) { //中文字符的長度經編碼以後大於4 str_length++; } str_cut = str_cut.concat(a); if (str_length >= len) { str_cut = str_cut.concat("..."); return str_cut; } } //若是給定字符串小於指定長度,則返回源字符串; if (str_length < len) { return str; } } /** * 得到字符串實際長度,中文2,英文1</summary> */ var GetLength = function (str) { ///<param name="str">要得到長度的字符串</param> var realLength = 0, len = str.length, charCode = -1; for (var i = 0; i < len; i++) { charCode = str.charCodeAt(i); if (charCode >= 0 && charCode <= 128) realLength += 1; else realLength += 2; } return realLength; }; //除法函數,用來獲得精確的除法結果 //說明:javascript的除法結果會有偏差,在兩個浮點數相除的時候會比較明顯。這個函數返回較爲精確的除法結果。 //調用:accDiv(arg1,arg2) //返回值:arg1除以arg2的精確結果 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類型增長一個div方法,調用起來更加方便。 Number.prototype.div = function (arg){ return accDiv(this, arg); } //乘法函數,用來獲得精確的乘法結果 //說明:javascript的乘法結果會有偏差,在兩個浮點數相乘的時候會比較明顯。這個函數返回較爲精確的乘法結果。 //調用:accMul(arg1,arg2) //返回值:arg1乘以arg2的精確結果 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類型增長一個mul方法,調用起來更加方便。 Number.prototype.mul = function (arg){ return accMul(arg, this); } //加法函數,用來獲得精確的加法結果 //說明:javascript的加法結果會有偏差,在兩個浮點數相加的時候會比較明顯。這個函數返回較爲精確的加法結果。 //調用:accAdd(arg1,arg2) //返回值:arg1加上arg2的精確結果 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類型增長一個add方法,調用起來更加方便。 Number.prototype.add = function (arg){ return accAdd(arg,this); } /** * 獲取新的url * @param obj 新的參數值構成的對象 * @returns */ function getNewUrlParms(url,obj) { var theRequest = new Object(); if (!url) url = location.href; if (url.indexOf("?") !== -1) { var str = url.substr(url.indexOf("?") + 1) + "&"; var strs = str.split("&"); for (var i = 0; i < strs.length - 1; i++) { var key = strs[i].substring(0, strs[i].indexOf("=")); var val = strs[i].substring(strs[i].indexOf("=") + 1); theRequest[key] = val; } } for(var key in obj){ theRequest[key] = obj[key]; } var head = url.substr(0,url.indexOf("?")); var appendUrl = $.param(theRequest); var newUrl = head+"?"+appendUrl; return newUrl; } /** * 判斷字符串是否以指定字符結尾 */ String.prototype.endWith=function(endStr){ var d=this.length-endStr.length; return (d>=0&&this.lastIndexOf(endStr)==d); } /** * 判斷是否爲中文 * @param s * @returns */ function isChina(s){ //判斷字符是不是中文字符 var patrn= /[\u4E00-\u9FA5]|[\uFE30-\uFFA0]/gi; if (!patrn.exec(s)) { return false; }else{ return true; } } /** * 若是數字以0開頭,那麼去除前面的0 * 若是是算式,那麼返回算式的值 * @param formula * @param cale * @returns */ function parseNumFun(formula,cale){ var returnVal = formula; var reg=/^0*\d+(\.\d+)?$/; if(!reg.test(formula)){ //非數字或者非以0開頭的數字 returnVal = parseFloat(eval("("+formula+")")).toFixed(cale) }else{ if(formula.indexOf("0") == 0){ //若是以"0"開頭 formula = (~~formula); }else{ //若是不是以0開頭,而是正常的數字 returnVal = formula; } } returnVal = parseFloat(returnVal); return returnVal; } /** * 判斷一個對象是否沒有自定義屬性,爲一個空對象 * @returns */ function isEmptyObj(obj){ return JSON.stringify(obj) == '{}'; }