SMPIB01410_자동상병우선순위관리.xrw 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  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>자동상병 우선순위 관리(SMPIB01410)</xhtml:title>
  6. <model id="model1">
  7. <instance id="instance1">
  8. <root xmlns="">
  9. <main>
  10. <list>
  11. <gridautg>
  12. <autogrup/>
  13. <autogrupnm/>
  14. <sortno/>
  15. </gridautg>
  16. </list>
  17. <result/>
  18. </main>
  19. <send>
  20. <srchgrup/>
  21. <srchgrupnm/>
  22. <userid/>
  23. <sortUpdate>
  24. <datalist/>
  25. </sortUpdate>
  26. </send>
  27. <hidden>
  28. <popupmenu>
  29. <autgsort>
  30. <item>
  31. <name>순서 위로</name>
  32. <func>fAutoGrupNoUp</func>
  33. </item>
  34. <item>
  35. <name>순서 아래로</name>
  36. <func>fAutoGrupNoDown</func>
  37. </item>
  38. </autgsort>
  39. </popupmenu>
  40. </hidden>
  41. </root>
  42. </instance>
  43. <script type="javascript" ev:event="xforms-ready">
  44. <![CDATA[
  45. // 화면을 초기화한다.
  46. fInitialize();
  47. ]]>
  48. </script>
  49. <submission id="TRPIB01410" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/main/list"/>
  50. <submission id="TXPIB01410" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/sortUpdate" resultref="/root/main/result"/>
  51. </model>
  52. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  53. <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
  54. <script type="javascript" src="../../../com/basiccodeweb/js/ZBC001.js"/>
  55. <script type="javascript" src="../../../com/commonweb/js/dateHelper.js"/>
  56. <script type="javascript">
  57. <![CDATA[
  58. function fInitialize()
  59. {
  60. // grid를 인스턴스에 mapping후 인스턴스에 해당하는 빈줄 1줄이 생기므로 grid 초기화
  61. model.removeNodeset("/root/main/list/GridAutg");
  62. grd_autogrup.refresh();
  63. var userId = getUserId();
  64. // model.setValue("/root/init/userid", userId);
  65. model.setValue("/root/send/userid",userId);
  66. btn_search.dispatch("DOMActivate");
  67. }
  68. function fAutoGrupNoUp() {
  69. var rowstatus = grd_autogrup.rowstatus(grd_autogrup.row);
  70. var sortno = parseInt(model.getValue("/root/main/list/gridautg["+ grd_autogrup.row +"]/sortno")); // 선택된 줄의 NO
  71. if (sortno > 1) { // 첫번째 줄이 아닌 경우
  72. model.setValue("/root/main/list/gridautg["+ grd_autogrup.row +"]/sortno", --sortno);
  73. if (rowstatus == 0 || rowstatus == 2) {
  74. grd_autogrup.rowstatus(grd_autogrup.row) = 2; // 2 : update
  75. }
  76. // 바로 위 상병순서와 중복되는 경우
  77. var nextrow = grd_autogrup.row - 1;
  78. var nextsortno = model.getValue("/root/main/list/gridautg["+ nextrow +"]/sortno");
  79. if (sortno == nextsortno) {
  80. model.setValue("/root/main/list/gridautg["+ nextrow +"]/sortno", ++sortno);
  81. rowstatus = grd_autogrup.rowstatus(nextrow);
  82. if (rowstatus == 0 || rowstatus == 2) {
  83. grd_autogrup.rowstatus(nextrow) = 2; // 2 : update
  84. }
  85. }
  86. fAutoGrupSortNo();
  87. }
  88. }
  89. function fAutoGrupNoDown() {
  90. // 삭제 상태가 아닌 마지막 줄을 찾는다.
  91. var rowstatus = grd_autogrup.rowstatus(grd_autogrup.row);
  92. var lastRow = grd_autogrup.rows - 1;
  93. var lastRow1 = model.getValue("/root/main/list/gridautg["+ lastRow +"]/sortno");
  94. for (var i = 1; i < grd_autogrup.rows; i++) {
  95. if (grd_autogrup.rowstatus(i) == 4) { // delete
  96. lastRow1 = i - 1;
  97. i = grd_autogrup.rows;
  98. }
  99. }
  100. var sortno = parseInt(model.getValue("/root/main/list/gridautg["+ grd_autogrup.row +"]/sortno")); // 선택된 줄의 NO
  101. if (sortno < lastRow1) { // 마지막 줄이 아닌 경우
  102. model.setValue("/root/main/list/gridautg["+ grd_autogrup.row +"]/sortno", ++sortno);
  103. if (rowstatus == 0 || rowstatus == 2) {
  104. grd_autogrup.rowstatus(grd_autogrup.row) = 2; // 2 : update
  105. }
  106. // 바로 아래 상병순서와 중복되는 경우
  107. var nextrow = grd_autogrup.row + 1;
  108. var nextsortno = model.getValue("/root/main/list/gridautg["+ nextrow +"]/sortno");
  109. if (sortno == nextsortno) {
  110. model.setValue("/root/main/list/gridautg["+ nextrow +"]/sortno", --sortno);
  111. rowstatus = grd_autogrup.rowstatus(nextrow);
  112. if (rowstatus == 0 || rowstatus == 2) {
  113. grd_autogrup.rowstatus(nextrow) = 2; // 2 : update
  114. }
  115. }
  116. fAutoGrupSortNo();
  117. }
  118. }
  119. function fAutoGrupSortNo() {
  120. var maxRow = parseInt(grd_autogrup.rows) - 1; // rows는 타이틀부분 부터 개수를 센다
  121. grd_autogrup.sort(grd_autogrup.fixedRows, grd_autogrup.colRef("sortno"), maxRow, grd_autogrup.colRef("sortno")) = "asc"; // 타이틀을 제외한 data 부분의 첫 줄의 row = 1 / col = 3 : no
  122. grd_autogrup.gridToInstance();
  123. }
  124. ]]>
  125. </script>
  126. </xhtml:head>
  127. <xhtml:body pagewidth="570" pageheight="720" guideline="1,928;2,696;" style="font-family:굴림체; margin-left:8; margin-top:8; margin-right:8; margin-bottom:8; ">
  128. <group id="group1" style="left:0px; top:0px; width:545px; height:13px; ">
  129. <caption id="caption6" class="tit_1" style="left:0px; top:0px; width:135px; height:13px; ">자동상병 우선순위 관리</caption>
  130. </group>
  131. <group id="group3" scroll="auto" style="left:0px; top:13px; width:545px; height:652px; ">
  132. <group id="group2" style="left:0px; top:10px; width:540px; height:70px; vertical-align:top; ">
  133. <shape id="roundrect1" appearance="roundrect" style="left:0px; top:0px; width:535px; height:65px; "/>
  134. <caption id="caption2" class="search_name" visibility="hidden" style="left:4px; top:29px; width:86px; height:17px; ">그룹명칭 :</caption>
  135. <button id="btn_search" class="btn1_letter2" style="left:459px; top:15px; width:56px; height:22px; ">
  136. <caption>조회</caption>
  137. <script type="javascript" ev:event="DOMActivate">
  138. <![CDATA[
  139. model.removeNodeset("/root/main/list/GridAutg");
  140. grd_autogrup.refresh();
  141. model.setValue("/root/send/srchgrup", "");
  142. submit("TRPIB01410");
  143. ]]>
  144. </script>
  145. </button>
  146. <line id="line13" class="line_4" style="x1:444px; y1:4px; x2:444px; y2:57px; "/>
  147. <caption id="caption4" class="search_name" style="left:4px; top:19px; width:86px; height:17px; ">그룹코드 :</caption>
  148. <input id="ipt_SrchFlagNm" ref="/root/send/srchgrupnm" class="input_search" visibility="hidden" style="left:95px; top:30px; width:325px; height:19px; "/>
  149. <input id="input1" ref="/root/send/srchgrup" class="input_search" navindex="1" style="left:95px; top:20px; width:65px; height:19px; ">
  150. <script type="javascript" ev:event="onkeypress">
  151. <![CDATA[
  152. if (event.keyCode == "13") {
  153. setInputNodeCurText(); // (tfHelper.js) 현재 인풋값 노드 반영
  154. var srchgrup = model.getValue("/root/send/srchgrup");
  155. var row = grd_autogrup.findRow(srchgrup, 1, 1, false, false);
  156. //grd_autogrup.rowStyle(row,"data","background-color") = "#FFF000";
  157. model.setFocus("grd_autogrup");
  158. grd_autogrup.select( row, 1, row, 3) = true;
  159. grd_autogrup.topRow = row;
  160. }
  161. ]]>
  162. </script>
  163. </input>
  164. </group>
  165. <line id="line1" class="line_1" style="x1:0px; y1:85px; x2:531px; y2:85px; "/>
  166. <datagrid id="grd_autogrup" nodeset="/root/main/list/gridautg" autoresize="true" caption="그룹코드^그룹명칭^순서" colsep="^" colwidth="70, 360, 55" dataheight="23" ellipsis="true" mergecellsfixedrows="bycolrec" rowheader="update" rowheight="23" rowsep="|" style="left:1px; top:90px; width:534px; height:550px; font-family:굴림체; ">
  167. <col editable="false" ref="autogrup" type="input"/>
  168. <col editable="false" ref="autogrupnm" type="input"/>
  169. <col ref="sortno" type="input"/>
  170. <script type="javascript" ev:event="xforms-value-changed">
  171. <![CDATA[
  172. var col = grd_autogrup.col;
  173. var row = grd_autogrup.row;
  174. var userid = model.getValue("/root/send/userid");
  175. var rowstatus = grd_autogrup.rowStatus(row);
  176. if (rowstatus == 1 || rowstatus == 3) {
  177. model.setValue("/root/main/list/gridautg[" + row+ "]/changeflag","U");
  178. }
  179. ]]>
  180. </script>
  181. <script type="javascript" ev:event="onmousedown">
  182. <![CDATA[
  183. if (event.button == 3) { // 3 : 오른쪽 버튼
  184. if (grd_autogrup.isCell(event.target) && grd_autogrup.mouseRow >= grd_autogrup.fixedrows) {
  185. setPopupMenu("grd_autogrup", false, "/root/hidden/popupmenu/autgsort/item", "name", "func"); // (tfHelper.js) 컨트롤에서 사용자 팝업 설정 함수
  186. }
  187. }
  188. ]]>
  189. </script>
  190. </datagrid>
  191. </group>
  192. <group id="group4" scroll="auto" style="left:0px; top:668px; width:545px; height:27px; ">
  193. <button id="btn_save" class="btn4_letter2" style="left:469px; top:5px; width:56px; height:22px; ">
  194. <caption>저장</caption>
  195. <script type="javascript" ev:event="DOMActivate">
  196. <![CDATA[
  197. // 저장
  198. var updtdata = getGridUpdateData(grd_autogrup);
  199. if (updtdata == "") { // 변경된 데이터가 없는경우
  200. messageBox("변경된 데이터가","I004"); // 변경된 데이이터가 없습니다.
  201. return false;
  202. } else {
  203. var rtn = messageBox("", "Q002") ;
  204. if (rtn != 6) return;
  205. model.setValue("/root/send/sortUpdate/datalist",updtdata);
  206. //model.setValue("/root/send/sortUpdate/datalist/userid",userId);
  207. if ( submit("TXPIB01410") ) {
  208. model.resetInstanceNode("/root/main/list");
  209. submit("TRPIB01410"); // submit() 성공하면 그리드의 i,u,d 상태 제거
  210. messageBox("정상적으로 저장되었습니다.", "I999");
  211. }
  212. model.resetInstanceNode("/root/send/sortUpdate/datalist");
  213. }
  214. ]]>
  215. </script>
  216. </button>
  217. </group>
  218. </xhtml:body>
  219. </xhtml:html>