SPCCN00100_SMS전송.xrw 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817
  1. <?xml version="1.0" encoding="EUC-KR"?>
  2. <!--
  3. * Name : SPCCN00100_SMS전송
  4. * Summary : SMS전송
  5. * Programmer : 최정환
  6. * Date Written : 2007.07.02
  7. * History : 2008.06.16 차재훈
  8. * Remark :
  9. -->
  10. <?xml-stylesheet type="text/css" href="../../../com/commonweb/css/common.css" ?>
  11. <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">
  12. <xhtml:head>
  13. <xhtml:title>SMS전송</xhtml:title>
  14. <model id="model1">
  15. <instance id="instance1">
  16. <root xmlns="">
  17. <main>
  18. <msgattr>
  19. <trsmdd/>
  20. <bizflag/>
  21. <bizdetlcd/>
  22. <rsrvdd/>
  23. <rsrvtm/>
  24. <replytelno/>
  25. <msgcnts/>
  26. <rsrvyn>N</rsrvyn>
  27. <recvrpid/>
  28. <urgntflag/>
  29. <delivedd/>
  30. <delivereqtm/>
  31. <cmpncd/>
  32. <cmpnnm/>
  33. <orddrid/>
  34. <prcpcd/>
  35. <msglrgcd/>
  36. <msgmdlcd/>
  37. <msgsmlcd/>
  38. <recvrlist/>
  39. <aprvyn>1</aprvyn>
  40. <aprvreqsmmcnts/>
  41. <sanctflag>2</sanctflag>
  42. </msgattr>
  43. <msgsmllist>
  44. <msgsmlcd/>
  45. <smstrsmcntcno/>
  46. <msgcnts/>
  47. </msgsmllist>
  48. <recvrinfo>
  49. <recvrlist>
  50. <chk>N</chk>
  51. <recvrnm/>
  52. <recvrtelno/>
  53. </recvrlist>
  54. </recvrinfo>
  55. </main>
  56. <send>
  57. <info>
  58. <msglrgcd/>
  59. <msgmdlcd/>
  60. <chnlflag/>
  61. </info>
  62. <data>
  63. </data>
  64. </send>
  65. <init>
  66. <chnllrglist>
  67. <chnllrggrup>
  68. <msglrgnm/>
  69. <msglrgcd/>
  70. </chnllrggrup>
  71. </chnllrglist>
  72. <chnlmdllist>
  73. <chnlmdlgrup>
  74. <msgmdlnm/>
  75. <msgmdlcd/>
  76. <msglrgcd/>
  77. </chnlmdlgrup>
  78. </chnlmdllist>
  79. </init>
  80. <hidden>
  81. <messagecnt/>
  82. <messagealtyn>N</messagealtyn>
  83. </hidden>
  84. <fwd>
  85. <searchtype/>
  86. <searchname/>
  87. <type>sms</type>
  88. </fwd>
  89. </root>
  90. </instance>
  91. <submission id="TRCNS00201" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/info" resultref="/root/init/chnllrglist/chnllrggrup"/>
  92. <submission id="TRCNS00202" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/info" replace="instance" resultref="/root/init/chnlmdllist/chnlmdlgrup"/>
  93. <submission id="TRCCN00101" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/info" replace="instance" resultref="/root/main/msgsmllist"/>
  94. <submission id="TXCCN00101" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/main/msgattr"/>
  95. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  96. <script type="javascript" src="../../../com/commonweb/js/stringHelper.js"/>
  97. <script type="javascript" src="../../../com/commonweb/js/dateHelper.js"/>
  98. <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
  99. <script type="javascript" ev:event="xforms-ready">
  100. <![CDATA[
  101. //cmb_searchtype 선택
  102. cmb_searchtype.select(0);
  103. //fInitialize();
  104. // SMS메시지 그리드의 col을 초기화 시켜준다.
  105. model.removenodeset("/root/main/msgsmllist"); // SMS 템플릿 리스트
  106. // 메시지 분류코드 설정 (SMS : S)
  107. model.setValue("/root/send/info/chnlflag", "S");
  108. // 메시지 대그룹을 가져온다
  109. submit("TRCNS00201");
  110. // 전송일자를 입력해준다.
  111. model.setValue("/root/main/msgattr/trsmdd",getCurrentDate());
  112. // 예약일자와 예약시간 비활성
  113. ipt_trsmreqdt_date.disabled = true;
  114. ipt_trsmreqdt_time.disabled = true;
  115. ]]>
  116. </script>
  117. <script type="javascript">
  118. <![CDATA[
  119. // 입력한글자수 체크
  120. function fGetCheckMsgCnts() {
  121. var strlen = 0;
  122. var str = tar_contents.currentText
  123. for (var i=0; i<str.length; i++) {
  124. strlen += (str.charCodeAt(i) > 128) ? 2 : 1;
  125. }
  126. var messagealtyn = model.getValue("/root/hidden/messagealtyn")
  127. if (strlen > 80 && messagealtyn == "N") {
  128. model.setValue("/root/hidden/messagealtyn", "Y")
  129. messageBox("입력글자가 80 byte를 ", "E003");
  130. return false;
  131. }
  132. if (strlen > 240) {
  133. model.setValue("/root/hidden/messagecnt", strlen);
  134. ipt_messagecnt.refresh();
  135. messageBox("최대입력글자인 240 byte를 ", "E003");
  136. return false;
  137. }else{
  138. model.setValue("/root/hidden/messagecnt", strlen);
  139. ipt_messagecnt.refresh();
  140. return true;
  141. }
  142. }
  143. // 선택한 채널관리 대분류에 따른 채널관리 중분류를 가져온다.
  144. function fGetChnlMdlCd() {
  145. var msglrgcd = model.getValue("/root/main/msgattr/msglrgcd");
  146. model.setValue("/root/send/info/msglrgcd",msglrgcd);
  147. submit("TRCNS00202");
  148. }
  149. // 선택한 채널관리 중분류에 따른 메시지 리스트를 가져온다.
  150. function fGetChnlSmlCd() {
  151. var msgmdlcd = model.getValue("/root/main/msgattr/msgmdlcd");
  152. model.setValue("/root/send/info/msgmdlcd",msgmdlcd);
  153. submit("TRCCN00101");
  154. }
  155. // 즉시전송과 예약전송 선택에 따른 예약일자 및 예약시간 활성화
  156. function frdocheck()
  157. {
  158. var req_chk = model.getValue("/root/main/msgattr/rsrvyn");
  159. if (req_chk=="N")
  160. {
  161. ipt_trsmreqdt_date.disabled = true;
  162. ipt_trsmreqdt_time.disabled = true;
  163. // 즉시전송 선택시 기존 입력한 예약일자 및 예약시간 Clear
  164. model.setValue("/root/main/msgattr/delivedd", "");
  165. model.setValue("/root/main/msgattr/delivereqtm", "");
  166. model.refresh();
  167. }
  168. else
  169. {
  170. ipt_trsmreqdt_date.disabled = false;
  171. ipt_trsmreqdt_time.disabled = false;
  172. }
  173. }
  174. // 그리드에 선택한 수신자를 삭제하는 함수
  175. function fgriddelete(grid) {
  176. var cur_row = grid.row; // 행 번호 가져오기
  177. var iStatus = grid.rowstatus(cur_row);
  178. var d_cnt = 0;
  179. var selectedRows = new Array();
  180. for (var i=grid.fixedRows; i<grid.rows; i++)
  181. {
  182. var chk = model.getValue("/root/main/recvrinfo/recvrlist["+i+"]/chk");
  183. if (chk == "Y")
  184. {
  185. selectedRows[d_cnt++] = i;
  186. }
  187. }
  188. if(d_cnt == 0) {
  189. messageBox("삭제할 행을", "C002");
  190. return;
  191. }
  192. for (var i=d_cnt-1; i>=0; i--)
  193. {
  194. grid.deleterow(selectedRows[i],false);
  195. }
  196. model.refresh();
  197. }
  198. // 메시지 전송
  199. function fSendMsg(ref) {
  200. var cnt = fGetCheckMsgCnts();
  201. if(!cnt){
  202. return;
  203. }
  204. // 각 필드값을 체크한다.
  205. if(model.getValue("/root/main/msgattr/aprvreqsmmcnts")=="")
  206. {
  207. messageBox("전송사유는 ", "I003");
  208. model.setFocus("ipt_aprvreqsmmcnts");
  209. return;
  210. }
  211. if(model.getValue("/root/main/msgattr/sanctflag")=="")
  212. {
  213. messageBox("결재구분은 ", "I003");
  214. model.setFocus("cmb_sanctflag2");
  215. return;
  216. }
  217. if(model.getValue(ref+"/replytelno").getTrim()=="")
  218. {
  219. messageBox("회신 번호는 ", "I003");
  220. model.setFocus("ipt_callback");
  221. return;
  222. }
  223. var temp = model.getValue(ref+"/replytelno").length;
  224. if(temp <8)
  225. {
  226. messageBox("회신 번호는 8자리 이상을 ", "C001");
  227. model.setFocus("ipt_callback");
  228. return;
  229. }
  230. if(model.getValue(ref+"/rsrvyn").getTrim()=="")
  231. {
  232. messageBox("예약여부는 ", "I003");
  233. model.setFocus("rdo_rsrvyn");
  234. model.setValue(ref+"/rsrvyn", "N");
  235. frdocheck();
  236. rdo_rsrvyn.refresh();
  237. return;
  238. }
  239. if(model.getValue(ref+"/rsrvyn")=="Y" && // 예약설정이 Y 인경우에만 체크한다.
  240. model.getValue(ref+"/delivedd").getTrim()=="")
  241. {
  242. messageBox("예약일자는 ", "I003");
  243. model.setFocus("ipt_trsmreqdt_date");
  244. return;
  245. }
  246. if(model.getValue(ref+"/rsrvyn")=="Y" && // 예약설정이 Y 인경우에만 체크한다.
  247. model.getValue(ref+"/delivereqtm").getTrim()=="")
  248. {
  249. messageBox("예약시간은 ", "I003");
  250. model.setFocus("ipt_trsmreqdt_time");
  251. return;
  252. }
  253. if(model.getValue(ref+"/msgcnts").getTrim()=="")
  254. {
  255. messageBox("메시지내용은 ", "I003");
  256. return;
  257. }
  258. if(grd_recvrlist.rows <= grd_recvrlist.fixedRows) messageBox("수신자정보는 ", "I003");
  259. // 수신자 리스트가 담긴의 그리드를 체크한다.
  260. var nodeset = grd_recvrlist.nodeset;
  261. var recvrnm;
  262. var recvrtelno;
  263. var cnt = 0;
  264. for (i=grd_recvrlist.fixedRows; i<grd_recvrlist.rows; i++)
  265. {
  266. cnt++;
  267. model.setValue("/root/main/recvrinfo/recvrlist["+cnt+"]/chk","N");
  268. recvrnm = model.getValue("/root/main/recvrinfo/recvrlist["+cnt+"]/recvrnm");
  269. recvrtelno = model.getValue("/root/main/recvrinfo/recvrlist["+cnt+"]/recvrtelno");
  270. if(recvrnm.getTrim()=="")
  271. {
  272. messageBox(cnt+" 번째 수신자 이름을 ", "C001");
  273. grd_recvrlist.row = i;
  274. return;
  275. }
  276. if(recvrtelno.length <10)
  277. {
  278. messageBox(cnt+" 번째 수신자 전화번호는 10자리이상을 ", "C001");
  279. grd_recvrlist.row = i;
  280. return;
  281. }
  282. }
  283. var nodeList = instance1.selectNodes("/root/main/recvrinfo/recvrlist");
  284. var rCSV = getNodeListCSV(nodeList);
  285. model.setValue("/root/main/msgattr/recvrlist", rCSV);
  286. // model.makeValue("/root/main/msgattr/recvrlist", grd_recvrlist.getUpdateData());
  287. // 예약전송시 예약일자 및 예약시간 설정
  288. var rsrvdd = model.getValue("/root/main/msgattr/trsmdd");
  289. var rsrvtm = getCurrentTime().substring(0,4);
  290. // 수동전송시 기본값 설정
  291. var delivedd = model.getValue("/root/main/msgattr/delivedd");
  292. var delivereqtm = model.getValue("/root/main/msgattr/delivereqtm");
  293. var bizflag = model.getValue("/root/main/msgattr/bizflag");
  294. if (bizflag == "") {
  295. model.setValue("/root/main/msgattr/bizflag", "2"); // 수동전송은 업무구분을 무조건 2로 한다.
  296. model.setValue("/root/main/msgattr/bizdetlcd", "99"); // 수동전송은 업무상세구분을 무조건 99로 한다.
  297. }
  298. if (delivedd == "") {
  299. model.setValue("/root/main/msgattr/delivedd", rsrvdd); // 발송요청일자
  300. }
  301. if (delivereqtm == "") {
  302. model.setValue("/root/main/msgattr/delivereqtm", rsrvtm); // 발송요청시간
  303. }
  304. //전송등록
  305. if (submit("TXCCN00101")){
  306. var approvalflag = model.getValue("/root/main/msgattr/sanctflag");
  307. if(approvalflag == 1){
  308. messageBox("승인요청 목록에 등록되었습니다. 승인 후 전송됩니다.","I099");
  309. }else{
  310. messageBox("메시지가 성공적으로 전송","I001");
  311. }
  312. //model.resetInstanceNode("/root/main/msgattr/delivedd");
  313. //model.resetInstanceNode("/root/main/msgattr/delivereqtm");
  314. model.setValue("/root/main/msgattr/msgcnts", "");
  315. model.setValue("/root/main/msgattr/replytelno", "");
  316. model.resetInstanceNode("/root/main/recvrinfo/recvrlist");
  317. model.setValue("/root/main/msgattr/rsrvyn", "N");
  318. ipt_trsmreqdt_date.disabled = true;
  319. ipt_trsmreqdt_time.disabled = true;
  320. model.setValue("/root/main/msgattr/delivedd", "");
  321. model.setValue("/root/main/msgattr/delivereqtm", "");
  322. model.setValue("/root/hidden/messagecnt", "0");
  323. model.setValue("/root/main/msgattr/aprvreqsmmcnts", "");
  324. model.refresh();
  325. } else {
  326. messageBox("메시지 등록/전송이","E009");
  327. }
  328. }
  329. ]]>
  330. </script>
  331. </model>
  332. <script type="javascript">
  333. <![CDATA[
  334. //----------------------------------------//
  335. // 그리드 전체 행 선택 함수 //
  336. //----------------------------------------//
  337. function fGridAllRow(grid) {
  338. var rows = grid.rows;
  339. var fRow = grid.fixedRows;
  340. var chk = grid.valueMatrix(1,grid.colRef("chk"));
  341. if(chk == "N"){
  342. for(var i=fRow; i<rows; i++){
  343. grid.valueMatrix(i,grid.colRef("chk"))="Y";
  344. }
  345. }else{
  346. for(var i=fRow; i<rows; i++){
  347. grid.valueMatrix(i,grid.colRef("chk"))="N";
  348. }
  349. }
  350. model.refresh();
  351. }
  352. ]]>
  353. </script>
  354. </xhtml:head>
  355. <xhtml:body pagewidth="750" pageheight="607" guideline="1,251;2,591;" style="margin-left:8; margin-top:8; margin-right:8; margin-bottom:8; ">
  356. <group id="group1" class="sms" style="left:0px; top:0px; width:251px; height:593px; ">
  357. <textarea id="tar_contents" ref="/root/main/msgattr/msgcnts" style="left:26px; top:65px; width:197px; height:174px; padding:10; background-color:transparent; ">
  358. <script type="javascript" ev:event="onkeyup">
  359. <![CDATA[
  360. fGetCheckMsgCnts();
  361. ]]>
  362. </script>
  363. </textarea>
  364. <input id="ipt_messagecnt" ref="/root/hidden/messagecnt" class="input_default" editable="false" maxlength="20" style="left:130px; top:44px; width:30px; height:19px; text-align:right; "/>
  365. <caption id="caption8" style="left:160px; top:44px; width:40px; height:19px; ">/ 80</caption>
  366. <button id="btn_add" class="num_add" style="left:49px; top:479px; width:73px; height:23px; ">
  367. <caption/>
  368. <script type="javascript" ev:event="DOMActivate">
  369. <![CDATA[
  370. var i;
  371. grd_recvrlist.addItem();
  372. i = grd_recvrlist.rows;
  373. grd_recvrlist.bottomRow = i;
  374. grd_recvrlist.select(i, 1, i, 1) = true;
  375. ]]>
  376. </script>
  377. </button>
  378. <button id="btn_delete" class="num_del" style="left:128px; top:479px; width:73px; height:23px; ">
  379. <caption/>
  380. <script type="javascript" ev:event="DOMActivate">
  381. <![CDATA[
  382. fgriddelete(grd_recvrlist);
  383. ]]>
  384. </script>
  385. </button>
  386. <button id="btn_trsm" class="sms_send" style="left:57px; top:534px; width:62px; height:21px; ">
  387. <caption/>
  388. <script type="javascript" ev:event="DOMActivate">
  389. <![CDATA[
  390. //fSMSSubmit("/root/main");
  391. fSendMsg("/root/main/msgattr");
  392. ]]>
  393. </script>
  394. </button>
  395. <button id="btn_cncl" class="sms_cancel" style="left:127px; top:534px; width:62px; height:21px; ">
  396. <caption/>
  397. <close ev:event="DOMActivate"/>
  398. </button>
  399. <line id="line1" style="x1:28px; y1:505px; x2:221px; y2:505px; border-color:#C4CDDB; "/>
  400. <!--<button id="button5" class="send_name" style="left:35px; top:437px; width:52px; height:10px; ">
  401. <caption/>
  402. </button>-->
  403. <select1 id="rdo_rsrvyn" ref="/root/main/msgattr/rsrvyn" appearance="full" cols="2" overflow="visible" style="left:18px; top:511px; width:91px; height:17px; text-align:left; border-style:none; ">
  404. <choices>
  405. <item>
  406. <label>일반</label>
  407. <value>N</value>
  408. </item>
  409. <item>
  410. <label>예약</label>
  411. <value>Y</value>
  412. </item>
  413. </choices>
  414. <script type="javascript" ev:event="xforms-value-changed">
  415. <![CDATA[
  416. frdocheck();
  417. ]]>
  418. </script>
  419. </select1>
  420. <input id="ipt_trsmreqdt_date" ref="/root/main/msgattr/delivedd" class="input_default" imemode="disabled" inputtype="date" validateformat="true" style="left:106px; top:510px; width:80px; height:19px; "/>
  421. <input id="ipt_trsmreqdt_time" ref="/root/main/msgattr/delivereqtm" class="input_default" imemode="disabled" format="hh:nn" showmask="true" validateformat="true" style="left:188px; top:510px; width:40px; height:19px; "/>
  422. <caption id="caption1" style="left:39px; top:246px; width:70px; height:17px; ">회신 번호 :</caption>
  423. <input id="ipt_callback" ref="/root/main/msgattr/replytelno" class="input_default" imemode="disabled" maxlength="11" style="left:105px; top:245px; width:109px; height:19px; "/>
  424. <button id="btn_address" class="btn2_letter3" style="left:35px; top:284px; width:53px; height:19px; ">
  425. <caption>주소록</caption>
  426. <script type="javascript" ev:event="DOMActivate">
  427. <![CDATA[
  428. modal("SPCCN00500", "", "", "", "SPCCN00500", "/root/fwd", "/root/fwd");
  429. if ( grd_recvrlist.valueMatrix(1,grd_recvrlist.colRef("recvrnm")) == "" && grd_recvrlist.valueMatrix(1,grd_recvrlist.colRef("recvrtelno")) == "" ) {
  430. grd_recvrlist.deleterow(1, false);
  431. }
  432. //window.load("SPCCN00500_주소록검색.xrw", "modal", "addr_pop", "align:center;", "/root/fwd", "/root/fwd");
  433. ]]>
  434. </script>
  435. </button>
  436. <button id="btn_addfile" class="btn2_letter9" style="left:95px; top:284px; width:119px; height:19px; ">
  437. <caption>외부파일 가져오기</caption>
  438. <script type="javascript" ev:event="DOMActivate">
  439. <![CDATA[
  440. modal("SPCCN00600", "", "", "", "SPCCN00600", "/root/fwd", "/root/fwd");
  441. if ( grd_recvrlist.valueMatrix(1,grd_recvrlist.colRef("recvrnm")) == "" && grd_recvrlist.valueMatrix(1,grd_recvrlist.colRef("recvrtelno")) == "" ) {
  442. grd_recvrlist.deleterow(1, false);
  443. }
  444. //window.load("SPCCN00600_외부파일가져오기.xrw", "modal", "addr_pop", "align:center;", "/root/fwd", "/root/fwd");
  445. ]]>
  446. </script>
  447. </button>
  448. <datagrid id="grd_recvrlist" nodeset="/root/main/recvrinfo/recvrlist" class="datagrid_sms" caption="^수신자명^전화번호" colwidth="22, 60, 100" dataheight="23" extendlastcol="scroll" mergecellsfixedrows="bycolrec" rowheader="seq" rowheight="23" style="left:26px; top:335px; width:195px; height:142px; ">
  449. <col class="sms" checkvalue="Y,N" ref="chk" type="checkbox" style="text-align:center; "/>
  450. <col ref="recvrnm" type="input"/>
  451. <col ref="recvrtelno" type="input" maxlength="11"/>
  452. </datagrid>
  453. <button id="btn_allchk" class="btn2_letter2" style="left:27px; top:335px; width:42px; height:19px; ">
  454. <caption>All</caption>
  455. <script type="javascript" ev:event="DOMActivate">
  456. <![CDATA[
  457. fGridAllRow(grd_recvrlist);
  458. ]]>
  459. </script>
  460. </button>
  461. <select1 id="cmb_searchtype" ref="/root/fwd/searchtype" class="combo_default" appearance="minimal" style="left:26px; top:310px; width:70px; height:19px; ">
  462. <choices>
  463. <item>
  464. <label>전체</label>
  465. <value/>
  466. </item>
  467. <item>
  468. <label>환자</label>
  469. <value>1</value>
  470. </item>
  471. <item>
  472. <label>교직원</label>
  473. <value>2</value>
  474. </item>
  475. <item>
  476. <label>기타</label>
  477. <value>3</value>
  478. </item>
  479. </choices>
  480. </select1>
  481. <button id="btnicon_search3" class="icon_search" style="left:211px; top:311px; width:16px; height:16px; ">
  482. <caption/>
  483. <script type="javascript" ev:event="DOMActivate">
  484. <![CDATA[
  485. var clntnm = model.getValue("/root/fwd/searchname");
  486. if (clntnm.length < 2){
  487. messageBox("검색은 최소 2글자 이상 ", "C001");
  488. model.setFocus("ipt_searchname");
  489. }else{
  490. modal("SPCCN00500", "", "", "", "SPCCN00600", "/root/fwd", "/root/fwd");
  491. if ( grd_recvrlist.valueMatrix(1,grd_recvrlist.colRef("recvrnm")) == "" && grd_recvrlist.valueMatrix(1,grd_recvrlist.colRef("recvrtelno")) == "" ) {
  492. grd_recvrlist.deleterow(1, false);
  493. }
  494. }
  495. ]]>
  496. </script>
  497. </button>
  498. <input id="ipt_searchname" ref="/root/fwd/searchname" style="left:100px; top:310px; width:105px; height:19px; ">
  499. <script type="javascript" ev:event="onkeyup">
  500. <![CDATA[
  501. inputEnterKey("btnicon_search3", "DOMActivate");
  502. ]]>
  503. </script>
  504. </input>
  505. </group>
  506. <group id="group2" style="left:256px; top:0px; width:474px; height:593px; ">
  507. <caption id="caption9" class="tit_2" style="left:5px; top:10px; width:111px; height:13px; ">SMS 승인정보</caption>
  508. <line id="line2" class="line_1" style="x1:0px; y1:26px; x2:474px; y2:26px; "/>
  509. <caption id="cap_dtmntitl" class="cell_1" style="left:0px; top:30px; width:105px; height:23px; text-align:center; vertical-align:middle; ">전송사유</caption>
  510. <input id="ipt_aprvreqsmmcnts" ref="/root/main/msgattr/aprvreqsmmcnts" class="input_essential" maxlength="100" style="left:108px; top:32px; width:365px; height:19px; "/>
  511. <line id="line4" class="line_2" style="x1:0px; y1:53px; x2:474px; y2:53px; "/>
  512. <caption id="caption2" class="cell_1" style="left:0px; top:55px; width:105px; height:23px; text-align:center; vertical-align:middle; ">결재구분</caption>
  513. <line id="line3" class="line_2" style="x1:0px; y1:78px; x2:474px; y2:78px; "/>
  514. <caption id="caption3" class="tit_2" style="left:5px; top:90px; width:111px; height:13px; ">SMS 즉시전송</caption>
  515. <line id="line5" class="line_1" style="x1:0px; y1:105px; x2:474px; y2:105px; "/>
  516. <line id="line6" class="line_2" style="x1:0px; y1:133px; x2:474px; y2:133px; "/>
  517. <caption id="caption4" class="cell_1" style="left:0px; top:110px; width:105px; height:23px; text-align:center; vertical-align:middle; ">그룹</caption>
  518. <select1 id="cmb_msglrgcd" ref="/root/main/msgattr/msglrgcd" class="combo_default" appearance="minimal" style="left:108px; top:111px; width:150px; height:19px; ">
  519. <choices>
  520. <itemset nodeset="/root/init/chnllrglist/chnllrggrup">
  521. <label ref="msglrgnm"/>
  522. <value ref="msglrgcd"/>
  523. </itemset>
  524. </choices>
  525. <script type="javascript" ev:event="xforms-select">
  526. <![CDATA[
  527. // 기존에 선택된 중분류를 초기화한다.
  528. model.removenodeset("/root/init/chnlmdllist/chnlmdlgrup");
  529. // 선택한 채널관리 대분류에 따른 채널관리 중분류를 가져온다.
  530. fGetChnlMdlCd();
  531. model.setFocus("cmb_msgmdlcd");
  532. ]]>
  533. </script>
  534. </select1>
  535. <select1 id="cmb_msgmdlcd" ref="/root/main/msgattr/msgmdlcd" class="combo_default" appearance="minimal" style="left:261px; top:111px; width:150px; height:19px; ">
  536. <choices>
  537. <itemset nodeset="/root/init/chnlmdllist/chnlmdlgrup">
  538. <label ref="msgmdlnm"/>
  539. <value ref="msgmdlcd"/>
  540. </itemset>
  541. </choices>
  542. <script type="javascript" ev:event="xforms-select">
  543. <![CDATA[
  544. // 메시지 리스트를 초기화한다.
  545. model.removenodeset("/root/main/msgsmllist");
  546. // 선택한 채널관리 대분류에 따른 채널관리 중분류를 가져온다.
  547. fGetChnlSmlCd();
  548. ]]>
  549. </script>
  550. </select1>
  551. <datagrid id="grd_msglist" nodeset="/root/main/msgsmllist" caption="코드^메시지^" colwidth="50, 387, 0" dataheight="23" ellipsis="true" extendlastcol="scroll" mergecellsfixedrows="bycolrec" rowheader="update" rowheight="23" tooltip="true" style="left:0px; top:137px; width:474px; height:306px; ">
  552. <col ref="msgsmlcd"/>
  553. <col ref="msgcnts"/>
  554. <col ref="smstrsmcntcno" visibility="hidden"/>
  555. <script type="javascript" ev:event="ondblclick">
  556. <![CDATA[
  557. if( grd_msglist.isCell(event.target) && grd_msglist.row >= grd_msglist.fixedRows ){
  558. var row = grd_msglist.row;
  559. var msgcnts = grd_msglist.valueMatrix(row, grd_msglist.colRef("msgcnts"));
  560. var msgsmlcd = grd_msglist.valueMatrix(row, grd_msglist.colRef("msgsmlcd"));
  561. var smstrsmcntcno = grd_msglist.valueMatrix(row, grd_msglist.colRef("smstrsmcntcno"));
  562. model.setValue("/root/main/msgattr/msgsmlcd", msgsmlcd);
  563. model.setValue("/root/main/msgattr/msgcnts", msgcnts);
  564. model.setValue("/root/main/msgattr/replytelno", smstrsmcntcno);
  565. tar_contents.refresh();
  566. ipt_callback.refresh();
  567. }
  568. fGetCheckMsgCnts();
  569. ]]>
  570. </script>
  571. </datagrid>
  572. <caption id="caption12" class="tit_2" style="left:5px; top:455px; width:150px; height:14px; ">자동입력어</caption>
  573. <line id="line9" class="line_1" style="x1:0px; y1:470px; x2:473px; y2:470px; "/>
  574. <caption id="caption13" class="cell_1" style="left:0px; top:475px; width:105px; height:23px; text-align:center; ">자동입력어</caption>
  575. <group id="group5" style="left:105px; top:476px; width:160px; height:23px; ">
  576. <button id="button4" class="btn2_letter3" style="left:5px; top:2px; width:53px; height:19px; ">
  577. <caption>고객</caption>
  578. </button>
  579. <button id="button8" class="btn2_letter3" style="left:61px; top:2px; width:53px; height:19px; ">
  580. <caption>병원명</caption>
  581. </button>
  582. <script type="javascript" ev:event="onclick">
  583. <![CDATA[
  584. var trgObj = document.controls.item(event.target);
  585. if( trgObj.elementName == "xforms:button" ) {
  586. var btnMark = "<@" + trgObj.label + ">";
  587. var txtSelPos = tar_contents.selBegin;
  588. var curText = tar_contents.currentText;
  589. var curTextBefore = curText.substr(0, txtSelPos);
  590. var curTextAfter = curText.substr(txtSelPos, curText.length);
  591. tar_contents.currentText = curTextBefore + btnMark + curTextAfter;
  592. var endTxt = tar_contents.currentText;
  593. model.setFocus("tar_contents");
  594. tar_contents.selBegin = endTxt.length-curTextAfter.length;
  595. tar_contents.dispatch("onkeyup");
  596. }
  597. ]]>
  598. </script>
  599. </group>
  600. <line id="line11" class="line_2" style="x1:0px; y1:498px; x2:473px; y2:498px; "/>
  601. <caption id="caption14" class="cell_1" style="left:0px; top:500px; width:105px; height:90px; text-align:center; ">특수문자</caption>
  602. <group id="group4" style="left:106px; top:500px; width:364px; height:90px; ">
  603. <button id="caption40" class="btn_number" style="left:5px; top:68px; width:39px; height:19px; ">
  604. <caption>@</caption>
  605. </button>
  606. <button id="caption41" class="btn_number" style="left:47px; top:68px; width:39px; height:19px; ">
  607. <caption>♨</caption>
  608. </button>
  609. <button id="caption42" class="btn_number" style="left:89px; top:68px; width:39px; height:19px; ">
  610. <caption>☎</caption>
  611. </button>
  612. <button id="caption31" class="btn_number" style="left:299px; top:24px; width:39px; height:19px; ">
  613. <caption>♥</caption>
  614. </button>
  615. <button id="caption20" class="btn_number" style="left:215px; top:2px; width:39px; height:19px; ">
  616. <caption>◎</caption>
  617. </button>
  618. <button id="caption43" class="btn_number" style="left:131px; top:68px; width:39px; height:19px; ">
  619. <caption>☜</caption>
  620. </button>
  621. <button id="caption32" class="btn_number" style="left:5px; top:46px; width:39px; height:19px; ">
  622. <caption>♧</caption>
  623. </button>
  624. <button id="caption21" class="btn_number" style="left:257px; top:2px; width:39px; height:19px; ">
  625. <caption>◇</caption>
  626. </button>
  627. <button id="caption44" class="btn_number" style="left:173px; top:68px; width:39px; height:19px; ">
  628. <caption>☞</caption>
  629. </button>
  630. <button id="caption33" class="btn_number" style="left:47px; top:46px; width:39px; height:19px; ">
  631. <caption>♣</caption>
  632. </button>
  633. <button id="caption22" class="btn_number" style="left:299px; top:2px; width:39px; height:19px; ">
  634. <caption>◆</caption>
  635. </button>
  636. <button id="caption45" class="btn_number" style="left:215px; top:68px; width:39px; height:19px; ">
  637. <caption>%</caption>
  638. </button>
  639. <button id="caption34" class="btn_number" style="left:89px; top:46px; width:39px; height:19px; ">
  640. <caption>◁</caption>
  641. </button>
  642. <button id="caption23" class="btn_number" style="left:5px; top:24px; width:39px; height:19px; ">
  643. <caption>□</caption>
  644. </button>
  645. <button id="caption46" class="btn_number" style="left:257px; top:68px; width:39px; height:19px; ">
  646. <caption>☏</caption>
  647. </button>
  648. <button id="caption35" class="btn_number" style="left:131px; top:46px; width:39px; height:19px; ">
  649. <caption>◀</caption>
  650. </button>
  651. <button id="caption24" class="btn_number" style="left:47px; top:24px; width:39px; height:19px; ">
  652. <caption>■</caption>
  653. </button>
  654. <button id="caption47" class="btn_number" style="left:299px; top:68px; width:39px; height:19px; ">
  655. <caption>♪</caption>
  656. </button>
  657. <button id="caption36" class="btn_number" style="left:173px; top:46px; width:39px; height:19px; ">
  658. <caption>▷</caption>
  659. </button>
  660. <button id="caption25" class="btn_number" style="left:89px; top:24px; width:39px; height:19px; ">
  661. <caption>△</caption>
  662. </button>
  663. <button id="caption37" class="btn_number" style="left:215px; top:46px; width:39px; height:19px; ">
  664. <caption>▶</caption>
  665. </button>
  666. <button id="caption26" class="btn_number" style="left:131px; top:24px; width:39px; height:19px; ">
  667. <caption>▲</caption>
  668. </button>
  669. <button id="caption15" class="btn_number" style="left:5px; top:2px; width:39px; height:19px; ">
  670. <caption>●</caption>
  671. </button>
  672. <button id="caption38" class="btn_number" style="left:257px; top:46px; width:39px; height:19px; ">
  673. <caption>♤</caption>
  674. </button>
  675. <button id="caption27" class="btn_number" style="left:173px; top:24px; width:39px; height:19px; ">
  676. <caption>▽</caption>
  677. </button>
  678. <button id="caption16" class="btn_number" style="left:47px; top:2px; width:39px; height:19px; ">
  679. <caption>※</caption>
  680. </button>
  681. <button id="caption39" class="btn_number" style="left:299px; top:46px; width:39px; height:19px; ">
  682. <caption>♠</caption>
  683. </button>
  684. <button id="caption28" class="btn_number" style="left:215px; top:24px; width:39px; height:19px; ">
  685. <caption>▼</caption>
  686. </button>
  687. <button id="caption17" class="btn_number" style="left:89px; top:2px; width:39px; height:19px; ">
  688. <caption>☆</caption>
  689. </button>
  690. <button id="caption29" class="btn_number" style="left:257px; top:24px; width:39px; height:19px; ">
  691. <caption>♡</caption>
  692. </button>
  693. <button id="caption18" class="btn_number" style="left:131px; top:2px; width:39px; height:19px; ">
  694. <caption>★</caption>
  695. </button>
  696. <button id="caption19" class="btn_number" style="left:173px; top:2px; width:39px; height:19px; ">
  697. <caption>○</caption>
  698. </button>
  699. <script type="javascript" ev:event="onclick">
  700. <![CDATA[
  701. var trgObj = document.controls.item(event.target);
  702. if( trgObj.elementName == "xforms:button" ) {
  703. var btnMark = trgObj.label;
  704. var txtSelPos = tar_contents.selBegin;
  705. var curText = tar_contents.currentText;
  706. var curTextBefore = curText.substr(0, txtSelPos);
  707. var curTextAfter = curText.substr(txtSelPos, curText.length);
  708. tar_contents.currentText = curTextBefore + btnMark + curTextAfter;
  709. model.setFocus("tar_contents");
  710. tar_contents.selBegin = txtSelPos + 1;
  711. tar_contents.dispatch("onkeyup");
  712. }
  713. ]]>
  714. </script>
  715. </group>
  716. <select1 id="cmb_sanctflag" ref="/root/main/msgattr/sanctflag" appearance="full" overflow="visible" style="left:110px; top:57px; width:115px; height:20px; border-style:none; ">
  717. <choices>
  718. <item>
  719. <label>전송 전 승인요청</label>
  720. <value>1</value>
  721. </item>
  722. </choices>
  723. <script type="javascript" ev:event="xforms-select">
  724. <![CDATA[
  725. model.setValue("/root/main/msgattr/aprvyn","0");
  726. ]]>
  727. </script>
  728. <hint>
  729. <![CDATA[전송 전에 승인요청 목록에 등록되며, 승인 후 즉시(또는 예약시간에) 발송이 이루어짐.]]>
  730. </hint>
  731. </select1>
  732. <select1 id="cmb_sanctflag2" ref="/root/main/msgattr/sanctflag" appearance="full" overflow="visible" style="left:230px; top:57px; width:115px; height:20px; border-style:none; ">
  733. <choices>
  734. <item>
  735. <label>전송 후 승인요청</label>
  736. <value>2</value>
  737. </item>
  738. </choices>
  739. <script type="javascript" ev:event="xforms-select">
  740. <![CDATA[
  741. model.setValue("/root/main/msgattr/aprvyn","1");
  742. ]]>
  743. </script>
  744. <hint>
  745. <![CDATA[전송시 즉시(또는 예약시간에) 발송되며, 승인요청 목록에서 사후 승인됨.]]>
  746. </hint>
  747. </select1>
  748. </group>
  749. </xhtml:body>
  750. </xhtml:html>