SMMNE05400_응급당직전문의관리.xfdl 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <FDL version="1.5">
  3. <TypeDefinition url="..\..\..\default_typedef.xml"/>
  4. <Form id="SMMNE05400" position="absolute 0 0 892 855" titletext="응급실 당직 전문의 (on-call) 스케줄 관리" oninit="SMMNE05400_oninit" onload="SMMNE05400_onload" onclose="SMMNE05400_onclose" onbeforeclose="SMMNE05400_onbeforeclose" ontimer="SMMNE05400_ontimer">
  5. <Layouts>
  6. <Layout>
  7. <Static text="응급실 당직 전문의 (on-call) 스케줄 관리" position="absolute 0 0 284 25" id="caption6" class="tit_1"/>
  8. <Shape id="line2" linetype="horizontal" class="line_10" position="absolute 0 85 360 91"/>
  9. <Div id="group4" taborder="2" position="absolute 0 25 360 85" class="div_SA">
  10. <Layouts>
  11. <Layout>
  12. <Button id="btn_search" taborder="3" text="조회" class="btn1" position="absolute 295 20 351 40" onclick="group4_btn_search_onclick" anchor="default"/>
  13. <Shape id="line13" linetype="vertical" class="line_4" position="absolute 285 9 291 54" anchor="default"/>
  14. <Static id="caption4" text="당직년월 :" class="search_name" position="absolute 7 8 98 28" anchor="default"/>
  15. <Static id="caption1" text="진 료 과 :" class="search_name" position="absolute 7 32 98 52" anchor="default"/>
  16. <Combo id="cmb_orddeptcd" taborder="5" innerdataset="@ds_init_cmb_orddeptinfolist" codecolumn="deptcd" datacolumn="deptnm" position="absolute 90 32 280 52" onitemchanged="group4_cmb_orddeptcd_onitemchanged" anchor="default" canitemchange="group4_cmb_orddeptcd_canitemchange"/>
  17. <Button id="btn_bfyear" taborder="6" class="icon_pre_year" position="absolute 90 10 106 26" onclick="group4_btn_bfyear_onclick" anchor="default"/>
  18. <Button id="btn_bfmonth" taborder="7" class="icon_pre_month" position="absolute 108 10 124 26" onclick="group4_btn_bfmonth_onclick" anchor="default"/>
  19. <Button id="btn_afmonth" taborder="8" class="icon_next_month" position="absolute 241 10 257 26" onclick="group4_btn_afmonth_onclick" anchor="default"/>
  20. <Button id="btn_afyear" taborder="9" class="icon_next_year" position="absolute 259 10 275 26" onclick="group4_btn_afyear_onclick" anchor="default"/>
  21. <Calendar id="ipt_srchdd" taborder="10" autoselect="true" dateformat="yyyy-MM-dd" position="absolute 129 8 236 28" style="align:center middle;"/>
  22. </Layout>
  23. </Layouts>
  24. </Div>
  25. <Grid id="grd_drlist" taborder="3" binddataset="ds_grd_drlist" useinputpanel="false" position="absolute 0 90 360 784" oncellclick="grd_drlist_oncellclick" anchor="left top bottom">
  26. <Formats>
  27. <Format id="default">
  28. <Columns>
  29. <Column size="70"/>
  30. <Column size="80"/>
  31. <Column size="70"/>
  32. <Column size="120"/>
  33. <Column size="100"/>
  34. </Columns>
  35. <Rows>
  36. <Row size="24" band="head"/>
  37. <Row size="24"/>
  38. </Rows>
  39. <Band id="head">
  40. <Cell text="사번"/>
  41. <Cell col="1" text="이름"/>
  42. <Cell col="2" text="nzone"/>
  43. <Cell col="3" text="Hp No"/>
  44. <Cell col="4"/>
  45. </Band>
  46. <Band id="body">
  47. <Cell style="selectbackground:greenyellow;" text="bind:drid"/>
  48. <Cell col="1" style="selectbackground:greenyellow;" text="bind:drnm"/>
  49. <Cell col="2" style="selectbackground:greenyellow;" text="bind:nzone"/>
  50. <Cell col="3" style="selectbackground:greenyellow;" text="bind:hpno"/>
  51. <Cell col="4" style="selectbackground:greenyellow;" text="bind:orddeptcd"/>
  52. </Band>
  53. </Format>
  54. </Formats>
  55. </Grid>
  56. <Shape id="roundrect3" type="roundrectangle" class="roundrect_example" position="absolute 0 785 892 855" anchor="left right bottom"/>
  57. <Static id="caption2" text="* on-call 시간은 평일 - 당일 17:30 ~ 익일 08:30 , 주말 및 공휴일 - 당일 08:30 ~ 익일 08:30까지 입니다." position="absolute 4 795 732 815" anchor="left bottom"/>
  58. <Static id="caption5" text="* on-call 명단은 반드시 전산으로 입력하여야 하며, &#13;&#10; 학회나 개인사정 등으로 수정 및 변경이 될 때에도 전산으로 입력하신 뒤 진료행정팀으로 수정된 명단을 제출하여 주시기 바랍니다." position="absolute 4 815 732 843" anchor="left bottom"/>
  59. <Static id="cpt_worktitle" text="당직 리스트" class="tit_2" position="absolute 362 68 650 84"/>
  60. <Shape id="line3" linetype="horizontal" class="line_10" position="absolute 362 85 892 91" anchor="left top right"/>
  61. <Button id="button42" taborder="4" text="저장" class="btn2" position="absolute 789 65 840 85" onclick="button42_onclick" anchor="top right"/>
  62. <Grid id="grd_workerlist" taborder="5" binddataset="ds_grd_workerlist" useinputpanel="false" position="absolute 362 90 892 784" autofittype="col" oncellclick="grd_workerlist_oncellclick" onrbuttondown="grd_workerlist_onrbuttondown" onlbuttondown="grd_workerlist_onlbuttondown" anchor="all">
  63. <Formats>
  64. <Format id="default">
  65. <Columns>
  66. <Column size="25"/>
  67. <Column size="120"/>
  68. <Column size="50"/>
  69. <Column size="100"/>
  70. <Column size="80"/>
  71. <Column size="120"/>
  72. <Column size="0"/>
  73. <Column size="0"/>
  74. <Column size="0"/>
  75. </Columns>
  76. <Rows>
  77. <Row size="24" band="head"/>
  78. <Row size="24"/>
  79. </Rows>
  80. <Band id="head">
  81. <Cell/>
  82. <Cell col="1" text="일자"/>
  83. <Cell col="2" text="요일"/>
  84. <Cell col="3" text="의사"/>
  85. <Cell col="4" text="n-zone"/>
  86. <Cell col="5" text="hp no"/>
  87. <Cell col="6" text="drid"/>
  88. <Cell col="7" text="orddeptcd"/>
  89. <Cell col="8" text="orddeptnm"/>
  90. </Band>
  91. <Band id="body">
  92. <Cell displaytype="image" style="align:center middle;"/>
  93. <Cell col="1" displaytype="date" text="bind:workdd" mask="yyyy-MM-dd" calendardisplaynulltype="none"/>
  94. <Cell col="2" text="bind:datenm"/>
  95. <Cell col="3" text="bind:drnm"/>
  96. <Cell col="4" text="bind:nzone"/>
  97. <Cell col="5" text="bind:hpno"/>
  98. <Cell col="6" text="bind:drid"/>
  99. <Cell col="7" text="bind:orddeptcd"/>
  100. <Cell col="8" text="bind:orddeptnm"/>
  101. </Band>
  102. </Format>
  103. </Formats>
  104. </Grid>
  105. <Button id="btn_prt" taborder="6" text="출력" class="btn6" position="absolute 841 65 892 85" onclick="btn_prt_onclick" anchor="top right"/>
  106. </Layout>
  107. </Layouts>
  108. <Objects>
  109. <Dataset id="ds_grd_workerlist" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" reversesubsum="false" onload="ds_grd_workerlist_onload">
  110. <ColumnInfo>
  111. <Column id="gbn" type="STRING" size="256" sumtext="구분"/>
  112. <Column id="workdd" type="STRING" size="256" sumtext="당직일자"/>
  113. <Column id="duty" type="STRING" size="256" sumtext="duty"/>
  114. <Column id="datenm" type="STRING" size="256" sumtext="요일"/>
  115. <Column id="drid" type="STRING" size="256" sumtext="당직의사id"/>
  116. <Column id="drnm" type="STRING" size="256" sumtext="당직의사이름"/>
  117. <Column id="nzone" type="STRING" size="256" sumtext="nzone"/>
  118. <Column id="hpno" type="STRING" size="256" sumtext="hpno"/>
  119. <Column id="orddeptcd" type="STRING" size="256" sumtext="기준과"/>
  120. <Column id="orddeptnm" type="STRING" size="256" sumtext="기준과"/>
  121. <Column id="confirmyn" type="STRING" size="256" sumtext="최종저장여부"/>
  122. </ColumnInfo>
  123. </Dataset>
  124. <Dataset id="ds_grd_drlist" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" reversesubsum="false">
  125. <ColumnInfo>
  126. <Column id="drid" type="STRING" size="256" sumtext="의사사번"/>
  127. <Column id="drnm" type="STRING" size="256" sumtext="의사이름"/>
  128. <Column id="nzone" type="STRING" size="256" sumtext="nzone"/>
  129. <Column id="hpno" type="STRING" size="256" sumtext="휴대전화"/>
  130. <Column id="orddeptcd" type="STRING" size="256" sumtext="진료과"/>
  131. <Column id="jobposcd" type="STRING" size="256" sumtext="jobposcd"/>
  132. </ColumnInfo>
  133. </Dataset>
  134. <Dataset id="ds_init_cmb_orddeptinfolist" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  135. <ColumnInfo>
  136. <Column id="deptcd" type="STRING" size="256" sumtext="부서코드"/>
  137. <Column id="deptnm" type="STRING" size="256" sumtext="부서코드"/>
  138. <Column id="duty" type="STRING" size="256" sumtext="duty"/>
  139. </ColumnInfo>
  140. </Dataset>
  141. <Dataset id="ds_init_basicinfo" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  142. <ColumnInfo>
  143. <Column id="stime" type="STRING" size="256" sumtext="시작시간"/>
  144. <Column id="etime" type="STRING" size="256" sumtext="종료시간"/>
  145. </ColumnInfo>
  146. <Rows>
  147. <Row/>
  148. </Rows>
  149. </Dataset>
  150. <Dataset id="ds_init_validinfo" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  151. <ColumnInfo>
  152. <Column id="validyn" type="STRING" size="256" sumtext="유효여부"/>
  153. <Column id="scheyn" type="STRING" size="256" sumtext="중복스케줄여부"/>
  154. <Column id="holiyn" type="STRING" size="256" sumtext="휴진등록여부"/>
  155. </ColumnInfo>
  156. <Rows>
  157. <Row/>
  158. </Rows>
  159. </Dataset>
  160. <Dataset id="ds_temp" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false"/>
  161. <Dataset id="ds_cond" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  162. <ColumnInfo>
  163. <Column id="srchym" type="STRING" size="256"/>
  164. <Column id="srchdd" type="STRING" size="256"/>
  165. <Column id="orddeptcd" type="STRING" size="256"/>
  166. </ColumnInfo>
  167. <Rows>
  168. <Row/>
  169. </Rows>
  170. </Dataset>
  171. </Objects>
  172. <Bind>
  173. <BindItem id="item1" compid="group4.cmb_orddeptcd" propid="value" datasetid="ds_cond" columnid="orddeptcd"/>
  174. <BindItem id="item10" compid="group4.ipt_srchdd" propid="value" datasetid="ds_cond" columnid="srchdd"/>
  175. </Bind>
  176. <Script type="xscript4.0"><![CDATA[/***************************************************************************************
  177. * System Name :
  178. * Job Name :
  179. * Creator :
  180. * Make Date : 2015-11-13
  181. * Description :
  182. *---------------------------------------------------------------------------------------
  183. * Modify Date Modifier Modify Description
  184. *---------------------------------------------------------------------------------------
  185. * 2015-11-13 Live Converter TF->XP
  186. *
  187. *---------------------------------------------------------------------------------------
  188. ****************************************************************************************/
  189. //=======================================================================================
  190. // Lib Include
  191. //---------------------------------------------------------------------------------------
  192. include "com_commonxp::comm_main.xjs";
  193. //include "emr_carecomxp::CareCom.xjs";
  194. var lrow = null;
  195. var uIcon = 'theme://images/ico_u.png';
  196. var eIcon = 'theme://images/ico_e.png';
  197. var dIcon = 'theme://images/ico_d.png';
  198. //=======================================================================================
  199. // Function
  200. //---------------------------------------------------------------------------------------
  201. /******************************************************************
  202. * Argument :
  203. * Description : 초기화 메서드
  204. ******************************************************************/
  205. function fInit(){
  206. var curdd = utlf_getCurrentDate();
  207. var curym = utlf_getCurrentDate().substring(0, 6);
  208. var worktitle = curym.substring(0, 4) + '년 ' + curym.substring(4, 6) + '월 전문의 당직리스트';
  209. cpt_worktitle.text = worktitle;
  210. ds_cond.clear();
  211. dsf_makeValue(ds_cond,"srchdd", "string", curdd);
  212. dsf_makeValue(ds_cond,"srchym", "string", curym);
  213. dsf_makeValue(ds_cond,"orddeptcd", "string", sysf_getUserInfo("dutplcecd"));
  214. var ds_req = dsf_createDsRow('ds_req', [
  215. { col: 'srchdd', type: 'string', size: 256, val: curdd }, // 당직년월
  216. { col: 'srchym', type: 'string', size: 256, val: curym }, // 당직년월
  217. { col: 'gbn', type: 'string', size: 256, val: 'E' }, // 구분
  218. { col: 'icucd', type: 'string', size: 256, val: ''}, // wardcd
  219. { col: 'csflag', type: 'string', size: 256, val: ''} // csflag
  220. ], false);
  221. var oParam = {};
  222. oParam.id = "TRMNE05401";
  223. oParam.service = "ercareapp.ERPatMngt";
  224. oParam.method = "reqGetErProfscheDeptInfo";
  225. oParam.inds = "req=ds_req";
  226. oParam.outds = "ds_init_cmb_orddeptinfolist=orddeptinfolist";
  227. oParam.async = false;
  228. //oParam.callback = "cf_TRMNE05401";
  229. tranf_submit(oParam);
  230. }
  231. /******************************************************************
  232. * Argument :
  233. * Description : 그리드가 변경상태인지 조회
  234. ******************************************************************/
  235. function isScheduleRefresh(isClose){
  236. if(!utlf_isNull(grdf_getUpdateRows('grd_workerlist', 'update'))){
  237. var message, id;
  238. if(isClose){
  239. message = '수정하신 스케줄을 저장하지 않고 창을 닫으시겠습니까?';
  240. id = 'Q';
  241. }
  242. else{
  243. message = '수정하신 스케줄을 저장하지 않고 새로운 내역을';
  244. id = 'Q005';
  245. }
  246. var result = 'N';
  247. if(sysf_messageBox(message, id) == 6){
  248. result = 'Y';
  249. }
  250. return result;
  251. }
  252. return 'Y';
  253. }
  254. /******************************************************************
  255. * Argument :
  256. * Description : 의사의 정보를 가져온다
  257. ******************************************************************/
  258. function fGetDrInfo(orddeptcd) {
  259. dsf_createDsRow('ds_send', [
  260. { col: 'srchdd', type: 'string', size: 256, val: ds_cond.getColumn(0,"srchdd") }, // 당직년월
  261. { col: 'srchym', type: 'string', size: 256, val: ds_cond.getColumn(0,"srchym") }, // 당직년월
  262. { col: 'gbn', type: 'string', size: 256, val: 'E' }, // 구분
  263. { col: 'orddeptcd', type: 'string', size: 256, val: orddeptcd }], // 기준과
  264. false);
  265. var oParam = {};
  266. oParam.id = "TRMNE05402";
  267. oParam.service = "ercareapp.ERPatMngt";
  268. oParam.method = "reqGetErProfscheDrInfo";
  269. oParam.inds = "req=ds_send";
  270. oParam.outds = "ds_grd_drlist=drinfolist";
  271. oParam.async = false;
  272. oParam.callback = "cf_TRMNE05402";
  273. tranf_submit(oParam);
  274. }
  275. /****************************************************************************************
  276. * Function : fClkArrowBtn
  277. * Description : 당직년월 화살표 클릭시 날자변경
  278. * Argument : objName : 버튼명
  279. * return type :
  280. * Creator :
  281. ****************************************************************************************/
  282. function fClkArrowBtn(objName){
  283. var srchdd = ds_cond.getColumn(0,"srchdd");
  284. var sNewdd = "";
  285. if(objName == "btn_bfyear") {
  286. sNewdd = srchdd.toDate("YYYYMMDD").getAddDate(-1, "Y").getDateFormat();
  287. } else if(objName == "btn_bfmonth") {
  288. sNewdd = srchdd.toDate("YYYYMMDD").getAddDate(-1, "M").getDateFormat();
  289. } else if(objName == "btn_afmonth") {
  290. sNewdd = srchdd.toDate("YYYYMMDD").getAddDate(1, "M").getDateFormat();
  291. } else if(objName == "btn_afyear"){
  292. sNewdd = srchdd.toDate("YYYYMMDD").getAddDate(1, "Y").getDateFormat();
  293. }
  294. if (!utlf_isNull(sNewdd)) {
  295. ds_cond.setColumn(0,"srchdd", sNewdd);
  296. ds_cond.setColumn(0,"srchym", sNewdd.substr(0, 6));
  297. }
  298. }
  299. /******************************************************************
  300. * Argument :
  301. * Description : 의사의 정보를 가져온다
  302. ******************************************************************/
  303. function cf_TRMNE05402(sSvcId, nErrorCode, sErrorMsg) {
  304. if(nErrorCode < 0){
  305. sysf_messageBox("진료과별 당직대상자 조회를 실패하였습니다.", "E999");
  306. return;
  307. }
  308. //grd_drlist.redraw();
  309. }
  310. /******************************************************************
  311. * Argument :
  312. * Description : 당직대상자리스트를 조회한다
  313. ******************************************************************/
  314. function fGetWorkScheduleList(orddeptcd){
  315. var srchdd = ds_cond.getColumn(0,"srchdd");
  316. var srchym = ds_cond.getColumn(0,"srchym");
  317. var worktitle = srchym.substring(0, 4) + '년 ' + srchym.substring(4, 6) + '월 전문의 당직리스트';
  318. cpt_worktitle.text = worktitle;
  319. dsf_createDsRow('ds_send', [
  320. { col: 'srchdd', type: 'string', size: 256, val: srchdd }, // 당직년월
  321. { col: 'srchym', type: 'string', size: 256, val: srchym }, // 당직년월
  322. { col: 'gbn', type: 'string', size: 256, val: 'E' }, // 구분
  323. { col: 'orddeptcd', type: 'string', size: 256, val: orddeptcd }, // 부서코드
  324. { col: 'monthcnt', type: 'string', size: 256,
  325. val: utlf_getDayCountForMonth(srchym.substring(0, 4), srchym.substring(4, 6)) } //조회년월의 마지막일
  326. ],
  327. false);
  328. var oParam = {};
  329. oParam.id = "TRMNE05403";
  330. oParam.service = "ercareapp.ERPatMngt";
  331. oParam.method = "reqGetErProfscheList";
  332. oParam.inds = "req=ds_send";
  333. oParam.outds = "ds_grd_workerlist=workerinfolist";
  334. oParam.async = false;
  335. oParam.callback = "cf_TRMNE05403";
  336. tranf_submit(oParam);
  337. }
  338. /******************************************************************
  339. * Argument :
  340. * Description : 당직대상자리스트 조회 후 콜백
  341. ******************************************************************/
  342. function cf_TRMNE05403(sSvcId, nErrorCode, sErrorMsg) {
  343. if(nErrorCode < 0){
  344. return;
  345. }
  346. }
  347. /******************************************************************
  348. * Argument :
  349. * Description : 당직대상자리스트에서 의사 삭제
  350. 왜? 삭제는 바로 query 를 날릴까?
  351. ******************************************************************/
  352. function fDelWorkDr(workdd, orddeptcd) {
  353. dsf_createDsRow('ds_refCond', [
  354. { col: 'workdd', type: 'string', size: 256, val: workdd },
  355. { col: 'gbn', type: 'string', size: 256, val: 'E' },
  356. { col: 'orddeptcd', type: 'string', size: 256, val: orddeptcd },
  357. { col: 'placecd', type: 'string', size: 256, val: '' },
  358. { col: 'duty', type: 'string', size: 256, val: 'A' }
  359. ],
  360. false);
  361. var srchym = ds_cond.getColumn(0,"srchym");
  362. // sysf_trace('srchym' + srchym);
  363. dsf_createDsRow('ds_saveinfo', [
  364. { col: 'orddeptcd', type: 'string', size: 256, val: orddeptcd },
  365. { col: 'srchym', type: 'string', size: 256, val: srchym },
  366. { col: 'monthcnt', type: 'string', size: 256,
  367. val: utlf_getDayCountForMonth(srchym.substring(0, 4), srchym.substring(4, 6)) },
  368. { col: 'gbn', type: 'string', size: 256, val: 'E' }
  369. ],
  370. false);
  371. var oParam = {};
  372. oParam.id = "TXMNE05402";
  373. oParam.service = "ercareapp.ERPatMngt";
  374. oParam.method = "reqDelErProfscheList";
  375. oParam.inds = "refCond=ds_refCond saveinfo=ds_saveinfo";
  376. oParam.outds = "ds_grd_workerlist=workerinfolist";
  377. oParam.async = false;
  378. oParam.callback = "cf_TXMNE05402";
  379. tranf_submit(oParam);
  380. //fGetWorkScheduleList(orddeptcd);//당직자리스트를 조회한다
  381. }
  382. function cf_TXMNE05402(sSvcId, nErrorCode, sErrorMsg) {
  383. if(nErrorCode < 0) return;
  384. fGetWorkScheduleList(ds_refCond.getColumn(0, 'orddeptcd'));//당직자리스트를 조회한다
  385. }
  386. function expr_getStatusImage(){
  387. }
  388. /******************************************************************
  389. * Argument :
  390. * Description : 선택된 의사의 당직, 휴진 정보를 조회하여
  391. 추가 가능 여부를 보여준다
  392. ******************************************************************/
  393. function fCheckValid(selDD, selGbn, selPlc, sColNm, drid) {
  394. // 시작/종료일시 기준자료 조회
  395. // 쿼리에 사용될 Dataset 생성
  396. ds_send.clear();
  397. dsf_createDsRow('ds_send', [
  398. { col: 'workdd', type: 'string', size: 256, val: selDD },
  399. { col: 'hugbn', type: 'string', size: 256, val: 'Y' },
  400. { col: 'duty', type: 'string', size: 256, val: 'A' },
  401. { col: 'cdgrupid', type: 'string', size: 256, val: 'P15' }
  402. ],
  403. false);
  404. var oParam = {};
  405. oParam.id = "TRMNE05404";
  406. oParam.service = "ercareapp.ERPatMngt";
  407. oParam.method = "reqGetDrScheErTimeByDate";
  408. oParam.inds = "req=ds_send";
  409. oParam.outds = "ds_init_basicinfo=basicinfo";
  410. oParam.async = false;
  411. //oParam.callback = "cf_TRMNE05404";
  412. tranf_submit(oParam);
  413. var fromtm = ds_init_basicinfo.getColumn(0, 'stime');
  414. var totm = ds_init_basicinfo.getColumn(0, 'etime');
  415. // 휴진내역이 있는지 점검
  416. // 무슨 내용인지 모르겠다...
  417. //var selDuty = sColNm.substr(5, 1).toUpperCase();
  418. var fromdt, todt;
  419. ds_send.clear();
  420. // 쿼리에 사용될 Dataset 생성
  421. dsf_createDsRow('ds_send', [
  422. { col: 'workdd', type: 'string', size: 256, val: selDD },
  423. { col: 'gbn', type: 'string', size: 256, val: selGbn },
  424. { col: 'placecd', type: 'string', size: 256, val: selPlc },
  425. { col: 'duty', type: 'string', size: 256, val: 'A' },
  426. { col: 'drid', type: 'string', size: 256, val: drid },
  427. { col: 'fromtm', type: 'string', size: 256, val: fromtm },
  428. { col: 'totm', type: 'string', size: 256, val: totm }
  429. ],
  430. false);
  431. var oParam = {};
  432. oParam.id = "TRMNE09002";
  433. oParam.service = "ercareapp.ERPatMngt";
  434. oParam.method = "reqGetDrScheValidInfo";
  435. oParam.inds = "req=ds_send";
  436. oParam.outds = "ds_init_validinfo=validinfo";
  437. oParam.async = false;
  438. //oParam.callback = "cf_TRMNE09002";
  439. tranf_submit(oParam);
  440. var sValidYn = ds_init_validinfo.getColumn(0, 'validyn');
  441. var sScheYn = ds_init_validinfo.getColumn(0, 'scheyn');
  442. var sHoliYn = ds_init_validinfo.getColumn(0, 'holiyn');
  443. // 유효하지 않다면 메시지 박스를 보여준다
  444. if(sValidYn == 'N'){
  445. sysf_trace('sValidYn: ' + sValidYn + ', sScheYn: ' + sScheYn + ', sHoliYn: ' + sHoliYn);
  446. if(sScheYn == 'Y' && sHoliYn == 'N'){
  447. sysf_messageBox('같은 일자에 등록된 당직 정보가 있습니다.', 'E999');
  448. }
  449. else if(sScheYn == 'N' && sHoliYn == 'Y'){
  450. sysf_messageBox('해당 일자에 등록된 휴진 정보가 있습니다.', 'E999');
  451. }
  452. else if(sScheYn == 'Y' && sHoliYn == 'Y'){
  453. sysf_messageBox('같은 일자에 등록된 당직정보와 해당 일자에 등록된 휴진 정보가 있습니다.', 'E999');
  454. }
  455. return false;
  456. };
  457. return true;
  458. }
  459. //=======================================================================================
  460. // Event
  461. //---------------------------------------------------------------------------------------
  462. /******************************************************************
  463. * Argument :
  464. * Description : oninit 이벤트
  465. ******************************************************************/
  466. function SMMNE05400_oninit(obj:Form, e:InitEventInfo){
  467. }
  468. /******************************************************************
  469. * Argument :
  470. * Description : onload 이벤트
  471. ******************************************************************/
  472. function SMMNE05400_onload(obj:Form, e:LoadEventInfo){
  473. // 화면공통
  474. frmf_initForm(obj);
  475. //속도개선
  476. this.setTimer(0, 100);
  477. //fInit();
  478. //grdf_setRowTypeIcon(grd_workerlist, 0);
  479. //grdf_initGrid(grd_drlist);
  480. //grdf_initGrid(grd_workerlist);
  481. // grd_drlist.enableredraw = false;
  482. // grd_workerlist.useselcolor = false;
  483. // grd_workerlist.enableredraw = false;
  484. }
  485. /******************************************************************
  486. * Argument :
  487. * Description : onclose 이벤트
  488. ******************************************************************/
  489. function SMMNE05400_onclose(obj:Form, e:CloseEventInfo){
  490. }
  491. /******************************************************************
  492. * Argument :
  493. * Description : 조회 버큰 클릭 이벤트
  494. ******************************************************************/
  495. function group4_btn_search_onclick(obj:Button, e:ClickEventInfo){
  496. var isRefresh = isScheduleRefresh(false);
  497. if(isRefresh == 'N'){
  498. return;
  499. }
  500. var orddeptcd = group4.cmb_orddeptcd.value;
  501. if(utlf_isNull(orddeptcd)){
  502. sysf_messageBox("선택된 진료과가 없습니다.", "E999");
  503. return;
  504. }
  505. fGetDrInfo(orddeptcd); //선택된 진료과의 의사리스트조회
  506. fGetWorkScheduleList(orddeptcd);
  507. }
  508. /******************************************************************
  509. * Argument :
  510. * Description : bfmonth 버큰 클릭 이벤트
  511. ******************************************************************/
  512. function group4_btn_bfmonth_onclick(obj:Button, e:ClickEventInfo){
  513. fClkArrowBtn(obj.name);
  514. }
  515. /******************************************************************
  516. * Argument :
  517. * Description : afmonth 버튼 클릭 이벤트
  518. ******************************************************************/
  519. function group4_btn_afmonth_onclick(obj:Button, e:ClickEventInfo){
  520. fClkArrowBtn(obj.name);
  521. }
  522. /******************************************************************
  523. * Argument :
  524. * Description : bfyear 버튼 클릭 이벤트
  525. ******************************************************************/
  526. function group4_btn_bfyear_onclick(obj:Button, e:ClickEventInfo){
  527. fClkArrowBtn(obj.name);
  528. }
  529. /******************************************************************
  530. * Argument :
  531. * Description : afyear 버튼 클릭 이벤트
  532. ******************************************************************/
  533. function group4_btn_afyear_onclick(obj:Button, e:ClickEventInfo){
  534. fClkArrowBtn(obj.name);
  535. }
  536. var goback = false;
  537. /******************************************************************
  538. * Argument :
  539. * Description : 콤보 박스 아이템 변경 전 이벤트
  540. ******************************************************************/
  541. function group4_cmb_orddeptcd_canitemchange(obj:Combo, e:ItemChangeEventInfo){
  542. var isRefresh = isScheduleRefresh(false);
  543. if(isRefresh == 'N'){
  544. //goback = true;
  545. return false;
  546. }
  547. var orddeptcd = obj.innerdataset.getColumn(e.postindex, 'deptcd');
  548. fGetDrInfo(orddeptcd);
  549. fGetWorkScheduleList(orddeptcd);
  550. }
  551. /******************************************************************
  552. * Argument :
  553. * Description : 콤보 박스 아이템 변경 후 이벤트
  554. ******************************************************************/
  555. function group4_cmb_orddeptcd_onitemchanged(obj:Combo, e:ItemChangeEventInfo){
  556. if(goback){
  557. obj.index = e.preindex;
  558. goback = false;
  559. }
  560. }
  561. /******************************************************************
  562. * Argument :
  563. * Description :
  564. ******************************************************************/
  565. function grd_drlist_oncellclick(obj:Grid, e:GridClickEventInfo){
  566. lrow = e.row;
  567. //grd_drlist.redraw();
  568. }
  569. /******************************************************************
  570. * Argument :
  571. * Description : workerlist 마우스 우측버튼 클릭
  572. ******************************************************************/
  573. function grd_workerlist_onrbuttondown(obj:Grid, e:GridMouseEventInfo){
  574. var workdd = ds_grd_workerlist.getColumn(e.row, 'workdd');
  575. var drnm = ds_grd_workerlist.getColumn(e.row, 'drnm');
  576. var deptcd = ds_grd_workerlist.getColumn(e.row, 'orddeptcd');
  577. if(sysf_messageBox('[' + workdd + '/' + drnm+ '] 일정을', 'Q001') == 6){
  578. // 해당 일자에 사용자를 삭제한다
  579. fDelWorkDr(workdd, deptcd);
  580. }
  581. }
  582. /******************************************************************
  583. * Argument :
  584. * Description : workerlist 마우스 좌측버튼 클릭
  585. ******************************************************************/
  586. function grd_workerlist_onlbuttondown(obj:Grid, e:GridMouseEventInfo)
  587. {
  588. }
  589. /******************************************************************
  590. * Argument :
  591. * Description : 저장 버튼 클릭
  592. ******************************************************************/
  593. function button42_onclick(obj:Button, e:ClickEventInfo){
  594. var orddeptcd = ds_grd_workerlist.getColumn(0, 'orddeptcd');
  595. var srchym = ds_cond.getColumn(0,"srchym");
  596. dsf_createDsRow('ds_saveinfo', [
  597. { col: 'orddeptcd', type: 'string', size: 256, val: orddeptcd },
  598. { col: 'srchym', type: 'string', size: 256, val: srchym },
  599. { col: 'gbn', type: 'string', size: 256, val: 'E'},
  600. { col: 'monthcnt', type: 'string', size: 256,
  601. val: utlf_getDayCountForMonth(srchym.substr(0, 4), srchym.substr(4, 6)) }
  602. ],
  603. false);
  604. var oParam = {};
  605. oParam.id = "TXMNE05401";
  606. oParam.service = "ercareapp.ERPatMngt";
  607. oParam.method = "reqExecErProfscheList";
  608. oParam.inds = "refCond=ds_grd_workerlist saveinfo=ds_saveinfo";
  609. oParam.outds = "ds_grd_workerlist=workerinfolist";
  610. oParam.async = false;
  611. //oParam.callback = "cf_TXMNE05401";
  612. tranf_submit(oParam);
  613. }
  614. /******************************************************************
  615. * Argument :
  616. * Description : 출력 버튼 클릭
  617. ******************************************************************/
  618. function btn_prt_onclick(obj:Button, e:ClickEventInfo){
  619. // DOM 객체 설정
  620. var srchym = new String(group4.ipt_srchdd.value);
  621. trace(srchym);
  622. var worktitle = srchym.substring(0, 4) + '년 ' + srchym.substring(4, 6) + '월 전문의 당직리스트';
  623. var deptnm = group4.cmb_orddeptcd.text;
  624. ds_grd_workerlist.updatecontrol = false;
  625. ds_grd_workerlist.addColumn("orddeptnm","string");
  626. for (i=0; i<ds_grd_workerlist.rowcount; i++){
  627. ds_grd_workerlist.setColumn(i,"orddeptnm",deptnm);
  628. }
  629. ds_grd_workerlist.updatecontrol = true;
  630. var objDOM = rptf_createDOM();
  631. // 데이터셋 1
  632. rptf_setNodeListToDOM(objDOM, "root/main/workerinfo/workerinfolist", ds_grd_workerlist);
  633. rptf_setValueToDOM(objDOM, "/root/main/titleinfo/worktitle", worktitle);
  634. // 최상의노드 XML 스트링 추출
  635. var objParam = new Object();
  636. objParam.xml_data_XML1 = objDOM.documentElement.source;
  637. var option = "open=1;save=1;directprint=0;print=1;zoom=0;";
  638. rptf_exeReportPreview30(["RPMNE05400"],[objParam], option);
  639. }
  640. /******************************************************************
  641. * Argument :
  642. * Description : onbeforeclose 클릭
  643. ******************************************************************/
  644. function SMMNE05400_onbeforeclose(obj:Form, e:CloseEventInfo)
  645. {
  646. var isRefresh = isScheduleRefresh(false);
  647. if(isRefresh == 'N'){
  648. //goback = true;
  649. return false;
  650. }
  651. }
  652. function SMMNE05400_ontimer(obj:Form, e:TimerEventInfo)
  653. {
  654. if (e.timerid == 0) {
  655. this.killTimer(0);
  656. fInit();
  657. grdf_setRowTypeIcon(grd_workerlist, 0);
  658. grdf_initGrid(grd_drlist);
  659. grdf_initGrid(grd_workerlist);
  660. }
  661. }
  662. function grd_workerlist_oncellclick(obj:Grid, e:GridClickEventInfo)
  663. {
  664. // 좌측에 선택된 의사가 없으면 동작하면 안된다
  665. if(utlf_isNull(lrow)){
  666. return;
  667. }
  668. //선택된 당직대상자정보(id, nm)
  669. var drid = ds_grd_drlist.getColumn(lrow, 'drid');
  670. var drnm = ds_grd_drlist.getColumn(lrow, 'drnm');
  671. var orddeptcd = ds_grd_drlist.getColumn(lrow, 'orddeptcd');
  672. var nzone = ds_grd_drlist.getColumn(lrow, 'nzone');
  673. var hpno = ds_grd_drlist.getColumn(lrow, 'hpno');
  674. var selectedDD = ds_grd_workerlist.getColumn(e.row, 'workdd'); //선택된일자
  675. if(fCheckValid(selectedDD, 'E', '-', '', drid)){
  676. ds_grd_workerlist.setColumn(e.row, 'drid', drid);
  677. ds_grd_workerlist.setColumn(e.row, 'drnm', drnm);
  678. ds_grd_workerlist.setColumn(e.row, 'orddeptcd', orddeptcd);
  679. ds_grd_workerlist.setColumn(e.row, 'nzone', nzone);
  680. ds_grd_workerlist.setColumn(e.row, 'hpno', hpno);
  681. }
  682. }
  683. ]]></Script>
  684. </Form>
  685. </FDL>