test.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360
  1. "use strict";
  2. /**
  3. * mplus_test_test
  4. */
  5. var mplus_test_test = function(){
  6. // 상속
  7. mplus_common.call(this);
  8. // 상위 객체 생성
  9. //var mplusPatient = new mplus_mobile_patient();
  10. //var mplusNursing = new mplus_nursing();
  11. //super
  12. var self = this;
  13. //==== 변수 { ====
  14. // column 정렬의 토글 상태 제어용 : 0: not selected, 1:오름차순, 2:내림차순
  15. var varToggleCol1 = 0;
  16. var varToggleCol2 = 0;
  17. var varToggleCol3 = 0;
  18. var varToggleCol4 = 0;
  19. var varToggleCol5 = 0;
  20. var varToggleCol6 = 0;
  21. var varToggleCol7 = 0;
  22. var varToggleCol8 = 0;
  23. var varResultLists = [];
  24. //==== 변수 } ====
  25. /**
  26. * 초기화
  27. */
  28. this.init = function(){ //여기서 모든화면 콤보박스데이터를 집어넣자!!! 그래야지 화면이동할때 속도가 오래걸리지않음!!!
  29. // 접근 권한 체크
  30. checkAccessPermission();
  31. // 초기 화면 조건 구성
  32. initCondition();
  33. // 이벤트 초기화
  34. addEvent();
  35. // 환자 검색 실행 및 환자 정보 화면 출력
  36. searchPatient();
  37. };
  38. //==== 접근 권한 체크 { ====
  39. var checkAccessPermission = function(){
  40. //if( !self.common.checkAccessJobKind( "1000")){
  41. // self.alertTrue("접근 권한이 없습니다.", self.common.gotoDefaultHomePage);
  42. //}
  43. //if( !self.common.checkAccessUserAuth( "01")){
  44. // self.alertTrue("접근 권한이 없습니다.", self.common.gotoDefaultHomePage);
  45. //}
  46. //self.common.disableElements( $("#myModalBtn"));
  47. };
  48. //==== 접근 권한 체크 } ====
  49. //==== 초기화 설정 { ====
  50. var initCondition = function(){
  51. // 초기 화면 조건 구성
  52. };
  53. //==== 초기화 설정 } ====
  54. //==== 이벤트 설정 { ====
  55. var addEvent = function(){
  56. // 컬럼 클릭의 정렬 이벤트
  57. eventColumnClick();
  58. eventRowClick();
  59. };
  60. var eventColumnClick = function(){
  61. $("#divResultHeaderColumn1").off("click");
  62. $("#divResultHeaderColumn1").on("click", function(){
  63. //alert("column1 clicked!!");
  64. sortColumn( 1, "patientId");
  65. });
  66. $("#divResultHeaderColumn2").off("click");
  67. $("#divResultHeaderColumn2").on("click", function(){
  68. //alert("column2 clicked!!");
  69. sortColumn( 2, "patientNm");
  70. });
  71. $("#divResultHeaderColumn3").off("click");
  72. $("#divResultHeaderColumn3").on("click", function(){
  73. //alert("column3 clicked!!");
  74. sortColumn( 3, "wardNm");
  75. });
  76. $("#divResultHeaderColumn4").off("click");
  77. $("#divResultHeaderColumn4").on("click", function(){
  78. //alert("column4 clicked!!");
  79. sortColumn( 4, "age");
  80. });
  81. $("#divResultHeaderColumn5").off("click");
  82. $("#divResultHeaderColumn5").on("click", function(){
  83. //alert("column5 clicked!!");
  84. sortColumn( 5, "deptNm");
  85. });
  86. $("#divResultHeaderColumn6").off("click");
  87. $("#divResultHeaderColumn6").on("click", function(){
  88. //alert("column6 clicked!!");
  89. sortColumn( 6, "specialistNm");
  90. });
  91. $("#divResultHeaderColumn7").off("click");
  92. $("#divResultHeaderColumn7").on("click", function(){
  93. //alert("column7 clicked!!");
  94. sortColumn( 7, "hospitalizationDt");
  95. });
  96. $("#divResultHeaderColumn8").off("click");
  97. $("#divResultHeaderColumn8").on("click", function(){
  98. //alert("column8 clicked!!");
  99. sortColumn( 8, "birthDt");
  100. });
  101. };
  102. var eventRowClick = function(){
  103. // 환자 선택 이벤트 처리
  104. $("#divResultRows .patient-row").off("click"); // 기존 이벤트 해제
  105. $("#divResultRows .patient-row").on("click", function(e){
  106. var patientNo = e.currentTarget.attributes.patientNo.value;
  107. var patientId = e.currentTarget.attributes.patientId.value;
  108. var patientNm = e.currentTarget.attributes.patientNm.value;
  109. var age = e.currentTarget.attributes.age.value;
  110. var gender = e.currentTarget.attributes.gender.value;
  111. // 환자 정보 셋팅
  112. self.common.setSelectedPatient( patientId, patientNm, age, gender );
  113. //alert("row clicked!! " + patientNo + " : " + patientId);
  114. // 환자 정보 화면 띄우기
  115. $("#modalPatientInfo").modal("show");
  116. mplusModalPatientinfo.init();
  117. });
  118. };
  119. //==== 이벤트 설정 } ====
  120. //==== 환자 정보 조회 처리 { ====
  121. // 환자 정보 조회
  122. var searchPatient = function(){
  123. var param = {
  124. hospitalCd: "",
  125. userId: "",
  126. searchDt: "",
  127. deptCd: "",
  128. selectedDrId: "",
  129. wardCd: "",
  130. roomCd: "",
  131. searchTxtCls: "",
  132. searchTxt: "",
  133. isNewPatient: ""
  134. };
  135. self.medical.getInPatientList(param, processSearchPatient);
  136. };
  137. // 환자 정보 조회 결과 처리
  138. var processSearchPatient = function(lists){
  139. // 1. 환자 조회 결과 리스트를 varResultLists로 복사
  140. varResultLists = lists;
  141. // 2. 환자 검색 결과 리스트를 재정리 : 중복이름 체크
  142. rebuildPatientList();
  143. // 3. 환자 검색 결과를 화면에 disaplay
  144. drawPatientList();
  145. };
  146. // 환자 검색 결과 리스트를 재정리 : 중복이름 체크
  147. var rebuildPatientList = function(){
  148. // 사용자명 중복 체크
  149. // 1. 환자리스트틀 임시환자리스트로 복사
  150. // 2. 임시환자리스트에서 환자명으로 정렬
  151. // 3. 임시환자리스트에서 중복 사용자 리스트를 추출
  152. // 4. 환자리스트에 중복환자를 수정하면서 중복환자명인 경우 중복상태코드(중복순번)를 추가
  153. var tempList = varResultLists;
  154. var dupList = [];
  155. // 정렬 실행
  156. self.common.sortArrayObject( tempList, "patientNm", true);
  157. // 중복 환자 리스트 추출
  158. for( var i = 1; i < tempList.length; i++){
  159. // 중복 환자명이 있는 경우
  160. if( tempList[i-1].patientNm == tempList[i].patientNm){
  161. console.log( "중복환자명 : " + i + " : " + tempList[i].patientNm);
  162. // 중복리스트의 이미기록된 경우는 skip함
  163. if( dupList[dupList.length - 1] != tempList[i].patientNm){
  164. dupList.push( tempList[i].patientNm);
  165. } else {
  166. console.log( "중복환자명(skip) : " + i + " : " + tempList[i].patientNm);
  167. }
  168. }
  169. }
  170. // 기존 환자 정보에 중복 여부 체크용 변수(dupNo) 추가, 0:중복 없음, 1,2,3,4,5,6,...(중복순번)
  171. for( var i = 0; i < varResultLists.length; i++){
  172. varResultLists[i].dupNo = 0;
  173. for( var j = 0; j < dupList.length; j++){
  174. if( varResultLists[i].patientNm == dupList[j]){
  175. varResultLists[i].dupNo = j + 1; // 1,2,3,4,5,6,....
  176. console.log( "중복 dupNo : " + varResultLists[i].dupNo);
  177. break;
  178. }
  179. }
  180. }
  181. };
  182. // 환자 정보 화면에 그리기
  183. var drawPatientList = function(){
  184. var lists = varResultLists;
  185. var strDisplayTemp = "";
  186. $("#divResultRows").empty();
  187. for( var i = 0; i < lists.length; i++){
  188. var tmpDupCheck = lists[i].dupNo > 0 ? "※" : "";
  189. strDisplayTemp += "<div class=\"row patient-row\" patientNo=\"" + i + "\" patientId=\"" + lists[i].patientId + "\" patientNm=\"" + lists[i].patientNm + "\" age=\"" + lists[i].age + "\" gender=\"" + lists[i].gender + "\" style=\"overflow: hidden; background-color: aqua;\">"
  190. + " <div class=\"col-xs-12 col-sm-6 col-lg-6\">"
  191. + " <div class=\"col-xs-3 col-sm-3 col-lg-3\">" + lists[i].patientId + "</div>"
  192. + " <div class=\"col-xs-3 col-sm-3 col-lg-3\">" + lists[i].patientNm + tmpDupCheck + "</div>"
  193. + " <div class=\"col-xs-3 col-sm-3 col-lg-3\">" + lists[i].wardNm + "/" + lists[i].roomNm + "/" + lists[i].bedNm + "</div>"
  194. + " <div class=\"col-xs-3 col-sm-3 col-lg-3\">" + lists[i].age + "/" + lists[i].gender + "</div>"
  195. + " </div>"
  196. + " <div class=\"col-xs-12 col-sm-6 col-lg-6\">"
  197. + " <div class=\"col-xs-3 col-sm-3 col-lg-3\">" + lists[i].deptNm + "/" + lists[i].doctorNm + "</div>"
  198. + " <div class=\"col-xs-3 col-sm-3 col-lg-3\">" + lists[i].specialistNm + "</div>"
  199. + " <div class=\"col-xs-3 col-sm-3 col-lg-3\">" + lists[i].hospitalizationDt + "</div>"
  200. + " <div class=\"col-xs-3 col-sm-3 col-lg-3\">" + lists[i].birthDt + "</div>"
  201. + " </div>"
  202. + "</div>"
  203. ;
  204. console.log( i + " : " + lists[i].deptNm);
  205. }
  206. $("#divResultRows").append(strDisplayTemp); // element 추가
  207. eventRowClick(); // 클릭 이벤트 처리
  208. }
  209. //==== 환자 정보 조회 처리 } ====
  210. //==== 컬럼 정렬 프로세스 { ====
  211. // 컬럼 상태를 초기화 처리
  212. var initColumnStatus = function(){
  213. varToggleCol1 = 0;
  214. varToggleCol2 = 0;
  215. varToggleCol3 = 0;
  216. varToggleCol4 = 0;
  217. varToggleCol5 = 0;
  218. varToggleCol6 = 0;
  219. varToggleCol7 = 0;
  220. varToggleCol8 = 0;
  221. // 컬럼 정렬 아이콘 초기화 : ▼ ▲
  222. $("#spanSortColumn1").text("");
  223. $("#spanSortColumn2").text("");
  224. $("#spanSortColumn3").text("");
  225. $("#spanSortColumn4").text("");
  226. $("#spanSortColumn5").text("");
  227. $("#spanSortColumn6").text("");
  228. $("#spanSortColumn7").text("");
  229. $("#spanSortColumn8").text("");
  230. };
  231. // 컬럼 상태를 설정(정렬 조건 적용)
  232. var setColumnStatus = function( columnNo){
  233. // 클릭된 column의 현재 상태를 백업
  234. var copyToggleStatus = 0;
  235. if( columnNo == 1)
  236. copyToggleStatus = varToggleCol1;
  237. else if( columnNo == 2)
  238. copyToggleStatus = varToggleCol2;
  239. else if( columnNo == 3)
  240. copyToggleStatus = varToggleCol3;
  241. else if( columnNo == 4)
  242. copyToggleStatus = varToggleCol4;
  243. else if( columnNo == 5)
  244. copyToggleStatus = varToggleCol5;
  245. else if( columnNo == 6)
  246. copyToggleStatus = varToggleCol6;
  247. else if( columnNo == 7)
  248. copyToggleStatus = varToggleCol7;
  249. else if( columnNo == 8)
  250. copyToggleStatus = varToggleCol8;
  251. // column 상태를 초기화
  252. initColumnStatus();
  253. // 클릭된 column의 백업된 상태에서 한단계 진핸된 상태로 변경
  254. if( columnNo == 1)
  255. copyToggleStatus == 0 ? varToggleCol1 = 1 : copyToggleStatus == 1 ? varToggleCol1 = 2 : varToggleCol1 = 1;
  256. else if( columnNo == 2)
  257. copyToggleStatus == 0 ? varToggleCol2 = 1 : copyToggleStatus == 1 ? varToggleCol2 = 2 : varToggleCol2 = 1;
  258. else if( columnNo == 3)
  259. copyToggleStatus == 0 ? varToggleCol3 = 1 : copyToggleStatus == 1 ? varToggleCol3 = 2 : varToggleCol3 = 1;
  260. else if( columnNo == 4)
  261. copyToggleStatus == 0 ? varToggleCol4 = 1 : copyToggleStatus == 1 ? varToggleCol4 = 2 : varToggleCol4 = 1;
  262. else if( columnNo == 5)
  263. copyToggleStatus == 0 ? varToggleCol5 = 1 : copyToggleStatus == 1 ? varToggleCol5 = 2 : varToggleCol5 = 1;
  264. else if( columnNo == 6)
  265. copyToggleStatus == 0 ? varToggleCol6 = 1 : copyToggleStatus == 1 ? varToggleCol6 = 2 : varToggleCol6 = 1;
  266. else if( columnNo == 7)
  267. copyToggleStatus == 0 ? varToggleCol7 = 1 : copyToggleStatus == 1 ? varToggleCol7 = 2 : varToggleCol7 = 1;
  268. else if( columnNo == 8)
  269. copyToggleStatus == 0 ? varToggleCol8 = 1 : copyToggleStatus == 1 ? varToggleCol8 = 2 : varToggleCol8 = 1;
  270. // 정렬 상태 화면에 그리기
  271. varToggleCol1 == 1 ? $("#spanSortColumn1").text("▲") : varToggleCol1 == 2 ? $("#spanSortColumn1").text("▼") : $("#spanSortColumn1").text("");
  272. varToggleCol2 == 1 ? $("#spanSortColumn2").text("▲") : varToggleCol2 == 2 ? $("#spanSortColumn2").text("▼") : $("#spanSortColumn2").text("");
  273. varToggleCol3 == 1 ? $("#spanSortColumn3").text("▲") : varToggleCol3 == 2 ? $("#spanSortColumn3").text("▼") : $("#spanSortColumn3").text("");
  274. varToggleCol4 == 1 ? $("#spanSortColumn4").text("▲") : varToggleCol4 == 2 ? $("#spanSortColumn4").text("▼") : $("#spanSortColumn4").text("");
  275. varToggleCol5 == 1 ? $("#spanSortColumn5").text("▲") : varToggleCol5 == 2 ? $("#spanSortColumn5").text("▼") : $("#spanSortColumn5").text("");
  276. varToggleCol6 == 1 ? $("#spanSortColumn6").text("▲") : varToggleCol6 == 2 ? $("#spanSortColumn6").text("▼") : $("#spanSortColumn6").text("");
  277. varToggleCol7 == 1 ? $("#spanSortColumn7").text("▲") : varToggleCol7 == 2 ? $("#spanSortColumn7").text("▼") : $("#spanSortColumn7").text("");
  278. varToggleCol8 == 1 ? $("#spanSortColumn8").text("▲") : varToggleCol8 == 2 ? $("#spanSortColumn8").text("▼") : $("#spanSortColumn8").text("");
  279. };
  280. // 컬럼 상태를 조회(정렬 조건 적용)
  281. var getColumnStatus = function( columnNo){
  282. if( columnNo == 1)
  283. return varToggleCol1;
  284. else if( columnNo == 2)
  285. return varToggleCol2;
  286. else if( columnNo == 3)
  287. return varToggleCol3;
  288. else if( columnNo == 4)
  289. return varToggleCol4;
  290. else if( columnNo == 5)
  291. return varToggleCol5;
  292. else if( columnNo == 6)
  293. return varToggleCol6;
  294. else if( columnNo == 7)
  295. return varToggleCol7;
  296. else if( columnNo == 8)
  297. return varToggleCol8;
  298. };
  299. // 컬럼의 정렬을 실행
  300. var sortColumn = function( columnNo, fieldName){
  301. // 컬럼 상태 설정
  302. setColumnStatus( columnNo);
  303. // 오름차순, 내림차순 선택
  304. var isAscending = true;
  305. getColumnStatus( columnNo) == 1 ? isAscending = true : getColumnStatus( columnNo) == 2 ? isAscending = false : isAscending = true;
  306. // 정렬 실행
  307. self.common.sortArrayObject( varResultLists, fieldName, isAscending);
  308. // 환자 정보 다시 그리기
  309. drawPatientList();
  310. };
  311. //==== 컬럼 정렬 프로세스 } ====
  312. };