SPMMB03600.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538
  1. /*
  2. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  3. 진료대상자 화면설정 ( SPMMB01100_진료대상자 화면설정.xrw - JScript )
  4. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  5. */
  6. /**
  7. * @desc : 화면 초기화
  8. * @
  9. * @param :
  10. * @return :
  11. * @author : 오지훈
  12. * @---------------------------------------------------
  13. */
  14. function fInitialize_SPMMB01100(){
  15. var scrnid = opener.javascript.getParameter("SMMMO04100_param_scrnid");
  16. var grdid = opener.javascript.getParameter("SMMMO04100_param_grdid");
  17. model.setValue("/root/main/cond/scrnid", scrnid);
  18. model.setValue("/root/main/cond/grdid" , grdid);
  19. fReqOrderInfoOfCol(grdid); // 사용자 설정 셋팅
  20. }
  21. /**
  22. * @desc : 컬럼 순서 정보를 얻는다.
  23. * @
  24. * @param : grid ID
  25. * @return :
  26. * @author : 오지훈
  27. * @---------------------------------------------------
  28. */
  29. function fGetOrderInfoOfCol(grdID){
  30. var grdObj = document.controls.item(grdID);
  31. var refdata = ""; // ref
  32. var sizedata = ""; // size
  33. var sFrozenCol = ""; // frozenCols
  34. var refval = "";
  35. var sizeval = "";
  36. var totcol = grdObj.cols;
  37. for(var i = 0; i < totcol; i++){
  38. refval = grdObj.colAttribute(i, "ref");
  39. refdata += refval + "^";
  40. sizeval = grdObj.colWidth(i);
  41. sizedata += sizeval + "^";
  42. if(grdObj.valuematrix(1, i) == "☜") {
  43. sFrozenCol = refval;
  44. }
  45. }
  46. refdata = refdata.substring(0 , refdata.length-1);
  47. sizedata = sizedata.substring(0, sizedata.length-1);
  48. model.removeNodeset("/root/listval");
  49. model.makeValue("/root/listval/refdata", refdata);
  50. model.makeValue("/root/listval/sizedata", sizedata);
  51. model.makeValue("/root/listval/frozencol", sFrozenCol);
  52. }
  53. /**
  54. * @desc : 컬럼 순서 정보 설정한다.
  55. * @
  56. * @param : grid ID : 그리드ID
  57. : refdata : 그리드 ref데이터 구분자 '^'
  58. : sizedata : 그리드 size데이터 구분자 '^'
  59. * @return :
  60. * @author : 오지훈
  61. * @---------------------------------------------------
  62. */
  63. function fSetOrderInfoOfCol(grdID, refdata, sizedata, frozencol){
  64. var grdObj = document.controls.item(grdID);
  65. var refArray = refdata.split("^");
  66. var sizeArray = sizedata.split("^");
  67. for(var i = 0; i < refArray.length; i++){
  68. var colcnt = grdObj.colref(refArray[i]);
  69. grdObj.colMove(i, colcnt, "before", false);
  70. var size = sizeArray[i];
  71. grdObj.colWidth(i) = eval(size);
  72. if(!isNull(frozencol) && grdObj.colAttribute(i, "ref") == frozencol) {
  73. grdObj.valuematrix(1, i) = "☜";
  74. }
  75. }
  76. model.refresh();
  77. }
  78. /**
  79. * @desc : 화면ID에 해당하는 컬럼순서를 조회한다.
  80. * @
  81. * @param :
  82. * @return :
  83. * @author : 오지훈
  84. * @---------------------------------------------------
  85. */
  86. function fReqOrderInfoOfCol(grdid){
  87. model.removeNodeset("/root/send/reqdata");
  88. model.makeValue("/root/send/reqdata/userid", getUserInfo("userid"));
  89. model.makeValue("/root/send/reqdata/scrnid", model.getValue("/root/main/cond/scrnid"));
  90. if(submit("TRMMB01103")){
  91. var refdata = model.getValue("/root/init/userscrnenvinfo/gridseq/compsrefcnts");
  92. var sizedata = model.getValue("/root/init/userscrnenvinfo/gridseq/compssizecnts");
  93. var frozencol = model.getValue("/root/init/userscrnenvinfo/gridseq/frozencol");
  94. if(refdata != "" || sizedata != ""){
  95. //fSetOrderInfoOfCol(grdid, refdata, sizedata, frozencol);
  96. setOrderInfoOfCol(grdid + "_resize", refdata, sizedata, frozencol);
  97. }
  98. }
  99. }
  100. /**
  101. * @desc : 화면ID에 해당하는 기본 컬럼순서를 조회한다.
  102. * @
  103. * @param :
  104. * @return :
  105. * @author : 오지훈
  106. * @---------------------------------------------------
  107. */
  108. function fReqBasicOrderInfoOfCol(grdid){
  109. model.removeNodeset("/root/send/reqdata");
  110. model.makeValue("/root/send/reqdata/userid", "00000"); // 병원 공통(00000) 기본 컬럼을 조회 한다.
  111. model.makeValue("/root/send/reqdata/scrnid", model.getValue("/root/main/cond/scrnid"));
  112. if(submit("TRMMB01103")){
  113. var refdata = model.getValue("/root/init/userscrnenvinfo/gridseq/compsrefcnts");
  114. var sizedata = model.getValue("/root/init/userscrnenvinfo/gridseq/compssizecnts");
  115. var frozencol = model.getValue("/root/init/userscrnenvinfo/gridseq/frozencol");
  116. if(refdata != "" || sizedata != ""){
  117. // fSetOrderInfoOfCol(grdid, refdata, sizedata, frozencol);
  118. setOrderInfoOfCol(grdid, refdata, sizedata, frozencol);
  119. }
  120. }
  121. }
  122. /**
  123. * @desc : 상단 TAB버튼 클릭시
  124. * @
  125. * @param :
  126. * @return :
  127. * @author : 오지훈
  128. * @---------------------------------------------------
  129. */
  130. function fClkBtnOfTopTab(caseid, grdid, scrnid){
  131. model.toggle(caseid);
  132. model.setValue("/root/main/cond/grdid" , grdid);
  133. model.setValue("/root/main/cond/scrnid", scrnid);
  134. fReqBasicOrderInfoOfCol(grdid); // 기본설정 셋팅
  135. fReqOrderInfoOfCol(grdid); // 사용자 설정 셋팅
  136. }
  137. /**
  138. * @desc : 그리드 ref, size저장
  139. * @
  140. * @param :
  141. * @return :
  142. * @author : 오지훈
  143. * @---------------------------------------------------
  144. */
  145. function fSaveOrderInfoCol(){
  146. var grdid = model.getValue("/root/main/cond/grdid");
  147. var scrnid = model.getValue("/root/main/cond/scrnid");
  148. fGetOrderInfoOfCol(grdid + "_resize");
  149. var refdata = model.getValue("/root/listval/refdata");
  150. var sizedata = model.getValue("/root/listval/sizedata");
  151. var sFrozenCol = model.getValue("/root/listval/frozencol");
  152. model.removeNodeset("/root/send/savedata");
  153. model.makeValue("/root/send/savedata/compscnts", ""); //추후 삭제 예정
  154. model.makeValue("/root/send/savedata/scrnid", scrnid);
  155. model.makeValue("/root/send/savedata/compsrefcnts", refdata);
  156. model.makeValue("/root/send/savedata/compssizecnts", sizedata);
  157. model.makeValue("/root/send/savedata/frozencol", sFrozenCol);
  158. model.makeValue("/root/send/savedata/compscd" , model.getValue("/root/init/userscrnenvinfo/gridseq/compscd"));
  159. submit("TXMMB01102");
  160. }
  161. /**
  162. * @desc : 사용자화면 설정 초기화
  163. * @
  164. * @param :
  165. * @return :
  166. * @author : 오지훈
  167. * @---------------------------------------------------
  168. */
  169. function fInitOrderOfCol(){
  170. var grdid = model.getValue("/root/main/cond/grdid");
  171. fGetOrderInfoOfCol(grdid); //현재 default로 설정된 grid의 column과 size를 구한다.
  172. var refdata = model.getValue("/root/listval/refdata");
  173. var sizedata = model.getValue("/root/listval/sizedata");
  174. var frozencol = model.getValue("/root/listval/frozencol");
  175. fSetOrderInfoOfCol(grdid +"_resize", refdata, sizedata, frozencol); //default로 설정된 grid의 column과 size를 다시 설정한다.
  176. }
  177. /**
  178. * @desc : 사용자화면 설정 초기화
  179. * @
  180. * @param :
  181. * @return :
  182. * @author : 엄영만
  183. * @---------------------------------------------------
  184. */
  185. function fAppOrderOfCol(sType){
  186. var grdid = model.getValue("/root/main/cond/grdid");
  187. if(sType == "BASIC") { // 기본설정 적용(BASIC)
  188. fGetOrderInfoOfCol(grdid +"_basic"); //현재 default로 설정된 grid의 column과 size를 구한다.
  189. } else { // 전체(ALL)
  190. fGetOrderInfoOfCol(grdid); //현재 default로 설정된 grid의 column과 size를 구한다.
  191. }
  192. var refdata = model.getValue("/root/listval/refdata");
  193. var sizedata = model.getValue("/root/listval/sizedata");
  194. var frozencol = model.getValue("/root/listval/frozencol");
  195. fSetOrderInfoOfCol(grdid +"_resize", refdata, sizedata, frozencol); //default로 설정된 grid의 column과 size를 다시 설정한다.
  196. }
  197. /**
  198. * @desc : 그리드의 column 삭제
  199. * @
  200. * @param :
  201. * @return :
  202. * @author : 오지훈
  203. * @---------------------------------------------------
  204. */
  205. function fDelColOfGrd(){
  206. var grdid = model.getValue("/root/main/cond/grdid");
  207. var ResizeGrdObj = document.controls.item(grdid + "_resize");
  208. var selectedCells = ResizeGrdObj.selectedCells;
  209. for(var i = 0; i < selectedCells.length; i++){
  210. var curcol = selectedCells.item(i).col;
  211. ResizeGrdObj.colWidth(curcol) = 0;
  212. //ResizeGrdObj.colHidden(curcol) = true;
  213. }
  214. ResizeGrdObj.rebuild();
  215. }
  216. /**
  217. * @desc : 그리드의 column 추가
  218. * @
  219. * @param :
  220. * @return :
  221. * @author : 엄영만
  222. * @---------------------------------------------------
  223. */
  224. function fAddColOfGrd(){
  225. var sAddColNm = ""; // 컬럼명
  226. var sAddColSz = ""; // 컬럼 사이즈
  227. var nCurCol = 0; // 선택된 컬럼 번호
  228. var nSelCol = 0;
  229. var grdid = model.getValue("/root/main/cond/grdid");
  230. var SelectedGrdObj = document.controls.item(grdid);
  231. var ResizeGrdObj = document.controls.item(grdid + "_resize");
  232. var SelectedCells = SelectedGrdObj.selectedCells;
  233. for(var i = 0; i < SelectedCells.length; i++){
  234. nCurCol = SelectedCells.item(i).col;
  235. sAddColNm = SelectedGrdObj.colAttribute(nCurCol, "ref");
  236. sAddColSz = SelectedGrdObj.colWidth(nCurCol);
  237. nSelCol = ResizeGrdObj.colref(sAddColNm);
  238. if(nSelCol > 0) {
  239. ResizeGrdObj.colMove(nCurCol, nSelCol, "before", false);
  240. nSelCol = ResizeGrdObj.colref(sAddColNm);
  241. ResizeGrdObj.colWidth(nSelCol) = eval(sAddColSz);
  242. }
  243. }
  244. ResizeGrdObj.rebuild();
  245. if(nSelCol > 0) {
  246. ResizeGrdObj.select( 1, nSelCol, 1, nSelCol ) = true;
  247. }
  248. }
  249. /**
  250. * @desc : 그리드의 column 고정 설정
  251. * @
  252. * @param :
  253. * @return :
  254. * @author : 엄영만
  255. * @---------------------------------------------------
  256. */
  257. function fSetFrozenColOfGrd(){
  258. var grdid = model.getValue("/root/main/cond/grdid");
  259. var ResizeGrdObj = document.controls.item(grdid + "_resize");
  260. var SelectedCells = ResizeGrdObj.selectedCells;
  261. if (SelectedCells.length >0) {
  262. var curcol = SelectedCells.item(0).col;
  263. for(var i = 0; i < ResizeGrdObj.cols; i++){
  264. if (curcol == i) {
  265. ResizeGrdObj.valuematrix(1, i) = "☜";
  266. } else {
  267. ResizeGrdObj.valuematrix(1, i) = "";
  268. }
  269. }
  270. }
  271. ResizeGrdObj.rebuild();
  272. }
  273. /**
  274. * @desc : 그리드의 column 고정 취소
  275. * @
  276. * @param :
  277. * @return :
  278. * @author : 엄영만
  279. * @---------------------------------------------------
  280. */
  281. function fCancelFrozenColOfGrd(){
  282. var grdid = model.getValue("/root/main/cond/grdid");
  283. var ResizeGrdObj = document.controls.item(grdid + "_resize");
  284. for(var i = 0; i < ResizeGrdObj.cols; i++){
  285. ResizeGrdObj.valuematrix(1, i) = "";
  286. }
  287. ResizeGrdObj.rebuild();
  288. }
  289. /**
  290. * @desc : 컬럼 추가 드래그 시작
  291. * @
  292. * @param :
  293. * @return :
  294. * @author : 엄영만
  295. * @---------------------------------------------------
  296. */
  297. function fAddColDragStart(){
  298. var sDropData = ""; // Drag Drop 파라미터 데이터
  299. var sDragColNm = ""; // 컬럼명
  300. var sDragColSz = ""; // 컬럼 사이즈
  301. var nCurCol = 0; // 선택된 컬럼 번호
  302. var grdid = model.getValue("/root/main/cond/grdid");
  303. var SelectedGrdObj = document.controls.item(grdid);
  304. var SelectedCells = SelectedGrdObj.selectedCells;
  305. for(var i = 0; i < SelectedCells.length; i++){
  306. nCurCol = SelectedCells.item(i).col;
  307. sDragColNm = SelectedGrdObj.colAttribute(nCurCol, "ref");
  308. sDragColSz = SelectedGrdObj.colWidth(nCurCol);
  309. if(eval(sDragColSz)>0) {
  310. if(isNull(sDropData)) {
  311. sDropData = sDragColNm + "^" + sDragColSz;
  312. } else {
  313. sDropData = sDropData + "|" + sDragColNm + "^" + sDragColSz;
  314. }
  315. }
  316. }
  317. event.dropData = sDropData;
  318. }
  319. /**
  320. * @desc : 컬럼 추가 드래그 종료
  321. * @
  322. * @param :
  323. * @return :
  324. * @author : 엄영만
  325. * @---------------------------------------------------
  326. */
  327. function fAddColDragOver(){
  328. var grdid = model.getValue("/root/main/cond/grdid");
  329. if(event.drag == grdid) {
  330. var grdObj = document.controls.item(grdid+"_resize");
  331. grdObj.select( 1, grdObj.mouseCol, 1, grdObj.mouseCol ) = true;
  332. }
  333. }
  334. /**
  335. * @desc : 컬럼 추가 드래그 종료
  336. * @
  337. * @param :
  338. * @return :
  339. * @author : 엄영만
  340. * @---------------------------------------------------
  341. */
  342. function fAddColDrop(){
  343. var sDragColNm = "";
  344. var sDragColSz = "";
  345. var nPreCol = 0; // 옮기기전 Col
  346. var nSelCol = 0; // 옮긴후 Col
  347. var grdid = model.getValue("/root/main/cond/grdid");
  348. var ResizeGrdObj = document.controls.item(grdid + "_resize");
  349. if(event.drag == grdid) {
  350. if(!isNull(event.dropData)) {
  351. nSelCol = ResizeGrdObj.mouseCol; // 초기값은 마우스로 선택된 컬럼
  352. var saDropData = event.dropData.split("|");
  353. for (var i=0; i<saDropData.length; i++) {
  354. var saDropCol = saDropData[i].split("^");
  355. sDragColNm = saDropCol[0];
  356. sDragColSz = saDropCol[1];
  357. nPreCol = ResizeGrdObj.colref(sDragColNm); // 옮기기전 Col
  358. if(nPreCol < nSelCol) {
  359. ResizeGrdObj.colMove(nSelCol, nPreCol, "before", true);
  360. } else {
  361. ResizeGrdObj.colMove(nSelCol, nPreCol, "after", true);
  362. }
  363. nSelCol = ResizeGrdObj.colref(sDragColNm); // 옮긴후 Col
  364. ResizeGrdObj.colWidth(nSelCol) = eval(sDragColSz);
  365. }
  366. ResizeGrdObj.rebuild();
  367. if(nSelCol>0) {
  368. ResizeGrdObj.select( 1, nSelCol, 1, nSelCol ) = true;
  369. }
  370. }
  371. }
  372. }
  373. function fViewToolTipText(){
  374. var sGrdId = model.getValue("/root/main/cond/grdid");
  375. var GrdObj = document.controls.item(sGrdId);
  376. var sColNm = GrdObj.colAttribute(GrdObj.mouseCol, "ref");
  377. var sToolTip = "";
  378. if(sGrdId == "grd_opschelist") { // 외래 대상자
  379. if (sColNm == "elbulbodstat") sToolTip = "예약 진행 상태(미접수, 접수, 대기, 완료)";
  380. else if (sColNm == "ordtm") sToolTip = "외래 진료 예약시간";
  381. else if (sColNm == "hngnm") sToolTip = "환자 성명";
  382. else if (sColNm == "pid") sToolTip = "환자 차트번호";
  383. else if (sColNm == "sexage") sToolTip = "성별/나이";
  384. else if (sColNm == "refer") sToolTip = "협력의뢰 기관";
  385. else if (sColNm == "replstat") sToolTip = "협력의뢰 회신상태";
  386. else if (sColNm == "centcd") sToolTip = "진료 센터명";
  387. else if (sColNm == "orddrnm") sToolTip = "진료 의사명";
  388. else if (sColNm == "fsexamflag") sToolTip = "병원초진/과초진/재진 구분";
  389. else if (sColNm == "diagnm") sToolTip = "당일 진단명";
  390. } else if(sGrdId == "grd_opschelist_resize") { // 입원 대상자
  391. if (sColNm == "memo") sToolTip = "환자별 메모 존재여부";
  392. else if (sColNm == "roomcd") sToolTip = "병실번호";
  393. else if (sColNm == "dispnm2") sToolTip = "환자성명";
  394. else if (sColNm == "pid") sToolTip = "환자 차트번호";
  395. else if (sColNm == "sa") sToolTip = "성별/나이";
  396. else if (sColNm == "hd") sToolTip = "재원일수(Hospital Day)";
  397. else if (sColNm == "pod") sToolTip = "최근수술 후 일수";
  398. else if (sColNm == "ad") sToolTip = "입원일자";
  399. else if (sColNm == "refer") sToolTip = "협력의뢰 기관";
  400. else if (sColNm == "replstat") sToolTip = "협력의뢰 회신상태";
  401. else if (sColNm == "deptnm") sToolTip = "진료과명";
  402. else if (sColNm == "medispclnm") sToolTip = "주치교수";
  403. else if (sColNm == "atdoctnm") sToolTip = "담당의사";
  404. else if (sColNm == "diagnm") sToolTip = "입원 주 진단명";
  405. else if (sColNm == "opnm") sToolTip = "입원기간 중 최근 수술명";
  406. else if (sColNm == "cnst") sToolTip = "컨설트 존재여부";
  407. }
  408. GrdObj.tooltipText(1, GrdObj.mouseCol) = sToolTip;
  409. }
  410. /**
  411. * @desc : 화면ID의 grid의 column 순서 조회
  412. * @
  413. * @param :
  414. * @return :
  415. * @author : 오지훈
  416. * @---------------------------------------------------
  417. */
  418. function reqOrderInfoOfCol(scrnid, grdid, compscd){
  419. model.removeNodeset("/root/send/reqdata");
  420. model.makeValue("/root/send/reqdata/scrnid", scrnid);
  421. if (!isNull(compscd)) {
  422. model.makeValue("/root/send/reqdata/compscd", compscd);
  423. }
  424. if(submit("TRMMB01103")){
  425. var xmlnode = model.instance1.selectSingleNode("/root/init/userscrnenvinfo/gridseq");
  426. if(xmlnode != null){
  427. var refdata = model.getValue("/root/init/userscrnenvinfo/gridseq/compsrefcnts");
  428. var sizedata = model.getValue("/root/init/userscrnenvinfo/gridseq/compssizecnts");
  429. var frozencol = model.getValue("/root/init/userscrnenvinfo/gridseq/frozencol");
  430. setOrderInfoOfCol(grdid, refdata, sizedata, frozencol); //외래환자리스트 컬럼 설정
  431. }
  432. }
  433. }
  434. /**
  435. * @desc : 컬럼 순서 정보 설정
  436. * @
  437. * @param : grid ID : 그리드ID
  438. * : refdata : 그리드 ref데이터 구분자 '^'
  439. * : sizedata : 그리드 size데이터 구분자 '^'
  440. * @return :
  441. * @author : 오지훈
  442. * @---------------------------------------------------
  443. */
  444. function setOrderInfoOfCol(grdid, refdata, sizedata, frozencol){
  445. var grdobj = document.controls.item(grdid);
  446. var refarr = refdata.split("^");
  447. var sizearr = sizedata.split("^");
  448. var nFrozenCols = 0;
  449. grdobj.mergeCellsFixedRows = "never"
  450. for(var i = 0; i < refarr.length; i++){
  451. var colcnt = grdobj.colref("" + refarr[i] + "");
  452. grdobj.colMove(i, colcnt, "before", false);
  453. var size = sizearr[i];
  454. if(size == 0){ // size of column 0 -> hidden
  455. grdobj.colHidden(i) = true;
  456. }else{
  457. grdobj.colHidden(i) = false;
  458. }
  459. grdobj.colWidth(i) = eval(size);
  460. }
  461. if(!isNull(frozencol)){ // 고정 컬럼 적용
  462. nFrozenCols = grdobj.colRef(frozencol);
  463. if(nFrozenCols>0) {
  464. grdobj.frozenCols = nFrozenCols;
  465. } else {
  466. grdobj.frozenCols = 0;
  467. }
  468. } else {
  469. grdobj.frozenCols = 0;
  470. }
  471. grdobj.mergeCellsFixedRows = "bycolrec"
  472. grdobj.rebuild();
  473. }