PHARMACY.xjs 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[/**
  3. */
  4. /***************************************************************************
  5. 전역 변수
  6. ***************************************************************************/
  7. /***************************************************************************
  8. function
  9. ***************************************************************************/
  10. /**
  11. * @ver : 0.1
  12. * @by :
  13. * @---------------------------------------------------
  14. * @type : function
  15. * @access : public
  16. * @desc : 동적 Dataset 삭제
  17. * @param1 : objDs : dataset name
  18. * @return :
  19. * @---------------------------------------------------
  20. */
  21. //objDs : dataset name
  22. function lf_deleteDs(objDs){
  23. var objDs = this.removeChild(objDs);
  24. delete objDs;
  25. objDs = null;
  26. }
  27. /**
  28. * @ver : 0.1
  29. * @by :
  30. * @---------------------------------------------------
  31. * @type : function
  32. * @access : public
  33. * @desc : Dastaset 동적 생성
  34. * @param1 : sName : dataset name
  35. * @return : dataset
  36. * @---------------------------------------------------
  37. */
  38. function lf_createDs(sName){
  39. if(this.objects[sName] != null){
  40. this.objects[sName].clear();
  41. }else{
  42. var objDs = new Dataset(sName);
  43. this.addChild(sName, objDs);
  44. objDs.name = sName;
  45. return objDs
  46. }
  47. }
  48. /**
  49. * @ver : 0.1
  50. * @by :
  51. * @---------------------------------------------------
  52. * @type : function
  53. * @access : public
  54. * @desc : 프린트 설정 여부 확인 (이벤트 - onload 적용)
  55. ( 작성 예: lf_chkPrint("SPADB63000"); )
  56. * @param1 : scnid (화면 아이디)
  57. * @return :
  58. * @---------------------------------------------------
  59. */
  60. function lf_chkPrint(scnid) {
  61. var sInDsName = dsf_createDsRow("ds_temp_scrnid"
  62. , [{col: "scrnid", val: scnid}]); //화면ID
  63. var sOutDsName = dsf_createDsRow("ds_temp_prtinfo", []); //기존 프린터 설정값
  64. tranf_submit({ //기존 프린터 설정 조회
  65. id: "TRADT00713"
  66. , service: "diagtestapplib.LisCommon"
  67. , method: "reqGetSetUpInfo"
  68. , inds: "scrnid="+sInDsName
  69. , outds: sOutDsName+"=getSetUpInfo"
  70. });
  71. var prntsetupinfo = ds_temp_prtinfo.getColumn(0,"prntsetupinfo"); //프린터설정 XML형식
  72. var nullChk = 0;
  73. if(!utlf_isNull(prntsetupinfo)){
  74. var DomParsers = new DomParser;
  75. var xmlDoc = DomParsers.parseFromString(prntsetupinfo);
  76. var nodeSetupval = xmlDoc.getElementsByTagName("setupval"); //기본프린터
  77. var nodePrtnm = xmlDoc.getElementsByTagName("prtnm"); //프린터명
  78. if(!utlf_isNull(nodeSetupval) || !utlf_isNull(nodePrtnm)){
  79. nullChk++;
  80. }
  81. }
  82. if(nullChk == 0){ //기본,설정 프린터 설정 여부 체크
  83. if(sysf_messageBox("설정된 프린터가 없습니다. 프린터설정을","Q004") != 6){
  84. return;
  85. } else{
  86. lf_setPrint();
  87. }
  88. }
  89. lf_setPrintXml(prntsetupinfo); //설정값 데이터셋으로 변환
  90. }
  91. /**
  92. * @ver : 0.1
  93. * @by :
  94. * @---------------------------------------------------
  95. * @type : function
  96. * @access : public
  97. * @desc : 프린트 설정 화면 팝업 (이벤트 - onclick 적용)
  98. ds_temp_print 데이터셋으로 출력물 설정 가능
  99. ( 적용 예: var option = "open=1;save=1;directprint="+ds_temp_print.getColumn(ds_temp_print.findRow("barnm","RPADT10508"), "printnm")+";printdialog=0;print=1;zoom=0;callno=0321234567;faxno=0323298384"; )
  100. * @param1 :
  101. * @return :
  102. * @---------------------------------------------------
  103. */
  104. function lf_setPrint()
  105. {
  106. var objSetupinfo = new Object();
  107. var prntsetupinfo = ds_temp_prtinfo.getColumn(0, "prntsetupinfo");
  108. objSetupinfo.plgv_sSetupInfo = prntsetupinfo;
  109. objSetupinfo.plgv_sCallBackFunction = "lf_getSetupInfo";
  110. frmf_open("SPADB67000", "SPADB67000", objSetupinfo, "", "", "", "", "", "", "", "", "", "M"); //프린터 설정 팝업
  111. }
  112. /**
  113. * @ver : 0.1
  114. * @by :
  115. * @---------------------------------------------------
  116. * @type : function
  117. * @access : public
  118. * @desc : 프린트 설정 값 XML형식으로 세팅
  119. * @param1 :
  120. * @return :
  121. * @---------------------------------------------------
  122. */
  123. function lf_getSetupInfo(sXML)
  124. {
  125. var nRow = ds_temp_prtinfo.rowposition;
  126. if(ds_temp_prtinfo.getRowCount()<1){
  127. nRow = ds_temp_prtinfo.addRow();
  128. }
  129. ds_temp_prtinfo.setColumn(nRow, "prntsetupinfo", sXML);
  130. var prntsetupinfo = ds_temp_prtinfo.getColumn(nRow, "prntsetupinfo");
  131. lf_setPrintXml(prntsetupinfo); //설정값 데이터셋으로 변환
  132. }
  133. /**
  134. * @ver : 0.1
  135. * @by :
  136. * @---------------------------------------------------
  137. * @type : function
  138. * @access : public
  139. * @desc : 프린트 설정 XML형식의 데이터 데이터셋으로 변환
  140. * @param1 :
  141. * @return :
  142. * @---------------------------------------------------
  143. */
  144. function lf_setPrintXml(prntsetupinfo) {
  145. if(!utlf_isNull(prntsetupinfo)){
  146. var DomParsers = new DomParser;
  147. var xmlDoc = DomParsers.parseFromString(prntsetupinfo);
  148. var nodeSetupval = xmlDoc.getElementsByTagName("setupval"); //기본프린터
  149. var nodeBarnm = xmlDoc.getElementsByTagName("barnm"); //바코드명
  150. var nodePrtnm = xmlDoc.getElementsByTagName("prtnm"); //프린터명
  151. var setupval = "";
  152. if(!utlf_isNull(nodeSetupval)) {
  153. setupval = nodeSetupval[0].childNodes[0].data;
  154. }
  155. dsf_createDsRow("ds_temp_print"
  156. , [{col: "setupval", val: setupval} //기본프린터 셋팅
  157. , {col: "barnm", val: ""}
  158. , {col: "prtnm", val: ""}]);
  159. for(i=0;i<nodeBarnm.length;i++) {
  160. var barnm = nodeBarnm[i].childNodes[0];
  161. var prtnm = nodePrtnm[i].childNodes[0];
  162. ds_temp_print.addRow();
  163. // 수정필요.
  164. if ( nodeBarnm.get_item(i).source == '<barnm/>' ) {
  165. ds_temp_print.setColumn(i, "barnm", ""); //바코드명 셋팅
  166. } else {
  167. ds_temp_print.setColumn(i, "barnm",barnm.data); //바코드명 셋팅
  168. }
  169. if ( nodePrtnm.get_item(i).source == '<prtnm/>' ) {
  170. ds_temp_print.setColumn(i, "prtnm", ""); //프린터명 셋팅
  171. } else {
  172. ds_temp_print.setColumn(i, "prtnm",prtnm.data); //프린터명 셋팅
  173. }
  174. //ds_temp_print.setColumn(i, "barnm",barnm.data); //바코드명 셋팅
  175. //ds_temp_print.setColumn(i, "prtnm",prtnm.data); //프린터명 셋팅
  176. }
  177. }
  178. }
  179. /**
  180. * @ver : 0.1
  181. * @by : 김영준
  182. * @---------------------------------------------------
  183. * @type : function
  184. * @access : public
  185. * @desc : 공통 코드 동적 생성 및 Combo 바인드 처리
  186. * @param1 : sName : dataset name
  187. * : objCmNm : bind할 Object
  188. * : outDs : out Dataset
  189. * : sCode : bind codecolumn
  190. * : sValue : bind datacolumn
  191. * : nCol : Grid bind Col
  192. * : flag : 바인딩 여부
  193. * @return : dataset
  194. * @type : function
  195. * @access : public
  196. * @desc :
  197. * @param1 :
  198. * @return :
  199. * @---------------------------------------------------
  200. */
  201. function lf_dynamicDs(sDsNm, objCmId, outDs, sCode, sValue, nCol, flag){
  202. var sDsName = "ds_"+sDsNm;
  203. if(this.objects[sDsName] != null){
  204. this.objects[sDsName].clear();
  205. }else{
  206. var objDs = lf_createDs(sDsName);
  207. }
  208. for(var i=0; i < outDs.colcount; i++){
  209. var sColId = outDs.getColID(i);
  210. var o_cinfo = outDs.getColumnInfo(i);
  211. objDs.addColumn(sColId,o_cinfo.type,o_cinfo.size);
  212. }
  213. //trace(objCmId.name);
  214. outDs.filter("cdtype=='"+sDsNm+"'");
  215. objDs.copyData(outDs,true);
  216. if(flag != "N"){
  217. if( (objCmId.toString()== "[object Grid]")){
  218. objCmId.setCellProperty("body", nCol, "combodataset",sDsName );
  219. objCmId.setCellProperty("body", nCol, "combocodecol",sCode);
  220. objCmId.setCellProperty("body", nCol, "combodatacol",sValue );
  221. }else{
  222. objCmId.innerdataset=objDs
  223. objCmId.codecolumn=sCode;
  224. objCmId.datacolumn=sValue;
  225. }
  226. }
  227. }
  228. /****************************************************************************************
  229. * Argument : getObjChk : 값을 가져올 cp_CheckBox
  230. setObjEdt : 값을 보여줄 Edit
  231. sColNm : DataSet에 setcolumn 해 줄 컬럼명
  232. objDs : secolumn해 줄 DataSet
  233. sSplit : sSplit에 대한 추가 조건 구현 필요!!
  234. * Description : kyj 아래 함수 추가함.
  235. ex> lf_getCheckBoxValue(grp_sea00.cp_checkboxList00,"","chosflag",ds_cond_req,",");
  236. ****************************************************************************************/
  237. function lf_getCheckBoxValue(getObjChk,setObjEdt,sColNm,objDs,sSplit){
  238. var objDept = new Array();
  239. var objDeptNm = new Array();
  240. var sDeptCd;
  241. var sDeptNm;
  242. objDept = getObjChk.getData(); // code
  243. objDeptNm = getObjChk.getLableData(); //data
  244. for(var i = 0 ; i < objDept.length ; i ++){
  245. if(utlf_isNull(objDept[i])) objDept[i] = "";
  246. if(sSplit == "," || utlf_isNull(sSplit)){
  247. if(i == 0 ){
  248. if(objDept.length == 1){
  249. sDeptCd = "'"+objDept[i]+"'";
  250. }else{
  251. sDeptCd = "'"+objDept[i]+"',";
  252. }
  253. }else{
  254. if(i == objDept.length - 1){
  255. sDeptCd += "'"+objDept[i]+"'";
  256. }else{
  257. sDeptCd += "'"+objDept[i]+"',";
  258. }
  259. }
  260. }else if(sSplit == "|" ){
  261. if(i == 0 ){
  262. sDeptCd = objDept[i];
  263. }else{
  264. sDeptCd += "|"+objDept[i];
  265. }
  266. }
  267. }
  268. setObjEdt.value = objDeptNm;
  269. objDs.setColumn(0,sColNm,sDeptCd);
  270. }
  271. /****************************************************************************************
  272. * Argument : objChk : cp_checkbox 명
  273. objDs : cp_checkbox에 bind된 dataset
  274. arg : eventID
  275. sAll : 전체 Check eventID
  276. sValY : 전체 check 일때 value
  277. sValN : 전체 check 해제 일때 value
  278. * Description : cp_checkbox 전체 체크, 해제
  279. ex> lf_chkEvent(group3.cp_reqPharm,ds_reqPharm,obj,"chk_0","A","");
  280. ****************************************************************************************/
  281. function lf_chkEvent(objChk,objDs,arg,sAll,sValY,sValN){
  282. var rtn = objChk.getData();
  283. var nRow = objDs.rowcount;
  284. switch (arg){
  285. case sAll : if(eval(arg).value == sValY ) objChk.setCheckAll(true);
  286. if(nRow - 1 == rtn.length && eval(sAll).value == sValN ) {
  287. objChk.setCheckAll(false);
  288. }
  289. break;
  290. default :
  291. if(eval(sAll).value == sValY ){
  292. if(eval(arg).value == "") eval(sAll).value = sValN;
  293. }else{
  294. if(nRow - 1 == rtn.length){
  295. eval(sAll).value = sValY;
  296. }
  297. }
  298. break;
  299. }
  300. }
  301. function lf_onColResize(obj:Grid, e:GridSizeChangedEventInfo)
  302. {
  303. //trace(e.oldvalue)
  304. if(e.oldvalue == 0)
  305. {
  306. obj.setRealColSize(e.subindex, 0);
  307. return false;
  308. }
  309. if (e.newvalue == 0){
  310. obj.setRealColSize(e.subindex, 1);
  311. }
  312. }
  313. //Dataset에값을 가져오는 함수
  314. function lf_getDsValue(pDsObj, pRow, pColumnName)
  315. {
  316. return (utlf_isNull(pDsObj.getColumnInfo(pColumnName)) || utlf_isNull(pDsObj.getColumn(pRow, pColumnName))) ? "" : pDsObj.getColumn(pRow, pColumnName);
  317. }
  318. //tooltip 세팅
  319. function lf_tooltip(gridobj, row, cell)
  320. {
  321. if(row < 0 || cell < 0) return;
  322. var sObjExtCom = new ExtCommon();
  323. var sCellTextLen = sObjExtCom.getTextExtent(gridobj, gridobj.getCellText(row, cell));
  324. var sMsg = String(gridobj.getCellText(row, cell));
  325. var arrMsg = sMsg.split("\n");
  326. var nRowCnt = arrMsg.length;
  327. if ( sCellTextLen[1] > gridobj.getRealColSize(cell) || nRowCnt > 1 ) {
  328. gridobj.tooltiptext = utlf_trim(gridobj.getCellText(row, cell)); //cell의 width 보다 클 경우만 tooltiptext 셋팅.
  329. } else {
  330. gridobj.tooltiptext = ""; //tooltiptext 초기화
  331. }
  332. }
  333. /****************************************************************************************
  334. * Function : lf_chkAllSet
  335. * Description : check List 전체체크 / 전체해제
  336. * Argument : 01.objCompo - 컴포넌트Id
  337. * : 02.objDs - 데이터셋
  338. * : 03.flg - 체크여부
  339. * : 04.colid - dataseet 컬럼 id
  340. * 예)lf_chkAllSet(group3.group5.cp_checkBoxListStat, ds_condGbn, true);
  341. * return type :
  342. * Creator : 윤영호
  343. ****************************************************************************************/
  344. function lf_chkAllSet(objCompo, objDs, flg, colid){
  345. if (!isChkEvent){
  346. return;
  347. }
  348. isChkEvent = false;
  349. var aData = new Array()
  350. var aDelData = new Array()
  351. if (flg){
  352. for (var i=0; i<objDs.rowcount; i++){
  353. aData[i] = objDs.getColumn(i, colid);
  354. }
  355. } else {
  356. for (var i=0; i<objDs.rowcount; i++){
  357. aData = "";
  358. aDelData[i] = objDs.getColumn(i, colid);
  359. }
  360. }
  361. objCompo.setData(aData, aDelData);
  362. isChkEvent = true;
  363. }
  364. function lf_AuthEnablChk(flag){
  365. if(flag == 1){
  366. return true;
  367. }else{
  368. return false;
  369. }
  370. }
  371. /****************************************************************************************
  372. * Function : lf_AuthChk
  373. * Description : 권한에 따른 visible, enable 설정
  374. * Argument : 01.objDs - 데이터셋
  375. * : objDs 구성
  376. 첫 번째 컬럼 : commpent ID ex> group4.btn_new
  377. 두 번째 컬럼 : X : 쓰기(ex:저장,삭제번튼)
  378. P : 프린트 (ex:엑셀저장, 출력물)
  379. * 예)lf_chkAllSet(group3.group5.cp_checkBoxListStat, ds_condGbn, true);
  380. * return type :
  381. * Creator : 김영준
  382. ****************************************************************************************/
  383. function lf_AuthChk(objDs){
  384. // 권한 체크
  385. var sAuth = frmf_getScreenAuth();
  386. var sR = sAuth.substr(0,1); // R : 읽기
  387. var sX = sAuth.substr(1,1); // X : 쓰기
  388. var sP = sAuth.substr(2,1); // P : 프린트(엑셀 포함)
  389. var sBtnNm = "";
  390. trace("권한 ::::: "+sAuth);
  391. trace("읽기 ::::: "+sR);
  392. trace("쓰기 ::::: "+sX);
  393. trace("프린트 ::::: "+sP);
  394. if(lf_AuthEnablChk(sAuth.substr(0,1))){
  395. for(i = 0 ; i < objDs.rowcount ; i ++){
  396. var sBtnNm = objDs.getColumn(i,0);
  397. var sAuth = objDs.getColumn(i,1);
  398. //eval(sBtnNm).visible = false; // 초기는 enable 처리
  399. eval(sBtnNm).enable = false; // 초기는 enable 처리
  400. if(sAuth == "X" && lf_AuthEnablChk(sX)){ // 쓰기 권한
  401. // eval(sBtnNm).visible = lf_AuthEnablChk(sX);
  402. eval(sBtnNm).enable = lf_AuthEnablChk(sX);
  403. }
  404. if(sAuth == "P" && lf_AuthEnablChk(sP)){ // 프린트(엑셀 포함) 권한
  405. // eval(sBtnNm).visible = lf_AuthEnablChk(sP);
  406. eval(sBtnNm).enable = lf_AuthEnablChk(sP);
  407. }
  408. }
  409. }else{
  410. // 화면 R권한 없으면 화면 Close
  411. sysf_messageBox("사용 권한이 없습니다.","E000");
  412. this.close();
  413. }
  414. }]]></Script>