SPMMO34000.xjs 28 KB

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