SMMND01800.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560
  1. /*
  2. 투석자리생성 (SMMND01800.xrw - JScript )
  3. - Version :
  4. 1) : Ver.1.00.01
  5. */
  6. var selColor = "white";
  7. var selColor_Num = 0;
  8. var s1 = "";
  9. var crtChk = 'N';
  10. /**
  11. * @group :
  12. * @ver : 2007.04.04
  13. * @by : 김진아
  14. * @---------------------------------------------------
  15. * @type : function
  16. * @access : public
  17. * @desc : 전체 화면 초기화
  18. * @param :
  19. * @return :
  20. * @---------------------------------------------------
  21. */
  22. function fDone(){
  23. // 생성일자, 적용일자 초기화
  24. var sDate = getCurrentDate();
  25. var currentdate = new Date();
  26. model.setValue ("/root/main/cretdd" , sDate );
  27. model.makeValue("/root/main/condition/appdd", (currentdate.getAddDate(1, "D")).getDateFormat());
  28. //grd_choiposinfo 초기화
  29. for(i=1;i<=grd_choiposinfo.rows;i++){
  30. grd_choiposinfo.textMatrix(i,1) = 0;
  31. }
  32. model.refresh();
  33. }
  34. /**
  35. * @group :
  36. * @ver : 2007.06.27
  37. * @by : 김진아
  38. * @---------------------------------------------------
  39. * @type : function
  40. * @access : public
  41. * @desc : 적용일자 체크 (오늘 이전 적용일자 설정 금지)
  42. * @param :
  43. * @return :
  44. * @---------------------------------------------------
  45. */
  46. function fChkAppdd(){
  47. var sSelDate = model.getValue("/root/main/condition/appdd");
  48. var currentdate = new Date();
  49. if(sSelDate <= getCurrentDate()) {
  50. messageBox("적용일자를 오늘 이전으로 설정", "E001", "적용일자를 다시 입력하세요.");
  51. model.setValue("/root/main/condition/appdd", (currentdate.getAddDate(1, "D")).getDateFormat());
  52. return;
  53. }
  54. fChkRsrvPat(); // 적용일자에 예약환자 존재 여부 확인
  55. if(model.getValue("/root/main/chklist/chkinfo/rsrvdd") != "") { // 해당 적용일자에 예약환자 있음.
  56. //messageBox("적용일자에 예약환자가 존재합니다.", "E");
  57. var sMsg = messageBox("적용일자에 예약환자가 존재합니다.", "S", "HD Scheduling화면으로 이동하시겠습니까?");
  58. if( sMsg == 6) { //return : yes=6, no=7, 취소=2
  59. modal("SMMND01100", "", 1, 1, "SMMND01100");
  60. } else {
  61. fPosinfoinit();
  62. return;
  63. }
  64. }
  65. }
  66. /**
  67. * @group :
  68. * @ver : 2007.07.07
  69. * @by : 김진아
  70. * @---------------------------------------------------
  71. * @type : function
  72. * @access : public
  73. * @desc : 적용일자에 예확환자 존재 여부 확인
  74. * @param :
  75. * @return :
  76. * @---------------------------------------------------
  77. */
  78. function fChkRsrvPat(){
  79. model.removenode("/root/send");
  80. model.makeNode("/root/send/reqdata");
  81. model.makeValue("/root/send/reqdata/appdd", model.getValue("/root/main/condition/appdd"));
  82. model.removeNodeset("/root/main/chklist");
  83. submit("TRMND01803");
  84. }
  85. /**
  86. * @group :
  87. * @ver : 2007.04.11
  88. * @by : 김진아
  89. * @---------------------------------------------------
  90. * @type : function
  91. * @access : public
  92. * @desc : grd_historyinfo 조회
  93. * @param :
  94. * @return :
  95. * @---------------------------------------------------
  96. */
  97. function fSelectHistory(){
  98. submit("TRMND01802");
  99. }
  100. /**
  101. * @group :
  102. * @ver : 2007.04.04
  103. * @by : 김진아
  104. * @---------------------------------------------------
  105. * @type : function
  106. * @access : public
  107. * @desc : grd_mngtposinfo 생성
  108. * @param :
  109. * @return :
  110. * @---------------------------------------------------
  111. */
  112. function fCreatePos(){
  113. var sPosValue_1 = model.getValue("/root/main/choiposlist/choiposinfo[1]/poscont");
  114. var sPosValue_2 = model.getValue("/root/main/choiposlist/choiposinfo[2]/poscont");
  115. var sPosValue_3 = model.getValue("/root/main/choiposlist/choiposinfo[3]/poscont");
  116. var sPosValue_4 = model.getValue("/root/main/choiposlist/choiposinfo[4]/poscont");
  117. var sPosValue_5 = model.getValue("/root/main/choiposlist/choiposinfo[5]/poscont");
  118. if(sPosValue_1 == "0" && sPosValue_2 == "0" && sPosValue_3 =="0" && sPosValue_4 =="0" && sPosValue_5 =="0") {
  119. messageBox("구역별 자리수는", "I003", "하나이상의 자리수를 선택하십시오.");
  120. return;
  121. }
  122. if(model.getValue("/root/main/condition/appdd") == ""){
  123. var msg = messageBox("적용일자를", "C001", ""); //return : yes=6, no=7
  124. }
  125. else{
  126. //grd_mngtposinfo 초기화
  127. model.removeNodeset("/root/main/mngtposlist/mngtposinfo");
  128. grd_mngtposinfo.rebuild();
  129. // 가장 많은 자리수(max) 구하기
  130. var i, j, section, max=0;
  131. for(i=1;i<=grd_choiposinfo.rows;i++){
  132. if(max < parseInt(grd_choiposinfo.valuematrix(i,1))){
  133. max = parseInt(grd_choiposinfo.valuematrix(i,1));
  134. }
  135. }
  136. // grd_mngtposinfo 그리기
  137. for(i=0; i<max; i++){
  138. grd_mngtposinfo.addRow(false);
  139. }
  140. grd_mngtposinfo.refresh();
  141. //grd_mngtposinfo data넣기
  142. for(i=1; i<=parseInt(grd_choiposinfo.textmatrix(1,1)); i++){
  143. if(i<10){
  144. i = "0" + i;
  145. }
  146. grd_mngtposinfo.textmatrix(i,1) = "A"+i;
  147. }
  148. for(i=1; i<=parseInt(grd_choiposinfo.textmatrix(2,1)); i++){
  149. if(i<10){
  150. i = "0" + i;
  151. }
  152. grd_mngtposinfo.textmatrix(i,3) = "B"+i;
  153. }
  154. for(i=1; i<=parseInt(grd_choiposinfo.textmatrix(3,1)); i++){
  155. if(i<10){
  156. i = "0" + i;
  157. }
  158. grd_mngtposinfo.textmatrix(i,5) = "C"+i;
  159. }
  160. for(i=1; i<=parseInt(grd_choiposinfo.textmatrix(4,1)); i++){
  161. if(i<10){
  162. i = "0" + i;
  163. }
  164. grd_mngtposinfo.textmatrix(i,7) = "D"+i;
  165. }
  166. for(i=1; i<=parseInt(grd_choiposinfo.textmatrix(5,1)); i++){
  167. if(i<10){
  168. i = "0" + i;
  169. }
  170. grd_mngtposinfo.textmatrix(i,9) = "E"+i;
  171. }
  172. for(i=1; i<=grd_mngtposinfo.rows; i++){ //적용일자 지정
  173. grd_mngtposinfo.textmatrix(i,11) = model.getValue("/root/main/condition/appdd");
  174. }
  175. for(i=1; i<=grd_mngtposinfo.rows; i++){ //state(insert) 지정
  176. grd_mngtposinfo.textmatrix(i,0) = "i";
  177. }
  178. var chkFlag = "";
  179. for(var i=1; i<=getNodesetCount("/root/main/choiposlist/choiposinfo"); i++) {
  180. var sHistAppdd = model.getValue("/root/main/historylist/historyinfo["+ i +"]/appdd");
  181. if(sHistAppdd == model.getValue("/root/main/condition/appdd")) {
  182. chkFlag = "Y";
  183. }
  184. }
  185. if(chkFlag == "") {
  186. for(i=1;i<=grd_mngtposinfo.rows;i++){ //종료일자 지정
  187. grd_mngtposinfo.textmatrix(i,12) = "99991231";
  188. }
  189. } else if(chkFlag == "Y") {
  190. for(i=1;i<=grd_mngtposinfo.rows;i++){ //종료일자 지정
  191. grd_mngtposinfo.textmatrix(i,12) = model.getValue("/root/main/histappdd");
  192. }
  193. }
  194. for(i=1;i<=grd_mngtposinfo.rows;i++){ //구역지정
  195. grd_mngtposinfo.textmatrix(i,13) = "A";
  196. }
  197. for(i=1;i<=grd_mngtposinfo.rows;i++){
  198. grd_mngtposinfo.textmatrix(i,14) = "B";
  199. }
  200. for(i=1;i<=grd_mngtposinfo.rows;i++){
  201. grd_mngtposinfo.textmatrix(i,15) = "C";
  202. }
  203. for(i=1;i<=grd_mngtposinfo.rows;i++){
  204. grd_mngtposinfo.textmatrix(i,16) = "D";
  205. }
  206. for(i=1;i<=grd_mngtposinfo.rows;i++){
  207. grd_mngtposinfo.textmatrix(i,17) = "E";
  208. }
  209. crtChk = 'Y';
  210. }
  211. }
  212. /**
  213. * @group :
  214. * @ver : 2007.04.04
  215. * @by : 김진아
  216. * @---------------------------------------------------
  217. * @type : function
  218. * @access : public
  219. * @desc : mngtposinfo 입력후 저장
  220. * @param :
  221. * @return :
  222. * @---------------------------------------------------
  223. */
  224. function fInsertPos(){
  225. var sAppdd = model.getValue("/root/main/condition/appdd");
  226. var chkFlag = "";
  227. for(var i=1; i<=getNodesetCount("/root/main/choiposlist/choiposinfo"); i++) {
  228. var sHistAppdd = model.getValue("/root/main/historylist/historyinfo["+ i +"]/appdd");
  229. if(sHistAppdd == sAppdd) {
  230. chkFlag = "Y";
  231. /*
  232. var sMsg = messageBox("동일 적용일자에 투석자리가 존재합니다.", "S", "수정하시겠습니까?");
  233. if( sMsg == 7 || sMsg == 2) { //return : yes=6, no=7, 취소=2
  234. fPosinfoinit(); // 초기화
  235. return;
  236. }
  237. */
  238. messageBox("동일 적용일자에 투석자리가 존재합니다.", "E");
  239. fPosinfoinit();
  240. return;
  241. }
  242. }
  243. if(chkFlag == "") {
  244. for(var i=1; i<=getNodesetCount("/root/main/choiposlist/choiposinfo"); i++) {
  245. var sHistAppdd = model.getValue("/root/main/historylist/historyinfo["+ i +"]/appdd");
  246. if(sHistAppdd > sAppdd) {
  247. messageBox("적용일자 이후에 투석자리가 존재합니다.", "E", sAppdd+"일자의 투석자리를 생성 할 수 없습니다.");
  248. fPosinfoinit(); // 초기화
  249. return;
  250. }
  251. }
  252. }
  253. if(crtChk == 'N'){
  254. var msg = messageBox("구역별 자리수를", "C001", ""); //return : yes=6, no=7
  255. }else{
  256. fChkRsrvPat(); // 적용일자에 예약환자 존재 여부 확인
  257. if(model.getValue("/root/main/chklist/chkinfo/rsrvdd") != "") { // 해당 적용일자에 예약환자 있음.
  258. var sMsg = messageBox("예약환자가 존재합니다.", "S", "HD Scheduling화면으로 이동하시겠습니까?");
  259. if( sMsg == 6) { //return : yes=6, no=7, 취소=2
  260. modal("SMMND01100", "", 1, 1, "SMMND01100");
  261. } else {
  262. model.setValue("/root/main/chklist/chkinfo/rsrvdd", "");
  263. fPosinfoinit(); // 초기화
  264. return;
  265. }
  266. } else {
  267. for(i=1;i<=grd_mngtposinfo.rows;i++){ //적용일자 지정
  268. grd_mngtposinfo.textmatrix(i,11) = model.getValue("/root/main/condition/appdd");
  269. }
  270. model.removenode("/root/send");
  271. model.makeNode ("/root/send");
  272. model.makeValue ("/root/send/savedata",grd_mngtposinfo.getupdatedataAll("i"));
  273. submit("TXMND01801");
  274. var appdd = model.getValue("/root/main/condition/appdd");
  275. fSelectPos(appdd);
  276. fSelectHistory();
  277. crtChk = "N";
  278. var chk = "N"; //투석자리 저장 여부 확인
  279. for(i=1;i<=grd_mngtposinfo.rows;i++){
  280. if(grd_historyinfo.textmatrix(i,1) == model.getValue("/root/main/condition/appdd")){
  281. chk = "Y"; //투석자리 저장 성공
  282. }
  283. }
  284. if(chk == "Y"){
  285. messageBox("", "I001", ""); //성공 메세지
  286. }else{
  287. //messageBox("해당 적용일자에 예약환자가 존재", "E008", ""); //에약환자 존재 메세지
  288. }
  289. }
  290. }
  291. }
  292. /**
  293. * @group :
  294. * @ver : 2007.04.04
  295. * @by : 김진아
  296. * @---------------------------------------------------
  297. * @type : function
  298. * @access : public
  299. * @desc : mngtposinfo 셀 색상지정
  300. * @param :
  301. * @return :
  302. * @---------------------------------------------------
  303. */
  304. function fInsColor(){
  305. var flag=0;
  306. var co= selColor;
  307. var co_Num = selColor_Num ;
  308. var iRow = grd_mngtposinfo.row;
  309. var iCol = grd_mngtposinfo.col;
  310. var msg = grd_mngtposinfo.cellstyle("background-color", iRow,iCol, iRow, iCol);
  311. if(grd_mngtposinfo.textmatrix(iRow, iCol) != ""){
  312. if(msg == "white" || msg == "#ffffff" || msg != selColor) {
  313. grd_mngtposinfo.cellstyle("background-color", iRow, iCol, iRow, iCol) = co;
  314. if(iRow != 0 & iCol%2 != 0){
  315. grd_mngtposinfo.textmatrix(iRow, iCol+1) = co_Num;
  316. }
  317. model.refresh();
  318. } else {
  319. grd_mngtposinfo.cellstyle("background-color", iRow, iCol, iRow, iCol) = "white";
  320. if(iRow != 0 & iCol%2 != 0){
  321. grd_mngtposinfo.textmatrix(iRow, iCol+1) = 0;
  322. }
  323. }
  324. }
  325. }
  326. function fHbsag(){
  327. selColor = '#fcd2c1';
  328. selColor_Num = 1;
  329. roundrect6.visible = true ; //투석코드 선택 표시
  330. roundrect7.visible = false;
  331. roundrect8.visible = false;
  332. roundrect9.visible = false;
  333. roundrect10.visible = false;
  334. roundrect11.visible = false;
  335. }
  336. function fHbeag(){
  337. selColor = '#00ccff';
  338. selColor_Num = 2;
  339. roundrect6.visible = false;
  340. roundrect7.visible = true ;
  341. roundrect8.visible = false;
  342. roundrect9.visible = false;
  343. roundrect10.visible = false;
  344. roundrect11.visible = false;
  345. }
  346. function fHcvab(){
  347. selColor = '#fec34d';
  348. selColor_Num = 3;
  349. roundrect6.visible = false;
  350. roundrect7.visible = false;
  351. roundrect8.visible = true ;
  352. roundrect9.visible = false;
  353. roundrect10.visible = false;
  354. roundrect11.visible = false;
  355. }
  356. function fHiv(){
  357. selColor = '#ff0000';
  358. selColor_Num = 4;
  359. roundrect6.visible = false;
  360. roundrect7.visible = false;
  361. roundrect8.visible = false;
  362. roundrect9.visible = true ;
  363. roundrect10.visible = false;
  364. roundrect11.visible = false;
  365. }
  366. function fVdrl(){
  367. selColor = '#fef392';
  368. selColor_Num =5;
  369. roundrect6.visible = false;
  370. roundrect7.visible = false;
  371. roundrect8.visible = false;
  372. roundrect9.visible = false;
  373. roundrect10.visible = true ;
  374. roundrect11.visible = false;
  375. }
  376. function fEtc(){
  377. selColor = '#ccecff';
  378. selColor_Num =6;
  379. roundrect6.visible = false;
  380. roundrect7.visible = false;
  381. roundrect8.visible = false;
  382. roundrect9.visible = false;
  383. roundrect10.visible = false;
  384. roundrect11.visible = true ;
  385. }
  386. /**
  387. * @group :
  388. * @ver : 2007.04.04
  389. * @by : 김진아
  390. * @---------------------------------------------------
  391. * @type : function
  392. * @access : public
  393. * @desc : grd_mngtposinfo,grd_choiposinfo 초기화
  394. * @param :
  395. * @return :
  396. * @---------------------------------------------------
  397. */
  398. function fPosinfoinit(){
  399. //grd_mngtposinfo 초기화
  400. model.removeNodeset("/root/main/mngtposlist/mngtposinfo");
  401. grd_mngtposinfo.rebuild();
  402. //grd_choiposinfo 초기화
  403. for(i=1;i<=grd_choiposinfo.rows;i++){
  404. grd_choiposinfo.textMatrix(i,1) = 0;
  405. }
  406. // 생성일자, 적용일자 초기화
  407. var sDate = getCurrentDate();
  408. var currentdate = new Date();
  409. model.setValue("/root/main/cretdd", sDate);
  410. model.makeValue("/root/main/condition/appdd", (currentdate.getAddDate(1, "D")).getDateFormat());
  411. model.refresh();
  412. }
  413. /**
  414. * @group :
  415. * @ver : 2007.04.06
  416. * @by : 김진아
  417. * @---------------------------------------------------
  418. * @type : function
  419. * @access : public
  420. * @desc : mngtposinfo 조회
  421. * @param :
  422. * @return :
  423. * @---------------------------------------------------
  424. */
  425. function fSelectPos(appdd){
  426. //grd_mngtposinfo 초기화
  427. model.removeNodeset("/root/main/mngtposlist/mngtposinfo");
  428. grd_mngtposinfo.rebuild();
  429. //grd_choiposinfo 초기화
  430. for(i=1;i<=grd_choiposinfo.rows;i++){
  431. grd_choiposinfo.textMatrix(i,1) = 0;
  432. }
  433. model.makeValue("/root/send/reqdata/appdd", appdd);
  434. submit("TRMND01801");
  435. //조회시 저장된 셀색상 지정해주기
  436. for(i=1;i<=grd_mngtposinfo.rows;i++){
  437. for(j=1;j<=grd_mngtposinfo.cols;j++){
  438. if(grd_mngtposinfo.valueMatrix(i,j+1) != null){
  439. if(grd_mngtposinfo.valueMatrix(i,j+1)=='1'){
  440. grd_mngtposinfo.cellstyle("background-color", i, j, i, j) = '#fcd2c1';
  441. }
  442. else if(grd_mngtposinfo.valueMatrix(i,j+1)=='2'){
  443. grd_mngtposinfo.cellstyle("background-color", i, j, i, j) = '#00ccff';
  444. }
  445. else if(grd_mngtposinfo.valueMatrix(i,j+1)=='3'){
  446. grd_mngtposinfo.cellstyle("background-color", i, j, i, j) = '#fec34d';
  447. }
  448. else if(grd_mngtposinfo.valueMatrix(i,j+1)=='4'){
  449. grd_mngtposinfo.cellstyle("background-color", i, j, i, j) = '#ff0000';
  450. }
  451. else if(grd_mngtposinfo.valueMatrix(i,j+1)=='5'){
  452. grd_mngtposinfo.cellstyle("background-color", i, j, i, j) = '#fef392';
  453. }
  454. else if(grd_mngtposinfo.valueMatrix(i,j+1)=='6'){
  455. grd_mngtposinfo.cellstyle("background-color", i, j, i, j) = '#ccecff';
  456. }
  457. }//end of if
  458. }//end of for(j)
  459. }// end of for(i)
  460. model.setValue("/root/main/histappdd", model.getValue("/root/main/mngtposlist/mngtposinfo[1]/dialtodt")); // 종료일자 설정
  461. model.refresh();
  462. }
  463. /**
  464. * @group :
  465. * @ver : 2007.04.11
  466. * @by : 김진아
  467. * @---------------------------------------------------
  468. * @type : function
  469. * @access : public
  470. * @desc : 투석자리 삭제 버튼 클릭 시
  471. * @param :
  472. * @return :
  473. * @---------------------------------------------------
  474. */
  475. function fDeletePos(){
  476. var msg = messageBox("투석자리를", "Q001", ""); //return : yes=6, no=7
  477. //투석자리 삭제
  478. if(msg == 6){
  479. for(i=1;i<=grd_mngtposinfo.rows;i++){ //state(delete) 지정
  480. grd_mngtposinfo.textmatrix(i,0) = "d";
  481. }
  482. crtChk = 'Y';
  483. model.makeValue("/root/send/savedata",grd_mngtposinfo.getupdatedataAll("i"));
  484. submit("TXMND01801");
  485. //fInsertPos();
  486. var appdd = model.getValue("/root/main/condition/appdd");
  487. fSelectPos(appdd);
  488. fSelectHistory();
  489. }
  490. }
  491. /**
  492. * @group :
  493. * @ver : 2007.04.11
  494. * @by : 김진아
  495. * @---------------------------------------------------
  496. * @type : function
  497. * @access : public
  498. * @desc : History선택시 해당 데이타 조회
  499. * @param :
  500. * @return :
  501. * @---------------------------------------------------
  502. */
  503. function fChioHis(){
  504. var iRow = grd_historyinfo.row;
  505. var appdd = grd_historyinfo.textMatrix(iRow,1);
  506. model.setValue("/root/main/condition/appdd", appdd);
  507. crtChk = 'Y';
  508. model.refresh();
  509. var appdd = model.getValue("/root/main/condition/appdd");
  510. fSelectPos(appdd);
  511. }