SPMQR03000_메시지함.xrw 35 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046
  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. <tree>
  11. <dept>
  12. <depttree>
  13. </depttree>
  14. </dept>
  15. <emrdept>
  16. <depttree/>
  17. <orddept/>
  18. </emrdept>
  19. </tree>
  20. <list>
  21. <userlist>
  22. <umsguserlist>
  23. <seq/>
  24. <grp1/>
  25. <grp2/>
  26. <usernm/>
  27. <mpphonno/>
  28. <dutuserid/>
  29. </umsguserlist>
  30. </userlist>
  31. <recvrlist>
  32. <recvr>
  33. <usernm/>
  34. <mpphonno/>
  35. </recvr>
  36. </recvrlist>
  37. <mainlist>
  38. <umsguserlist>
  39. <seq/>
  40. <grp1/>
  41. <grp2/>
  42. <usernm/>
  43. <mpphonno/>
  44. <dutuserid/>
  45. </umsguserlist>
  46. </mainlist>
  47. </list>
  48. <recvmsg/>
  49. <sentmsg/>
  50. <trashmsg/>
  51. <callmsg/>
  52. <cleartrash>
  53. <succnt/>
  54. </cleartrash>
  55. <recvnum/>
  56. <recvnm/>
  57. </main>
  58. <send>
  59. <writemsg>
  60. <umsg>
  61. <stype>1</stype>
  62. <inputvalue/>
  63. <treevalue/>
  64. <value/>
  65. <key/>
  66. </umsg>
  67. <send>
  68. <calltype>msg</calltype>
  69. <calltelno/>
  70. <insuflag/>
  71. <msgcnts/>
  72. <recvrid/>
  73. </send>
  74. <pmsg>
  75. <stype>1</stype>
  76. <svalue/>
  77. <wardcd/>
  78. <roomcd/>
  79. <key/>
  80. <orddeptcd/>
  81. <treevalue/>
  82. </pmsg>
  83. <nurslist>
  84. <pid/>
  85. </nurslist>
  86. </writemsg>
  87. <srchinfo>
  88. <smslist/>
  89. <tabflag>1</tabflag>
  90. </srchinfo>
  91. </send>
  92. <temp>
  93. <userlist/>
  94. </temp>
  95. <init>
  96. <cbizabbr>
  97. <label>전체</label>
  98. <value>all</value>
  99. </cbizabbr>
  100. <cbizabbr>
  101. <label>수신인</label>
  102. <value>recvr</value>
  103. </cbizabbr>
  104. <cbizabbr>
  105. <label>호출번호</label>
  106. <value>tel</value>
  107. </cbizabbr>
  108. <cbizabbr>
  109. <label>호출날짜</label>
  110. <value>cdate</value>
  111. </cbizabbr>
  112. <tbizabbr>
  113. <label>전체</label>
  114. <value>all</value>
  115. </tbizabbr>
  116. <tbizabbr>
  117. <label>받는사람</label>
  118. <value>recvr</value>
  119. </tbizabbr>
  120. <tbizabbr>
  121. <label>보낸사람</label>
  122. <value>sender</value>
  123. </tbizabbr>
  124. <tbizabbr>
  125. <label>날짜</label>
  126. <value>date</value>
  127. </tbizabbr>
  128. <rbizabbr>
  129. <label>전체</label>
  130. <value>all</value>
  131. </rbizabbr>
  132. <rbizabbr>
  133. <label>보낸사람</label>
  134. <value>sender</value>
  135. </rbizabbr>
  136. <rbizabbr>
  137. <label>메세지 내용</label>
  138. <value>msg</value>
  139. </rbizabbr>
  140. <rbizabbr>
  141. <label>도착일</label>
  142. <value>rdate</value>
  143. </rbizabbr>
  144. <rbizabbr>
  145. <label>환자명</label>
  146. <value>pnm</value>
  147. </rbizabbr>
  148. <rbizabbr>
  149. <label>환자ID</label>
  150. <value>pid</value>
  151. </rbizabbr>
  152. <msgrank>
  153. <label>전체</label>
  154. <value>0</value>
  155. </msgrank>
  156. <msgrank>
  157. <label>응급</label>
  158. <value>1</value>
  159. </msgrank>
  160. <msgrank>
  161. <label>일반</label>
  162. <value>3</value>
  163. </msgrank>
  164. <msgrank>
  165. <label>보험</label>
  166. <value>2</value>
  167. </msgrank>
  168. <sbizabbr>
  169. <label>전체</label>
  170. <value>all</value>
  171. </sbizabbr>
  172. <sbizabbr>
  173. <label>받는이</label>
  174. <value>recvr</value>
  175. </sbizabbr>
  176. <sbizabbr>
  177. <label>메세지 내용</label>
  178. <value>msg</value>
  179. </sbizabbr>
  180. <sbizabbr>
  181. <label>보낸일</label>
  182. <value>sdate</value>
  183. </sbizabbr>
  184. <sbizabbr>
  185. <label>환자명</label>
  186. <value>pnm</value>
  187. </sbizabbr>
  188. <sbizabbr>
  189. <label>환자ID</label>
  190. <value>pid</value>
  191. </sbizabbr>
  192. <calltype>
  193. <label>메시지만</label>
  194. <value>msg</value>
  195. </calltype>
  196. <calltype>
  197. <label>호출만</label>
  198. <value>call</value>
  199. </calltype>
  200. <calltype>
  201. <label>메시지+호출</label>
  202. <value>msgcall</value>
  203. </calltype>
  204. <pmsgsearchitem>
  205. <label>환자명</label>
  206. <value>1</value>
  207. </pmsgsearchitem>
  208. <pmsgsearchitem>
  209. <label>등록번호</label>
  210. <value>2</value>
  211. </pmsgsearchitem>
  212. <umsgsearchitem>
  213. <label>이름</label>
  214. <value>1</value>
  215. </umsgsearchitem>
  216. <umsgsearchitem>
  217. <label>번호</label>
  218. <value>3</value>
  219. </umsgsearchitem>
  220. <param/>
  221. </init>
  222. </root>
  223. </instance>
  224. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  225. <script type="javascript" src="../../../com/commonweb/js/dateHelper.js"/>
  226. <script type="javascript" src="../../../com/commonweb/js/stringHelper.js"/>
  227. <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
  228. <script type="javascript" ev:event="xforms-ready">
  229. <![CDATA[
  230. grd_phonbook.focusColor = "#ff9900";
  231. grd_umsgsearch.focusColor = "#ff9900";
  232. grd_receiver.focusColor ="#ff9900";
  233. if(isPopup() == true){
  234. setParameter("PW","yhn");
  235. //modal("SPMRF02100", 1,10, 10, "SPMRF02100", "/root/send", "/root/temp/condition/getdata");
  236. }
  237. // switch1.selectedindex= 1; // 메시지 쓰기의 초기 탭을 사용자로 설정
  238. model.removeNodeset("/root/main/list/recvrlist");
  239. model.removeNodeSet("/root/main/list/patlist/pmsgpatlist");
  240. model.removeNodeset("/root/main/list/recvmsglist/msglist");
  241. model.removeNodeset("/root/main/list/sendmsglist/msglist");
  242. model.removeNodeset("/root/main/list/trashmsglist/msglist");
  243. model.removeNodeset("/root/main/list/callmsglist/msglist");
  244. model.removeNodeset("/root/main/list/userlist/umsguserlist");
  245. model.removeNodeset("/root/temp/userlist/umsguserlist");
  246. model.setValue("/root/send/srchinfo/tabflag", "1"); //즐겨찾기
  247. model.makeNode("/root/main/list/userlist/umsguserlist");
  248. submit("TRMQR03000");
  249. btn_bookmark.visible = false;
  250. btn_addbook.visible = true;
  251. copyNodesetType("/root/main/list/userlist/umsguserlist", "/root/temp/umsguserlist", "replace");
  252. model.refresh();
  253. model.toggle("case1");
  254. ]]>
  255. </script>
  256. <!-- <submission id="TRZMI00105" ref="/root/send/setting" method="post" mediatype="application/x-www-form-urlencoded" replace="instance" resultref="/root/setting"/> -->
  257. <submission id="TXMQR03000" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/writemsg" replace="instance" resultref="/root/temp"/>
  258. <submission id="TRMQR03000" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/srchinfo" resultref="/root/temp/userlist"/>
  259. <submission id="TXMQR03001" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/srchinfo" resultref="/root/main/list/userlist/umsguserlist"/>
  260. </model>
  261. <script type="javascript">
  262. <![CDATA[
  263. gvDeptTreeLoaded = false; // 사용자 메시지 용 부서트리 데이터 로딩 여부
  264. gvEmrDeptTreeLoaded = false; // 환자 메시지 용 진료부서트리 데이터 로딩 여부
  265. // 확인 여부 값
  266. gv_comboread = "Y"; //읽음
  267. gv_combounread = "N"; //읽지않음
  268. function fDeleteCheckedRows(grd,colname) {
  269. var rows = grd.rows;
  270. var checkcol = grd.colref(colname);
  271. var checkflag = "";
  272. for(var idx=rows-1;idx>= grd.fixedRows;idx--) {
  273. checkflag = grd.valueMatrix(idx,checkcol);
  274. if (checkflag == "true") {
  275. grd.deleterow(idx,false);
  276. }
  277. }
  278. }
  279. // 그리드에 체크된 메시지의 삭제 플래그를 변경하는 submit을 실행한다.
  280. function fSubmitDeleteMsg(grd,delflag) {
  281. var delmsg = "";
  282. if(delflag == "T") {
  283. delmsg = "삭제";
  284. } else if (delflag == "Y") {
  285. delmsg = "완전삭제";
  286. } else if (delflag = "N") {
  287. delmsg = "복원";
  288. } else {
  289. alert("잘못된 삭제 플래그입니다.");
  290. return;
  291. }
  292. // 삭제할 메시지 노드 선택
  293. var nodeset = grd.nodeset;
  294. var selectedNodeList = instance1.selectNodes(nodeset+"[check='true']/msgno");
  295. var length = selectedNodeList.length;
  296. if (length == 0) {
  297. messageBox(delmsg+"할 메세지를 선택하지", "E007");
  298. return;
  299. }
  300. // 삭제할 메시지 번호를 모은다.
  301. var selectedMsgNo = "";
  302. for(var idx=0;idx<length;idx++) {
  303. selectedMsgNo = selectedMsgNo + selectedNodeList.item(idx).text + "|";
  304. }
  305. // instance에 설정하고 submit 한다.
  306. model.setValue("/root/send/delmsg/delflag",delflag); // 삭제 플래그
  307. model.setValue("/root/send/delmsg/msgs",selectedMsgNo);
  308. if (submit("TXZMI00201") ) {
  309. // 그리드에서 체크된 row 를 삭제한다.
  310. fDeleteCheckedRows(grd,"check");
  311. grd.refresh();
  312. }
  313. }
  314. // 근무부서 트리 생성(최초 한번만)
  315. function fLoadDeptTree() {
  316. if (!gvDeptTreeLoaded) {
  317. if (copyFromCache("SPZMI00101_depttree","/root/main/tree/dept")) {
  318. model.refresh();
  319. gvDeptTreeLoaded = true;
  320. } else {
  321. if (submit("TRZMI00109")) {
  322. storeIntoCache("SPZMI00101_depttree","/root/main/tree/dept");
  323. gvDeptTreeLoaded = true;
  324. }
  325. }
  326. }
  327. }
  328. // 주어진 pid 값으로 환자기준메시지 전송 탬의 조회 조건을 설정하고
  329. // 설정이 되었으면 true를 설정되지 않았으면 false를 반환한다.
  330. function fSetPatientID(pid) {
  331. // pid를 지정하지 않았으면 환자상단정보의 환자번호로 세팅한다.
  332. if (pid == null || pid == "" ) {
  333. pid = getPatientId();
  334. }
  335. if (pid != "" && pid != null ) {
  336. // 환자 선택됨
  337. model.setValue("/root/send/writemsg/pmsg/stype","2"); // 환자번호로 조회
  338. model.setValue("/root/send/writemsg/pmsg/svalue",pid);
  339. return true;
  340. } else {
  341. return false;
  342. }
  343. }
  344. function fLoadBookmark() {
  345. submit("TRZMI00114");
  346. }
  347. // 진료 부서/병동 트리 생성(최초 한번만)
  348. function fLoadEmrDeptTree() {
  349. if (!gvEmrDeptTreeLoaded) {
  350. if (copyFromCache("SPZMI00101_emrdepttree","/root/main/tree/emrdept")) {
  351. model.refresh();
  352. gvEmrDeptTreeLoaded = true;
  353. } else {
  354. if (submit("TRZMI00110")) {
  355. storeIntoCache("SPZMI00101_emrdepttree","/root/main/tree/emrdept");
  356. gvEmrDeptTreeLoaded = true;
  357. }
  358. }
  359. }
  360. }
  361. // 받은 메시지 함 조회
  362. function fGetReceivedMessages() {
  363. initGridStyle("grd_receive");
  364. submit("TRZMI00101");
  365. setRowStyle("grd_receive" , "2" , gv_combounread, "recvcnfmyn");
  366. }
  367. // 보낸 메시지 함 조회
  368. function fGetSentMessages() {
  369. initGridStyle("grd_sent");
  370. submit("TRZMI00102");
  371. setRowStyle("grd_sent" , "1" , gv_combounread , "recvcnfmyn" );
  372. }
  373. // 사용자 목록 조회
  374. function fGetUserList() {
  375. var sdata = model.getValue("/root/send/writemsg/umsg/inputvalue");
  376. if (sdata == "") {
  377. return;
  378. }
  379. model.setValue("/root/send/writemsg/umsg/value",
  380. model.getValue("/root/send/writemsg/umsg/inputvalue"));
  381. model.setValue("/root/send/writemsg/umsg/key",
  382. model.getValue("/root/send/writemsg/umsg/stype"));
  383. submit("TRZMI00111");
  384. }
  385. // 환자 목록 조회
  386. function fGetPatientList() {
  387. var pid = model.getValue("/root/send/writemsg/pmsg/svalue");
  388. if (pid == "") {
  389. return;
  390. }
  391. model.setValue("/root/send/writemsg/pmsg/key",
  392. model.getValue("/root/send/writemsg/pmsg/stype"));
  393. submit("TRZMI00112");
  394. fSetNurseCellComboNodeSet();
  395. }
  396. function fGetTrashList() {
  397. submit("TRZMI00107");
  398. }
  399. function fGetCallList() {
  400. model.setValue("/root/send/callmsg/fstrgstrid", getUserId());
  401. model.setValue("/root/send/callmsg/bizabbr","ZMI");
  402. model.setValue("/root/send/callmsg/msgstate","-");
  403. model.setValue("/root/send/callmsg/recvrtelno", "");
  404. model.setValue("/root/send/callmsg/recvrnm", "");
  405. model.setValue("/root/send/callmsg/fstrgstdt", "");
  406. var stype = model.getValue("/root/send/callmsg/stype");
  407. if (stype == "recvr") {
  408. model.setValue("/root/send/callmsg/recvrnm",
  409. model.getValue("/root/send/callmsg/value"));
  410. } else if (stype == "tel") {
  411. model.setValue("/root/send/callmsg/recvrtelno",
  412. model.getValue("/root/send/callmsg/value"));
  413. } else if (stype == "cdate") {
  414. model.setValue("/root/send/callmsg/fstrgstdt",
  415. model.getValue("/root/send/callmsg/date"));
  416. }
  417. submit("TRZMI00108");
  418. }
  419. // 환자 정보 목록의 담당 간호사 콤보의 nodeset을 설정한다.
  420. function fSetNurseCellComboNodeSet() {
  421. var pid = "";
  422. var pidnursepath = "";
  423. var pid_col = 0;
  424. var nurse_col = 8;
  425. for(var i=grd_pmsgsearch.fixedRows;i<grd_pmsgsearch.rows;i++) {
  426. pid = grd_pmsgsearch.valueMatrix(i,pid_col);
  427. pidnursepath = "/root/main/list/patlist/pid"+pid;
  428. grd_pmsgsearch.cellComboNodeset(i,nurse_col) = pidnursepath;
  429. }
  430. }
  431. function fSetRowValue(node, destinationelement, sourceelement, row) {
  432. model.setValue(node + "[" + row + "]/" + destinationelement, sourceelement);
  433. }
  434. // 받는이 목록에 하나의 항목을 추가한다.
  435. function fAddReceiver(usernm, userid, mpphonno, deptcd, pid) {
  436. grd_receiver.addrow(false);
  437. var recv_row = grd_receiver.rows-1;
  438. model.setValue("/root/main/list/recvrlist/recvr["+recv_row+"]/usernm",usernm);
  439. model.setValue("/root/main/list/recvrlist/recvr["+recv_row+"]/userid",userid);
  440. model.setValue("/root/main/list/recvrlist/recvr["+recv_row+"]/mpphonno",mpphonno);
  441. model.setValue("/root/main/list/recvrlist/recvr["+recv_row+"]/deptcd",deptcd);
  442. if (pid != null) {
  443. model.setValue("/root/main/list/recvrlist/recvr["+recv_row+"]/pid",pid);
  444. }
  445. }
  446. // 받은 메시지 함에서 답장 버튼 눌렀을때 메시지 작성 탭으로 이동
  447. function fReplyMessage() {
  448. // 선택한 메시지 있는 지 확인
  449. var cur_row = grd_receive.row;
  450. //alert(cur_row);
  451. if (cur_row < grd_receive.fixedRows) {
  452. alert("답장할 메시지를 선택하세요.");
  453. return;
  454. }
  455. // 답장할 정보 생성
  456. model.removeNodeset("/root/main/list/recvrlist");
  457. model.refresh();
  458. grd_receiver.addrow(false);
  459. var recv_row = grd_receiver.rows-1;
  460. //alert(recv_row);
  461. model.setValue("/root/main/list/recvrlist/recvr["+recv_row+"]/usernm",
  462. model.getValue("/root/main/recvmsg/trsmrnm"));
  463. model.setValue("/root/main/list/recvrlist/recvr["+recv_row+"]/userid",
  464. model.getValue("/root/main/recvmsg/trsmrid"));
  465. model.setValue("/root/main/list/recvrlist/recvr["+recv_row+"]/mpphonno",
  466. model.getValue("/root/main/recvmsg/mpphonno"));
  467. model.setValue("/root/main/list/recvrlist/recvr["+recv_row+"]/deptcd",
  468. model.getValue("/root/main/recvmsg/deptcd"));
  469. model.setValue("/root/main/list/recvrlist/recvr["+recv_row+"]/pid",
  470. model.getValue("/root/main/recvmsg/pid"));
  471. model.setValue("/root/send/writemsg/send/msgcnts",
  472. model.getValue("/root/main/recvmsg/msgcnts"));
  473. model.refresh();
  474. // 메시지 쓰기 텝으로 토글
  475. btn_msgwrite.selected = true;
  476. btn_msgwrite.dispatch("DOMActivate");
  477. model.setFocus("tar_msgcnts");
  478. /*
  479. model.toggle("writemsg");
  480. model.setFocus("tar_msgcnts");
  481. btn_msgsend.visible = true;
  482. btn_close.visible = true;
  483. btn_writeinit.visible = false;
  484. */
  485. }
  486. // 휴지통 메시지 상세 보기
  487. function fShowTrashMsg() {
  488. var cur_row = grd_trashlist.row;
  489. if ( cur_row > 0 ) {
  490. model.copyNode("/root/main/trashmsg","/root/main/list/trashmsglist/msglist["+cur_row+"]");
  491. model.refresh();
  492. }
  493. }
  494. // 호출내역 메시지 상세 보기
  495. function fShowCallMsg() {
  496. var cur_row = grd_calllist.row;
  497. if ( cur_row > 0 ) {
  498. model.copyNode("/root/main/callmsg","/root/main/list/callmsglist/msglist["+cur_row+"]");
  499. model.refresh();
  500. }
  501. }
  502. // 받은 메시지 보기
  503. function fShowReceiveMsg() {
  504. var cur_row = grd_receive.row;
  505. if ( cur_row > 0 ) {
  506. model.copyNode("/root/main/recvmsg","/root/main/list/recvmsglist/msglist["+cur_row+"]");
  507. model.refresh();
  508. // 확인 여부를 서버에 Y 로 저장한다.
  509. var confirmyn = model.getValue("/root/main/recvmsg/recvcnfmyn");
  510. if (confirmyn == "N") {
  511. submit("TXZMI00205");
  512. }
  513. /**
  514. modal("SPZMI00201", "", "400", "400" ,"SPZMI00201", "/root/main/item", "/root/main");
  515. if (model.getValue("/root/temp") != null && model.getValue("/root/temp") != "") {
  516. btn_msgwrite.selected = true;
  517. }
  518. **/
  519. }
  520. }
  521. // 보낸 메시지 보기
  522. function fShowSendMsg() {
  523. var cur_row = grd_sent.row;
  524. if ( cur_row > 0 ) {
  525. model.copyNode("/root/main/sentmsg","/root/main/list/sendmsglist/msglist["+cur_row+"]");
  526. model.refresh();
  527. /**
  528. modal("SPZMI00201", "", "400", "400" ,"SPZMI00201", "/root/main/item", "/root/main");
  529. if (model.getValue("/root/temp") != null && model.getValue("/root/temp") != "") {
  530. btn_msgwrite.selected = true;
  531. }
  532. **/
  533. }
  534. }
  535. /*
  536. * 보낸 메시지 popup으로 메시지 보기
  537. */
  538. function sFetchFromGrid() {
  539. var cur_row = grd_sent.row;
  540. if ( cur_row > 0 ) {
  541. model.copyNode("/root/main/item","/root/main/list_send/sentlist["+cur_row+"]");
  542. model.refresh();
  543. modal("SPZMI00401", "", "400", "400" ,"SPZMI00401", "/root/main/item", "/root/main");
  544. }
  545. }
  546. function fReconnectMsgServer() {
  547. var viewerObj = getViewer("sysMessage");
  548. if (viewerObj != null && viewerObj.window.javascript.fConnectMsgsvr != undefined) {
  549. viewerObj.window.javascript.fConnectMsgsvr();
  550. }
  551. }
  552. // 환경설정값 가져오기/저장하기
  553. function fGetInsuFlagConfig() {
  554. return fGetUserConfig("msginsuflag");
  555. }
  556. function fGetPopupFlagConfig() {
  557. return fGetUserConfig("msgpopupflag");
  558. }
  559. function fGetUserConfig(cfgname) {
  560. var viewerObj = getViewer("sysMessage");
  561. if (viewerObj != null && viewerObj.window.javascript.fGetUserConfig != undefined) {
  562. return viewerObj.window.javascript.fGetUserConfig(cfgname);
  563. } else {
  564. return "";
  565. }
  566. }
  567. function fSetInsuFlagConfig(value) {
  568. fSetUserConfig("msginsuflag",value);
  569. }
  570. function fSetPopupFlagConfig(value) {
  571. fSetUserConfig("msgpopupflag",value);
  572. }
  573. function fSetUserConfig(cfgname,cfgvalue) {
  574. var viewerObj = getViewer("sysMessage");
  575. if (viewerObj != null && viewerObj.window.javascript.fSetUserConfig != undefined) {
  576. viewerObj.window.javascript.fSetUserConfig(cfgname,cfgvalue);
  577. }
  578. }
  579. ]]>
  580. </script>
  581. </xhtml:head>
  582. <xhtml:body pagewidth="720" pageheight="560" guideline="1,713;2,526;" style="vertical-align:middle; ">
  583. <group id="group6" style="left:5px; top:15px; width:710px; height:470px; border-color:#33cccc; border-width:1px; border-style:solid; ">
  584. <select1 id="radio1" ref="/root/send/writemsg/umsg/stype" navindex="1" appearance="full" cols="3" overflow="visible" style="left:10px; top:16px; width:85px; height:20px; border-style:none; ">
  585. <choices>
  586. <itemset nodeset="/root/init/umsgsearchitem">
  587. <label ref="label"/>
  588. <value ref="value"/>
  589. </itemset>
  590. </choices>
  591. <script type="javascript" ev:event="onclick">
  592. <![CDATA[
  593. if (rdo_umsgsearch.value == "3") { // 최근 사용자
  594. ipt_umsgsearch.visible= false;
  595. } else { // 그 외
  596. ipt_umsgsearch.visible=true;
  597. }
  598. ]]>
  599. </script>
  600. </select1>
  601. <shape id="roundrect10" appearance="roundrect" style="left:5px; top:7px; width:345px; height:35px; "/>
  602. <line id="line6" class="line_4" style="x1:280px; y1:12px; x2:280px; y2:37px; "/>
  603. <group id="group7" style="left:380px; top:7px; width:315px; height:310px; ">
  604. <shape id="roundrect11" appearance="roundrect" style="left:0px; top:0px; width:315px; height:310px; "/>
  605. <caption id="caption13" class="search_name" style="left:6px; top:280px; width:99px; height:17px; ">발신 번호 :</caption>
  606. <input id="input4" ref="/root/send/writemsg/send/calltelno" navindex="4" visibility="visible" format="99999999999" style="left:100px; top:280px; width:130px; height:19px; "/>
  607. <button id="button8" class="btn2_letter2" style="left:264px; top:32px; width:42px; height:19px; ">
  608. <caption>삭제</caption>
  609. <script type="javascript" ev:event="DOMActivate">
  610. <![CDATA[
  611. // var cur_row = grd_receiver.row;
  612. // grd_receiver.deleteItem(cur_row);
  613. deleteSelectedRows(grd_receiver, true);
  614. ]]>
  615. </script>
  616. </button>
  617. <input id="input5" ref="/root/main/recvnum" navindex="2" format="99999999999" style="left:202px; top:10px; width:110px; height:19px; "/>
  618. <caption id="caption20" class="search_name" style="left:137px; top:10px; width:64px; height:17px; ">번호 :</caption>
  619. <button id="button10" class="btn2_letter2" navindex="3" style="left:220px; top:32px; width:42px; height:19px; ">
  620. <caption>추가</caption>
  621. <script type="javascript" ev:event="DOMActivate">
  622. <![CDATA[
  623. grd_receiver.addRow();
  624. var curRow = grd_receiver.row;
  625. model.setValue("/root/main/list/recvrlist/recvr["+ curRow +"]/mpphonno", model.getValue("/root/main/recvnum"));
  626. model.setValue("/root/main/list/recvrlist/recvr["+ curRow +"]/usernm", model.getValue("/root/main/recvnm"));
  627. model.setValue("/root/main/recvnum", "");
  628. model.setValue("/root/main/recvnm", "");
  629. model.refresh();
  630. grd_receiver.refresh();
  631. ]]>
  632. </script>
  633. </button>
  634. <caption id="caption21" class="search_name" style="left:6px; top:10px; width:64px; height:17px; ">이름 :</caption>
  635. <input id="input6" ref="/root/main/recvnm" navindex="1" style="left:71px; top:10px; width:60px; height:19px; "/>
  636. <datagrid id="grd_receiver" nodeset="/root/main/list/recvrlist/recvr" visibility="visible" caption="이름^호출 번호" colsep="^" colwidth="72, 187" mergecellsfixedrows="bycolrec" rowheader="select" rowsep="|" selectionmode="byrow" style="left:10px; top:55px; width:295px; height:215px; ">
  637. <col ref="usernm"/>
  638. <col ref="mpphonno"/>
  639. </datagrid>
  640. <button id="btn_addbook" class="btn2_letter6" style="left:13px; top:32px; width:86px; height:19px; ">
  641. <caption>즐겨찾기추가</caption>
  642. <script type="javascript" ev:event="DOMActivate">
  643. <![CDATA[
  644. model.refresh();
  645. var phonno = model.getValue("/root/main/recvnum");
  646. var usernm = model.getValue("/root/main/recvnm");
  647. if(phonno == "" || phonno == null){
  648. alert("번호는 필수입력입니다.");
  649. return;
  650. }
  651. if(usernm == "" || usernm == null){
  652. alert("이름은 필수입력입니다.");
  653. return;
  654. }
  655. var maxVal = 1;
  656. if(grd_umsgsearch.rows- 1 >= 1){
  657. var tempNodeInfo = instance1.selectSingleNode("/root/main/list/userlist/umsguserlist");
  658. var grdLeng = tempNodeInfo.length;
  659. for(var i = 1; i<= grdLeng; i++){
  660. var targetVal = model.getValue("/root/main/list/userlist/umsguserlist["+ i +"]/seq");
  661. maxVal = Math.max(maxVal, targetVal);
  662. maxVal++;
  663. }
  664. }
  665. grd_umsgsearch.addRow(); // 입력할 행 추가.
  666. var cur_row = grd_umsgsearch.row;
  667. model.setValue("/root/main/list/userlist/umsguserlist["+cur_row+"]/seq" , maxVal);
  668. model.setValue("/root/main/list/userlist/umsguserlist["+cur_row+"]/mpphonno" , phonno);
  669. model.setValue("/root/main/list/userlist/umsguserlist["+cur_row+"]/usernm" , usernm);
  670. grd_umsgsearch.refresh();
  671. ]]>
  672. </script>
  673. </button>
  674. </group>
  675. <caption id="caption22" style="left:380px; top:330px; width:310px; height:20px; text-align:right; ">메시지는 최대 40자까지 입력가능합니다.</caption>
  676. <button id="button25" style="left:352px; top:190px; width:30px; height:20px; background-image:../../../com/commonweb/images/btn_send_right.gif; ">
  677. <caption/>
  678. <script type="javascript" ev:event="DOMActivate">
  679. <![CDATA[
  680. var tabflag = model.getValue("/root/send/srchinfo/tabflag");
  681. var groupNM = "";
  682. var grdXpath = "";
  683. if(tabflag == "1"){
  684. groupNM = "grd_umsgsearch";
  685. grdXpath = "userlist";
  686. }
  687. else{
  688. groupNM = "grd_phonbook";
  689. grdXpath = "mainlist";
  690. }
  691. var Obj = document.all(groupNM);
  692. var selrowcnt = Obj.selectedRows;
  693. for(var i = 0 ; i < selrowcnt ; i++){
  694. var selRow = Obj.selectedRow(i);
  695. var mpphonno = model.getValue("/root/main/list/"+grdXpath+"/umsguserlist["+selRow+"]/mpphonno");
  696. var usernm = model.getValue("/root/main/list/"+grdXpath+"/umsguserlist["+selRow+"]/usernm");
  697. if(selRow != null || selRow != ""){
  698. grd_receiver.addRow();
  699. var curRow = grd_receiver.row;
  700. model.setValue("/root/main/list/recvrlist/recvr["+ curRow +"]/mpphonno", mpphonno);
  701. model.setValue("/root/main/list/recvrlist/recvr["+ curRow +"]/usernm", usernm);
  702. }
  703. }
  704. ]]>
  705. </script>
  706. </button>
  707. <textarea id="tar_msgcnts" ref="/root/send/writemsg/send/msgcnts" navindex="5" maxbyte="80" style="left:380px; top:350px; width:315px; height:114px; vertical-align:top; "/>
  708. <switch id="switch1" style="left:5px; top:65px; width:345px; height:395px; ">
  709. <case id="case1" selected="true" style="left:0px; top:0px; width:348px; height:393px; ">
  710. <datagrid id="grd_umsgsearch" nodeset="/root/main/list/userlist/umsguserlist" caption="구분1^구분1^구분2^이름^휴대폰^caption3" colsep="^" colwidth="0, 50, 50, 70, 134, 0" explorerbar="sort" mergecellsfixedrows="bycolrec" rowheader="update" rowsep="|" style="left:2px; top:2px; width:340px; height:388px; ">
  711. <col ref="seq"/>
  712. <col ref="grp1" type="input"/>
  713. <col ref="grp2" type="input"/>
  714. <col ref="usernm"/>
  715. <col ref="mpphonno"/>
  716. <col ref="dutuserid"/>
  717. <script type="javascript" ev:event="onaftersort">
  718. <![CDATA[
  719. grd_umsgsearch.gridToInstance();
  720. ]]>
  721. </script>
  722. </datagrid>
  723. </case>
  724. <case id="case2">
  725. <datagrid id="grd_phonbook" nodeset="/root/main/list/mainlist/umsguserlist" caption="caption1^caption2^caption3^이름^휴대폰번호^caption6" colsep="^" colwidth="0, 0, 0, 100, 201, 0" explorerbar="sort" focuscolor="#ff9900" mergecellsfixedrows="bycolrec" rowheader="seq" rowsep="|" style="left:0px; top:2px; width:340px; height:389px; ">
  726. <col ref="seq"/>
  727. <col ref="grp1"/>
  728. <col ref="grp2"/>
  729. <col ref="usernm" type="input"/>
  730. <col ref="mpphonno" type="input" format="99999999999"/>
  731. <col ref="dutuserid"/>
  732. <script type="javascript" ev:event="onaftersort">
  733. <![CDATA[
  734. grd_phonbook.gridToInstance();
  735. ]]>
  736. </script>
  737. </datagrid>
  738. </case>
  739. </switch>
  740. <button id="btn_cond" class="btn_sw" visibility="visible" group="tab" selected="true" style="left:7px; top:44px; width:65px; height:22px; ">
  741. <caption>즐겨찾기</caption>
  742. <script type="javascript" ev:event="DOMActivate">
  743. <![CDATA[
  744. model.removeNodeset("/root/main/list/userlist/umsguserlist");
  745. model.removeNodeset("/root/temp/umsguserlist");
  746. model.setValue("/root/send/srchinfo/tabflag", "1"); //즐겨찾기
  747. model.makeNode("/root/main/list/userlist/umsguserlist")
  748. submit("TRMQR03000");
  749. btn_bookmark.visible = false;
  750. btn_addbook.visible = true;
  751. btn_del.visible = true;
  752. btn_save.visible =true;
  753. copyNodesetType("/root/main/list/userlist/umsguserlist", "/root/temp/umsguserlist", "replace");
  754. model.refresh();
  755. model.toggle("case1");
  756. ]]>
  757. </script>
  758. </button>
  759. <button id="btn_rlst" class="btn_sw" visibility="visible" group="tab" selected="false" style="left:72px; top:44px; width:50px; height:22px; ">
  760. <caption>번호부</caption>
  761. <script type="javascript" ev:event="DOMActivate">
  762. <![CDATA[
  763. model.removeNodeset("/root/main/list/mainlist/umsguserlist");
  764. model.removeNodeset("/root/temp/umsguserlist");
  765. model.setValue("/root/send/srchinfo/tabflag", "2"); //즐겨찾기
  766. model.makeNode("/root/main/list/mainlist/umsguserlist")
  767. submit("TRMQR03000");
  768. btn_bookmark.visible = true;
  769. btn_addbook.visible = false;
  770. btn_save.visible = false; //강지훈 : 추가기능
  771. btn_del.visible = false;//강지훈 : 추가기능
  772. copyNodesetType("/root/main/list/mainlist/umsguserlist", "/root/temp/umsguserlist", "replace");
  773. model.refresh();
  774. model.toggle("case2");
  775. ]]>
  776. </script>
  777. </button>
  778. <button id="btn_bookmark" class="btn2_letter6" style="left:153px; top:45px; width:86px; height:19px; ">
  779. <caption>즐겨찾기추가</caption>
  780. <script type="javascript" ev:event="DOMActivate">
  781. <![CDATA[
  782. var maxVal = 1;
  783. if(grd_umsgsearch.rows- 1 >= 1){
  784. var tempNodeInfo = instance1.selectSingleNode("/root/main/list/userlist/umsguserlist");
  785. var grdLeng = tempNodeInfo.length;
  786. for(var i = 1; i<= grdLeng; i++){
  787. var targetVal = model.getValue("/root/main/list/userlist/umsguserlist["+ i +"]/seq");
  788. //alert("targetVal = " + targetVal + ", maxVal = " + maxVal);
  789. maxVal = Math.max(maxVal, targetVal);
  790. maxVal++;
  791. }
  792. }
  793. var selrowcnt = grd_phonbook.selectedRows;
  794. for(var i = 0 ; i < selrowcnt ; i++){
  795. var selRow = grd_phonbook.selectedRow(i);
  796. var mpphonno = model.getValue("/root/main/list/mainlist/umsguserlist["+selRow+"]/mpphonno");
  797. var usernm = model.getValue("/root/main/list/mainlist/umsguserlist["+selRow+"]/usernm");
  798. if(selRow != null || selRow != ""){
  799. grd_umsgsearch.addRow();
  800. var curRow = grd_umsgsearch.row;
  801. model.setValue("/root/main/list/userlist/umsguserlist["+curRow+"]/seq" , maxVal);
  802. model.setValue("/root/main/list/userlist/umsguserlist["+curRow+"]/mpphonno" , mpphonno);
  803. model.setValue("/root/main/list/userlist/umsguserlist["+curRow+"]/usernm" , usernm);
  804. maxVal++;
  805. }
  806. }
  807. model.setValue("/root/send/srchinfo/tabflag", "1"); //즐겨찾기}
  808. model.toggle("case1");
  809. btn_bookmark.visible = false;
  810. btn_addbook.visible = true;
  811. btn_cond.selected = true;
  812. btn_bookmark.visible = false;
  813. btn_addbook.visible = true;
  814. btn_del.visible = true;
  815. btn_save.visible =true;
  816. model.refresh();
  817. ]]>
  818. </script>
  819. </button>
  820. <button id="btn_save" class="btn4_letter2" visibility="visible" style="left:285px; top:44px; width:56px; height:22px; ">
  821. <caption>저장</caption>
  822. <script type="javascript" ev:event="DOMActivate">
  823. <![CDATA[
  824. var tabflag = model.getValue("/root/send/srchinfo/tabflag");
  825. // if(tabflag == "1"){
  826. // model.setValue("/root/send/srchinfo/smslist", getGridUpdateData(grd_umsgsearch));
  827. // model.removeNodeset("/root/main/list/userlist/umsguserlist");
  828. // }
  829. // else if((tabflag == "2"){
  830. // model.setValue("/root/send/srchinfo/smslist", getGridUpdateData(grd_umsgsearch));
  831. // model.removeNodeset("/root/main/list/userlist/umsguserlist");
  832. // }
  833. model.setValue("/root/send/srchinfo/smslist", getGridUpdateData(grd_umsgsearch));
  834. model.removeNodeset("/root/main/list/userlist/umsguserlist");
  835. submit("TXMQR03001");
  836. model.refresh();
  837. ]]>
  838. </script>
  839. </button>
  840. <button id="btn_del" class="btn2_letter2" style="left:241px; top:45px; width:42px; height:19px; ">
  841. <caption>삭제</caption>
  842. <script type="javascript" ev:event="DOMActivate">
  843. <![CDATA[
  844. var tabflag = model.getValue("/root/send/srchinfo/tabflag");
  845. if(tabflag == "1"){
  846. deleteSelectedRows(grd_umsgsearch, true);
  847. }
  848. else if(tabflag == "2"){
  849. deleteSelectedRows(grd_phonbook, true);
  850. }
  851. ]]>
  852. </script>
  853. </button>
  854. <select1 id="rdo_stat" ref="/root/send/writemsg/umsg/stype" appearance="full" cols="3" overflow="visible" style="left:10px; top:16px; width:85px; height:20px; border-style:none; ">
  855. <choices>
  856. <itemset nodeset="/root/init/umsgsearchitem">
  857. <label ref="label"/>
  858. <value ref="value"/>
  859. </itemset>
  860. </choices>
  861. </select1>
  862. <button id="btn_srch" class="btn1_letter2" style="left:286px; top:14px; width:56px; height:22px; ">
  863. <caption>조회</caption>
  864. <script type="javascript" ev:event="DOMActivate">
  865. <![CDATA[
  866. var tabflag = model.getValue("/root/send/srchinfo/tabflag");
  867. var groupNM = "";
  868. if(tabflag == "1"){
  869. groupNM = "grd_umsgsearch";
  870. }
  871. else{
  872. groupNM = "grd_phonbook";
  873. }
  874. var Obj = document.all(groupNM);
  875. var srchcond = model.getValue("/root/send/writemsg/umsg/inputvalue");
  876. var stat = rdo_stat.value;
  877. if(stat == "1"){
  878. var colref = Obj.colRef("usernm");
  879. }
  880. else if(stat == "2"){
  881. var colref = Obj.colRef("mpphonno");
  882. }
  883. var selItem = Obj.findRow(srchcond, 1, colref);
  884. Obj.row = selItem;
  885. ]]>
  886. </script>
  887. </button>
  888. <input id="ipt_srch" ref="/root/send/writemsg/umsg/inputvalue" style="left:205px; top:15px; width:70px; height:19px; ">
  889. <script type="javascript" ev:event="onkeypress">
  890. <![CDATA[
  891. if (event.keyCode == "13") { // 엔터키인경우만
  892. model.setFocus("btn_srch");
  893. btn_srch.dispatch("DOMActivate");
  894. model.setFocus("ipt_srch");
  895. }
  896. ]]>
  897. </script>
  898. </input>
  899. </group>
  900. <caption id="caption6" class="tit_2" style="left:0px; top:0px; width:143px; height:14px; vertical-align:middle; ">HitOn 폰 메세지</caption>
  901. <button id="btn_close" class="btn4_letter2" disabled="false" style="left:660px; top:490px; width:56px; height:22px; ">
  902. <caption>닫기</caption>
  903. <script type="javascript" ev:event="DOMActivate">
  904. <![CDATA[
  905. model.close();
  906. ]]>
  907. </script>
  908. </button>
  909. <button id="btn_msgsend" class="btn4_letter7" navindex="6" visibility="visible" style="left:535px; top:490px; width:116px; height:22px; ">
  910. <caption>메세지 보내기</caption>
  911. <script type="javascript" ev:event="DOMActivate">
  912. <![CDATA[
  913. // 필수 입력 확인
  914. if (tar_msgcnts.value == "" ) {
  915. messageBox("메시지는", "I003");
  916. return;
  917. }
  918. if (grd_receiver.rows <= 1) {
  919. messageBox("받는이는", "I003");
  920. return;
  921. }
  922. // 메시지 크기 확인
  923. //var msglen = fGetMessageByteLen(model.getValue("/root/send/writemsg/send/msgcnts"));
  924. var msgcnts = new String(model.getValue("/root/send/writemsg/send/msgcnts"));
  925. var msglen = msgcnts.getByteLength();
  926. var calltype = model.getValue("/root/send/writemsg/send/calltype");
  927. if (calltype == "msg" && msglen > 200) {
  928. messageBox("한글 100글자를 초과 입력할 수 없습니다.\n현재 "+msglen,"E");
  929. return;
  930. } else if (calltype != "msg" && msglen > 80) {
  931. messageBox("한글 40글자를 초과 입력할 수 없습니다.\n현재 "+msglen,"E");
  932. return;
  933. }
  934. // 받는이 목록 인코딩
  935. var recvrs = grd_receiver.getUpdateData();
  936. model.makeValue("/root/send/writemsg/send/recvrid",recvrs);
  937. if (submit("TXMQR03000") ) {
  938. messageBox("메시지 전송이 ", "I002");
  939. model.removeNodeset("/root/main/list/recvrlist");
  940. }
  941. model.refresh();
  942. ]]>
  943. </script>
  944. </button>
  945. <button id="btn_writeinit" class="btn4_letter3" visibility="hidden" style="left:460px; top:490px; width:68px; height:22px; ">
  946. <caption>초기화</caption>
  947. <script type="javascript" ev:event="DOMActivate">
  948. <![CDATA[
  949. model.setValue("/root/send/writemsg/msgcnts", "");
  950. model.setValue("/root/send/writemsg/recvrid", "");
  951. model.refresh();
  952. ]]>
  953. </script>
  954. </button>
  955. </xhtml:body>
  956. </xhtml:html>