SPMMB08100_부서공지사항.xrw 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363
  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. <cond>
  11. <cond2/>
  12. <cond1>1</cond1>
  13. </cond>
  14. <deptinfo>
  15. <deptlist>
  16. <deptcd/>
  17. <deptnm/>
  18. </deptlist>
  19. </deptinfo>
  20. <choideptinfo>
  21. <choideptlist>
  22. <deptcd/>
  23. <deptnm/>
  24. </choideptlist>
  25. <useyn/>
  26. </choideptinfo>
  27. </main>
  28. <send>
  29. <reqdata/>
  30. <savedata/>
  31. </send>
  32. <hidden/>
  33. <init>
  34. <msrght>
  35. <mouserght>
  36. <label>삭제</label>
  37. <func>fDeleteRow</func>
  38. </mouserght>
  39. </msrght>
  40. </init>
  41. </root>
  42. </instance>
  43. <script type="javascript" ev:event="xforms-ready">
  44. <![CDATA[
  45. //그리드 초기화
  46. model.removeNodeset("/root/main/deptinfo/deptlist");
  47. model.removeNodeset("/root/main/choideptinfo/choideptlist");
  48. model.refresh();
  49. //부서명을 조회하여 온다.
  50. model.copyNode("/root/send/reqdata","/root/main/cond");
  51. submit("TRMMB08101");
  52. //조회후 input박스 data제거
  53. model.removeNodeset("/root/main/cond/cond2");
  54. model.refresh();
  55. //input박스 ,data가 지워지게 초기화
  56. ipt_cond2.value = "";
  57. //input박스에 focus가 있드록 초기화
  58. model.setFocus("ipt_cond2");
  59. model.refresh();
  60. //부모창에서 data를 받아온다.
  61. var trgtcount = opener.javascript.getParameter("count");
  62. //부모창에서 받아온 인스턴스 값으로 선택되어 있었던 data를 선택그리드에 보여준다.
  63. //개수 만큼 for문을 돌려 data값을 받아온것을 선택그리들에 뿔려준다.
  64. if(trgtcount != 0){
  65. for(var i=1 ; i <= trgtcount ; i++){
  66. //뿌려주기 전에 그리스의 row을 추가한다.
  67. grd_cdept.addRow(false);
  68. model.setValue("/root/main/choideptinfo/choideptlist[" + i + "]/deptcd",opener.javascript.getParameter("cd" , i));
  69. model.setValue("/root/main/choideptinfo/choideptlist[" + i + "]/deptnm",opener.javascript.getParameter("nm", i));
  70. }
  71. }
  72. ]]>
  73. </script>
  74. <submission id="TRMMB08101" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/reqdata" resultref="/root/main/deptinfo"/>
  75. </model>
  76. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  77. <script type="javascript" src="../../../com/commonweb/js/dateHelper.js"/>
  78. <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
  79. <script type="javascript">
  80. <![CDATA[
  81. //선택된 row삭제
  82. function fDeleteRow(){
  83. //멀티로 데이타 선택
  84. var selectedRows = grd_cdept.selectedRows;
  85. //로우값을 저장할 변수
  86. var row = new Array();
  87. //선택부서의 그리드에 선택된 로우가 없을경우 메세지
  88. if (grd_cdept.row == -1 ){
  89. messgeBox( " 부서명을","C002" );
  90. }else {
  91. //선택부서의 그리드에 선택된 로우가 있을 경우 선택된 로우 값을 저장
  92. for (i= selectedRows-1; i >= 0; i--){
  93. row[i] = grd_cdept.selectedRow(i);
  94. }
  95. //저장된 로우값을 가지고 그행을 삭제
  96. for (i= selectedRows-1; i >= 0; i--){
  97. grd_cdept.deleterow(row[i]);
  98. }
  99. }
  100. model.refresh();
  101. }
  102. ]]>
  103. </script>
  104. </xhtml:head>
  105. <xhtml:body pagewidth="405" pageheight="370" guideline="1,585;1,490;1,189;1,384;" style="margin-left:8; margin-top:8; margin-right:8; margin-bottom:8; ">
  106. <input id="ipt_deptid" ref="/root/main/cond/deptid" style="left:125px; top:7px; width:115px; height:19px; "/>
  107. <shape id="roundrect1" appearance="roundrect" ellipsewidth="10" ellipseheight="10" style="left:0px; top:0px; width:384px; height:35px; background-color:#fffbf2; border-color:#ffd799; "/>
  108. <input id="ipt_cond2" ref="/root/main/cond/cond2" style="left:115px; top:7px; width:115px; height:19px; ">
  109. <script type="javascript" ev:event="onkeyup">
  110. <![CDATA[
  111. //조건을 적고 enter를 치면 바로 조회 버튼을 누르지 않고 조회
  112. inputEnterKey("btn_req", "DOMActivate");
  113. ]]>
  114. </script>
  115. </input>
  116. <button id="btn_req" class="btn1_letter2" style="left:318px; top:7px; width:56px; height:22px; ">
  117. <caption>조회</caption>
  118. <script type="javascript" ev:event="DOMActivate">
  119. <![CDATA[
  120. //부서명을 조회하여 온다.
  121. model.copyNode("/root/send/reqdata","/root/main/cond");
  122. submit("TRMMB08101");
  123. //조회후 input박스 data제거
  124. model.removeNodeset("/root/main/cond/cond2");
  125. model.refresh();
  126. ]]>
  127. </script>
  128. </button>
  129. <caption id="caption24" class="tit_2" style="left:0px; top:42px; width:134px; height:13px; ">검색자료</caption>
  130. <line id="line1" class="line_1" style="x1:0px; y1:57px; x2:191px; y2:57px; "/>
  131. <datagrid id="grd_dept" nodeset="/root/main/deptinfo/deptlist" caption="부서코드^부서명" colsep="^" colwidth="0, 150" extendlastcol="scroll" mergecellsfixedrows="bycolrec" rowheader="update" rowsep="|" style="left:0px; top:62px; width:190px; height:268px; ">
  132. <col ref="deptcd"/>
  133. <col ref="deptnm"/>
  134. <script type="javascript" ev:event="ondblclick">
  135. <![CDATA[
  136. //그리드 row선택시 row외 다른곳 선택시 error메세지
  137. if( grd_dept.isCell(event.target) && grd_dept.row >= grd_dept.fixedRows ) {
  138. //**********중복된 data가 존재하는지 확인
  139. //부서조회의 선택된 row값을 받아옴
  140. var deptrow = grd_dept.row;
  141. //선택부서조회에 선택되어 있는 row개수를 받아옴
  142. var cdeptrows = grd_cdept.rows;
  143. //선택된 row의 부서코드 값을 받아옴
  144. var getdeptcd = model.getValue("/root/main/deptinfo/deptlist[" + deptrow + "]/deptcd");
  145. //종복되어있는 경우를 위해 상태값을 가지게 한다.
  146. var dupl = 'false';
  147. //선택된 부서의 row개수 만큼 for문을 돌려서 확인
  148. for(var i = 1 ; i <= cdeptrows ; i++){
  149. //선택된 부서의 row의 부서코드를 하나씩 받아와서 조회
  150. var sdeptcd = model.getValue("/root/main/choideptinfo/choideptlist[" + i + "]/deptcd");
  151. //부서조회 그리드의 부서코드와 선택되어 있는 그리드의 부서코드가 같은지 비교
  152. if(sdeptcd == getdeptcd){
  153. //중복인 경우 경고 메세지
  154. var deptnm = model.getValue("/root/main/choideptinfo/choideptlist[" + i + "]/deptnm");
  155. messageBox( deptnm + " 부서가","E006");
  156. //부서가 중복되어 있는 경우 data를 선택하면 안되므로 상태값을 ture로 하여 선택하지 않는다.
  157. dupl = 'true';
  158. }
  159. }
  160. //********** 중복되어 있지 않는 경우
  161. //중복되어있지 않는 상태값을 가지는 경우 선택그리드에 나타낸다.
  162. if(dupl == 'false'){
  163. //선택그리드의 row를 추가
  164. grd_cdept.addRow(true);
  165. //부서조회 그리드의 값을 선택그리드에 넘긴다.
  166. model.setValue("/root/main/choideptinfo/choideptlist[" + cdeptrows + "]/deptcd",model.getValue("/root/main/deptinfo/deptlist[" + deptrow + "]/deptcd"));
  167. model.setValue("/root/main/choideptinfo/choideptlist[" + cdeptrows + "]/deptnm",model.getValue("/root/main/deptinfo/deptlist[" + deptrow + "]/deptnm"));
  168. }
  169. }else {
  170. messageBox( "부서명을 선택" ,"E001");
  171. }
  172. ]]>
  173. </script>
  174. </datagrid>
  175. <caption id="caption1" class="tit_2" style="left:195px; top:42px; width:134px; height:13px; ">선택자료</caption>
  176. <line id="line2" class="line_1" style="x1:195px; y1:57px; x2:386px; y2:57px; "/>
  177. <datagrid id="grd_cdept" nodeset="/root/main/choideptinfo/choideptlist" caption="부서코드^부서명" colsep="^" colwidth="0, 150" extendlastcol="scroll" mergecellsfixedrows="bycolrec" rowheader="update" rowsep="|" style="left:195px; top:62px; width:190px; height:268px; ">
  178. <col ref="deptcd"/>
  179. <col ref="deptnm"/>
  180. <script type="javascript" ev:event="onmousedown">
  181. <![CDATA[
  182. //마우스 오른쪽을 누르면 삭제 팝업이 뜨고 선택시 선택한 row를 삭제
  183. if (grd_cdept.isCell(event.target) && grd_cdept.mouseRow >= grd_cdept.fixedRows) {
  184. //오른쪽 팝업을 보이게 true로 한다.
  185. app.showPopupMenu(true);
  186. //오른쪽 마우스 선택시 삭제창이 나타나면 선택한 row삭제
  187. window.setPopupMenu(true, "/root/init/msrght/mouserght", "label", "func", false);
  188. } else {
  189. window.setPopupMenu(false);
  190. }
  191. ]]>
  192. </script>
  193. </datagrid>
  194. <caption id="caption3" class="search_name" style="left:7px; top:9px; width:108px; height:17px; ">부서별 검색 :</caption>
  195. <button id="btn_confirm" class="btn4_letter2" style="left:270px; top:333px; width:56px; height:22px; ">
  196. <caption>확인</caption>
  197. <script type="javascript" ev:event="DOMActivate">
  198. <![CDATA[
  199. // 부모창의 속성값에 정해준다..
  200. var getrows = grd_cdept.rows;
  201. //확인 버튼 눌렀다는 상태값
  202. model.setValue("/root/main/choideptinfo/useyn", "Y");
  203. //그리드에 선택된 row수를 받아온다.
  204. var getrows = grd_cdept.rows - grd_cdept.fixedRows;
  205. var pCnt = opener.javascript.getParameter("count");
  206. opener.javascript.setParameter("useyn", model.getValue("/root/main/choideptinfo/useyn"));
  207. opener.javascript.setParameter("count", getrows);
  208. //그리드에 data가 없는 경우 확인버튼이 닫히지 않게 한다.
  209. for(var i = 1; i <= getrows; i++){
  210. if( i == 1 ){
  211. opener.javascript.clearParameter("cd");
  212. opener.javascript.clearParameter("nm");
  213. opener.javascript.setParameter("cd", model.getValue("/root/main/choideptinfo/choideptlist[" + i + "]/deptcd"));
  214. opener.javascript.setParameter("nm", model.getValue("/root/main/choideptinfo/choideptlist[" + i + "]/deptnm"));
  215. }else{
  216. opener.javascript.addParameter("cd", model.getValue("/root/main/choideptinfo/choideptlist[" + i + "]/deptcd"));
  217. opener.javascript.addParameter("nm", model.getValue("/root/main/choideptinfo/choideptlist[" + i + "]/deptnm"));
  218. }
  219. }
  220. //선택한 것이 하나도 없는 경우는 창을 닫지 않는다
  221. if(getrows != '0'){
  222. window.close();
  223. }
  224. ]]>
  225. </script>
  226. </button>
  227. <button id="button1" class="btn4_letter2" style="left:329px; top:333px; width:56px; height:22px; ">
  228. <caption>취소</caption>
  229. <script type="javascript" ev:event="DOMActivate">
  230. <![CDATA[
  231. //취소 버튼 눌렀다는 상태값
  232. model.setValue("/root/main/choideptinfo/useyn", "N");
  233. opener.javascript.setParameter("useyn", model.getValue("/root/main/choideptinfo/useyn"));
  234. //팝업창을 닫음
  235. window.close();
  236. ]]>
  237. </script>
  238. </button>
  239. <button id="btn_copy" class="btn2_letter2" style="left:145px; top:37px; width:42px; height:19px; ">
  240. <caption>복사</caption>
  241. <script type="javascript" ev:event="DOMActivate">
  242. <![CDATA[
  243. //***************중복된 data가 존재하는지 확인
  244. //사용자조회의 선택된 row값을 받아옴
  245. var rows = grd_dept.selectedRows;
  246. //선택사용자조회에 선택되어 있는 row개수를 받아옴
  247. var Crows = grd_cdept.rows;
  248. //선택한 로우값 저장 변수
  249. var row = new Array();
  250. //중복확인 변수
  251. var dupl = new Array();
  252. //선택한 로우의 값을 변수에 저장
  253. for (var i= rows-1; i >= 0; i--){
  254. row[i] = grd_dept.selectedrow(i);
  255. }
  256. //선택된 부서의 row개수 만큼 for문을 돌려서 확인
  257. if(rows == 0){
  258. messageBox("부서명을 ", "C002");
  259. }else{
  260. for(var i = rows-1 ; i >= 0 ; i--){
  261. var temp = 'false';
  262. //선택된 사용자의 row의 사용자id를 하나씩 받아와서 조회
  263. var deptcd = model.getValue("/root/main/deptinfo/deptlist[" + row[i] + "]/deptcd");
  264. var deptnm = model.getValue("/root/main/deptinfo/deptlist[" + row[i] + "]/deptnm");
  265. for(var j = 1 ; j <= Crows ; j++){
  266. //선택된 row의 사용자id 값을 받아옴
  267. var cd = model.getValue("/root/main/choideptinfo/choideptlist[" + j + "]/deptcd");
  268. //사용자조회 그리드의 사용자id와 선택되어 있는 그리드의 사용자id가 같은지 비교
  269. if(deptcd == cd){
  270. //사용자가 중복되어 있는 경우 data를 선택하면 안되므로 상태값을 ture로 하여 선택하지 않는다.
  271. temp = 'true';
  272. }
  273. }
  274. if(temp == 'true'){
  275. dupl[i] = 'true';
  276. //중복인 경우 경고 메세지
  277. messageBox(deptnm + " 부서가","E006");
  278. }else{
  279. dupl[i] = 'false';
  280. }
  281. }
  282. //선택된 로우의 마지막 로우에 저장을 위해 값을 받아옴
  283. var rowcount = Crows;
  284. for(var i = rows-1 ; i >= 0 ; i--){
  285. //선택된 사용자의 row의 사용자id를 하나씩 받아와서 조회
  286. var deptcd = model.getValue("/root/main/deptinfo/deptlist[" + row[i] + "]/deptcd");
  287. var deptnm = model.getValue("/root/main/deptinfo/deptlist[" + row[i] + "]/deptnm");
  288. //중복되어있지 않는 상태값을 가지는 경우 선택그리드에 나타낸다.
  289. if(dupl[i] == 'false'){
  290. //선택그리드의 row를 추가
  291. grd_cdept.addRow(true);
  292. //부서조회 그리드의 값을 선택그리드에 넘긴다.
  293. model.setValue("/root/main/choideptinfo/choideptlist[" + rowcount + "]/deptcd",deptcd);
  294. model.setValue("/root/main/choideptinfo/choideptlist[" + rowcount + "]/deptnm",deptnm);
  295. rowcount = rowcount + 1;
  296. }
  297. }
  298. // for(var i = 1 ; i <= Crows ; i++){
  299. // //선택된 사용자의 row의 사용자id를 하나씩 받아와서 조회
  300. // var sdeptcd = model.getValue("/root/main/choideptinfo/choideptlist[" + i + "]/deptcd");
  301. // var sdeptnm = model.getValue("/root/main/choideptinfo/choideptlist[" + i + "]/deptnm");
  302. // for (var j= rows-1; j>=0 ; j--){
  303. // //선택된 row의 사용자id 값을 받아옴
  304. // var getdeptcd = model.getValue("/root/main/deptinfo/deptlist[" + row[j] + "]/deptcd");
  305. //
  306. // //사용자조회 그리드의 사용자id와 선택되어 있는 그리드의 사용자id가 같은지 비교
  307. // if(sdeptcd == getdeptcd){
  308. // //중복인 경우 경고 메세지
  309. // messageBox(sdeptnm + " 부서가","E006");
  310. // //사용자가 중복되어 있는 경우 data를 선택하면 안되므로 상태값을 ture로 하여 선택하지 않는다.
  311. // dupl[i,j] = 'true';
  312. // }else{
  313. // dupl[i,j] = 'false';
  314. // }
  315. // }
  316. //
  317. // }
  318. // var rowcount = Crows;
  319. // //********** 중복되어 있지 않는 경우
  320. // for(var i = 1 ; i <= Crows ; i++){
  321. // var deptcd = model.getValue("/root/main/deptinfo/deptlist[" + row[i] + "]/deptcd");
  322. // var deptnm = model.getValue("/root/main/deptinfo/deptlist[" + row[i] + "]/deptnm");
  323. // for (var j= rows-1; j>=0 ; j--){
  324. //
  325. //
  326. // //중복되어있지 않는 상태값을 가지는 경우 선택그리드에 나타낸다.
  327. // if(dupl[i,j] == 'false'){
  328. // //선택그리드의 row를 추가
  329. // grd_cdept.addRow(true);
  330. //
  331. // //부서조회 그리드의 값을 선택그리드에 넘긴다.
  332. // model.setValue("/root/main/choideptinfo/choideptlist[" + rowcount + "]/deptcd",deptcd);
  333. // model.setValue("/root/main/choideptinfo/choideptlist[" + rowcount + "]/deptnm",deptnm);
  334. // rowcount = rowcount + 1;
  335. // }
  336. // }
  337. // }
  338. }
  339. ]]>
  340. </script>
  341. </button>
  342. <line id="line3" style="x1:310px; y1:0px; x2:310px; y2:30px; border-color:#ffe4bb; border-left-style:solid; "/>
  343. </xhtml:body>
  344. </xhtml:html>