LZZ002.xjs 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[
  3. /*
  4. ===============================================================================
  5. File Name : LZZ002.js
  6. File Explanation :
  7. File Author : Hyung Taek Lee. 2012-01-12
  8. Revision Details :
  9. ===============================================================================
  10. */
  11. /**
  12. * @group : commonweb
  13. * @ver : 2012-01-20 (CMCDEV-0001)
  14. * @by : Hyung Taek Lee [ACK Co., Ltd.]
  15. * @---------------------------------------------------
  16. * @type : function
  17. * @access : public
  18. * <pre>
  19. * 하단의 작업표시줄 메세지 표시
  20. *
  21. * </pre>
  22. * @param : msg (view messege)
  23. * @return :
  24. * @---------------------------------------------------
  25. */
  26. function gfn_statMessage(msg) {
  27. setSystemMessage(msg);
  28. }
  29. function cbf_TRLPJ01702(strSvcID, nErrorCode, strErrorMag){
  30. if(nErrorCode != 0) sysf_messageBox("ID: " + strSvcID + " Error: " + strErrorMag, "E009", "");
  31. }
  32. /**
  33. * @group : commonweb
  34. * @ver : 2012.02.03 (CMCDEV-0001)
  35. * @by : 이형택 [ACK Co., Ltd.]
  36. * @---------------------------------------------------
  37. * @type : function
  38. * @access : public
  39. * <pre>
  40. * rex 바코드 출력
  41. * 바코드 설정 채혈 일반설정 "1"
  42. * 환자바코드 "2"
  43. * 보관검체 "3"
  44. * 구분의 프린터 설정된 프린터와 rex 파일로 출력된다.
  45. *
  46. * </pre>
  47. * @param : sGbn = 출력구분
  48. * @param : sCopyNode = 복사할 노드
  49. * @return :
  50. * @---------------------------------------------------
  51. */
  52. function gfn_rex3BcnoPrint(sGbn, sPrntDS, bGbn, sCopies)
  53. {
  54. var pCopies = 1; // 디폴트 복사매수 1매
  55. if(sCopies != null && sCopies != ""){
  56. //alert(sCopies);
  57. pCopies = sCopies; // 지정된 복사매수(sCopies) 가 있으면 세팅한다.
  58. }
  59. var iRow, sPrtGbn, sMsg;
  60. iRow = -1;
  61. for (i=0;i<ds_grid_grd_pcllist.rowcount;i++)
  62. {
  63. sPrtGbn = ds_grid_grd_pcllist.getColumn(i,"prtgbn");
  64. if (sGbn == sPrtGbn)
  65. {
  66. iRow = i;
  67. break;
  68. }
  69. }
  70. if (iRow == -1)
  71. {
  72. if (sGbn == "1") sMsg = "일반 바코드";
  73. if (sGbn == "2") sMsg = "환자 바코드";
  74. if (sGbn == "3") sMsg = "Cross-Matching 바코드";
  75. if (sGbn == "4") sMsg = "병리검체 바코드";
  76. if (sGbn == "5") sMsg = "배지 바코드";
  77. if (sGbn == "6") sMsg = "혈액준비 바코드";
  78. if (sGbn == "7") sMsg = "QC 접수바코드";
  79. if (sGbn == "8") sMsg = "슬라이드 라벨";
  80. if (sGbn == "9") sMsg = "방사면역분주 라벨";
  81. if (sGbn == "10") sMsg = "병리접수 라벨";
  82. if (sGbn == "11") sMsg = "시약 라벨";
  83. sysf_messageBox(sMsg + " 설정된 프린터가 ", "I004");
  84. return;
  85. }
  86. var sRexFile, sPrintNm, prntcnt;
  87. var count = sPrntDS.rowcount;
  88. for(x=0;x<count;x++){
  89. if(bGbn == "1"){ //채혈
  90. var cnt = sPrntDS.getColumn(x,"bcollbarcdprntcnt");
  91. }
  92. else if (bGbn == "2"){ //접수
  93. var cnt = sPrntDS.getColumn(x,"spcacptbarcdprntcnt");
  94. }
  95. else if (bGbn == "3"){ //미생물
  96. var cnt = sPrntDS.getColumn(x,"microbarcdprntcnt");
  97. }
  98. else if (bGbn == "4"){ //배지
  99. var cnt = "1"; //배지출력 1세트씩 출력위해 TF단에서 for문처리
  100. //var cnt = sPrntDS.getColumn(x,"mdiabarcdprntcnt");
  101. }else if (bGbn == "11"){ //시약
  102. var cnt = sPrntDS.getColumn(x,"reagentbarcdprntcnt");
  103. }else if (bGbn == "5"){ // 병리채혈
  104. //var cnt = sPrntDS.getColumn(x,"barcdprntcnt");
  105. var cnt = "1";
  106. }else { //재출력,1장출력인 부분
  107. var cnt = "1";
  108. }
  109. if(cnt > "1"){
  110. for(y=1;y<=cnt;y++){
  111. nRow = sPrntDS.addRow();
  112. sPrntDS.copyRow(nRow,sPrntDS,x);
  113. }
  114. }
  115. }
  116. var objParam = new Object();
  117. if (sGbn == "3"){
  118. objParam.xml_data_XML1 = rptf_getXMLString(sPrntDS, "KeepBcnoPrint/printinfo");
  119. }else if(sGbn == "4"){
  120. objParam.xml_data_XML1 = rptf_getXMLString(sPrntDS, "barcode/plgybarcdinfo");
  121. }else if(sGbn == "5"){
  122. objParam.xml_data_XML1 = rptf_getXMLString(sPrntDS, "barcode/plgybarcdinfo");
  123. }else if(sGbn == "10"){
  124. objParam.xml_data_XML1 = rptf_getXMLString(sPrntDS, "barcode/plgybarcdinfo");
  125. trace(objParam.xml_data_XML1);
  126. }else {
  127. objParam.xml_data_XML1 = rptf_getXMLString(sPrntDS, "barcode/barcodeinfo");
  128. }
  129. //trace("objParam.xml_data_XML1 : " +objParam.xml_data_XML1);
  130. sRexFile = utlf_transNullToEmpty(ds_grid_grd_pcllist.getColumn(iRow,"barnm"));
  131. sPrintNm = utlf_transNullToEmpty(ds_grid_grd_pcllist.getColumn(iRow,"prtnm"));
  132. sLeftBank = utlf_transNullToEmpty(ds_grid_grd_pcllist.getColumn(iRow,"xpos"));
  133. sTopBank = utlf_transNullToEmpty(ds_grid_grd_pcllist.getColumn(iRow,"ypos"));
  134. if (sLeftBank == "" || sLeftBank == "-") sLeftBank = 0;
  135. if (sTopBank == "" || sTopBank == "-") sTopBank = 0;
  136. var option = "open=1;save=1;directprint=1;printdialog=0;print=1;zoom=0";
  137. // 수정: Mindsys(c) 김인섭 2014.11.10
  138. if(sGbn == 4){
  139. var printoption = "copies="+pCopies+";printername="+sPrintNm+""; // 병리 출력일경우-> offset 제거, 복사매수 옵션 추가
  140. }else if(sGbn == 10){
  141. var printoption = "copies="+pCopies+";printername="+sPrintNm+""; // 병리 출력일경우-> offset 제거, 복사매수 옵션 추가
  142. }
  143. else{
  144. var printoption = "offsetx=" + sLeftBank + ";" + "offsety=" + sTopBank + ";" + "printername="+sPrintNm+"";
  145. }
  146. //var option = "offsetx=" + sLeftBank + ";" + "offsety=" + sTopBank + ";";
  147. if(sGbn == "1" || sGbn == "2" || sGbn == "3" || sGbn == "5" || sGbn == "6" || sGbn == "7" || sGbn == "8" || sGbn == "11") {
  148. // 슬라이드 라벨 출력 시 병원명칭 가져와서 출력
  149. if (sGbn == "8") {
  150. objParam.hospnm = ds_hospital_info.getColumn(0, "hospnm" );
  151. }
  152. rptf_exeReportPreview30([sRexFile],[objParam], option ,printoption);
  153. }
  154. else if(sGbn == "4") {
  155. rptf_exeReportPreview30([sRexFile],[objParam], option, printoption);
  156. }else if(sGbn == "10") {
  157. rptf_exeReportPreview30([sRexFile],[objParam], option, printoption);
  158. }else if(sGbn == "9") {
  159. rptf_exeReportPreview30([sRexFile],[objParam], option, printoption);
  160. }
  161. return true;
  162. }
  163. /*
  164. * @group : commonweb
  165. * @ver : 201.07.29 (CMCDEV-0001)
  166. * @by : 최영돈 [ACK Co., Ltd.]
  167. * @---------------------------------------------------
  168. * @type : function
  169. * @access : public
  170. * <pre>
  171. * rex 바코드 멀티출력
  172. * </pre>
  173. * @param : sGbn = 진검바코드
  174. * @param : sGbn2 = 병리바코드
  175. * @param : ds_ptntBarcd = 출력일반바코드정보DS
  176. * @param : ds_prntPlgybarcd = 출력병리바코드정보DS
  177. * @param : bGbn = 구분
  178. * @return :
  179. * @---------------------------------------------------
  180. */
  181. function gfn_rex3MultiBcnoPrint(sGbn, sGbn2, ds_ptntBarcd, ds_prntPlgybarcd,bGbn)
  182. {
  183. var iRow, jRow, sPrtGbn, sPrintNm;
  184. var sMsg = "";
  185. //멀티레포트 입력변수
  186. var reportNames = new Array(); //레포트명
  187. var reportParams = new Array(); //레포트 파라미터
  188. var printoption = ""
  189. iRow = -1;
  190. jRow = -1;
  191. var option = "open=1;save=1;directprint=1;printdialog=0;print=1;zoom=0";
  192. for (i=0;i<ds_grid_grd_pcllist.rowcount;i++)
  193. {
  194. sPrtGbn = ds_grid_grd_pcllist.getColumn(i,"prtgbn");
  195. if (sGbn == sPrtGbn)
  196. {
  197. iRow = i;
  198. }
  199. if (sGbn2 == sPrtGbn)
  200. {
  201. jRow = i;
  202. }
  203. }
  204. if (iRow == -1)
  205. {
  206. if (sGbn == "1") sMsg = "일반 바코드";
  207. }
  208. if (jRow == -1)
  209. {
  210. if(sGbn2 == "4"){
  211. if(sMsg != ""){
  212. sMsg += ", 병리검체 바코드";
  213. }else{
  214. sMsg = "병리검체 바코드";
  215. }
  216. }
  217. }
  218. if(sMsg != ""){
  219. sysf_messageBox(sMsg + " 설정된 프린터가 ", "I004");
  220. return;
  221. }
  222. var count = ds_ptntBarcd.rowcount;
  223. dsf_createDs("ds_prnt_barcodeinfo");
  224. ds_prnt_barcodeinfo.copyData(ds_ptntBarcd);
  225. ds_prnt_barcodeinfo.clearData();
  226. for(x=0;x<count;x++){
  227. if(bGbn == "1"){ //채혈
  228. var cnt = ds_ptntBarcd.getColumn(x,"bcollbarcdprntcnt");
  229. }
  230. else { //재출력,1장출력인 부분 -> 바코드갯수로 수정
  231. //var cnt = 1;
  232. var cnt = ds_ptntBarcd.getColumn(x,"bcollbarcdprntcnt"); // -> 바코드 갯수로 수정시..
  233. }
  234. if(cnt >= 1){
  235. for(y=1;y<=cnt;y++){
  236. nRow = ds_prnt_barcodeinfo.addRow();
  237. ds_prnt_barcodeinfo.copyRow(nRow,ds_ptntBarcd,x);
  238. }
  239. }
  240. }
  241. if(count > 0){
  242. var sRexFile = utlf_transNullToEmpty(ds_grid_grd_pcllist.getColumn(iRow,"barnm"));
  243. if(utlf_transNullToEmpty(ds_ptntBarcd.getColumn(0,"barcdprntdt"))!=""){
  244. var objParam = new Object();
  245. objParam.xml_data_XML1 = rptf_getXMLString(ds_prnt_barcodeinfo, "barcode/barcodeinfo");
  246. //reportNames.push("RPLLC00700_일반바코드");
  247. reportNames.push(sRexFile); //만비
  248. reportParams.push(objParam);
  249. } else { //미수납바코드이므로 바코드 프린트dt가 없음. -> else 구문에 추가(RPLLC01000)
  250. var objParam = new Object();
  251. objParam.xml_data_XML1 = rptf_getXMLString(ds_prnt_barcodeinfo, "barcode/barcodeinfo");
  252. reportNames.push("RPLLC01000_미수납바코드");
  253. reportParams.push(objParam);
  254. }
  255. }
  256. var pCount = ds_prntPlgybarcd.rowcount;
  257. trace("pCount : " + pCount);
  258. if(pCount > 0){
  259. if(utlf_transNullToEmpty(ds_prntPlgybarcd.getColumn(0,"spcbarcdno"))!=""){
  260. var objParam = new Object();
  261. objParam.xml_data_XML1 = rptf_getXMLString(ds_prntPlgybarcd, "barcode/plgybarcdinfo");
  262. trace("objParam.xml_data_XML1 : " + objParam.xml_data_XML1);
  263. reportNames.push("RPLLC00401");
  264. reportParams.push(objParam);
  265. } else {
  266. var objParam = new Object();
  267. objParam.xml_data_XML1 = rptf_getXMLString(ds_prntPlgybarcd, "barcode/plgybarcdinfo");
  268. reportNames.push("RPLLC01100");
  269. reportParams.push(objParam);
  270. }
  271. }
  272. if(iRow != -1){
  273. sPrintNm = utlf_transNullToEmpty(ds_grid_grd_pcllist.getColumn(iRow,"prtnm"));
  274. }else{
  275. sPrintNm = utlf_transNullToEmpty(ds_grid_grd_pcllist.getColumn(jRow,"prtnm"));
  276. }
  277. sLeftBank = utlf_transNullToEmpty(ds_grid_grd_pcllist.getColumn(iRow,"xpos"));
  278. sTopBank = utlf_transNullToEmpty(ds_grid_grd_pcllist.getColumn(iRow,"ypos"));
  279. if (sLeftBank == "" || sLeftBank == "-") sLeftBank = 0;
  280. if (sTopBank == "" || sTopBank == "-") sTopBank = 0;
  281. if( sGbn == 0 && sGbn2 == 4){ // 병리 채혈 바코드일때 오프셋 빼고 출력한다.
  282. printoption = "printername="+sPrintNm+"";
  283. }else{
  284. printoption = "offsetx=" + sLeftBank + ";" + "offsety=" + sTopBank + ";" + "printername="+sPrintNm+"";
  285. }
  286. rptf_exeReportPreview30(reportNames, reportParams, option, printoption); // 멀티보고서 출력
  287. return true;
  288. }
  289. /****************************************************************************************
  290. * Argument : N/A
  291. * Description : 부모창에서 받은 XML을 파싱한다.
  292. ****************************************************************************************/
  293. function lf_getClobPasing()
  294. {
  295. dsf_createDs("ds_grid_grd_pcllist"
  296. , [{col: "barnm"}
  297. , {col: "xpos"}
  298. , {col: "ypos"}
  299. , {col: "prtnm"}
  300. , {col: "prtgbn"}]);
  301. dsf_createDs("ds_Data_setupinfo"
  302. , [{col: "setupval"}
  303. , {col: "prntkind"}
  304. , {col: "commkind"}
  305. , {col: "setupval02"}
  306. , {col: "comm"}
  307. , {col: "databit"}
  308. , {col: "stopbit"}
  309. , {col: "baudrate"}
  310. , {col: "parity"}
  311. , {col: "setupval03"}
  312. , {col: "left"}
  313. , {col: "top"}
  314. , {col: "b472size"}
  315. , {col: "rexgbn"}
  316. , {col: "daegiip"}
  317. , {col: "autoyn"}
  318. , {col: "eqmtcd"}
  319. , {col: "auto"}]);
  320. ds_grid_grd_pcllist.clearData();
  321. ds_Data_setupinfo.clearData();
  322. if(ds_init_prntInfo.rowcount<=0)return;
  323. // Parsing
  324. plgv_sSetupInfo = ds_init_prntInfo.getColumn(0,"prntsetupinfo");
  325. p_sSetupInfo = plgv_sSetupInfo;
  326. var sColID;
  327. var domDoc, domElement1, domElement2;
  328. var domPar = new DomParser;
  329. domDoc = domPar.parseFromString(p_sSetupInfo);
  330. // 최상위 노드
  331. for(var i=0; i<domDoc.childNodes.length; i++){
  332. domElement1 = domDoc.childNodes[i];
  333. // 상위 노드
  334. for(var j=0; j<domElement1.childNodes.length; j++){
  335. domElement2 = domElement1.childNodes[j];
  336. if(domElement2.childNodes.length>1||domElement2.nodeName=="pcl"){
  337. lf_getFindElement(domElement2);
  338. }else{
  339. sColID = domElement2.nodeName;
  340. if(sColID=="comm01"){
  341. sColID="setupval";
  342. }
  343. lf_setDatasetMapping(sColID, domElement2.textContent);
  344. }
  345. }
  346. }
  347. }
  348. /****************************************************************************************
  349. * Argument : Element Object
  350. * Description : 파싱된 상위 노드에 하위노드가 존재하면 값을 가져온다.
  351. ****************************************************************************************/
  352. function lf_getFindElement(domElement)
  353. {
  354. var domElementChildNode;
  355. if(domElement.childNodes.length>1||domElement.nodeName=="pcl"){
  356. // 하위 노드
  357. for(var i=0; i<domElement.childNodes.length; i++){
  358. domElementChildNode = domElement.childNodes[i];
  359. if(domElementChildNode.childNodes.length>1){
  360. lf_getFindElement(domElementChildNode);
  361. }else{
  362. sColID = domElementChildNode.nodeName;
  363. lf_setDatasetMapping(sColID, domElementChildNode.textContent);
  364. }
  365. }
  366. }
  367. }
  368. /****************************************************************************************
  369. * Argument : sColID - Dataset Column Name , sValue - 해당 컬럼값
  370. * Description : 파싱된 상위 노드에 하위노드가 존재하면 값을 가져온다.
  371. ****************************************************************************************/
  372. function lf_setDatasetMapping(sColID, sValue)
  373. {
  374. var nRow, objColinfo;
  375. if(!utlf_isNull(sColID)){
  376. objColinfo = ds_Data_setupinfo.getColumnInfo(sColID);
  377. if(!utlf_isNull(objColinfo)){
  378. nRow = ds_Data_setupinfo.rowposition;
  379. if(nRow<0){
  380. nRow = ds_Data_setupinfo.addRow();
  381. }
  382. ds_Data_setupinfo.setColumn(nRow, sColID, sValue);
  383. }
  384. objColinfo = ds_grid_grd_pcllist.getColumnInfo(sColID);
  385. if(!utlf_isNull(objColinfo)){
  386. nRow = ds_grid_grd_pcllist.rowposition;
  387. if(nRow<0||sColID=="barnm"){
  388. nRow = ds_grid_grd_pcllist.addRow();
  389. }
  390. ds_grid_grd_pcllist.setColumn(nRow, sColID, sValue);
  391. }
  392. }
  393. }
  394. ]]></Script>