SPMMB01100.xjs 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[/**
  3. * @desc : 화면 초기화
  4. * @
  5. * @param :
  6. * @return :
  7. * @author : 오지훈
  8. * @---------------------------------------------------
  9. */
  10. function fInitialize_SPMMB01100(){
  11. var scrnid = opener.frmf_getParameter("SMMMO04100_param_scrnid");
  12. var grdid = opener.frmf_getParameter("SMMMO04100_param_grdid");
  13. var caseid = opener.frmf_getParameter("SMMMO04100_param_caseid");
  14. var tabpageIndex = new Array();
  15. tabpageIndex["out"] = 0;
  16. tabpageIndex["in"] = 1;
  17. tabpageIndex["er"] = 2;
  18. tabpageIndex["op"] = 3;
  19. tabpageIndex["srch"] = 4;
  20. tabpageIndex["cnst"] = 5;
  21. Tab00.tabindex = tabpageIndex[caseid];
  22. fClkBtnOfTopTab(caseid, grdid, scrnid);
  23. }
  24. /**
  25. * @desc : 컬럼 순서 정보를 얻는다.
  26. * @
  27. * @param : grid ID
  28. * @return :
  29. * @author : 오지훈
  30. * @---------------------------------------------------
  31. */
  32. function fGetOrderInfoOfCol(grdID){
  33. var grdObj = eval(grdID);
  34. var refdata = ""; // ref
  35. var sizedata = ""; // size
  36. var sFrozenCol = ""; // frozenCols
  37. var refval = "";
  38. var sizeval = "";
  39. var oDataSet = eval(grdObj.binddataset);
  40. var totcol = grdObj.getCellCount("Head");
  41. for(var i = 0; i < totcol; i++){
  42. refval = ((i == 0) && (grdObj.getCellProperty("body", i, "celltype") == "head")) ? "" : lf_getBindCellName(grdObj, i); // 순번 헤더는 ""으로 처리
  43. refdata += refval + "^";
  44. sizeval = grdObj.getRealColSize(i);
  45. sizedata += sizeval + "^";
  46. if(refval != "" && oDataSet.getColumn(0, refval) == "☜") {
  47. sFrozenCol = refval;
  48. }
  49. }
  50. refdata = refdata.substring(0 , refdata.length-1);
  51. sizedata = sizedata.substring(0, sizedata.length-1);
  52. ds_listval.clearData();
  53. ds_listval.addRow();
  54. ds_listval.setColumn(0, "refdata", refdata);
  55. ds_listval.setColumn(0, "sizedata", sizedata);
  56. ds_listval.setColumn(0, "frozencol", sFrozenCol);
  57. }
  58. /**
  59. * @desc : 컬럼 순서 정보 설정한다.
  60. * @
  61. * @param : grid ID : 그리드ID
  62. : refdata : 그리드 ref데이터 구분자 '^'
  63. : sizedata : 그리드 size데이터 구분자 '^'
  64. * @return :
  65. * @author : 오지훈
  66. * @---------------------------------------------------
  67. */
  68. function fSetOrderInfoOfCol(grdID, refdata, sizedata, frozencol, bColor){
  69. var grdObj = eval(grdID);
  70. var refarr = refdata.split("^");
  71. var sizearr = sizedata.split("^");
  72. var frozencolIndex = grdObj.getBindCellIndex("body", frozencol);
  73. grdObj.enableevent = false;
  74. grdObj.enableredraw = false;
  75. try {
  76. for(var i = 0; i < refarr.length; i++) {
  77. var nCol = i;
  78. var colText = refarr[i];
  79. var col = grdObj.getBindCellIndex("body", colText);
  80. if(col == -1) continue;
  81. if(i != col) {
  82. var headText = grdObj.getCellProperty("head", col, "text");
  83. var bodyText = grdObj.getCellProperty("body", col, "text");
  84. grdObj.deleteContentsCol(col);
  85. nCol = grdObj.insertContentsCol(i);
  86. grdObj.setCellProperty("head", nCol, "text", headText);
  87. grdObj.setCellProperty("body", nCol, "text", bodyText);
  88. }
  89. grdObj.setFormatColProperty(nCol, "size", sizearr[i]);
  90. grdObj.setFormatColProperty(nCol, "band", (frozencolIndex != -1 && nCol <= frozencolIndex) ? "left" : "body");
  91. }
  92. } finally {
  93. grdObj.enableevent = true;
  94. grdObj.enableredraw = true;
  95. }
  96. if(!utlf_isNull(frozencol))
  97. eval(grdObj.binddataset).setColumn(0, frozencol, "☜");
  98. }
  99. /**
  100. * @desc : 화면ID에 해당하는 컬럼순서를 조회한다.
  101. * @
  102. * @param :
  103. * @return :
  104. * @author : 오지훈
  105. * @---------------------------------------------------
  106. */
  107. function fReqOrderInfoOfCol(scrnid){
  108. ds_reqResize.clearData();
  109. ds_reqResize.addRow();
  110. ds_reqResize.setColumn(0, "scrnid", scrnid);
  111. if(scrnid == "SMMMO02500") {
  112. ds_reqResize.setColumn(0, "compscd", "01");
  113. ds_reqResize.setColumn(0, "userid", sysf_getUserId());
  114. }
  115. var oParam = {};
  116. oParam.id = "TRMMB01103";
  117. oParam.service = "prcpbaseapp.EnvInfoMngt";
  118. oParam.method = "reqGetUserScrnEnvEstb";
  119. oParam.inds = "req=" + "ds_reqResize";
  120. oParam.outds = "ds_gridseqResize=gridseq";
  121. oParam.async = false;
  122. oParam.callback = "cf_TRMMB01103_Resize";
  123. tranf_submit(oParam);
  124. }
  125. function cf_TRMMB01103_Resize(sSvcId, nErrorCode, sErrorMsg) {
  126. if(nErrorCode < 0) return;
  127. var grdid = getCurrentGridId();
  128. var refdata = ds_gridseqResize.getColumn(0, "compsrefcnts");
  129. var sizedata = ds_gridseqResize.getColumn(0, "compssizecnts");
  130. var frozencol = ds_gridseqResize.getColumn(0, "frozencol");
  131. if(!utlf_isNull(refdata) && !utlf_isNull(sizedata)){
  132. fSetOrderInfoOfCol(grdid + "_resize", refdata, sizedata, frozencol);
  133. }
  134. }
  135. /**
  136. * @desc : 화면ID에 해당하는 기본 컬럼순서를 조회한다.
  137. * @
  138. * @param :
  139. * @return :
  140. * @author : 오지훈
  141. * @---------------------------------------------------
  142. */
  143. function fReqBasicOrderInfoOfCol(){
  144. ds_reqBasic.clearData();
  145. ds_reqBasic.addRow();
  146. ds_reqBasic.setColumn(0, "userid", "00000"); // 병원 공통(00000) 기본 컬럼을 조회 한다.
  147. ds_reqBasic.setColumn(0, "scrnid", ds_cond.getColumn(0, "scrnid"));
  148. var oParam = {};
  149. oParam.id = "TRMMB01103";
  150. oParam.service = "prcpbaseapp.EnvInfoMngt";
  151. oParam.method = "reqGetUserScrnEnvEstb";
  152. oParam.inds = "req=" + "ds_reqBasic";
  153. oParam.outds = "ds_gridseqBasic=gridseq";
  154. oParam.async = false;
  155. oParam.callback = "cf_TRMMB01103_Basic";
  156. tranf_submit(oParam);
  157. }
  158. function cf_TRMMB01103_Basic(sSvcId, nErrorCode, sErrorMsg) {
  159. if(nErrorCode < 0) return;
  160. var grdid = getCurrentGridId();
  161. var refdata = ds_gridseqBasic.getColumn(0, "compsrefcnts");
  162. var sizedata = ds_gridseqBasic.getColumn(0, "compssizecnts");
  163. var frozencol = ds_gridseqBasic.getColumn(0, "frozencol");
  164. if(!utlf_isNull(refdata) && !utlf_isNull(sizedata)){
  165. fSetOrderInfoOfCol(grdid + "_basic", refdata, sizedata, frozencol);
  166. }
  167. }
  168. /**
  169. * @desc : 상단 TAB버튼 클릭시
  170. * @
  171. * @param :
  172. * @return :
  173. * @author : 오지훈
  174. * @---------------------------------------------------
  175. */
  176. function fClkBtnOfTopTab(caseid, grdid, scrnid){
  177. ds_cond.setColumn(0, "scrnid", scrnid);
  178. ds_cond.setColumn(0, "grdid", grdid);
  179. ds_cond.setColumn(0, "caseid", caseid);
  180. fReqBasicOrderInfoOfCol(); // 기본설정 셋팅
  181. fReqOrderInfoOfCol(scrnid); // 사용자 설정 셋팅
  182. }
  183. /**
  184. * @desc : 그리드 ref, size저장
  185. * @
  186. * @param :
  187. * @return :
  188. * @author : 오지훈
  189. * @---------------------------------------------------
  190. */
  191. function fSaveOrderInfoCol(){
  192. var grdid = getCurrentGridId();
  193. var scrnid = ds_cond.getColumn(0, "scrnid");
  194. fGetOrderInfoOfCol(grdid + "_resize");
  195. var refdata = ds_listval.getColumn(0, "refdata");
  196. var sizedata = ds_listval.getColumn(0, "sizedata");
  197. var sFrozenCol = ds_listval.getColumn(0, "frozencol");
  198. ds_savedata.clearData();
  199. ds_savedata.addRow();
  200. ds_savedata.setColumn(0, "compscnts", ""); //추후 삭제 예정
  201. ds_savedata.setColumn(0, "scrnid", scrnid);
  202. ds_savedata.setColumn(0, "compsrefcnts", refdata);
  203. ds_savedata.setColumn(0, "compssizecnts", sizedata);
  204. ds_savedata.setColumn(0, "frozencol", sFrozenCol);
  205. ds_savedata.setColumn(0, "compscd" , ds_gridseqResize.getColumn(0, "compscd"));
  206. var oParam = {};
  207. oParam.id = "TXMMB01102";
  208. oParam.service = "prcpbaseapp.EnvInfoMngt";
  209. oParam.method = "reqInsUserScrnEnvEstb";
  210. oParam.inds = "req=" + "ds_savedata";
  211. oParam.async = false;
  212. tranf_submit(oParam);
  213. }
  214. /**
  215. * @desc : 사용자화면(진료정보조회화면설정) 초기화
  216. * @
  217. * @param :
  218. * @return :
  219. * @author : 오지훈
  220. * @---------------------------------------------------
  221. */
  222. function fInitOrderOfCol(){
  223. var grdid = ds_cond.getColumn(0, "grdid");
  224. fGetOrderInfoOfCol(grdid + "_basic"); //현재 default로 설정된 grid의 column과 size를 구한다.
  225. var refdata = ds_listval.getColumn(0, "refdata");
  226. var sizedata = ds_listval.getColumn(0, "sizedata");
  227. var frozencol = ds_listval.getColumn(0, "frozencol");
  228. fSetOrderInfoOfCol(grdid +"_resize", refdata, sizedata, frozencol); //default로 설정된 grid의 column과 size를 다시 설정한다.
  229. }
  230. /**
  231. * @desc : 사용자화면 설정 초기화
  232. * @
  233. * @param :
  234. * @return :
  235. * @author : 엄영만
  236. * @---------------------------------------------------
  237. */
  238. function fAppOrderOfCol(sType){
  239. var grdid = getCurrentGridId();
  240. if(sType == "BASIC") { // 기본설정 적용(BASIC)
  241. fGetOrderInfoOfCol(grdid +"_basic"); //현재 default로 설정된 grid의 column과 size를 구한다.
  242. } else { // 전체(ALL)
  243. fGetOrderInfoOfCol(grdid); //현재 default로 설정된 grid의 column과 size를 구한다.
  244. }
  245. var refdata = ds_listval.getColumn(0, "refdata");
  246. var sizedata = ds_listval.getColumn(0, "sizedata");
  247. var frozencol = ds_listval.getColumn(0, "frozencol");
  248. fSetOrderInfoOfCol(grdid +"_resize", refdata, sizedata, frozencol); //default로 설정된 grid의 column과 size를 다시 설정한다.
  249. }
  250. /**
  251. * @desc : 그리드의 column 삭제
  252. * @
  253. * @param :
  254. * @return :
  255. * @author : 오지훈
  256. * @---------------------------------------------------
  257. */
  258. function fDelColOfGrd(){
  259. var grdid = getCurrentGridId();
  260. var ResizeGrdObj = eval(grdid + "_resize");
  261. var selectedCells = grdf_getSelectedCols(ResizeGrdObj);
  262. for(var i = 0; i < selectedCells.length; i++){
  263. var nCurCol = selectedCells[i];
  264. ResizeGrdObj.setFormatColProperty(nCurCol, "size", 0);
  265. if(ResizeGrdObj.getCellProperty("body", nCurCol, "background") == "lightgreen")
  266. ResizeGrdObj.setCellProperty("body", nCurCol, "background", null);
  267. if(ResizeGrdObj.getCellProperty("body", nCurCol, "background2") == "lightgreen")
  268. ResizeGrdObj.setCellProperty("body", nCurCol, "background2", null);
  269. }
  270. }
  271. /**
  272. * @desc : 그리드의 column 추가
  273. * @
  274. * @param :
  275. * @return :
  276. * @author : 엄영만
  277. * @---------------------------------------------------
  278. */
  279. function fAddColOfGrd(){
  280. var sAddColNm = ""; // 컬럼명
  281. var sAddColSz = ""; // 컬럼 사이즈
  282. var nCurCol = 0; // 선택된 컬럼 번호
  283. var nSelCol = 0;
  284. var grdid = getCurrentGridId();
  285. var SelectedGrdObj = eval(grdid);
  286. var ResizeGrdObj = eval(grdid + "_resize");
  287. if(SelectedGrdObj.getCellPos() < 0) return;
  288. var SelectedCells = grdf_getSelectedCols(SelectedGrdObj);
  289. SelectedGrdObj.enableevent = false;
  290. SelectedGrdObj.enableredraw = false;
  291. ResizeGrdObj.enableevent = false;
  292. ResizeGrdObj.enableredraw = false;
  293. try {
  294. for(var i = 0; i < SelectedCells.length; i++) {
  295. var nCurCol = SelectedCells[i];
  296. var sAddColNm = lf_getBindCellName(SelectedGrdObj, nCurCol);
  297. var sAddColSz = SelectedGrdObj.getRealColSize(nCurCol);
  298. var nSelCol = ResizeGrdObj.getBindCellIndex("body", sAddColNm);
  299. if(nSelCol > 0) {
  300. ResizeGrdObj.setFormatColProperty(nSelCol, "size", sAddColSz);
  301. ResizeGrdObj.setCellProperty("body", nSelCol, "background", "lightgreen");
  302. ResizeGrdObj.setCellProperty("body", nSelCol, "background2", "lightgreen");
  303. }
  304. }
  305. } finally {
  306. SelectedGrdObj.enableevent = true;
  307. SelectedGrdObj.enableredraw = true;
  308. ResizeGrdObj.enableevent = true;
  309. ResizeGrdObj.enableredraw = true;
  310. }
  311. }
  312. /**
  313. * @desc : 그리드의 column 고정 설정
  314. * @
  315. * @param :
  316. * @return :
  317. * @author : 엄영만
  318. * @---------------------------------------------------
  319. */
  320. function fSetFrozenColOfGrd(){
  321. var grdid = getCurrentGridId();
  322. var ResizeGrdObj = eval(grdid + "_resize");
  323. var SelectedCells = grdf_getSelectedCols(ResizeGrdObj);
  324. if (SelectedCells.length > 0) {
  325. var nCurCol = SelectedCells[SelectedCells.length - 1];
  326. var oDataSet = eval(ResizeGrdObj.binddataset);
  327. oDataSet.clearData();
  328. oDataSet.addRow();
  329. oDataSet.setColumn(0, lf_getBindCellName(ResizeGrdObj, nCurCol), "☜");
  330. }
  331. }
  332. /**
  333. * @desc : 그리드의 column 고정 취소
  334. * @
  335. * @param :
  336. * @return :
  337. * @author : 엄영만
  338. * @---------------------------------------------------
  339. */
  340. function fCancelFrozenColOfGrd(){
  341. var grdid = getCurrentGridId();
  342. var ResizeGrdObj = eval(grdid + "_resize");
  343. var oDataSet = eval(ResizeGrdObj.binddataset);
  344. oDataSet.clearData();
  345. oDataSet.addRow();
  346. }
  347. /**
  348. * @desc : 컬럼 추가 드래그 시작
  349. * @
  350. * @param :
  351. * @return :
  352. * @author : 엄영만
  353. * @---------------------------------------------------
  354. */
  355. function fAddColDragStart(obj:Grid, e:GridDragEventInfo){
  356. var sDropData = ""; // Drag Drop 파라미터 데이터
  357. var sDragColNm = ""; // 컬럼명
  358. var sDragColSz = ""; // 컬럼 사이즈
  359. var nCurCol = 0; // 선택된 컬럼 번호
  360. var SelectedCells = grdf_getSelectedCols(obj);
  361. for(var i = 0; i < SelectedCells.length; i++){
  362. nCurCol = SelectedCells[i];
  363. sDragColNm = lf_getBindCellName(obj, nCurCol);
  364. sDragColSz = obj.getRealColSize(nCurCol);
  365. if(eval(sDragColSz) > 0) {
  366. if(utlf_isNull(sDropData)) {
  367. sDropData = sDragColNm + "^" + sDragColSz;
  368. } else {
  369. sDropData = sDropData + "|" + sDragColNm + "^" + sDragColSz;
  370. }
  371. }
  372. }
  373. e.userdata = sDropData;
  374. }
  375. /**
  376. * @desc : 컬럼 추가 드래그 종료
  377. * @
  378. * @param :
  379. * @return :
  380. * @author : 엄영만
  381. * @---------------------------------------------------
  382. */
  383. function fAddColDragOver(obj:Grid, e:GridDragEventInfo){
  384. if(e.button == "lbutton")
  385. obj.style.cursor = "hand";
  386. else
  387. obj.style.cursor = "auto";
  388. }
  389. /**
  390. * @desc : 컬럼 추가 드래그 종료
  391. * @
  392. * @param :
  393. * @return :
  394. * @author : 엄영만
  395. * @---------------------------------------------------
  396. */
  397. function fAddColDrop(obj:Grid, e:GridDragEventInfo){
  398. var sDragColNm = "";
  399. var sDragColSz = "";
  400. var nPreCol = 0; // 옮기기전 Col
  401. var nSelCol = 0; // 옮긴후 Col
  402. var grdid = getCurrentGridId();
  403. var ResizeGrdObj = eval(grdid + "_resize");
  404. if(getCurrentGridId(e.sourceobject.name) == grdid) {
  405. if(!utlf_isNull(e.userdata)) {
  406. nSelCol = e.col; // 초기값은 마우스로 선택된 컬럼
  407. var selColNm = lf_getBindCellName(ResizeGrdObj, nSelCol); // 현재 선택한 컬럼의 이름
  408. var saDropData = e.userdata.split("|");
  409. ResizeGrdObj.enableevent = false;
  410. ResizeGrdObj.enableredraw = false;
  411. try {
  412. var tempRefdata = ""; // ref
  413. var tempSizedata = ""; // size
  414. var refdata = "";
  415. var sizedata = "";
  416. var refval = "";
  417. var sizeval = "";
  418. var dropColNm = "";
  419. var dropColSz = "";
  420. // 1. 선택하여 드래그한 컬럼들 합침
  421. for(var i = 0; i < saDropData.length; i++) {
  422. var saDropCol = saDropData[i].split("^");
  423. dropColNm += saDropCol[0] + "^";
  424. dropColSz += saDropCol[1] + "^";
  425. }
  426. dropColNm = dropColNm.substring(0 , dropColNm.length-1);
  427. dropColSz = dropColSz.substring(0 , dropColSz.length-1);
  428. // 2. 사용자 설정 그리드의 전체 열에서 드래그한 컬럼들 제거(집어넣는 위치의 컬럼은 제외)
  429. var totcol = ResizeGrdObj.getCellCount("Head");
  430. for(var i = 0; i < totcol; i++){
  431. var colText = lf_getBindCellName(ResizeGrdObj, i);
  432. refval = ((i == 0) ? "" : colText); // 순번 헤더는 ""으로 처리
  433. sizeval = ResizeGrdObj.getRealColSize(i);
  434. var isExist = false;
  435. for(var j = 0; j < saDropData.length; j++) {
  436. var saDropCol = saDropData[j].split("^");
  437. if(colText == saDropCol[0] && selColNm != colText) { // 집어넣은 위치에 있는 컬럼은 제외
  438. isExist = true;
  439. saDropData.splice(j, 1);
  440. break;
  441. }
  442. }
  443. if(!isExist) {
  444. tempRefdata += refval + "^";
  445. tempSizedata += sizeval + "^";
  446. }
  447. }
  448. tempRefdata = tempRefdata.substring(0 , tempRefdata.length-1);
  449. tempSizedata = tempSizedata.substring(0, tempSizedata.length-1);
  450. // 3. 집어 넣은 위치의 컬럼에 드래그 한 컬럼들을 삽입
  451. var ttempRefdata = tempRefdata.split("^");
  452. var ttempSizedata = tempSizedata.split("^");
  453. for(var i = 0; i < ttempRefdata.length; i++) {
  454. refval = ttempRefdata[i];
  455. sizeval = ttempSizedata[i];
  456. if(selColNm == ttempRefdata[i]) {
  457. var dragColNm = dropColNm.split("^");
  458. var isExist = false;
  459. for(var j = 0; j < dragColNm.length; j++) {
  460. if(refval == dragColNm[j]) {
  461. isExist = true;
  462. break;
  463. }
  464. }
  465. if(isExist) {
  466. refval = dropColNm;
  467. sizeval = dropColSz;
  468. } else {
  469. refval = refval + "^" + dropColNm;
  470. sizeval = sizeval + "^" + dropColSz;
  471. }
  472. }
  473. refdata += refval + "^";
  474. sizedata += sizeval + "^";
  475. }
  476. refdata = refdata.substring(0 , refdata.length-1);
  477. sizedata = sizedata.substring(0, sizedata.length-1);
  478. // 4. 컬럼 재 설정
  479. fSetOrderInfoOfCol(grdid + "_resize", refdata, sizedata);
  480. // 5. 변경 된 부분 색상 칠하기
  481. var dropdata = e.userdata.split("|");
  482. for(var i = 0; i < dropdata.length; i++) {
  483. var saDropCol = dropdata[i].split("^");
  484. var dropCol = ResizeGrdObj.getBindCellIndex("body", saDropCol[0]);
  485. ResizeGrdObj.setCellProperty("body", dropCol, "background", "lightgreen");
  486. ResizeGrdObj.setCellProperty("body", dropCol, "background2", "lightgreen");
  487. }
  488. } finally {
  489. ResizeGrdObj.enableevent = true;
  490. ResizeGrdObj.enableredraw = true;
  491. }
  492. }
  493. }
  494. }
  495. function getCurrentGridId (sGrdid) {
  496. var caseid = ds_cond.getColumn(0, "caseid");
  497. var grdid = (utlf_isNull(sGrdid)) ? ds_cond.getColumn(0, "grdid") : sGrdid;
  498. return "Tab00." + caseid + "." + grdid;
  499. }
  500. ]]></Script>