SMPEA00200.xjs 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[var RSRV_PLCE = "";
  3. var IS_RSRVUSER = true;
  4. function fInitRsrvCtrl() {
  5. model.resetInstanceNode("/root/ctrl/send/rsrvinfo");
  6. model.resetInstanceNode("/root/ctrl/main/ctrllist/ctrlinfo");
  7. model.resetInstanceNode("/root/ctrl/temp/ctrllist/ctrlinfo");
  8. grd_ctrl.refresh();
  9. grd_ctrl.resizeCells();
  10. grd_ctrl.rebuildStyle();
  11. // 제어 예외 대상 조회
  12. submit("TRPEA00211", false);
  13. if (IS_RSRVUSER) {
  14. btn_rsrv.disabled = false;
  15. btn_cncl.disabled = false;
  16. }
  17. }
  18. // 예약 제어 정보 조회
  19. function fGetRsrvCtrlList(grd, pRsrvDd, pRsrvTm) {
  20. // 호출 시점
  21. // 1. 검사 선택 후
  22. // 2. 검사실 선택 후
  23. // 3. 검사 시각 선택 후
  24. var path = grd.nodeset;
  25. var cnt = instance1.selectNodes(path).length;
  26. if (cnt < 1 || model.getValue(path + "/calcscorcd") == "") {
  27. return;
  28. }
  29. var row = grd.row;
  30. path += "[" + row + "]/";
  31. model.resetInstanceNode("/root/ctrl/send/rsrvinfo");
  32. // 기본 항목
  33. model.makeValue("/root/ctrl/send/rsrvinfo/srchdd", getCurrentDate()); // 조회기준일
  34. model.makeValue("/root/ctrl/send/rsrvinfo/instcd", getUserInfo("dutplceinstcd")); // 기관코드
  35. model.makeValue("/root/ctrl/send/rsrvinfo/userid", getUserId()); // 사용자ID
  36. model.makeValue("/root/ctrl/send/rsrvinfo/userdept", getUserInfo("dutplcecd")); // 사용자부서
  37. model.makeValue("/root/ctrl/send/rsrvinfo/rsrvplce", RSRV_PLCE); // 예약처 (통합예약)
  38. // 검사 현황 항목
  39. for (var i = 0; i < grd.cols; i++) {
  40. var ref = grd.colAttribute(i, "ref");
  41. model.makeValue("/root/ctrl/send/rsrvinfo/" + ref, model.getValue(path + ref));
  42. }
  43. // 예약 가능 검사실 처리
  44. if (model.getValue("/root/ctrl/send/rsrvinfo/rsrvexcuroomposscd") == "") {
  45. model.makeValue("/root/ctrl/send/rsrvinfo/rsrvexcuroomposscd", model.getValue("/root/ctrl/send/rsrvinfo/excuroomnm"));
  46. }
  47. // 예약일, 예약 시각 설정
  48. var rsrvdd = "";
  49. var rsrvtm = "";
  50. var srchrsrvtm = model.getValue(path + "srchrsrvtm");
  51. if (pRsrvDd != null) {
  52. rsrvdd = pRsrvDd;
  53. } else if (srchrsrvtm.length == 12) {
  54. rsrvdd = srchrsrvtm.substr(0, 8);
  55. }
  56. if (pRsrvTm != null) {
  57. rsrvtm = pRsrvTm;
  58. } else if (srchrsrvtm.length == 12) {
  59. rsrvtm = srchrsrvtm.substr(8, 4);
  60. }
  61. model.makeValue("/root/ctrl/send/rsrvinfo/rsrvdd", rsrvdd); // 예약일
  62. model.makeValue("/root/ctrl/send/rsrvinfo/rsrvtm", rsrvtm); // 예약시각
  63. if (instance1.selectNodes("/root/main3/rmrvlist/rmrvinfo").length > 0) {
  64. // 가용 현황
  65. var stat = Number(model.getValue("/root/main3/rmrvlist/rmrvinfo[" + grd_rmrv.row + "]/stat"));
  66. var capa = Number(model.getValue("/root/main3/rmrvlist/rmrvinfo[" + grd_rmrv.row + "]/capa"));
  67. model.makeValue("/root/ctrl/send/rsrvinfo/capastat", capa - stat);
  68. // 이전 검사 종료 여부
  69. var tmflag = model.getValue("/root/main3/rmrvlist/rmrvinfo[" + grd_rmrv.row + "]/tmflag");
  70. model.makeValue("/root/ctrl/send/rsrvinfo/tmflag", tmflag);
  71. } else {
  72. model.makeValue("/root/ctrl/send/rsrvinfo/capastat", "9");
  73. model.makeValue("/root/ctrl/send/rsrvinfo/tmflag", "");
  74. }
  75. // 환자 전달 사항 (구분자 '|'로 연결) (아직 쓰지 말자..)
  76. /*
  77. cnt = instance1.selectNodes("/root/main/ptcmtlist/ptcmtinfo").length;
  78. var patcmt = "";
  79. for (var i = 1; i <= cnt; i++) {
  80. patcmt += model.getValue("/root/main/ptcmtlist/ptcmtinfo[" + i + "]/patcmt");
  81. if (i < cnt) {
  82. patcmt += "|";
  83. }
  84. }
  85. model.makeValue("/root/ctrl/send/rsrvinfo/patcmt", patcmt); // 환자 전달 사항
  86. */
  87. // ref : /root/ctrl/send/rsrvinfo
  88. // resultref : /root/ctrl/temp/ctrllist/ctrlinfo
  89. submit("TRPEA00210", false);
  90. var tPath = "/root/ctrl/temp/ctrllist/ctrlinfo";
  91. var mPath = "/root/ctrl/main/ctrllist/ctrlinfo";
  92. cnt = instance1.selectNodes(tPath).length;
  93. var flag = true;
  94. if (instance1.selectNodes(tPath + "[ctrldesc != '']").length == instance1.selectNodes(mPath).length) {
  95. flag = false;
  96. // 데이터 확인 후 기존 데이터와 달라졌을 경우만 그리드에 새로 표시
  97. for (var i = 1; i <= cnt; i++) {
  98. if (model.getValue(tPath + "[" + i + "]/ctrldesc") == "") {
  99. continue;
  100. }
  101. if (instance1.selectNodes(mPath + "[rsrvplce = '" + model.getValue(tPath + "[" + i + "]/rsrvplce") + "' and"
  102. + " suppdeptcd = '" + model.getValue(tPath + "[" + i + "]/suppdeptcd") + "' and"
  103. + " excuroomcd = '" + model.getValue(tPath + "[" + i + "]/excuroomcd") + "' and"
  104. + " excucd = '" + model.getValue(tPath + "[" + i + "]/excucd") + "' and"
  105. + " ctrlseq = '" + model.getValue(tPath + "[" + i + "]/ctrlseq") + "' and"
  106. + " ctrlflag = '" + model.getValue(tPath + "[" + i + "]/ctrlflag") + "' and"
  107. + " appflag = '" + model.getValue(tPath + "[" + i + "]/appflag") + "']").length < 1) {
  108. flag = true;
  109. break;
  110. }
  111. }
  112. }
  113. if (flag) {
  114. model.resetInstanceNode(mPath);
  115. if (IS_RSRVUSER) {
  116. btn_rsrv.disabled = false;
  117. btn_cncl.disabled = false;
  118. }
  119. var idx = 1;
  120. for (var i = 1; i <= cnt; i++) {
  121. // 제어 내역 설명이 없는 행은 표시하지 않음
  122. if (model.getValue(tPath + "[" + i + "]/ctrldesc") == "") {
  123. continue;
  124. }
  125. model.makeValue(mPath + "[" + idx + "]/rsrvplce", model.getValue(tPath + "[" + i + "]/rsrvplce"));
  126. model.makeValue(mPath + "[" + idx + "]/suppdeptcd", model.getValue(tPath + "[" + i + "]/suppdeptcd"));
  127. model.makeValue(mPath + "[" + idx + "]/excuroomcd", model.getValue(tPath + "[" + i + "]/excuroomcd"));
  128. model.makeValue(mPath + "[" + idx + "]/excucd", model.getValue(tPath + "[" + i + "]/excucd"));
  129. model.makeValue(mPath + "[" + idx + "]/ctrlseq", model.getValue(tPath + "[" + i + "]/ctrlseq"));
  130. model.makeValue(mPath + "[" + idx + "]/ctrldesc", model.getValue(tPath + "[" + i + "]/ctrldesc"));
  131. model.makeValue(mPath + "[" + idx + "]/ctrlflag", model.getValue(tPath + "[" + i + "]/ctrlflag"));
  132. model.makeValue(mPath + "[" + idx + "]/appflag", model.getValue(tPath + "[" + i + "]/appflag"));
  133. idx++;
  134. }
  135. grd_ctrl.refresh();
  136. grd_ctrl.rebuildStyle();
  137. // 제어 적용 여부
  138. var excpflag = false;
  139. for (var i = 1; i <= instance1.selectNodes("/root/ctrl/hidden/excplist/excpinfo").length; i++) {
  140. if (getUserId() == model.getValue("/root/ctrl/hidden/excplist/excpinfo[" + i + "]/userid")) {
  141. excpflag = true;
  142. break;
  143. }
  144. }
  145. // 제어 적용
  146. for (var i = 1; i <= cnt; i++) {
  147. var appflag = model.getValue(mPath + "[" + i + "]/appflag") == "Y" ? true : false;
  148. var ctrlflag = model.getValue(mPath + "[" + i + "]/ctrlflag");
  149. if (ctrlflag.indexOf("I") >= 0) { // 정보 (단순 확인용)
  150. grd_ctrl.rowStyle(i, "data", "background-color") = "#ffffff";
  151. }
  152. if (ctrlflag.indexOf("R") >= 0) { // 예약 제한
  153. grd_ctrl.rowStyle(i, "data", "background-color") = "#ffffa0";
  154. if (appflag) {
  155. grd_ctrl.rowStyle(i, "data", "font-weight") = "bold";
  156. } else {
  157. grd_ctrl.rowStyle(i, "data", "color") = "#8c8c8c";
  158. grd_ctrl.rowStyle(i, "data", "font-weight") = "";
  159. }
  160. if (!excpflag && appflag) {
  161. btn_rsrv.disabled = true;
  162. }
  163. }
  164. if (ctrlflag.indexOf("C") >= 0) { // 취소 제한
  165. grd_ctrl.rowStyle(i, "data", "background-color") = "#ffffa0";
  166. if (appflag) {
  167. grd_ctrl.rowStyle(i, "data", "font-weight") = "bold";
  168. } else {
  169. grd_ctrl.rowStyle(i, "data", "color") = "#8c8c8c";
  170. grd_ctrl.rowStyle(i, "data", "font-weight") = "";
  171. }
  172. if (!excpflag && appflag) {
  173. btn_cncl.disabled = true;
  174. }
  175. }
  176. if (ctrlflag.indexOf("T") >= 0) { // 통합 예약
  177. if (grd_ctrl.rowStyle(i, "data", "background-color") != "#ffffa0") {
  178. grd_ctrl.rowStyle(i, "data", "background-color") = "#ffdcdc";
  179. }
  180. if (appflag) {
  181. grd_ctrl.rowStyle(i, "data", "font-weight") = "bold";
  182. } else {
  183. grd_ctrl.rowStyle(i, "data", "color") = "#8c8c8c";
  184. grd_ctrl.rowStyle(i, "data", "font-weight") = "";
  185. }
  186. if (RSRV_PLCE != "T") {
  187. if (!excpflag && appflag) {
  188. btn_rsrv.disabled = true;
  189. btn_cncl.disabled = true;
  190. }
  191. }
  192. }
  193. if (ctrlflag.indexOf("P") >= 0) { // 팝업 메시지
  194. if (grd_ctrl.rowStyle(i, "data", "background-color") != "#ffffa0" &&
  195. grd_ctrl.rowStyle(i, "data", "background-color") != "#ffdcdc") {
  196. grd_ctrl.rowStyle(i, "data", "background-color") = "#ebebff";
  197. }
  198. if (!appflag) {
  199. grd_ctrl.rowStyle(i, "data", "color") = "#8c8c8c";
  200. } else {
  201. tPath = "/root/ctrl/temp/termlist/terminfo";
  202. var tCnt = instance1.selectNodes(tPath).length;
  203. for (var j = 1; j <= tCnt; j++) {
  204. // 제어항 확인
  205. if (model.getValue(tPath + "[" + j + "]/rsrvplce") == model.getValue(mPath + "[" + i + "]/rsrvplce") &&
  206. model.getValue(tPath + "[" + j + "]/suppdeptcd") == model.getValue(mPath + "[" + i + "]/suppdeptcd") &&
  207. model.getValue(tPath + "[" + j + "]/excuroomcd") == model.getValue(mPath + "[" + i + "]/excuroomcd") &&
  208. model.getValue(tPath + "[" + j + "]/excucd") == model.getValue(mPath + "[" + i + "]/excucd") &&
  209. model.getValue(tPath + "[" + j + "]/ctrlseq") == model.getValue(mPath + "[" + i + "]/ctrlseq") &&
  210. model.getValue(tPath + "[" + j + "]/itemtype") == "C" &&
  211. model.getValue(tPath + "[" + j + "]/itemid") == "POPUP") {
  212. messageBox(model.getValue(tPath + "[" + j + "]/valnm"), "E999");
  213. }
  214. }
  215. }
  216. }
  217. }
  218. grd_ctrl.resizeCells();
  219. }
  220. }]]></Script>