SPAHA04930_부서공지대상조회.xrw 15 KB

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