SPMMP03400_CPG문진등록.xfdl 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <FDL version="1.5">
  3. <TypeDefinition url="..\..\..\default_typedef.xml"/>
  4. <Form id="SPMMP03400" position="absolute 0 0 593 739" titletext="CPG 문진" oninit="SPMMP03400_oninit" onload="SPMMP03400_onload">
  5. <Layouts>
  6. <Layout>
  7. <Static text="문진 입력" position="absolute 2 5 123 21" id="cap_inqr" class="tit_2" visible="false"/>
  8. <Button position="absolute 477 705 533 727" id="btn_cnfm" class="btn4" text="확인" onclick="btn_cnfm_onclick"/>
  9. <Button position="absolute 535 705 591 727" id="btn_cncl" class="btn4" text="취소" onclick="btn_cncl_onclick"/>
  10. <Div id="grd" taborder="1" position="absolute 0 20 593 701">
  11. <Layouts>
  12. <Layout>
  13. <Grid id="grd_inqr" taborder="0" binddataset="ds_main_monitoringlist" useinputpanel="false" position="absolute 0 4 593 677" anchor="default">
  14. <Formats>
  15. <Format id="default">
  16. <Columns>
  17. <Column size="74"/>
  18. <Column size="95"/>
  19. <Column size="223"/>
  20. <Column size="0"/>
  21. <Column size="25"/>
  22. <Column size="158"/>
  23. </Columns>
  24. <Rows>
  25. <Row size="24" band="head"/>
  26. <Row size="24"/>
  27. </Rows>
  28. <Band id="head">
  29. <Cell text="스텝명"/>
  30. <Cell col="1" text="문진명"/>
  31. <Cell col="2" text="질문"/>
  32. <Cell col="3" text="답안 속성"/>
  33. <Cell col="4"/>
  34. <Cell col="5" text="답안"/>
  35. </Band>
  36. <Band id="body">
  37. <Cell text="bind:stepnm"/>
  38. <Cell col="1" text="bind:inqrnm"/>
  39. <Cell col="2" text="bind:qestcnts"/>
  40. <Cell col="3" enable="false" text="bind:answflag" edittype="combo" displaytype="combo"/>
  41. <Cell col="4" text="bind:checkyn" edittype="checkbox" displaytype="checkbox"/>
  42. <Cell col="5" text="bind:answcnts" edittype="text" displaytype="text"/>
  43. </Band>
  44. </Format>
  45. </Formats>
  46. </Grid>
  47. </Layout>
  48. </Layouts>
  49. </Div>
  50. <Div id="grp" taborder="2" position="absolute 0 20 593 701" visible="true">
  51. <Layouts>
  52. <Layout>
  53. <Div id="grp_inqr" taborder="0" position="absolute 0 5 590 680" anchor="default">
  54. <Layouts>
  55. <Layout width="590" height="675"/>
  56. </Layouts>
  57. </Div>
  58. </Layout>
  59. </Layouts>
  60. </Div>
  61. </Layout>
  62. </Layouts>
  63. <Objects>
  64. <Dataset id="ds_main_monitoringlist" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" reversesubsum="false">
  65. <ColumnInfo>
  66. <Column id="stepnm" type="STRING"/>
  67. <Column id="inqrnm" type="STRING"/>
  68. <Column id="qestcnts" type="STRING"/>
  69. <Column id="answflag" type="STRING"/>
  70. <Column id="checkyn" type="STRING"/>
  71. <Column id="answcnts" type="STRING"/>
  72. </ColumnInfo>
  73. </Dataset>
  74. <Dataset id="ds_send_reqdata" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false"/>
  75. <Dataset id="ds_main_answlist" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false"/>
  76. <Dataset id="ds_send_savedata" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false"/>
  77. </Objects>
  78. <Script type="xscript4.0"><![CDATA[/***************************************************************************************
  79. * System Name :
  80. * Job Name :
  81. * Creator :
  82. * Make Date : 2015-03-10
  83. * Description :
  84. *---------------------------------------------------------------------------------------
  85. * Modify Date Modifier Modify Description
  86. *---------------------------------------------------------------------------------------
  87. * 2015-03-10 Live Converter TF->XP
  88. *
  89. *---------------------------------------------------------------------------------------
  90. ****************************************************************************************/
  91. //=======================================================================================
  92. // Lib Include
  93. //---------------------------------------------------------------------------------------
  94. include "com_commonxp::comm_main.xjs";
  95. var lastcallyn = "";
  96. var cpgappno = "";
  97. var cpgno = "";
  98. var cpghistseq = "";
  99. var cpgappno = "";
  100. var stepno = "";
  101. var inqrstatcd = "";
  102. var inqroffyn = "";
  103. var inqranswdd = "";
  104. var inqrflag = "";
  105. var inqrno = "";
  106. var inqrhistno = "";
  107. var inqrnm = "";
  108. var steplistno = "";
  109. var pntmflag = "";
  110. //=======================================================================================
  111. // Event
  112. //---------------------------------------------------------------------------------------
  113. /****************************************************************************************
  114. * Components : Form
  115. * Components ID : SPMMP03400
  116. * Event : oninit
  117. * Argument : 01.obj : Object Event has occurred
  118. * : 02.e : Event Object
  119. * Description : 화면 처음 초기화시 폼초기화
  120. ****************************************************************************************/
  121. function SPMMP03400_oninit(obj:Form, e:InitEventInfo)
  122. {
  123. frmf_initForm(obj); // 폼 초기화
  124. }
  125. /****************************************************************************************
  126. * Components : Form
  127. * Components ID : SPMMB00600
  128. * Event : onload
  129. * Argument : 01.obj : Object Event has occurred
  130. * : 02.e : Event Object
  131. * Description : 화면오픈시 폼load이후 실행
  132. ****************************************************************************************/
  133. function SPMMP03400_onload(obj:Form, e:LoadEventInfo)
  134. {
  135. // grd.grd_inqr.mergeCol(2) = false;
  136. // grd.grd_inqr.mergeCol(3) = false;
  137. // grd.grd_inqr.mergeCol(4) = false;
  138. grd.grd_inqr.setCellProperty("body",1,"suppress",1);
  139. grd.grd_inqr.setCellProperty("body",2,"suppress",2);
  140. grd.grd_inqr.setCellProperty("body",3,"suppress",3);
  141. // model.makeNode("/root/send/reqdata");
  142. ds_send_reqdata.clear();
  143. lastcallyn = opener.frmf_getParameter("SMMMO034_lastcallyn");
  144. cpgappno = opener.frmf_getParameter("SMMMO034_cpgappno");
  145. inqrno = opener.frmf_getParameter("SMMMO034_inqrno");
  146. inqrhistno = opener.frmf_getParameter("SMMMO034_inqrhistno");
  147. inqrnm = opener.frmf_getParameter("SMMMO034_inqrnm");
  148. inqrflag = opener.frmf_getParameter("SMMMO034_inqrflag");
  149. steplistno = opener.frmf_getParameter("SMMMO034_steplistno");
  150. if(!utlf_isNull(steplistno)) {
  151. steplistno = steplistno.setReplaceWord("|",",");
  152. }
  153. dsf_makeValue(ds_send_reqdata,"lastcallyn" ,"string",lastcallyn);
  154. dsf_makeValue(ds_send_reqdata,"cpgappno" ,"string",cpgappno);
  155. dsf_makeValue(ds_send_reqdata,"cpgno" ,"string",opener.frmf_getParameter("SMMMO034_cpgno"));
  156. dsf_makeValue(ds_send_reqdata,"cpghistseq" ,"string",opener.frmf_getParameter("SMMMO034_cpghistseq"));
  157. dsf_makeValue(ds_send_reqdata,"pid" ,"string",opener.frmf_getParameter("SMMMO034_pid"));
  158. dsf_makeValue(ds_send_reqdata,"cretno" ,"string",opener.frmf_getParameter("SMMMO034_cretno"));
  159. dsf_makeValue(ds_send_reqdata,"orddd" ,"string",opener.frmf_getParameter("SMMMO034_orddd"));
  160. dsf_makeValue(ds_send_reqdata,"ordtype" ,"string",opener.frmf_getParameter("SMMMO034_ordtype"));
  161. dsf_makeValue(ds_send_reqdata,"appyn" ,"string",opener.frmf_getParameter("SMMMO034_appyn"));
  162. dsf_makeValue(ds_send_reqdata,"inqrno" ,"string",inqrno);
  163. dsf_makeValue(ds_send_reqdata,"inqrhistno" ,"string",inqrhistno);
  164. dsf_makeValue(ds_send_reqdata,"inqrnm" ,"string",inqrnm);
  165. dsf_makeValue(ds_send_reqdata,"inqrflag" ,"string",inqrflag); //미시행사유 입력용
  166. dsf_makeValue(ds_send_reqdata,"steplistno" ,"string",steplistno); //조회 할 스텝 리스트
  167. if( !utlf_isNull(cpgappno) ) dsf_makeValue(ds_send_reqdata,"histjoinyn","string","Y");
  168. if( !utlf_isNull(cpgappno) ) dsf_makeValue(ds_send_reqdata,"pntmflag" ,"string",opener.frmf_getParameter("SMMMO034_pntmflag"));
  169. dsf_setDefaultVal(ds_send_reqdata, "lastcallyn:N,appyn:Y,histjoinyn:N,formitemyn:Y,pntmflag:3");
  170. var oParam = {};
  171. oParam.id = "TRMMP03401";
  172. oParam.service = "prcpbaseapp.CpMngt";
  173. oParam.method = "reqGetInqrAnswList";
  174. oParam.inds = "req=ds_send_reqdata";
  175. oParam.outds = "ds_main_answlist=answlist";
  176. oParam.async = false;
  177. oParam.callback = "cf_TRMMP03401";
  178. tranf_submit(oParam);
  179. // submit("TRMMP03401", false);
  180. var inqrList = ds_main_answlist.findRow("answno","0"); // instance1.selectNodes("/root/main/inqrinfo/answlist[answno='0']");
  181. if(inqrList < 1){
  182. btn_cnfm.enable = false;
  183. }else{
  184. fCreateControl(); //문진표 생성
  185. }
  186. }
  187. function cf_TRMMP03401(sSvcId, nErrorCode, sErrorMsg) {
  188. if(nErrorCode < 0) return;
  189. for(var i = 0 ; i < ds_main_answlist.rowcount ; i++) {
  190. dsf_makeValue(ds_main_answlist,"organswcnts" ,"string",ds_main_answlist.getColumn(i,"answcnts") ,i);
  191. dsf_makeValue(ds_main_answlist,"orgetcanswcnts" ,"string",ds_main_answlist.getColumn(i,"etcanswcnts"),i);
  192. dsf_makeValue(ds_main_answlist,"organswrslt" ,"string",ds_main_answlist.getColumn(i,"answrslt") ,i);
  193. }
  194. dsf_setDefaultVal(ds_main_answlist, "answrslt:'',answstatcd:N,organswrslt:'',limno:'',limhistno:'',limcdno:'',setattrno:'',setattrhistno:'',answexistyn:N");
  195. }
  196. /**
  197. * @group :
  198. * @ver : 2009.05
  199. * @by : 전지은
  200. * @---------------------------------------------------
  201. * @type : function
  202. * @access : public
  203. * @desc : 문진표 생성
  204. * @param :
  205. * @return :
  206. * @---------------------------------------------------
  207. * 다시 짜야할듯...
  208. */
  209. function fCreateControl() {
  210. var ctrl = null;
  211. var ctrlType = "";
  212. var ctrlCnt = 0;
  213. var ctrlID = "";
  214. var wd = 0;
  215. var ht = 23;
  216. var topPos = 0;
  217. var iNode = null;
  218. var jNode = null;
  219. var nodeIdx = 0;
  220. var nodeIdx_q = 0;
  221. var ref = ds_main_answlist; // "/root/main/inqrinfo/answlist"
  222. // var inqrList = instance1.selectNodes("/root/main/inqrinfo/answlist[answno='0']"); //질문 instance만 대상
  223. var inqrList = new Dataset;
  224. ds_main_answlist.filter("answno == 0");
  225. inqrList.copyData(ds_main_answlist,true);
  226. ds_main_answlist.filter("");
  227. var titleNo = "0"; //문진 제목 번호
  228. var titleHistNo = "0"; //문진 제목 번호
  229. var titleStepNo = "0";
  230. if( inqrList.rowcount <= 0 ) return;
  231. for(var i = 0; i < inqrList.rowcount; i++) {
  232. //iNode = inqrList.item(i);
  233. // 1. 문진정보
  234. var vInqrno = inqrList.getColumn(i,"inqrno"); // iNode.selectSingleNode("inqrno");
  235. var vInqrnm = inqrList.getColumn(i,"inqrnm");
  236. var vInqrhistno = inqrList.getColumn(i,"inqrhistno");
  237. var vStepNo = inqrList.getColumn(i,"stepno");
  238. if( vInqrno != titleNo ){ //|| (vInqrno.text = "9999999999" && titleStepNo != vStepNo.text)
  239. //static 컴포넌트 동적 생성
  240. // ctrlType = "xforms:caption";
  241. ctrl = new Static;
  242. ctrlType = "caption";
  243. ctrlCnt++;
  244. ctrlID = ctrlType + ctrlCnt;
  245. if( i > 0 ) topPos = topPos + 15;
  246. ht = 23;
  247. ctrl.init(ctrlID, 10, topPos, 570, topPos+ht); // left, top, right, bottom
  248. this.grp.grp_inqr.addChild(ctrlID, ctrl);
  249. // ctrl = grp_inqr.createChild(ctrlType, "id:" + ctrlID + ";left:" + 10 + "px; top:" + topPos + "px; width:" + 560 + " px; height:" + ht + "px; font-size:10pt; color:#000000; font-weight:bolder;");
  250. ctrl.style.color = "#000000";
  251. ctrl.style.font.size = 10;
  252. ctrl.style.font.type = "bold";
  253. ctrl.show();
  254. // ctrl.attribute("text") = vInqrnm.text;
  255. // ctrl.attribute("border-style") = "solid";
  256. // ctrl.attribute("autoresize") = true;
  257. ctrl.text = vInqrnm;
  258. ctrl.style.border = "1px solid #000000";
  259. topPos = topPos + ht + 5;
  260. //nodeIdx++;
  261. titleNo = vInqrno;
  262. titleHistNo = vInqrhistno;
  263. titleStepNo = vStepNo;
  264. }
  265. // 2. 질문
  266. var qestno = inqrList.getColumn(i,"qestno");
  267. var qestcnts = inqrList.getColumn(i,"qestcnts");
  268. var qestlen = parseInt(inqrList.getColumn(i,"qestlen"));
  269. var qestlines = 0;
  270. var answno = inqrList.getColumn(i,"answno");
  271. var answflag = inqrList.getColumn(i,"answflag"); //1:다중, 2:단일, 3:입력
  272. var answexistyn = inqrList.getColumn(i,"answexistyn");
  273. ht = 23;
  274. wd = 550;
  275. if( qestlen >= 50 ){
  276. qestlines = qestlen / 50;
  277. qestlines = Math.ceil(qestlines * Math.pow(10, -1*(-1)-1)) / Math.pow(10, -1*(-1)-1);
  278. if( qestlen > qestlines * 50 ) qestlines++;
  279. }else qestlines = 1;
  280. // ctrlType = "xforms:caption";
  281. ctrl = new Static;
  282. ctrlType = "caption";
  283. ctrlCnt++;
  284. ctrlID = ctrlType + ctrlCnt;
  285. // ctrl = grp_inqr.createChild(ctrlType, "id:" + ctrlID + ";left:" + 10 + "px; top:" + topPos + "px; width:" + wd + " px; height:" + (ht*qestlines) + "px; font-size:10pt; color:#000000; font-weight:bolder;");
  286. ctrl.init(ctrlID, 10, topPos, 10+wd, topPos+(ht*qestlines)); // left, top, right, bottom
  287. this.grp.grp_inqr.addChild(ctrlID, ctrl);
  288. ctrl.style.color = "#000000";
  289. ctrl.style.font.size = 10;
  290. ctrl.style.font.type = "bold";
  291. ctrl.show();
  292. ctrl.text = qestcnts;
  293. topPos = topPos + (ht*qestlines); // + 5
  294. nodeIdx++;
  295. nodeIdx_q = nodeIdx;
  296. // 3. 답안
  297. // var answList = instance1.selectNodes("/root/main/inqrinfo/answlist[inqrno='"+vInqrno.text+"' and inqrhistno='"+vInqrhistno.text+"' and qestno='"+qestno.text+"' and answno!='0']");
  298. var answList = new Dataset;
  299. ds_main_answlist.filter("inqrno=='"+vInqrno+"' && inqrhistno=='"+vInqrhistno+"' && qestno=='"+qestno+"' && answno!='0'");
  300. answList.copyData(ds_main_answlist,true);
  301. ds_main_answlist.filter("");
  302. if( answList.rowcount > 0 ){
  303. //답안존재여부 instance 추가 (2010.05.29 JJE)
  304. // model.setValue(answexistyn, "Y");
  305. ds_main_answlist.setColumn(i,"answexistyn","Y");
  306. wd = 540;
  307. if( answflag == "1" ){ //라디오
  308. ht = 16;
  309. // ctrlType = "xforms:select1";
  310. ctrl = new Radio();
  311. ctrlType = "select1";
  312. ctrlCnt++;
  313. ctrlID = ctrlType + ctrlCnt;
  314. // ctrl = grp_inqr.createChild(ctrlType, "id:" + ctrlID + "; overflow:visible; appearance:full; cursor:pointer; cols:1; left:" + 20 + "px; top:" + topPos + "px; width:" + wd + " px; height:" + 0 + "px; ");
  315. ctrl.init(ctrlID, 20, topPos, 20+wd, 0);
  316. this.grp.grp_inqr.addChild(ctrlID, ctrl);
  317. // ctrl.attribute("ref") = ref + "[" + nodeIdx_q + "]/answrslt";
  318. dsf_createDs("ds_rdo_temp",[{col:"label"}, {col:"value"}]);
  319. ctrl.innerdataset = "ds_rdo_temp";
  320. ctrl.codecolumn = "value";
  321. ctrl.datacolumn = "label";
  322. ctrl.show();
  323. ctrl.index = 0;
  324. ctrl.columncount = 1;
  325. //컴포넌트 데이터셋 바인딩
  326. var objBindItem = new BindItem();
  327. objBindItem.init("item"+ctrlCnt, "grp.grp_inqr."+ctrlID, "value", "ds_main_answlist", "answrslt");
  328. this.addChild("item"+ctrlCnt, objBindItem);
  329. objBindItem.bind();
  330. // var choices = ctrl.createChild("xforms:choices", "");
  331. var itemlines = 0;
  332. var answlines = 0;
  333. //Radio 컴포넌트 동적 생성 및 데이터셋 바인딩
  334. // var objRdo = new Radio();
  335. // objRdo.init("rdo1", 40, 100, 100, 150);
  336. // this.addChild("rdo1", objRdo);
  337. // objRdo.innerdataset = "Ds_Radio";
  338. // objRdo.codecolumn = "Code";
  339. // objRdo.datacolumn = "Val";
  340. // objRdo.show();
  341. // objRdo.index = 0;
  342. // objRdo.columncount = 2;
  343. for(var j=0; j<answList.rowcount; j++){
  344. //jNode = answList.item(j);
  345. var answno = answList.getColumn(j,"answno");
  346. var answcnts = answList.getColumn(j,"answcnts");
  347. var etcanswcnts = answList.getColumn(j,"etcanswcnts");
  348. var answlen = parseInt(answList.getColumn(j,"answlen"));
  349. dsf_makeValue(ds_rdo_temp,"label","string",answcnts,j);
  350. dsf_makeValue(ds_rdo_temp,"value","string",answno,j);
  351. // var itemset = choices.createChild("xforms:item", "");
  352. // itemset.createChild("xforms:label", "text:"+answcnts+";");
  353. // itemset.createChild("xforms:value", "text:"+answno.text+";");
  354. if( answlen > 60 ){
  355. itemlines = answlen / 61;
  356. itemlines = Math.ceil(itemlines * Math.pow(10, -1*(-1)-1)) / Math.pow(10, -1*(-1)-1);
  357. if( answlen > itemlines * 60 ) itemlines++;
  358. }else itemlines = 1;
  359. answlines = answlines + itemlines;
  360. nodeIdx++;
  361. if( ref.getColumn(nodeIdx,"answstatcd") == "Y" ){
  362. if( !utlf_isNull(ref.getColumn(nodeIdx_q,"answrslt")) )
  363. ref.setColumn(nodeIdx_q,"answrslt", ref.getColumn(nodeIdx_q,"answrslt") + "▦");
  364. ref.setColumn(nodeIdx_q,"nswrslt" , ref.getColumn(nodeIdx_q,"answrslt") + ref.getColumn(nodeIdx_q,"answno"));
  365. ref.setColumn(nodeIdx_q,"organswrslt", ref.getColumn(nodeIdx_q,"answrslt") + ref.getColumn(nodeIdx_q,"answno"));
  366. }
  367. }
  368. ctrl.position.height = ht * answlines;
  369. topPos = topPos + (ht * answlines) ;
  370. //기타상세입력
  371. if( answno == "99999" ){
  372. // ctrlType = "xforms:input";
  373. ctrl = new Edit();
  374. ctrlType = "input";
  375. ctrlCnt++;
  376. ctrlID = ctrlType + ctrlCnt;
  377. // ctrl = grp_inqr.createChild(ctrlType, "id:" + ctrlID + "; left:" + 35 + "px; top:" + topPos + "px; width:" + (wd-10) + " px; height:" + 19 + "px; ");
  378. //nodeIdx++;
  379. ctrl.init(ctrlID, 35, topPos, 35+(wd-10), topPos+19);
  380. this.grp.grp_inqr.addChild(ctrlID, ctrl);
  381. ctrl.value = etcanswcnts;
  382. // ctrl.attribute("text") = etcanswcnts;
  383. //ctrl.attribute("ref") = ref + "[" + nodeIdx + "]/etcanswcnts";
  384. //컴포넌트 데이터셋 바인딩
  385. var objBindItem = new BindItem();
  386. objBindItem.init("item"+ctrlCnt, "grp.grp_inqr."+ctrlID, "value", "ds_main_answlist", "etcanswcnts");
  387. this.addChild("item"+ctrlCnt, objBindItem);
  388. objBindItem.bind();
  389. topPos = topPos + 19;
  390. }
  391. topPos = topPos + 15;
  392. }else if( answflag == "2" ){ //체크박스
  393. ht = 16;
  394. //ctrlType = "xforms:select";
  395. ctrl = new CheckBox();
  396. ctrlType = "select";
  397. ctrlCnt++;
  398. ctrlID = ctrlType + ctrlCnt;
  399. // ctrl = grp_inqr.createChild(ctrlType, "id:" + ctrlID + " overflow:visible; appearance:full; cursor:pointer; cols:1; left:" + 20 + "px; top:" + topPos + "px; width:" + wd + " px; height:" + 0 + "px; ");
  400. ctrl.init(ctrlID, 20, topPos, 20+wd, topPos);
  401. this.grp.grp_inqr.addChild(ctrlID, ctrl);
  402. //ctrl.attribute("ref") = ref + "[" + nodeIdx_q + "]/answrslt";
  403. //ctrl.attribute("sep") = "▦";
  404. //var choices = ctrl.createChild("xforms:choices", "");
  405. var itemlines = 0;
  406. var answlines = 0;
  407. for(var j = 0; j < answList.rowcount; j++){
  408. //jNode = answList.item(j);
  409. var answno = answList.getColumn(j, "answno"); //jNode.selectSingleNode("answno");
  410. var answcnts = answList.getColumn(j, "answcnts"); //jNode.selectSingleNode("answcnts").text;
  411. var etcanswcnts = answList.getColumn(j, "etcanswcnts"); //jNode.selectSingleNode("etcanswcnts").text;
  412. var answlen = parseInt(answList.getColumn(j, "answlen")); //jNode.selectSingleNode("answlen").text
  413. // var itemset = choices.createChild("xforms:item", "");
  414. // itemset.createChild("xforms:label", "text:"+answcnts+";");
  415. // itemset.createChild("xforms:value", "text:"+answno.text+";");
  416. if( answlen > 60 ){
  417. itemlines = answlen / 61;
  418. itemlines = Math.ceil(itemlines * Math.pow(10, -1*(-1)-1)) / Math.pow(10, -1*(-1)-1);
  419. if( answlen > itemlines * 60 ) itemlines++;;
  420. }else {
  421. itemlines = 1;
  422. }
  423. answlines = answlines + itemlines;
  424. nodeIdx++;
  425. if( ref.getColumn(nodeIdx, "answstatcd") == "Y" ){ // model.getValue(ref + "[" + nodeIdx + "]/answstatcd")
  426. if( ref.getColumn(nodeIdx_q, "answrslt") != "" ) { // model.getValue(ref + "[" + nodeIdx_q + "]/answrslt")
  427. ref.setColumn(nodeIdx_q, "answrslt", ref.getColumn(nodeIdx_q, "answrslt") + "▦"); //model.setValue( ref + "[" + nodeIdx_q + "]/answrslt", model.getValue(ref + "[" + nodeIdx_q + "]/answrslt") + "▦");
  428. }
  429. ref.setColumn(nodeIdx_q, "answrslt", ref.getColumn(nodeIdx_q, "answrslt") + ref.getColumn(nodeIdx, "answno")); //model.setValue( ref + "[" + nodeIdx_q + "]/answrslt", model.getValue(ref + "[" + nodeIdx_q + "]/answrslt") + model.getValue(ref + "[" + nodeIdx + "]/answno"));
  430. ref.setColumn(nodeIdx_q, "organswrslt", ref.getColumn(nodeIdx_q, "answrslt") + ref.getColumn(nodeIdx, "answno")); //model.setValue( ref + "[" + nodeIdx_q + "]/organswrslt", model.getValue(ref + "[" + nodeIdx_q + "]/answrslt") + model.getValue(ref + "[" + nodeIdx + "]/answno"));
  431. }
  432. }
  433. //ctrl.attribute("height") = ht * answlines;
  434. topPos = topPos + (ht * answlines) ;
  435. //기타상세입력
  436. if( answno == "99999" ){
  437. //ctrlType = "xforms:input";
  438. ctrlCnt++;
  439. ctrlID = ctrlType + ctrlCnt;
  440. //ctrl = grp_inqr.createChild(ctrlType, "id:" + ctrlID + "; left:" + 35 + "px; top:" + topPos + "px; width:" + (wd-10) + " px; height:" + 19 + "px; ");
  441. //ctrl.attribute("text") = etcanswcnts;
  442. //ctrl.attribute("ref") = ref + "[" + nodeIdx + "]/etcanswcnts";
  443. topPos = topPos + 19;
  444. }
  445. topPos = topPos + 15;
  446. }else if( answflag == "3" ){
  447. ht = 19;
  448. //ctrlType = "xforms:textarea";
  449. ctrlCnt++;
  450. ctrlID = ctrlType + ctrlCnt;
  451. //ctrl = grp_inqr.createChild(ctrlType, "id:" + ctrlID + "; left:" + 20 + "px; top:" + topPos + "px; width:" + wd + " px; height:" + 32 + "px; ");
  452. nodeIdx++;
  453. //ctrl.attribute("text") = etcanswcnts;
  454. //ctrl.attribute("ref") = ref + "[" + nodeIdx_q + "]/answrslt";
  455. topPos = topPos + 32 + 15;
  456. if( ref.getColumn(nodeIdx, "answstatcd") == "Y" ){ // model.getValue(ref + "[" + nodeIdx + "]/answstatcd") == "Y"
  457. ref.setColumn(nodeIdx_q, "answrslt", ref.getColumn(nodeIdx_q, "answrslt") + ref.getColumn(nodeIdx, "etcanswcnts")); //model.setValue( ref + "[" + nodeIdx_q + "]/answrslt", model.getValue(ref + "[" + nodeIdx_q + "]/answrslt") + model.getValue(ref + "[" + nodeIdx + "]/etcanswcnts"));
  458. ref.setColumn(nodeIdx_q, "organswrslt", ref.getColumn(nodeIdx_q, "answrslt") + ref.getColumn(nodeIdx, "etcanswcnts")); //model.setValue( ref + "[" + nodeIdx_q + "]/organswrslt", model.getValue(ref + "[" + nodeIdx_q + "]/answrslt") + model.getValue(ref + "[" + nodeIdx + "]/etcanswcnts"));
  459. }
  460. }
  461. }
  462. }
  463. //문진 구성 후, 하단에 공간 생성
  464. topPos = topPos + 10;
  465. //ctrlType = "xforms:caption";
  466. ctrlCnt++;
  467. ctrlID = ctrlType + ctrlCnt;
  468. ht = 23;
  469. //ctrl = grp_inqr.createChild(ctrlType, "id:" + ctrlID + ";left:" + 10 + "px; top:" + topPos + "px; width:" + 560 + " px; height:" + ht + "px; font-size:10pt; color:#000000; font-weight:bolder;");
  470. //grp_inqr.refresh();
  471. }
  472. /**
  473. * @group :
  474. * @ver : 2010.01
  475. * @by : 전지은
  476. * @---------------------------------------------------
  477. * @type : function
  478. * @access : public
  479. * @desc : 각 답안정보 저장
  480. * @param :
  481. * @return :
  482. * @---------------------------------------------------
  483. */
  484. function fSaveInqrAnswList(){
  485. //var saveRef = ds_send_savedata; //"/root/send/savedata/savelist";
  486. var answflag = "";
  487. var cpgappno = "";
  488. var inqrno = "";
  489. var inqrhistno = "";
  490. var qestno = "";
  491. var answcnts = "";
  492. var etcanswcnts = "";
  493. var answrslt = "";
  494. var stepno = "";
  495. var pntmflag = "";
  496. var inqrflag = "";
  497. var qestcnts = "";
  498. var orgAnswCnts = "";
  499. var orgEtcAnswCnts = "";
  500. var orgAnswrslt = "";
  501. var cngAnswCnts = "";
  502. var cngEtcAnswCnts = "";
  503. var cngAnswrslt = "";
  504. var limno = "";
  505. var limhistno = "";
  506. var limcdno = "";
  507. var setattrno = "";
  508. var setattrhistno = "";
  509. var statusNode = "";
  510. var rowNum = 0;
  511. var answnoNode = null;
  512. var answCnt = null;
  513. var allList = ds_main_answlist.getCaseCount("answno == '0'"); //instance1.selectNodes("/root/main/inqrinfo/answlist[answno='0']"); //모든 질문 리스트
  514. //var inqrList = instance1.selectNodes("/root/main/inqrinfo/answlist[answno='0' and answexistyn='Y']"); //답안 작성해야하는 질문 리스트
  515. var inqrList = new Dataset;
  516. ds_main_answlist.filter("answno == 0 && answexistyn == 'Y'");
  517. inqrList.copyData(ds_main_answlist,true);
  518. ds_main_answlist.filter("");
  519. var answList = ds_main_answlist.getCaseCount("answno == '0' && answexistyn == 'Y' && answrslt != ''"); //instance1.selectNodes("/root/main/inqrinfo/answlist[answno='0' and answexistyn='Y' and answrslt!='']"); //답안 수정이 일어난 질문 리스트
  520. if( allList <= 0 ){
  521. sysf_messageBox ( "저장할 데이터가" , "I004" ); //없습니다.
  522. return;
  523. }
  524. if( inqrList.rowcount > answList ){ // inqrList.length > answList.length
  525. sysf_messageBox ( "입력하지 않은 항목이 존재하여 저장할 수" , "I004" ); //없습니다.
  526. return;
  527. }
  528. saveRef.clearData(); //model.removeNodeset(saveRef);
  529. dsf_createDs("ds_send_savedata"); //model.makeNode("/root/send/savedata"); ds_send_savedata 이미 만들어놓긴 했다. var saveRef = ds_send_savedata; 여기서 쓰기땜시
  530. for( var i = 0; i < inqrList.rowcount; i++ ){ //질문 리스트만큼 loop
  531. answnoNode = null;
  532. answCnt = null;
  533. //var node = inqrList.item(i);
  534. answflag = inqrList.getColumn(i, "answflag"); //node.selectSingleNode("answflag").text;
  535. cpgappno = inqrList.getColumn(i, "cpgappno"); //node.selectSingleNode("cpgappno").text;
  536. inqrno = inqrList.getColumn(i, "inqrno"); //node.selectSingleNode("inqrno").text;
  537. inqrhistno = inqrList.getColumn(i, "inqrhistno"); //node.selectSingleNode("inqrhistno").text;
  538. qestno = inqrList.getColumn(i, "qestno"); //node.selectSingleNode("qestno").text;
  539. answcnts = inqrList.getColumn(i, "answcnts"); //node.selectSingleNode("answcnts").text;
  540. etcanswcnts = inqrList.getColumn(i, "etcanswcnts"); //node.selectSingleNode("etcanswcnts").text;
  541. qestcnts = inqrList.getColumn(i, "qestcnts"); //node.selectSingleNode("qestcnts").text;
  542. //질문 키
  543. stepno = inqrList.getColumn(i, "stepno"); //node.selectSingleNode("stepno").text;
  544. pntmflag = inqrList.getColumn(i, "pntmflag"); //node.selectSingleNode("pntmflag").text;
  545. inqrflag = inqrList.getColumn(i, "inqrflag"); //node.selectSingleNode("inqrflag").text;
  546. statusNode = inqrList.getColumn(i, "status"); //node.selectSingleNode("status");
  547. // 원래 답안
  548. orgAnswrslt = inqrList.getColumn(i, "organswrslt"); //node.selectSingleNode("organswrslt").text;
  549. orgAnswCnts = inqrList.getColumn(i, "organswcnts"); //node.selectSingleNode("organswcnts").text;
  550. orgEtcAnswCnts = inqrList.getColumn(i, "orgetcanswcnts"); //node.selectSingleNode("orgetcanswcnts").text;
  551. // 저장할 답안
  552. answrslt = inqrList.getColumn(i, "answrslt"); //node.selectSingleNode("answrslt").text;
  553. cngAnswCnts = inqrList.getColumn(i, "answcnts"); //node.selectSingleNode("answcnts").text;
  554. cngEtcAnswCnts = inqrList.getColumn(i, "etcanswcnts"); //node.selectSingleNode("etcanswcnts").text;
  555. //필수처방 미발행 사유
  556. limno = inqrList.getColumn(i, "limno"); //node.selectSingleNode("limno").text;
  557. limhistno = inqrList.getColumn(i, "limhistno"); //node.selectSingleNode("limhistno").text;
  558. limcdno = inqrList.getColumn(i, "limcdno"); //node.selectSingleNode("limcdno").text;
  559. setattrno = inqrList.getColumn(i, "setattrno"); //node.selectSingleNode("setattrno").text;
  560. setattrhistno = inqrList.getColumn(i, "setattrhistno"); //node.selectSingleNode("setattrhistno").text;
  561. //답안 변경사항이 없으면 그냥 skip
  562. if( answrslt!='' || orgAnswrslt != cngAnswrslt || orgAnswCnts != cngAnswCnts || orgEtcAnswCnts != cngEtcAnswCnts ){
  563. statusNode = "U"; //model.setValue(statusNode, "U");
  564. }else{
  565. continue; //변경사항 없다면 다시 저장하지 않는다
  566. }
  567. //(1) 직접 입력형태 답안
  568. if( answflag == "3" ){
  569. rowNum++;
  570. //answnoNode = instance1.selectSingleNode("/root/main/inqrinfo/answlist[inqrno='"+inqrno+"' and inqrhistno='"+inqrhistno+"' and qestno='"+qestno+"' and answno!='0' and qestcnts='"+qestcnts+"']/answno");
  571. answnoNode = new Dataset;
  572. ds_main_answlist.filter("inqrno=='"+inqrno+"' && inqrhistno=='"+inqrhistno+"' && qestno=='"+qestno+"' && qestcnts=='" + qestcnts + "'");
  573. answList.copyData(ds_main_answlist,true);
  574. ds_main_answlist.filter("");
  575. dsf_makeValue(ds_send_savedata, "cpgappno", "string", cpgappno, rowNum); // model.makeValue(saveRef + "[" + rowNum + "]/cpgappno" , cpgappno);
  576. dsf_makeValue(ds_send_savedata, "inqrno", "string", inqrno, rowNum); // model.makeValue(saveRef + "[" + rowNum + "]/inqrno" , inqrno);
  577. dsf_makeValue(ds_send_savedata, "inqrhistno", "string", inqrhistno, rowNum); // model.makeValue(saveRef + "[" + rowNum + "]/inqrhistno" , inqrhistno);
  578. dsf_makeValue(ds_send_savedata, "qestno", "string", qestno, rowNum); // model.makeValue(saveRef + "[" + rowNum + "]/qestno" , qestno);
  579. dsf_makeValue(ds_send_savedata, "answstatcd", "string", answstatcd, rowNum); // model.makeValue(saveRef + "[" + rowNum + "]/answstatcd" , "Y");
  580. dsf_makeValue(ds_send_savedata, "answno", "string", answno, rowNum); // model.makeValue(saveRef + "[" + rowNum + "]/answno" , answnoNode.text);
  581. dsf_makeValue(ds_send_savedata, "answcnts", "string", answcnts, rowNum); // model.makeValue(saveRef + "[" + rowNum + "]/answcnts" , answrslt);
  582. dsf_makeValue(ds_send_savedata, "answflag", "string", answflag, rowNum); // model.makeValue(saveRef + "[" + rowNum + "]/answflag" , answflag);
  583. dsf_makeValue(ds_send_savedata, "stepno", "string", stepno, rowNum); // model.makeValue(saveRef + "[" + rowNum + "]/stepno" , stepno);
  584. dsf_makeValue(ds_send_savedata, "pntmflag", "string", pntmflag, rowNum); // model.makeValue(saveRef + "[" + rowNum + "]/pntmflag" , pntmflag);
  585. dsf_makeValue(ds_send_savedata, "inqrflag", "string", inqrflag, rowNum); // model.makeValue(saveRef + "[" + rowNum + "]/inqrflag" , inqrflag);
  586. dsf_makeValue(ds_send_savedata, "limno", "string", limno, rowNum); // model.makeValue(saveRef + "[" + rowNum + "]/limno" , limno);
  587. dsf_makeValue(ds_send_savedata, "limhistno", "string", limhistno, rowNum); // model.makeValue(saveRef + "[" + rowNum + "]/limhistno" , limhistno);
  588. dsf_makeValue(ds_send_savedata, "limcdno", "string", limcdno, rowNum); // model.makeValue(saveRef + "[" + rowNum + "]/limcdno" , limcdno);
  589. dsf_makeValue(ds_send_savedata, "setattrno", "string", setattrno, rowNum); // model.makeValue(saveRef + "[" + rowNum + "]/setattrno" , setattrno);
  590. dsf_makeValue(ds_send_savedata, "setattrhistno", "string", setattrhistno, rowNum); // model.makeValue(saveRef + "[" + rowNum + "]/setattrhistno" , setattrhistno);
  591. }
  592. //(2) 선택 답안 (단일/다중/기타)
  593. else{
  594. answCnt = answrslt.split("▦"); //개수? 배열?
  595. //answnoNode = instance1.selectNodes("/root/main/inqrinfo/answlist[inqrno='"+inqrno+"' and inqrhistno='"+inqrhistno+"' and qestno='"+qestno+"' and answno!='0']"); //답안 전체
  596. answnoNode = new Dataset;
  597. ds_main_answlist.filter("inqrno=='"+inqrno+"' && inqrhistno=='"+inqrhistno+"' && qestno=='"+qestno+"' && answno !='0'");
  598. answnoNode.copyData(ds_main_answlist,true);
  599. ds_main_answlist.filter("");
  600. if( answnoNode.rowcount > 0 ){ //if( answCnt.length > 0 ){
  601. for( var j = 0; j < answnoNode.rowcount; j++ ){ //for( var j=0; j<answCnt; j++ ){
  602. rowNum++;
  603. var jAnswnoNode = null;
  604. var jAnswcntsNode = null;
  605. var jLimnoNode = null;
  606. var jSetattrnoNode = null;
  607. var jAnswstatcd = "N";
  608. //var aNode = answnoNode.item(j);
  609. //답안내용 설정 (기타이면 입력내용으로, 그렇지 않으면 보기내용으로)
  610. jAnswnoNode = answnoNode.getColumn(j, "answno"); //aNode.selectSingleNode("answno");
  611. jLimnoNode = answnoNode.getColumn(j, "limno"); // aNode.selectSingleNode("limno");
  612. jSetattrnoNode = answnoNode.getColumn(j, "setattrno"); //aNode.selectSingleNode("setattrno");
  613. if( !utlf_isNull(jLimnoNode) || !utlf_isNull(jSetattrnoNode) )
  614. jAnswcntsNode = answnoNode.getColumn(j, "etcanswcnts"); //aNode.selectSingleNode("etcanswcnts");
  615. else
  616. jAnswcntsNode = answnoNode.getColumn(j, "answcnts"); //aNode.selectSingleNode("answcnts");
  617. //선택여부 설정 (선택값 리스트와 비교하여 Y/N 따져줌)
  618. if( answCnt.length > 0 ){
  619. for( var K = 0; K < answCnt.length; K++ ){
  620. if( answCnt[K] == jAnswnoNode ){
  621. jAnswstatcd = "Y";
  622. break;
  623. }
  624. }
  625. }
  626. dsf_makeValue(ds_send_savedata, "cpgappno", "string", cpgappno, rowNum); // model.makeValue(saveRef + "[" + rowNum + "]/cpgappno" , cpgappno);
  627. dsf_makeValue(ds_send_savedata, "inqrno", "string", inqrno, rowNum); // model.makeValue(saveRef + "[" + rowNum + "]/inqrno" , inqrno);
  628. dsf_makeValue(ds_send_savedata, "inqrhistno", "string", inqrhistno, rowNum); // model.makeValue(saveRef + "[" + rowNum + "]/inqrhistno" , inqrhistno);
  629. dsf_makeValue(ds_send_savedata, "qestno", "string", qestno, rowNum); // model.makeValue(saveRef + "[" + rowNum + "]/qestno" , qestno);
  630. dsf_makeValue(ds_send_savedata, "answstatcd", "string", answstatcd, rowNum); // model.makeValue(saveRef + "[" + rowNum + "]/answstatcd" , jAnswstatcd); //"Y"
  631. dsf_makeValue(ds_send_savedata, "answno", "string", answno, rowNum); // model.makeValue(saveRef + "[" + rowNum + "]/answno" , jAnswnoNode.text ); //answCnt[j]
  632. dsf_makeValue(ds_send_savedata, "answcnts", "string", answcnts, rowNum); // model.makeValue(saveRef + "[" + rowNum + "]/answcnts" , jAnswcntsNode.text); //answnoNode.text
  633. dsf_makeValue(ds_send_savedata, "answflag", "string", answflag, rowNum); // model.makeValue(saveRef + "[" + rowNum + "]/answflag" , answflag);
  634. dsf_makeValue(ds_send_savedata, "stepno", "string", stepno, rowNum); // model.makeValue(saveRef + "[" + rowNum + "]/stepno" , stepno);
  635. dsf_makeValue(ds_send_savedata, "pntmflag", "string", pntmflag, rowNum); // model.makeValue(saveRef + "[" + rowNum + "]/pntmflag" , pntmflag);
  636. dsf_makeValue(ds_send_savedata, "inqrflag", "string", inqrflag, rowNum); // model.makeValue(saveRef + "[" + rowNum + "]/inqrflag" , inqrflag);
  637. //
  638. dsf_makeValue(ds_send_savedata, "limno", "string", limno, rowNum); // model.makeValue(saveRef + "[" + rowNum + "]/limno" , limno);
  639. dsf_makeValue(ds_send_savedata, "limhistno", "string", limhistno, rowNum); // model.makeValue(saveRef + "[" + rowNum + "]/limhistno" , limhistno);
  640. dsf_makeValue(ds_send_savedata, "limcdno", "string", limcdno, rowNum); // model.makeValue(saveRef + "[" + rowNum + "]/limcdno" , limcdno);
  641. dsf_makeValue(ds_send_savedata, "setattrno", "string", setattrno, rowNum); // model.makeValue(saveRef + "[" + rowNum + "]/setattrno" , setattrno);
  642. dsf_makeValue(ds_send_savedata, "setattrhistno", "string", setattrhistno, rowNum); // model.makeValue(saveRef + "[" + rowNum + "]/setattrhistno" , setattrhistno);
  643. } //end for (answnoNode)
  644. }
  645. }
  646. } //end for
  647. rowNum++;
  648. dsf_makeValue(ds_send_savedata, "lastcallyn", "string", ds_send_reqdata.getColumn(0, "lastcallyn")); //model.makeValue("/root/send/savedata/info/lastcallyn", model.getValue("/root/send/reqdata/lastcallyn"));
  649. if( ds_send_savedata.rowcount > 0 ){ // instance1.selectNodes(saveRef).length
  650. var oParam = {};
  651. oParam.id = "TXMMP03401";
  652. oParam.service = "prcpmngtapp.CPPrcpMngt";
  653. oParam.method = "reqExeInqrAnswList";
  654. oParam.inds = "req=ds_send_savedata";
  655. oParam.async = false;
  656. oParam.callback = "cf_TXMMP03401";
  657. tranf_submit(oParam);
  658. }
  659. else close();
  660. }
  661. function cf_TXMMP03401(sSvcId, nErrorCode, sErrorMsg) {
  662. if(nErrorCode < 0) return;
  663. var mainObj = frmf_getMainViewer();
  664. curCpObj = mainObj.frmf_findPopup("SMMMP00800"); //mainObj.javascript.getOpenWindow("SMMMP00800"); //활성화된 CP Main 화면 object loading
  665. if(curCpObj != null) opener.fGetInqrList();
  666. close();
  667. }
  668. function btn_cnfm_onclick(obj:Button, e:ClickEventInfo)
  669. {
  670. fSaveInqrAnswList();
  671. }
  672. function btn_cncl_onclick(obj:Button, e:ClickEventInfo)
  673. {
  674. close();
  675. }
  676. ]]></Script>
  677. </Form>
  678. </FDL>