SMMNO00800.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551
  1. /*
  2. 외래기준자료 관리(SMMNO00800.xfm - JScript )
  3. - Version :
  4. 1) : Ver.1.00.01
  5. */
  6. var xBaseCodeListPath = "/root/main/basecodelist/basecodelistinfo";
  7. var xBaseCodeListBKPath = "/root/temp/basecodelist/basecodelistinfo";
  8. var xSMSCodeListPath = "/root/main/smscodelist/smscodelistinfo";
  9. var xSMSCodeListBKPath = "/root/temp/smscodelist/smscodelistinfo";
  10. var xDoctListPath = "/root/main/doctlist/doctlistinfo";
  11. var g_initGrdData; // 리스트 관련 초기 Instance값
  12. /**
  13. * @group :
  14. * @ver : 2007.07.04
  15. * @by : 김병국
  16. * @---------------------------------------------------
  17. * @type : function
  18. * @access : public
  19. * @desc : 화면 초기화
  20. * @param :
  21. * @return :
  22. * @---------------------------------------------------
  23. */
  24. function fInitialize(){
  25. model.removenodeset(xBaseCodeListPath);
  26. model.removeNodeset("/root/hidden/orddeptlist/dept");
  27. var instcd = getUserInfo("dutplceinstcd");
  28. var standard_yn = "rcptuseyn";
  29. var ord_deptflag = 'X';
  30. var rslt_ref = "/root/hidden/orddeptlist";
  31. var sort_field = "depthngnm";
  32. var sort_method = "asc";
  33. var dt = getCurrentDate();
  34. //zbcfGetDeptCodeList(instcd, standard_yn, ord_deptflag, rslt_ref, "depthngnm", "asc"); // 진료과 기준자료 조회
  35. //zsdfGetOutOrdDeptList( instcd, rslt_ref, sort_field, sort_method, dt );
  36. // 간호외래진료부서콤보
  37. zsdfGetCareOutOrderDepartmentList(instcd, rslt_ref, dt);
  38. model.setValue("/root/main/cond/orddeptcd", getUserInfo("dutplcecd")); // 근무지부서코드
  39. if(checkOpener()){
  40. opener.javascript.setParameter("SMMNO00800_ReturnFlag","");
  41. var sParamMsg = opener.javascript.getParameter("SMMNO00800_Param");
  42. if (sParamMsg == "O") // SMS전송화면에 open한 경우
  43. fClickTab("2"); // 상용문구관리
  44. else
  45. fClickTab("1"); // 예약 Remark
  46. } else {
  47. fClickTab("1"); // 예약 Remark
  48. }
  49. }
  50. /**
  51. * @group :
  52. * @ver : 2007.07.04
  53. * @by : 김병국
  54. * @---------------------------------------------------
  55. * @type : function
  56. * @access : public
  57. * @desc : Tab을 클릭시 처리
  58. * @param : tab : tab Object
  59. * @return :
  60. * @---------------------------------------------------
  61. */
  62. function fClickTab(tab) {
  63. var GrdControl = null;
  64. if (tab == "1") {
  65. // 예약 Remark
  66. g_initGrdData = "grd_baselist";
  67. model.setValue("/root/main/cond/supbasetypecd", "A1");
  68. btn_Remark.selected = true;
  69. model.toggle("Remark");
  70. GrdControl = document.controls("grd_baselist");
  71. fBaseCodeReset(xBaseCodeListPath, GrdControl); // 해당 Grid Refresh
  72. model.refresh();
  73. fBaseCodeSearch(""); // 기준 코드 조회
  74. grd_baselist.refresh();
  75. } else if (tab == "2") {
  76. // SMS 상용구 - 중분류
  77. g_initGrdData = "grd_basesmslist";
  78. model.setValue("/root/main/cond/supbasetypecd", "O");
  79. btn_Sms.selected = true;
  80. model.toggle("SMS");
  81. //model.setValue("/root/main/cond/orddeptcd", getUserInfo("dutplcecd"));
  82. cmb_orddeptcd.refresh();
  83. //GrdControl = document.controls("grd_basesmslist");
  84. //fBaseCodeReset(xSMSCodeListPath, GrdControl); // 해당 Grid Refresh
  85. GrdControl = document.controls("grd_baselist");
  86. fBaseCodeReset(xBaseCodeListPath, GrdControl); // 해당 Grid Refresh
  87. model.refresh();
  88. fBaseCodeSearch("B"); // 기준 코드 조회
  89. model.setFocus("input2");
  90. } else if (tab == "3") {
  91. // 의사별 예약 알림
  92. g_initGrdData = "grd_doctlist";
  93. btn_Doct.selected = true;
  94. model.toggle("Doct");
  95. GrdControl = document.controls("grd_doctlist");
  96. fBaseCodeReset(xDoctListPath, GrdControl); // 해당 Grid Refresh
  97. fDeptChanged();
  98. model.refresh();
  99. }
  100. }
  101. /**
  102. * @group :
  103. * @ver : 2007.07.04
  104. * @by : 김병국
  105. * @---------------------------------------------------
  106. * @type : function
  107. * @access : public
  108. * @desc : SMS 상용구의 중분류에서 기준코드조회
  109. * @param :
  110. * @return :
  111. * @---------------------------------------------------
  112. */
  113. function fSmsBaseCodeSearch() {
  114. var iRow = grd_smslist.row;
  115. if(iRow.row <= 0) {
  116. return;
  117. }
  118. var GrdControl = document.controls("grd_baselist");
  119. //fBaseCodeReset(xBaseCodeListPath, GrdControl); // 해당 Grid Refresh
  120. model.setValue("/root/main/cond/supbasetypecd", model.getValue(xSMSCodeListPath+"["+iRow+"]/basetypecd"));
  121. fBaseCodeSearch(""); // 기준 코드 조회
  122. grd_basesmslist.refresh();
  123. }
  124. /**
  125. * @group :
  126. * @ver : 2007.07.04
  127. * @by : 김병국
  128. * @---------------------------------------------------
  129. * @type : function
  130. * @access : public
  131. * @desc : 기준 Code 리스트 초기화
  132. * @param : grid : grid Name
  133. * @return :
  134. * @---------------------------------------------------
  135. */
  136. function fBaseCodeReset(pPath, GrdControl) {
  137. model.removeNodeset(pPath);
  138. GrdControl.Rebuild();
  139. }
  140. /**
  141. * @group :
  142. * @ver : 2007.07.04
  143. * @by : 김병국
  144. * @---------------------------------------------------
  145. * @type : function
  146. * @access : public
  147. * @desc : 줄추가
  148. * @param :
  149. * @return :
  150. * @---------------------------------------------------
  151. */
  152. function fAddRow(pTab, pGrd){
  153. var iSmsRow = "";
  154. if(pTab == "SMS"){
  155. iSmsRow = grd_smslist.row;
  156. if(iSmsRow <= 0){
  157. messageBox("분류를 선택하지 ","E007");
  158. return;
  159. }
  160. }
  161. pGrd.addRow();
  162. var iRow = pGrd.row;
  163. if(pTab == "SMS"){
  164. model.setValue(xBaseCodeListPath+"["+iRow+"]/baseclsflag","O"); // 기준분류코드
  165. model.setValue(xBaseCodeListPath+"["+iRow+"]/supbasetypecd", model.getValue(xSMSCodeListPath+"["+iSmsRow+"]/basetypecd")); // 분류상위코드
  166. model.setValue(xBaseCodeListPath+"["+iRow+"]/cdcls", model.getValue(xSMSCodeListPath+"["+iSmsRow+"]/basetypecd")); // 코드분류
  167. model.setValue(xBaseCodeListPath+"["+iRow+"]/orddeptcd", model.getValue(xSMSCodeListPath+"["+iSmsRow+"]/orddeptcd")); // 진료부서코드
  168. }else if(pTab == "Remark"){
  169. model.setValue(xBaseCodeListPath+"["+iRow+"]/baseclsflag","O"); // 기준분류코드
  170. model.setValue(xBaseCodeListPath+"["+iRow+"]/supbasetypecd", model.getValue("/root/main/cond/supbasetypecd")); // 분류상위코드
  171. model.setValue(xBaseCodeListPath+"["+iRow+"]/cdcls", model.getValue("/root/main/cond/supbasetypecd")); // 코드분류
  172. model.setValue(xBaseCodeListPath+"["+iRow+"]/orddeptcd", model.getValue("/root/main/cond/orddeptcd")); // 진료부서코드
  173. }
  174. }
  175. /**
  176. * @group :
  177. * @ver : 2007.07.04
  178. * @by : 김병국
  179. * @---------------------------------------------------
  180. * @type : function
  181. * @access : public
  182. * @desc : 줄삭제
  183. * @param :
  184. * @return :
  185. * @---------------------------------------------------
  186. */
  187. /*function fDelRow(pTab, pGrd){
  188. var iRow = pGrd.row;
  189. if(iRow < 1) return;
  190. var sStatus = 0;
  191. var sBasetypecd = model.getValue(xBaseCodeListPath+"["+iRow+"]/basetypecd");
  192. var sBasetypecd_bk = model.getValue(xBaseCodeListBKPath+"[basetypecd ='"+sBasetypecd+"']/basetypecd");
  193. var sTypenm_bk = model.getValue(xBaseCodeListBKPath+"[basetypecd ='"+sBasetypecd+"']/typenm");
  194. sStatus = pGrd.rowStatus(iRow);
  195. if(sStatus == 1 || sStatus == 3){ // insert
  196. pGrd.deleteRow(iRow);
  197. }else if(sStatus == 4){ // delete
  198. if(model.getValue(xBaseCodeListPath+"["+iRow+"]/basetypecd") != sBasetypecd_bk ||
  199. model.getValue(xBaseCodeListPath+"["+iRow+"]/typenm") != sTypenm_bk ){
  200. pGrd.rowStatus(iRow) = 2;
  201. }else{
  202. pGrd.rowStatus(iRow) = 0;
  203. }
  204. }else{
  205. pGrd.rowStatus(iRow) = 4;
  206. }
  207. }*/
  208. function fDelRow(pTab, pGrd){
  209. var iRow = pGrd.row;
  210. if(iRow < 1) return;
  211. var sStatus = 0;
  212. var iFirstRow = pGrd.selectedRow(0);
  213. var iLastRow = pGrd.selectedRow(pGrd.selectedRows-1);
  214. for(var i = iLastRow;i >= iFirstRow ;i--){
  215. var sBasetypecd = model.getValue(xBaseCodeListPath+"["+i+"]/basetypecd");
  216. var sBasetypecd_bk = model.getValue(xBaseCodeListBKPath+"[basetypecd ='"+sBasetypecd+"']/basetypecd");
  217. var sTypenm_bk = model.getValue(xBaseCodeListBKPath+"[basetypecd ='"+sBasetypecd+"']/typenm");
  218. sStatus = pGrd.rowStatus(i);
  219. if(sStatus == 1 || sStatus == 3){ // insert
  220. pGrd.deleteRow(i,false);
  221. }else if(sStatus == 4){ // delete
  222. if(model.getValue(xBaseCodeListPath+"["+i+"]/basetypecd") != sBasetypecd_bk ||
  223. model.getValue(xBaseCodeListPath+"["+i+"]/typenm") != sTypenm_bk ){
  224. pGrd.rowStatus(i) = 2; //update
  225. }else{
  226. pGrd.rowStatus(i) = 0;
  227. }
  228. }else{
  229. pGrd.rowStatus(i) = 4;
  230. }
  231. }
  232. pGrd.refresh();
  233. }
  234. /**
  235. * @group :
  236. * @ver : 2007.07.04
  237. * @by : 김병국
  238. * @---------------------------------------------------
  239. * @type : function
  240. * @access : public
  241. * @desc : 항목별의 문구내용 조회
  242. * @param :
  243. * @return :
  244. * @---------------------------------------------------
  245. */
  246. function fBaseCodeSearch(typegubn){
  247. orddeptcd = model.getValue("/root/main/cond/orddeptcd");
  248. if(orddeptcd == ""){
  249. messageBox("진료과를 선택하지 ","E007");
  250. return;
  251. }
  252. var supbasetypecd = model.getValue("/root/main/cond/supbasetypecd");
  253. var baseclsflag = "O"; // 외래기준자료
  254. model.setValue("/root/main/cond/supbasetypecd", supbasetypecd);
  255. model.setValue("/root/main/cond/baseclsflag", baseclsflag);
  256. model.setValue("/root/main/cond/basetypecd", typegubn);
  257. model.copynode("/root/send/req", "/root/main/cond");
  258. if(typegubn != ""){
  259. if(submit("TRMNO00801")){ // 중분류 조회
  260. model.copynode("/root/temp/smscodelist","/root/main/smscodelist");
  261. }
  262. }else{
  263. if(submit("TRMNO00800")){ // 항목별의 문구내용 조회
  264. model.copynode("/root/temp/basecodelist","/root/main/basecodelist");
  265. }
  266. }
  267. //model.removenode("/root/send/req");
  268. }
  269. /**
  270. * @group :
  271. * @ver : 2007.07.04
  272. * @by : 김병국
  273. * @---------------------------------------------------
  274. * @type : function
  275. * @access : public
  276. * @desc : 항목 저장
  277. * @param :
  278. * @return :
  279. * @---------------------------------------------------
  280. */
  281. function fSave(pTab, pGrd){
  282. for(var iRow = pGrd.fixedrows; iRow <= pGrd.rows - pGrd.fixedrows; iRow++){
  283. if(model.getValue(xBaseCodeListPath+"["+iRow+"]/typenm") == ""){
  284. messageBox("상용문구의 내용을 ","C001");
  285. return;
  286. }
  287. }
  288. var resultState = pGrd.getUpdateData();
  289. if(getArrayData(resultState,1,0) == ""){
  290. messageBox("저장할 데이터를 입력하지 ","E007");
  291. return;
  292. }
  293. model.makeValue("/root/send/basecodelistinfo",pGrd.getUpdateData());
  294. if(submit("TXMNO00800")){
  295. model.copynode("/root/temp/basecodelist","/root/main/basecodelist");
  296. }
  297. model.removenode("/root/send/basecodelistinfo");
  298. }
  299. /**
  300. * @group :
  301. * @ver : 2007.07.04
  302. * @by : 김병국
  303. * @---------------------------------------------------
  304. * @type : function
  305. * @access : public
  306. * @desc : SMS 상용구의 중분류 저장
  307. * @param :
  308. * @return :
  309. * @---------------------------------------------------
  310. */
  311. /*function fClsFlagSave(){
  312. if(model.getValue("/root/item") == ""){
  313. messageBox("분류명을 입력하지 ","E007");
  314. return;
  315. }
  316. var sRtnMsg = messageBox("분류를 ", "Q008");
  317. if(sRtnMsg != 6) return;
  318. grd_smslist.addRow();
  319. var iRow = grd_smslist.row;
  320. model.setValue(xSMSCodeListPath+"["+iRow+"]/basetypecd","B"); // 기준형태코드
  321. model.setValue(xSMSCodeListPath+"["+iRow+"]/baseclsflag","O"); // 기준분류코드
  322. model.setValue(xSMSCodeListPath+"["+iRow+"]/supbasetypecd", "O"); // 분류상위코드
  323. model.setValue(xSMSCodeListPath+"["+iRow+"]/typenm", model.getValue("/root/item")); // 분류명
  324. model.setValue(xSMSCodeListPath+"["+iRow+"]/cdcls", "O"); // 코드분류
  325. model.setValue(xSMSCodeListPath+"["+iRow+"]/orddeptcd", model.getValue("/root/main/cond/orddeptcd")); // 진료부서코드
  326. var resultState = grd_smslist.getUpdateData();
  327. if(getArrayData(resultState,1,0) == ""){
  328. messageBox("저장할 데이터를 입력하지 ","E007");
  329. return;
  330. }
  331. model.makeValue("/root/send/basecodelistinfo",grd_smslist.getUpdateData());
  332. if(submit("TXMNO00801")){
  333. model.setValue("/root/item","");
  334. model.removenode("/root/send/basecodelistinfo");
  335. model.copynode("/root/temp/basecodelist","/root/main/smscodelist");
  336. model.refresh();
  337. }
  338. }*/
  339. /**
  340. * @group :
  341. * @ver : 2009.01.12
  342. * @by : 김양수
  343. * @---------------------------------------------------
  344. * @type : function
  345. * @access : public
  346. * @desc : SMS 상용구의 중분류 추가
  347. * @param :
  348. * @return :
  349. * @---------------------------------------------------
  350. */
  351. function fClsFlagAddRow(){
  352. if(model.getValue("/root/item") == ""){
  353. messageBox("분류명을 입력하지 ","E007");
  354. return;
  355. }
  356. var sRtnMsg = messageBox("분류를 ", "Q008");
  357. if(sRtnMsg != 6) return;
  358. grd_smslist.addRow();
  359. var iRow = grd_smslist.row;
  360. model.setValue(xSMSCodeListPath+"["+iRow+"]/basetypecd","B"); // 기준형태코드
  361. model.setValue(xSMSCodeListPath+"["+iRow+"]/baseclsflag","O"); // 기준분류코드
  362. model.setValue(xSMSCodeListPath+"["+iRow+"]/supbasetypecd", "O"); // 분류상위코드
  363. model.setValue(xSMSCodeListPath+"["+iRow+"]/typenm", model.getValue("/root/item")); // 분류명
  364. model.setValue(xSMSCodeListPath+"["+iRow+"]/cdcls", "O"); // 코드분류
  365. model.setValue(xSMSCodeListPath+"["+iRow+"]/orddeptcd", model.getValue("/root/main/cond/orddeptcd")); // 진료부서코드
  366. }
  367. /**
  368. * @group :
  369. * @ver : 2009.01.12
  370. * @by : 김양수
  371. * @---------------------------------------------------
  372. * @type : function
  373. * @access : public
  374. * @desc : SMS 상용구의 중분류 저장
  375. * @param :
  376. * @return :
  377. * @---------------------------------------------------
  378. */
  379. function fClsFlagSave(){
  380. var sStatus = 0;
  381. for(var iRow = grd_smslist.fixedrows; iRow <= grd_smslist.rows - grd_smslist.fixedrows; iRow++){
  382. sStatus = grd_smslist.rowStatus(iRow);
  383. if(sStatus == 4){
  384. var sRtnMsg = messageBox("분류삭제시 해당분류의 내용도 삭제됩니다 ", "Q001");
  385. if(sRtnMsg != 6){
  386. grd_smslist.rowStatus(iRow) = 0;
  387. return;
  388. }
  389. }
  390. }
  391. var resultState = grd_smslist.getUpdateData();
  392. if(getArrayData(resultState,1,0) == ""){
  393. messageBox("저장할 데이터를 입력하지 ","E007");
  394. return;
  395. }
  396. model.makeValue("/root/send/basecodelistinfo",grd_smslist.getUpdateData());
  397. if(submit("TXMNO00801")){
  398. model.setValue("/root/item","");
  399. model.removenode("/root/send/basecodelistinfo");
  400. model.copynode("/root/temp/basecodelist","/root/main/smscodelist");
  401. model.copynode("/root/temp/smscodelist","/root/main/smscodelist");
  402. model.removenodeset("/root/main/basecodelist/basecodelistinfo");
  403. model.refresh();
  404. }
  405. }
  406. /**
  407. * @group :
  408. * @ver : 2009.01.12
  409. * @by : 김양수
  410. * @---------------------------------------------------
  411. * @type : function
  412. * @access : public
  413. * @desc : SMS 상용구의 중분류 행삭제
  414. * @param :
  415. * @return :
  416. * @---------------------------------------------------
  417. */
  418. function fClsFlagDelRow(){
  419. var iRow = grd_smslist.row;
  420. if(iRow < 1) return;
  421. var sStatus = 0;
  422. var sBasetypecd = model.getValue(xSMSCodeListPath+"["+iRow+"]/basetypecd");
  423. var sBasetypecd_bk = model.getValue(xSMSCodeListBKPath+"[basetypecd ='"+sBasetypecd+"']/basetypecd");
  424. var sTypenm_bk = model.getValue(xSMSCodeListBKPath+"[basetypecd ='"+sBasetypecd+"']/typenm");
  425. sStatus = grd_smslist.rowStatus(iRow);
  426. if(sStatus == 1 || sStatus == 3){ // insert
  427. grd_smslist.deleteRow(iRow,false);
  428. }else if(sStatus == 4){ // delete
  429. if(model.getValue(xSMSCodeListPath+"["+iRow+"]/basetypecd") != sBasetypecd_bk ||
  430. model.getValue(xSMSCodeListPath+"["+iRow+"]/typenm") != sTypenm_bk ){
  431. grd_smslist.rowStatus(iRow) = 2;
  432. }else{
  433. grd_smslist.rowStatus(iRow) = 0;
  434. }
  435. }else{
  436. grd_smslist.rowStatus(iRow) = 4;
  437. }
  438. grd_smslist.refresh();
  439. }
  440. /**
  441. * @group :
  442. * @ver : 2007.07.04
  443. * @by : 김병국
  444. * @---------------------------------------------------
  445. * @type : function
  446. * @access : public
  447. * @desc : 진료과 선택한 경우 의사 조회
  448. * @param :
  449. * @return :
  450. * @---------------------------------------------------
  451. */
  452. function fDeptChanged(){
  453. //------(20100708 경북대)
  454. //if(model.getValue("/root/main/cond/orddeptcd") <= ""){
  455. // return ;
  456. //}
  457. //로그인을 했을경우 진료과콤보에는 없으나 로그인부서로 바로 설정하므로
  458. //부서명칭으로 체크한다.
  459. if(cmb_orddept.label != ""){
  460. model.resetInstanceNode("/root/main/condition/orddrid");
  461. model.makeValue("/root/send/req/orddeptcd", model.getValue("/root/main/cond/orddeptcd"));
  462. submit("TRMNO00802");
  463. grd_doctlist.refresh();
  464. }
  465. //------(20100708 경북대)
  466. }
  467. /**
  468. * @group :
  469. * @ver : 2007.07.04
  470. * @by : 김병국
  471. * @---------------------------------------------------
  472. * @type : function
  473. * @access : public
  474. * @desc : 의사별 예약 알림 정보를 저장
  475. * @param :
  476. * @return :
  477. * @---------------------------------------------------
  478. */
  479. function fDoctSave(){
  480. var resultState = grd_doctlist.getUpdateData();
  481. if(getArrayData(resultState,1,0) == ""){
  482. messageBox("저장할 데이터를 입력하지 ","E007");
  483. return;
  484. }
  485. model.makeValue("/root/send/doctlistinfo",grd_doctlist.getUpdateData());
  486. submit("TXMNO00802");
  487. model.removenode("/root/send/doctlistinfo");
  488. }