package com.jtgh.yjpt.model { import com.jtgh.yjpt.common.BusinessContext; import com.jtgh.yjpt.common.Global; import com.jtgh.yjpt.common.component.ui.IFrame; import com.jtgh.yjpt.common.util.ModuleUtil; import com.jtgh.yjpt.common.util.Utils; import com.jtgh.yjpt.select.MenuTypeSelect; import com.jtgh.yjpt.select.YesNoSelect; import com.jtgh.yjpt.view.Workspace; import com.jtgh.yjpt.view.core.LoginPanel; import com.jtgh.yjpt.view.core.PassWordYxq; import com.jtgh.yjpt.vo.access.UserVo; import com.jtgh.yjpt.vo.common.CodeVo; import com.jtgh.yjpt.vo.sys.ButtonVo; import com.jtgh.yjpt.vo.sys.MenuVo; import flash.display.DisplayObject; import flash.events.Event; import flash.utils.Dictionary; import flash.utils.getDefinitionByName; import mx.core.FlexGlobals; import mx.core.UIComponent; import mx.core.mx_internal; import mx.events.FlexEvent; import mx.resources.ResourceManager; import spark.components.Group; use namespace mx_internal; public class SystemModel { //instance private static var thisModel:SystemModel; private static var listEntryMap:Dictionary; public static function init():void { if(!thisModel) { thisModel = new SystemModel; listEntryMap = new Dictionary(true); } } public static function getInstance():SystemModel { init(); return thisModel; } /************************** * 配置相关 */ public static var iFrame:IFrame=null; public static function changeViewStack():void { if(null!=iFrame){ iFrame.visible=false; } thisModel.mainLayout.viewStack.selectedIndex = (thisModel.mainLayout.viewStack.selectedIndex + 1) % 2; // 同步选中菜单 // if(Global.selectedFirstMenuVo){ // if(thisModel.mainLayout.mapView){ // thisModel.mainLayout.mapView.selectFirstMenuItem(); // } // } //不再同步。。取消高亮 if(thisModel.mainLayout.mapView.selectedFirstMenuBtn) thisModel.mainLayout.mapView.selectedFirstMenuBtn.selected=false; Global.selectedSecondMenuVo=null; Global.selectedThridMenuVo=null; thisModel.mainLayout.mapView.secondMenu.removeAllElements(); thisModel.mainLayout.mapView.thridMenuBar.visible=false; } private var parameterXML:XML = null; private function get configLoadOK():Boolean { return moduleGroupXML&¶meterXML; } public static function getConfigureParameter(modId:String):XML { var paramXML:XML = thisModel.parameterXML; if(!paramXML) return null; var nl:XMLList = paramXML..module.(@modId==modId); if (nl && nl.length() > 0) { var item:XML = nl[0]; return item; } return null; } //---------------------------------------------------------------------- //-------------------------------------------------------------- // 模块组 //-------------------------------------------------------------- private var moduleGroupMap:Object = new Object; private var moduleGroupXML:XML = null; public static function getModuleGroupURL(modId:String):String { var swfUrl:String=""; if(modId.indexOf("002")==0) swfUrl="module/YjglModule.swf"+"?version="+Global.version; if(modId.indexOf("003")==0) swfUrl="module/JyrxxModule.swf"+"?version="+Global.version; if(modId.indexOf("004")==0) swfUrl="module/WxhwspModule.swf"+"?version="+Global.version; if(modId.indexOf("005")==0) swfUrl="module/BaglModule.swf"+"?version="+Global.version; if(modId.indexOf("006")==0) swfUrl="module/ZcdcModule.swf"+"?version="+Global.version; if(modId.indexOf("008")==0) swfUrl="module/TaskModule.swf"+"?version="+Global.version;//任务管理 if(modId.indexOf("010")==0) swfUrl="module/QlygModule.swf"+"?version="+Global.version; return swfUrl; } //---------------------------------------------------------------------- //--设置 private var settingXML:XML = null; /************************** * 界面相关对象以及方法 */ private var mainPane:Group; public function setMainPane(mp:Group):void { thisModel.mainPane = mp; } private var mainLayout:Workspace; public function getMainLayout():Workspace { return mainLayout; } public function setMainLayout(ml:Workspace):void { thisModel.mainLayout = ml; } /********* * 登陆成功 */ public static function doLoginSuccess(bc:BusinessContext):void { if(bc!=null) { Global.user = bc.getAttribute("user") as UserVo; Global.jsessionid = bc.getAttribute("jsessionid") as String; Global.szd = bc.getAttribute("szd") as CodeVo; Global.deployMode = bc.getAttribute("deployMode") as String; Global.deploySzd = bc.getAttribute("deploySzd") as CodeVo; Global.adminId = bc.getAttribute("adminId") as Number; Global.tbUserId = bc.getAttribute("tbUserId") as Number; Global.birtUrl = bc.getAttribute("birtUrl") as String; Global.initMenu = bc.getAttribute("initMenu") as MenuVo; // Global.MAP_URL=bc.getAttribute("mapUrl") as String; Global.OPEN_MAP=bc.getAttribute("openMap") as String; Global.upload_file_size=bc.getAttribute("uploadFileSize") as Number; Global.upload_image_size=bc.getAttribute("uploadImageSize") as Number; Global.btyyj=bc.getAttribute("btyyj") as String; Global.thyj=bc.getAttribute("thyj") as String; Global.version=bc.getAttribute("version") as String; //设置是否在危险品审批中使用签章功能的参数 Global.iSignature=bc.getAttribute("iSignature") as String; } //界面,登陆界面换成主框架 thisModel.mainPane.removeAllElements(); thisModel.mainLayout = new Workspace; thisModel.mainPane.addElement(thisModel.mainLayout); thisModel.mainLayout.percentWidth=100; if(Global.user.sfjyr==YesNoSelect.YES ) { // var initMenu:MenuVo = new MenuVo; Global.selectedFirstMenuVo=Global.initMenu.parent; Global.selectedSecondMenuVo=Global.initMenu; menuClick(Global.initMenu); } if(Global.user.pdwx){ thisModel.mainLayout.addEventListener(FlexEvent.CREATION_COMPLETE,function(e:Event):void{ var yxq:PassWordYxq= new PassWordYxq; Utils.popupWindow(ResourceManager.getInstance().getString("common","tip"),yxq,FlexGlobals.topLevelApplication as DisplayObject,null,300,150); }); } } /********* * 登出 */ public static function doLogout(bc:BusinessContext):void { //登出时清空缓存 Global.cleanData(); if(bc!=null) Global.szd = bc.getAttribute("szd") as CodeVo; //界面,登陆界面换成主框架 thisModel.mainPane.removeAllElements(); thisModel.mainLayout = null; var loginUI:LoginPanel = new LoginPanel(); loginUI.percentWidth = 100; loginUI.percentHeight = 100; thisModel.mainPane.addElement(loginUI); } /********* * 切换用户 */ public static function doSwitchUser(bc:BusinessContext):void { //切换用户时清空缓存 Global.cleanData(); doLoginSuccess(bc); } /********* * 点击菜单,确定modId,创建对应的视图 */ public static function menuClick(menuVo:MenuVo,... args:Array):void { Global.menuFlag=true; addTab(thisModel.mainLayout,menuVo,args); } /************** * 打开一个新窗口,加载模块的列表或者编辑界面 * 触发条件可能是菜单点击、程序新开窗口 * viewStack中第一页是地图应用,第二页是普通应用 */ private static function addTab(workspace:Workspace,menuVo:MenuVo,args:Array):void { if(!menuVo) return; //比较已打开的tab ModuleUtil.loadModule(menuVo.code,function():void{ if(menuVo.type==MenuTypeSelect.MENU_TYPE_1||menuVo.parent==null) { if(menuVo.path!=null) { // 普通应用,先初始化列表页面 workspace.viewStack.selectedIndex=1; var cls:Class = getDefinitionByName(menuVo.path) as Class; var ui:Object = new cls; // 初始化参数 if(ui.hasOwnProperty("initParam")) ui.initParam = args; Global.menuCache[ui] = menuVo; for each(var b:ButtonVo in menuVo.buttons) { if(ui.hasOwnProperty(b.code)) { ui[b.code].visible = true; ui[b.code].includeInLayout = true; Global.menuCache[ui[b.code]] = b; } } if(!workspace.workView.workContent) { workspace.workView.addEventListener(FlexEvent.CREATION_COMPLETE,function(e:Event):void{ workspace.workView.workContent.pageName.text = menuVo.pageName; workspace.workView.workContent.content.addElement(UIComponent(ui)); }); } else { workspace.workView.workContent.content.removeAllElements(); workspace.workView.workContent.pageName.text = menuVo.pageName; workspace.workView.workContent.content.addElement(UIComponent(ui)); } // 同步选中菜单 if(Global.selectedFirstMenuVo){ if(workspace.workView.mainNav){ workspace.workView.mainNav.selectFirstMenuItem(); } } } } else if(menuVo.type==MenuTypeSelect.MENU_TYPE_2) { // 地图应用,先初始化model workspace.viewStack.selectedIndex=0; Utils.getModelByName(menuVo.path); } }); } } }