SystemModel.as 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298
  1. package com.jtgh.yjpt.model
  2. {
  3. import com.jtgh.yjpt.common.BusinessContext;
  4. import com.jtgh.yjpt.common.Global;
  5. import com.jtgh.yjpt.common.component.ui.IFrame;
  6. import com.jtgh.yjpt.common.util.ModuleUtil;
  7. import com.jtgh.yjpt.common.util.Utils;
  8. import com.jtgh.yjpt.select.MenuTypeSelect;
  9. import com.jtgh.yjpt.select.YesNoSelect;
  10. import com.jtgh.yjpt.view.Workspace;
  11. import com.jtgh.yjpt.view.core.LoginPanel;
  12. import com.jtgh.yjpt.view.core.PassWordYxq;
  13. import com.jtgh.yjpt.vo.access.UserVo;
  14. import com.jtgh.yjpt.vo.common.CodeVo;
  15. import com.jtgh.yjpt.vo.sys.ButtonVo;
  16. import com.jtgh.yjpt.vo.sys.MenuVo;
  17. import flash.display.DisplayObject;
  18. import flash.events.Event;
  19. import flash.utils.Dictionary;
  20. import flash.utils.getDefinitionByName;
  21. import mx.core.FlexGlobals;
  22. import mx.core.UIComponent;
  23. import mx.core.mx_internal;
  24. import mx.events.FlexEvent;
  25. import mx.resources.ResourceManager;
  26. import spark.components.Group;
  27. use namespace mx_internal;
  28. public class SystemModel
  29. {
  30. //instance
  31. private static var thisModel:SystemModel;
  32. private static var listEntryMap:Dictionary;
  33. public static function init():void
  34. {
  35. if(!thisModel)
  36. {
  37. thisModel = new SystemModel;
  38. listEntryMap = new Dictionary(true);
  39. }
  40. }
  41. public static function getInstance():SystemModel
  42. {
  43. init();
  44. return thisModel;
  45. }
  46. /**************************
  47. * 配置相关
  48. */
  49. public static var iFrame:IFrame=null;
  50. public static function changeViewStack():void
  51. {
  52. if(null!=iFrame){
  53. iFrame.visible=false;
  54. }
  55. thisModel.mainLayout.viewStack.selectedIndex = (thisModel.mainLayout.viewStack.selectedIndex + 1) % 2;
  56. // 同步选中菜单
  57. // if(Global.selectedFirstMenuVo){
  58. // if(thisModel.mainLayout.mapView){
  59. // thisModel.mainLayout.mapView.selectFirstMenuItem();
  60. // }
  61. // }
  62. //不再同步。。取消高亮
  63. if(thisModel.mainLayout.mapView.selectedFirstMenuBtn)
  64. thisModel.mainLayout.mapView.selectedFirstMenuBtn.selected=false;
  65. Global.selectedSecondMenuVo=null;
  66. Global.selectedThridMenuVo=null;
  67. thisModel.mainLayout.mapView.secondMenu.removeAllElements();
  68. thisModel.mainLayout.mapView.thridMenuBar.visible=false;
  69. }
  70. private var parameterXML:XML = null;
  71. private function get configLoadOK():Boolean
  72. {
  73. return moduleGroupXML&&parameterXML;
  74. }
  75. public static function getConfigureParameter(modId:String):XML
  76. {
  77. var paramXML:XML = thisModel.parameterXML;
  78. if(!paramXML)
  79. return null;
  80. var nl:XMLList = paramXML..module.(@modId==modId);
  81. if (nl && nl.length() > 0)
  82. {
  83. var item:XML = nl[0];
  84. return item;
  85. }
  86. return null;
  87. }
  88. //----------------------------------------------------------------------
  89. //--------------------------------------------------------------
  90. // 模块组
  91. //--------------------------------------------------------------
  92. private var moduleGroupMap:Object = new Object;
  93. private var moduleGroupXML:XML = null;
  94. public static function getModuleGroupURL(modId:String):String
  95. {
  96. var swfUrl:String="";
  97. if(modId.indexOf("002")==0)
  98. swfUrl="module/YjglModule.swf"+"?version="+Global.version;
  99. if(modId.indexOf("003")==0)
  100. swfUrl="module/JyrxxModule.swf"+"?version="+Global.version;
  101. if(modId.indexOf("004")==0)
  102. swfUrl="module/WxhwspModule.swf"+"?version="+Global.version;
  103. if(modId.indexOf("005")==0)
  104. swfUrl="module/BaglModule.swf"+"?version="+Global.version;
  105. if(modId.indexOf("006")==0)
  106. swfUrl="module/ZcdcModule.swf"+"?version="+Global.version;
  107. if(modId.indexOf("008")==0)
  108. swfUrl="module/TaskModule.swf"+"?version="+Global.version;//任务管理
  109. if(modId.indexOf("010")==0)
  110. swfUrl="module/QlygModule.swf"+"?version="+Global.version;
  111. return swfUrl;
  112. }
  113. //----------------------------------------------------------------------
  114. //--设置
  115. private var settingXML:XML = null;
  116. /**************************
  117. * 界面相关对象以及方法
  118. */
  119. private var mainPane:Group;
  120. public function setMainPane(mp:Group):void
  121. {
  122. thisModel.mainPane = mp;
  123. }
  124. private var mainLayout:Workspace;
  125. public function getMainLayout():Workspace
  126. {
  127. return mainLayout;
  128. }
  129. public function setMainLayout(ml:Workspace):void
  130. {
  131. thisModel.mainLayout = ml;
  132. }
  133. /*********
  134. * 登陆成功
  135. */
  136. public static function doLoginSuccess(bc:BusinessContext):void
  137. {
  138. if(bc!=null)
  139. {
  140. Global.user = bc.getAttribute("user") as UserVo;
  141. Global.jsessionid = bc.getAttribute("jsessionid") as String;
  142. Global.szd = bc.getAttribute("szd") as CodeVo;
  143. Global.deployMode = bc.getAttribute("deployMode") as String;
  144. Global.deploySzd = bc.getAttribute("deploySzd") as CodeVo;
  145. Global.adminId = bc.getAttribute("adminId") as Number;
  146. Global.tbUserId = bc.getAttribute("tbUserId") as Number;
  147. Global.birtUrl = bc.getAttribute("birtUrl") as String;
  148. Global.initMenu = bc.getAttribute("initMenu") as MenuVo;
  149. // Global.MAP_URL=bc.getAttribute("mapUrl") as String;
  150. Global.OPEN_MAP=bc.getAttribute("openMap") as String;
  151. Global.upload_file_size=bc.getAttribute("uploadFileSize") as Number;
  152. Global.upload_image_size=bc.getAttribute("uploadImageSize") as Number;
  153. Global.btyyj=bc.getAttribute("btyyj") as String;
  154. Global.thyj=bc.getAttribute("thyj") as String;
  155. Global.version=bc.getAttribute("version") as String;
  156. //设置是否在危险品审批中使用签章功能的参数
  157. Global.iSignature=bc.getAttribute("iSignature") as String;
  158. }
  159. //界面,登陆界面换成主框架
  160. thisModel.mainPane.removeAllElements();
  161. thisModel.mainLayout = new Workspace;
  162. thisModel.mainPane.addElement(thisModel.mainLayout);
  163. thisModel.mainLayout.percentWidth=100;
  164. if(Global.user.sfjyr==YesNoSelect.YES )
  165. {
  166. // var initMenu:MenuVo = new MenuVo;
  167. Global.selectedFirstMenuVo=Global.initMenu.parent;
  168. Global.selectedSecondMenuVo=Global.initMenu;
  169. menuClick(Global.initMenu);
  170. }
  171. if(Global.user.pdwx){
  172. thisModel.mainLayout.addEventListener(FlexEvent.CREATION_COMPLETE,function(e:Event):void{
  173. var yxq:PassWordYxq= new PassWordYxq;
  174. Utils.popupWindow(ResourceManager.getInstance().getString("common","tip"),yxq,FlexGlobals.topLevelApplication as DisplayObject,null,300,150);
  175. });
  176. }
  177. }
  178. /*********
  179. * 登出
  180. */
  181. public static function doLogout(bc:BusinessContext):void
  182. {
  183. //登出时清空缓存
  184. Global.cleanData();
  185. if(bc!=null)
  186. Global.szd = bc.getAttribute("szd") as CodeVo;
  187. //界面,登陆界面换成主框架
  188. thisModel.mainPane.removeAllElements();
  189. thisModel.mainLayout = null;
  190. var loginUI:LoginPanel = new LoginPanel();
  191. loginUI.percentWidth = 100;
  192. loginUI.percentHeight = 100;
  193. thisModel.mainPane.addElement(loginUI);
  194. }
  195. /*********
  196. * 切换用户
  197. */
  198. public static function doSwitchUser(bc:BusinessContext):void
  199. {
  200. //切换用户时清空缓存
  201. Global.cleanData();
  202. doLoginSuccess(bc);
  203. }
  204. /*********
  205. * 点击菜单,确定modId,创建对应的视图
  206. */
  207. public static function menuClick(menuVo:MenuVo,... args:Array):void
  208. {
  209. Global.menuFlag=true;
  210. addTab(thisModel.mainLayout,menuVo,args);
  211. }
  212. /**************
  213. * 打开一个新窗口,加载模块的列表或者编辑界面
  214. * 触发条件可能是菜单点击、程序新开窗口
  215. * viewStack中第一页是地图应用,第二页是普通应用
  216. */
  217. private static function addTab(workspace:Workspace,menuVo:MenuVo,args:Array):void
  218. {
  219. if(!menuVo) return;
  220. //比较已打开的tab
  221. ModuleUtil.loadModule(menuVo.code,function():void{
  222. if(menuVo.type==MenuTypeSelect.MENU_TYPE_1||menuVo.parent==null)
  223. {
  224. if(menuVo.path!=null)
  225. {
  226. // 普通应用,先初始化列表页面
  227. workspace.viewStack.selectedIndex=1;
  228. var cls:Class = getDefinitionByName(menuVo.path) as Class;
  229. var ui:Object = new cls;
  230. // 初始化参数
  231. if(ui.hasOwnProperty("initParam"))
  232. ui.initParam = args;
  233. Global.menuCache[ui] = menuVo;
  234. for each(var b:ButtonVo in menuVo.buttons)
  235. {
  236. if(ui.hasOwnProperty(b.code))
  237. {
  238. ui[b.code].visible = true;
  239. ui[b.code].includeInLayout = true;
  240. Global.menuCache[ui[b.code]] = b;
  241. }
  242. }
  243. if(!workspace.workView.workContent)
  244. {
  245. workspace.workView.addEventListener(FlexEvent.CREATION_COMPLETE,function(e:Event):void{
  246. workspace.workView.workContent.pageName.text = menuVo.pageName;
  247. workspace.workView.workContent.content.addElement(UIComponent(ui));
  248. });
  249. }
  250. else
  251. {
  252. workspace.workView.workContent.content.removeAllElements();
  253. workspace.workView.workContent.pageName.text = menuVo.pageName;
  254. workspace.workView.workContent.content.addElement(UIComponent(ui));
  255. }
  256. // 同步选中菜单
  257. if(Global.selectedFirstMenuVo){
  258. if(workspace.workView.mainNav){
  259. workspace.workView.mainNav.selectFirstMenuItem();
  260. }
  261. }
  262. }
  263. }
  264. else if(menuVo.type==MenuTypeSelect.MENU_TYPE_2)
  265. {
  266. // 地图应用,先初始化model
  267. workspace.viewStack.selectedIndex=0;
  268. Utils.getModelByName(menuVo.path);
  269. }
  270. });
  271. }
  272. }
  273. }