SPMMB03700_수술예약스케줄관리.xfdl 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <FDL version="1.4">
  3. <TypeDefinition url="..\..\..\default_typedef.xml"/>
  4. <Form id="SPMMB03700" position="absolute 0 0 1175 855" titletext="수술예약스케줄관리" oninit="SPMMB03700_oninit" onload="SPMMB03700_onload">
  5. <Layouts>
  6. <Layout>
  7. <Button position="absolute 1119 30 1175 52" id="button3" class="btn3" text="닫기" anchor="top right" onclick="button3_onclick"/>
  8. <Static text="수술 예약 스케줄 관리" position="absolute 0 0 180 25" align="align:center middle;" id="caption11" class="tit_1"/>
  9. <Grid position="absolute 0 62 1175 855" id="grd_calendar" binddataset="ds_weeklist" selecttype="cell" anchor="all" cellsizingtype="col" oncelldblclick="grd_calendar_oncelldblclick">
  10. <Formats>
  11. <Format id="default">
  12. <Columns>
  13. <Column size="70"/>
  14. <Column size="207"/>
  15. <Column size="207"/>
  16. <Column size="207"/>
  17. <Column size="207"/>
  18. <Column size="207"/>
  19. <Column size="70"/>
  20. </Columns>
  21. <Rows>
  22. <Row size="21" band="head"/>
  23. <Row size="20"/>
  24. </Rows>
  25. <Band id="head">
  26. <Cell style="background:white;" text="일"/>
  27. <Cell col="1" style="background:white;" text="월"/>
  28. <Cell col="2" style="background:white;" text="화"/>
  29. <Cell col="3" style="background:white;" text="수"/>
  30. <Cell col="4" style="background:white;" text="목"/>
  31. <Cell col="5" style="background:white;" text="금"/>
  32. <Cell col="6" style="background:white;" text="토"/>
  33. </Band>
  34. <Band id="body">
  35. <Cell style="align:left middle;line:EXPR(fSetLine(currow));background:white;background2:white;color:EXPR(fSetColorHoliday(currow, sun));font:EXPR(fSetFont(currow));selectbackground:#ffcc66ff;" text="bind:sun"/>
  36. <Cell col="1" style="align:left middle;line:EXPR(fSetLine(currow));background:white;background2:white;color:EXPR(fSetColorHoliday(currow,mon));font:EXPR(fSetFont(currow));selectbackground:#ffcc66ff;" text="bind:mon"/>
  37. <Cell col="2" style="align:left middle;line:EXPR(fSetLine(currow));background:white;background2:white;color:EXPR(fSetColorHoliday(currow,tue));font:EXPR(fSetFont(currow));selectbackground:#ffcc66ff;" text="bind:tue"/>
  38. <Cell col="3" style="align:left middle;line:EXPR(fSetLine(currow));background:white;background2:white;color:EXPR(fSetColorHoliday(currow,wed));font:EXPR(fSetFont(currow));selectbackground:#ffcc66ff;" text="bind:wed"/>
  39. <Cell col="4" style="align:left middle;line:EXPR(fSetLine(currow));background:white;background2:white;color:EXPR(fSetColorHoliday(currow,thu));font:EXPR(fSetFont(currow));selectbackground:#ffcc66ff;" text="bind:thu"/>
  40. <Cell col="5" style="align:left middle;line:EXPR(fSetLine(currow));background:white;background2:white;color:EXPR(fSetColorHoliday(currow,fri));font:EXPR(fSetFont(currow));selectbackground:#ffcc66ff;" text="bind:fri"/>
  41. <Cell col="6" style="align:left middle;line:EXPR(fSetLine(currow));background:white;background2:white;color:EXPR(fSetColorHoliday(currow,sat));font:EXPR(fSetFont(currow));selectbackground:#ffcc66ff;" text="bind:sat"/>
  42. </Band>
  43. </Format>
  44. </Formats>
  45. </Grid>
  46. <Grid position="absolute 5 495 555 736" id="grd_schemainlist" visible="false" binddataset="ds_schemainlist">
  47. <Formats>
  48. <Format id="default">
  49. <Columns>
  50. <Column size="90"/>
  51. <Column size="316"/>
  52. <Column size="100"/>
  53. </Columns>
  54. <Rows>
  55. <Row size="24" band="head"/>
  56. <Row size="24"/>
  57. </Rows>
  58. <Band id="head">
  59. <Cell text="날짜"/>
  60. <Cell col="1" text="예약TEXT"/>
  61. <Cell col="2"/>
  62. </Band>
  63. <Band id="body">
  64. <Cell text="bind:opschedd"/>
  65. <Cell col="1" text="bind:schetxt"/>
  66. <Cell col="2" text="bind:instcd"/>
  67. </Band>
  68. </Format>
  69. </Formats>
  70. </Grid>
  71. <Div position="absolute 770 3 1049 53" id="grp_calendar" style="background:#ffeeffff;border:3 solid #ffccffff ;" anchor="top right">
  72. <Layouts>
  73. <Layout>
  74. <Static text="월" position="absolute 211 0 246 35" align="align:center top;" id="caption3" anchor="top right" style="color:#006600ff;font:맑은 고딕,20,bold;"/>
  75. <Static text="년" position="absolute 114 0 149 35" align="align:center top;" id="caption2" anchor="top right" style="color:#006600ff;font:맑은 고딕,20,bold;"/>
  76. <Static id="opt_year" position="absolute 26 -1 110 43" style="color:#006600ff;align:right top;font:맑은 고딕,22,bold;" text="2014" anchor="top right"/>
  77. <Static id="opt_month" position="absolute 155 -1 207 43" style="color:#006600ff;align:right top;font:맑은 고딕,22,bold;" text="10" anchor="top right"/>
  78. </Layout>
  79. </Layouts>
  80. </Div>
  81. <Button position="absolute 1059 5 1115 27" id="button1" class="btn6" text="출력" anchor="top right" onclick="button1_onclick"/>
  82. <Static position="absolute 432 1 752 36" align="align:right middle;" id="caption1" style="color:#cc0000ff;align:right middle;font:맑은 고딕,14,bold;" anchor="top right"/>
  83. <Button position="absolute 1119 5 1175 27" id="button2" class="btn7" text="엑셀" anchor="top right" onclick="button2_onclick"/>
  84. <Button position="absolute 1059 30 1115 52" id="button4" class="btn1" text="조회" anchor="top right" onclick="button4_onclick"/>
  85. <Static text="※ 수술예약스케줄은 최대 5건까지 표현됩니다." position="absolute 5 36 288 56" id="caption4" style="color:#0033ccff;font:Dotum,9,bold;"/>
  86. <Static text="( 상세조회시, 날짜를 더블클릭 )" position="absolute 295 39 506 54" id="caption5" style="color:#006600ff;font:Dotum,9,bold;"/>
  87. </Layout>
  88. </Layouts>
  89. <Objects>
  90. <Dataset id="ds_weeklist" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  91. <ColumnInfo>
  92. <Column id="sun" type="STRING" size="256"/>
  93. <Column id="mon" type="STRING" size="256"/>
  94. <Column id="tue" type="STRING" size="256"/>
  95. <Column id="wed" type="STRING" size="256"/>
  96. <Column id="thu" type="STRING" size="256"/>
  97. <Column id="fri" type="STRING" size="256"/>
  98. <Column id="sat" type="STRING" size="256"/>
  99. </ColumnInfo>
  100. <Rows>
  101. <Row/>
  102. </Rows>
  103. </Dataset>
  104. <Dataset id="ds_search" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  105. <ColumnInfo>
  106. <Column id="instcd" type="STRING" size="256"/>
  107. <Column id="opschedt" type="STRING" size="256"/>
  108. <Column id="perfdeptcd" type="STRING" size="256"/>
  109. <Column id="baseym" type="STRING" size="256"/>
  110. <Column id="scheperfdrid" type="STRING" size="256"/>
  111. </ColumnInfo>
  112. <Rows>
  113. <Row/>
  114. </Rows>
  115. </Dataset>
  116. <Dataset id="ds_calendar" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  117. <ColumnInfo>
  118. <Column id="year" type="STRING" size="256"/>
  119. <Column id="month" type="STRING" size="256"/>
  120. <Column id="perfdeptnm" type="STRING" size="256"/>
  121. </ColumnInfo>
  122. <Rows>
  123. <Row/>
  124. </Rows>
  125. </Dataset>
  126. <Dataset id="ds_carlendarlist" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  127. <ColumnInfo>
  128. <Column id="mon" type="STRING" size="256" sumtext="월요일"/>
  129. <Column id="tue" type="STRING" size="256" sumtext="화요일"/>
  130. <Column id="wed" type="STRING" size="256" sumtext="수요일"/>
  131. <Column id="thu" type="STRING" size="256" sumtext="목요일"/>
  132. <Column id="fri" type="STRING" size="256" sumtext="금요일"/>
  133. <Column id="sat" type="STRING" size="256" sumtext="토요일"/>
  134. <Column id="sun" type="STRING" size="256" sumtext="일요일"/>
  135. </ColumnInfo>
  136. </Dataset>
  137. <Dataset id="ds_schemainlist" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  138. <ColumnInfo>
  139. <Column id="instcd" type="STRING" size="256" sumtext="일자"/>
  140. <Column id="opschedd" type="STRING" size="256" sumtext="수술일자"/>
  141. <Column id="schetxt" type="STRING" size="256" sumtext="예약txt"/>
  142. </ColumnInfo>
  143. </Dataset>
  144. <Dataset id="ds_dutdatelist" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  145. <ColumnInfo>
  146. <Column id="basedd" type="STRING" size="256" sumtext="기준일자"/>
  147. <Column id="schday" type="STRING" size="256" sumtext="기준일자"/>
  148. <Column id="dutflag" type="STRING" size="256" sumtext="기준일자"/>
  149. <Column id="holiflag" type="STRING" size="256" sumtext="휴일구분"/>
  150. <Column id="holinm" type="STRING" size="256" sumtext="휴일명"/>
  151. <Column id="dayflag" type="STRING" size="256" sumtext="요일구분"/>
  152. <Column id="instcd" type="STRING" size="256" sumtext="기관코드"/>
  153. </ColumnInfo>
  154. </Dataset>
  155. </Objects>
  156. <Bind>
  157. <BindItem id="item0" compid="caption1" propid="text" datasetid="ds_calendar" columnid="perfdeptnm"/>
  158. <BindItem id="item1" compid="grp_calendar.opt_year" propid="text" datasetid="ds_calendar" columnid="year"/>
  159. <BindItem id="item2" compid="grp_calendar.opt_month" propid="text" datasetid="ds_calendar" columnid="month"/>
  160. </Bind>
  161. <Script type="xscript4.0"><![CDATA[/***************************************************************************************
  162. * System Name :
  163. * Job Name :
  164. * Creator :
  165. * Make Date : 2014-08-29
  166. * Description :
  167. *---------------------------------------------------------------------------------------
  168. * Modify Date Modifier Modify Description
  169. *---------------------------------------------------------------------------------------
  170. * 2014-08-29 Live Converter TF->XP
  171. *
  172. *---------------------------------------------------------------------------------------
  173. ****************************************************************************************/
  174. include "com_commonxp::comm_main.xjs";
  175. include "emr_prcpmngtxp::MMO001.xjs";
  176. var ONE_ITEM_ROWS = 6; // 요일 날짜 라인 + 내용 다섯 라인 = 총 6라인
  177. function SPMMB03700_oninit(obj:Form, e:InitEventInfo)
  178. {
  179. frmf_initForm(obj);
  180. }
  181. function SPMMB03700_onload(obj:Form, e:LoadEventInfo)
  182. {
  183. fInitialize();
  184. }
  185. function button1_onclick(obj:Button, e:ClickEventInfo)
  186. {
  187. var objDOM = rptf_createDOM(); // DOM 객체 설정
  188. rptf_setNodeListToDOM(objDOM, "/root/hidden/calendar", ds_calendar); // 데이터셋 1
  189. rptf_setNodeListToDOM(objDOM, "/root/hidden/calendar/weeklist/list", ds_weeklist); // 데이터셋 2
  190. var objParam = new Object();
  191. objParam.xml_data_XML1 = objDOM.documentElement.source; // 최상의노드 XML 스트링 추출
  192. var option = "open=1;save=1;directprint=0;print=1;zoom=0;callback=cbf_rpt_onFinishPrintXML";
  193. rptf_exeReportPreview30(["RPMMO03700"],[objParam], option);
  194. }
  195. function button2_onclick(obj:Button, e:ClickEventInfo)
  196. {
  197. grdf_exportExcel(grd_calendar, "수술예약스케줄_" + utlf_getCurrentDate(), "수술예약스케줄", true);
  198. }
  199. function button4_onclick(obj:Button, e:ClickEventInfo)
  200. {
  201. fSearch();
  202. }
  203. function button3_onclick(obj:Button, e:ClickEventInfo)
  204. {
  205. close();
  206. }
  207. function grd_calendar_oncelldblclick(obj:Grid, e:GridClickEventInfo)
  208. {
  209. if( e.row % ONE_ITEM_ROWS == 0){
  210. var month = ds_calendar.getColumn(0, "month");
  211. var year = ds_calendar.getColumn(0, "year");
  212. frmf_setParameter("SPMMB03700_param_opschedt" , year+month );
  213. frmf_setParameter("SPMMB03700_param_opscheday" , ds_weeklist.getColumn(e.row, lf_getBindCellName(obj, e.col)).substring(0,2) );
  214. frmf_setParameter("SPMMB03700_param_perfdrid" , ds_search.getColumn(0, "scheperfdrid"));
  215. frmf_setParameter("SPMMB03700_param_perfdeptcd" , ds_search.getColumn(0, "perfdeptcd"));
  216. frmf_open("SPMMB03800", "SPMMB03800", null, null, null, null, null, null, null, null, null, null, "M");
  217. }
  218. }
  219. // 초기화
  220. function fInitialize(){
  221. ds_weeklist.rowposition = -1; // 화면 띄울 때 셀 선택 되지 않도록 함
  222. var opschedt = opener.frmf_getParameter("SMMMO05700_param_opschedt");
  223. var perfdeptcd = opener.frmf_getParameter("SMMMO05700_param_perfdeptcd");
  224. var perfdeptnm = opener.frmf_getParameter("SMMMO05700_param_perfdeptnm");
  225. var scheperfdrid = opener.frmf_getParameter("SMMMO05700_param_scheperfdrid");
  226. var scheperfdrnm = opener.frmf_getParameter("SMMMO05700_param_scheperfdrnm");
  227. ds_search.setColumn(0, "instcd" , sysf_getUserInfo("dutplceinstcd") );
  228. ds_search.setColumn(0, "opschedt" , opschedt );
  229. ds_search.setColumn(0, "perfdeptcd" , perfdeptcd );
  230. ds_search.setColumn(0, "baseym" , opschedt.substring(0,6) );
  231. ds_search.setColumn(0, "scheperfdrid" , scheperfdrid );
  232. if( !utlf_isNull(scheperfdrid) )
  233. ds_calendar.setColumn(0, "perfdeptnm" , "【" + perfdeptnm + " - " + scheperfdrnm + " 】" );
  234. else
  235. ds_calendar.setColumn(0, "perfdeptnm" , "【" + perfdeptnm + " - 전체 】" );
  236. ds_calendar.setColumn(0, "year" , opschedt.substring(0,4) );
  237. ds_calendar.setColumn(0, "month" , opschedt.substring(4,6) );
  238. // 조회
  239. fSearch();
  240. }
  241. // 조회
  242. function fSearch() {
  243. var oParam = {};
  244. oParam.id = "TRMMO05708";
  245. oParam.service = "prcpmngtapp.OpMngt";
  246. oParam.method = "reqGetOpScheMainList";
  247. oParam.inds = "req=ds_search";
  248. oParam.outds = "ds_carlendarlist=carlendarlist ds_schemainlist=schemainlist ds_dutdatelist=dutdatelist";
  249. oParam.async = true;
  250. oParam.callback = "cf_TRMMO05708";
  251. tranf_submit(oParam);
  252. }
  253. function cf_TRMMO05708(sSvcId, nErrorCode, sErrorMsg) {
  254. if(nErrorCode < 0) return;
  255. setCalendar();
  256. fSetColorHoliday();
  257. ds_weeklist.rowposition = -1;
  258. }
  259. function setCalendar(){
  260. ds_weeklist.clearData();
  261. var arrDay = new Array("sun","mon","tue","wed","thu","fri","sat");
  262. var scheCnt = ds_schemainlist.rowcount;
  263. var carCnt = ds_carlendarlist.rowcount;
  264. var dutCnt = ds_dutdatelist.rowcount;
  265. var rowCnt = carCnt * ONE_ITEM_ROWS;
  266. var weekIndex = 0;
  267. // 달력 전체 행을 우선 생성
  268. for( var i = 0; i < rowCnt; i++ ){
  269. ds_weeklist.addRow();
  270. // 요일별 날짜 표시
  271. var week = i % ONE_ITEM_ROWS;
  272. if(week == 0) {
  273. for( var j = 0; j < arrDay.length ; j++ ) {
  274. var date = ds_carlendarlist.getColumn(weekIndex, arrDay[j]);
  275. var day = date;
  276. if( utlf_isNull(day) ) continue;
  277. if( day.length == 1 ) day = "0" + day;
  278. for( var k = 0; k < dutCnt; k++ ) {
  279. var dd = ds_dutdatelist.getColumn(k, "schday");
  280. var holinm = ds_dutdatelist.getColumn(k, "holinm");
  281. if( day == dd && !utlf_isNull(holinm)){
  282. if(ds_dutdatelist.getColumn(k, "dutflag") == "8")
  283. date += " ( " + holinm + " )";
  284. }
  285. }
  286. ds_weeklist.setColumn(i, arrDay[j], date);
  287. }
  288. weekIndex++;
  289. }
  290. }
  291. // 일자별 내용 입력 및 색상 표시
  292. for( var i = 0; i < ds_weeklist.rowcount; i++ ){
  293. var week = i % ONE_ITEM_ROWS;
  294. if(week == 0) {
  295. // 일자별 내용 입력
  296. for( var j = 0; j < arrDay.length ; j++ ) {
  297. var day = ds_weeklist.getColumn(i, arrDay[j]);
  298. if( utlf_isNull(day) ) continue;
  299. if( day.length == 1 ) day = "0" + day;
  300. var scheIndex = 1;
  301. for( var k = 0; k < scheCnt; k++ ) {
  302. var dd = ds_schemainlist.getColumn(k, "opschedd").substring(6,8);
  303. if(dd == day) {
  304. if(scheIndex >= ONE_ITEM_ROWS) {
  305. ds_weeklist.setColumn(i, arrDay[j], ds_weeklist.getColumn(i, arrDay[j]) + " ★");
  306. break;
  307. }
  308. ds_weeklist.setColumn(i + scheIndex, arrDay[j], ds_schemainlist.getColumn(k, "schetxt"));
  309. scheIndex++;
  310. }
  311. }
  312. }
  313. }
  314. }
  315. }
  316. function fSetColorHoliday(currow, day) {
  317. var color = "default";
  318. if((currow % ONE_ITEM_ROWS == 0) && !utlf_isNull(day)) {
  319. var date = day.toString();
  320. if( date.length == 1 ) {
  321. date = "0" + date;
  322. } else if( date.length > 2 ) {
  323. var tempDate = date.split(' ');
  324. if(tempDate[0].length == 1)
  325. date = "0" + tempDate[0]
  326. else
  327. date = tempDate[0];
  328. }
  329. var dutflag = ds_dutdatelist.lookup("schday", date, "dutflag");
  330. if( dutflag == "8" ){
  331. color = "#ff0000";
  332. }else if( dutflag == "4" ){
  333. color = "#3366ff";
  334. }else if( dutflag == "0" ){
  335. color = "#000000";
  336. }
  337. }
  338. return color;
  339. }
  340. function fSetFont(currow) {
  341. var font = "Dotum,9";
  342. if((currow % ONE_ITEM_ROWS == 0)) {
  343. font = "Dotum,9,bold";
  344. }
  345. return font;
  346. }
  347. function fSetLine(currow) {
  348. var line = "0 solid #BAC5CC, 1 solid #BAC5CC, 0 solid #BAC5CC, 1 solid #BAC5CC";
  349. if((currow % ONE_ITEM_ROWS == 0))
  350. line = "1 solid #BAC5CC, 1 solid #BAC5CC, 0 solid #BAC5CC, 1 solid #BAC5CC";
  351. else if((currow % ONE_ITEM_ROWS == ONE_ITEM_ROWS - 1))
  352. line = "0 solid #BAC5CC, 1 solid #BAC5CC, 1 solid #BAC5CC, 1 solid #BAC5CC";
  353. return line;
  354. }
  355. ]]></Script>
  356. </Form>
  357. </FDL>