SPZSN00200_개인공지대상조회.xrw 19 KB

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