SPMQP03500_팝업관리.xrw 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760
  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>Untitle</xhtml:title>
  6. <model id="model1">
  7. <instance id="instance1">
  8. <root xmlns="">
  9. <main>
  10. <inqrinfo>
  11. <inqrlist/>
  12. </inqrinfo>
  13. <inqrdetlist>
  14. <inqrheader>
  15. <inqrno/>
  16. <inqrhistno/>
  17. <cpgno/>
  18. <cpghistseq/>
  19. <inqrnm/>
  20. <pntmflag/>
  21. <inqrflag/>
  22. <stepno/>
  23. </inqrheader>
  24. <inqr/>
  25. <answ/>
  26. </inqrdetlist>
  27. <inqrform>
  28. <inqrheader>
  29. <inqrno/>
  30. <inqrhistno/>
  31. <cpgno/>
  32. <cpghistseq/>
  33. <inqrnm/>
  34. <pntmflag/>
  35. <inqrflag/>
  36. <stepno/>
  37. </inqrheader>
  38. <inqrlist>
  39. <inqrstatus/>
  40. <inqrinqrno/>
  41. <inqrinqrhistno/>
  42. <inqrqestno/>
  43. <inqrqestcnts/>
  44. <inqranswflag/>
  45. </inqrlist>
  46. <answlist>
  47. <answstatus/>
  48. <asnwinqrno/>
  49. <answinqrhistno/>
  50. <answqestno/>
  51. <answanswno/>
  52. <answanswcnts/>
  53. </answlist>
  54. </inqrform>
  55. <inqrmenulist>
  56. <menu>
  57. <item>
  58. <name>삭제</name>
  59. <func>fDelInqrList</func>
  60. </item>
  61. </menu>
  62. <menu2>
  63. <item>
  64. <name>기타속성 지정</name>
  65. <func>fInputFreetextAttr</func>
  66. </item>
  67. <item>
  68. <name>답안추가</name>
  69. <func>fAddAnswList</func>
  70. </item>
  71. </menu2>
  72. </inqrmenulist>
  73. <tempanswlist/>
  74. </main>
  75. <temp/>
  76. </root>
  77. </instance>
  78. <script type="javascript" ev:event="xforms-ready">
  79. <![CDATA[
  80. fInqrInit();
  81. ]]>
  82. </script>
  83. <submission id="TXMQP03501" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/savedata/inqrlist" resultref="/root/main/inqrinfo"/>
  84. <submission id="TXMQP03502" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/savedata/inqrlist" resultref="/root/main/inqrinfo"/>
  85. <submission id="TRMQP03501" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/reqdata" resultref="/root/main/inqrinfo"/>
  86. <submission id="TRMQP03502" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/main/inqrdetlist/inqrheader" resultref="/root/temp"/>
  87. <submission id="TXMQP03503" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/savedata/inqrlist"/>
  88. </model>
  89. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  90. <script type="javascript" src="../../../com/basiccodeweb/js/ZBC001.js"/>
  91. <script type="javascript" src="../../../com/commonweb/js/numericHelper.js"/>
  92. <script type="javascript" src="../../../com/commonweb/js/stringHelper.js"/>
  93. <script type="javascript" src="../../../com/commonweb/js/dateHelper.js"/>
  94. <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
  95. <script type="javascript" src="../../../com/commonweb/js/utilHelper.js"/>
  96. <script type="javascript">
  97. <![CDATA[
  98. var Answ_Path = "/root/main/inqrdetlist/answ";
  99. var Inqr_Path = "/root/main/inqrdetlist/inqr";
  100. var maxqestno = 0;
  101. var oldQestNo = 0;
  102. /*
  103. * @desc : 팝업시점의 변화에 따른 step 활성화
  104. * @
  105. * @param :
  106. * @return :
  107. * @author : 김영학 (2009. 02.28)
  108. * @---------------------------------------------------
  109. */
  110. function fStepSetup() {
  111. var pntmflag = model.getValue("/root/main/inqrdetlist/inqrheader/pntmflag");
  112. if (pntmflag =="3") {
  113. cmb_inqrstepno.disabled = false;
  114. cmb_inqrstepno.select(0);
  115. } else {
  116. cmb_inqrstepno.disabled = true;
  117. model.setValue("/root/main/inqrdetlist/inqrheader/stepno", "0");
  118. }
  119. model.refresh();
  120. }
  121. /*
  122. * @desc : 문진 삭제
  123. * @
  124. * @param :
  125. * @return :
  126. * @author : 김영학 (2009. 02.28)
  127. * @---------------------------------------------------
  128. */
  129. function fDelInqrList() {
  130. var tmpstr = "inqrno▦inqrhistno▦cpgno▦cpghistseq▩";
  131. var rows = grd_poplist.rows;
  132. for (var row = 1; row < rows; row++ ) {
  133. if(grd_poplist.isSelected(row)) {
  134. var inqrno = model.getValue("/root/main/inqrinfo/inqrlist[" + row + "]/inqrno");
  135. var inqrhistno = model.getValue("/root/main/inqrinfo/inqrlist[" + row + "]/inqrhistno");
  136. var cpgno = model.getValue("/root/main/inqrinfo/inqrlist[" + row + "]/cpgno");
  137. var cpghistseq = model.getValue("/root/main/inqrinfo/inqrlist[" + row + "]/cpghistseq");
  138. tmpstr += inqrno + "▦" + inqrhistno + "▦" + cpgno + "▦" + cpghistseq + "▩";
  139. }
  140. }
  141. model.makeValue("/root/send/savedata/inqrlist" , tmpstr);
  142. if( !submit("TXMQP03501", true) ) return false;
  143. opener.window.javascript.fInitAttList();
  144. fInqrInit();
  145. fCheckStepAttr(); //저장 후 스텝의 속성 정보 변경 시 체크하여 변경사항을 outline에 반영한다 --JJE
  146. model.refresh();
  147. }
  148. /*
  149. * @desc : 초기화
  150. * @
  151. * @param :
  152. * @return :
  153. * @author : 김영학 (2009. 02.28)
  154. * @---------------------------------------------------
  155. */
  156. function fInqrInit() {
  157. fStepSetup() ;
  158. submit("TRMQP03501");
  159. model.removenode("/root/main/inqrdetlist/inqr");
  160. model.removenode("/root/main/inqrdetlist/answ");
  161. model.refresh();
  162. }
  163. /*
  164. * @desc : 팝업관리 저장
  165. * @
  166. * @param :
  167. * @return :
  168. * @author : 김영학 (2009. 02.28)
  169. * @---------------------------------------------------
  170. */
  171. function fSaveInqrList() {
  172. var title = model.getValue("/root/main/inqrdetlist/inqrheader/inqrnm");
  173. if (isNull(title)) {
  174. messageBox("제목은", "I003");
  175. model.setFocus("ipt_title");
  176. return false;
  177. }
  178. var inqrflag = model.getValue("/root/main/inqrdetlist/inqrheader/inqrflag");
  179. if (isNull(inqrflag)) {
  180. messageBox("용도는", "I003");
  181. model.setFocus("rdo_mthd");
  182. return false;
  183. }
  184. var pntmflag = model.getValue("/root/main/inqrdetlist/inqrheader/pntmflag");
  185. if (isNull(pntmflag)) {
  186. messageBox("팝업시점은", "I003");
  187. model.setFocus("rdo_popstart");
  188. return false;
  189. }
  190. if (pntmflag == "3") {
  191. var stepno = model.getValue("/root/main/inqrdetlist/inqrheader/stepno");
  192. if (stepno == "0") {
  193. messageBox("스탭 지정은", "I003");
  194. model.setFocus("cmb_inqrstepno");
  195. return false;
  196. }
  197. }
  198. if (grd_inqrlist.rows > 1) {
  199. for (var i = 1 ; i < grd_inqrlist.rows ; i++ ) {
  200. var answflag = model.getValue(Inqr_Path + "/inqrlist[" + i + "]/inqranswflag");
  201. if (isNull(answflag)) {
  202. messageBox("답안속성은", "I003");
  203. grd_inqrlist.row = i;
  204. grd_inqrlist.col = 6;
  205. grd_inqrlist.editCell();
  206. return false;
  207. }
  208. }
  209. }
  210. /*
  211. if (grd_answlist.rows > 1 ) {
  212. for (i = 0 ; i < grd_answlist.rows ; i++ ) {
  213. var answcnts = model.getValue(Answ_Path + "/answlist[" + i + "]/answanswcnsts");
  214. if (isNull(answcnts)) {
  215. messageBox("답안은", "I003");
  216. grd_answlist.col= 6;
  217. grd_answlist.editCell();
  218. return false;
  219. }
  220. }
  221. }
  222. */
  223. model.removeNodeset("/root/send/savedata/inqr/inqrheader");
  224. model.removeNodeset("/root/send/savedata/inqr/inqrlist");
  225. model.removeNodeset("/root/send/savedata/inqr/answlist");
  226. model.setValue("/root/main/inqrdetlist/inqrheader/cpgno" , model.getValue("/root/main/cond/cpgno"));
  227. model.setValue("/root/main/inqrdetlist/inqrheader/cpghistseq" , model.getValue("/root/main/cond/cpghistseq"));
  228. model.makeValue("/root/send/savedata/inqrlist/inqrlist", grd_inqrlist.getUpdateDataAll(i));
  229. //temp 인스턴스는 전체 답안을 모두 가지고 있음. 저장 시 temp 인스턴스를 날림 (JJE)
  230. if( oldQestNo > 0 && instance1.selectSingleNode("/root/main/inqrdetlist/answ/answlist[answstatus!='']") != null ){
  231. model.removeNodeset("/root/temp/answlist[answqestno='"+oldQestNo+"']");
  232. copyNodeListType("/root/temp", "/root/main/inqrdetlist/answ/answlist[answqestno='"+oldQestNo+"']", "after");
  233. }
  234. grd_allanswlist.refresh();
  235. model.makeValue("/root/send/savedata/inqrlist/answlist", grd_allanswlist.getUpdateDataAll(i));
  236. model.makeNode("/root/send/savedata/inqrlist/inqrheader");
  237. model.copyNode("/root/send/savedata/inqrlist/inqrheader" , "/root/main/inqrdetlist/inqrheader");
  238. if( !submit("TXMQP03502", true) ) return false;
  239. fInqrInit();
  240. }
  241. /*
  242. * @desc : 속성리스트에서 항목 복사시 질문번호와 답안 번호를 순서에 맞게 재배열
  243. * @
  244. * @param :
  245. * @return :
  246. * @author : 김영학 (2009. 02.28)
  247. * @---------------------------------------------------
  248. */
  249. function fAddInqrList() {
  250. var inqrnm = model.getValue("/root/main/inqrdetlist/inqrheader/inqrnm");
  251. if (isNull(inqrnm)) { // 문진을 새로 작성하는 경우
  252. model.copyNode("/root/main/inqrdetlist/inqrheader", "/root/temp/inqrheader");
  253. model.setValue("/root/main/inqrdetlist/inqrheader/inqrno" , ""); // 복사된 질문의 문진번호와 이력번호를 널값 처리 해준다.
  254. model.setValue("/root/main/inqrdetlist/inqrheader/inqrhistno" , "");
  255. var stepno = model.getValue("/root/main/inqrdetlist/inqrheader/stepno");
  256. fStepSetup() ;
  257. model.setValue("/root/main/inqrdetlist/inqrheader/stepno", stepno);
  258. }
  259. model.makeNode("/root/main/inqrdetlist/inqr");
  260. model.makeNode("/root/main/inqrdetlist/answ");
  261. var inqrList = instance1.selectNodes("/root/temp/inqrlist");
  262. if (inqrList.length > 0) {
  263. for (i =0; i < inqrList.length ; i++ ) {
  264. maxqestno = parseInt(maxqestno) + 1;
  265. inqrNode = inqrList.item(i);
  266. var inqrqestno = inqrNode.selectSingleNode("inqrqestno");
  267. var qestno = inqrqestno.text;
  268. for (j =0; j < grd_inqrlist.rows ; j++) {
  269. inqrqestno = model.getValue("/root/main/inqrdetlist/inqr/inqrlist[" + j + "]/inqrqestno");
  270. if (maxqestno > inqrqestno) {
  271. maxqestno = maxqestno;
  272. } else {
  273. maxqestno = parseInt(inqrqestno) + 1;
  274. }
  275. }
  276. model.setValue(inqrNode.selectSingleNode("inqrstatus"), "i");
  277. var inqrinqrqestno = model.getValue("/root/main/inqrdetlist/inqr/inqrlist[inqrqestno='" + inqrqestno + "']/inqrqestno");
  278. if (!isNull(inqrinqrqestno) ) {
  279. model.setValue(inqrNode.selectSingleNode("inqrqestno"), maxqestno);
  280. var anwList = instance1.selectNodes("/root/temp/answlist");
  281. for (k = 0 ; k < anwList.length; k++ ) {
  282. answNode = anwList.item(k);
  283. var answqestno = answNode.selectSingleNode("answqestno");
  284. var anqestno = answqestno.text;
  285. var tempanswqestno = answNode.selectSingleNode("tempanswqestno");
  286. var tempqestno = tempanswqestno.text;
  287. if (anqestno == qestno) {
  288. if (anqestno == tempqestno) {
  289. model.setValue(answNode.selectSingleNode("answqestno"), maxqestno);
  290. }
  291. }
  292. }
  293. }
  294. }
  295. }
  296. var anwList = instance1.selectNodes("/root/temp/answlist");
  297. for (k = 0 ; k < anwList.length; k++ ) {
  298. answNode = anwList.item(k);
  299. model.setValue(answNode.selectSingleNode("answstatus"), "I");
  300. }
  301. copyNodeListType("/root/main/inqrdetlist/inqr", "/root/temp/inqrlist", "after");
  302. copyNodeListType("/root/main/inqrdetlist/answ", "/root/temp/answlist", "after");
  303. model.setValue("/root/main/inqrdetlist/inqrheader/cpgno" , model.getValue("/root/main/cond/cpgno"));
  304. model.setValue("/root/main/inqrdetlist/inqrheader/cpghistseq" , model.getValue("/root/main/cond/cpghistseq"));
  305. model.refresh();
  306. // 추가된 값들은 insert 상태로 보이도록 하고 질문호와 이력번호는 header값과 같도록 셋팅해준다.
  307. for (i = 1; i < grd_inqrlist.rows ; i++) {
  308. var inqrstatus = model.getValue("/root/main/inqrdetlist/inqr/inqrlist[" + i + "]/inqrstatus");
  309. if (inqrstatus == "i") {
  310. model.setValue("/root/main/inqrdetlist/inqr/inqrlist[" + i + "]/inqrinqrno", model.getValue("/root/main/inqrdetlist/inqrheader/inqrno"));
  311. model.setValue("/root/main/inqrdetlist/inqr/inqrlist[" + i + "]/inqrinqrhistno", model.getValue("/root/main/inqrdetlist/inqrheader/inqrno"));
  312. grd_inqrlist.rowStatus(i) = 1;
  313. }
  314. }
  315. for (i = 1; i < grd_answlist.rows ; i++) {
  316. var answstatus = model.getValue("/root/main/inqrdetlist/answ/answlist[" + i + "]/answstatus");
  317. if (answstatus == "I") {
  318. model.setValue("/root/main/inqrdetlist/answ/answlist[" + i + "]/answinqrno", model.getValue("/root/main/inqrdetlist/inqrheader/inqrno"));
  319. model.setValue("/root/main/inqrdetlist/answ/answlist[" + i + "]/answinqrhistno", model.getValue("/root/main/inqrdetlist/inqrheader/inqrno"));
  320. grd_answlist.rowStatus(i) = 1;
  321. }
  322. }
  323. //설정된 스텝번호를 파라메터로 셋팅해서 outline의 아이콘 불이 들어오도록 (2009.04.14)
  324. setParameter("SPMQP00300_before_stepno", "0");
  325. setParameter("SPMQP00300_after_stepno", model.getValue("/root/main/inqrdetlist/inqrheader/stepno"));
  326. }
  327. /*
  328. * @desc : 그리드 refresh 후 rowstatus 초기화되는 현상에 대한 처리
  329. * @
  330. * @param :
  331. * @return :
  332. * @author : 전지은
  333. * @---------------------------------------------------
  334. */
  335. function fSetGrdRowStatus(grd) {
  336. var grdCtrl = document.controls(grd);
  337. if( grd == "grd_inqrlist" ){
  338. var ref1 = "/root/main/inqrdetlist/inqr/inqrlist";
  339. var ref2 = "/inqrstatus";
  340. }else if( grd == "grd_answlist" ){
  341. var ref1 = "/root/main/inqrdetlist/answ/answlist";
  342. var ref2 = "/answstatus";
  343. }
  344. for( var i=1; i<grdCtrl.rows; i++){
  345. if( model.getValue(ref1 + "[" + i + "]" + ref2) == "I" ){
  346. grdCtrl.rowStatus(i) = 1;
  347. }else if( model.getValue(ref1 + "[" + i + "]" + ref2) == "U" ){
  348. grdCtrl.rowStatus(i) = 2;
  349. }else if( model.getValue(ref1 + "[" + i + "]" + ref2) == "D" ){
  350. grdCtrl.rowStatus(i) = 4;
  351. }else{
  352. grdCtrl.rowStatus(i) = 0;
  353. }
  354. if( grd == "grd_answlist" ){
  355. if( model.getValue(ref1 + "[" + i + "]/answanswno") == "99999" ){
  356. grd_answlist.rowstyle(i, "data", "color") = "#FF0000";
  357. }
  358. }
  359. }
  360. }
  361. /*
  362. * @desc : 답안을 추가한다.
  363. * @
  364. * @param :
  365. * @return :
  366. * @author : 전지은
  367. * @---------------------------------------------------
  368. */
  369. function fAddAnswList(pos){
  370. if( isNull(pos) ) pos = "S"; //B:bottom에 추가, S:Select Line에 추가
  371. var qestno = grd_inqrlist.row;
  372. var answno = grd_answlist.rows-1;
  373. if ( instance1.selectSingleNode("/root/main/inqrdetlist/inqr/inqrlist") == null ) {
  374. messageBox("질문이", "I004");
  375. return;
  376. }
  377. if ( qestno <= 0 ) {
  378. messageBox("질문을", "C002");
  379. return;
  380. }
  381. var answflag = model.getValue("/root/main/inqrdetlist/inqr/inqrlist[" + qestno + "]/inqranswflag")
  382. if ( answflag == "" ) {
  383. messageBox("답안속성을", "C002");
  384. return;
  385. }else if( answflag == "3" ){
  386. if( grd_answlist.rows - 1 >= 1 ){
  387. messageBox("입력답안의 수는 하나만", "I006");
  388. return;
  389. }
  390. }
  391. var inqrno = model.getValue("/root/main/inqrdetlist/inqrheader/inqrno");
  392. var inqrhistno = model.getValue("/root/main/inqrdetlist/inqrheader/inqrhistno");
  393. model.makeNode("/root/main/inqrdetlist/answ");
  394. if( pos == "B" ){
  395. copyNodeListType("/root/main/inqrdetlist/answ", "/root/main/inqrform/answlist", "after");
  396. answno++;
  397. model.setValue(Answ_Path + "/answlist["+ answno + "]/answstatus" , "I"); //상태값 셋팅 추가(JJE)
  398. model.setValue(Answ_Path + "/answlist["+ answno + "]/answqestno" , qestno);
  399. model.setValue(Answ_Path + "/answlist["+ answno + "]/asnwinqrno" , inqrno);
  400. model.setValue(Answ_Path + "/answlist["+ answno + "]/answinqrhistno" , inqrhistno);
  401. model.setValue(Answ_Path + "/answlist["+ answno + "]/answanswno" , "0"); //화면단에서 키를 지정해주는것이 명확하지 않아 저장 전 순차적으로 생성해줌(2009.05.19 JJE)
  402. }else if( pos == "S" ){
  403. // /root/main/tempanswlist
  404. }
  405. model.refresh();
  406. fSetGrdRowStatus("grd_answlist");
  407. }
  408. /*
  409. * @desc : 답안 중 기타속성으로 지정한다.
  410. * @
  411. * @param :
  412. * @return :
  413. * @author : 전지은
  414. * @---------------------------------------------------
  415. */
  416. function fInputFreetextAttr(){
  417. var iRow = grd_answlist.row;
  418. var answNo = model.getValue(Answ_Path + "/answlist[" + iRow + "]/answanswno");
  419. if( answNo == "99999" )
  420. model.setValue(Answ_Path + "/answlist[" + iRow + "]/answanswno", "0");
  421. else{
  422. var ftNode = instance1.selectSingleNode("/root/main/inqrdetlist/answ/answlist[answanswno!='"+answNo.text+"' and answanswno=99999]");
  423. if( ftNode != null ){
  424. messageBox("이미 기타 답안이 존재합니다.\n기타 답안은 1건만 입력", "I006");
  425. return;
  426. }
  427. model.setValue(Answ_Path + "/answlist[" + iRow + "]/answanswno", "99999");
  428. }
  429. if( model.getValue(Answ_Path + "/answlist[" + iRow + "]/answstatus") != "I" ){
  430. model.setValue(Answ_Path + "/answlist[" + iRow + "]/answstatus", "U");
  431. fSetGrdRowStatus("grd_answlist");
  432. }
  433. }
  434. ]]>
  435. </script>
  436. </xhtml:head>
  437. <xhtml:body>
  438. <button id="button1" class="btn2_letter4" disable.background-image="../../../com/commonweb/images/dis_btn2_letter2.gif" style="left:346px; top:231px; width:64px; height:19px; background-image:../../../com/commonweb/images/btn2_letter2.gif; ">
  439. <caption>질문추가</caption>
  440. <script type="javascript" ev:event="DOMActivate">
  441. <![CDATA[
  442. var qestno = grd_inqrlist.rows -1;
  443. var inqrno = model.getValue("/root/main/inqrdetlist/inqrheader/inqrno");
  444. var inqrhistno = model.getValue("/root/main/inqrdetlist/inqrheader/inqrhistno");
  445. model.makeNode("/root/main/inqrdetlist/inqr");
  446. copyNodeListType("/root/main/inqrdetlist/inqr", "/root/main/inqrform/inqrlist", "after");
  447. qestno++;
  448. model.setValue(Inqr_Path + "/inqrlist["+ qestno + "]/inqrstatus", "I"); //입력시 상태값 추가(JJE)
  449. model.setValue(Inqr_Path + "/inqrlist["+ qestno + "]/inqrqestno", "0"); //화면단에서 키를 지정해주는것이 명확하지 않아 저장 전 순차적으로 생성해줌(2009.05.19 JJE)
  450. model.setValue(Inqr_Path + "/inqrlist["+ qestno + "]/inqrinqrno", inqrno);
  451. model.setValue(Inqr_Path + "/inqrlist["+ qestno + "]/inqrinqrhistno", inqrhistno);
  452. model.refresh();
  453. fSetGrdRowStatus("grd_inqrlist");
  454. ]]>
  455. </script>
  456. </button>
  457. <datagrid id="grd_poplist" nodeset="/root/main/inqrinfo/inqrlist" caption="제목^Guideline" colsep="^" colwidth="296, 425" mergecellsfixedrows="bycolrec" rowsep="|" style="left:0px; top:23px; width:725px; height:106px; ">
  458. <col ref="title"/>
  459. <col ref="guide"/>
  460. <script type="javascript" ev:event="onmousedown">
  461. <![CDATA[
  462. if (isDataCell() == true) {
  463. setPopupMenu("grd_poplist", false, "/root/main/inqrmenulist/menu/item", "name", "func");
  464. }
  465. ]]>
  466. </script>
  467. <script type="javascript" ev:event="DOMFocusOut">
  468. <![CDATA[
  469. window.setPopupMenu(false);
  470. ]]>
  471. </script>
  472. <script type="javascript" ev:event="ondblclick">
  473. <![CDATA[
  474. if (isDataCell() == true) {
  475. model.removenode("/root/main/inqrdetlist");
  476. model.makeNode("/root/main/inqrdetlist/inqrheader");
  477. model.makeNode("/root/main/inqrdetlist/inqr");
  478. model.makeNode("/root/main/inqrdetlist/answ");
  479. var iRow = grd_poplist.row;
  480. var inqrno = model.getValue("/root/main/inqrinfo/inqrlist[" + iRow + "]/inqrno");
  481. var inqrhistno = model.getValue("/root/main/inqrinfo/inqrlist[" + iRow + "]/inqrhistno");
  482. model.copyNode("/root/main/inqrdetlist/inqrheader", "/root/main/inqrinfo/inqrlist[" + iRow + "]");
  483. if( submit("TRMQP03502", true) ){
  484. copyNodeListType("/root/main/inqrdetlist/inqr", "/root/temp/inqrlist", "after");
  485. //copyNodeListType("/root/main/inqrdetlist/answ", "/root/temp/answlist", "after");
  486. model.refresh();
  487. }
  488. }
  489. ]]>
  490. </script>
  491. </datagrid>
  492. <line id="line10" class="line_1" style="x1:0px; y1:148px; x2:725px; y2:148px; "/>
  493. <select1 id="cmb_inqrstepno" ref="/root/main/inqrdetlist/inqrheader/stepno" navindex="1" appearance="minimal" style="left:517px; top:208px; width:208px; height:19px; ">
  494. <choices>
  495. <itemset nodeset="/root/init/stepinfo/info">
  496. <label ref="stepnm"/>
  497. <value ref="stepno"/>
  498. </itemset>
  499. </choices>
  500. </select1>
  501. <caption id="caption1" class="cell_1" style="left:0px; top:153px; width:85px; height:23px; ">제목</caption>
  502. <button id="btn_del" class="btn2_letter2" disable.background-image="../../../com/commonweb/images/dis_btn2_letter2.gif" style="left:683px; top:231px; width:42px; height:19px; background-image:../../../com/commonweb/images/btn2_letter2.gif; ">
  503. <caption>삭제</caption>
  504. <script type="javascript" ev:event="DOMActivate">
  505. <![CDATA[
  506. //선택여부 체크 추가(JJE)
  507. var iRow = grd_answlist.row;
  508. if ( iRow <= 0 ) {
  509. messageBox("삭제할 항목을", "C002");
  510. return;
  511. }
  512. //저장하지 않은 항목까지 'D' 처리하므로 직접삭제하도록 변경(JJE)
  513. for (var i = grd_answlist.selectedRows-1 ; i >=0 ; i--) {
  514. if( model.getValue("/root/main/inqrdetlist/answ/answlist[" + grd_answlist.selectedRow(i) + "]/answstatus") == "I" ){
  515. model.removeNodeset("/root/main/inqrdetlist/answ/answlist[" + grd_answlist.selectedRow(i) + "]");
  516. }else if( model.getValue("/root/main/inqrdetlist/answ/answlist[" + iRow + "]/answstatus") == "D" ){
  517. model.setValue("/root/main/inqrdetlist/answ/answlist[" + grd_answlist.selectedRow(i) + "]/answstatus", "");
  518. }else{
  519. model.setValue("/root/main/inqrdetlist/answ/answlist[" + grd_answlist.selectedRow(i) + "]/answstatus", "D");
  520. }
  521. }
  522. grd_answlist.refresh();
  523. fSetGrdRowStatus("grd_answlist");
  524. // model.removenode("/root/send/savedata/inqrlist/answlist");
  525. // model.removenode("/root/send/savedata/inqrlist/inqrlist");
  526. // model.makeValue("/root/send/savedata/inqrlist/answlist", grd_answlist.getUpdateData());
  527. // model.makeValue("/root/send/savedata/inqrlist/answlist", grd_answlist.getUpdateDataAll(i));
  528. // grd_answlist.
  529. // model.removenode("/root/main/inqrdetlist");
  530. // submit("TXMQP03503");
  531. // model.refresh();
  532. ]]>
  533. </script>
  534. </button>
  535. <caption id="caption11" class="cell_1" style="left:430px; top:206px; width:85px; height:23px; ">선택 STEP</caption>
  536. <caption id="caption2" class="tit_2" style="left:2px; top:4px; width:142px; height:14px; ">팝업리스트</caption>
  537. <caption id="caption3" class="cell_1" style="left:0px; top:206px; width:85px; height:23px; ">팝업시점</caption>
  538. <caption id="caption13" class="tit_2" style="left:0px; top:134px; width:142px; height:13px; ">팝업작성</caption>
  539. <caption id="caption4" class="cell_1" style="left:0px; top:180px; width:85px; height:23px; ">용도</caption>
  540. <line id="line2" class="line_2" style="x1:0px; y1:178px; x2:725px; y2:178px; "/>
  541. <line id="line3" class="line_1" style="x1:0px; y1:18px; x2:725px; y2:18px; "/>
  542. <select1 id="rdo_popstart" ref="/root/main/inqrdetlist/inqrheader/pntmflag" navindex="4" appearance="full" cellspacing="10" cols="3" overflow="visible" style="left:87px; top:208px; width:338px; height:20px; border-style:none; ">
  543. <choices>
  544. <itemset nodeset="/root/init/M0515/M0515">
  545. <label ref="cdnm"/>
  546. <value ref="cdid"/>
  547. </itemset>
  548. </choices>
  549. <script type="javascript" ev:event="xforms-value-changed">
  550. <![CDATA[
  551. fStepSetup() ;
  552. ]]>
  553. </script>
  554. </select1>
  555. <button id="btn_add" class="btn2_letter4" disable.background-image="../../../com/commonweb/images/dis_btn2_letter2.gif" style="left:616px; top:231px; width:64px; height:19px; background-image:../../../com/commonweb/images/btn2_letter2.gif; ">
  556. <caption>답안추가</caption>
  557. <script type="javascript" ev:event="DOMActivate">
  558. <![CDATA[
  559. fAddAnswList("B");
  560. ]]>
  561. </script>
  562. </button>
  563. <line id="line5" class="line_2" style="x1:0px; y1:204px; x2:725px; y2:204px; "/>
  564. <datagrid id="grd_inqrlist" nodeset="/root/main/inqrdetlist/inqr/inqrlist" caption="status^inqrno^inqrhistno^번호^질문^답안속성" colsep="^" colwidth="0, 0, 0, 40, 296, 80" mergecellsfixedrows="bycolrec" rowheader="update" rowsep="|" navindex="5" style="left:0px; top:252px; width:455px; height:208px; ">
  565. <col ref="inqrstatus" visibility="hidden"/>
  566. <col ref="inqrinqrno" visibility="hidden"/>
  567. <col ref="inqrinqrhistno" visibility="hidden"/>
  568. <col ref="inqrqestno" type="input"/>
  569. <col ref="inqrqestcnts" type="input"/>
  570. <col ref="inqranswflag" type="combo">
  571. <choices>
  572. <itemset nodeset="/root/init/M0518/M0518">
  573. <label ref="cdnm"/>
  574. <value ref="cdid"/>
  575. </itemset>
  576. </choices>
  577. </col>
  578. <script type="javascript" ev:event="onclick">
  579. <![CDATA[
  580. //선택 질문에 대한 답리스트만 가져오도록 추가(JJE)
  581. if( oldQestNo > 0 && instance1.selectSingleNode("/root/main/inqrdetlist/answ/answlist[answstatus!='']") != null ){
  582. //temp 인스턴스는 전체 답안을 모두 가지고 있음. 저장 시 temp 인스턴스를 날림
  583. model.removeNodeset("/root/temp/answlist[answqestno='"+oldQestNo+"']");
  584. copyNodeListType("/root/temp", "/root/main/inqrdetlist/answ/answlist[answqestno='"+oldQestNo+"']", "after");
  585. }
  586. model.removeNodeset("/root/main/inqrdetlist/answ/answlist");
  587. if( grd_inqrlist.row >= 1 && grd_inqrlist.row <= grd_inqrlist.rows ){
  588. var qestNo = model.getValue("/root/main/inqrdetlist/inqr/inqrlist[" + grd_inqrlist.row + "]/inqrqestno");
  589. oldQestNo = qestNo;
  590. copyNodeListType("/root/main/inqrdetlist/answ", "/root/temp/answlist[answqestno='"+qestNo+"']", "after");
  591. grd_answlist.refresh();
  592. fSetGrdRowStatus("grd_answlist");
  593. }
  594. ]]>
  595. </script>
  596. <script type="javascript" ev:event="xforms-value-changed">
  597. <![CDATA[
  598. //alert( grd_inqrlist.col ); // 4, 6
  599. var iRow = grd_inqrlist.row;
  600. if( grd_inqrlist.col = grd_inqrlist.colRef("inqranswflag") ){
  601. var answflag = model.getValue("/root/main/inqrdetlist/inqr/inqrlist[" + iRow + "]/inqranswflag");
  602. var answNodes = instance1.selectNodes("/root/main/inqrdetlist/answ/answlist");
  603. if(answflag == "3" ){
  604. if( answNodes.length <= 0 ){
  605. model.removeNodeset("/root/main/inqrdetlist/answ/answlist");
  606. fAddAnswList("B");
  607. }
  608. }
  609. }
  610. ]]>
  611. </script>
  612. </datagrid>
  613. <select1 id="rdo_mthd" ref="/root/main/inqrdetlist/inqrheader/inqrflag" navindex="3" appearance="full" cellspacing="10" cols="5" overflow="visible" style="left:88px; top:182px; width:637px; height:20px; border-style:none; ">
  614. <choices>
  615. <itemset nodeset="/root/init/M0516/M0516">
  616. <label ref="cdnm"/>
  617. <value ref="cdid"/>
  618. </itemset>
  619. </choices>
  620. </select1>
  621. <input id="ipt_title" ref="/root/main/inqrdetlist/inqrheader/inqrnm" class="input_essential" navindex="2" style="left:88px; top:155px; width:637px; height:19px; "/>
  622. <datagrid id="grd_answlist" nodeset="/root/main/inqrdetlist/answ/answlist" caption="status^inqrno^inqrhistno^질문번호^번호^답안^" colsep="^" colwidth="0, 0, 0, 3, 0, 226" mergecellsfixedrows="bycolrec" rowheader="update" rowsep="|" navindex="5" style="left:460px; top:252px; width:265px; height:208px; ">
  623. <col ref="answstatus" visibility="hidden"/>
  624. <col ref="answinqrno" visibility="hidden"/>
  625. <col ref="answinqrhistno" visibility="hidden"/>
  626. <col ref="answqestno" type="output" visibility="hidden"/>
  627. <col ref="answanswno" visibility="hidden"/>
  628. <col ref="answanswcnts" type="input"/>
  629. <script type="javascript" ev:event="onmousedown">
  630. <![CDATA[
  631. if(event.button == 3){
  632. grd_answlist.row = grd_answlist.mouseRow;
  633. event.preventDefault();
  634. window.setPopupMenu(true, "/root/main/inqrmenulist/menu2/item", "name", "func", false);
  635. }
  636. ]]>
  637. </script>
  638. <script type="javascript" ev:event="DOMFocusOut">
  639. <![CDATA[
  640. window.setPopupMenu(false);
  641. ]]>
  642. </script>
  643. </datagrid>
  644. <button id="button2" class="btn2_letter2" disable.background-image="../../../com/commonweb/images/dis_btn2_letter2.gif" style="left:413px; top:231px; width:42px; height:19px; background-image:../../../com/commonweb/images/btn2_letter2.gif; ">
  645. <caption>삭제</caption>
  646. <script type="javascript" ev:event="DOMActivate">
  647. <![CDATA[
  648. //선택여부 체크 추가(JJE)
  649. var iRow = grd_inqrlist.row;
  650. if ( iRow <= 0 ) {
  651. messageBox("삭제할 항목을", "C002");
  652. return;
  653. }
  654. //저장하지 않은 항목까지 'D' 처리하므로 직접삭제하도록 변경(JJE)
  655. for (var i = grd_inqrlist.selectedRows-1 ; i >=0 ; i--) {
  656. if( model.getValue("/root/main/inqrdetlist/inqr/inqrlist[" + grd_inqrlist.selectedRow(i) + "]/inqrstatus") == "I" ){
  657. model.removeNodeset("/root/main/inqrdetlist/inqr/inqrlist[" + grd_inqrlist.selectedRow(i) + "]");
  658. }else if( model.getValue("/root/main/inqrdetlist/inqr/inqrlist[" + iRow + "]/inqrstatus") == "D" ){
  659. model.setValue("/root/main/inqrdetlist/inqr/inqrlist[" + grd_inqrlist.selectedRow(i) + "]/inqrstatus", "");
  660. }else{
  661. model.setValue("/root/main/inqrdetlist/inqr/inqrlist[" + grd_inqrlist.selectedRow(i) + "]/inqrstatus", "D");
  662. }
  663. }
  664. grd_inqrlist.refresh();
  665. fSetGrdRowStatus("grd_inqrlist");
  666. // model.removenode("/root/send/savedata/inqrlist/answlist");
  667. // model.removenode("/root/send/savedata/inqrlist/inqrlist");
  668. // model.makeValue("/root/send/savedata/inqrlist/inqrlist", grd_inqrlist.getUpdateData());
  669. // model.removenode("/root/main/inqrdetlist");
  670. // submit("TXMQP03503");
  671. ]]>
  672. </script>
  673. </button>
  674. <line id="line1" class="line_2" style="x1:0px; y1:229px; x2:725px; y2:229px; "/>
  675. <button id="button3" class="btn2_letter2" disable.background-image="../../../com/commonweb/images/dis_btn2_letter2.gif" style="left:683px; top:129px; width:42px; height:19px; background-image:../../../com/commonweb/images/btn2_letter2.gif; ">
  676. <caption>신규</caption>
  677. <script type="javascript" ev:event="DOMActivate">
  678. <![CDATA[
  679. model.removenode("/root/main/inqrdetlist");
  680. model.makeNode("/root/main/inqrdetlist/inqrheader")
  681. model.makeNode("/root/main/inqrdetlist/inqr");
  682. model.makeNode("/root/main/inqrdetlist/answ");
  683. model.copyNode("/root/main/inqrdetlist/inqrheader", "/root/main/inqrform/inqrheader");
  684. model.refresh();
  685. ]]>
  686. </script>
  687. </button>
  688. <datagrid id="grd_allanswlist" nodeset="/root/temp/answlist" visibility="hidden" caption="status^inqrno^inqrhistno^질문번호^번호^답안^" colsep="^" colwidth="0, 0, 0, 58, 0, 167" mergecellsfixedrows="bycolrec" rowheader="update" rowsep="|" navindex="5" style="left:460px; top:415px; width:265px; height:45px; ">
  689. <col ref="answstatus" visibility="hidden"/>
  690. <col ref="answinqrno" visibility="hidden"/>
  691. <col ref="answinqrhistno" visibility="hidden"/>
  692. <col ref="answqestno" type="output"/>
  693. <col ref="answanswno" visibility="hidden"/>
  694. <col ref="answanswcnts" type="output"/>
  695. </datagrid>
  696. </xhtml:body>
  697. </xhtml:html>