SPCPC00800_주소록그룹리스트.xrw 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3. * Name : SPCPC00800_주소록그룹리스트
  4. * Summary : 주소록 그룹 리스트
  5. * Programmer : 최정환
  6. * Date Written : 2008.07.31
  7. * History : 2008.07.31
  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>주소록 그룹 리스트</xhtml:title>
  14. <model id="model1">
  15. <instance id="instance1">
  16. <root xmlns="">
  17. <main>
  18. <innrgrupinfo>
  19. <indgruplist>
  20. <innrgrupid/>
  21. <innrgrupnm/>
  22. </indgruplist>
  23. <deptgruplist>
  24. <innrgrupid/>
  25. <innrgrupnm/>
  26. </deptgruplist>
  27. </innrgrupinfo>
  28. <trgt>
  29. <trgtattr>
  30. <savemode/>
  31. <pid/>
  32. <hngnm/>
  33. <mpphontel/>
  34. <email/>
  35. <cmpnnm/>
  36. <cmpncd/>
  37. <cmpnlrgcd/>
  38. <cmpnmdlcd/>
  39. <cmpnsmlcd/>
  40. <cmpnexecattr/>
  41. <rgstdeptnm/>
  42. <rgstdeptcd/>
  43. <execbaseddflag/>
  44. <execbasedayno/>
  45. <execbasemm/>
  46. <execbasedd/>
  47. <execbasespcldd/>
  48. <nextcmpnlnkpnttm/>
  49. <cmpnrgstdt/>
  50. <rgstseq/>
  51. <cmpnbizflag/>
  52. <cmpnlnklist/>
  53. <delivelist/>
  54. <trsmtrgtflag/>
  55. </trgtattr>
  56. <cmpnlnklist/>
  57. <delivelist/>
  58. <execlist/>
  59. </trgt>
  60. <list>
  61. <userlist>
  62. <innrclntflagnm/>
  63. <innrclntnm/>
  64. <email/>
  65. <mpphontel/>
  66. <detladdr/>
  67. <pid/>
  68. <posinstnm/>
  69. <posdeptnm/>
  70. <innrgrupid/>
  71. <userid/>
  72. <innrclntflag/>
  73. <zipcd/>
  74. <zipcd1/>
  75. <zipcd2/>
  76. <innrclntid/>
  77. </userlist>
  78. <choiinnrclntlist/>
  79. </list>
  80. <rcvcnt/>
  81. <chkvalue1/>
  82. <chkvalue2/>
  83. </main>
  84. <init>
  85. <C0030list/>
  86. <C0031list/>
  87. <C0032list/>
  88. </init>
  89. <send>
  90. <searchitem/>
  91. <flag/>
  92. <innrgrupid/>
  93. <innrgruplist/>
  94. <delinnrgruplist/>
  95. <data>
  96. <innrclntflag/>
  97. <searchtype/>
  98. <searchstring/>
  99. <searchtype2/>
  100. <innrclntnm/>
  101. <mpphonno/>
  102. <email/>
  103. </data>
  104. <cmpnattr>
  105. <cmpncd/>
  106. <trsmtrgtflag/>
  107. <delivelist/>
  108. </cmpnattr>
  109. <trgtattr>
  110. <cmpncd/>
  111. <pid/>
  112. <cmpnrgstdt/>
  113. <rgstseq/>
  114. </trgtattr>
  115. <trgtgrup>
  116. <cmpnlrgcd/>
  117. <cmpnmdlcd/>
  118. <cmpnsmlcd/>
  119. </trgtgrup>
  120. <trgtlist/>
  121. </send>
  122. <temp>
  123. <trgtattr>
  124. <cmpnlnk>
  125. <nextcmpnnm/>
  126. <nextcmpncd/>
  127. </cmpnlnk>
  128. <delivesche>
  129. <deliveschedayno/>
  130. <bfaftflag>B</bfaftflag>
  131. <deliveschetm/>
  132. <smsuseyn/>
  133. <smsmsglrgcd/>
  134. <smsmsgmdlcd/>
  135. <smsmsgsmlcd/>
  136. <emailuseyn/>
  137. <emailmsglrgcd/>
  138. <emailmsgmdlcd/>
  139. <emailmsgsmlcd/>
  140. <smsmsg/>
  141. <emailtitl/>
  142. <cmpnexecdt/>
  143. </delivesche>
  144. <oldtrgtattr>
  145. <execbaseddflag/>
  146. <execbasedayno/>
  147. <execbasemm/>
  148. <execbasedd/>
  149. <execbasespcldd/>
  150. </oldtrgtattr>
  151. <rgstseq/>
  152. </trgtattr>
  153. </temp>
  154. </root>
  155. </instance>
  156. <submission id="TRZBC00101" mediatype="application/x-www-form-urlencoded" method="post" replace="instance"/>
  157. <submission id="TRCPC00801" mediatype="application/x-www-form-urlencoded" method="post" resultref="/root/main/innrgrupinfo"/>
  158. <submission id="TRCMS00501" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/data" resultref="/root/main/list"/>
  159. <submission id="TRCMS00502" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/main/list"/>
  160. <submission id="TRCPC00105" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/cmpnattr" resultref="/root/main/trgt/trgtattr"/>
  161. <submission id="TRCPC00108" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/trgtgrup" resultref="/root/init/trgtgrup"/>
  162. <submission id="TXCPC00801" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/main/trgt/trgtattr" resultref="/root/temp/result"/>
  163. </model>
  164. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  165. <script type="javascript" src="../../../com/commonweb/js/dateHelper.js"/>
  166. <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
  167. <script type="javascript" src="../../../com/basiccodeweb/js/ZBC001.js"/>
  168. <script type="javascript" src="../../../com/departmentcodeweb/js/ZSD001.js"/>
  169. <script type="javascript" ev:event="xforms-ready">
  170. <![CDATA[
  171. // 그리드의 초기화
  172. fGridInit();
  173. // C0030: 자동실행여부, C0031: 고객중복처리여부, C0032: 적용기준일
  174. zbcfGetCodeList(new Array("C0030", "C0031", "C0032"),
  175. new Array("/root/init/C0030list", "/root/init/C0031list", "/root/init/C0032list"));
  176. // 캠페인의 속성을 상속받아 대상자 입력창 구성
  177. submit("TRCPC00105"); //캠페인 속성 조회, 설정
  178. // 캠페인 정보 설정
  179. fCmpnInfoSetup();
  180. submit("TRCPC00801");
  181. grd_exedatelist_t.refresh();
  182. var scrnflag = model.getValue("/root/hidden/scrnflag");
  183. grd_exedatelist_t.refresh();
  184. ]]>
  185. </script>
  186. <script type="javascript">
  187. <![CDATA[
  188. // 그리드 초기화
  189. function fGridInit() {
  190. model.removeNodeset("/root/main/list/userlist");
  191. model.removeNodeset("/root/main/list/choiinnrclntlist");
  192. model.removeNodeset("/root/main/trgt/delivelist");
  193. model.resetInstanceNode("/root/main/trgt/trgtattr");
  194. model.removeNodeset("/root/main/trgt/cmpnlnklist");
  195. model.removeNodeset("/root/main/trgt/execlist");
  196. model.removeNodeset("/root/main/innrgrupinfo/indgruplist");
  197. model.removeNodeset("/root/main/innrgrupinfo/deptgruplist");
  198. model.refresh();
  199. }
  200. //----------------------------------------//
  201. // 체크된 행을 대상그리드에 추가 후 삭제 //
  202. //----------------------------------------//
  203. function fGridRowAddRow(sndGrid, rcvGrid, type){
  204. var sRows = sndGrid.rows;
  205. var sfRow = sndGrid.fixedRows;
  206. var cntRows = sndGrid.rows-1;
  207. var rRows = rcvGrid.rows;
  208. if(type=="del") {
  209. var rows = sndGrid.rows;
  210. var fRow = sndGrid.fixedRows;
  211. for(var i=fRow; i<rows; i++){
  212. sndGrid.valueMatrix(i,sndGrid.colRef("chk"))="Y";
  213. }
  214. model.refresh();
  215. }
  216. var check_cnt = 0;
  217. for(var i=sfRow; i<sRows; i++){
  218. if(sndGrid.valueMatrix(i,sndGrid.colRef("chk")) == "Y" ){
  219. rcvGrid.addRow(false);
  220. rcvGrid.valueMatrix(rRows, rcvGrid.colRef("innrgrupnm")) = sndGrid.valueMatrix(i,sndGrid.colRef("innrgrupnm"));
  221. rcvGrid.valueMatrix(rRows, rcvGrid.colRef("innrclntnm")) = sndGrid.valueMatrix(i,sndGrid.colRef("innrclntnm"));
  222. rcvGrid.valueMatrix(rRows, rcvGrid.colRef("innrclntid")) = sndGrid.valueMatrix(i,sndGrid.colRef("innrclntid"));
  223. rcvGrid.valueMatrix(rRows, rcvGrid.colRef("email")) = sndGrid.valueMatrix(i,sndGrid.colRef("email"));
  224. rcvGrid.valueMatrix(rRows, rcvGrid.colRef("mpphontel")) = sndGrid.valueMatrix(i,sndGrid.colRef("mpphontel"));
  225. check_cnt++;
  226. rRows++;
  227. }
  228. }
  229. if(check_cnt < 1) {
  230. messageBox("주소록 리스트를","C002");
  231. }
  232. //추가된 사람 목록삭제
  233. for(var j=sRows; j>=sfRow; j--){
  234. if(sndGrid.valueMatrix(j,sndGrid.colRef("chk")) == "Y"){
  235. sndGrid.deleterow(j,false);
  236. cntRows--;
  237. }
  238. }
  239. if(type == "add"){
  240. model.setValue("/root/main/rcvcnt",rRows-1);//수신인 숫자
  241. }else{
  242. model.setValue("/root/main/rcvcnt",cntRows);//수신인 숫자
  243. }
  244. model.refresh();
  245. }
  246. function fSaveTrgt() {
  247. var check_cnt = 0;
  248. var count = 0;
  249. var sRowSep = "▩";
  250. var send_data = "innrclntid" + sRowSep; //타이틀 map file 등에서 사용
  251. for (i=0; i < grd_choiinnrclntlist.Rows; i++) {
  252. if(grd_choiinnrclntlist.valueMatrix(i+1,grd_choiinnrclntlist.colRef("chk")) == "Y" ){
  253. var innrclntid = grd_choiinnrclntlist.valuematrix(i+1,5)
  254. //innrclntid[i] = innrclntid; // 순서
  255. send_data += innrclntid + sRowSep; // VO형태로 구성
  256. model.makeValue("/root/main/trgt/trgtattr/innrlist", send_data); // 임시노드에 선택된 항목을 넣어준다.
  257. check_cnt++;
  258. }
  259. }
  260. var updt_cmpn_lnk = getGridUpdateData(grd_cmpnlnklist_t);
  261. if (updt_cmpn_lnk != "") {
  262. model.setValue("/root/main/trgt/trgtattr/cmpnlnklist", grd_cmpnlnklist_t.getUpdateData());
  263. }
  264. var updt_exec_sche = getGridUpdateData(grd_exedatelist_t);
  265. if (updt_exec_sche != "") {
  266. model.setValue("/root/main/trgt/trgtattr/delivelist", grd_exedatelist_t.getUpdateData());
  267. }
  268. if(check_cnt < 1) {
  269. messageBox("주소록 리스트를","C002");
  270. }else{
  271. if ( submit("TXCPC00801") ) {
  272. messageBox("대상자 저장이","I002");
  273. //opener.model.refresh();
  274. opener.javaScript.fGetCmpnAttr();
  275. window.close();
  276. }
  277. }
  278. }
  279. function fCmpnInfoSetup() {
  280. if (!isXPathTextNull("/root/send/cmpnattr/cmpncd")) {
  281. fInitTrgt();
  282. //fInitGetAttr(2); //조회한 속성 초기화
  283. //fSetButtons(4); //대상자 속성 탭
  284. //fSetControls(3); //대상자 컨트롤 일부 제한
  285. fGetCmpnToTrgt(); //캠페인 속성 상속
  286. //fSetBaseDD(2); //실행예정일 입력컨트롤
  287. } else {
  288. messageBox("대상자를 등록할 캠페인을 \n캠페인리스트에서","C002");
  289. }
  290. }
  291. function fInitTrgt() {
  292. // 대상자 등록화면 초기화
  293. model.setValue("/root/main/trgt/trgtattr/cmpnexecattr", "1");
  294. model.setValue("/root/main/trgt/trgtattr/execbaseddflag", "1");
  295. model.setValue("/root/main/trgt/trgtattr/nextcmpnlnkpnttm", "C");
  296. grd_exedatelist_t.clearStatus();
  297. model.resetInstanceNode("/root/temp/temp/trgtattr/delivesche");
  298. model.setValue("/root/temp/trgtattr/delivesche/bfaftflag", "B");
  299. }
  300. function fGetCmpnToTrgt() {
  301. // 전송대상 설정 ( 1.환자 2.주소록)
  302. var trsmtrgtflag = model.getValue("/root/send/cmpnattr/trsmtrgtflag");
  303. model.makevalue("/root/main/trgt/trgtattr/trsmtrgtflag", trsmtrgtflag);
  304. fGetTrgtCmpnGrup(); // 캠페인 분류 세팅
  305. fCalcExecDt(); // 실제실행일 계산 후 인스턴스에 할당(키값인 등록일 포함)
  306. model.setValue("/root/main/trgt/trgtattr/savemode","I");
  307. model.copyNode("/root/temp/trgtattr/oldtrgtattr", "/root/main/trgt/trgtattr");
  308. // 실행예정일 및 연결캠페인 그리드를 입력상태로 변경
  309. fGridSetStatus(grd_cmpnlnklist_t, "insert");
  310. fGridSetStatus(grd_exedatelist_t, "insert");
  311. }
  312. function fGetTrgtCmpnGrup() {
  313. // 대상자 캠페인 분류 세팅(해당 분류 코드만 가져온다 - 분류는 수정 불가이므로 명칭만 출력하기 위한 용도)
  314. model.setValue("/root/send/trgtgrup/cmpnlrgcd", model.getValue("/root/main/trgt/trgtattr/cmpnlrgcd"));
  315. model.setValue("/root/send/trgtgrup/cmpnmdlcd", model.getValue("/root/main/trgt/trgtattr/cmpnmdlcd"));
  316. model.setValue("/root/send/trgtgrup/cmpnsmlcd", model.getValue("/root/main/trgt/trgtattr/cmpnsmlcd"));
  317. submit("TRCPC00108");
  318. }
  319. function fCalcExecDt() {
  320. // 실행기준일과 실행예정목록으로 실제 실행일시 계산(등록일 기준)
  321. var grid = grd_exedatelist_t;
  322. if (grid.rows > 1) {
  323. // 신규등록일 때 등록일시 설정, 수정일 때 기존 등록일시 설정
  324. if (model.getValue("/root/send/trgtattr/cmpnrgstdt")=="") {
  325. var rgst_dd = getCurrentDate();
  326. var rgst_tm = getCurrentTime();
  327. var rgst_dt = rgst_dd + rgst_tm;
  328. model.setValue("/root/main/trgt/trgtattr/cmpnrgstdt", rgst_dt); // 대상자에 등록일 키값 할당
  329. } else {
  330. var rgst_dd = model.getValue("/root/send/trgtattr/cmpnrgstdt");
  331. }
  332. var sche_base_dd = fCalcBaseDt(rgst_dd); // 실행기준일 계산
  333. var cmpn_exec_dt = new Array(grid.rows);
  334. for (i = 1; i < grid.rows; i++) {
  335. var delive_sche_dayno = model.getValue("/root/main/trgt/delivelist["+i+"]/deliveschedayno");
  336. var bf_aft_flag = model.getValue("/root/main/trgt/delivelist["+i+"]/bfaftflag");
  337. var delive_sche_tm = model.getValue("/root/main/trgt/delivelist["+i+"]/deliveschetm");
  338. cmpn_exec_dt[i] = fCalcScheDt(sche_base_dd, delive_sche_dayno, bf_aft_flag, delive_sche_tm); // 실행예정일시 계산
  339. // DB에 입력을 위해 delivelist에 저장 및 화면 출력을 위해 execlist에 저장
  340. model.setValue("/root/main/trgt/delivelist["+i+"]/cmpnexecdt", cmpn_exec_dt[i]);
  341. grd_execlist.addRow();
  342. model.setValue("/root/main/trgt/execlist["+i+"]/cmpnrgstdt", rgst_dd); //등록일
  343. model.setValue("/root/main/trgt/execlist["+i+"]/cmpnexecdt", cmpn_exec_dt[i]); //실행일
  344. }
  345. }
  346. }
  347. function fCalcBaseDt(rgst_dd) {
  348. // 실행기준일 계산 (rgst_dd가 Date형일 경우 getAddDate계산 후 sche_base_dd와 같은 날짜로 변경되어 String형으로 사용)
  349. var sche_base_dd;
  350. var exec_base_dd_flag = model.getValue("/root/main/trgt/trgtattr/execbaseddflag");
  351. var exec_base_dayno = model.getValue("/root/main/trgt/trgtattr/execbasedayno");
  352. var exec_base_mm = model.getValue("/root/main/trgt/trgtattr/execbasemm");
  353. var exec_base_dd = model.getValue("/root/main/trgt/trgtattr/execbasedd");
  354. var exec_base_spcl_dd = model.getValue("/root/main/trgt/trgtattr/execbasespcldd");
  355. if (exec_base_dd_flag == "1") {
  356. sche_base_dd = rgst_dd.toDate().getAddDate(parseInt(exec_base_dayno), "D");
  357. sche_base_dd = getDateTime(sche_base_dd, "D");
  358. } else if (exec_base_dd_flag == "2") {
  359. sche_base_dd = rgst_dd.toDate().getAddDate(parseInt(exec_base_mm), "M");
  360. sche_base_dd = sche_base_dd.getAddDate(parseInt(exec_base_dd), "D");
  361. sche_base_dd = getDateTime(sche_base_dd, "D");
  362. } else if (exec_base_dd_flag == "3") {
  363. sche_base_dd = exec_base_spcl_dd;
  364. }
  365. return sche_base_dd;
  366. }
  367. function fCalcScheDt(sche_base_dd, delive_sche_dayno, bf_aft_flag, delive_sche_tm) {
  368. // 실제실행일시 계산
  369. var cmpn_exec_dt;
  370. if (bf_aft_flag == "B") delive_sche_dayno = (0 - delive_sche_dayno);
  371. cmpn_exec_dt = sche_base_dd.toDate().getAddDate(parseInt(delive_sche_dayno), "D");
  372. cmpn_exec_dt = getDateTime(cmpn_exec_dt, "D") + delive_sche_tm + "00";
  373. return cmpn_exec_dt;
  374. }
  375. function fGridSetStatus(grid, stat) {
  376. // 멀티업데이트 그리드의 상태값을 설정
  377. if (grid.rows > 0) {
  378. for (i = 0; i < grid.rows; i++) {
  379. grid.addStatus(i, stat);
  380. }
  381. }
  382. }
  383. function fCheckTrgt() {
  384. var exec_base_dd_flag = model.getValue("/root/main/trgt/trgtattr/execbaseddflag");
  385. var exec_base_dayno = model.getValue("/root/main/trgt/trgtattr/execbasedayno");
  386. var exec_base_mm = model.getValue("/root/main/trgt/trgtattr/execbasemm");
  387. var exec_base_dd = model.getValue("/root/main/trgt/trgtattr/execbasedd");
  388. var exec_base_spcl_dd = model.getValue("/root/main/trgt/trgtattr/execbasespcldd");
  389. if (model.getValue("/root/main/trgt/trgtattr/pid")==""){
  390. messageBox("등록번호를","C001");
  391. model.setFocus("ipt_pid");
  392. } else if (model.getValue("/root/main/trgt/trgtattr/hngnm")==""){
  393. messageBox("고객(대상자)명을","C001");
  394. model.setFocus("ipt_trgtnm");
  395. } else if (model.getValue("/root/main/trgt/trgtattr/cmpnnm")==""){
  396. messageBox("캠페인명을","C001");
  397. model.setFocus("ipt_cmpnnm_t");
  398. } else if (model.getValue("/root/main/trgt/trgtattr/cmpncd")=="") {
  399. messageBox("캠페인코드를","C001");
  400. model.setFocus("ipt_cmpncd_t");
  401. } else if (model.getValue("/root/main/trgt/trgtattr/rgstdeptcd")=="") {
  402. messageBox("캠페인 실행부서를","C002");
  403. model.setFocus("ipt_deptnm_t");
  404. // 실행기준일 입력 체크
  405. } else if (exec_base_dd_flag=="1" && exec_base_dayno=="") {
  406. messageBox("실행 기준일을","C001");
  407. model.setFocus("ipt_exebase11_t");
  408. } else if (exec_base_dd_flag=="2" && exec_base_mm=="") {
  409. messageBox("실행 기준일을","C001");
  410. model.setFocus("ipt_exebase21_t");
  411. } else if (exec_base_dd_flag=="3" && exec_base_spcl_dd=="") {
  412. messageBox("실행 기준일을","C001");
  413. model.setFocus("ipt_exebase31_t");
  414. // 실행예정일 입력 체크
  415. } else if (grd_exedatelist_t.rows == 1) {
  416. messageBox("실행 예정일을 추가하지","E007");
  417. model.setFocus("ipt_exedate_t");
  418. // 속성이 연결성일 경우 연결 캠페인 추가
  419. } else if (model.getValue("/root/main/trgt/trgtattr/cmpnexecattr")=="3" && grd_cmpnlnklist_t.rows == 1) {
  420. messageBox("연결 캠페인을 추가하지","E007");
  421. model.setFocus("ipt_cmpnlnkcd_t");
  422. // 실행기준일 변경 시 '변경'버튼으로 실행일시 변경여부 확인
  423. } else if (model.getValue("/root/temp/trgtattr/oldtrgtattr/execbaseddflag") != exec_base_dd_flag ||
  424. model.getValue("/root/temp/trgtattr/oldtrgtattr/execbasedayno") != exec_base_dayno ||
  425. model.getValue("/root/temp/trgtattr/oldtrgtattr/execbasemm") != exec_base_mm ||
  426. model.getValue("/root/temp/trgtattr/oldtrgtattr/execbasedd") != exec_base_dd ||
  427. model.getValue("/root/temp/trgtattr/oldtrgtattr/execbasespcldd") != exec_base_spcl_dd) {
  428. messageBox("실행기준일 변경 후 실행일시를 변경하지","E007");
  429. model.setFocus("btn_execbase_set");
  430. } else {
  431. return true;
  432. }
  433. }
  434. // 그리드 전체 행을 선택한다.
  435. function fGridAllRow(mode) {
  436. // 주소록 그룹 조회
  437. if (mode == "A") {
  438. var rows = grd_innrclntlist.rows;
  439. var fRow = grd_innrclntlist.fixedRows;
  440. var chk = grd_innrclntlist.valueMatrix(1, grd_innrclntlist.colRef("chk"));
  441. var boolchk = model.getValue("/root/main/chkvalue1");
  442. if (boolchk == "Y") {
  443. for(var i=fRow; i<rows; i++) {
  444. grd_innrclntlist.valueMatrix(i, grd_innrclntlist.colRef("chk"))="Y";
  445. }
  446. } else {
  447. for(var i=fRow; i<rows; i++) {
  448. grd_innrclntlist.valueMatrix(i, grd_innrclntlist.colRef("chk"))="N";
  449. }
  450. }
  451. model.refresh();
  452. // 그룹 내역
  453. } else if (mode == "B") {
  454. var rows = grd_choiinnrclntlist.rows;
  455. var fRow = grd_choiinnrclntlist.fixedRows;
  456. var chk = grd_choiinnrclntlist.valueMatrix(1, grd_choiinnrclntlist.colRef("chk"));
  457. var boolchk = model.getValue("/root/main/chkvalue2");
  458. if (boolchk == "Y") {
  459. for(var i=fRow; i<rows; i++){
  460. grd_choiinnrclntlist.valueMatrix(i, grd_choiinnrclntlist.colRef("chk"))="Y";
  461. }
  462. } else {
  463. for(var i=fRow; i<rows; i++){
  464. grd_choiinnrclntlist.valueMatrix(i, grd_choiinnrclntlist.colRef("chk"))="N";
  465. }
  466. }
  467. model.refresh();
  468. } else if (mode == "C") { // 데이터 이동 후 마스터 목록 선택 해제
  469. var rows = grd_innrclntlist.rows;
  470. var fRow = grd_innrclntlist.fixedRows;
  471. var chk = grd_innrclntlist.valueMatrix(1, grd_innrclntlist.colRef("chk"));
  472. for(var i=fRow; i<rows; i++){
  473. grd_innrclntlist.valueMatrix(i, grd_innrclntlist.colRef("chk"))="N";
  474. }
  475. model.setValue("/root/main/chkvalue1", "");
  476. }
  477. model.refresh();
  478. }
  479. ]]>
  480. </script>
  481. </xhtml:head>
  482. <xhtml:body pagewidth="908" pageheight="622" style="border-color:#c7a3cf; ">
  483. <group id="group1" style="left:0px; top:0px; width:908px; height:622px; ">
  484. <group id="group2" style="left:0px; top:0px; width:900px; height:13px; ">
  485. <caption id="caption1" class="tit_1" style="left:0px; top:0px; width:200px; height:13px; ">주소록 그룹 리스트</caption>
  486. </group>
  487. <caption id="caption9" class="tit_2" style="left:225px; top:22px; width:200px; height:14px; ">주소록 그룹 조회</caption>
  488. <group id="grp_johe" style="left:225px; top:36px; width:675px; height:35px; vertical-align:top; ">
  489. <shape id="roundrect1" class="roundrect_search" appearance="roundrect" ellipsewidth="10" ellipseheight="10" style="left:0px; top:0px; width:675px; height:35px; background-color:#fffbf2; border-color:#ffd799; "/>
  490. <caption id="caption2" class="search_name" style="left:15px; top:9px; width:90px; height:17px; ">검색조건 :</caption>
  491. <select1 id="cmb_searchtype" ref="/root/send/data/searchtype" appearance="minimal" style="left:109px; top:8px; width:130px; height:19px; ">
  492. <choices>
  493. <item>
  494. <label>전체</label>
  495. <value/>
  496. </item>
  497. <item>
  498. <label>내부 고객명</label>
  499. <value>1</value>
  500. </item>
  501. <item>
  502. <label>휴대폰 번호</label>
  503. <value>2</value>
  504. </item>
  505. <item>
  506. <label>e-mail</label>
  507. <value>3</value>
  508. </item>
  509. </choices>
  510. </select1>
  511. <input id="ipt_search_item" ref="/root/send/data/searchstring" class="input_s_essential" navindex="2" style="left:244px; top:8px; width:130px; height:19px; ">
  512. <script type="javascript" ev:event="onkeyup">
  513. <![CDATA[
  514. inputEnterKey("btn_search", "DOMActivate");
  515. ]]>
  516. </script>
  517. </input>
  518. <line id="line13" style="x1:589px; y1:5px; x2:589px; y2:27px; border-color:#ffe4bb; border-left-style:solid; "/>
  519. <button id="btn_search" class="btn1_letter2" navindex="3" style="left:604px; top:7px; width:56px; height:22px; ">
  520. <caption>조회</caption>
  521. <script type="javascript" ev:event="DOMActivate">
  522. <![CDATA[
  523. if(model.getValue("/root/send/data/searchtype")=="1"){//이름조회
  524. model.setValue("/root/send/data/innrclntnm", model.getValue("/root/send/data/searchstring"));
  525. model.setValue("/root/send/data/mpphonno", "");
  526. model.setValue("/root/send/data/email", "");
  527. }else if(model.getValue("/root/send/data/searchtype")=="2"){//핸드폰 조회
  528. model.setValue("/root/send/data/mpphonno", model.getValue("/root/send/data/searchstring"));
  529. model.setValue("/root/send/data/innrclntnm", "");
  530. model.setValue("/root/send/data/email", "");
  531. }else if(model.getValue("/root/send/data/searchtype")=="3"){//email조회
  532. model.setValue("/root/send/data/email", model.getValue("/root/send/data/searchstring"));
  533. model.setValue("/root/send/data/innrclntnm", "");
  534. model.setValue("/root/send/data/mpphonno", "");
  535. }else{
  536. model.setValue("/root/send/data/innrclntnm", "");
  537. model.setValue("/root/send/data/mpphonno", "");
  538. model.setValue("/root/send/data/email", "");
  539. }
  540. submit("TRCMS00501");
  541. ]]>
  542. </script>
  543. </button>
  544. </group>
  545. <group id="grp_body" style="left:225px; top:71px; width:675px; height:310px; ">
  546. <line id="line2" class="line_1" style="x1:0px; y1:10px; x2:675px; y2:10px; "/>
  547. <datagrid id="grd_innrclntlist" nodeset="/root/main/list/userlist" caption="^주소록 그룹명^성 명^E-Mail^휴대전화^" colwidth="20, 280, 90, 160, 100, 0" dataheight="23" extendlastcol="scroll" mergecellsfixedrows="bycolrec" rowheight="23" style="left:0px; top:15px; width:675px; height:295px; margin-left:0; margin-top:0; margin-right:0; margin-bottom:0; ">
  548. <col checkvalue="Y,N" ref="chk" type="checkbox" style="text-align:center; "/>
  549. <col ref="innrgrupnm"/>
  550. <col ref="innrclntnm"/>
  551. <col ref="email"/>
  552. <col ref="mpphontel"/>
  553. <col ref="innrclntid" visibility="hidden"/>
  554. </datagrid>
  555. </group>
  556. <group id="group3" style="left:225px; top:381px; width:675px; height:210px; ">
  557. <caption id="caption3" class="tit_2" style="left:0px; top:10px; width:200px; height:13px; ">그룹내역</caption>
  558. <button id="btn_saveexcel" class="btn2_letter3" style="left:555px; top:4px; width:53px; height:19px; ">
  559. <caption>초기화</caption>
  560. <script type="javascript" ev:event="DOMActivate">
  561. <![CDATA[
  562. fGridRowAddRow(grd_choiinnrclntlist,grd_innrclntlist,"del");
  563. ]]>
  564. </script>
  565. </button>
  566. <button id="button1" class="btn2_letter4" style="left:611px; top:4px; width:64px; height:19px; ">
  567. <caption>그룹추가</caption>
  568. <script type="javascript" ev:event="DOMActivate">
  569. <![CDATA[
  570. fGridRowAddRow(grd_innrclntlist,grd_choiinnrclntlist,"add");
  571. var mode = "C";
  572. fGridAllRow(mode);
  573. ]]>
  574. </script>
  575. </button>
  576. <line id="line1" class="line_1" style="x1:0px; y1:24px; x2:675px; y2:24px; "/>
  577. <!--<datagrid id="grd_choiinnrclntlist" nodeset="/root/main/list/choiinnrclntlist" caption="^주소록 그룹명^성명^산정기준일^특정일^업데이트 구분^업데이트실행시간^" colwidth="20, 200, 70, 80, 90, 90, 100, 0" dataheight="23" extendlastcol="scroll" mergecellsfixedrows="bycolrec" rowheight="23" style="left:0px; top:29px; width:675px; height:181px; margin-left:0; margin-top:0; margin-right:0; margin-bottom:0; ">
  578. <col checkvalue="Y,N" ref="chk" type="checkbox" style="text-align:center; "/>
  579. <col ref="innrgrupnm"/>
  580. <col ref="innrclntnm"/>
  581. <col disabled="true" ref="appbasedd" type="combo" _key="true">
  582. <choices>
  583. <itemset nodeset="/root/init/C0032list/C0032">
  584. <label ref="cdnm"/>
  585. <value ref="cdid"/>
  586. </itemset>
  587. </choices>
  588. </col>
  589. <col ref="spcldd" type="inputdate" format="yyyy-mm-dd"/>
  590. <col ref="clintdupltretmthd" type="combo" _key="true">
  591. <choices>
  592. <itemset nodeset="/root/init/C0031list/C0031">
  593. <label ref="cdnm"/>
  594. <value ref="cdid"/>
  595. </itemset>
  596. </choices>
  597. </col>
  598. <col class="text_center" ref="daydd" type="input" format="hh:nn"/>
  599. <col ref="innrclntid" visibility="hidden"/>
  600. </datagrid>-->
  601. <datagrid id="grd_choiinnrclntlist" nodeset="/root/main/list/choiinnrclntlist" caption="^주소록 그룹명^성명^E-Mail^휴대전화^" colwidth="20, 290, 90, 160, 100, 0" dataheight="23" extendlastcol="scroll" mergecellsfixedrows="bycolrec" rowheight="23" style="left:0px; top:29px; width:675px; height:181px; margin-left:0; margin-top:0; margin-right:0; margin-bottom:0; ">
  602. <col checkvalue="Y,N" ref="chk" type="checkbox" style="text-align:center; "/>
  603. <col ref="innrgrupnm"/>
  604. <col ref="innrclntnm"/>
  605. <col ref="email"/>
  606. <col ref="mpphontel"/>
  607. <col ref="innrclntid" visibility="hidden"/>
  608. </datagrid>
  609. <datagrid id="grd_cmpnlnklist_t" nodeset="/root/main/trgt/cmpnlnklist" visibility="hidden" caption="캠페인명^캠페인코드" colwidth="100, 90, 0, 0, 0, 0" dataheight="23" extendlastcol="scroll" mergecellsfixedrows="bycolrec" rowheader="update" rowheight="23" style="left:5px; top:155px; width:228px; height:46px; ">
  610. <col ref="nextcmpnnm"/>
  611. <col ref="nextcmpncd"/>
  612. <col ref="cmpncd" visibility="hidden"/>
  613. <col ref="cmpnrgstdt" visibility="hidden"/>
  614. <col ref="pid" visibility="hidden"/>
  615. <col ref="rgstseq" visibility="hidden"/>
  616. </datagrid>
  617. <datagrid id="grd_execlist" nodeset="/root/main/trgt/execlist" visibility="hidden" caption="적용기준일^실행(예정)일시^실행여부" colwidth="120, 160, 80" dataheight="23" extendlastcol="scroll" rowheader="seq" rowheight="23" style="left:250px; top:80px; width:407px; height:40px; text-align:center; ">
  618. <col ref="cmpnrgstdt" format="yyyy-mm-dd"/>
  619. <col ref="cmpnexecdt" format="yyyy-mm-dd hh:nn"/>
  620. <col ref="execyn"/>
  621. </datagrid>
  622. <datagrid id="grd_exedatelist_t" nodeset="/root/main/trgt/delivelist" visibility="hidden" caption="전송 D-day^전송실행일^전후^전송시간^SMS^SMS코드^Email^Email코드^^^^^^^^^" colwidth="90, 90, 40, 60, 40, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0" dataheight="23" extendlastcol="scroll" mergecellsfixedrows="bycolrec" rowheader="update" rowheight="23" style="left:250px; top:130px; width:407px; height:70px; text-align:center; ">
  623. <col ref="deliveschedayno1"/>
  624. <col ref="deliveschedayno"/>
  625. <col disabled="true" ref="bfaftflag" type="combo">
  626. <choices>
  627. <itemset nodeset="/root/init/comncdlist/C0014list/C0014">
  628. <label ref="cdnm"/>
  629. <value ref="cdid"/>
  630. </itemset>
  631. </choices>
  632. </col>
  633. <col ref="deliveschetm" format="hh:nn"/>
  634. <col ref="smsuseyn"/>
  635. <col ref="smsmsgsmlcd" visibility="hidden"/>
  636. <col ref="emailuseyn"/>
  637. <col ref="emailmsgsmlcd" visibility="hidden"/>
  638. <col ref="cmpncd" visibility="hidden"/>
  639. <col ref="cmpnrgstdt" visibility="hidden"/>
  640. <col ref="pid" visibility="hidden"/>
  641. <col ref="rgstseq" visibility="hidden"/>
  642. <col ref="cmpnexecdt" visibility="hidden"/>
  643. <col ref="smsmsglrgcd" visibility="hidden"/>
  644. <col ref="smsmsgmdlcd" visibility="hidden"/>
  645. <col ref="emailmsglrgcd" visibility="hidden"/>
  646. <col ref="emailmsgmdlcd" visibility="hidden"/>
  647. </datagrid>
  648. <bool id="bool2" checkvalue="Y,N" ref="/root/main/chkvalue2" style="left:3px; top:34px; width:15px; height:15px; ">
  649. <script type="javascript" ev:event="xforms-value-changed">
  650. <![CDATA[
  651. var mode = "B";
  652. fGridAllRow(mode);
  653. ]]>
  654. </script>
  655. </bool>
  656. </group>
  657. <group id="group5" scroll="auto" style="left:0px; top:595px; width:900px; height:27px; ">
  658. <button id="btn_savetrgt" class="btn4_letter2" style="left:785px; top:5px; width:56px; height:22px; ">
  659. <caption>확인</caption>
  660. <script type="javascript" ev:event="DOMActivate">
  661. <![CDATA[
  662. fSaveTrgt();
  663. ]]>
  664. </script>
  665. </button>
  666. <button id="button3" class="btn4_letter2" style="left:844px; top:5px; width:56px; height:22px; ">
  667. <caption>닫기</caption>
  668. <close ev:event="DOMActivate"/>
  669. </button>
  670. </group>
  671. <group id="group12" style="left:0px; top:13px; width:215px; height:582px; ">
  672. <caption id="caption30" class="tit_2" style="left:0px; top:10px; width:215px; height:13px; ">주소록 그룹</caption>
  673. <button id="btn_chos" class="btn_sw" group="tab" style="left:115px; top:1px; width:50px; height:22px; ">
  674. <caption>부서</caption>
  675. <script type="javascript" ev:event="DOMActivate">
  676. <![CDATA[
  677. model.toggle("case1");
  678. ]]>
  679. </script>
  680. </button>
  681. <button id="button4" class="btn_sw" group="tab" style="left:165px; top:1px; width:50px; height:22px; ">
  682. <caption>개인</caption>
  683. <script type="javascript" ev:event="DOMActivate">
  684. <![CDATA[
  685. model.toggle("case2");
  686. ]]>
  687. </script>
  688. </button>
  689. <group id="grp_tree" scroll="auto" style="left:0px; top:23px; width:215px; height:557px; ">
  690. <line id="lin_tree" class="line_1" style="x1:0px; y1:0px; x2:215px; y2:0px; "/>
  691. <switch id="switch2" style="left:0px; top:5px; width:215px; height:550px; border-color:#c7a3cf; border-style:solid; ">
  692. <case id="case1" selected="true">
  693. <treeview id="trv_leftmenu" ref="/root/main/innrgrupinfo/indgruplist" expanddepth="2" fullrowselect="true" oneclickexpand="true" style="left:0px; top:0px; width:213px; height:548px; ">
  694. <itemset nodeset="/root/main/innrgrupinfo/indgruplist">
  695. <label ref="indgrupnm"/>
  696. <value ref="indgrupid"/>
  697. <depth ref="depth"/>
  698. </itemset>
  699. <script type="javascript" ev:event="xforms-select">
  700. <![CDATA[
  701. var indgrupid = trv_leftmenu.value;
  702. var indgrupnm = trv_leftmenu.label;
  703. if (indgrupid > 0) {
  704. model.setValue("/root/send/innrgrupid", indgrupid);
  705. submit("TRCMS00502");
  706. var sRows = grd_innrclntlist.rows;
  707. var sfRow = grd_innrclntlist.fixedRows;
  708. for(var i=sfRow; i<sRows; i++){
  709. grd_innrclntlist.valueMatrix(i, grd_innrclntlist.colRef("innrgrupnm")) = indgrupnm;
  710. }
  711. model.refresh();
  712. }
  713. ]]>
  714. </script>
  715. </treeview>
  716. </case>
  717. <case id="case2">
  718. <treeview id="trv_leftmenu1" ref="/root/main/innrgrupinfo/deptgruplist" expanddepth="2" fullrowselect="true" oneclickexpand="true" style="left:0px; top:0px; width:213px; height:548px; ">
  719. <itemset nodeset="/root/main/innrgrupinfo/deptgruplist">
  720. <label ref="deptgrupnm"/>
  721. <value ref="deptgrupid"/>
  722. <depth ref="depth"/>
  723. </itemset>
  724. <script type="javascript" ev:event="xforms-select">
  725. <![CDATA[
  726. var deptgrupid = trv_leftmenu1.value;
  727. var deptgrupnm = trv_leftmenu1.label;
  728. if (deptgrupid > 0) {
  729. model.setValue("/root/send/innrgrupid", deptgrupid);
  730. submit("TRCMS00502");
  731. var sRows = grd_innrclntlist.rows;
  732. var sfRow = grd_innrclntlist.fixedRows;
  733. for(var i=sfRow; i<sRows; i++){
  734. grd_innrclntlist.valueMatrix(i, grd_innrclntlist.colRef("innrgrupnm")) = deptgrupnm;
  735. }
  736. model.refresh();
  737. }
  738. ]]>
  739. </script>
  740. </treeview>
  741. </case>
  742. </switch>
  743. </group>
  744. </group>
  745. <bool id="bool1" checkvalue="Y,N" ref="/root/main/chkvalue1" style="left:228px; top:91px; width:15px; height:15px; ">
  746. <script type="javascript" ev:event="xforms-value-changed">
  747. <![CDATA[
  748. var mode = "A";
  749. fGridAllRow(mode);
  750. ]]>
  751. </script>
  752. </bool>
  753. </group>
  754. </xhtml:body>
  755. </xhtml:html>