SMZSA20300_메뉴관리.xrw 45 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214
  1. <?xml version="1.0" encoding="EUC-KR"?>
  2. <?xml-stylesheet type="text/css" href="../../../com/commonweb/css/common.css" ?>
  3. <xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/2002/01/xforms" xmlns:ev="http://www.w3.org/2001/xml-events">
  4. <xhtml:head>
  5. <xhtml:title>메뉴관리</xhtml:title>
  6. <model id="model1">
  7. <instance id="instance1">
  8. <root xmlns="">
  9. <main>
  10. <list>
  11. <menuitemlist/>
  12. </list>
  13. <mglist>
  14. <menugruplist/>
  15. </mglist>
  16. <item>
  17. <menugrupcd/>
  18. <menugrupnm/>
  19. </item>
  20. </main>
  21. <hide/>
  22. <send>
  23. <searchitem/>
  24. <menugruplist/>
  25. <flag/>
  26. <optmenugrupcd/>
  27. <menuitemlist/>
  28. <scrnflag/>
  29. <menugrupcd/>
  30. <vpnauthyn/>
  31. </send>
  32. <init>
  33. <flag>
  34. <lable>메뉴그룹명</lable>
  35. <value>menugrupnm</value>
  36. </flag>
  37. <flag>
  38. <lable>메뉴그룹코드</lable>
  39. <value>menugrupcd</value>
  40. </flag>
  41. <searchitem/>
  42. <scrnflag>
  43. <label>-</label>
  44. <value/>
  45. </scrnflag>
  46. <scrnflag>
  47. <label>MAIN</label>
  48. <value>M</value>
  49. </scrnflag>
  50. <scrnflag>
  51. <label>MODALESS</label>
  52. <value>P</value>
  53. </scrnflag>
  54. <comcd/>
  55. </init>
  56. <mgmenu>
  57. <label>메뉴그룹삭제</label>
  58. <func>delmenugrupinfo</func>
  59. </mgmenu>
  60. <mgmenu>
  61. <label>메뉴그룹수정</label>
  62. <func>setmenugrupinfo</func>
  63. </mgmenu>
  64. <mimenu>
  65. <label>신규추가</label>
  66. <func>addnew</func>
  67. </mimenu>
  68. <mimenu>
  69. <label>업무추가</label>
  70. <func>addmenu</func>
  71. </mimenu>
  72. <mimenu>
  73. <label>화면추가</label>
  74. <func>addscrn</func>
  75. </mimenu>
  76. <temp>
  77. <prestdeptcd/>
  78. <prestdeptnm/>
  79. <vpnauthyn/>
  80. </temp>
  81. </root>
  82. </instance>
  83. <script type="javascript" ev:event="xforms-ready">
  84. <![CDATA[
  85. zbcfGetCodeList( new Array( "Z0017"),
  86. new Array("/root/init/comcd"));
  87. fInitialize();
  88. ]]>
  89. </script>
  90. <script type="javascript" ev:event="xforms-model-construct">
  91. <![CDATA[
  92. window.setPopupMenu(true, "/root/menu", "label", "func", true);
  93. ]]>
  94. </script>
  95. <submission id="TRZSA20300" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/main/mglist"/>
  96. <submission id="TXZSA20300" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/temp"/>
  97. <submission id="TRZSA20301" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/main/list"/>
  98. <submission id="TXZSA20301" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/temp"/>
  99. <submission id="TXZSA20302" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/temp"/>
  100. <submission id="TXZSA20303" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/temp"/>
  101. <submission id="TRZBC00101" method="post" replace="instance"/>
  102. </model>
  103. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  104. <script type="javascript" src="../../../com/authinfoweb/js/ZSA001.js"/>
  105. <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
  106. <script type="javascript" src="../../../com/commonweb/js/stringHelper.js"/>
  107. <script type="javascript" src="../../../com/departmentcodeweb/js/ZSD001.js"/>
  108. <script type="javascript" src="../../../com/basiccodeweb/js/ZBC001.js"/>
  109. <script type="javascript">
  110. <![CDATA[
  111. var TempItemCD = 0;
  112. /*
  113. 초기화 작업을 합니다.
  114. */
  115. function fInitialize(){
  116. model.removeNodeset("/root/main/mglist/menugruplist");
  117. model.removeNodeset("/root/main/list/menuitemlist");
  118. grd_menugruplist.colhidden(4)=true;
  119. combo1.select(0);
  120. model.refresh();
  121. }
  122. /*
  123. 버튼 컨트롤들을 클릭했을때 공통으로 타는 함수입니다.
  124. control : "search" 는 조회 버튼 클릭
  125. "init"은 신규 버튼 클릭
  126. "save"는 저장 버튼 클릭
  127. grid : 그리드 컨트롤을 넘겨줍니다.
  128. param : 기타 param을 넘겨줍니다.
  129. */
  130. function fClicked(control, grid, param){
  131. if ("search" == control){
  132. fSearchClick(grid, param);
  133. //model.resetInstanceNode("/root/send");
  134. } else if ("init" == control){
  135. model.reset();
  136. } else if ("save" == control){
  137. fSaveClick(grid, param);
  138. } else if ("delete" == control){
  139. fDeleteClick(grid, param);
  140. }else{
  141. messageBox("처리를 수행","E002");
  142. }
  143. model.refresh();
  144. }
  145. /*
  146. 조회버튼 클릭 타는 함수입니다.
  147. grid.explorerbar = "sortshow" sort설정합니다.
  148. ipt_usercdnm_flag는 검색조건의 사용자코드 or 사용자명입니다.
  149. radio1은 사용자코드 or 사용자명 선택 라디오 버튼입니다.
  150. submit을 날립니다.
  151. .
  152. */
  153. function fSearchClick(grid,param){
  154. // window.setPopupMenu(true, "/root/menu/menu", "Label", "func", true);
  155. // window.showPopupMenu(true);
  156. grid.explorerbar = "sortshow";
  157. model.removeNodeset("/root/main/list/menugruplist");
  158. grid.rebuild();
  159. model.resetInstanceNode("/root/send");
  160. model.setValue("/root/send/searchitem", ipt_search_item.currentText);
  161. model.setValue("/root/send/flag", combo1.value);
  162. submit("TRZSA20300");
  163. /*
  164. if(submit("TRZSA20300")){
  165. //model.setValue("/root/send/searchitem", "");
  166. }
  167. */
  168. }
  169. /*
  170. 저장 버튼 클릭시 사는 함수입니다.
  171. 사용자코드, 사용자명, 비밀번호, 적용시작일자, 적용종료일자는 필수 항목 입니다.
  172. 필수항목 모두 입력시 /root/main/item 노드를 send 노드로 복사합니다.
  173. submit을 날립니다.
  174. */
  175. function fSaveClick(grid, param){
  176. if("menugrup" == param){
  177. // alert("메뉴그룹을 저장합니다.");
  178. var gridrows = grd_menugruplist.rows - grd_menugruplist.fixedRows;
  179. for(var i = 1; i <= gridrows ; i++){
  180. var menugrupnm = model.getValue("/root/main/mglist/menugruplist[" + i + "]/menugrupnm");
  181. var vpnauthyn = model.getValue("/root/main/mglist/menugruplist[" + i + "]/vpnauthyn");
  182. // 메뉴그룹명이 없는 경우
  183. if(menugrupnm.getTrim() == ""){
  184. messageBox("추가하려는 메뉴그룹명이 입력되지 않았습니다.","E999");
  185. return;
  186. }
  187. // VPN 접속권한이 없는 경우
  188. if(vpnauthyn.getTrim() == ""){
  189. messageBox("VPN 접속권한여부가 입력되지 않았습니다.","E999");
  190. return;
  191. }
  192. }
  193. var menugrupnm = model.getValue("");
  194. model.setValue("/root/send/menugruplist", grid.getUpdateData());
  195. if ( submit("TXZSA20300") ) {
  196. grid.clearStatus(); // submit() 성공하면 그리드의 i,u,d 상태 제거
  197. }
  198. btn_search.dispatch("DOMActivate");
  199. } else if("menuitem" == param){
  200. // alert("메뉴항목을 저장합니다.");
  201. // alert(opt_menugrupcd.value);
  202. //alert(opt_menugrupcd.value);
  203. // model.setValue("/root/send/optmenugrupcd", opt_menugrupcd.value);
  204. model.setValue("/root/send/menuitemlist", grid.getUpdateData());
  205. var iRow = grd_menuitemlist.row;
  206. var menuparamcheck = model.getValue("/root/main/list/menuitemlist["+iRow+"]/menuparam");
  207. var checkvalue = "Y";
  208. for(var i=0; i < menuparamcheck.length-1; i++)
  209. {
  210. if (menuparamcheck.charAt(i) == '#' || menuparamcheck.charAt(i) == '/' || menuparamcheck.charAt(i) == '.' || menuparamcheck.charAt(i) == '▩' || menuparamcheck.charAt(i) == '▦'){
  211. checkvalue = "X";
  212. }
  213. }
  214. if (checkvalue == "Y") {
  215. if ( submit("TXZSA20301") ) {
  216. grid.clearStatus(); // submit() 성공하면 그리드의 i,u,d 상태 제거
  217. }
  218. }else {
  219. alert("특정 문자는 메뉴 파라미터로 사용할 수 없습니다.");
  220. }
  221. }
  222. // model.copyNode("/root/send/item", "/root/hide/item");
  223. // submit("TXZSU10101");
  224. }
  225. /**
  226. 메뉴 그룹 삭제 & 메뉴 아이템 삭제
  227. */
  228. function fDeleteClick(grid, param){
  229. if(param == "menugrup"){
  230. grid.addStatus(grid.row,"delete");
  231. var rtn = messageBox("메뉴그룹을 ", "Q001");
  232. if (rtn == 6) {
  233. model.setValue("/root/send/menugruplist", grid.getUpdateData());
  234. if ( submit("TXZSA20300") ) {
  235. grid.clearStatus(); // submit() 성공하면 그리드의 i,u,d 상태 제거
  236. var jRow = grid.row;
  237. grid.deleteItem(jRow);
  238. }
  239. }
  240. } else if(param == "menuitem") {
  241. var checkfild = 0;
  242. var iRow = grd_menuitemlist.row;
  243. var iMenuItemCD = model.getValue("/root/main/list/menuitemlist["+iRow+"]/menuitemcd");
  244. for(var i = iRow; i < grd_menuitemlist.rows; i++){
  245. if(iMenuItemCD == model.getValue("/root/main/list/menuitemlist["+i+"]/upmenuitemcd")){
  246. var rtn = messageBox("하위 메뉴부터 삭제 하십시요!\n하위 메뉴가 있어 데이터를 삭제", "E001");
  247. checkfild = -1;
  248. break;
  249. }
  250. }
  251. if(checkfild != -1){
  252. var rtn = messageBox(" 해당 메뉴항목을 ", "Q001");
  253. if(rtn == 6){
  254. if(grid.rowstatus(grid.row) == 1 ) {
  255. grid.deleteItem(grid.row);
  256. } else {
  257. grid.addStatus(grid.row,"delete");
  258. }
  259. model.setValue("/root/send/menuitemlist", grid.getUpdateData());
  260. /*
  261. if ( submit("TXZSA20301") ) {
  262. grid.clearStatus(); // submit() 성공하면 그리드의 i,u,d 상태 제거
  263. var jRow = grid.row;
  264. grid.deleteItem(jRow);
  265. }
  266. */
  267. }
  268. }
  269. } else if(param == "all"){
  270. model.setValue("/root/send/menugrupcd", opt_menugrupcd.value);
  271. var rtn = messageBox(" 해당 메뉴 전체를 ", "Q001");
  272. if(rtn == 6){
  273. if(submit("TXZSA20302")){
  274. //fInitialize();
  275. }
  276. }
  277. }
  278. }
  279. function fResetNode(node, destinationelement){
  280. // model.setValue(node + "/" + destinationelement, "");
  281. // alert(model.elementName("/root/main/item"));
  282. }
  283. /*
  284. model.getValue(); 를 함수로 만들었습니다.
  285. param1 : node는 grid의 xPath입니다.
  286. param2 : row는 grid에서 선택한 row값입니다.
  287. param3 : element는 getvalue할 해당 element 명입니다.
  288. 해당 getvalue값을 return 해줍니다.
  289. return 하지 않으면 해당값을 가져올 수 없습니다.
  290. */
  291. function fGetValue(node, row, element) {
  292. var rtnValue = model.getValue(node + "[" + row + "]/" + element);
  293. return rtnValue;
  294. }
  295. /*
  296. model.setValue();를 함수로 만들었습니다.
  297. param1 : node는 setvalue할 컨트롤의 xPath입니다.
  298. param2 : destinationelement는 setvalue할 element명 입니다.
  299. param3 : sourceelement는 setvalue할 값입니다.
  300. */
  301. function fSetValue(node, destinationelement, sourceelement) {
  302. model.setValue(node + "/" + destinationelement, sourceelement);
  303. }
  304. function fSetRowValue(node, destinationelement, sourceelement, row) {
  305. model.setValue(node + "[" + row + "]/" + destinationelement, sourceelement);
  306. }
  307. function fCheckItem(iRow){
  308. }
  309. ]]>
  310. </script>
  311. </xhtml:head>
  312. <xhtml:body guideline="1,1197;1,1330;" style="margin-left:8; margin-top:0; margin-right:8; margin-bottom:0; ">
  313. <script type="javascript" ev:event="onmenu">
  314. <![CDATA[
  315. if(event.description == "delmenugrupinfo")
  316. {
  317. btn_delete_menugrup.dispatch("DOMActivate");
  318. }
  319. if(event.description == "setmenugrupinfo")
  320. {
  321. // alert("setmenugrupinfo");
  322. var iRow = grd_menugruplist.row;
  323. setParameter("SPZSA20300_", "");
  324. //window.load("SPZSU10002.xrw", "modal", "SPZSU10002", "left:200px; width:800px;");
  325. modal("SPZSA20301", "", "200", "200", "SPZSA20301","/root/main/mglist/menugruplist["+iRow+"]/menugrupcd", "/root/send/menugrupcd");
  326. var iProperties = getParameter("SPZSA20300_");
  327. if(iProperties.length > 0 && iProperties != undefined){
  328. model.setValue("/root/main/mglist/menugruplist[" + iRow + "]/menugrupnm", iProperties);
  329. //grd_menugruplist.addStatus(iRow, "update");
  330. } else {
  331. messageBox("데이터를 저장", "E001");
  332. }
  333. }
  334. if(event.description == "addnew")
  335. {
  336. btn_add_menuitem.dispatch("DOMActivate");
  337. }
  338. if(event.description == "addmenu")
  339. {
  340. btn_add_menu.dispatch("DOMActivate");
  341. }
  342. if(event.description == "addscrn")
  343. {
  344. btn_add_scrn.dispatch("DOMActivate");
  345. }
  346. ]]>
  347. </script>
  348. <group id="grp_tle" style="left:0px; top:0px; width:1194px; height:13px; ">
  349. <caption id="caption6" class="tit_1" style="left:0px; top:0px; width:98px; height:14px; ">메뉴관리</caption>
  350. </group>
  351. <group id="grp_biz" scroll="auto" style="left:0px; top:13px; width:1195px; height:744px; ">
  352. <group id="grp_sea" style="left:5px; top:10px; width:378px; height:60px; vertical-align:top; ">
  353. <shape id="roundrect1" appearance="roundrect" ellipsewidth="10" ellipseheight="10" style="left:0px; top:0px; width:378px; height:60px; background-color:#fffbf2; border-color:#ffd799; "/>
  354. <caption id="caption1" class="search_name" style="left:15px; top:9px; width:117px; height:17px; ">메뉴그룹조회</caption>
  355. <line id="line1" style="x1:296px; y1:7px; x2:296px; y2:51px; border-color:#ffe4bb; border-left-style:solid; "/>
  356. <button id="btn_search" class="btn1_letter2" style="left:309px; top:19px; width:56px; height:22px; ">
  357. <caption>조회</caption>
  358. <script type="javascript" ev:event="DOMActivate">
  359. <![CDATA[
  360. fClicked("search", grd_menugruplist);
  361. ]]>
  362. </script>
  363. </button>
  364. <input id="ipt_search_item" ref="/root/send/searchitem" class="input_s_essential" imemode="hangul" style="left:125px; top:35px; width:134px; height:19px; ">
  365. <script type="javascript" ev:event="onkeypress">
  366. <![CDATA[
  367. //var param = ipt_search_item.currentText;
  368. /*
  369. if("13" == event.keyCode){
  370. btn_search.dispatch("DOMActivate");
  371. //fClicked("search", grd_userbaseinfo, param);
  372. }
  373. */
  374. inputEnterKey("btn_search", "DOMActivate");
  375. ]]>
  376. </script>
  377. </input>
  378. <select1 id="combo1" ref="/root/init/flag" class="combo_search" appearance="minimal" style="left:126px; top:8px; width:134px; height:19px; ">
  379. <choices>
  380. <itemset nodeset="/root/init/flag">
  381. <label ref="lable"/>
  382. <value ref="value"/>
  383. </itemset>
  384. </choices>
  385. </select1>
  386. </group>
  387. <caption id="caption9" class="tit_2" style="left:5px; top:79px; width:111px; height:13px; vertical-align:middle; ">메뉴그룹</caption>
  388. <line id="line12" class="line_1" style="x1:6px; y1:94px; x2:383px; y2:94px; "/>
  389. <datagrid id="grd_menugruplist" nodeset="/root/main/mglist/menugruplist" class="datagrid2" allowuserresize="true" caption="메뉴그룹명^메뉴그룹코드^사용처^사용부서코드^시스템코드^최초등록자ID^최종수정자ID^VPN&#xA;권한^사용&#xA;시스템" colwidth="131, 80, 67, 100, 100, 100, 100, 30, 33" dataheight="25" extendlastcol="scroll" frozencols="1" mergecellsfixedrows="bycolrec" rowheader="update" rowheight="32" style="left:5px; top:99px; width:378px; height:641px; ">
  390. <col disabled="true" ref="menugrupnm" type="input" _key="true"/>
  391. <col ref="menugrupcd"/>
  392. <col ref="prestdeptnm"/>
  393. <col ref="prestdeptcd" visibility="hidden"/>
  394. <col ref="syscd" visibility="hidden"/>
  395. <col ref="fstrgstrid" visibility="hidden"/>
  396. <col ref="lastupdtrid" visibility="hidden"/>
  397. <col ref="vpnauthyn" type="combo">
  398. <choices>
  399. <itemset nodeset="/root/init/comcd/Z0017">
  400. <label ref="cdnm"/>
  401. <value ref="cdid"/>
  402. </itemset>
  403. </choices>
  404. </col>
  405. <col ref="usesys" type="combo">
  406. <choices>
  407. <item>
  408. <label>전체</label>
  409. <value>A</value>
  410. </item>
  411. <item>
  412. <label>TF</label>
  413. <value>T</value>
  414. </item>
  415. <item>
  416. <label>XP</label>
  417. <value>X</value>
  418. </item>
  419. <item>
  420. <label>NX</label>
  421. <value>N</value>
  422. </item>
  423. </choices>
  424. </col>
  425. <script type="javascript" ev:event="onmousedown">
  426. <![CDATA[
  427. if(event.button == 3){
  428. if(grd_menugruplist.isCell(event.target) && grd_menugruplist.mouseRow >= grd_menugruplist.fixedrows){
  429. window.setPopupMenu(true, "/root/mgmenu", "label", "func", true);
  430. }else{
  431. window.setPopupMenu(false);
  432. }
  433. }
  434. ]]>
  435. </script>
  436. <script type="javascript" ev:event="DOMFocusOut">
  437. <![CDATA[
  438. window.setPopupMenu(false);
  439. ]]>
  440. </script>
  441. <script type="javascript" ev:event="ondblclick">
  442. <![CDATA[
  443. btn_search_menuitem.dispatch("DOMActivate");
  444. ]]>
  445. </script>
  446. <script type="javascript" ev:event="onaftersort">
  447. <![CDATA[
  448. grd_menugruplist.gridToInstance();
  449. ]]>
  450. </script>
  451. <script type="javascript" ev:event="onclick">
  452. <![CDATA[
  453. var iRow = grd_menugruplist.row;
  454. if(grd_menugruplist.mouseCol == 5){
  455. var ifixrows = grd_menugruplist.rows;
  456. for (var i = 0; ifixrows >= i ; i++){
  457. if (model.getValue("/root/main/mglist/menugruplist[" + i + "]/vpnauthyn") == "Y"){
  458. model.setValue("/root/main/mglist/menugruplist[" + i + "]/vpnauthyn", "N");
  459. grd_menuitemlist.addStatus(i, "update");
  460. }
  461. }
  462. }
  463. ]]>
  464. </script>
  465. </datagrid>
  466. <button id="btn_save_menugrup" class="btn5_letter2" style="left:340px; top:74px; width:42px; height:19px; ">
  467. <caption>저장</caption>
  468. <script type="javascript" ev:event="DOMActivate">
  469. <![CDATA[
  470. fClicked("save", grd_menugruplist, "menugrup");
  471. ]]>
  472. </script>
  473. </button>
  474. <button id="btn_add_menugrup" class="btn2_letter2" style="left:297px; top:74px; width:42px; height:19px; ">
  475. <caption>추가</caption>
  476. <script type="javascript" ev:event="DOMActivate">
  477. <![CDATA[
  478. grd_menugruplist.addItem();
  479. model.setValue("/root/main/mglist/menugruplist[" + grd_menugruplist.row + "]/usesys", "A");
  480. grd_menugruplist.refresh();
  481. grd_menugruplist.editCell();
  482. ]]>
  483. </script>
  484. </button>
  485. <button id="btn_delete_menugrup" class="btn2_letter2" visibility="hidden" style="left:113px; top:75px; width:42px; height:19px; ">
  486. <caption>삭제</caption>
  487. <script type="javascript" ev:event="DOMActivate">
  488. <![CDATA[
  489. fClicked("delete", grd_menugruplist, "menugrup");
  490. ]]>
  491. </script>
  492. </button>
  493. <button id="btn_search_menuitem" class="btn2_letter2" visibility="hidden" style="left:88px; top:75px; width:42px; height:19px; ">
  494. <caption>조회</caption>
  495. <script type="javascript" ev:event="DOMActivate">
  496. <![CDATA[
  497. // fClicked("search", grd_menuitemlist, "menuitem");
  498. grd_menuitemlist.explorerbar = "sortshow";
  499. model.resetInstanceNode("/root/send");
  500. var iRow = grd_menugruplist.row;
  501. var iNode = "/root/main/mglist/menugruplist"
  502. opt_menugrupnm.value = fGetValue(iNode, iRow, "menugrupnm");
  503. opt_menugrupcd.value = fGetValue(iNode, iRow, "menugrupcd");
  504. var iOptmenugrupcd = opt_menugrupcd.value;
  505. model.setValue("/root/main/item/menugrupnm", fGetValue(iNode, iRow, "menugrupnm"));
  506. model.setValue("/root/main/item/menugrupcd", fGetValue(iNode, iRow, "menugrupcd"));
  507. var iOptmenugrupcd = model.getValue("/root/main/item/menugrupcd");
  508. // alert(iOptmenugrupcd);
  509. model.setValue("/root/send/optmenugrupcd", iOptmenugrupcd );
  510. // 김기용씨가 알려줌... settree하기전 rebuild()
  511. // grd_menuitemlist.rebuild();
  512. submit("TRZSA20301");
  513. grd_menuitemlist.rebuild();
  514. setTree(grd_menuitemlist, 1, 2, true);
  515. ]]>
  516. </script>
  517. </button>
  518. <button id="btn_add_menu" class="btn2_letter4" style="left:906px; top:73px; width:64px; height:19px; ">
  519. <caption>업무추가</caption>
  520. <script type="javascript" ev:event="DOMActivate">
  521. <![CDATA[
  522. var iRow = grd_menuitemlist.row;
  523. var iRows= grd_menuitemlist.rows;
  524. var iFixRow = grd_menuitemlist.fixedRows;
  525. var iUpmenuitemcd = model.getValue("/root/main/list/menuitemlist["+iRow+"]/upmenuitemcd");
  526. var iScrnCD = model.getValue("/root/main/list/menuitemlist["+iRow+"]/scrncd");
  527. var iMenuItemCD = model.getValue("/root/main/list/menuitemlist["+iRow+"]/menuitemcd");
  528. var iMenuGrupCD = opt_menugrupcd.value;
  529. if(iUpmenuitemcd=="*"){
  530. if(iScrnCD == "" || iScrnCD == "-"){
  531. var nodeset = grd_menuitemlist.nodeset;
  532. var check_flag = 1;
  533. // for (var i=grd_menuitemlist.fixedRows; i<grd_menuitemlist.rows; i++)
  534. // {
  535. // // alert();
  536. // if(model.getValue(nodeset+"["+i+"]/menuitemcd")=="") {
  537. // check_flag = 0;
  538. // messageBox("먼저 저장버튼을 ", "C002");
  539. // break;
  540. // }
  541. // }
  542. //
  543. //// if(check_flag == 1){
  544. // if(check_flag != 1){
  545. var iLevel = model.getValue("/root/main/list/menuitemlist["+iRow+"]/levl");
  546. // alert(iLevel)
  547. var parselevel = (parseInt(iLevel)+1);
  548. // var ixRow=0;
  549. /*
  550. for(var i = parseInt(iRow)+1; i < grd_menuitemlist.rows; i++)
  551. {
  552. // alert(i);
  553. var itLevel = model.getValue("/root/main/list/menuitemlist["+i+"]/levl");
  554. if(itLevel == iLevel){
  555. ixRow = i;
  556. // alert("추가할 레벨 : " + itLevel);
  557. // alert("추가할 레벨 다음 레벨: " + iLevel);
  558. break;
  559. }
  560. grd_menuitemlist.iscollapsed(i)=false; //자식 트리 열기
  561. }
  562. */
  563. //var iMenuitemcd = model.getValue("/root/main/list/menuitemlist["+iRow+"]/menuitemcd"
  564. // grd_menuitemlist.addItem();
  565. grd_menuitemlist.insertItem(iRow, "after");
  566. // grd_menuitemlist.editCell();
  567. var itRow = grd_menuitemlist.row;
  568. //####
  569. TempItemCD += 1;
  570. model.setValue("/root/main/list/menuitemlist["+itRow+"]/tempitemcd", TempItemCD);
  571. model.setValue("/root/main/list/menuitemlist["+itRow+"]/tempupitemcd", model.getValue("/root/main/list/menuitemlist["+iRow+"]/tempitemcd"));
  572. model.setValue("/root/main/list/menuitemlist["+itRow+"]/upmenuitemcd", iMenuItemCD);
  573. model.setValue("/root/main/list/menuitemlist["+itRow+"]/levl", parselevel);
  574. model.setValue("/root/main/list/menuitemlist["+itRow+"]/menugrupcd", iMenuGrupCD);
  575. // setTree(grd_menuitemlist, 1, 2, true);
  576. // }
  577. } else if(iScrnCD != ""){
  578. model.alert("업무화면이 등록되있으면 하위메뉴를 만들수 없습니다.");
  579. }
  580. } else {
  581. var iLevel = model.getValue("/root/main/list/menuitemlist["+iRow+"]/levl");
  582. if(iLevel == "3"){
  583. model.alert("하위메뉴를 만들수 없습니다.");
  584. } else if(iLevel == "2"){
  585. if(iScrnCD == "" || iScrnCD == "-"){
  586. var nodeset = grd_menuitemlist.nodeset;
  587. var check_flag = 1;
  588. // for (var i=grd_menuitemlist.fixedRows; i<grd_menuitemlist.rows; i++)
  589. // {
  590. // // alert();
  591. // if(model.getValue(nodeset+"["+i+"]/menuitemcd")=="") {
  592. // check_flag = 0;
  593. // messageBox("먼저 저장버튼을 ", "C002");
  594. // break;
  595. // }
  596. // }
  597. //
  598. // if(check_flag == 1){
  599. grd_menuitemlist.insertItem(iRow, "after");
  600. grd_menuitemlist.editCell();
  601. var itRow = grd_menuitemlist.row;
  602. TempItemCD += 1;
  603. model.setValue("/root/main/list/menuitemlist["+itRow+"]/tempitemcd", TempItemCD);
  604. model.setValue("/root/main/list/menuitemlist["+itRow+"]/tempupitemcd", model.getValue("/root/main/list/menuitemlist["+iRow+"]/tempitemcd"));
  605. model.setValue("/root/main/list/menuitemlist["+itRow+"]/upmenuitemcd", iMenuItemCD);
  606. model.setValue("/root/main/list/menuitemlist["+itRow+"]/menugrupcd", iMenuGrupCD);
  607. // }
  608. } else if(iScrnCD != ""){
  609. model.alert("업무화면이 등록되있으면 하위메뉴를 만들수 없습니다.");
  610. }
  611. }
  612. }
  613. /*
  614. if(iMenuItemCD == ""){
  615. for(var i = iFixRow; i<iRows; i++){
  616. var icheck = model.getValue("/root/main/list/menuitemlist["+i+"]/levl");
  617. if(ickeck != "3" && ickeck != "3"
  618. }
  619. }
  620. var iUpmenuitemcd = model.getValue("/root/main/list/menuitemlist["+iRow+"]/upmenuitemcd");
  621. var iLevel = model.getValue("/root/main/list/menuitemlist["+iRow+"]/levl");
  622. alert(iLevel);
  623. // grd_menuitemlist.insertItem(iRow, "after");
  624. grd_menuitemlist.addItem();
  625. grd_menuitemlist.editCell();
  626. var iRow = grd_menuitemlist.row;
  627. model.setValue("/root/main/list/menuitemlist["+iRow+"]/upmenuitemcd", "*");
  628. */
  629. ]]>
  630. </script>
  631. </button>
  632. <button id="btn_add_menuitem" class="btn2_letter4" style="left:839px; top:73px; width:64px; height:19px; ">
  633. <caption>신규추가</caption>
  634. <script type="javascript" ev:event="DOMActivate">
  635. <![CDATA[
  636. // var iRow = grd_menuitemlist.row;
  637. // var iUpmenuitemcd = model.getValue("/root/main/list/menuitemlist["+iRow+"]/upmenuitemcd");
  638. // var iLevel = model.getValue("/root/main/list/menuitemlist["+iRow+"]/levl");
  639. // alert(iLevel);
  640. // grd_menuitemlist.insertItem(iRow, "after");
  641. var nodeset = grd_menuitemlist.nodeset;
  642. var check_flag = 1;
  643. // for (var i=grd_menuitemlist.fixedRows; i<grd_menuitemlist.rows; i++)
  644. // {
  645. // if(model.getValue(nodeset+"["+i+"]/menuitemcd")=="") {
  646. // check_flag = 0;
  647. // messageBox("먼저 저장버튼을 ", "C002");
  648. // break;
  649. // }
  650. // }
  651. //
  652. // if(check_flag == 1){
  653. grd_menuitemlist.addItem();
  654. grd_menuitemlist.editCell();
  655. //####
  656. TempItemCD += 1;
  657. // alert(TempItemCD);
  658. var iRow = grd_menuitemlist.row;
  659. model.setValue("/root/main/list/menuitemlist["+iRow+"]/levl", "1");
  660. //####
  661. model.setValue("/root/main/list/menuitemlist["+iRow+"]/tempitemcd", TempItemCD);
  662. model.setValue("/root/main/list/menuitemlist["+iRow+"]/tempupitemcd", "*");
  663. model.setValue("/root/main/list/menuitemlist["+iRow+"]/upmenuitemcd", "*");
  664. model.setValue("/root/main/list/menuitemlist["+iRow+"]/menugrupcd", opt_menugrupcd.value);
  665. // model.setValue("/root/main/list/menuitemlist["+iRow+"]/scrnflag", model.setValue("/root/main/list/menuitemlist["+iRow+"]/menuitemcd");
  666. // }
  667. ]]>
  668. </script>
  669. </button>
  670. <button id="btn_add_scrn" class="btn2_letter4" style="left:973px; top:73px; width:64px; height:19px; ">
  671. <caption>화면추가</caption>
  672. <script type="javascript" ev:event="DOMActivate">
  673. <![CDATA[
  674. var iRow = grd_menuitemlist.row;
  675. if(opt_menugrupcd.value == ""){
  676. model.alert("메뉴그룹을 선택하십시요!");
  677. } else if(iRow == "-1"){
  678. model.alert("화면을 추가할 메뉴항목을 선택하십시요!");
  679. }else {
  680. modal("SPZSA20500_화면및보고서관리", "", "200", "200", "SPZSA20500");
  681. var iProperties = getParameter("SPZSA20500_");
  682. var iSplit_Value=iProperties.split("|");
  683. // var iRow = grd_menuitemlist.row;
  684. if(iSplit_Value.length > 0 && iSplit_Value[0] != "" && iSplit_Value[0] != undefined){
  685. // grd_menuitemlist.insertItem(1, "before");
  686. iRow = grd_menuitemlist.row;
  687. var iNode = "/root/main/list/menuitemlist"
  688. fSetRowValue(iNode, "scrncd", iSplit_Value[0], iRow);
  689. fSetRowValue(iNode, "scrnnm", iSplit_Value[1], iRow);
  690. var iStatus = grd_menuitemlist.rowstatus(iRow);
  691. if(iStatus=="0"){
  692. grd_menuitemlist.rowstatus(iRow) = "2";
  693. }
  694. } else {
  695. messageBox("데이터를 저장", "E001");
  696. // grd_menuitemlist.deleteItem(iRow);
  697. }
  698. }
  699. ]]>
  700. </script>
  701. </button>
  702. <datagrid id="grd_menuitemlist" nodeset="/root/main/list/menuitemlist" class="datagrid2" caption="level^메뉴항목명^메뉴항목코드^상위&#xA;메뉴항목코드^기본&#xA;화면^업무&#xA;구분^조회&#xA;순서^화면위치^화면명^화면코드^비고^메뉴그룹코드^메뉴 파라미터^TempItemCD^TempUpItemCD^메뉴설명" colwidth="39, 200, 80, 80, 42, 42, 42, 100, 110, 90, 80, 100, 100, 100, 100, 100" dataheight="23" ellipsis="true" extendlastcol="scroll" frozencols="2" mergecellsfixedrows="bycolrec" rowheader="update" rowheight="23" selectionmode="free" style="left:388px; top:99px; width:807px; height:641px; ">
  703. <col ref="levl" visibility="hidden"/>
  704. <col ref="menuitemnm" type="input"/>
  705. <col ref="menuitemcd" visibility="visible"/>
  706. <col ref="upmenuitemcd" visibility="visible"/>
  707. <col checkvalue="Y,N" ref="basescrn" type="checkbox"/>
  708. <col checkvalue="Y,N" ref="menuscrnflag" type="checkbox"/>
  709. <col ref="searchseq" type="input" maxlength="2"/>
  710. <col ref="scrnflag" type="combo">
  711. <choices>
  712. <itemset nodeset="/root/init/scrnflag">
  713. <label ref="label"/>
  714. <value ref="value"/>
  715. </itemset>
  716. </choices>
  717. </col>
  718. <col ref="scrnnm" style="left:659px; top:32px; width:110px; height:23px; "/>
  719. <col ref="scrncd" type="input"/>
  720. <col ref="rem" visibility="hidden"/>
  721. <col ref="menugrupcd"/>
  722. <col ref="menuparam" type="input"/>
  723. <col ref="tempitemcd"/>
  724. <col ref="tempupitemcd"/>
  725. <col ref="menuitemdesc" type="input"/>
  726. <script type="javascript" ev:event="onmousedown">
  727. <![CDATA[
  728. // alert(grd_menuitemlist.mouseCol);
  729. if(event.button == 3) {
  730. if(grd_menuitemlist.isCell(event.target) && grd_menuitemlist.mouseRow >= grd_menuitemlist.fixedrows)
  731. {
  732. window.setPopupMenu(true, "/root/mimenu", "label", "func", true);
  733. } else{
  734. window.setPopupMenu(false);
  735. }
  736. }
  737. if(grd_menuitemlist.mouseCol == 8) {
  738. var iRow = grd_menuitemlist.mouseRow;
  739. var checkscrncd = model.getValue("/root/main/list/menuitemlist["+iRow+"]/scrncd");
  740. // alert(checkscrncd);
  741. if(checkscrncd == "" || checkscrncd == null) {
  742. grd_menuitemlist.endEditCell();
  743. grd_menuitemlist.colDisabled(grd_menuitemlist.mouseCol) = true;
  744. } else {
  745. grd_menuitemlist.colDisabled(grd_menuitemlist.mouseCol) = false;
  746. }
  747. }
  748. ]]>
  749. </script>
  750. <script type="javascript" ev:event="DOMFocusOut">
  751. <![CDATA[
  752. window.setPopupMenu(false);
  753. ]]>
  754. </script>
  755. <script type="javascript" ev:event="onendedit">
  756. <![CDATA[
  757. if( grd_menuitemlist.col == 7){ // && grd_menuitemlist.col == 1 ) {
  758. var curValue = grd_menuitemlist.valueMatrix(grd_menuitemlist.row, grd_menuitemlist.col);
  759. // alert(curValue);
  760. if ( curValue.length == 1) {
  761. var preFix = "0";
  762. grd_menuitemlist.valueMatrix(grd_menuitemlist.row, grd_menuitemlist.col) = preFix.concat(curValue);
  763. }
  764. }
  765. ]]>
  766. </script>
  767. <script type="javascript" ev:event="onclick">
  768. <![CDATA[
  769. var iRow = grd_menuitemlist.row;
  770. if(grd_menuitemlist.mouseCol == 5){
  771. var ifixrows = grd_menuitemlist.rows;
  772. for (var i = 0; ifixrows >= i ; i++){
  773. if (model.getValue("/root/main/list/menuitemlist[" + i + "]/basescrn") == "Y"){
  774. model.setValue("/root/main/list/menuitemlist[" + i + "]/basescrn", "N");
  775. grd_menuitemlist.addStatus(i, "update");
  776. }
  777. }
  778. //
  779. var checkscrncd = model.getValue("/root/main/list/menuitemlist["+iRow+"]/scrncd");
  780. if(checkscrncd == "" || checkscrncd == null){
  781. } else {
  782. model.setValue("/root/main/list/menuitemlist[" + iRow + "]/basescrn", "Y");
  783. }
  784. }
  785. ]]>
  786. </script>
  787. <script type="javascript" ev:event="onmouseover">
  788. <![CDATA[
  789. if(grd_menuitemlist.mouseCol == 5){
  790. var iRow = grd_menuitemlist.mouseRow;
  791. var checkscrncd = model.getValue("/root/main/list/menuitemlist["+iRow+"]/scrncd");
  792. if(checkscrncd == "" || checkscrncd == null){
  793. grd_menuitemlist.isReadOnly(iRow, grd_menuitemlist.mouseCol) = true;
  794. }
  795. }
  796. ]]>
  797. </script>
  798. <script type="javascript" ev:event="xforms-value-changed">
  799. <![CDATA[
  800. if (grd_menuitemlist.col == 13) {
  801. var iRow = grd_menuitemlist.row;
  802. var menuparamcheck = model.getValue("/root/main/list/menuitemlist["+iRow+"]/menuparam");
  803. for(var i=0; i < menuparamcheck.length; i++)
  804. {
  805. if (menuparamcheck.charAt(i) == '#' || menuparamcheck.charAt(i) == '/' || menuparamcheck.charAt(i) == '.' || menuparamcheck.charAt(i) == '▩' || menuparamcheck.charAt(i) == '▦'){
  806. alert(menuparamcheck.charAt(i) + " 이 문자는 메뉴 파라미터로 사용할 수 없습니다.");
  807. grd_menuitemlist.editCell();
  808. break;
  809. }
  810. }
  811. }
  812. if(grd_menuitemlist.mouseCol == 5 || grd_menuitemlist.mouseCol == 6){
  813. var iRow = grd_menuitemlist.mouseRow;
  814. var checkscrncd = model.getValue("/root/main/list/menuitemlist["+iRow+"]/scrncd");
  815. if(checkscrncd != "" || checkscrncd != null){
  816. grd_menuitemlist.addStatus(iRow, "update");
  817. }
  818. }
  819. ]]>
  820. </script>
  821. </datagrid>
  822. <caption id="caption3" class="tit_2" style="left:388px; top:79px; width:111px; height:13px; ">메뉴항목</caption>
  823. <line id="line2" class="line_1" style="x1:388px; y1:94px; x2:1195px; y2:94px; "/>
  824. <button id="btn_delete_menuitem" class="btn2_letter2" style="left:1107px; top:73px; width:42px; height:19px; ">
  825. <caption>삭제</caption>
  826. <script type="javascript" ev:event="DOMActivate">
  827. <![CDATA[
  828. fClicked("delete", grd_menuitemlist, "menuitem");
  829. ]]>
  830. </script>
  831. </button>
  832. <button id="btn_save_menuitem" class="btn5_letter2" style="left:1152px; top:73px; width:42px; height:19px; ">
  833. <caption>저장</caption>
  834. <script type="javascript" ev:event="DOMActivate">
  835. <![CDATA[
  836. /*if(checkGridField(grd_menuitemlist, "menuitemcd")==false)
  837. {
  838. alert("데이터중에 비어있는 필수필드가 있습니다.");
  839. return;
  840. }
  841. */
  842. fClicked("save", grd_menuitemlist, "menuitem");
  843. var iRow = grd_menuitemlist.row;
  844. var menuparamcheck = model.getValue("/root/main/list/menuitemlist["+iRow+"]/menuparam");
  845. var checkvalue = "Y";
  846. for(var i=0; i < menuparamcheck.length-1; i++)
  847. {
  848. if (menuparamcheck.charAt(i) == '#' || menuparamcheck.charAt(i) == '/' || menuparamcheck.charAt(i) == '.' || menuparamcheck.charAt(i) == '▩' || menuparamcheck.charAt(i) == '▦'){
  849. checkvalue = "X";
  850. }
  851. }
  852. if (checkvalue == "Y") {
  853. btn_search_menuitem.dispatch("DOMActivate");
  854. }
  855. ]]>
  856. </script>
  857. </button>
  858. <group id="group4" style="left:388px; top:25px; width:807px; height:45px; vertical-align:top; ">
  859. <caption id="caption11" class="cell_1" style="left:0px; top:20px; width:135px; height:23px; ">메뉴그룹(명/코드)</caption>
  860. <output id="opt_menugrupnm" ref="/root/main/item/menugrupnm" class="output_fix" style="left:138px; top:21px; width:135px; height:19px; "/>
  861. <output id="opt_menugrupcd" ref="/root/main/item/menugrupcd" class="output_fix" style="left:276px; top:21px; width:135px; height:19px; "/>
  862. <caption id="caption12" class="tit_2" style="left:0px; top:0px; width:169px; height:14px; ">선택 메뉴그룹</caption>
  863. <line id="line7" class="line_1" style="x1:0px; y1:15px; x2:805px; y2:15px; "/>
  864. <line id="line8" class="line_3" style="x1:0px; y1:42px; x2:805px; y2:42px; "/>
  865. </group>
  866. <button id="btn_alldelete_menuitem" class="btn2_letter4" style="left:1040px; top:73px; width:64px; height:19px; ">
  867. <caption>전체삭제</caption>
  868. <script type="javascript" ev:event="DOMActivate">
  869. <![CDATA[
  870. fClicked("delete", grd_menuitemlist, "all");
  871. //ipt_search_item.value = opt_menugrupnm.value;
  872. btn_search_menuitem.dispatch("DOMActivate");
  873. ]]>
  874. </script>
  875. </button>
  876. <button id="btn_ins_excel" class="btn2_letter4" style="left:772px; top:73px; width:64px; height:19px; ">
  877. <caption>엑셀입력</caption>
  878. <script type="javascript" ev:event="DOMActivate">
  879. <![CDATA[
  880. var menu_cnt = grd_menuitemlist.rows;
  881. if (menu_cnt > 1)
  882. {
  883. messageBox("해당 메뉴전체가 삭제된 후에 메뉴엑셀입력이 ", "I006");
  884. return;
  885. //btn_alldelete_menuitem.dispatch("DOMActivate");
  886. }
  887. if(grd_menuitemlist.rows > 1) return;
  888. var fileName = window.fileDialog("open", "", false);
  889. grd_menuitemlist.loadExcel(fileName);
  890. for (i=grd_menuitemlist.fixedRows; i<grd_menuitemlist.rows; i++)
  891. {
  892. grd_menuitemlist.rowStatus(i) = 1;
  893. }
  894. /*
  895. // 각 메뉴아이템 수정작업
  896. var menugrupcd = opt_menugrupcd.value; // 작업할 메뉴그룹코드
  897. var nodeset = grd_menuitemlist.nodeset; // 그리드의 노드셋
  898. var level; // 메뉴레벨
  899. var tempitemcd=0; // 임시 아이템 코드
  900. var upmenucd_stack = new Array(); // 상위 메뉴아이템 코드를 관리할 스택
  901. for (i=grd_menuitemlist.fixedRows; i<grd_menuitemlist.rows; i++)
  902. {
  903. level = parseInt(model.getValue(nodeset+"["+i+"]/"+"levl")); // 레벨을 구함
  904. //alert(model.getValue(nodeset+"["+i+"]/"+"menuitemnm")+ ":"+level);
  905. model.setValue(nodeset+"["+i+"]/"+"menuitemcd", ""); //메뉴항목코드를 삭제
  906. model.setValue(nodeset+"["+i+"]/"+"upmenuitemcd", ""); // 상위 메뉴항목코드를 삭제
  907. model.setValue(nodeset+"["+i+"]/"+"menugrupcd", menugrupcd); //메뉴그룹코드를 입력
  908. tempitemcd = tempitemcd +1;
  909. model.setValue(nodeset+"["+i+"]/"+"tempitemcd", tempitemcd); //임시메뉴항목코드를 입력
  910. if (level == 1) // 최상위 메뉴항목이라면
  911. {
  912. model.setValue(nodeset+"["+i+"]/"+"tempupitemcd", "*"); // 임시상위메뉴항목코드를 입력
  913. model.setValue(nodeset+"["+i+"]/"+"upmenuitemcd", "*"); // 상위 메뉴항목코드를 삭제
  914. }
  915. else if (level > 1)
  916. {
  917. upmenucd = upmenucd_stack[(level-1)];
  918. model.setValue(nodeset+"["+i+"]/"+"tempupitemcd", upmenucd); // 임상위메뉴항목코드를 입력 (top 이 가르키고 있는 것...)
  919. }
  920. upmenucd_stack[level] = tempitemcd; // 현재레벨의 상위메뉴아이템코드 저장
  921. */
  922. //if (iStatus == 1) // ?? ??? ?? ????
  923. //{
  924. // if(model.getValue(nodeset+"["+i+"]/"+field)=="") return false;
  925. //}
  926. // }
  927. ]]>
  928. </script>
  929. </button>
  930. <button id="btn_save_excel" class="btn2_letter4" style="left:705px; top:73px; width:64px; height:19px; ">
  931. <caption>엑셀저장</caption>
  932. <script type="javascript" ev:event="DOMActivate">
  933. <![CDATA[
  934. var excelFileName = "메뉴구조_"+model.getValue("/root/main/item/menugrupnm");
  935. var fileName = window.fileDialog("save", ",", false, excelFileName, "xls", "All Files (*.*)|*.*|Excel Files(*.xls)|*.xls");
  936. if (fileName != "")
  937. {
  938. grd_ins_form_menuinfo.saveExcel(fileName,"exportfalserows:0;col_8:value;");
  939. }
  940. ]]>
  941. </script>
  942. </button>
  943. <button id="button1" class="btn5_letter4" visibility="hidden" style="left:570px; top:75px; width:64px; height:19px; ">
  944. <caption>MAX저장</caption>
  945. <script type="javascript" ev:event="DOMActivate">
  946. <![CDATA[
  947. for(var i=1; i < grd_menugruplist.rows;i++){
  948. var mg = model.getValue("/root/main/mglist/menugruplist["+i+"]/menugrupcd]");
  949. alert(mg);
  950. model.setValue("/root/send/menugrupcd", mg );
  951. submit("TXZSA20303");
  952. }
  953. ]]>
  954. </script>
  955. </button>
  956. <button id="button2" class="btn2_letter5" style="left:221px; top:74px; width:75px; height:19px; ">
  957. <caption>사용처삭제</caption>
  958. <script type="javascript" ev:event="DOMActivate">
  959. <![CDATA[
  960. var iRow = grd_menugruplist.row;
  961. if(iRow > 0){
  962. iRow = grd_menugruplist.row;
  963. var iNode = "/root/main/mglist/menugruplist"
  964. fSetRowValue(iNode, "prestdeptcd", "", iRow);
  965. fSetRowValue(iNode, "prestdeptnm", "", iRow);
  966. var iStatus = grd_menugruplist.rowstatus(iRow);
  967. if(iStatus=="0"){
  968. grd_menugruplist.rowstatus(iRow) = "2";
  969. }
  970. }
  971. /*
  972. var iRow = grd_menugruplist.row;
  973. var search_condition = "deptnm";
  974. var search_term = "";
  975. var receive_deptcd_path = "/root/main/mglist/menugruplist["+iRow+"]/prestdeptcd";
  976. var receive_deptnm_path = "/root/main/mglist/menugruplist["+iRow+"]/prestdeptnm";
  977. var standard_yn = null;
  978. var ord_deptflag = null;
  979. zbcfOpenInstDeptCodeList(
  980. search_condition,
  981. search_term,
  982. receive_deptcd_path,
  983. receive_deptnm_path,
  984. standard_yn,
  985. ord_deptflag,
  986. new Array("deptcd", "depthngnm")
  987. );
  988. */
  989. ]]>
  990. </script>
  991. </button>
  992. <datagrid id="grd_ins_form_menuinfo" nodeset="/root/main/list/menuitemlist" class="datagrid2" visibility="hidden" caption="^메뉴항목명^^^기본화면^업무구분^조회순서^^^화면코드^^메뉴그룹코드^메뉴 파라미터^TempItemCD^TempUpItemCD" colwidth="100" dataheight="23" ellipsis="true" extendlastcol="scroll" frozencols="2" mergecellsfixedrows="bycolrec" rowheader="update" rowheight="23" selectionmode="free" style="left:910px; top:605px; width:250px; height:85px; ">
  993. <col ref="levl"/>
  994. <col ref="menuitemnm"/>
  995. <col ref="menuitemcd"/>
  996. <col ref="upmenuitemcd"/>
  997. <col checkvalue="Y,N" ref="basescrn" type="checkbox"/>
  998. <col checkvalue="Y,N" ref="menuscrnflag" type="checkbox"/>
  999. <col ref="searchseq" type="input" maxlength="2"/>
  1000. <col ref="scrnflag" type="combo">
  1001. <choices>
  1002. <itemset nodeset="/root/init/scrnflag">
  1003. <label ref="label"/>
  1004. <value ref="value"/>
  1005. </itemset>
  1006. </choices>
  1007. </col>
  1008. <col ref="scrnnm" style="left:659px; top:32px; width:110px; height:23px; "/>
  1009. <col ref="scrncd" type="input"/>
  1010. <col ref="rem"/>
  1011. <col ref="menugrupcd"/>
  1012. <col ref="menuparam" type="input"/>
  1013. <col ref="tempitemcd"/>
  1014. <col ref="tempupitemcd"/>
  1015. </datagrid>
  1016. <button id="button3" class="btn2_letter5" style="left:144px; top:74px; width:75px; height:19px; ">
  1017. <caption>사용처추가</caption>
  1018. <script type="javascript" ev:event="DOMActivate">
  1019. <![CDATA[
  1020. var iRow = grd_menugruplist.row;
  1021. if(iRow > 0){
  1022. var search_condition = "deptnm";
  1023. var search_term = "";
  1024. var receive_deptcd_path = "/root/temp/prestdeptcd";
  1025. var receive_deptnm_path = "/root/temp/prestdeptnm";
  1026. model.makeNode(receive_deptcd_path);
  1027. model.makeNode(receive_deptnm_path);
  1028. model.setValue(receive_deptcd_path, "");
  1029. model.setValue(receive_deptnm_path, "");
  1030. var standard_yn = null;
  1031. var ord_deptflag = null;
  1032. zbcfOpenInstDeptCodeList(
  1033. search_condition,
  1034. search_term,
  1035. receive_deptcd_path,
  1036. receive_deptnm_path,
  1037. standard_yn,
  1038. ord_deptflag,
  1039. new Array("deptcd", "depthngnm")
  1040. );
  1041. var prestdeptcd = model.getValue("/root/temp/prestdeptcd");
  1042. var prestdeptnm = model.getValue("/root/temp/prestdeptnm");
  1043. if(prestdeptcd.length > 0 && prestdeptcd != "" && prestdeptcd != undefined){
  1044. // grd_menuitemlist.insertItem(1, "before");
  1045. iRow = grd_menugruplist.row;
  1046. var iNode = "/root/main/mglist/menugruplist"
  1047. fSetRowValue(iNode, "prestdeptcd", prestdeptcd, iRow);
  1048. fSetRowValue(iNode, "prestdeptnm", prestdeptnm, iRow);
  1049. var iStatus = grd_menugruplist.rowstatus(iRow);
  1050. if(iStatus=="0"){
  1051. grd_menugruplist.rowstatus(iRow) = "2";
  1052. }
  1053. } else {
  1054. messageBox("데이터를 저장", "E001");
  1055. // grd_menugruplist.deleteItem(iRow);
  1056. }
  1057. }
  1058. /*
  1059. var iRow = grd_menugruplist.row;
  1060. var search_condition = "deptnm";
  1061. var search_term = "";
  1062. var receive_deptcd_path = "/root/main/mglist/menugruplist["+iRow+"]/prestdeptcd";
  1063. var receive_deptnm_path = "/root/main/mglist/menugruplist["+iRow+"]/prestdeptnm";
  1064. var standard_yn = null;
  1065. var ord_deptflag = null;
  1066. zbcfOpenInstDeptCodeList(
  1067. search_condition,
  1068. search_term,
  1069. receive_deptcd_path,
  1070. receive_deptnm_path,
  1071. standard_yn,
  1072. ord_deptflag,
  1073. new Array("deptcd", "depthngnm")
  1074. );
  1075. */
  1076. ]]>
  1077. </script>
  1078. </button>
  1079. </group>
  1080. </xhtml:body>
  1081. </xhtml:html>