SPMMO30000.xjs 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[/***************************************************************************************
  3. * System Name : KNUH2.0
  4. * Job Name : EMR
  5. * Creator :
  6. * Make Date : 2015-01-25
  7. * Description :
  8. *---------------------------------------------------------------------------------------
  9. * Modify Date Modifier Modify Description
  10. *---------------------------------------------------------------------------------------
  11. * 2015-01-25 Live Converter TF->XP
  12. *
  13. *---------------------------------------------------------------------------------------
  14. ****************************************************************************************/
  15. //당직스케줄 그리드의 수정상태값
  16. var isEdited = "N";
  17. var orddept = null;
  18. //당직기준시간
  19. var scheftm = "0830";//0900
  20. var schettm = "0829";//0859
  21. // 이전 진료과 코드
  22. var preOrddeptcd = null;
  23. var arErrorCode = new HashArray();
  24. //=======================================================================================
  25. // Function
  26. //---------------------------------------------------------------------------------------
  27. /****************************************************************************************
  28. * Function : fInit
  29. * Description : 화면초기화
  30. * Argument :
  31. * return type :
  32. * Creator :
  33. ****************************************************************************************/
  34. function fInit(chngMonth){
  35. //당직스케줄 기준시간관리 기관별로 관리
  36. var pCode = "'175'"; // 조회할 CdGrupID 코드정보
  37. var pDate = utlf_getCurrentDate(); // 조회기준일자
  38. fGetNursHardCdInfo(pCode, pDate); // CareCom.xjs
  39. var cdnm = ds_codelist.getColumn(ds_codelist.findRowExpr("cdgrupid == '175' && cdid == '"+sysf_getUserInfo("dutplceinstcd")+"'"),"cdnm");
  40. if(!utlf_isNull(cdnm) && cdnm.split("|").length > 0){
  41. scheftm = cdnm.split("|")[0]; //당직시작시간
  42. schettm = cdnm.split("|")[1]; //당직종료시간
  43. }
  44. var curdd = "";
  45. if (utlf_isNull(chngMonth)) {
  46. curdd = utlf_getCurrentDate();
  47. } else {
  48. curdd = ds_cond.getColumn(0,"srchdd");
  49. }
  50. //타이틀 헤더세팅
  51. cpt_worktitle.text = curdd.substr(0, 4) + "년 " + curdd.substr(4, 2) + "월 당직리스트";
  52. dsf_createDs("ds_send");
  53. dsf_makeValue(ds_send,"srchdd","string", curdd);
  54. dsf_makeValue(ds_send,"srchym","string", curdd.substr(0, 6));
  55. //진료과 불러오기
  56. var instcd = sysf_getUserInfo("dutplceinstcd");
  57. var standard_yn = "orduseyn";
  58. var ord_deptflag = "D";
  59. var rslt_ref = "ds_init_deptlist";
  60. var sort_field = "depthngnm";
  61. var sort_method = "asc";
  62. appf_getDeptCodeList(instcd,"orduseyn","D","depthngnm","","","","","ds_init_deptlist",true,"");
  63. //조회조건 초기화
  64. ds_main_titleinfo.clear();
  65. ds_init_deptpartinfo_partlist.clear();
  66. ds_cond.clear();
  67. dsf_makeValue(ds_cond,"srchdd", "string", curdd);
  68. dsf_makeValue(ds_cond,"srchym", "string", curdd.substr(0, 6));
  69. dsf_makeValue(ds_cond,"orddeptcd", "string", sysf_getUserInfo("dutplcecd"));
  70. dsf_makeValue(ds_cond,"deptpartinfo","string", "");
  71. ds_temp.clear();
  72. dsf_makeValue(ds_temp,"orddeptcd","string","");
  73. var orddeptcd = ds_cond.getColumn(0,"orddeptcd");
  74. //선택된 진료과의 의사리스트조회
  75. fGetDrInfo(orddeptcd);
  76. //기준시간 셋팅
  77. dsf_makeValue(ds_main_titleinfo,"fromtm","string",scheftm);
  78. dsf_makeValue(ds_main_titleinfo,"totm", "string",schettm);
  79. // op_fromtm.value = scheftm;
  80. // op_totm.value = schettm;
  81. }
  82. /****************************************************************************************
  83. * Function : fGetDrInfo
  84. * Description : 선택된 진료과의 의사리스트조회
  85. * Argument : orddeptcd : 진료과코드
  86. * return type :
  87. * Creator :
  88. ****************************************************************************************/
  89. function fGetDrInfo(orddeptcd){
  90. if(utlf_isNull(orddeptcd)){
  91. orddeptcd = ds_cond.getColumn(0,"orddeptcd");
  92. }
  93. // 진료과 정보가 변경 되었는지 체크. start
  94. // 2010.04.01
  95. // 김광성- kskim
  96. var preorddeptcd = ds_temp.getColumn(0,"orddeptcd");
  97. if( utlf_isNull(preorddeptcd) || preorddeptcd != orddeptcd ) {
  98. ds_cond.setColumn(0,"deptpartinfo",""); // 진료과 정보가 바뀌었기 때문에 파트정보 초기화
  99. ds_temp.setColumn(0,"orddeptcd",orddeptcd);
  100. }
  101. // 진료과 정보가 변경 되었는지 체크. end
  102. ds_send.clear();
  103. dsf_makeValue(ds_send,"orddeptcd","string", orddeptcd);
  104. dsf_makeValue(ds_send,"srchdd", "string", ds_cond.getColumn(0,"srchdd"));
  105. var oParam = {};
  106. oParam.id = "TRMMO30001";
  107. oParam.service = "prcpmngtapp.ErMngt";
  108. oParam.method = "reqGetDrInfo";
  109. oParam.inds = "searchinfo=ds_send";
  110. oParam.outds = "ds_main_drinfolist=drinfolist";
  111. oParam.async = false;
  112. oParam.callback = "cf_TRMMO30001";
  113. tranf_submit(oParam);
  114. if(arErrorCode.pop("TRMMO30001") < 0){
  115. sysf_messageBox("진료과별 당직대상자 조회를 실패하였습니다.", "E999");
  116. return false;
  117. }
  118. }
  119. /****************************************************************************************
  120. * Function : cf_TRMMO30001
  121. * Description : TRMMO30001 콜백함수
  122. * Argument :
  123. * return type :
  124. * Creator :
  125. ****************************************************************************************/
  126. function cf_TRMMO30001(sSvcId, nErrorCode, sErrorMsg) {
  127. arErrorCode.push(sSvcId, nErrorCode);
  128. }
  129. /** carecom.xjs 파일 내에 있음. 추후 이동예정
  130. * @group :
  131. * @ver : 2009.03.20, 2009.04.15
  132. * @by : 성미연 , 김진아
  133. * @---------------------------------------------------
  134. * @type : function
  135. * @access : public
  136. * @desc : 간호 하드코딩 정보조회
  137. * @param : pCode : 조회할 CdGrupID 코드정보, 여러개 조회할 경우 ,(콤마)로 구분한다.
  138. 예) "001", "002", "003"
  139. pDate : 조회기준일자(형식:YYYYMMDD)
  140. * @return :
  141. * @---------------------------------------------------
  142. */
  143. function fGetNursHardCdInfo(pCode, pDate){
  144. dsf_createDs("ds_codelist");
  145. dsf_createDs("ds_send");
  146. dsf_makeValue(ds_send,"cdgrupid","string",pCode); // 조회할 CdGrupID 코드정보
  147. dsf_makeValue(ds_send,"srchdd", "string",pDate); // 조회기준일자
  148. // submit("TRMNW00001",false); // wardcareweb
  149. var oParam = {};
  150. oParam.id = "TRMNW00001";
  151. oParam.service = "wardcareapp.WardCareMngt";
  152. oParam.method = "reqGetNursHardCdInfo";
  153. oParam.inds = "req=ds_send";
  154. oParam.outds = "ds_codelist=codelist";
  155. oParam.async = false;
  156. oParam.callback = "";
  157. tranf_submit(oParam);
  158. }
  159. /****************************************************************************************
  160. * Function : isScheduleRefresh
  161. * Description : 그리드가 변경상태인지 조회한다.
  162. * Argument : isClose : 실행후 창을 닫을지 여부(true/false)
  163. * return type :
  164. * Creator :
  165. ****************************************************************************************/
  166. function isScheduleRefresh(isClose){
  167. var drStr;
  168. for(var i = 0; i < ds_main_workerinfolist.rowcount; i++){
  169. if(i < ds_orgscheinfo_workerinfolist.rowcount) {
  170. if(dsf_compareDsRow(ds_main_workerinfolist,ds_orgscheinfo_workerinfolist,i)) {
  171. isEdited = "Y";
  172. /* drStr += model.getValue("/root/main/workerinfo/workerinfolist[" + i + "]/workdd") + "일자 변경";*/
  173. drStr += ds_main_workerinfolist.getColumn(i,"workdd")+"일자 변경";
  174. break;
  175. }
  176. }
  177. }
  178. if(isEdited == "Y"){
  179. //20090703 dhkim 창을 닫을때와 새로 조회할때의 메세지를 다르게 구성 Q003(계속진행하시겠습니까?)
  180. if(isClose){
  181. var saveYn = sysf_messageBox("수정하신 스케줄을 저장하지 않고 창을 닫으시겠습니까?", "Q");//Q: 6:예, 7:아니오.
  182. }else{
  183. var saveYn = sysf_messageBox("수정하신 스케줄을 저장하지 않고 새로운 내역을", "Q005");//Q005:조회하시겠습니까? 6:예, 7:아니오.
  184. }
  185. if(saveYn == 6){
  186. return "Y";
  187. }else{
  188. return "N";
  189. }
  190. }
  191. }
  192. /****************************************************************************************
  193. * Function : dsf_compareDsRow
  194. * Description : 같은 데이터셋의 로우를 비교하여 데이터까지 같은지 확인
  195. * Argument : objDsSrc : 원본데이터셋
  196. * : objDsTrgt : 대상데이터셋
  197. * : nRowSrc : 원본 로우
  198. * : nRowTrg : 대상 로우
  199. * return type :
  200. * Creator :
  201. ****************************************************************************************/
  202. function dsf_compareDsRow(objDsSrc,objDsTrgt,nRowSrc,nRowTrg) {
  203. // MMOCommon.xjs : lf_compareNodeVal 참조 컬럼정보 다르면 true
  204. if(lf_compareNodeVal(objDsTrgt,objDsSrc)) return true;
  205. if(utlf_isNull(nRowSrc)) {
  206. var num1 = 0;
  207. var num2 = 0;
  208. } else if(utlf_isNull(nRowTrg)) {
  209. var num1 = nRowSrc;
  210. var num2 = nRowSrc;
  211. } else {
  212. var num1 = nRowSrc;
  213. var num2 = nRowTrg;
  214. }
  215. // 컬럼 비교해서 값이 다르면 ture
  216. for(var i = 0 ; i < objDsSrc.colcount; i++) {
  217. if(objDsSrc.getColumn(num1,i) != objDsTrgt.getColumn(num2,i)) return true;
  218. }
  219. // 다 같으면 false
  220. return false;
  221. }
  222. /****************************************************************************************
  223. * Function : fGetDeptDetlFlag
  224. * Description : 진료과별 파트정보 조회
  225. * Argument :
  226. * return type :
  227. * Creator :
  228. ****************************************************************************************/
  229. function fGetDeptDetlFlag() {
  230. // var ref = "/root/cond";
  231. // var rstRef = "/root/init/deptpartinfo";
  232. //var orddeptcd = model.getValue("/root/cond/orddeptcd");
  233. var deptpartinfo = ds_cond.getColumn(0,"deptpartinfo");
  234. var srchym = ds_cond.getColumn(0,"srchym");
  235. var srchymfirstday = srchym.concat("01");
  236. var srchymlastday = srchym.concat(fGetLastDay(srchym));
  237. dsf_makeValue(ds_cond,"srchymfirstday","string",srchymfirstday);
  238. dsf_makeValue(ds_cond,"srchymlastday", "string",srchymlastday);
  239. var oParam = {};
  240. oParam.id = "TRMMO30002";
  241. oParam.service = "prcpmngtapp.ErMngt";
  242. oParam.method = "reqGetDeptDetlInfo";
  243. oParam.inds = "req=ds_cond";
  244. oParam.outds = "ds_init_deptpartinfo_partlist=partlist";
  245. oParam.async = false;
  246. oParam.callback = "cf_TRMMO30002";
  247. tranf_submit(oParam);
  248. if(arErrorCode.pop("TRMMO30002") < 0){
  249. sysf_messageBox("진료과별 파트정보 조회를 실패하였습니다.", "E999");
  250. return false;
  251. }
  252. // var nodeList = instance1.selectNodes("/root/init/deptpartinfo/partlist");
  253. if( ds_init_deptpartinfo_partlist.rowcount < 0 ){
  254. //alert( nodeList.length + " nodeList.length ");
  255. // model.removenode("/root/send/deptpartinfo");
  256. ds_send.setColumn(0,"deptpartinfo","");
  257. }
  258. dsf_makeValue(ds_cond,"deptpartinfo","string",deptpartinfo);
  259. }
  260. /****************************************************************************************
  261. * Function : cf_TRMMO30002
  262. * Description : TRMMO30002 콜백함수
  263. * Argument :
  264. * return type :
  265. * Creator :
  266. ****************************************************************************************/
  267. function cf_TRMMO30002(sSvcId, nErrorCode, sErrorMsg) {
  268. arErrorCode.push(sSvcId, nErrorCode);
  269. }
  270. /****************************************************************************************
  271. * Function : fGetLastDay
  272. * Description : 해당월의 마지막날 리턴
  273. * Argument : mm : 월 데이터
  274. * return type :
  275. * Creator :
  276. ****************************************************************************************/
  277. function fGetLastDay(mm){
  278. var dd = 31;
  279. switch(mm){
  280. case 4:
  281. case 6:
  282. case 9:
  283. case 11:
  284. dd = 30;
  285. break;
  286. case 2:
  287. if( (yyyy%4)==0 || (yyyy%100)==0){
  288. dd=29;
  289. } else {
  290. dd=28;
  291. }
  292. break;
  293. }
  294. return dd;
  295. }
  296. /****************************************************************************************
  297. * Function : fChkSelDeptDetlFlag
  298. * Description : 부서 파트 정보가 있는지 체크
  299. * Argument :
  300. * return type :
  301. * Creator :
  302. ****************************************************************************************/
  303. function fChkSelDeptDetlFlag(){
  304. //var selDeptDetlFlag = model.getValue("/root/cond/deptpartinfo");
  305. if ( fChkDeptDetlFlag() ) {
  306. group4.cmb_partinfo.index = 0;
  307. group4.cmb_partinfo.enable = true;
  308. } else if( ds_init_deptpartinfo_partlist.rowcount > 0 ) {
  309. group4.cmb_partinfo.enable = true;
  310. } else {
  311. group4.cmb_partinfo.enable = false;
  312. ds_cond.setColumn(0,"deptpartinfo","");
  313. }
  314. }
  315. /****************************************************************************************
  316. * Function : fChkDeptDetlFlag
  317. * Description : 부서 파트 정보가 있는지 체크
  318. * : 부서 파트 정보가 있는데 파트 정보를 입력하지 않았을 경우 true리턴
  319. * Argument :
  320. * return type :
  321. * Creator :
  322. ****************************************************************************************/
  323. // 부서 파트 정보가 있는지 체크
  324. // 부서 파트 정보가 있는데 파트 정보를 입력하지 않았을 경우 true리턴
  325. function fChkDeptDetlFlag(){
  326. var deptdetlflag = ds_cond.getColumn(0,"deptpartinfo");
  327. var orddeptnm = ds_cond.getColumn(0,"orddeptcd");
  328. if( ds_init_deptpartinfo_partlist.rowcount > 0 && utlf_isNull(deptdetlflag) ){
  329. return true;
  330. }
  331. return false;
  332. }
  333. /****************************************************************************************
  334. * Function : fGetWorkScheduleList
  335. * Description : 당직대상자리스트를 조회한다
  336. * Argument : srchym : 조회년월
  337. * : grtype :
  338. * : orddeptcd : 진료과
  339. * : staffid : 의사ID
  340. * : deptpartinfo : 파트정보
  341. * return type :
  342. * Creator :
  343. ****************************************************************************************/
  344. function fGetWorkScheduleList(srchym, grtype, orddeptcd, staffid, deptpartinfo){
  345. // 당직대상자리스트를 가져오기전에 파트정보가 있는지 여부를 사전 조회
  346. // 파트정보가 있을 경우 파트를 선택해야지 당직대상자리스트 조회 가능히도록 설정
  347. // kskim
  348. // 2010.04.03
  349. fChkDeptDetlFlag() ;
  350. //저장하기전 다른 row를 선택했을때 blocking 하기위해 중증분류의 row값을 임시저장해둠
  351. //curRow = grd_grpmaster.row;
  352. orddept = group4.cmb_orddeptcd.value;
  353. if(utlf_isNull(srchym)){
  354. srchym = ds_cond.getColumn(0,"srchym");
  355. }
  356. if(utlf_isNull(grtype)){
  357. grtype = "C";
  358. }
  359. if(utlf_isNull(orddeptcd)){
  360. orddeptcd = ds_cond.getColumn(0,"orddeptcd");
  361. }
  362. if(utlf_isNull(staffid)){
  363. staffid = "-";
  364. }
  365. ds_send.clear();
  366. dsf_makeValue(ds_send,"srchym", "string", srchym);
  367. dsf_makeValue(ds_send,"orddeptcd", "string", orddeptcd);
  368. dsf_makeValue(ds_send,"grtype", "string", grtype);
  369. dsf_makeValue(ds_send,"staffid", "string", staffid);
  370. dsf_makeValue(ds_send,"fromtm", "string", scheftm);
  371. dsf_makeValue(ds_send,"totm", "string", schettm);
  372. dsf_makeValue(ds_send,"monthcnt", "string", utlf_getDayCountForMonth(srchym.substr(0, 4), srchym.substr(4, 6)));//조회년월의 마지막일
  373. dsf_makeValue(ds_send,"deptpartinfo","string", deptpartinfo);
  374. var oParam = {};
  375. oParam.id = "TRMNE05105";
  376. oParam.service = "ercareapp.ERSmsCallMngt";
  377. oParam.method = "reqGetWorkerScheduleList";
  378. oParam.inds = "searchinfo=ds_send";
  379. oParam.outds = "ds_main_workerinfolist=workerinfolist";
  380. oParam.async = false;
  381. oParam.callback = "cf_TRMNE05105";
  382. tranf_submit(oParam);
  383. if(arErrorCode.pop("TRMNE05105") >= 0){
  384. //글로벌변수 초기화
  385. isEdited = "N";
  386. //curRow = 0;
  387. orddept = null;
  388. //당직대상자의 선택제거
  389. ds_main_drinfolist.rowposition = -1;
  390. //당직리스트의 선택제거
  391. ds_main_workerinfolist.rowposition = -1;
  392. //상세정보 초기화
  393. fSetDrInfo();
  394. // //당직리스트색깔 초기화
  395. // for(var i = 0; i <= 6 ; i++){
  396. // grd_workerlist.setCellProperty("body",i,"background","#ffffff");
  397. // //grd_workerlist.setCellProperty("body",i,"background2","#ffffff");
  398. // }
  399. //당직스케줄 변경여부 조회를 위해 임시노드에 copy 해둔다.
  400. // model.removenode("/root/orgscheinfo");
  401. // model.makenode("/root/orgscheinfo/workinfo");
  402. // model.copyNode("/root/orgscheinfo/workinfo", "/root/main/workerinfo");
  403. ds_orgscheinfo_workerinfolist.clear();
  404. ds_orgscheinfo_workerinfolist.copyData(ds_main_workerinfolist);
  405. }
  406. }
  407. /****************************************************************************************
  408. * Function : cf_TRMNE05105
  409. * Description : TRMNE05105 콜백함수
  410. * Argument :
  411. * return type :
  412. * Creator :
  413. ****************************************************************************************/
  414. function cf_TRMNE05105(sSvcId, nErrorCode, sErrorMsg) {
  415. arErrorCode.push(sSvcId, nErrorCode);
  416. }
  417. /****************************************************************************************
  418. * Function : fSetDrInfo
  419. * Description : 의사명 선택시 상세정보를 조회후 세팅한다
  420. * Argument : clickflag : 클릭구분
  421. * : drid : 의사ID
  422. * return type :
  423. * Creator :
  424. ****************************************************************************************/
  425. function fSetDrInfo(clickflag, drid){
  426. ds_main_drdetlinfo.clear();
  427. if(clickflag == "worklist") {
  428. //당직자리스트에서 의사 선택한경우 의사아이디로 상세정보를 조회해온다.
  429. ds_send.clear();
  430. dsf_makeValue(ds_send,"drid","string",drid);
  431. var oParam = {};
  432. oParam.id = "TRMNE05104";
  433. oParam.service = "ercareapp.ERSmsCallMngt";
  434. oParam.method = "reqGetDrInfo";
  435. oParam.inds = "searchinfo=ds_send";
  436. oParam.outds = "ds_main_drdetlinfo=drdetlinfo";
  437. oParam.async = false;
  438. oParam.callback = "";
  439. tranf_submit(oParam);
  440. }else{
  441. //당직대상자에서 의사 선택한 경우 그리드정보에서 상세정보를 세팅한다.
  442. dsf_makeValue(ds_main_drdetlinfo,"drid", "string", drid); //사번
  443. dsf_makeValue(ds_main_drdetlinfo,"drnm", "string", ds_main_drinfolist.getColumn(ds_main_drinfolist.findRow("drid",drid),"drnm")); //의사명
  444. dsf_makeValue(ds_main_drdetlinfo,"phone","string", ds_main_drinfolist.getColumn(ds_main_drinfolist.findRow("drid",drid),"phone")); //핸드폰
  445. dsf_makeValue(ds_main_drdetlinfo,"bbtel","string", ds_main_drinfolist.getColumn(ds_main_drinfolist.findRow("drid",drid),"bbtel")); //비퍼
  446. }
  447. }
  448. /****************************************************************************************
  449. * Function : fClkArrowBtn
  450. * Description : 당직년월 화살표 클릭시 날자변경
  451. * Argument : objName : 버튼명
  452. * return type :
  453. * Creator :
  454. ****************************************************************************************/
  455. function fClkArrowBtn(objName){
  456. var srchdd = ds_cond.getColumn(0,"srchdd");
  457. var sNewdd = "";
  458. if(objName == "btn_bfyear") {
  459. sNewdd = srchdd.toDate("YYYYMMDD").getAddDate(-1, "Y").getDateFormat();
  460. } else if(objName == "btn_bfmonth") {
  461. sNewdd = srchdd.toDate("YYYYMMDD").getAddDate(-1, "M").getDateFormat();
  462. } else if(objName == "btn_afmonth") {
  463. sNewdd = srchdd.toDate("YYYYMMDD").getAddDate(1, "M").getDateFormat();
  464. } else if(objName == "btn_afyear"){
  465. sNewdd = srchdd.toDate("YYYYMMDD").getAddDate(1, "Y").getDateFormat();
  466. }
  467. if (!utlf_isNull(sNewdd)) {
  468. ds_cond.setColumn(0,"srchdd", sNewdd);
  469. ds_cond.setColumn(0,"srchym", sNewdd.substr(0, 6));
  470. }
  471. }
  472. //당직대상자 마우스 오른쪽메뉴 mouse down
  473. function fMouseDownGridRow(obj:PopupMenu, e:MenuClickEventInfo) {
  474. if(e.id == "A") fAddWorkDr();
  475. else fRefreshWorkDr();
  476. }
  477. //오른쪽마우스 메뉴중 추가 선택시 호출
  478. function fAddWorkDr(){
  479. //tf오른쪽메뉴에 parameter지정을 할 수 없어서 만들었음
  480. fSetWorkDr("ADD");
  481. }
  482. //수정한 내역을 새로고침한다
  483. function fRefreshWorkDr(){
  484. var btnRst = sysf_messageBox("새로고침하시면 저장하지 않은 내역은 모두 초기화됩니다.\r\n"+ "새로고침을", "Q004");
  485. if(btnRst == 6){//예
  486. //grd_workerlist.rebuildStyle();
  487. var curRow = ds_main_drinfolist.rowposition;
  488. var srchym = ds_cond.getColumn(0,"srchym");
  489. var grtype = ds_main_grpmasterinfolist.getColumn(ds_main_grpmasterinfolist.rowposition,"grtype");
  490. var orddeptcd = ds_main_grpmasterinfolist.getColumn(ds_main_grpmasterinfolist.rowposition,"orddeptcd");
  491. var staffid = ds_main_grpmasterinfolist.getColumn(ds_main_grpmasterinfolist.rowposition,"staffid");
  492. var deptpartinfo = ds_cond.getColumn(0,"deptpartinfo");
  493. fGetWorkScheduleList(srchym, grtype, orddeptcd, staffid, deptpartinfo);
  494. }
  495. }
  496. //setFlag : ADD 당직자리스트그리드의 선택된 모든셀에 의사를 세팅한다.
  497. //setFlag : DEL 당직자리스트그리드의 선택된 모든셀에 의사를 지워준다.
  498. function fSetWorkDr(setFlag){
  499. //선택된 당직대상자정보(id, nm)
  500. var drid = ds_main_drinfolist.getColumn(ds_main_drinfolist.rowposition,"drid");
  501. var drnm = ds_main_drinfolist.getColumn(ds_main_drinfolist.rowposition,"drnm");
  502. var saveyn = ds_main_drinfolist.getColumn(ds_main_drinfolist.rowposition,"saveyn");
  503. var deptcd = ds_cond.getColumn(0,"orddeptcd");
  504. var phone = ds_main_drinfolist.getColumn(ds_main_drinfolist.rowposition,"phone");
  505. var bbtel = ds_main_drinfolist.getColumn(ds_main_drinfolist.rowposition,"bbtel");
  506. var mespclyn = ds_main_drinfolist.getColumn(ds_main_drinfolist.rowposition,"mespclyn");
  507. //의사추가의경우
  508. if(setFlag == "ADD"){
  509. //선택된 당직대상자정보가 없으면 세팅하지않고 바로 리턴
  510. if(utlf_isNull(drid)){
  511. return false;
  512. }
  513. //응급호출의사정보마스터에 등록되어있지 않은 의사를 선택한 경우 등록화면을 호출
  514. if(phone == "-" || phone == "0"){
  515. var btnChk = sysf_messageBox("「"+drnm+"」님은 근무자관리에 연락처가 등록되어 있지 않습니다.\r\n"+ "근무자 연락처 등록을", "Q004");
  516. if(btnChk == 6){//예
  517. frmf_setParameter("drid", drid);
  518. frmf_setParameter("drnm", drnm);
  519. frmf_setParameter("deptcd", deptcd);
  520. frmf_setParameter("phone", phone);
  521. frmf_setParameter("bbtel", bbtel);
  522. //sysf_trace(drid+"/"+drnm+"/"+deptcd+"/"+phone+"/"+bbtel);
  523. //modal("SMMNE05000", "", "500", "500", "SMMNE05000", "", "");
  524. frmf_modal("SMMNE05000", "SMMNE05000", "", "", "", 500, 500, "", "", "", "", "", "M");
  525. var saveyn = frmf_getParameter("saveyn");
  526. if(saveyn == "Y" || saveyn == "D"){//Y:저장, D : 삭제
  527. //당직대상자 재조회 후 포커스 원래상태로
  528. var curRow = ds_main_drinfolist.rowposition;
  529. fGetDrInfo();
  530. ds_main_drinfolist.rowposition = curRow;
  531. }
  532. }
  533. return false;
  534. }
  535. }
  536. //현재날짜+시간(yyyymmddhhss)
  537. var currentDD = utlf_getCurrentDateTime().replace(" ", "").substr(0, 12);
  538. var errYn = "N"; //과거일자 선택여부
  539. //var cells = grd_workerlist.selectedCells; //선택된 쎌의 배열
  540. var selstrtrows = grd_workerlist.selectstartrow;
  541. var selstrtcols = grd_workerlist.selectstartcol;
  542. var selendrows = grd_workerlist.selectendrow;
  543. var selendcols = grd_workerlist.selectendcol;
  544. var sRow, sCol, sColNm; //선택된 쎌의 row, col 값, 선택된 col의 필드명
  545. var selectedDD; //선택된일자
  546. for(var i = 0; i < selstrtrows.length; i++){ //선택된 영역의 수
  547. for(var sRow = selstrtrows[i]; sRow <= selendrows[i]; sRow++) { //선택된 영역별 로우수
  548. for(var sCol = selstrtcols[i]; sCol <= selendcols[i]; sCol++) { //선택된 영역별 컬럼수
  549. sColNm = lf_getBindCellName(grd_workerlist,sCol);
  550. selectedDD = ds_main_workerinfolist.getColumn(sRow,"todd");
  551. //현재일자보다 이전일자의 스케줄을 변경하지 못하게 blocking한다.
  552. if(selectedDD < currentDD){
  553. errYn = "Y";
  554. }else{
  555. //의사추가의경우
  556. if(setFlag == "ADD"){
  557. //선택된 쎌에 의사이름 쎄팅
  558. if (sCol == grd_workerlist.getBindCellIndex("body","drnm4") && mespclyn == "N") { // 스탭이 아니면 return;
  559. sysf_messageBox("스탭행은 스탭만 등록가능합니다.", "I");
  560. return;
  561. }
  562. //model.setValue("/root/main/workerinfo/workerinfolist["+ sRow + "]/" + sColNm, drnm);
  563. ds_main_workerinfolist.setColumn(sRow,sColNm,drnm);
  564. //model.setValue("/root/main/workerinfo/workerinfolist["+ sRow + "]/drid" + sColNm.substr(4), drid);
  565. ds_main_workerinfolist.setColumn(sRow,"drid"+sColNm.substr(4),drid);
  566. dsf_makeValue(ds_main_workerinfolist,"selyn"+sColNm.substr(4),"string","Y",sRow);
  567. //선택된 쎌 색상 변경
  568. //grd_workerlist.cellStyle("background-color", sRow, sCol) = "#F4A6EE";
  569. //지우개 이미지 삭제
  570. //grd_workerlist.cellStyle("background-image", sRow, sCol) = "";
  571. }
  572. }
  573. }
  574. }
  575. }
  576. //과거일자만 빼고 나머지 일자는 변경가능하도록 한다
  577. if(errYn == "Y"){
  578. sysf_messageBox("과거일자의 스케줄은 변경하실 수 없습니다.", "E999");
  579. return false;
  580. }
  581. }
  582. //세팅한 내역을 저장한다
  583. function fSaveWorkDr(){
  584. //오늘날짜 이후의 당직 리스트가 비어있는 경우 메시지를 띄워준다.
  585. var curdate = utlf_getCurrentDate().substr(0, 8);
  586. var emptycell = null;
  587. // 일단위로 등록을 검사하는 부분. 시작
  588. var cntDr = 0;
  589. for(var grdIdx = 0; grdIdx < ds_main_workerinfolist.rowcount; grdIdx++){
  590. cntDr = 0;
  591. for(var drIdx = 1; drIdx < 5; drIdx++){
  592. var drnm = null;
  593. drnm = ds_main_workerinfolist.getColumn(grdIdx,"drnm" + drIdx);
  594. if(!utlf_isNull(drnm)) {
  595. cntDr++;
  596. }
  597. }
  598. }
  599. // 일단위로 등록을 검사하는 부분. 끝
  600. var grtype = "C";
  601. var orddeptcd = ds_cond.getColumn(0,"orddeptcd");
  602. var staffid = "-";
  603. var srchym = ds_cond.getColumn(0,"srchym");
  604. var deptpartinfo = ds_cond.getColumn(0,"deptpartinfo");
  605. dsf_createDs("ds_send_workerinfolist");
  606. ds_send_workerinfolist.copyData(grdf_getGridUpdateData(grd_workerlist,"all"));
  607. ds_send.clear();
  608. //dsf_makeValue(ds_send,"workerlist","string",grd_workerlist.getupdatedataAll("i"));
  609. dsf_makeValue(ds_send,"grtype", "string",grtype);
  610. dsf_makeValue(ds_send,"orddeptcd", "string",orddeptcd);
  611. dsf_makeValue(ds_send,"staffid", "string",staffid);
  612. dsf_makeValue(ds_send,"srchym", "string",srchym);
  613. dsf_makeValue(ds_send,"deptpartinfo","string",deptpartinfo);
  614. dsf_setDefaultVal(ds_send, "deptpartinfo:1");
  615. var oParam = {};
  616. oParam.id = "TXMNE05101";
  617. oParam.service = "ercareapp.ERSmsCallMngt";
  618. oParam.method = "reqExecWorkerScheduleList";
  619. oParam.inds = "refCond=ds_send_workerinfolist saveinfo=ds_send";
  620. oParam.outds = "ds_main_workerinfolist=workerinfolist";
  621. oParam.async = false;
  622. oParam.callback = "cf_TXMNE05101";
  623. tranf_submit(oParam);
  624. if(arErrorCode.pop("TXMNE05101") >= 0){
  625. //당직리스트색깔 초기화
  626. // for(var i = 1; i <= grd_workerlist.rows; i++){
  627. // grd_workerlist.cellstyle("background-color", i, 0, i, 6) = "#ffffff";
  628. // grd_workerlist.cellStyle("background-image", i, 0, i, 6) = "";
  629. // }
  630. var srchym = ds_cond.getColumn(0,"srchym");
  631. var grtype = "C"
  632. var orddeptcd = ds_cond.getColumn(0,"orddeptcd");
  633. var staffid = "-";
  634. var deptpartinfo = ds_cond.getColumn(0,"deptpartinfo");
  635. fGetWorkScheduleList(srchym, grtype, orddeptcd, staffid, deptpartinfo); //당직자리스트를 조회한다
  636. }
  637. dsf_deleteDs("ds_send_workerinfolist");
  638. }
  639. function cf_TXMNE05101(sSvcId, nErrorCode, sErrorMsg) {
  640. arErrorCode.push(sSvcId, nErrorCode);
  641. }
  642. ]]></Script>