SPZUM00600_전공의시간외사유입력.xfdl 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <FDL version="1.5">
  3. <TypeDefinition url="..\..\..\default_typedef.xml"/>
  4. <Form id="SPZUM00600" classname="Guide_SA_01" inheritanceid="" position="absolute 0 0 350 440" titletext="전공의 추가수련시간 신청사유 입력" class="frm_POP" onload="SPZUM00600_onload" oninit="SPZUM00600_oninit">
  5. <Layouts>
  6. <Layout>
  7. <Static id="stt_titleText" text="전공의 추가수련시간 신청사유 입력" class="sta_POP_title" position="absolute 12 8 312 28" usedecorate="false" wordwrap="none" transparenthittest="true"/>
  8. <Button id="btn_close" taborder="8" anchor="default" position="absolute 328 12 342 25" positiontype="position" class="btn_POP_cls" onclick="btn_cancel_onclick"/>
  9. <Button id="btn_confirm" taborder="6" text="신청" class="btn5" position="absolute 129 411 173 431" onclick="btn_confirm_onclick"/>
  10. <Static id="stt_subTitle" text="추가시간" class="tit_2" position="absolute 12 232 288 252" style="linespace:2;background:URL('theme://images/icon_tit_bullet2.png');align:left top;"/>
  11. <Static id="stt_userNm" position="absolute 116 193 284 214" style="font:Dotum,11,bold;"/>
  12. <Button id="btn_cancel" taborder="7" text="취소" class="btn5" position="absolute 177 411 221 431" onclick="btn_cancel_onclick"/>
  13. <Static id="stt_subTitle00" text="요청사유" class="tit_2" position="absolute 12 97 92 117" style="linespace:2;background:URL('theme://images/icon_tit_bullet2.png');align:left top;"/>
  14. <Static id="cap_capslock" text="(상세히 기재)" visible="true" position="absolute 90 97 180 117" style="color:#ff0000ff;bordertype:round 3 3 ;align:left middle;font:Dotum,9,bold;"/>
  15. <TextArea id="txt_detlresn" taborder="0" position="absolute 12 120 340 220" wordwrap="word" onkeydown="txt_detlresn_onkeydown"/>
  16. <Calendar id="ipt_fromdd" taborder="1" onchanged="group2_ipt_orddd_onchanged" ontextchanged="group2_ipt_orddd_ontextchanged" class="input_default" enable="true" position="absolute 12 255 112 274" anchor="left top"/>
  17. <MaskEdit id="ipt_fromtm" taborder="2" type="string" mask="##:##" maskchar=" " trimtype="both" autoselect="true" position="absolute 115 255 165 274" anchor="left top" style="align:center middle;"/>
  18. <Static id="stc_fromto" text="~" position="absolute 168 255 183 274" style="align:center middle;"/>
  19. <Calendar id="ipt_todd" taborder="3" onchanged="group2_ipt_orddd_onchanged" ontextchanged="group2_ipt_orddd_ontextchanged" class="input_default" position="absolute 186 255 286 274" anchor="left top" oneditclick="ipt_todd_oneditclick"/>
  20. <MaskEdit id="ipt_totm" taborder="4" type="string" mask="##:##" maskchar=" " trimtype="both" autoselect="true" position="absolute 289 255 339 274" anchor="left top" style="align:center middle;"/>
  21. <Static id="stt_subTitle01" text="참고" class="tit_2" position="absolute 12 282 288 302" style="linespace:2;background:URL('theme://images/icon_tit_bullet2.png');align:left top;"/>
  22. <Grid id="grd_remfact" class="grd_Search_Menu" taborder="9" binddataset="ds_remfact" scrollbars="none" scrollpixel="all" useinputpanel="false" autofittype="col" onkeydown="div_searchMenu_grd_search_menu_onkeydown" onmousemove="div_searchMenu_grd_search_menu_onmousemove" oncelldblclick="div_searchMenu_grd_search_menu_oncelldblclick" position="absolute 12 305 340 405" anchor="all" tooltiptype="hover" style="border:1 solid #808080ff ;font:Dotum,8;">
  23. <Formats>
  24. <Format id="default">
  25. <Columns>
  26. <Column size="328"/>
  27. </Columns>
  28. <Rows>
  29. <Row size="100"/>
  30. </Rows>
  31. <Band id="body">
  32. <Cell displaytype="decoratetext" edittype="none" style="align:left middle;padding:0 0 0 5;font:Dotum,13;linespace:0;" text="bind:remfact" wordwrap="char" editdisplay="display"/>
  33. </Band>
  34. </Format>
  35. </Formats>
  36. </Grid>
  37. <Static id="stt_subTitle02" text="당일 근무시간" class="tit_2" position="absolute 12 43 288 63" style="linespace:2;background:URL('theme://images/icon_tit_bullet2.png');align:left top;"/>
  38. <Edit id="ipt_workdtm" taborder="13" inputtype="number" maxlength="2" autoselect="true" class="input_search" position="absolute 12 66 340 85" readonly="true"/>
  39. </Layout>
  40. </Layouts>
  41. <Bind>
  42. <BindItem id="item29" compid="ipt_fromdd" propid="value" datasetid="ds_send_reqdata" columnid="fromdd"/>
  43. <BindItem id="item51" compid="ipt_fromtm" propid="value" datasetid="ds_send_reqdata" columnid="fromtm"/>
  44. <BindItem id="item3" compid="stc_fromto" propid="text" datasetid="ds_init" columnid="erresn"/>
  45. <BindItem id="item0" compid="ipt_todd" propid="value" datasetid="ds_send_reqdata" columnid="todd"/>
  46. <BindItem id="item1" compid="ipt_totm" propid="value" datasetid="ds_send_reqdata" columnid="totm"/>
  47. <BindItem id="item5" compid="txt_detlresn" propid="value" datasetid="ds_send_reqdata" columnid="detlresn"/>
  48. <BindItem id="item17" compid="ipt_workdtm" propid="value" datasetid="ds_today_work" columnid="workdtm"/>
  49. </Bind>
  50. <Objects>
  51. <Dataset id="ds_result" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false"/>
  52. <Dataset id="ds_send_reqdata" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  53. <ColumnInfo>
  54. <Column id="instcd" type="STRING" size="256" sumtext="기관코드"/>
  55. <Column id="userid" type="STRING" size="256" sumtext="사용자ID"/>
  56. <Column id="deptcd" type="STRING" size="256" sumtext="부서코드"/>
  57. <Column id="fromdd" type="STRING" size="256" sumtext="추가시작일자"/>
  58. <Column id="fromtm" type="STRING" size="256" sumtext="추가시작시각"/>
  59. <Column id="todd" type="STRING" size="256" sumtext="추가종료일자"/>
  60. <Column id="totm" type="STRING" size="256" sumtext="추가종료시각"/>
  61. <Column id="addtm" type="STRING" size="256" sumtext="추가시간"/>
  62. <Column id="detlresn" type="STRING" size="256" sumtext="요청사유"/>
  63. </ColumnInfo>
  64. <Rows>
  65. <Row/>
  66. </Rows>
  67. </Dataset>
  68. <Dataset id="ds_remfact" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  69. <ColumnInfo>
  70. <Column id="remfact" type="STRING" size="500" sumtext="참고사항"/>
  71. </ColumnInfo>
  72. <Rows>
  73. <Row>
  74. <Col id="remfact"/>
  75. </Row>
  76. </Rows>
  77. </Dataset>
  78. <Dataset id="ds_today_work" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false"/>
  79. </Objects>
  80. <Script type="xscript4.0"><![CDATA[/***************************************************************************************
  81. * System Name : HIT
  82. * Job Name :
  83. * File Name : SPZUM00600_전공의시간외사유입력.xfdl
  84. * Creator : 19338
  85. * Make Date : 2020-02-24
  86. *
  87. * Description : 전공의 근무시간외 로그인사유를 입력한다.
  88. *---------------------------------------------------------------------------------------
  89. * Modify Date Modifier Modify Description
  90. *---------------------------------------------------------------------------------------
  91. * 2020-02-24 19338 최초작성
  92. *---------------------------------------------------------------------------------------
  93. ****************************************************************************************/
  94. //=======================================================================================
  95. // Lib Include
  96. //---------------------------------------------------------------------------------------
  97. include "com_commonxp::comm_main.xjs"
  98. //=======================================================================================
  99. // Global Form Variable
  100. //---------------------------------------------------------------------------------------
  101. // var lgv_bPwdvalid = false;
  102. // var lgv_bExcept = true;
  103. function SPZUM00600_oninit(obj:Form, e:InitEventInfo)
  104. {
  105. frmf_initForm(this);
  106. }
  107. function SPZUM00600_onload(obj:Form, e:LoadEventInfo)
  108. {
  109. var instcd = sysf_getUserInfo("dutplceinstcd");
  110. var userid = sysf_getUserInfo("userid");
  111. ds_send_reqdata.setColumn(0, "instcd", instcd);
  112. //ds_send_reqdata.setColumn(0, "deptcd", sDeptcd);
  113. ds_send_reqdata.setColumn(0, "userid", userid);
  114. // 당일 근무 시간 조회 및 초기 설정
  115. fgetTodayWorkTm();
  116. var remfact = "<fs v='9'>* 추가시간 입력 범위내 EMR 인증저장 가능</fs>\n\n" +
  117. "<fs v='9'>* <b v='true'><fc v='red'>주 8시간</fc></b> 이내 신청 가능(1일 최대 4시간)</fs>\n\n" +
  118. "<fs v='9'>* 신청 후 부서장 <b v='true'><fc v='red'>승인 필수</fc></b>(사후 승인 가능)</fs>";
  119. //"<b v='true'><fc v='red'>" + textArr[4] + "</fc></b>"
  120. ds_remfact.setColumn(0, "remfact", remfact);
  121. }
  122. //=======================================================================================
  123. // Function
  124. //---------------------------------------------------------------------------------------
  125. // 당일 근무 시간 조회 및 초기 설정
  126. function fgetTodayWorkTm()
  127. {
  128. var oParam = {};
  129. oParam.id = "TRZUM006000";
  130. oParam.service = "hismainapp.Login";
  131. oParam.method = "reqGetResiWorkInfo";
  132. oParam.inds = "req=ds_send_reqdata";
  133. oParam.outds = "ds_today_work=result";
  134. oParam.async = false;
  135. oParam.callback = "cf_TRZUM006000";
  136. tranf_submit(oParam);
  137. }
  138. // 당일 근무 시간 조회 콜백
  139. function cf_TRZUM006000(sSvcId, nErrorCode, sErrorMsg){
  140. if(nErrorCode == 0){
  141. var work = ds_today_work.getColumn(0, "work");
  142. var curDd = utlf_getCurrentDate();
  143. var curTm = utlf_getCurrentTime().substring(0, 4);
  144. if(!utlf_isNull(work)){
  145. ipt_workdtm.value = work;
  146. } else {
  147. var fromdd = ds_today_work.getColumn(0, "fromdd");
  148. var fromtm = ds_today_work.getColumn(0, "fromtm");
  149. var todd = ds_today_work.getColumn(0, "todd");
  150. var totm = ds_today_work.getColumn(0, "totm");
  151. var workDtm;
  152. workDtm = utlf_getFormat(fromdd, "@@@@-@@-@@");
  153. workDtm += " ";
  154. workDtm += utlf_getFormat(fromtm, "@@:@@");
  155. workDtm += " ~ ";
  156. workDtm += utlf_getFormat(todd, "@@@@-@@-@@");
  157. workDtm += " ";
  158. workDtm += utlf_getFormat(totm, "@@:@@");
  159. ipt_workdtm.value = workDtm;
  160. // 신청 시작 시간 Set
  161. if(todd > curDd){
  162. curDd = todd;
  163. }
  164. if(totm > curTm){
  165. curTm = totm;
  166. }
  167. }
  168. //curTm = utlf_rPad(curTm.substring(0,3), 4, "0");
  169. ds_send_reqdata.setColumn(0, "fromdd", curDd);
  170. ds_send_reqdata.setColumn(0, "fromtm", curTm);
  171. ds_send_reqdata.setColumn(0, "todd", curDd);
  172. } else {
  173. // 에러처리
  174. sysf_messageBox(sErrorMsg, "E");
  175. }
  176. }
  177. function btn_confirm_onclick(obj:Button, e:ClickEventInfo)
  178. {
  179. var fromDd = ds_send_reqdata.getColumn(0, "fromdd");
  180. var fromTm = ds_send_reqdata.getColumn(0, "fromtm");
  181. var toDd = ds_send_reqdata.getColumn(0, "todd");
  182. var toTm = ds_send_reqdata.getColumn(0, "totm");
  183. // if(fromDtm < curDtm){
  184. // sysf_messageBox("추가시간은 현재시간 이후 시간을 ", "C001"); // 입력하십시오 !
  185. // ipt_fromtm.setFocus();
  186. // return;
  187. // }
  188. if(utlf_isNull(txt_detlresn.value))
  189. {
  190. sysf_messageBox("요청사유는", "I003"); // 필수입력입니다.
  191. txt_detlresn.setFocus();
  192. return;
  193. }
  194. if(txt_detlresn.value.length < 5){
  195. sysf_messageBox("요청사유를 상세히 입력", "I008"); // 하십시오.
  196. txt_detlresn.setFocus();
  197. return;
  198. }
  199. if((toDd+toTm) < (fromDd+fromTm))// || !utlf_isValidDateTime(ds_send_reqdata.getColumn(0, "fromtm"), "hh") || !utlf_isValidDateTime(ds_send_reqdata.getColumn(0, "totm"), "hh"))
  200. {
  201. sysf_messageBox("추가시간(시작/종료)을", "I007"); // 확인하십시오.
  202. ipt_totm.setFocus();
  203. return;
  204. }
  205. var work = ds_today_work.getColumn(0, "work");
  206. if(utlf_isNull(work)){
  207. var workTodd = ds_today_work.getColumn(0, "todd");
  208. var workTtotm = ds_today_work.getColumn(0, "totm");
  209. if((fromDd+fromTm) < (workTodd+workTtotm)){
  210. sysf_messageBox("금일 근무시간 이후 부터 신청", "I006"); // 가능합니다.
  211. ipt_fromdd.value = workTodd;
  212. ipt_fromtm.value = workTtotm;
  213. ipt_fromtm.setFocus();
  214. return;
  215. }
  216. }
  217. var addmi = utlf_getEpTime2(fromDd+fromTm, toDd+toTm) / (60 * 1000);
  218. if(addmi < 5)
  219. {
  220. sysf_messageBox("최소 5분이상 신청", "I006"); // 가능합니다.
  221. ipt_totm.setFocus();
  222. return;
  223. }
  224. var addtm = utlf_round(utlf_getEpTime2(fromDd+fromTm, toDd+toTm) / (60 * 60 * 1000), 2)
  225. if(addtm > 4)
  226. {
  227. sysf_messageBox("일일 최대 4시간까지 신청", "I006"); // 가능합니다.
  228. ipt_totm.setFocus();
  229. return;
  230. }
  231. if(utlf_isNull(ipt_fromdd.value) || utlf_isNull(ipt_fromtm.value) || utlf_isNull(ipt_todd.value) || utlf_isNull(ipt_totm.value)){
  232. sysf_messageBox("추가시간은 ", "I003"); // 필수입력입니다.
  233. return;
  234. }
  235. ds_send_reqdata.setColumn(0, "fromtm", fromTm);
  236. ds_send_reqdata.setColumn(0, "totm", toTm);
  237. ds_send_reqdata.setColumn(0, "addtm", addtm);
  238. var oParam = {};
  239. oParam.id = "TRZUM006001";
  240. oParam.service = "hismainapp.Login";
  241. oParam.method = "reqSetResiOvtLoginInfo";
  242. oParam.inds = "req=ds_send_reqdata";
  243. oParam.outds = "ds_result=result";
  244. oParam.async = false;
  245. oParam.callback = "cf_TRZUM006001";
  246. tranf_submit(oParam);
  247. }
  248. // 예외 로그인 사유 저장 콜백
  249. function cf_TRZUM006001(sSvcId, nErrorCode, sErrorMsg){
  250. if(nErrorCode == 0){
  251. //trace(ds_result.saveXML());
  252. var msg = ds_result.getColumn(0, "msg");
  253. if(!utlf_isNull(msg)){
  254. sysf_messageBox(msg);
  255. } else {
  256. sysf_messageBox("신청이 ", "I002"); // 완료되었습니다.
  257. this.close();
  258. }
  259. } else {
  260. // 에러처리
  261. sysf_messageBox(sErrorMsg, "E");
  262. }
  263. }
  264. // 취소버튼
  265. function btn_cancel_onclick(obj:Button, e:ClickEventInfo)
  266. {
  267. this.close("N");
  268. }
  269. // 키입력 이벤트
  270. function txt_detlresn_onkeydown(obj:TextArea, e:KeyEventInfo)
  271. {
  272. if(e.keycode == 13){
  273. btn_confirm.click();
  274. }
  275. }
  276. ]]></Script>
  277. </Form>
  278. </FDL>