SMRPD01700_특근신청부서장승인.xrw 43 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130
  1. <?xml version="1.0" encoding="EUC-KR"?>
  2. <?xml-stylesheet type="text/css" href="../../../com/commonweb/css/common.css" ?>
  3. <xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/2002/01/xforms" xmlns:ev="http://www.w3.org/2001/xml-events">
  4. <xhtml:head>
  5. <xhtml:title>특근신청부서장승인</xhtml:title>
  6. <model id="model1">
  7. <instance id="instance1">
  8. <root xmlns="">
  9. <main>
  10. <list>
  11. <ovtmworkapplist/>
  12. </list>
  13. <daylist>
  14. <basedd/>
  15. <holiflag/>
  16. <daynm/>
  17. </daylist>
  18. <deducord>
  19. <empllist>
  20. <emplno/>
  21. <emplnm/>
  22. <dutplceinstcd/>
  23. <dutplcedeptcd/>
  24. </empllist>
  25. </deducord>
  26. </main>
  27. <send>
  28. <retrparams>
  29. <instcd/>
  30. <ymdflag>1</ymdflag>
  31. <dutym_ss/>
  32. <dutym_ee/>
  33. <emplno_s/>
  34. <emplnm_s/>
  35. <dutplcedeptcd/>
  36. <dutplcedeptnm/>
  37. <deprtmangraprvyn>N</deprtmangraprvyn>
  38. <popworkgbn/>
  39. <dutym_s/>
  40. <dutym_e/>
  41. <dutym/>
  42. <appfrdd/>
  43. <apptodd/>
  44. <emplno/>
  45. <emplnm/>
  46. <dutunitcd/>
  47. <dutunitnm/>
  48. <retrflag>dept</retrflag>
  49. <deptgb/>
  50. </retrparams>
  51. <retrparams2>
  52. <instcd/>
  53. <emplno/>
  54. <dutym_s/>
  55. <dutym_e/>
  56. <deprtmangraprvyn/>
  57. </retrparams2>
  58. <savelist>
  59. <ovtmworkapplist/>
  60. </savelist>
  61. </send>
  62. <init>
  63. <combo1>
  64. <label>Y</label>
  65. <value>Y</value>
  66. <label>N</label>
  67. <value>N</value>
  68. </combo1>
  69. </init>
  70. <tempday>
  71. <dutinfo/>
  72. </tempday>
  73. </root>
  74. </instance>
  75. <submission id="TRRPD00101" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/retrparams" resultref="/root/main/ovtmworkapplist"/>
  76. <submission id="TRRPD00102" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/retrparams" resultref="/root/main/daylist"/>
  77. <submission id="TRRPD00103" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/retrparams" resultref="/root/main/empllist"/>
  78. <submission id="TXRPD00101" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/savelist" resultref="root/temp/douchecklist"/>
  79. <submission id="TRRPD10102" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/retrparams" resultref="/root/tempday/dutinfo"/>
  80. </model>
  81. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  82. <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
  83. <script type="javascript" src="../../../com/commonweb/js/stringHelper.js"/>
  84. <script type="javascript" src="../../../com/commonweb/js/dateHelper.js"/>
  85. <script type="javascript" src="../../../mis/miscommonweb/js/MIS.js"/>
  86. <script type="javascript" src="../../../mis/humtrafactmngtweb/js/RPB001.js"/>
  87. <script type="javascript" src="../../../mis/dligclaznsmngtweb/js/RPD001.js"/>
  88. <script type="javascript" src="../../../mis/pubwelfmngtweb/js/RPS001.js"/>
  89. <script type="javascript" ev:event="xforms-ready">
  90. <![CDATA[
  91. fInitialize();
  92. ]]>
  93. </script>
  94. <script type="javascript">
  95. <![CDATA[
  96. var ADJT_ALL_CHECK_YN = false;
  97. var DERT_ALL_CHECK_YN = false;
  98. // 화면 open시와 초기화 버튼 클릭시 화면 초기화 기능을 수행한다.
  99. function fInitialize()
  100. {
  101. misfGridInit(grd_ovtmworkapplist);
  102. misfGridInit(grd_daylist);
  103. if (cmb_dutplce.value == "")
  104. {
  105. cmb_dutplce.select(0);
  106. }
  107. fmisfMsterDetailSet(grd_ovtmworkapplist, null, "TRRPD00101", "Y");
  108. // misfComboComCdListMulti("Z0007","cmb_instcd");
  109. misfComboInstCdListMulti("cmb_instcd",ipt_appfromdd.value,"","N");
  110. misfGetAndSetUserInfo();
  111. misfGetUserAuth();
  112. rpdfSetControlAuth();
  113. rpdfComboCdList(cmb_dutplce); // 권한별 근무부서 세팅
  114. if(cmb_dutplce.value == '' ) {
  115. cmb_dutplce.select(1);
  116. }
  117. rpdfSetDutUnitCombo();
  118. fSetDate();
  119. model.setValue("/root/send/retrparams/instcd", getUserInfo("dutplceinstcd"));
  120. model.setValue("/root/send/retrparams/dutplcedeptcd", DUT_UNIT_CD);
  121. model.setValue("/root/send/retrparams/dutunitcd", DUT_UNIT_CD);
  122. model.setValue("/root/send/retrparams/dutplcedeptnm", DUT_UNIT_NM);
  123. model.setValue("/root/send/retrparams/popworkgbn", "SMRPD01700");
  124. model.setValue("/root/send/retrparams/dutym_s", model.getValue("/root/send/retrparams/dutym_ss"));
  125. model.setValue("/root/send/retrparams/dutym_e", model.getValue("/root/send/retrparams/dutym_ee"));
  126. model.setValue("/root/send/retrparams/deptgb", "1");
  127. //화면 권한 설정
  128. rpdfSetControlByJobRespCd("btn_save");
  129. cmb_dutplce.value = DUT_UNIT_CD;
  130. btn_search.dispatch("DOMActivate");
  131. btn_save.disabled = false;
  132. model.refresh();
  133. }
  134. function fSetDate()
  135. {
  136. var dt = new Date(getCurrentDate().substr(0, 4), getCurrentDate().substr(4, 2), 0);
  137. var iLastDay = dt.getDate();
  138. submit("TRRPD10102", false);
  139. model.setValue("/root/send/retrparams/dutym_ss", model.getValue("/root/tempday/dutinfo/dutlist/fromymd"));
  140. model.setValue("/root/send/retrparams/dutym_ee", model.getValue("/root/tempday/dutinfo/dutlist/toymd"));
  141. //model.setValue("/root/send/retrparams/dutym_ss", getCurrentDate().substr(0, 6) + "01");
  142. //model.setValue("/root/send/retrparams/dutym_ee", getCurrentDate().substr(0, 6) + iLastDay.toString());
  143. }
  144. function fsaveCheckNull()
  145. {
  146. for(i=3; i< grd_ovtmworkapplist.rows; i++)
  147. {
  148. var check_emplno = model.getValue(grd_ovtmworkapplist.attribute("nodeset") + "[" + (i - 2) + "]/emplno");
  149. var check_fdd = model.getValue(grd_ovtmworkapplist.attribute("nodeset") + "[" + (i - 2) + "]/coufromdd");
  150. var check_tdd = model.getValue(grd_ovtmworkapplist.attribute("nodeset") + "[" + (i - 2) + "]/coutodd");
  151. var check_ftm = model.getValue(grd_ovtmworkapplist.attribute("nodeset") + "[" + (i - 2) + "]/coufromtm");
  152. var check_ttm = model.getValue(grd_ovtmworkapplist.attribute("nodeset") + "[" + (i - 2) + "]/coutotm");
  153. var psnworkapryn = model.getValue(grd_ovtmworkapplist.attribute("nodeset") + "[" + (i - 2) + "]/psnworkapryn");
  154. var deprtmangrcouyn = model.getValue(grd_ovtmworkapplist.attribute("nodeset") + "[" + (i - 2) + "]/couresn");
  155. var couresn = model.getValue(grd_ovtmworkapplist.attribute("nodeset") + "[" + (i - 2) + "]/deprtmangrcouyn");
  156. var check_cnt = parseFloat(check_tdd)-parseFloat(check_fdd);
  157. if(deprtmangrcouyn =='Y')
  158. {
  159. if(couresn =="")
  160. {
  161. messageBox("조정사유는 ","I003");
  162. return false;
  163. }
  164. }
  165. var status=grd_ovtmworkapplist.rowStatus(i);
  166. if(check_emplno =="")
  167. {
  168. messageBox("사원번호는","I003");
  169. return false;
  170. }
  171. if(check_fdd == "" || check_tdd == "" || check_ftm == "" || check_ttm == "" )
  172. {
  173. messageBox("조정시간은", "I003");
  174. messageBox( model.getValue(grd_ovtmworkapplist.attribute("nodeset") + "[" + (i - 2) + "]/emplnm")
  175. +"("+ check_fdd +")"+"의 조정시간을 확인하세요.","I999");
  176. return false;
  177. }
  178. if(status=="2"||status=="4")
  179. {
  180. if(psnworkapryn =='Y')
  181. {
  182. messageBox("인사팀 승인이 완료된 건은 수정","E001");
  183. return false;
  184. }
  185. }
  186. if(status !="0")
  187. {
  188. if(check_cnt >1 || check_cnt < 0)
  189. {
  190. messageBox("조정기간이 1일을","E003");
  191. return false;
  192. }
  193. }
  194. if(parseFloat(check_fdd) >parseFloat(check_tdd))
  195. {
  196. messageBox("조정종료일자는 조정시작일자 ","E012");
  197. return false;
  198. }
  199. if(check_fdd==check_tdd)
  200. {
  201. if(parseFloat(check_ftm) >parseFloat(check_ttm))
  202. {
  203. messageBox("조정종료시간은 조정시작시간 ","E012");
  204. return false;
  205. }
  206. }
  207. }
  208. return true;
  209. }
  210. function frpdfGetNightTime(pFrdate, pFrtime, pTodate, pTotime)
  211. {
  212. //===== 야간근무시간
  213. var sGjfrdt = parseFloat(pFrdate);
  214. var sGjtodt_v = pFrdate.rpdfToDate("YYYYMMDD").rpdfGetRelativeDate(1, "D").rpdfFormat();
  215. var sGjtodt = parseFloat(sGjtodt_v);
  216. var pFrtt = pFrtime.substring(0, 2);
  217. var pFrmm = pFrtime.substring(2, 4);
  218. var pTott = pTotime.substring(0, 2);
  219. var pTomm = pTotime.substring(2, 4);
  220. // var sNghtTm
  221. if(parseFloat(pFrdate) == parseFloat(pTodate))
  222. {
  223. if(parseFloat(pFrtt) >= 0 && parseFloat(pFrtt) < 6)
  224. {
  225. if(parseFloat(pTotime) >= 600)
  226. {
  227. pTott = "06";
  228. pTomm = "00";
  229. }
  230. }
  231. else if(parseFloat(pTott) >= 22 && parseFloat(pTott) <= 24)
  232. {
  233. if(parseFloat(pFrtime) < 2200)
  234. {
  235. pFrtt = "22";
  236. pFrmm = "00";
  237. }
  238. }
  239. }
  240. else if(parseFloat(pFrdate) < parseFloat(pTodate))
  241. {
  242. if(parseFloat(pFrtime) < 2200)
  243. {
  244. pFrtt = "22";
  245. pFrmm = "00";
  246. }
  247. if(parseFloat(pTotime) >= 600)
  248. {
  249. pTott = "30";
  250. pTomm = "00";
  251. }
  252. else
  253. {
  254. pTott = (24 + parseFloat(pTott)).toString();
  255. }
  256. }
  257. var iTM = parseFloat(pTott) - parseFloat(pFrtt);
  258. var iMM = 0;
  259. if(parseFloat(pFrmm) > parseFloat(pTomm))
  260. {
  261. iTM--;
  262. iMM = (60 + parseFloat(pTomm)) - parseFloat(pFrmm);
  263. }
  264. else
  265. {
  266. iMM = parseFloat(pTomm) - parseFloat(pFrmm);
  267. }
  268. var sTM = ( iTM.toString().length == 1 ) ? "0" + iTM.toString() : iTM.toString();
  269. var sMM = ( iMM.toString().length == 1 ) ? "0" + iMM.toString() : iMM.toString();
  270. var iRet = (iTM * 60) + iMM;
  271. return iRet;
  272. // //===== 야간근무시간
  273. // var sGjfrdt = parseFloat(pFrdate);
  274. // var sGjtodt_v = pFrdate.rpdfToDate("YYYYMMDD").rpdfGetRelativeDate(1, "D").rpdfFormat();
  275. // var sGjtodt = parseFloat(sGjtodt_v);
  276. // var pFrtt = pFrtime.substring(0, 2);
  277. // var pFrmm = pFrtime.substring(2, 4);
  278. // var pTott = pTotime.substring(0, 2);
  279. // var pTomm = pTotime.substring(2, 4);
  280. // var sGjfrtm = "2200";
  281. // var sGjtotm = "0600";
  282. // var sGjfrtt = "22";
  283. // var sGjfrmm = "00";
  284. // var sGjtott = "06";
  285. // var sGjtomm = "00";
  286. // var mFrtime = "00";
  287. //
  288. // //야간근무에 해당되는 시각..
  289. // if (parseFloat(pFrtime) <= parseFloat(sGjtotm) || parseFloat(pFrtime) >= parseFloat(sGjfrtm) || parseFloat(pTotime) <= parseFloat(sGjtotm) || parseFloat(pTotime) >= parseFloat(sGjfrtm))
  290. // {
  291. // if(parseFloat(pFrtt) >= parseFloat(sGjfrtt))
  292. // {
  293. // if(pFrtt =="24")
  294. // {
  295. // pFrtime = 0;
  296. // mFrtime = pFrmm
  297. // }
  298. // else
  299. // {
  300. // pFrtime = ( 24 - parseFloat(pFrtt) ) * 60 - parseFloat(pFrmm);
  301. // }
  302. // }
  303. // else
  304. // {
  305. // pFrtime = ( 24 - parseFloat( sGjfrtt ) ) * 60;
  306. // }
  307. //
  308. // if(pTotime > sGjtotm)
  309. // {
  310. // pTotime = ( 6 * 60 );
  311. // }
  312. // else if(pTotime <= sGjtotm)
  313. // {
  314. // if(pTott == "06")
  315. // {
  316. // pTomm = 0;
  317. // }
  318. // else
  319. // {
  320. // pTomm = pTomm;
  321. // }
  322. //
  323. // pTotime = (parseFloat(pTott) * 60) + parseFloat(pTomm);
  324. // }
  325. //
  326. // nightTm = parseFloat(pFrtime) + parseFloat(pTotime) - parseFloat(mFrtime);
  327. // return nightTm;
  328. // }
  329. }
  330. function fRetrieve()
  331. {
  332. //열들을 활성화시킨다.
  333. if(ipt_dutym_s.value == "" || ipt_dutym_e.value == "")
  334. {
  335. messageBox("근무월은","I003");
  336. return;
  337. }
  338. model.setValue("/root/send/retrparams/dutplcedeptcd", model.getValue("/root/send/retrparams/dutunitcd"));
  339. model.removenode("/root/main/list/ovtmworkapplist");
  340. model.removenode("/root/main/list");
  341. model.refresh();
  342. misfMsterDetailRetrieve();
  343. for(var i=3; i<grd_ovtmworkapplist.rows; i++)
  344. {
  345. var sPsnWorkAprYn = grd_ovtmworkapplist.valueMatrix(i, 50);
  346. if(sPsnWorkAprYn =='Y')
  347. {
  348. misfSetReadOnlyCol(grd_ovtmworkapplist, "coufromdd,coufromtm,coutodd,coutotm,couresn", true, i);
  349. }
  350. }
  351. grd_ovtmworkapplist.colDisabled (3) = true;
  352. ADJT_ALL_CHECK_YN = false;
  353. DERT_ALL_CHECK_YN = false;
  354. }
  355. function fSetDateAndTime()
  356. {
  357. // if(grd_ovtmworkapplist.col == grd_ovtmworkapplist.colRef("emplno"))
  358. // { //사원번호로 검색시
  359. // misfValidationCheck("21-1", "", "emplno,emplnm,instnm,instcd,dutplceinstnm,dutplceinstcd,deptcd,deptnm,dutdeptcd,dutdeptnm,dutplcedeptnm,dutplcedeptcd" );
  360. // model.refresh();
  361. // }
  362. // else if(grd_ovtmworkapplist.col == grd_ovtmworkapplist.colRef("emplnm"))
  363. // { // 사원명으로 검색시
  364. // misfValidationCheck("21-2", "", "emplno,emplnm,instnm,instcd,dutplceinstnm,dutplceinstcd,deptcd,deptnm,dutdeptcd,dutdeptnm,dutplcedeptnm,dutplcedeptcd" );
  365. // model.refresh();
  366. // }
  367. if(grd_ovtmworkapplist.col == 21)
  368. {
  369. var psnworkapryn = grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 50);
  370. if(psnworkapryn == "Y")
  371. {
  372. var deprtmangraprvyn = grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 21);
  373. if(deprtmangraprvyn == "Y")
  374. {
  375. grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 21) = "N";
  376. }
  377. else
  378. {
  379. grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 21) = "Y";
  380. }
  381. messageBox("인사팀 승인이 완료된 건은 수정","E001");
  382. return;
  383. }
  384. else
  385. {
  386. grd_ovtmworkapplist.addStatus(grd_ovtmworkapplist.row, "update");
  387. }
  388. }
  389. else if(grd_ovtmworkapplist.col == 22)
  390. {
  391. var psnworkapryn = grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 50);
  392. if(psnworkapryn =='Y')
  393. {
  394. var deprtmangrcouyn = grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 22);
  395. if(deprtmangrcouyn == "Y")
  396. {
  397. grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 22) = "N";
  398. }
  399. else
  400. {
  401. grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 22) = "Y";
  402. }
  403. messageBox("인사팀 승인이 완료된 건은 수정","E001");
  404. return;
  405. }
  406. else
  407. {
  408. // grd_ovtmworkapplist.addStatus(grd_ovtmworkapplist.row, "update");
  409. }
  410. }
  411. else if(grd_ovtmworkapplist.col == 16) //신청일자 및 시간 유효성 체크
  412. {
  413. var check_h = grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 16);
  414. check_hh = check_h.substring(0, 2);
  415. check_mm = check_h.substring(2, 4);
  416. if(parseFloat(check_hh) > 24 ||parseFloat(check_mm) > 59 ||check_h.length != 4 )
  417. {
  418. messageBox("조정시작시간 입력형식이 ","E004");
  419. grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 17) ="";
  420. }
  421. }
  422. else if(grd_ovtmworkapplist.col == 19)
  423. {
  424. var check_fdd = grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 16);
  425. var check_tdd = grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 18);
  426. var check_cnt = parseFloat(check_tdd) - parseFloat(check_fdd);
  427. if(check_cnt >2 || check_cnt < 0 || check_tdd.length != 8 || check_fdd.length != 8)
  428. {
  429. messageBox("조정일자 입력형식이 ","E004");
  430. grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 16) = "";
  431. grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 18) = "";
  432. }
  433. var check_h= grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 19);
  434. check_hh = check_h.substring(0, 2);
  435. check_mm = check_h.substring(2, 4);
  436. if(parseFloat(check_hh) > 24 ||parseFloat(check_mm) > 59 ||check_h.length != 4)
  437. {
  438. messageBox("조정종료시간 입력형식이 ","E004");
  439. grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 19) = "";
  440. }
  441. }
  442. if(grd_ovtmworkapplist.col == 16 ||
  443. grd_ovtmworkapplist.col == 17 ||
  444. grd_ovtmworkapplist.col == 18 ||
  445. grd_ovtmworkapplist.col == 19)
  446. {
  447. fCalcTime();
  448. }
  449. }
  450. function fCalcTime()
  451. {
  452. var frDate = grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 16);
  453. var frTime = grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 17);
  454. var toDate = grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 18);
  455. var toTime = grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 19);
  456. var earlyattdncyn = grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 4);
  457. //휴일 유무에 따라 신청시간 계산
  458. if(frDate != ""&& frTime != "" && toDate != "" && toTime != "" && frDate.length == 8 && toDate.length == 8)
  459. {
  460. model.setValue("/root/send/retrparams/appfrdd", grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 16));
  461. model.setValue("/root/send/retrparams/apptodd", grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 18));
  462. submit("TRRPD00102");
  463. //휴일 날짜 가져오기 성공했으면 실행
  464. if(grd_daylist.rows-1 > 0 )
  465. {
  466. //신청시간,분 계산 및 값 셋팅
  467. var dutTime = rpdfGetCalcDutyTime(frDate, frTime, toDate, toTime);
  468. var dutTime_v = dutTime / 60;
  469. var dutMin_v = dutTime % 60;
  470. dutTime_v=parseInt(dutTime_v);
  471. grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 37) = dutTime_v;
  472. grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 38) = dutMin_v;
  473. if(earlyattdncyn =='Y')
  474. {
  475. grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 33) = dutTime_v;
  476. grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 34) = dutMin_v;
  477. }
  478. else
  479. {
  480. grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 25) = dutTime_v;
  481. grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 30) = dutMin_v;
  482. }
  483. if(dutMin_v < 10)
  484. {
  485. dutMin_v="0"+dutMin_v;
  486. }
  487. if(dutTime_v < 10)
  488. {
  489. dutTime_v="0"+dutTime_v;
  490. }
  491. grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 20) =dutTime_v+":"+dutMin_v;
  492. if(earlyattdncyn =='Y')
  493. {
  494. grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 14) =dutTime_v+":"+dutMin_v;
  495. }
  496. else
  497. {
  498. grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 11) =dutTime_v+":"+dutMin_v;
  499. }
  500. //휴일 시간,분 계산 및 값 셋팅
  501. var holyflag1 = model.getValue("/root/main/daylist[1]/holiflag") == '0' ? 'Y' : 'N';
  502. var holyflag2 = model.getValue("/root/main/daylist[2]/holiflag") == '0' ? 'Y' : 'N';
  503. if(holyflag1=='Y' ||holyflag2=='Y')
  504. {
  505. var holyTime = rpdfGetHolyTime(frDate,frTime,toDate,toTime,holyflag1,holyflag2);
  506. var holyTime_v = holyTime / 60;
  507. var holyMin_v = holyTime % 60;
  508. var holyTime_v=parseInt(holyTime_v);
  509. grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 23) = holyTime_v;
  510. grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 28) = holyMin_v;
  511. if(holyMin_v < 10)
  512. {
  513. holyMin_v="0"+holyMin_v;
  514. }
  515. if(holyTime_v< 10)
  516. {
  517. holyTime_v="0"+holyTime_v ;
  518. }
  519. grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 9) = holyTime_v + ":" + holyMin_v;
  520. }
  521. //아래 조건에따라 야간 시간,분 계산 및 값 셋팅
  522. if (frTime <= "0600" || frTime >= "2200" || toTime <= "0600" || toTime >= "2200" || frDate < toDate)
  523. {
  524. var nightDutTime = frpdfGetNightTime(frDate, frTime, toDate, toTime);
  525. var nightDutTime_v = nightDutTime / 60;
  526. var nightDutMin_v = nightDutTime % 60;
  527. var nightDutTime_v = parseInt(nightDutTime_v);
  528. grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 24) = nightDutTime_v;
  529. grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 29) = nightDutMin_v;
  530. if(earlyattdncyn == 'N')
  531. {
  532. grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 24) = nightDutTime_v;
  533. grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 29) = nightDutMin_v;
  534. grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 27) = nightDutTime_v;
  535. grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 32) = nightDutMin_v;
  536. }
  537. if(nightDutMin_v < 10)
  538. {
  539. nightDutMin_v="0"+nightDutMin_v;
  540. }
  541. if(nightDutTime_v < 10)
  542. {
  543. nightDutTime_v="0"+ nightDutTime_v;
  544. }
  545. grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 10) = nightDutTime_v + ":" + nightDutMin_v;
  546. if(earlyattdncyn == 'N')
  547. {
  548. grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 13) = nightDutTime_v + ":" + nightDutMin_v;
  549. }
  550. }
  551. else
  552. {
  553. grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 24) = "";
  554. grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 29) = "";
  555. grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 27) = "";
  556. grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 32) = "";
  557. }
  558. }
  559. }
  560. var sAppTm = grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 9);
  561. var sAdjtTm = grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 20);
  562. if(sAppTm != sAdjtTm)
  563. {
  564. grd_ovtmworkapplist.valueMatrix(grd_ovtmworkapplist.row, 22) = "Y";
  565. }
  566. model.refresh();
  567. }
  568. ]]>
  569. </script>
  570. </xhtml:head>
  571. <xhtml:body pagewidth="1211" pageheight="784" style="margin-left:8; margin-top:0; margin-right:8; margin-bottom:0; ">
  572. <group id="group1" style="left:0px; top:0px; width:1195px; height:13px; ">
  573. <caption id="caption6" class="tit_1" style="left:0px; top:0px; width:800px; height:14px; ">특근신청부서장승인</caption>
  574. </group>
  575. <group id="group2" scroll="auto" style="left:0px; top:38px; width:1195px; height:727px; ">
  576. <line id="line1" class="line_1" style="x1:0px; y1:94px; x2:1194px; y2:94px; "/>
  577. <group id="group4" style="left:0px; top:10px; width:1194px; height:60px; vertical-align:top; ">
  578. <shape id="roundrect2" appearance="roundrect" ellipsewidth="10" ellipseheight="10" style="left:0px; top:0px; width:1194px; height:60px; "/>
  579. <caption id="caption5" class="search_name" style="left:431px; top:34px; width:86px; height:17px; ">사원번호 :</caption>
  580. <line id="line3" class="line_4" style="x1:1110px; y1:7px; x2:1110px; y2:54px; border-color:#ffe4bb; border-left-style:solid; "/>
  581. <button id="btn_search" class="btn1_letter2" navindex="4" style="left:1125px; top:19px; width:56px; height:22px; text-align:left; ">
  582. <caption>조회</caption>
  583. <script type="javascript" ev:event="DOMActivate">
  584. <![CDATA[
  585. fRetrieve();
  586. btn_save.disabled = false;
  587. model.refresh();
  588. ]]>
  589. </script>
  590. </button>
  591. <button id="btn_emplhelp" class="icon_search" style="left:602px; top:35px; width:16px; height:16px; ">
  592. <caption/>
  593. <script type="javascript" ev:event="DOMActivate">
  594. <![CDATA[
  595. rpbfOpenPopUpList("SPRPB00101", ipt_emplno, "emplno,emplnm,dutunitcd,dutunitnm", "", "N");
  596. model.setValue("/root/send/retrparams/emplno_s", model.getValue("/root/send/retrparams/emplno"));
  597. model.setValue("/root/send/retrparams/emplnm_s", model.getValue("/root/send/retrparams/emplnm"));
  598. model.refresh();
  599. ]]>
  600. </script>
  601. </button>
  602. <input id="ipt_emplno" ref="/root/send/retrparams/emplno_s" class="input_search" navindex="2" maxlength="8" style="left:527px; top:33px; width:70px; height:19px; ">
  603. <script type="javascript" ev:event="onkeypress">
  604. <![CDATA[
  605. if(event.keyCode == 13)
  606. {
  607. if(ipt_emplno.value == ipt_emplno.currentText) return;
  608. ipt_emplno.value = ipt_emplno.currentText;
  609. rpbfValidationCheck("EMPLNO", "emplno,emplnm,dutunitcd,dutunitnm");
  610. model.setValue("/root/send/retrparams/emplno_s", model.getValue("/root/send/retrparams/emplno"));
  611. model.setValue("/root/send/retrparams/emplnm_s", model.getValue("/root/send/retrparams/emplnm"));
  612. model.refresh();
  613. }
  614. ]]>
  615. </script>
  616. <script type="javascript" ev:event="xforms-value-changed">
  617. <![CDATA[
  618. rpbfValidationCheck("EMPLNO", "emplno,emplnm,dutunitcd,dutunitnm");
  619. model.setValue("/root/send/retrparams/emplno_s", model.getValue("/root/send/retrparams/emplno"));
  620. model.setValue("/root/send/retrparams/emplnm_s", model.getValue("/root/send/retrparams/emplnm"));
  621. model.refresh();
  622. ]]>
  623. </script>
  624. </input>
  625. <input id="ipt_emplnm" ref="/root/send/retrparams/emplnm_s" class="input_search" navindex="3" style="left:621px; top:33px; width:130px; height:19px; ">
  626. <script type="javascript" ev:event="onkeypress">
  627. <![CDATA[
  628. if(event.keyCode == 13)
  629. {
  630. if(ipt_emplnm.value == ipt_emplnm.currentText) return;
  631. ipt_emplnm.value = ipt_emplnm.currentText;
  632. rpbfValidationCheck("EMPLNM", "emplno,emplnm,dutunitcd,dutunitnm");
  633. model.setValue("/root/send/retrparams/emplno_s", model.getValue("/root/send/retrparams/emplno"));
  634. model.setValue("/root/send/retrparams/emplnm_s", model.getValue("/root/send/retrparams/emplnm"));
  635. model.refresh();
  636. }
  637. ]]>
  638. </script>
  639. <script type="javascript" ev:event="xforms-value-changed">
  640. <![CDATA[
  641. rpbfValidationCheck("EMPLNM", "emplno,emplnm,dutunitcd,dutunitnm");
  642. model.setValue("/root/send/retrparams/emplno_s", model.getValue("/root/send/retrparams/emplno"));
  643. model.setValue("/root/send/retrparams/emplnm_s", model.getValue("/root/send/retrparams/emplnm"));
  644. model.refresh();
  645. ]]>
  646. </script>
  647. </input>
  648. <caption id="caption3" style="left:620px; top:9px; width:25px; height:20px; font-weight:bold; text-align:center; vertical-align:middle; ">~</caption>
  649. <input id="ipt_appfromdd" ref="/root/send/retrparams/dutym_ss" class="input_s_essential" inputtype="date" style="left:527px; top:8px; width:99px; height:19px; ">
  650. <script type="javascript" ev:event="xforms-value-changed">
  651. <![CDATA[
  652. var instcd = cmb_instcd.value;
  653. if( getStringLength(ipt_appfromdd.value) == "8" ) {
  654. model.removeNodeset(cmb_instcd.attribute("ref"));
  655. model.makeNode("/root/send/retrparams/instcd");
  656. misfComboInstCdListMulti("cmb_instcd",ipt_appfromdd.value,"","Y");
  657. cmb_instcd.value = instcd;
  658. model.refresh();
  659. }
  660. ipt_dutym_s.value=ipt_appfromdd.value;
  661. ]]>
  662. </script>
  663. </input>
  664. <input id="ipt_apptodd" ref="/root/send/retrparams/dutym_ee" class="input_s_essential" inputtype="date" style="left:641px; top:8px; width:99px; height:19px; ">
  665. <script type="javascript" ev:event="xforms-value-changed">
  666. <![CDATA[
  667. var instcd = cmb_instcd.value;
  668. if( getStringLength(ipt_apptodd.value) == "8" ) {
  669. model.removeNodeset(cmb_instcd.attribute("ref"));
  670. model.makeNode("/root/send/retrparams/instcd");
  671. misfComboInstCdListMulti("cmb_instcd",ipt_appfromdd.value,"","Y");
  672. cmb_instcd.value = instcd;
  673. model.refresh();
  674. }
  675. ipt_dutym_e.value=ipt_apptodd.value;
  676. btn_search.dispatch("DOMActivate");
  677. ]]>
  678. </script>
  679. </input>
  680. <select1 id="cmb_ymdflag" ref="/root/send/retrparams/ymdflag" class="combo_search" visibility="hidden" appearance="minimal" style="left:453px; top:8px; width:75px; height:19px; text-align:center; ">
  681. <choices>
  682. <item>
  683. <label>적용년월</label>
  684. <value>1</value>
  685. </item>
  686. <item>
  687. <label>신청년월</label>
  688. <value>2</value>
  689. </item>
  690. </choices>
  691. </select1>
  692. <caption id="caption4" class="search_name" style="left:14px; top:34px; width:87px; height:17px; ">관리부서 :</caption>
  693. <select1 id="rdo_deprtmangraprvyn" ref="/root/send/retrparams/deprtmangraprvyn" overflow="visible" appearance="full" cols="3" style="left:857px; top:10px; width:150px; height:14px; border-style:none; ">
  694. <choices>
  695. <item>
  696. <label>승인</label>
  697. <value>Y</value>
  698. </item>
  699. <item>
  700. <label>미승인</label>
  701. <value>N</value>
  702. </item>
  703. <item>
  704. <label>전체</label>
  705. <value/>
  706. </item>
  707. </choices>
  708. <script type="javascript" ev:event="xforms-value-changed">
  709. <![CDATA[
  710. btn_search.dispatch("DOMActivate");
  711. ]]>
  712. </script>
  713. </select1>
  714. <caption id="caption7" class="search_name" style="left:771px; top:9px; width:86px; height:17px; ">승인여부 :</caption>
  715. <caption id="caption1" class="search_name" style="left:431px; top:9px; width:88px; height:17px; ">신청기간 :</caption>
  716. <select1 id="cmb_instcd" ref="/root/send/retrparams/instcd" class="combo_search" navindex="1" appearance="minimal" style="left:102px; top:8px; width:213px; height:19px; ">
  717. <choices>
  718. <itemset>
  719. <label/>
  720. <value/>
  721. </itemset>
  722. </choices>
  723. </select1>
  724. <caption id="caption8" class="search_name" style="left:14px; top:9px; width:86px; height:17px; ">소속기관 :</caption>
  725. <button id="btn_dutdept" class="icon_search" style="left:185px; top:35px; width:16px; height:16px; ">
  726. <caption/>
  727. <script type="javascript" ev:event="DOMActivate">
  728. <![CDATA[
  729. // misfOpenPopUpList("02", ipt_dutdeptcd, "", "dutunitcd,dutunitnm", cmb_instcd.value, "instcd" );
  730. misfOpenPopUpList("02", ipt_dutdeptcd,"","dutunitcd,dutunitnm", cmb_instcd.value + "," + ipt_apptodd.value, "instcd,basedd");
  731. model.setValue("/root/send/retrparams/dutplcedeptcd", model.getValue("/root/send/retrparams/dutunitcd"));
  732. model.setValue("/root/send/retrparams/dutplcedeptnm", model.getValue("/root/send/retrparams/dutunitnm"));
  733. model.refresh();
  734. ]]>
  735. </script>
  736. </button>
  737. <input id="ipt_dutdeptnm" ref="/root/send/retrparams/dutplcedeptnm" class="input_search" navindex="3" style="left:203px; top:33px; width:114px; height:19px; ">
  738. <script type="javascript" ev:event="onkeypress">
  739. <![CDATA[
  740. if(event.keyCode == 13)
  741. {
  742. if(ipt_dutdeptnm.value == ipt_dutdeptnm.currentText) return;
  743. ipt_dutdeptnm.value = ipt_dutdeptnm.currentText;
  744. misfValidationCheck("02", "", "dutunitcd,dutunitnm", cmb_instcd.value, "instcd" );
  745. model.setValue("/root/send/retrparams/dutplcedeptcd", model.getValue("/root/send/retrparams/dutunitcd"));
  746. model.setValue("/root/send/retrparams/dutplcedeptnm", model.getValue("/root/send/retrparams/dutunitnm"));
  747. model.refresh();
  748. }
  749. ]]>
  750. </script>
  751. <script type="javascript" ev:event="xforms-value-changed">
  752. <![CDATA[
  753. misfValidationCheck("02", "", "dutunitcd,dutunitnm", cmb_instcd.value, "instcd" );
  754. model.setValue("/root/send/retrparams/dutplcedeptcd", model.getValue("/root/send/retrparams/dutunitcd"));
  755. model.setValue("/root/send/retrparams/dutplcedeptnm", model.getValue("/root/send/retrparams/dutunitnm"));
  756. model.refresh();
  757. ]]>
  758. </script>
  759. </input>
  760. <input id="ipt_dutdeptcd" ref="/root/send/retrparams/dutplcedeptcd" class="input_search" navindex="2" maxlength="10" style="left:102px; top:33px; width:80px; height:19px; text-align:center; ">
  761. <script type="javascript" ev:event="onkeypress">
  762. <![CDATA[
  763. if(event.keyCode == 13)
  764. {
  765. if(ipt_dutdeptcd.value == ipt_dutdeptcd.currentText) return;
  766. ipt_dutdeptcd.value = ipt_dutdeptcd.currentText;
  767. misfValidationCheck("02", "", "dutunitcd,dutunitnm", cmb_instcd.value, "instcd" );
  768. model.setValue("/root/send/retrparams/dutplcedeptcd", model.getValue("/root/send/retrparams/dutunitcd"));
  769. model.setValue("/root/send/retrparams/dutplcedeptnm", model.getValue("/root/send/retrparams/dutunitnm"));
  770. model.refresh();
  771. }
  772. ]]>
  773. </script>
  774. <script type="javascript" ev:event="xforms-value-changed">
  775. <![CDATA[
  776. misfValidationCheck("02", "", "dutunitcd,dutunitnm", cmb_instcd.value, "instcd" );
  777. model.setValue("/root/send/retrparams/dutplcedeptcd", model.getValue("/root/send/retrparams/dutunitcd"));
  778. model.setValue("/root/send/retrparams/dutplcedeptnm", model.getValue("/root/send/retrparams/dutunitnm"));
  779. model.refresh();
  780. ]]>
  781. </script>
  782. </input>
  783. <select1 id="cmb_dutplce" ref="/root/send/retrparams/dutunitcd" class="combo_search" visibility="visible" appearance="minimal" style="left:102px; top:33px; width:215px; height:19px; ">
  784. <choices>
  785. <itemset>
  786. <label/>
  787. <value/>
  788. </itemset>
  789. </choices>
  790. <script type="javascript" ev:event="xforms-value-changed">
  791. <![CDATA[
  792. btn_search.dispatch("DOMActivate");
  793. ]]>
  794. </script>
  795. </select1>
  796. <select1 id="combo1" ref="/root/send/retrparams/deptgb" appearance="minimal" style="left:325px; top:33px; width:100px; height:19px; ">
  797. <choices>
  798. <item>
  799. <label>근무지</label>
  800. <value>1</value>
  801. </item>
  802. <item>
  803. <label>소속부서</label>
  804. <value>2</value>
  805. </item>
  806. <item>
  807. <label>소속과(팀)</label>
  808. <value>3</value>
  809. </item>
  810. <item>
  811. <label>소속부(실)</label>
  812. <value>4</value>
  813. </item>
  814. </choices>
  815. </select1>
  816. </group>
  817. <caption id="caption9" class="tit_2" style="left:5px; top:79px; width:170px; height:13px; ">특근신청내역</caption>
  818. <multilinegrid id="grd_ovtmworkapplist" nodeset="/root/main/list/ovtmworkapplist" caption="사원번호^성명^직종^조출여부^신청시간^신청시간^신청시간^신청시간^신청시간(분)^휴일^야간^연장^연장^연장^조출150^조정시간^조정시간^조정시간^조정시간^조정시간(분)^승인여부^조정여부^caption1|사원번호^성명^직종^조출여부^From일시^From일시^To일시^To일시^신청시간(분)^휴일^야간^연장^연장^연장^조출150^From일시^From일시^To일시^To일시^조정시간(분)^승인여부^조정여부^caption1|사원번호^성명^직종^조출여부^신청사유^신청사유^신청사유^신청사유^신청시간(분)^휴일^야간^150^100^+50^조출150^조정사유^조정사유^조정사유^조정사유^조정시간(분)^승인여부^조정여부^caption1" colsep="^" colwidth="65, 80, 80, 56, 90, 60, 90, 60, 78, 0, 0, 0, 0, 0, 0, 90, 60, 90, 60, 78, 58, 58, 0" rowheader="update" rowsep="|" mergecellsfixedrows="bycolrec" style="left:0px; top:99px; width:1194px; height:626px; ">
  819. <row>
  820. <col ref="emplno" rowspan="2" _key="true" style="text-align:center; "/>
  821. <col ref="emplnm" rowspan="2"/>
  822. <col ref="jobkindnm" rowspan="2"/>
  823. <col disabled="true" ref="earlyattdncyn" rowspan="2" type="combo" style="text-align:center; ">
  824. <choices>
  825. <itemset nodeset="/root/init/combo1">
  826. <label ref="label"/>
  827. <value ref="value"/>
  828. </itemset>
  829. </choices>
  830. </col>
  831. <col disabled="true" ref="appfromdd" format="yyyy-mm-dd" required="true" style="text-align:center; "/>
  832. <col ref="appfromtm" format="hh:nn" style="text-align:center; "/>
  833. <col disabled="true" ref="apptodd" format="yyyy-mm-dd" style="text-align:center; "/>
  834. <col ref="apptotm" format="hh:nn" style="text-align:center; "/>
  835. <col ref="apptm_v" rowspan="2" type="output" style="text-align:center; "/>
  836. <col ref="ovtmworkholibiztm_v" rowspan="2" type="output" visibility="hidden"/>
  837. <col ref="ovtmworknigtbiztm_v" rowspan="2" type="output" visibility="hidden"/>
  838. <col ref="ovtmworkextnbiztm150_v" rowspan="2" type="output" visibility="hidden" style="text-align:center; "/>
  839. <col ref="ovtmworkextnbiztm100_v" rowspan="2" type="output" visibility="hidden" style="text-align:center; "/>
  840. <col ref="ovtmworkextnbiztm50_v" rowspan="2" type="output" visibility="hidden" style="text-align:center; "/>
  841. <col ref="earlyattdnctm150_v" rowspan="2" type="output" visibility="hidden" style="text-align:center; "/>
  842. <col ref="coufromdd" type="inputdate" format="yyyy-mm-dd" _key="true" style="text-align:center; "/>
  843. <col ref="coufromtm" type="input" format="hh:nn" _key="true" style="text-align:center; "/>
  844. <col ref="coutodd" type="inputdate" format="yyyy-mm-dd" _key="true" style="text-align:center; "/>
  845. <col ref="coutotm" type="input" format="hh:nn" _key="true" style="text-align:center; "/>
  846. <col ref="coutm_v" rowspan="2" _key="true" style="text-align:center; "/>
  847. <col checkvalue="Y,N" ref="deprtmangraprvyn" rowspan="2" type="checkbox" style="text-align:center; "/>
  848. <col checkvalue="Y,N" ref="deprtmangrcouyn" rowspan="2" type="checkbox" style="text-align:center; "/>
  849. <col ref="ovtmworkholibiztm" rowspan="2" type="output" visibility="hidden"/>
  850. <col ref="ovtmworknigtbiztm" rowspan="2" type="output" visibility="hidden"/>
  851. <col ref="ovtmworkextnbiztm150" rowspan="2" type="output" visibility="hidden"/>
  852. <col ref="ovtmworkextnbiztm100" rowspan="2" type="output" visibility="hidden"/>
  853. <col ref="ovtmworkextnbiztm50" rowspan="2" type="output" visibility="hidden"/>
  854. <col ref="ovtmworkholibizmm" rowspan="2" type="output" visibility="hidden"/>
  855. <col ref="ovtmworknigtbizmm" rowspan="2" type="output" visibility="hidden"/>
  856. <col ref="ovtmworkextnbizmm150" rowspan="2" type="output" visibility="hidden"/>
  857. <col ref="ovtmworkextnbizmm100" rowspan="2" type="output" visibility="hidden"/>
  858. <col ref="ovtmworkextnbizmm50" rowspan="2" type="output" visibility="hidden"/>
  859. <col ref="earlyattdnctm150" rowspan="2" type="output" visibility="hidden"/>
  860. <col ref="earlyattdncmm150" rowspan="2" type="output" visibility="hidden"/>
  861. <col ref="apptm" rowspan="2" visibility="hidden"/>
  862. <col ref="appmm" rowspan="2" visibility="hidden"/>
  863. <col ref="coutm" rowspan="2" visibility="hidden"/>
  864. <col ref="coumm" rowspan="2" visibility="hidden"/>
  865. <col ref="dutdd" rowspan="2" visibility="hidden"/>
  866. <col ref="instnm" rowspan="2" visibility="hidden"/>
  867. <col ref="instcd" rowspan="2" visibility="hidden"/>
  868. <col ref="dutplceinstnm" rowspan="2" visibility="hidden"/>
  869. <col ref="dutplceinstcd" rowspan="2" visibility="hidden"/>
  870. <col ref="deptcd" rowspan="2" visibility="hidden"/>
  871. <col ref="deptnm" rowspan="2" visibility="hidden"/>
  872. <col ref="dutdeptcd" rowspan="2" visibility="hidden"/>
  873. <col ref="dutdeptnm" rowspan="2" visibility="hidden"/>
  874. <col ref="dutplcedeptnm" rowspan="2" visibility="hidden"/>
  875. <col ref="dutplcedeptcd" rowspan="2" visibility="hidden"/>
  876. <col ref="psnworkapryn" rowspan="2" visibility="hidden"/>
  877. </row>
  878. <row>
  879. <col colspan="4" ref="appresn" type="output" maxlength="100"/>
  880. <col colspan="4" ref="couresn" type="input" maxlength="100"/>
  881. </row>
  882. <script type="javascript" ev:event="xforms-value-changed">
  883. <![CDATA[
  884. fSetDateAndTime();
  885. ]]>
  886. </script>
  887. <script type="javascript" ev:event="onclick">
  888. <![CDATA[
  889. if(grd_ovtmworkapplist.row < grd_ovtmworkapplist.fixedRows)
  890. {
  891. if(grd_ovtmworkapplist.col == 21)
  892. {
  893. var sYn = "";
  894. if(DERT_ALL_CHECK_YN)
  895. {
  896. sYn = "N";
  897. DERT_ALL_CHECK_YN = false;
  898. }
  899. else
  900. {
  901. sYn = "Y";
  902. DERT_ALL_CHECK_YN = true;
  903. }
  904. for(var i=3; i<grd_ovtmworkapplist.rows; i++)
  905. {
  906. grd_ovtmworkapplist.valueMatrix(i, 21) = sYn;
  907. grd_ovtmworkapplist.addStatus(i, "update");
  908. }
  909. }
  910. else if(grd_ovtmworkapplist.col == 22)
  911. {
  912. var sYn = "";
  913. if(ADJT_ALL_CHECK_YN)
  914. {
  915. sYn = "N";
  916. ADJT_ALL_CHECK_YN = false;
  917. }
  918. else
  919. {
  920. sYn = "Y";
  921. ADJT_ALL_CHECK_YN = true;
  922. }
  923. for(var i=3; i<grd_ovtmworkapplist.rows; i++)
  924. {
  925. grd_ovtmworkapplist.valueMatrix(i, 22) = sYn;
  926. grd_ovtmworkapplist.addStatus(i, "update");
  927. }
  928. }
  929. }
  930. ]]>
  931. </script>
  932. </multilinegrid>
  933. <datagrid id="grd_daylist" nodeset="/root/main/daylist" visibility="hidden" caption="날짜^휴일구분^요일명" colsep="^" mergecellsfixedrows="bycolrec" rowsep="|" style="left:0px; top:625px; width:330px; height:65px; ">
  934. <col ref="basedd"/>
  935. <col ref="holiflag"/>
  936. <col ref="daynm"/>
  937. </datagrid>
  938. <datagrid id="grd_excelsave" nodeset="/root/main/list/ovtmworkapplist" visibility="hidden" caption="사원번호^성명^신청시간^신청시간^신청시간^신청시간^신청시간^신청사유^조정시간^조정시간^조정시간^조정시간^조정시간^조정사유|사원번호^성명^From 일시^From 일시^To 일시^To 일시^신청시간^신청사유^From일시^From일시^To일시^To일시^조정시간^조정사유" colsep="^" colwidth="100, 100, 100, 100, 100, 100, 70, 150, 100, 100, 100, 100, 100, 100" mergecellsfixedrows="bycolrec" rowsep="|" style="left:260px; top:575px; width:935px; height:135px; ">
  939. <col ref="emplno"/>
  940. <col ref="emplnm"/>
  941. <col ref="appfromdd" format="yyyy-mm-dd"/>
  942. <col ref="appfromtm" format="hh:nn"/>
  943. <col ref="apptodd" format="yyyy-mm-dd"/>
  944. <col ref="apptotm" format="hh:nn"/>
  945. <col ref="apptm_v"/>
  946. <col ref="appresn"/>
  947. <col ref="coufromdd" type="inputdate" format="yyyy-mm-dd" _key="true" style="text-align:center; "/>
  948. <col ref="coufromtm" type="input" format="hh:nn" _key="true" style="text-align:center; "/>
  949. <col ref="coutodd" type="inputdate" format="yyyy-mm-dd" _key="true" style="text-align:center; "/>
  950. <col ref="coutotm" type="input" format="hh:nn" _key="true" style="text-align:center; "/>
  951. <col ref="coutm_v"/>
  952. <col ref="couresn"/>
  953. </datagrid>
  954. <button id="btn_excel" class="btn2_letter4" style="left:1129px; top:74px; width:64px; height:19px; ">
  955. <caption>엑셀저장</caption>
  956. <script type="javascript" ev:event="DOMActivate">
  957. <![CDATA[
  958. misfSaveExcel(grd_excelsave);
  959. ]]>
  960. </script>
  961. </button>
  962. </group>
  963. <group id="grp_btn" scroll="auto" style="left:0px; top:12px; width:1195px; height:27px; ">
  964. <line id="line75" class="line_6" style="x1:0; y1:25; x2:1195; y2:25; "/>
  965. <button id="btn_save" class="btn4_letter2" style="left:1135px; top:3px; width:56px; height:22px; ">
  966. <caption>저장</caption>
  967. <script type="javascript" ev:event="DOMActivate">
  968. <![CDATA[
  969. var updtdata = getGridUpdateData(grd_ovtmworkapplist);
  970. if (updtdata == "" ) {
  971. messageBox("변경된 데이터가","I004");
  972. return;
  973. }
  974. if(!fsaveCheckNull())return;
  975. misfSave("TXRPD00101");
  976. btn_save.disabled = false;
  977. model.refresh();
  978. ]]>
  979. </script>
  980. </button>
  981. <button id="btn_clear" class="btn4_letter3" visibility="hidden" style="left:1067px; top:3px; width:68px; height:22px; ">
  982. <caption>초기화</caption>
  983. <script type="javascript" ev:event="DOMActivate">
  984. <![CDATA[
  985. var updtdata = getGridUpdateData(grd_ovtmworkapplist);
  986. if (updtdata != "") {
  987. var ret = messageBox("그리드에 작업 중인 내용이 있습니다. 초기화 작업을","Q003");
  988. if (ret != 6) { // not OK
  989. return;
  990. }
  991. }
  992. fInitialize();
  993. ]]>
  994. </script>
  995. </button>
  996. <input id="ipt_popworkgbn" ref="/root/send/retrparams/popworkgbn" class="input_search" navindex="2" visibility="hidden" style="left:978px; top:5px; width:20px; height:19px; "/>
  997. <input id="input1" ref="/root/send/retrparams/dutplcedeptcd" class="input_search" navindex="2" visibility="hidden" style="left:959px; top:5px; width:20px; height:19px; "/>
  998. <input id="ipt_dutym_s" ref="/root/send/retrparams/dutym_s" class="input_search" navindex="2" visibility="hidden" style="left:997px; top:5px; width:20px; height:19px; "/>
  999. <input id="ipt_dutym_e" ref="/root/send/retrparams/dutym_e" class="input_search" navindex="2" visibility="hidden" style="left:1016px; top:5px; width:20px; height:19px; "/>
  1000. </group>
  1001. </xhtml:body>
  1002. </xhtml:html>