[javascript]代码库
var loadMask =null;
var _MAXMODULE = 10;
var _ACTIVENODE=null;
var task = new Ext.util.DelayedTask(function(){
if(!_ACTIVENODE) return;
loadModel(_ACTIVENODE);
});
function initShortcuts(){
//清空所有快捷方式
Ext.select('.block').remove();
//回收站域默认隐藏
Ext.get('delDiv').hide();
_Ajax.request({
url:'system/Common_loadByEntity.action',
params:{
clazz:'com.tbyf.health.entity.XtShortcut'
},
xmlData:{
userid : top._APP.operator.id
},
result : function(obj) {
var res = Ext.decode(obj.detail);
res.each(function(obj, i){
//简化长字符串
var shortcutname = obj.shortcutname.length > 6 ? obj.shortcutname.substring(0,3) + '...' + obj.shortcutname.substring(obj.shortcutname.length - 3, obj.shortcutname.length) : obj.shortcutname
//构建可视的DOM元素
var shortcut = Ext.get('shortcut').createChild({
html :
'<li id="srt'+ obj.shortcutid +'" class="block" title="'+ obj.shortcutname +'" index="3" style="margin-left: 16px; margin-right: 16px;">' +
' <div class="img">' +
' <p><img src="../images/project.png"></img></p>' +
' </div>' +
' <a class="icon-text" href="'+ obj.shortcuturl +'">' +
' <span>'+ shortcutname +'</span>' +
' </a>' +
'</li>'
});
shortcut.on('click', function(){
loadMod(obj.shortcutcode);
});
//委派拖拽
var proxy=new Ext.dd.DragSource("srt" + obj.shortcutid, {group:'dt'});
var target=new Ext.dd.DDTarget('delDiv','dt');
//拖拽时显示回收站
proxy.onDrag = function(){
Ext.get('delDiv').show();
}
//拖拽结束隐藏回收站
proxy.endDrag = function(){
Ext.get('delDiv').hide();
}
//完成拖拽后触发的事件
proxy.afterDragDrop = function(target, e, idc) {
top.deleteShortcut(obj.id);
}
});
}
});
}
function deleteShortcut(id){
_Ajax.request({
url:'system/Common_deleteEntity.action',
params:{clazz:'com.tbyf.health.entity.XtShortcut'},
xmlData: {
id: Number(id)
},
result:function(obj){
top.initShortcuts();
}
});
}
function triggerDrag(){
var node=null;
Ext.each(Ext.getCmp('left_panel'),function(accrd){
Ext.each(accrd.items.items,function(tree){
tree.getRootNode().cascade(function(node) {
if (!node.isLeaf() && !node.isLoaded()) {
//重写reload方法,避免遍历每一个菜单项导致所有菜单展开的情况
node.collapse(false,false);
while(node.firstChild){
node.removeChild(node.firstChild).destroy()
}
node.childrenRendered=false;
node.loaded=false;
if(node.isHiddenRoot()){
node.expanded=false;
}
node.expand(false,false,function(){
node.collapse();
},null);
return true;
}
if (node.attributes['url'] && node.attributes['url'].indexOf('HealthReport') > 0) {
//委派拖拽
var proxy=new Ext.dd.DragSource(node.getUI().getEl(),{group:'dd'});
var target=new Ext.dd.DDTarget('dargDiv','dd');
//完成拖拽后触发的事件
proxy.afterDragDrop = function(target, e, idc) {
if(Ext.get("srt" + node.attributes.id)){
Ext.Msg.alert('提示','此快捷方式您已经添加!');
return;
}
//构造快捷方式持久化对象
var obj = {
shortcutname : node.attributes.text,
shortcuttype : '0',
shortcutcode : node.attributes.code,
shortcutid : Number(node.attributes.id),
shortcuturl : node.attributes.url,
userid : top._APP.operator.id
};
//持久快捷方式对象
_Ajax.request({
url : 'system/Common_saveObj.action',
params:{
clazz:'com.tbyf.health.entity.XtShortcut'
},
xmlData: obj,
result : function(obj) {
initShortcuts();
}
});
};
}
return true;
});
});
});
}
function loadModbak(id,params,title){
alert(_ACTIVENODE.getOwnerTree());
var node=_ACTIVENODE.getOwnerTree().getNodeById(id);
if (!node) {
Ext.each(Ext.getCmp('accordion'),function(accrd){
Ext.each(accrd.items.items,function(tree){
if (tree.getNodeById(id)) {
node=tree.getNodeById(id);
return false;
}
});
});
}
Ext.apply(node.attributes,{params:params});
loadModel(node,true,title);
}
function loadMod(id,params,title,url,text,iconCls){
var node=new Ext.data.Node({
id:id,
url:url
});
Ext.apply(node.attributes,{text:text});
Ext.apply(node.attributes,{iconCls:iconCls});
Ext.apply(node.attributes,{params:params});
loadModel(node,true,title);
}
function loadMod(code,params,title){
var nodeMod=null;
Ext.each(Ext.getCmp('left_panel'),function(accrd){
Ext.each(accrd.items.items,function(tree){
tree.getRootNode().cascade(function(node) {
if (!node.isLeaf() && !node.isLoaded()) {
node.reload();
return true;
}
if (node.attributes['code'] && node.attributes['code'] == code) {
nodeMod = node;
}
return true;
});
});
});
if (!nodeMod) {
Ext.Msg.alert('提示','您未被授权访问该功能<br>菜单编码:'+code);
return;
}
Ext.apply(nodeMod.attributes,{params:params});
loadModel(nodeMod,true,title);
}
function loadModel(node,des,title){
var centerTab = Ext.getCmp('centerTab');
var id = node.id + "_subTab";
var items = centerTab.items;
var panel=null;
for(var i=0;i<items.length;i++){
var item = items.get(i);
if(item.id==id){
panel= item;
}
}
if (des && panel) {
panel.destroy();
panel=undefined;
}
if (!panel && node.attributes.url!=null && node.attributes.url!="null"){
if(items.length>_MAXMODULE){
return Ext.Msg.alert("警告","超出模块加载最大数量,请关闭某些模块后重试!");
}
if (!title)
title='';
else
title='【'+title+'】';
if (node.attributes.params && !des)
node.attributes.params=undefined;
// var htmlStr = '<iframe style="width:100%;height:100%" allowTransparency=true frameborder=0 name="detailframe" src="'+node.attributes.url+'?id='+node.id+'"></iframe>';
var url=node.attributes.url;
if(node.attributes.url.indexOf("?")>=0){
url=node.attributes.url+"&usercode="+top._APP.operator.usercode;
}
var htmlStr = '<iframe style="width:100%;height:100%" allowTransparency=true frameborder=0 name="detailframe" src="'+url+'"></iframe>';//增加报表时去掉id参数
if(node.text == '电子地图管理') {
Ext.getCmp('left_panel').collapse(true);
htmlStr = '<iframe style="width:100%;height:100%" allowTransparency=true frameborder=0 name="detailframe" src="http://www.hbredcross.org:8888/baseLine/jsp/googleEarth.html?sid=ABQIAAAApYwcWsoSiQ3WKySJxNfm1xSVmppIo2nBU5ROoP2QZFdzZe9JphT5DoyAF1vW-ujuHzHDhkjtgeg0NQ"></iframe>';
}
panel = new Ext.Panel({
id:id,
title:title+node.attributes.text,
iconCls:node.attributes.iconCls,
closable: true,
html:htmlStr//'<iframe style="width:100%;height:100%" allowTransparency=true frameborder=0 name="detailframe" src="'+node.attributes.url+'?id='+node.id+'"></iframe>'
});
centerTab.add(panel);
}
centerTab.setActiveTab(panel);
_ACTIVENODE=node;
}
function layOutPage(objRight){
var menu = Ext.decode(objRight.MENU).children;
var items = [];
if(menu)
for(var i =0;i<menu.length;i++){
var menuitem = menu[i];
if(i==0 && menuitem.children && menuitem.children[0])menuitem.children[0].expanded=true;
items.push({
border:true,
title:menuitem.text,
xtype:'treepanel',
autoScroll: true,
animate: true,
containerScroll: true,
rootVisible: false,
iconCls:menuitem.iconCls,
root: {
nodeType: 'async',
text: 'root',
draggable: false,
children:menuitem.children
},
listeners:{
click : function(node,e){
_ACTIVENODE=node;
task.delay(200);
}
}
});
}
var viewport = new Ext.Viewport({
layout: 'border',
items: [
new Ext.BoxComponent({
region: 'north',
el: 'north',
minSize: 1,
layout:'fit',
height:50
}),
// {
// region:'south',
// contentEl: 'south',
// split:true,
// height: 28,
// minSize: 28,
// maxSize: 28,
// margins:'0 0 0 0'
// },
{
title:"系统菜单",
region:'west',
id:'left_panel',
layout:'accordion',
split:true,
width: 175,
minSize: 175,
maxSize: 400,
collapseMode:'mini',
collapsibleSplitTip:'点击展开菜单',
useSplitTips:true,
splitTip:'点击收缩菜单',
layoutConfig:{animate:true},
//tbar:[{
// xtype:'textfield',
// emptyText:'请输入',
// width:150
//},'-',{
// iconCls:'q-search',
// tooltip:'检索'
//},'-'],
items:items,
items1:[{
id:'menuPanel',
title:'系统菜单',
margins:'0 0 0 5',
border:false,
iconCls:'q-aplction_cscde',
layoutConfig:{animate:true},
items:items
}]
}, new Ext.TabPanel({
id:'centerTab',
region: 'center',
deferredRender: false,
activeTab: 0,
enableTabScroll:true,
plugins: new Ext.ux.TabCloseMenu(),
items: [{
title: '首页',
iconCls:'q-home_blue',
closable: false,
autoScroll: true,
html:'<iframe style="width:100%;height:100%" allowTransparency=true frameborder=0 name="welcome_frame" src="welcome.html"></iframe>'
},{
title: '报表快捷方式',
closable: true,
autoScroll: true,
html:
'<div id="dargDiv" style="left: 0px; top: 10px; position: absolute; width: 100%; height: 100%;">' +
' <ul id="shortcut">' +
' </ul>' +
'<div id="delDiv" style="height: 128px; width:128px; position:absolute; bottom:50px; right:10px;"><img src="../images/Recycle_Bin.png"></img></div>' +
'</div>'
}]
})
]
});
}
function initAction(data){
if(data.ENTERPRISE)
_APP.setEnterprise(Ext.decode(data.ENTERPRISE));
if(data.OPERATE)
_APP.operator=Ext.decode(data.OPERATE);
if(data.REGIONRIGHT)
_APP.setRgionR(Ext.decode(data.REGIONRIGHT));
if(data.REGION)
_APP.setRegion(Ext.decode(data.REGION));
_APP.setRight(Ext.decode(data.URIGHT));
if(data.NOWTIME) _APP.nowTime=data.NOWTIME;
if(data.BEGIN) _APP.BEGIN = data.BEGIN;
if(data.TYPE) _APP.ASSTYPE = data.TYPE;
if(data.END) _APP.END = data.END;
if(data.YEAR) _APP.YEAR = data.YEAR;
if(data.FUND) _APP.FUND = data.FUND;
if(data.USERROLE) _APP.USERROLE = data.USERROLE;
if(data.PARENTID) _APP.PARENTID = data.PARENTID;
if(data.PARENTNAME) _APP.PARENTNAME = data.PARENTNAME;
var App = Ext.decode(data.APP);
_APP.setAppList(App);
document.getElementById('operate_info').innerHTML=" 操作员:"+_APP.operator.username;
if(_APP.ENTERPRISE.groupname!=null)document.getElementById('enterprise_info').innerHTML=_APP.ENTERPRISE.groupname+" ";
top.initShortcuts();
top.triggerDrag();
}
function _initApp(){
if(loginInfo){
var obj = Ext.decode(loginInfo);
layOutPage(obj);
initAction(obj);
}else{
loadMask = new Ext.LoadMask(document.body,{msg:"加载中,请稍候..."});
loadMask.show();
_Ajax.request({
url:'system/Login_loadInfo.action',
result:function(obj){
var detail = Ext.decode(obj.detail);
layOutPage(detail);
initAction(detail);
var task = new Ext.util.DelayedTask(function(){
loadMask.hide();
});
task.delay(500);
}
});
}
}