SPMMB08200_개인공지사항.xrw 16 KB

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