SPCIT01800_만족도답변정보.xrw 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415
  1. <?xml version="1.0" encoding="EUC-KR"?>
  2. <!--
  3. * Name : SPCIT01800_만족도입력정보
  4. * Summary : 만족도입력정보
  5. * Programmer : 황현석
  6. * Date Written : 2010.12.08
  7. * History :
  8. * Remark :
  9. -->
  10. <?xml-stylesheet href="../../../com/commonweb/css/common.css" type="text/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. <title>
  19. <stinseqno/>
  20. <stintitlcnts/>
  21. <qpaprseqno/>
  22. <qpaprtitlcnts/>
  23. <answprsncnt/>
  24. </title>
  25. <rsltlist>
  26. <row/>
  27. <key/>
  28. </rsltlist>
  29. <execlist>
  30. <answprsnseqno/>
  31. <stintrgtflagcd/>
  32. <stintrgtid/>
  33. <qestseqno/>
  34. <emaladdr/>
  35. <lists/>
  36. </execlist>
  37. </main>
  38. <send>
  39. <qestprvw>
  40. <qpaprseqno/>
  41. <stinseqno/>
  42. <stintrgtid/>
  43. </qestprvw>
  44. </send>
  45. <temp>
  46. <rsltlist/>
  47. </temp>
  48. </root>
  49. </instance>
  50. <submission id="TRCIT01801" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/qestprvw" resultref="/root/main/execlist"/>
  51. <submission id="TRCIT01802" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/qestprvw" resultref="/root/temp/rsltlist"/>
  52. <submission id="TXCIT01801" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/savedata"/>
  53. <submission id="TXCIT01802" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/deldata"/>
  54. </model>
  55. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  56. <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
  57. <script type="javascript" src="../../../com/commonweb/js/stringHelper.js"/>
  58. <script type="javascript" ev:event="xforms-ready">
  59. <![CDATA[
  60. // 부모창의 설문지 일련번호를 가져온다.
  61. var qpaprseqno = opener.window.javascript.getParameter("qpaprseqno");
  62. model.setValue("/root/main/title/qpaprseqno", qpaprseqno);
  63. model.setValue("/root/send/qestprvw/qpaprseqno", qpaprseqno);
  64. var stinseqno = opener.window.javascript.getParameter("stinseqno");
  65. model.setValue("/root/main/title/stinseqno", stinseqno);
  66. model.setValue("/root/send/qestprvw/stinseqno", stinseqno);
  67. var qpaprtitlcnts = opener.window.javascript.getParameter("qpaprtitlcnts");
  68. model.setValue("/root/main/title/qpaprtitlcnts", qpaprtitlcnts);
  69. var stintitlcnts = opener.window.javascript.getParameter("stintitlcnts");
  70. model.setValue("/root/main/title/stintitlcnts", stintitlcnts);
  71. var answprsncnt = opener.window.javascript.getParameter("answprsncnt");
  72. model.setValue("/root/main/title/answprsncnt", answprsncnt);
  73. var answprsncnt = opener.window.javascript.getParameter("answprsncnt");
  74. model.setValue("/root/main/title/answprsncnt", answprsncnt);
  75. fGetNResultRef();
  76. model.refresh();
  77. ]]>
  78. </script>
  79. <script type="javascript">
  80. <![CDATA[
  81. function fGetNResultRef() {
  82. submit("TRCIT01802", false);
  83. var gridCaption = model.getValue("/root/temp/rsltlist/header/caption");
  84. if(gridCaption == "") return;
  85. //ref 정보
  86. var gridColRef = model.getValue("/root/temp/rsltlist/header/colref");
  87. var gridColRefArray = gridColRef.split("^");
  88. var gridColType = model.getValue("/root/temp/rsltlist/header/type");
  89. var gridColTypeArray = gridColType.split("^");
  90. for( var i = 0; i < gridColRefArray.length; i++ ) {
  91. datagrid1.addColumn("ref:" + gridColRefArray[i] + "; type:"+gridColTypeArray[i]+"; ", false);
  92. datagrid1.colWidth(i+1) = 90;
  93. }
  94. datagrid1.caption = gridCaption;
  95. var node = instance1.selectSingleNode("/root/main");
  96. node.replaceChild(instance1.root.temp.rsltlist, instance1.root.main.rsltlist);
  97. datagrid1.rowheight(0) = 30;
  98. datagrid1.rebuild();
  99. // fSetExec();
  100. }
  101. function fSetExec() {
  102. var rows = datagrid1.rows-datagrid1.fixedRows;
  103. for( var i = 0; i < rows; i++ ) {
  104. datagrid1.removeRow(false);
  105. }
  106. submit("TRCIT01801", false);
  107. // ref 내용
  108. var gridColRef = model.getValue("/root/main/rsltlist/header/colrefarray");
  109. var gridColRefArray = gridColRef.split("^");
  110. // caption 내용
  111. var gridCaption = model.getValue("/root/main/rsltlist/header/caption");
  112. var gridCaptionArray = gridCaption.split("^");
  113. // 생성해야할 row 개수
  114. var answprsncnt = getNodesetCount("/root/main/execlist");
  115. for (var i = 1; i <= answprsncnt; i++) {
  116. datagrid1.addRow(false);
  117. model.setValue("/root/main/rsltlist/row["+i+"]/stintrgtflagcd", model.getValue("/root/main/execlist["+i+"]/stintrgtflagcd"));
  118. model.setValue("/root/main/rsltlist/row["+i+"]/stintrgtid", model.getValue("/root/main/execlist["+i+"]/stintrgtid"));
  119. model.setValue("/root/main/rsltlist/row["+i+"]/emailaddr", model.getValue("/root/main/execlist["+i+"]/emailaddr"));
  120. model.setValue("/root/main/rsltlist/row["+i+"]/answprsnseqno", model.getValue("/root/main/execlist["+i+"]/answprsnseqno"));
  121. // 답변 리스트 내용
  122. var temp = model.getValue("/root/main/execlist["+ i +"]/lists");
  123. var tempArray = temp.split("@*");
  124. for (var j=0; j < tempArray.length; j++) {
  125. var sTmp = gridCaptionArray[j+4];
  126. if(!isNull(sTmp)) {
  127. var temCaption = sTmp.substring(0, 1);
  128. model.setValue("/root/main/rsltlist/row["+i+"]/"+gridColRefArray[j], tempArray[j]);
  129. if (temCaption == "*") {
  130. datagrid1.colAttribute(j+5, "visibility") = "hidden";
  131. }
  132. datagrid1.colAttribute(4, "visibility") = "hidden";
  133. }
  134. }
  135. }
  136. var stintrgtflagcd = opener.window.javascript.getParameter("stintrgtflagcd");
  137. var stintrgtid = model.getValue("/root/send/qestprvw/stintrgtid");
  138. if (stintrgtid != "") {
  139. if (stintrgtflagcd == "1" || stintrgtflagcd == "2" || stintrgtflagcd == "3") {
  140. model.setValue("/root/send/qestprvw/pid", "");
  141. } else {
  142. model.setValue("/root/send/qestprvw/userid", "");
  143. }
  144. }
  145. datagrid1.rebuild();
  146. model.refresh();
  147. }
  148. function fSaveMode() {
  149. var qestCount = (datagrid1.cols-5) / 2;
  150. var stinseqno = model.getValue("/root/main/title/stinseqno");
  151. var qpaprseqno = model.getValue("/root/main/title/qpaprseqno");
  152. var answprsncnt = model.getValue("/root/main/title/answprsncnt");
  153. var stintrgtflagcd = "";
  154. var pid = "";
  155. var userid = "";
  156. var rows = "";
  157. var sColSep = "▦";
  158. var sRowSep = "▩";
  159. var qestrspsyn = "";
  160. var send_data2 = "m" + sColSep + "stinseqno" + sColSep + "qpaprseqno" + sColSep + "qestitemgrupseqno" + sColSep + "answprsnseqno" +
  161. sColSep + "qestseqno" + sColSep + "stintrgtflagcd" + sColSep + "pid" + sColSep + "userid" + sColSep + "emailaddr" +
  162. sColSep + "qestanswno" + sColSep + "qestmltlanswno" + sColSep + "descinptcnts" + sColSep + "descinptaddcnts" + sColSep + "qestrspsyn" + sRowSep; //타이틀 map file 등에서 사용
  163. for (var i=0; i < answprsncnt; i++) { // row 개수만큼
  164. stintrgtflagcd = datagrid1.valueMatrix((i+1), datagrid1.colRef("stintrgtflagcd"));
  165. for (var k=0; k < qestCount; k++) { // 문항 개수만큼
  166. var qestseqno = datagrid3.valueMatrix((k+1), datagrid3.colRef("qestseqno"));
  167. var qestitemgrupseqno = datagrid3.valueMatrix((k+1), datagrid3.colRef("qestitemgrupseqno"));
  168. var itemkindcd = datagrid3.valueMatrix((k+1), datagrid3.colRef("itemkindcd"));
  169. var descinptcnts = datagrid1.valueMatrix((i+1), datagrid1.colRef("descinptcnts"+k));
  170. var qestanswno = datagrid1.valueMatrix((i+1), datagrid1.colRef("qestanswno"+k));
  171. var qestmltlanswno = datagrid1.valueMatrix((i+1), datagrid1.colRef("qestmltlanswno"+k));
  172. var descinptaddcnts = datagrid1.valueMatrix((i+1), datagrid1.colRef("descinptaddcnts"+k));
  173. var answprsnseqno = datagrid1.valueMatrix((i+1), datagrid1.colRef("answprsnseqno"));
  174. var emailaddr = datagrid1.valueMatrix((i+1), datagrid1.colRef("emailaddr"));
  175. // 답변자 id 설정
  176. if (stintrgtflagcd == "1" || stintrgtflagcd == "2" || stintrgtflagcd == "3") {
  177. pid = datagrid1.valueMatrix((i+1), datagrid1.colRef("stintrgtid"));
  178. } else {
  179. userid = datagrid1.valueMatrix((i+1), datagrid1.colRef("stintrgtid"));
  180. }
  181. if (itemkindcd == "1" || itemkindcd == "6" || itemkindcd == "7" || itemkindcd == "8" || itemkindcd == "10") {
  182. if (qestanswno == "" || qestanswno == "0") {
  183. qestanswno = "99";
  184. qestrspsyn = "N";
  185. } else {
  186. qestrspsyn = "Y";
  187. }
  188. } else if (itemkindcd == "2") {
  189. if (qestmltlanswno == "" || qestmltlanswno == "0") {
  190. qestmltlanswno = "99";
  191. qestrspsyn = "N";
  192. } else {
  193. qestrspsyn = "Y";
  194. }
  195. } else if (itemkindcd == "3") {
  196. if (qestmltlanswno == "" || qestmltlanswno == "0") {
  197. qestmltlanswno = "99:99";
  198. qestrspsyn = "N";
  199. } else {
  200. qestrspsyn = "Y";
  201. }
  202. } else {
  203. if (descinptcnts == "" || descinptcnts == "0") {
  204. qestanswno = "99";
  205. qestrspsyn = "N";
  206. } else {
  207. qestanswno = "1";
  208. qestrspsyn = "Y";
  209. }
  210. }
  211. send_data2 += "m" + sColSep + stinseqno + sColSep + qpaprseqno + sColSep + qestitemgrupseqno + sColSep + answprsnseqno +
  212. sColSep + qestseqno + sColSep + stintrgtflagcd + sColSep + pid + sColSep + userid + sColSep + emailaddr +
  213. sColSep + qestanswno + sColSep + qestmltlanswno + sColSep + descinptcnts + sColSep + descinptaddcnts + sColSep + qestrspsyn + sRowSep;
  214. }
  215. }
  216. model.makeNode("/root/send/savedata");
  217. model.makeValue("/root/send/savedata/savegrid", send_data2);
  218. if (submit("TXCIT01801")) {
  219. messageBox("만족도 답변정보 수정이","I002");
  220. }
  221. model.removeNodeset("/root/send/savedata");
  222. model.refresh();
  223. }
  224. ]]>
  225. </script>
  226. </xhtml:head>
  227. <xhtml:body pagewidth="1030" pageheight="620" style="margin-left:8; margin-top:8; margin-right:8; margin-bottom:8; ">
  228. <line id="line3" class="line_2" style="x1:0px; y1:54px; x2:1000px; y2:54px; "/>
  229. <caption id="caption1" class="cell_1" style="left:0px; top:32px; width:100px; height:23px; ">만족도 제목</caption>
  230. <input id="input1" ref="/root/main/title/stintitlcnts" disabled="true" style="left:103px; top:33px; width:896px; height:19px; "/>
  231. <line id="line4" class="line_3" style="x1:0px; y1:78px; x2:1000px; y2:78px; "/>
  232. <caption id="caption2" class="cell_1" style="left:0px; top:56px; width:100px; height:23px; ">설문지</caption>
  233. <input id="input2" ref="/root/main/title/qpaprtitlcnts" disabled="true" style="left:103px; top:57px; width:797px; height:19px; "/>
  234. <button id="button1" class="btn2_letter7" style="left:903px; top:57px; width:97px; height:19px; ">
  235. <caption>설문지 미리보기</caption>
  236. <script type="javascript" ev:event="DOMActivate">
  237. <![CDATA[
  238. var qpaprseqno = model.getValue("/root/send/qestprvw/qpaprseqno");
  239. setParameter("qpaprseqno", qpaprseqno);
  240. modal("SPCIT00400");
  241. clearParameter("qpaprseqno");
  242. model.refresh();
  243. ]]>
  244. </script>
  245. </button>
  246. <button id="button2" class="btn5_letter2" style="left:958px; top:82px; width:42px; height:19px; ">
  247. <caption>삭제</caption>
  248. <script type="javascript" ev:event="DOMActivate">
  249. <![CDATA[
  250. var rowCount = datagrid1.selectedRows;
  251. var stinseqno = model.getValue("/root/main/title/stinseqno");
  252. var qpaprseqno = model.getValue("/root/main/title/qpaprseqno");
  253. var stintrgtflagcd = opener.window.javascript.getParameter("stintrgtflagcd");
  254. if (rowCount > 0) {
  255. var rtn = messageBox(rowCount + " 개의 답변이 삭제됩니다.", "Q001");
  256. if (rtn == 6) {
  257. for (var i=0; i<rowCount; i++) {
  258. var k = i+1;
  259. var cnt = datagrid1.selectedRow(i);
  260. var answprsnseqno = model.getValue("/root/main/rsltlist/row["+ cnt +"]/answprsnseqno");
  261. var stintrgtid = model.getValue("/root/main/rsltlist/row["+ cnt +"]/stintrgtid");
  262. model.makeNode("/root/send/deldata");
  263. if (stintrgtflagcd == "1" || stintrgtflagcd == "2" || stintrgtflagcd == "3") {
  264. model.makeValue("/root/send/deldata["+ k +"]/pid", stintrgtid);
  265. } else {
  266. model.makeValue("/root/send/deldata["+ k +"]/userid", stintrgtid);
  267. }
  268. model.makeValue("/root/send/deldata["+ k +"]/answprsnseqno", answprsnseqno);
  269. model.makeValue("/root/send/deldata["+ k +"]/stinseqno", stinseqno);
  270. model.makeValue("/root/send/deldata["+ k +"]/qpaprseqno", qpaprseqno);
  271. }
  272. if (submit("TXCIT01802")) {
  273. messageBox("만족도 답변정보 삭제가","I002");
  274. model.removeNodeset("/root/send/deldata");
  275. }
  276. fSetExec();
  277. }
  278. } else {
  279. messageBox("답변이 선택되지 ", "E007");
  280. }
  281. ]]>
  282. </script>
  283. </button>
  284. <button id="button3" class="btn2_letter4" style="left:891px; top:82px; width:64px; height:19px; ">
  285. <caption>엑셀저장</caption>
  286. <script type="javascript" ev:event="DOMActivate">
  287. <![CDATA[
  288. var fileName = window.fileDialog("save", ",", false, "만족도 답변정보 입력 결과", "xls", "All Files (*.*)|*.*|Excel Files(*.xls)|*.xls");
  289. if (fileName != "") {
  290. datagrid1.saveExcel(fileName);
  291. }
  292. model.refresh();
  293. ]]>
  294. </script>
  295. </button>
  296. <line id="line1" class="line_1" style="x1:0px; y1:104px; x2:1000px; y2:104px; "/>
  297. <datagrid id="datagrid1" nodeset="/root/main/rsltlist/row" allowbigselection="true" colsep="^" dataheight="25" ellipsis="true" explorerbar="sortshowmove" frozencols="3" mergecellsfixedrows="bycolrec" rowheader="seq" rowheight="30" rowsep="|" style="left:0px; top:109px; width:1000px; height:470px; "/>
  298. <group id="group1" style="left:0px; top:580px; width:1000px; height:27px; ">
  299. <button id="button4" class="btn4_letter2" style="left:443px; top:5px; width:56px; height:22px; ">
  300. <caption>저장</caption>
  301. <script type="javascript" ev:event="DOMActivate">
  302. <![CDATA[
  303. var rowCount = datagrid1.rows-1;
  304. var saveCount = 0;
  305. // 사용자 아이디를 검색
  306. for (var j=0; j < rowCount; j++) {
  307. var stintrgtid = datagrid1.valueMatrix((j+1), datagrid1.colRef("stintrgtid"));
  308. if (stintrgtid == "") {
  309. messageBox("설문지 ID를", "C001");
  310. saveCount = 0;
  311. break;
  312. } else {
  313. saveCount++;
  314. }
  315. }
  316. if (saveCount > 0) {
  317. fSaveMode();
  318. }
  319. ]]>
  320. </script>
  321. </button>
  322. <button id="button5" class="btn4_letter2" style="left:502px; top:5px; width:56px; height:22px; ">
  323. <caption>취소</caption>
  324. <close ev:event="DOMActivate"/>
  325. </button>
  326. </group>
  327. <datagrid id="datagrid3" nodeset="/root/main/rsltlist/key" visibility="hidden" caption="itemkindcd^qestitemgrupseqno^qestseqno" colsep="^" mergecellsfixedrows="bycolrec" rowsep="|" style="left:5px; top:167px; width:350px; height:150px; ">
  328. <col ref="itemkindcd"/>
  329. <col ref="qestitemgrupseqno"/>
  330. <col ref="qestseqno"/>
  331. </datagrid>
  332. <group id="group2" style="left:0px; top:0px; width:1000px; height:30px; ">
  333. <shape id="roundrect1" appearance="roundrect" style="left:0px; top:0px; width:1000px; height:30px; "/>
  334. <caption id="caption7" class="search_name" style="left:17px; top:7px; width:104px; height:17px; ">설문지 번호 :</caption>
  335. <input id="ipt_srchpid" ref="/root/send/qestprvw/stintrgtid" class="input_s_essential" navindex="2" maxlength="10" format="9999999999" style="left:127px; top:6px; width:140px; height:19px; ">
  336. <script type="javascript" ev:event="onkeyup">
  337. <![CDATA[
  338. inputEnterKey("btn_search", "DOMActivate");
  339. ]]>
  340. </script>
  341. </input>
  342. <caption id="caption3" class="hand" style="left:275px; top:6px; width:381px; height:20px; ">* 입력하신 설문지번호 이후의 100개의 설문만 표시 됩니다.</caption>
  343. <line id="line9" style="x1:915px; y1:5px; x2:915px; y2:24px; border-color:#ffe4bb; border-left-style:solid; "/>
  344. <button id="btn_search" class="btn1_letter2" style="left:930px; top:5px; width:56px; height:22px; ">
  345. <caption>조회</caption>
  346. <script type="javascript" ev:event="DOMActivate">
  347. <![CDATA[
  348. var stintrgtflagcd = opener.window.javascript.getParameter("stintrgtflagcd");
  349. var stintrgtid = model.getValue("/root/send/qestprvw/stintrgtid");
  350. if (stintrgtid != "") {
  351. if (stintrgtflagcd == "1" || stintrgtflagcd == "2" || stintrgtflagcd == "3") {
  352. model.makeValue("/root/send/qestprvw/pid", stintrgtid);
  353. } else {
  354. model.makeValue("/root/send/qestprvw/userid", stintrgtid);
  355. }
  356. } else {
  357. // messageBox("설문지 번호를 ", "C001");
  358. }
  359. fSetExec();
  360. ]]>
  361. </script>
  362. </button>
  363. </group>
  364. </xhtml:body>
  365. </xhtml:html>