SMRPD02000_근무스케쥴신청등록.xrw 44 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088
  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. <dutschelist/>
  11. <dutcdlist/>
  12. <resnlist/>
  13. <daylist/>
  14. <resn>
  15. <reqresn/>
  16. </resn>
  17. <yearnoinfoitem>
  18. <genryearno/>
  19. <useyearno/>
  20. <spreyearno/>
  21. </yearnoinfoitem>
  22. <authcheck>
  23. <count/>
  24. </authcheck>
  25. <templist/>
  26. </main>
  27. <init>
  28. </init>
  29. <send>
  30. <instcd/>
  31. <dutunitcd/>
  32. <dutunitnm/>
  33. <dutym/>
  34. <emplno/>
  35. <emplnm/>
  36. <dutschelist/>
  37. <posdeptcd/>
  38. <posdeptnm/>
  39. <dummy/>
  40. <appscheexecflag/>
  41. <anualcalcyy/>
  42. <dutdd/>
  43. <dummy1/>
  44. <resnlist>
  45. </resnlist>
  46. <apryn/>
  47. <winparams>
  48. <instcd/>
  49. <dutunitcd/>
  50. <dutym/>
  51. </winparams>
  52. </send>
  53. <hidden/>
  54. <temp>
  55. <dutym/>
  56. <dutymcopy/>
  57. <resnlist/>
  58. </temp>
  59. <codedata>
  60. <popupmenu>
  61. <dutschelist>
  62. <item>
  63. <name>사유 등록</name>
  64. <func>fOpenPopup</func>
  65. </item>
  66. <item>
  67. <name>지우기</name>
  68. <func>fGridCellClear</func>
  69. </item>
  70. <item>
  71. <name>-</name>
  72. <func/>
  73. </item>
  74. </dutschelist>
  75. </popupmenu>
  76. </codedata>
  77. </root>
  78. </instance>
  79. <submission id="TRRPD02001" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/main/dutschelist"/>
  80. <submission id="TRRPD02002" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/main/resnlist"/>
  81. <submission id="TRRPD02003" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/main/dutcdlist"/>
  82. <submission id="TRRPD02004" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/main/yearnoinfoitem"/>
  83. <submission id="TRRPD02005" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/main/daylist"/>
  84. <submission id="TRRPD02006" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/main/authcheck"/>
  85. <submission id="TRRPD02007" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/main/srvapplist"/>
  86. <submission id="TXRPD10701" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/temp"/>
  87. <submission id="TXRPD02001" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/temp"/>
  88. <submission id="TXRPD02002" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/temp"/>
  89. </model>
  90. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  91. <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
  92. <script type="javascript" src="../../../com/commonweb/js/stringHelper.js"/>
  93. <script type="javascript" src="../../../com/commonweb/js/dateHelper.js"/>
  94. <script type="javascript" src="../../../mis/miscommonweb/js/MIS.js"/>
  95. <script type="javascript" src="../../../mis/dligclaznsmngtweb/js/RPD001.js"/>
  96. <script type="javascript" ev:event="xforms-ready">
  97. <![CDATA[
  98. fInitialize();
  99. ]]>
  100. </script>
  101. <script type="javascript">
  102. <![CDATA[
  103. var iOwnerRowIdx = 0;
  104. var iDay1ColIdx = 8;
  105. var iDay31ColIdx = 40;
  106. var MOUSE_DOWN = false;
  107. var DUTCODE_FLAG = false;
  108. var row1,row2,col1,col2 = 0;
  109. // var DUT_UNIT_CD = "";
  110. // var DUT_UNIT_NM = "";
  111. // 화면 open시와 초기화 버튼 클릭시 화면 초기화 기능을 수행한다.
  112. function fInitialize()
  113. {
  114. model.removeNodeset("/root/main/dutschelist");
  115. model.removeNodeset("/root/main/dutcdlist");
  116. model.removeNodeset("/root/main/resnlist");
  117. model.resetInstanceNode("/root/send/emplno");
  118. model.resetInstanceNode("/root/send/emplnm");
  119. model.resetInstanceNode("/root/main/yearnoinfoitem");
  120. model.resetInstanceNode("/root/main/resn");
  121. misfGridInit(grd_dutschelist);
  122. misfGridInit(grd_dutcdlist);
  123. misfGridInit(grd_resnlist);
  124. misfMsterDetailSet(grd_dutschelist, null, "TRRPD02001", "Y");
  125. misfMsterDetailSet(grd_resnlist, null, "TRRPD02002", "Y");
  126. misfMsterDetailSet(grd_dutcdlist, null, "TRRPD02003", "N");
  127. // misfMsterDetailSet(grd_srvapplist, null, "TRRPD02007", "N");
  128. //날짜 익월로 자동 세팅
  129. // misfComboComCdListMulti("Z0007","cmb_instcd");
  130. misfComboInstCdListMulti("cmb_instcd",getCurrentDate().substr(0, 8),"","N");
  131. misfGetAndSetUserInfo();
  132. misfGetUserAuth();
  133. rpdfSetControlAuth();
  134. rpdfComboCdList(cmb_dutplce,"N"); // 권한별 근무부서 세팅
  135. rpdfSetDutUnitCombo();
  136. // var dt = new Date(getCurrentDate().substr(0, 4), getCurrentDate().substr(4, 2), getCurrentDate().substr(6, 2));
  137. // dt.setMonth(dt.getMonth() + 1);
  138. // var sDutYY = dt.getYear().toString();
  139. // var sDutMM = ( (dt.getMonth().toString()).length == 1 ) ? "0" + dt.getMonth().toString() : dt.getMonth().toString()
  140. // var sDutYm = sDutYY + sDutMM;
  141. var sDutYm = getCurrentDate().substr(0, 6);
  142. model.setValue("/root/send/dutym", sDutYm);
  143. model.setValue("/root/send/instcd", getUserInfo("dutplceinstcd"));
  144. model.setValue("/root/send/emplno", getUserInfo("userid"));
  145. model.setValue("/root/send/apryn", "N");
  146. model.setValue("/root/send/dutunitcd", DUT_UNIT_CD);
  147. model.setValue("/root/send/dutunitnm", DUT_UNIT_NM);
  148. model.refresh();
  149. if (cmb_dutplce.value == "")
  150. {
  151. cmb_dutplce.select(0);
  152. }
  153. //화면 권한 설정
  154. btn_search.disabled = !(checkAuth("R"));
  155. btn_save.disabled = !(checkAuth("X"));
  156. ipt_dutym.dispatch("xforms-value-changed");
  157. }
  158. //자신의 스케쥴을 수정할시에는 true를 자신의 스케쥴이 아닐때는 false를 리턴한다.
  159. function fCheckAuth(selectRow)
  160. {
  161. var flag = "";
  162. if(grd_dutschelist.valueMatrix(selectRow, grd_dutschelist.colRef("emplno")) == getUserInfo("userid"))
  163. {
  164. flag = true;
  165. }
  166. else
  167. {
  168. flag = false;
  169. }
  170. return flag;
  171. }
  172. //사유팝업을 띄운다.
  173. function fOpenPopup()
  174. {
  175. model.setValue("/root/send/winparams/instcd", model.getValue("/root/send/instcd"));
  176. model.setValue("/root/send/winparams/dutunitcd", model.getValue("/root/send/dutunitcd"));
  177. model.setValue("/root/send/winparams/dutym", model.getValue("/root/send/dutym"));
  178. rpdfOpenPopUpList("1", grd_dutschelist, "", "", "", "", "/root/send/winparams");
  179. }
  180. //근무코드를 선택하고 스케쥴을 만든후 저장을 누를시 스케쥴에 해당하는 신청 사유(비고)가 자동으로 생성됨.
  181. function fSetAutoResn(dutcd , rowNum, colNum)
  182. {
  183. if(grd_dutschelist.valueMatrix(rowNum, grd_dutschelist.colRef("dutym")) == "")
  184. {
  185. var sDutYM = grd_dutschelist.valueMatrix(rowNum, grd_dutschelist.colRef("dutym"));
  186. var sDutDD = colNum.toString();
  187. if(sDutDD.length == 1) sDutDD = '0' + sDutDD;
  188. var sDutYMD = sDutYM + sDutDD;
  189. model.setValue("/root/send/resnlist","m▦rownum▦dutym▦dutplcedeptcd▦appscheexecflag▦emplno▦dutcd▦dutdd▦suppdeptcd▦dutresn▦cmt▩i▦" + rowNum +"▦" +
  190. model.getValue("/root/send/dutym") + "▦" + model.getValue("/root/send/dutunitcd") + "▦1▦" + getUserInfo("userid") + "▦" +
  191. dutcd + "▦" + sDutYMD + "▦▦▦ (신청근무 : " + dutcd + ")▩");
  192. submit("TXRPD10701");
  193. }
  194. else
  195. {
  196. var dutym = grd_dutschelist.valueMatrix(rowNum, grd_dutschelist.colRef("dutym"));
  197. var sDutDD = colNum.toString();
  198. if(sDutDD.length == 1) sDutDD = '0' + sDutDD;
  199. var sDutYMD = sDutYM + sDutDD;
  200. model.setValue("/root/send/resnlist","m▦rownum▦dutym▦dutplcedeptcd▦appscheexecflag▦emplno▦dutcd▦dutdd▦suppdeptcd▦dutresn▦cmt▩u▦" + rowNum +"▦" +
  201. model.getValue("/root/send/dutym") + "▦" + model.getValue("/root/send/dutunitcd") + "▦1▦" + getUserInfo("userid") + "▦" +
  202. dutcd + "▦" + sDutYMD + "▦▦▦ (신청근무 : " + dutcd + ")▩");
  203. submit("TXRPD10701");
  204. }
  205. }
  206. function fRetrieve()
  207. {
  208. model.setValue("/root/send/appscheexecflag", "1");
  209. submit("TRRPD02006");
  210. if(model.getValue("/root/main/authcheck/count") != '0')
  211. {
  212. cap_caution.attribute("visibility") = "visible";
  213. btn_save.disabled = true;
  214. }
  215. else
  216. {
  217. cap_caution.attribute("visibility") = "hidden";
  218. btn_save.disabled = false;
  219. }
  220. model.setValue("/root/send/apryn", "N");
  221. model.setValue("/root/send/anualcalcyy", model.getValue("/root/send/dutym").substr(0, 4));
  222. misfMsterDetailRetrieve();
  223. submit("TRRPD02004");
  224. var basedd = new Array();
  225. var holiflag = new Array();
  226. var daynm = new Array();
  227. var baseday = new Array();
  228. for (var i=1; i<=31; i++)
  229. {
  230. basedd[i-1] = model.getValue("/root/main/daylist["+ i + "]/basedd");
  231. holiflag[i-1] = model.getValue("/root/main/daylist["+ i + "]/holiflag");
  232. daynm[i-1] = model.getValue("/root/main/daylist["+ i + "]/daynm");
  233. baseday[i - 1] = model.getValue("/root/main/daylist["+ i + "]/basedd").substr(6, 2);
  234. if(basedd[i-1] == "")
  235. {
  236. grd_dutschelist.colHidden(i + iDay1ColIdx) = true;
  237. }
  238. else
  239. {
  240. grd_dutschelist.colHidden(i + iDay1ColIdx) = false;
  241. }
  242. if(holiflag[i - 1] == '4')
  243. {
  244. grd_dutschelist.colStyle((i + iDay1ColIdx), "all", "color") = "#0000FF";
  245. }
  246. else if(holiflag[i - 1] == '0')
  247. {
  248. grd_dutschelist.colStyle((i + iDay1ColIdx), "all", "color") = "#FF0000";
  249. }
  250. else
  251. {
  252. grd_dutschelist.colStyle((i + iDay1ColIdx), "all", "color") = "#000000";
  253. }
  254. }
  255. var sche_caption = grd_dutschelist.caption;
  256. var sche_split = sche_caption.split("^");
  257. sche_caption = "근무년월";
  258. for(var j=1; j<sche_split.length; j ++ )
  259. {
  260. if(j > 74 && j < 106)
  261. {
  262. sche_caption = sche_caption + "^" + daynm[j - 75];
  263. }
  264. else if(j > 7 && j < 39)
  265. {
  266. sche_caption = sche_caption + "^" + baseday[j - 8];
  267. }
  268. else
  269. {
  270. sche_caption = sche_caption + "^" + sche_split[j];
  271. }
  272. }
  273. grd_dutschelist.caption = sche_caption;
  274. fSetContextMenuList();
  275. fSetSrvAppDutCd();
  276. fSetResnList();
  277. fSetPsnRowCol();
  278. }
  279. function fSetContextMenuList()
  280. {
  281. if(instance1.selectNodes("/root/codedata/popupmenu/dutschelist").length > 1)
  282. {
  283. for(var i=2; i<=instance1.selectNodes("/root/codedata/popupmenu/dutschelist").length; i++)
  284. {
  285. model.removenode("/root/codedata/popupmenu/dutschelist[" + i +"]");
  286. }
  287. }
  288. var sPreCode = "";
  289. var iLineCnt = 0;
  290. var sDutCd = "";
  291. var sDutNm = "";
  292. for(i=2 ; i < grd_dutcdlist.rows ; i++)
  293. {
  294. sDutCd = grd_dutcdlist.valueMatrix(i, grd_dutcdlist.colRef("dutcd"));
  295. sDutNm = grd_dutcdlist.valueMatrix(i, grd_dutcdlist.colRef("dutnm"));
  296. model.makeValue("/root/codedata/popupmenu/dutschelist[" + (i + iLineCnt) + "]/item/name", sDutCd + " : " + sDutNm);
  297. model.makeValue("/root/codedata/popupmenu/dutschelist[" + (i + iLineCnt) + "]/item/func", sDutCd);
  298. }
  299. }
  300. function fSetSrvAppDutCd()
  301. {
  302. var iOwnerRow = grd_dutschelist.findRow(getUserInfo("userid"), 2, grd_dutschelist.colRef("emplno"));
  303. if(grd_dutschelist.valueMatrix(iOwnerRow, grd_dutschelist.colRef("emplappyn")) == "0")
  304. {
  305. grd_dutschelist.valueMatrix(iOwnerRow, grd_dutschelist.colRef("dutym")) = ipt_dutym.value;
  306. grd_dutschelist.valueMatrix(iOwnerRow, grd_dutschelist.colRef("appscheexecflag")) = '1';
  307. grd_dutschelist.addStatus(iOwnerRow, "insert");
  308. return;
  309. }
  310. }
  311. function fSetResnList()
  312. {
  313. // model.removenode("/root/main/resnlist");
  314. // grd_resnlist.nodeset = "/root/main/templist";
  315. var iOwnerRow = grd_dutschelist.findRow(getUserInfo("userid"), 2, grd_dutschelist.colRef("emplno"));
  316. var sEmplAppYn = grd_dutschelist.valueMatrix(iOwnerRow, grd_dutschelist.colRef("emplappyn"));
  317. if(sEmplAppYn != "0") return;
  318. // var iLength = 1;
  319. for(var i=1; i<=31; i++)
  320. {
  321. var sDutCd = grd_dutschelist.valueMatrix(iOwnerRow, i + iDay1ColIdx);
  322. if(sDutCd != "")
  323. {
  324. var sDutYM = ipt_dutym.value;
  325. var sDutDD = (i).toString();
  326. if(sDutDD.length == 1) sDutDD = "0" + sDutDD;
  327. var sDutYMD = sDutYM + sDutDD;
  328. // model.makeValue("/root/main/resnlist[" + iLength + "]/instcd", cmb_instcd.value );
  329. // model.makeValue("/root/main/resnlist[" + iLength + "]/dutym", ipt_dutym.value );
  330. // model.makeValue("/root/main/resnlist[" + iLength + "]/dutplcedeptcd", grd_dutschelist.valueMatrix(iOwnerRow, grd_dutschelist.colRef("dutplcedeptcd")) );
  331. // model.makeValue("/root/main/resnlist[" + iLength + "]/appscheexecflag", "1" );
  332. // model.makeValue("/root/main/resnlist[" + iLength + "]/emplno", grd_dutschelist.valueMatrix(iOwnerRow, grd_dutschelist.colRef("emplno")) );
  333. // model.makeValue("/root/main/resnlist[" + iLength + "]/dutcd", sDutCd );
  334. // model.makeValue("/root/main/resnlist[" + iLength + "]/dutdd", sDutYMD );
  335. // model.makeValue("/root/main/resnlist[" + iLength + "]/cmt", " (신청근무 : " + sDutCd + ")" );
  336. //
  337. // iLength++;
  338. grd_resnlist.addRow();
  339. grd_resnlist.valueMatrix(grd_resnlist.row, grd_resnlist.colRef("instcd")) = cmb_instcd.value;
  340. grd_resnlist.valueMatrix(grd_resnlist.row, grd_resnlist.colRef("dutym")) = ipt_dutym.value;
  341. grd_resnlist.valueMatrix(grd_resnlist.row, grd_resnlist.colRef("dutplcedeptcd")) = grd_dutschelist.valueMatrix(iOwnerRow, grd_dutschelist.colRef("dutplcedeptcd"));
  342. grd_resnlist.valueMatrix(grd_resnlist.row, grd_resnlist.colRef("appscheexecflag")) = '1';
  343. grd_resnlist.valueMatrix(grd_resnlist.row, grd_resnlist.colRef("emplno")) = grd_dutschelist.valueMatrix(iOwnerRow, grd_dutschelist.colRef("emplno"));
  344. grd_resnlist.valueMatrix(grd_resnlist.row, grd_resnlist.colRef("dutcd")) = sDutCd;
  345. grd_resnlist.valueMatrix(grd_resnlist.row, grd_resnlist.colRef("dutdd")) = sDutYMD;
  346. grd_resnlist.valueMatrix(grd_resnlist.row, grd_resnlist.colRef("cmt")) = " (신청근무 : " + sDutCd + ")";
  347. }
  348. }
  349. // grd_resnlist.nodeset = "/root/main/resnlist";
  350. }
  351. function fSetPsnRowCol()
  352. {
  353. var iRowIdx = grd_dutschelist.findRow(getUserInfo("userid"), 2, grd_dutschelist.colRef("emplno"));
  354. if(iRowIdx > 1)
  355. {
  356. for(var i=iDay1ColIdx + 1; i<iDay31ColIdx; i++)
  357. {
  358. grd_dutschelist.cellStyle("background-color", iRowIdx, i) = "#FFFFCC";
  359. grd_dutschelist.cellStyle("background-color", iOwnerRowIdx, i) = "#FFFFCC";
  360. }
  361. iOwnerRowIdx = iRowIdx;
  362. }
  363. }
  364. //드래그하여 코드를 선택할시 지우기 메뉴를 선택하였을때 호출되는 함수이다.
  365. //지우기메뉴 -> 셀을 지움
  366. function fGridCellClear()
  367. {
  368. var iChagneRow = grd_dutschelist.findRow(getUserInfo("userid"), 2, grd_dutschelist.colRef("emplno"));
  369. var iEditCnt = 0;
  370. for(var i=0; i<grd_dutschelist.selectedCells.length; i++)
  371. {
  372. var iColIdx = grd_dutschelist.selectedCells.item(i).col;
  373. var iRowIdx = grd_dutschelist.selectedCells.item(i).row;
  374. if(iChagneRow == iRowIdx)
  375. {
  376. iEditCnt++;
  377. grd_dutschelist.valueMatrix(iRowIdx, iColIdx) = "";
  378. var sDutYM = ipt_dutym.value;
  379. var sDutDD = (iColIdx - iDay1ColIdx).toString();
  380. if(sDutDD.length == 1) sDutDD = '0' + sDutDD;
  381. var sDutYMD = sDutYM + sDutDD;
  382. var sEmplNo = grd_dutschelist.valueMatrix(iRowIdx, grd_dutschelist.colRef("emplno"));
  383. var iExistCnt = 0;
  384. for(var j = 1; j<grd_resnlist.rows ; j++)
  385. {
  386. var sResnListEmplNo = grd_resnlist.valueMatrix(j, grd_resnlist.colRef("emplno"));
  387. var sResnListDutDD = grd_resnlist.valueMatrix(j, grd_resnlist.colRef("dutdd"));
  388. if(sResnListEmplNo == sEmplNo && sResnListDutDD == sDutYMD)
  389. {
  390. grd_resnlist.deleteRow(j,"false");
  391. }
  392. }
  393. fStatusCheck(iRowIdx);
  394. }
  395. }
  396. }
  397. //드래그하여 마우스 오른쪽버튼을 누를시 근무코드 메뉴가 호출되며,
  398. //호출되는 메뉴를 눌렀을시 해당 누른메뉴에 따른 이벤트를 호출하는 함수이다.
  399. function fSetValueGrid2Cell(popupParam)
  400. {
  401. if(popupParam == "fOpenPopup")
  402. {
  403. if(grd_dutschelist.valueMatrix(grd_dutschelist.row, grd_dutschelist.col) == "") return;
  404. if(fCheckAuth(grd_dutschelist.row) == false) return;
  405. fOpenPopup();
  406. }
  407. else if (popupParam == "fGridCellClear")
  408. {
  409. fGridCellClear();
  410. }
  411. else
  412. {
  413. if(popupParam == "-") return;
  414. fSetGridDutCd(popupParam);
  415. }
  416. }
  417. function fSetGridDutCd(popupParam)
  418. {
  419. var iChagneRow = grd_dutschelist.findRow(getUserInfo("userid"), 2, grd_dutschelist.colRef("emplno"));
  420. var iEditCnt = 0;
  421. for(var i=0; i<grd_dutschelist.selectedCells.length; i++)
  422. {
  423. var iColIdx = grd_dutschelist.selectedCells.item(i).col;
  424. var iRowIdx = grd_dutschelist.selectedCells.item(i).row;
  425. if(iColIdx < iDay1ColIdx || iColIdx > iDay31ColIdx) continue;
  426. if(iChagneRow == iRowIdx || JOB_RESP_CD == "1901" || JOB_RESP_CD == "1070")
  427. {
  428. iEditCnt++;
  429. // ========== 2008.9.5 수정 start ==========
  430. var sEntcoDD = grd_dutschelist.valueMatrix(iRowIdx, grd_dutschelist.colRef("entcodd"));
  431. var iEnterDayCnt = parseInt(Math.floor(Date.parse(misfConvertChar2Date(sEntcoDD, "/")) / 8.64e7)); //입사일
  432. var iCurntDayCnt = parseInt(Math.floor(Date.parse(misfConvertChar2Date(getCurrentDate(), "/")) / 8.64e7)); //현재일
  433. var iPassDayCnt = iCurntDayCnt - iEnterDayCnt;
  434. if(iPassDayCnt <= 365){
  435. if(popupParam == "V" || popupParam == "V1" ){
  436. dlgResult = messageBox("[ 1년 미만 신입간호사 ] 의 휴가는 \n\n만 1년을 채운 후 발생되는 휴가수에서 빠지므로\n\n주의하여 입력 하시기 바랍니다.\n\n", "Q003");
  437. popupParam = "V1";
  438. }
  439. }else{
  440. if(popupParam == "V1"){
  441. popupParam = "V";
  442. }
  443. }
  444. // ========== 2008.9.5 수정 end ==========
  445. grd_dutschelist.valueMatrix(iRowIdx, iColIdx) = popupParam; // 근쿠코드 입력
  446. var sDutYM = ipt_dutym.value;
  447. var sDutDD = (iColIdx - iDay1ColIdx).toString();
  448. if(sDutDD.length == 1) sDutDD = '0' + sDutDD;
  449. //var sDutYMD = sDutYM + sDutDD;
  450. var k = iColIdx - iDay1ColIdx;
  451. var symd = model.getValue("/root/main/daylist["+ k + "]/basedd");
  452. var sDutYMD = symd;
  453. var sEmplNo = grd_dutschelist.valueMatrix(iRowIdx, grd_dutschelist.colRef("emplno"));
  454. var iExistCnt = 0;
  455. for(var j = 1; j<grd_resnlist.rows ; j++)
  456. {
  457. var sResnListEmplNo = grd_resnlist.valueMatrix(j, grd_resnlist.colRef("emplno"));
  458. var sResnListDutDD = grd_resnlist.valueMatrix(j, grd_resnlist.colRef("dutdd"));
  459. if(sResnListEmplNo == sEmplNo && sResnListDutDD == sDutYMD)
  460. {
  461. if(grd_resnlist.rowStatus(j) != 1 || grd_resnlist.rowStatus(j) != 3)
  462. {
  463. grd_resnlist.addStatus(j, "update");
  464. }
  465. grd_resnlist.valueMatrix(j, grd_resnlist.colRef("dutcd")) = popupParam;
  466. grd_resnlist.valueMatrix(j, grd_resnlist.colRef("cmt")) = " (신청근무 : " + popupParam + ")";
  467. iExistCnt++;
  468. }
  469. }
  470. if(iExistCnt == 0)
  471. {
  472. grd_resnlist.addRow();
  473. grd_resnlist.valueMatrix(grd_resnlist.row, grd_resnlist.colRef("instcd")) = cmb_instcd.value;
  474. grd_resnlist.valueMatrix(grd_resnlist.row, grd_resnlist.colRef("dutym")) = ipt_dutym.value;
  475. grd_resnlist.valueMatrix(grd_resnlist.row, grd_resnlist.colRef("dutplcedeptcd")) = grd_dutschelist.valueMatrix(iRowIdx, grd_dutschelist.colRef("dutplcedeptcd"));
  476. grd_resnlist.valueMatrix(grd_resnlist.row, grd_resnlist.colRef("appscheexecflag")) = '1';
  477. grd_resnlist.valueMatrix(grd_resnlist.row, grd_resnlist.colRef("emplno")) = grd_dutschelist.valueMatrix(iRowIdx, grd_dutschelist.colRef("emplno"));
  478. grd_resnlist.valueMatrix(grd_resnlist.row, grd_resnlist.colRef("dutcd")) = popupParam;
  479. grd_resnlist.valueMatrix(grd_resnlist.row, grd_resnlist.colRef("dutdd")) = sDutYMD;
  480. grd_resnlist.valueMatrix(grd_resnlist.row, grd_resnlist.colRef("cmt")) = " (신청근무 : " + popupParam + ")";
  481. }
  482. }
  483. if(iEditCnt > 0)
  484. {
  485. fStatusCheck(iRowIdx);
  486. }
  487. }
  488. fOpenPopup();
  489. }
  490. //드래그로 근무코드를 선택했을시 그리드에 스태이터스를 "insert" 나 "update"로 바꾼다.
  491. function fStatusCheck(iChagneRow)
  492. {
  493. if(grd_dutschelist.valueMatrix(iChagneRow, grd_dutschelist.colRef("dutym")) == "")
  494. {
  495. grd_dutschelist.valueMatrix(iChagneRow, grd_dutschelist.colRef("dutym")) = ipt_dutym.value;
  496. grd_dutschelist.valueMatrix(iChagneRow, grd_dutschelist.colRef("appscheexecflag")) = '1';
  497. grd_dutschelist.addStatus(iChagneRow, "insert");
  498. }
  499. else if(grd_dutschelist.rowStatus(iChagneRow) != 1 || grd_dutschelist.rowStatus(iChagneRow) != 3)
  500. {
  501. grd_dutschelist.addStatus(iChagneRow, "update");
  502. }
  503. }
  504. function fSetResn()
  505. {
  506. if(event.button == 1)
  507. {
  508. if(grd_dutschelist.col <= iDay1ColIdx || grd_dutschelist.col >= iDay31ColIdx || grd_dutschelist.valueMatrix(grd_dutschelist.row, grd_dutschelist.col) == "")
  509. {
  510. opt_reqresn.value = "";
  511. }
  512. else
  513. {
  514. var sEmplNo = grd_dutschelist.valueMatrix(grd_dutschelist.row, grd_dutschelist.colRef("emplno"));
  515. var sDutYM = grd_dutschelist.valueMatrix(grd_dutschelist.row, grd_dutschelist.colRef("dutym"));
  516. var sDutDD = (grd_dutschelist.col - iDay1ColIdx).toString();
  517. if(sDutDD.length == 1) sDutDD = '0' + sDutDD;
  518. var sDutYMD = sDutYM + sDutDD;
  519. var sResn = "";
  520. var sCmt = "";
  521. for(i = 1; i <grd_resnlist.rows ; i++)
  522. {
  523. var sResnListEmplNo = grd_resnlist.valueMatrix(i, grd_resnlist.colRef("emplno"));
  524. var sResnListDutDD = grd_resnlist.valueMatrix(i, grd_resnlist.colRef("dutdd"));
  525. if(sResnListEmplNo == sEmplNo && sResnListDutDD == sDutYMD)
  526. {
  527. sResn = grd_resnlist.valueMatrix(i, grd_resnlist.colRef("dutresn"));
  528. sCmt = grd_resnlist.valueMatrix(i, grd_resnlist.colRef("cmt"));
  529. }
  530. }
  531. opt_reqresn.value = sResn + " " + sCmt;
  532. }
  533. }
  534. }
  535. function fOpenContextMenuList()
  536. {
  537. if(event.currentTarget == "grd_dutschelist" && grd_dutschelist.mouseCol > iDay1ColIdx && grd_dutschelist.mouseCol < iDay31ColIdx && grd_dutschelist.isCell(event.target) && grd_dutschelist.mouseRow >= grd_dutschelist.fixedrows)
  538. {
  539. window.setPopupMenu(true, "/root/codedata/popupmenu/dutschelist/item", "name", "func", true);
  540. }
  541. else
  542. {
  543. window.setPopupMenu(false);
  544. }
  545. }
  546. function fSetDutScheCnt()
  547. {
  548. var sDutCd = "";
  549. var sdutCdNum = 0;
  550. var iDayCnt = 0;
  551. var iEveCnt = 0;
  552. var iNigtCnt = 0;
  553. for(var i = 2; i < grd_dutschelist.rows ; i++ )
  554. {
  555. iDayCnt = 0;
  556. iEveCnt = 0;
  557. iNigtCnt = 0;
  558. for(var j=1; j<=31 ; j++ )
  559. {
  560. dutcd = grd_dutschelist.valueMatrix(i, j + iDay1ColIdx);
  561. dutcdnum = grd_dutcdlist.findRow(dutcd, 2, 0);
  562. if(grd_dutcdlist.valueMatrix(dutcdnum, 3) == '1')
  563. {
  564. iDayCnt++;
  565. }
  566. else if(grd_dutcdlist.valueMatrix(dutcdnum, 4) == '1')
  567. {
  568. iEveCnt++;
  569. }
  570. else if(grd_dutcdlist.valueMatrix(dutcdnum, 5) == '1')
  571. {
  572. iNigtCnt++;
  573. }
  574. }
  575. grd_dutschelist.valueMatrix(i, iDay31ColIdx + 8) = iDayCnt;
  576. grd_dutschelist.valueMatrix(i, iDay31ColIdx + 9) = iEveCnt;
  577. grd_dutschelist.valueMatrix(i, iDay31ColIdx + 10) = iNigtCnt;
  578. }
  579. }
  580. function fHideCode()
  581. {
  582. if(DUTCODE_FLAG == false)
  583. {
  584. DUTCODE_FLAG = true;
  585. grd_dutcdlist.attribute("visibility") = "hidden";
  586. grd_dutschelist.attribute("style") = "left:0px; top:74px; width:1194px; height:611px; "
  587. btn_dutcdflag.attribute("text") = "보이기";
  588. }
  589. else
  590. {
  591. DUTCODE_FLAG = false;
  592. grd_dutcdlist.attribute("visibility") = "visible";
  593. grd_dutschelist.attribute("style") = "left:0px; top:74px; width:1025px; height:611px; "
  594. btn_dutcdflag.attribute("text") = "숨기기";
  595. }
  596. }
  597. function fGetExcel()
  598. {
  599. var fileName = window.fileDialog("open", ",", false, "", "xls", "All Files (*.*)|*.*|Excel Files(*.xls)|*.xls");
  600. grd_dutschelist.loadExcel(fileName);
  601. model.removenode("/root/main/dutschelist[1]");
  602. model.removenode("/root/main/dutschelist[1]");
  603. grd_dutschelist.rebuild();
  604. for(var i = 2 ; i < grd_dutschelist.rows; i++)
  605. {
  606. grd_dutschelist.addStatus(i,"insert");
  607. }
  608. model.refresh();
  609. }
  610. function fAddRow() // 현재 안씀
  611. {
  612. // if(model.getValue("/root/send/dutym") == "")
  613. // {
  614. // messageBox("근무년월을","C002");
  615. // return;
  616. // }
  617. // else
  618. // {
  619. // //행추가를 누를시 근무년월을 입력한다.
  620. // misfGridIUD(grd_dutschelist, "A");
  621. // grd_dutschelist.col= 6;
  622. // model.setValue("/root/main/dutschelist[" + (grd_dutschelist.row - 1) + "]/appscheexecflag","1");
  623. // model.refresh();
  624. // }
  625. }
  626. function fSave()
  627. {
  628. var updtdata1 = getGridUpdateData(grd_dutschelist);
  629. if (updtdata1 == "") {
  630. messageBox("변경된 데이터가","I004");
  631. return;
  632. }
  633. fSetDutScheCnt();
  634. model.setValue("/root/send/resnlist", getGridUpdateData(grd_resnlist));
  635. misfSave("TXRPD02001");
  636. // grd_dutschelist.dispatch("onentercell");
  637. }
  638. function fGridInitialize()
  639. {
  640. var updtdata = getGridUpdateData(grd_dutschelist);
  641. if (updtdata != "")
  642. {
  643. var ret = messageBox("그리드에 작업 중인 내용이 있습니다. 초기화 작업을","Q003");
  644. if (ret != 6) // not OK
  645. {
  646. return;
  647. }
  648. }
  649. fInitialize();
  650. }
  651. function fAppClose()
  652. {
  653. var dlgResult = messageBox("근무 스케쥴 신청 마감 하겠습니까?\n\n마감 하시면 더이상 등록할 수 없습니다.", "Q999");
  654. }
  655. ]]>
  656. </script>
  657. </xhtml:head>
  658. <xhtml:body pagewidth="1211" pageheight="784" style="margin-left:8; margin-top:0; margin-right:8; margin-bottom:0; ">
  659. <script type="javascript" ev:event="onmenu">
  660. <![CDATA[
  661. var popupParam = event.description;
  662. fSetValueGrid2Cell(popupParam);
  663. ]]>
  664. </script>
  665. <group id="group1" style="left:0px; top:0px; width:1195px; height:13px; ">
  666. <caption id="caption6" class="tit_1" style="left:0px; top:0px; width:230px; height:14px; ">근무스케쥴신청등록</caption>
  667. <caption id="caption4" class="patient_text_black" style="left:922px; top:0px; width:272px; "/>
  668. </group>
  669. <group id="group3" scroll="auto" style="left:0px; top:38px; width:1195px; height:744px; ">
  670. <line id="line2" class="line_3" style="x1:0px; y1:733px; x2:1194px; y2:733px; "/>
  671. <line id="line1" class="line_1" style="x1:0px; y1:69px; x2:1195; y2:69px; "/>
  672. <caption id="caption9" class="tit_2" style="left:5px; top:54px; width:139px; height:13px; ">근무 스케줄 신청</caption>
  673. <group id="group4" style="left:0px; top:10px; width:1195; height:35px; vertical-align:top; ">
  674. <shape id="roundrect2" appearance="roundrect" ellipsewidth="10" ellipseheight="10" style="left:0px; top:0px; width:1195; height:35px; background-color:#fffbf2; border-color:#ffd799; "/>
  675. <caption id="caption5" class="search_name" style="left:495px; top:9px; width:87px; height:17px; ">관리부서 :</caption>
  676. <line id="line3" class="line_4" style="x1:1110px; y1:7px; x2:1110px; y2:29px; border-color:#ffe4bb; border-left-style:solid; "/>
  677. <caption id="caption1" class="search_name" style="left:265px; top:9px; width:91px; height:17px; ">근무년월 :</caption>
  678. <input id="ipt_dutym" ref="/root/send/dutym" class="input_s_essential" inputtype="date" format="yyyy-mm" style="left:362px; top:8px; width:103px; height:19px; text-align:center; ">
  679. <script type="javascript" ev:event="xforms-value-changed">
  680. <![CDATA[
  681. var instcd = cmb_instcd.value;
  682. if( getStringLength(ipt_dutym.value) == "6" ) {
  683. // model.removeNodeset(cmb_instcd.attribute("ref"));
  684. // model.makeNode("/root/send/instcd");
  685. misfComboInstCdListMulti("cmb_instcd",ipt_dutym.value+"31","","N");
  686. cmb_instcd.value = instcd;
  687. cmb_instcd.refresh();
  688. }
  689. model.setValue("/root/send/dutym", model.getValue("/root/send/dutym"));
  690. submit("TRRPD02005");
  691. btn_search.dispatch("DOMActivate");
  692. ]]>
  693. </script>
  694. </input>
  695. <button id="btn_search" class="btn1_letter2" navindex="4" style="left:1125px; top:7px; width:56px; height:22px; text-align:left; ">
  696. <caption>조회</caption>
  697. <script type="javascript" ev:event="DOMActivate">
  698. <![CDATA[
  699. fRetrieve();
  700. ]]>
  701. </script>
  702. </button>
  703. <caption id="cap_caution" visibility="hidden" style="left:840px; top:8px; width:175px; height:20px; font-weight:bold; color:#ff0000; ">실시번표 진행중 (수정불가)</caption>
  704. <select1 id="cmb_instcd" ref="/root/send/instcd" class="combo_search" navindex="1" appearance="minimal" style="left:100px; top:8px; width:145px; height:19px; ">
  705. <choices>
  706. <itemset>
  707. <label/>
  708. <value/>
  709. </itemset>
  710. </choices>
  711. </select1>
  712. <caption id="caption3" class="search_name" style="left:10px; top:9px; width:86px; height:17px; ">소속기관 :</caption>
  713. <button id="btn_dutdept" class="icon_search" style="left:664px; top:10px; width:16px; height:16px; ">
  714. <caption/>
  715. <script type="javascript" ev:event="DOMActivate">
  716. <![CDATA[
  717. // misfOpenPopUpList("02", ipt_dutdeptcd, "", "dutunitcd,dutunitnm", cmb_instcd.value, "instcd");
  718. misfOpenPopUpList("02", ipt_dutdeptcd,"","dutunitcd,dutunitnm", cmb_instcd.value + "," + ipt_dutym.value+"31", "instcd,basedd");
  719. model.refresh();
  720. ]]>
  721. </script>
  722. </button>
  723. <input id="ipt_dutdeptnm" ref="/root/send/dutunitnm" class="input_search" navindex="4" style="left:682px; top:8px; width:114px; height:19px; ">
  724. <script type="javascript" ev:event="onkeypress">
  725. <![CDATA[
  726. if(event.keyCode == 13)
  727. {
  728. if(ipt_dutdeptnm.value == ipt_dutdeptnm.currentText) return;
  729. ipt_dutdeptnm.value = ipt_dutdeptnm.currentText;
  730. misfValidationCheck("02", "", "dutunitcd,dutunitnm", cmb_instcd.value, "instcd" );
  731. model.refresh();
  732. }
  733. ]]>
  734. </script>
  735. <script type="javascript" ev:event="xforms-value-changed">
  736. <![CDATA[
  737. misfValidationCheck("02", "", "dutunitcd,dutunitnm", cmb_instcd.value, "instcd" );
  738. model.refresh();
  739. ]]>
  740. </script>
  741. </input>
  742. <input id="ipt_dutdeptcd" ref="/root/send/dutunitcd" class="input_search" navindex="3" maxlength="10" style="left:586px; top:8px; width:75px; height:19px; text-align:center; ">
  743. <script type="javascript" ev:event="onkeypress">
  744. <![CDATA[
  745. if(event.keyCode == 13)
  746. {
  747. if(ipt_dutdeptcd.value == ipt_dutdeptcd.currentText) return;
  748. ipt_dutdeptcd.value = ipt_dutdeptcd.currentText;
  749. misfValidationCheck("02", "", "dutunitcd,dutunitnm", cmb_instcd.value, "instcd" );
  750. model.refresh();
  751. }
  752. ]]>
  753. </script>
  754. <script type="javascript" ev:event="xforms-value-changed">
  755. <![CDATA[
  756. misfValidationCheck("02", "", "dutunitcd,dutunitnm", cmb_instcd.value, "instcd" );
  757. model.refresh();
  758. ]]>
  759. </script>
  760. </input>
  761. <select1 id="cmb_dutplce" ref="/root/send/dutunitcd" class="combo_s_essential" visibility="visible" appearance="minimal" style="left:586px; top:8px; width:210px; height:19px; ">
  762. <choices>
  763. <itemset>
  764. <label/>
  765. <value/>
  766. </itemset>
  767. </choices>
  768. <script type="javascript" ev:event="xforms-value-changed">
  769. <![CDATA[
  770. ]]>
  771. </script>
  772. </select1>
  773. </group>
  774. <caption id="caption20" style="left:962px; top:713px; width:37px; height:20px; vertical-align:middle; ">사용 :</caption>
  775. <caption id="caption21" style="left:1081px; top:713px; width:37px; height:20px; vertical-align:middle; ">잔여 :</caption>
  776. <caption id="caption13" class="cell_1" style="left:743px; top:711px; width:90px; height:23px; text-align:center; vertical-align:middle; ">연차정보</caption>
  777. <caption id="caption18" class="cell_1" style="left:0px; top:711px; width:90px; height:23px; text-align:center; vertical-align:middle; border-color:#ff0000; ">신청사유</caption>
  778. <caption id="caption19" style="left:840px; top:713px; width:37px; height:20px; vertical-align:middle; ">발생 :</caption>
  779. <datagrid id="grd_dutschelist" nodeset="/root/main/dutschelist" class="text_center" dragmode="true" dropmode="true" visibility="visible" allowuserresize="false" caption="기관코드^근무년월^근무부서^신청예정&#xA;실시구분^사원번호^성명^근무지부서^직종^1^2^3^4^5^6^7^8^9^10^11^12^13^14^15^16^17^18^19^20^21^22^23^24^25^26^27^28^29^30^31^이월Off수^Night수^Total&#xA;휴가수^사용&#xA;휴가수^생리&#xA;휴가수^Holiday수^Start Duty^Lase Duty^DAY 합계^EVENING&#xA;합계^NIGHT&#xA;합계^OFF합계^여분1&#xA;총근무시간^여분2&#xA;OT+OFF시간^여분3&#xA;OT근무시간^여분4&#xA;총근무인정시간^여분5&#xA;총근무할시간^연차합계^교육합계^보수합계^소속부서코드^직원구분^부서장&#xA;근무확정여부^인사팀&#xA;근무확정여부^비고^최초등록자ID^최초등록일시^최종수정자ID^최종수정일시|기관코드^근무년월^근무부서^신청예정&#xA;실시구분^사원번호^성명^근무지부서^직종^월^화^수^목^금^토^일^월^화^수^목^금^토^일^월^화^수^목^금^토^일^월^화^수^목^금^토^일^월^화^수^이월Off수^Night수^Total&#xA;휴가수^사용&#xA;휴가수^생리&#xA;휴가수^Holiday수^Start Duty^Lase Duty^DAY 합계^EVENING&#xA;합계^NIGHT&#xA;합계^OFF합계^여분1&#xA;총근무시간^여분2&#xA;OT+OFF시간^여분3&#xA;OT근무시간^여분4&#xA;총근무인정시간^여분5&#xA;총근무할시간^연차합계^교육합계^보수합계^소속부서코드^직원구분^부서장&#xA;근무확정여부^인사팀&#xA;근무확정여부^비고^최초등록자ID^최초등록일시^최종수정자ID^최종수정일시" colsep="^" colwidth="0, 0, 0, 0, 70, 70, 100, 70, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 60, 50, 55, 60, 60, 70, 70, 70, 70, 70, 70, 70, 70, 75, 75, 90, 85, 60, 60, 60, 80, 70, 80, 80, 150, 100, 100, 100" frozencols="6" mergecellsfixedrows="bycolrec" rowheader="update" rowheight="23" rowsep="|" style="left:0px; top:74px; width:1025px; height:611px; ">
  780. <col ref="instcd"/>
  781. <col ref="dutym" visibility="hidden"/>
  782. <col ref="dutplcedeptcd" visibility="hidden"/>
  783. <col ref="appscheexecflag" visibility="hidden"/>
  784. <col ref="emplno"/>
  785. <col ref="emplnm"/>
  786. <col ref="dutplcedeptnmtemp"/>
  787. <col ref="jobkindnm"/>
  788. <col ref="day01" style="font-family:돋움체; font-size:9pt; "/>
  789. <col ref="day02" style="font-family:돋움체; font-size:9pt; "/>
  790. <col ref="day03" style="font-family:돋움체; font-size:9pt; "/>
  791. <col ref="day04" style="font-family:돋움체; font-size:9pt; "/>
  792. <col ref="day05" style="font-family:돋움체; font-size:9pt; "/>
  793. <col ref="day06" style="font-family:돋움체; font-size:9pt; "/>
  794. <col ref="day07" style="font-family:돋움체; font-size:9pt; "/>
  795. <col ref="day08" style="font-family:돋움체; font-size:9pt; "/>
  796. <col ref="day09" style="font-family:돋움체; font-size:9pt; "/>
  797. <col ref="day10" style="font-family:돋움체; font-size:9pt; "/>
  798. <col ref="day11" style="font-family:돋움체; font-size:9pt; "/>
  799. <col ref="day12" style="font-family:돋움체; font-size:9pt; "/>
  800. <col ref="day13" style="font-family:돋움체; font-size:9pt; "/>
  801. <col ref="day14" style="font-family:돋움체; font-size:9pt; "/>
  802. <col ref="day15" style="font-family:돋움체; font-size:9pt; "/>
  803. <col ref="day16" style="font-family:돋움체; font-size:9pt; "/>
  804. <col ref="day17" style="font-family:돋움체; font-size:9pt; "/>
  805. <col ref="day18" style="font-family:돋움체; font-size:9pt; "/>
  806. <col ref="day19" style="font-family:돋움체; font-size:9pt; "/>
  807. <col ref="day20" style="font-family:돋움체; font-size:9pt; "/>
  808. <col ref="day21" style="font-family:돋움체; font-size:9pt; "/>
  809. <col ref="day22" style="font-family:돋움체; font-size:9pt; "/>
  810. <col ref="day23" style="font-family:돋움체; font-size:9pt; "/>
  811. <col ref="day24" style="font-family:돋움체; font-size:9pt; "/>
  812. <col ref="day25" style="font-family:돋움체; font-size:9pt; "/>
  813. <col ref="day26" style="font-family:돋움체; font-size:9pt; "/>
  814. <col ref="day27" style="font-family:돋움체; font-size:9pt; "/>
  815. <col ref="day28" style="font-family:돋움체; font-size:9pt; "/>
  816. <col ref="day29" style="font-family:돋움체; font-size:9pt; "/>
  817. <col ref="day30" style="font-family:돋움체; font-size:9pt; "/>
  818. <col ref="day31" style="font-family:돋움체; font-size:9pt; "/>
  819. <col ref="brngfwrdoffqty"/>
  820. <col ref="nigtcnt" visibility="hidden"/>
  821. <col ref="holitotcnt"/>
  822. <col ref="useholidayno"/>
  823. <col ref="mensholidayno"/>
  824. <col ref="holicnt"/>
  825. <col ref="startdut" visibility="hidden"/>
  826. <col ref="lastdut" visibility="hidden"/>
  827. <col ref="daysum" visibility="visible"/>
  828. <col ref="eveningsum" visibility="visible"/>
  829. <col ref="nigtsum" visibility="visible"/>
  830. <col ref="offsum" visibility="hidden"/>
  831. <col ref="surp1_totduttm" visibility="hidden"/>
  832. <col ref="surp2_otofftm" visibility="hidden"/>
  833. <col ref="surp3_ottm" visibility="hidden"/>
  834. <col ref="surp4_sumdutrcogtm" visibility="hidden"/>
  835. <col ref="surp5_sumduttm" visibility="hidden"/>
  836. <col ref="sumyearno" visibility="hidden"/>
  837. <col ref="educsum" visibility="hidden"/>
  838. <col ref="remunrsum" visibility="hidden"/>
  839. <col ref="posdeptcd" visibility="hidden"/>
  840. <col ref="empflag" visibility="hidden"/>
  841. <col ref="deprtmangrdutcnfmyn" visibility="hidden"/>
  842. <col ref="psnworkdutcnfnyn" visibility="hidden"/>
  843. <col ref="cmt" type="input" visibility="hidden"/>
  844. <col ref="emplappyn" visibility="hidden"/>
  845. <col ref="anual" visibility="hidden"/>
  846. <col ref="entcodd" visibility="hidden"/>
  847. <script type="javascript" ev:event="onmousedown">
  848. <![CDATA[
  849. if(event.button == 3) {
  850. fOpenContextMenuList();
  851. }
  852. ]]>
  853. </script>
  854. <script type="javascript" ev:event="onclick">
  855. <![CDATA[
  856. fSetResn();
  857. ]]>
  858. </script>
  859. <script type="javascript" ev:event="DOMFocusOut">
  860. <![CDATA[
  861. window.setPopupMenu(false);
  862. ]]>
  863. </script>
  864. </datagrid>
  865. <button id="btn_excadd" class="btn2_letter4" style="left:1075px; top:49px; width:64px; height:19px; text-align:left; ">
  866. <caption>엑셀입력</caption>
  867. <script type="javascript" ev:event="DOMActivate">
  868. <![CDATA[
  869. fGetExcel();
  870. ]]>
  871. </script>
  872. </button>
  873. <button id="btn_grddel" class="btn2_letter3" visibility="hidden" style="left:952px; top:49px; width:53px; height:19px; ">
  874. <caption>행삭제</caption>
  875. <script type="javascript" ev:event="DOMActivate">
  876. <![CDATA[
  877. misfGridIUD(grd_dutschelist,"D");
  878. model.refresh();
  879. ]]>
  880. </script>
  881. </button>
  882. <button id="btn_excsave" class="btn2_letter4" style="left:1010px; top:49px; width:64px; height:19px; ">
  883. <caption>엑셀저장</caption>
  884. <script type="javascript" ev:event="DOMActivate">
  885. <![CDATA[
  886. misfSaveExcel(grd_dutschelist);
  887. ]]>
  888. </script>
  889. </button>
  890. <button id="btn_grdadd" class="btn2_letter3" visibility="hidden" style="left:898px; top:49px; width:53px; height:19px; ">
  891. <caption>행추가</caption>
  892. <script type="javascript" ev:event="DOMActivate">
  893. <![CDATA[
  894. fAddRow();
  895. ]]>
  896. </script>
  897. </button>
  898. <datagrid id="grd_dutcdlist" nodeset="/root/main/dutcdlist" class="text_center" caption="근무코드^근무명^근무시간^Day인원^Evening인원^Night인원|근무코드^근무명^근무시간^Day인원^Evening인원^Night인원" colsep="^" colwidth="35, 118, 100, 100, 100, 100" mergecellsfixedrows="bycolrec" rowsep="|" style="left:1025px; top:74px; width:170px; height:611px; ">
  899. <col ref="dutcd" style="font-family:돋움체; font-size:9pt; text-align:left; "/>
  900. <col ref="dutnm" style="font-family:돋움체; font-size:9pt; text-align:left; "/>
  901. <col ref="duttm" visibility="hidden"/>
  902. <col ref="daycnt" visibility="hidden"/>
  903. <col ref="eveningpsnno" visibility="hidden"/>
  904. <col ref="nigtpsnno" visibility="hidden"/>
  905. <script type="javascript" ev:event="ondblclick">
  906. <![CDATA[
  907. if(grd_dutschelist.col > iDay1ColIdx && grd_dutschelist.col < iDay31ColIdx && grd_dutcdlist.row > 1)
  908. {
  909. fSetGridDutCd(grd_dutcdlist.valueMatrix(grd_dutcdlist.row, grd_dutcdlist.colRef("dutcd")));
  910. }
  911. ]]>
  912. </script>
  913. </datagrid>
  914. <input id="opt_reqresn" ref="/root/main/resn/reqresn" class="output_fix" disabled="true" style="left:92px; top:712px; width:649px; height:19px; "/>
  915. <input id="opt_useyearno" ref="/root/main/yearnoinfoitem/useyearno" class="output_fix" disabled="true" navindex="2" appearance="input" style="left:1000px; top:712px; width:65px; height:19px; "/>
  916. <input id="opt_spreyearno" ref="/root/main/yearnoinfoitem/spreyearno" class="output_fix" disabled="true" navindex="2" style="left:1119px; top:712px; width:65px; height:19px; "/>
  917. <button id="btn_dutcdflag" class="btn2_letter3" style="left:1140px; top:49px; width:53px; height:19px; text-align:left; ">
  918. <caption>숨기기</caption>
  919. <script type="javascript" ev:event="DOMActivate">
  920. <![CDATA[
  921. fHideCode();
  922. ]]>
  923. </script>
  924. </button>
  925. <input id="opt_genryearno" ref="/root/main/yearnoinfoitem/genryearno" class="output_fix" disabled="true" navindex="2" appearance="input" style="left:878px; top:712px; width:65px; height:19px; "/>
  926. <datagrid id="grd_resnlist" nodeset="/root/main/resnlist" visibility="hidden" caption="기관코드^근무년월^근무부서^예정실시확정구분^사번^근무코드^근무일^지원부서^근무사유^비고" colsep="^" colwidth="60, 70, 100, 60, 70, 60, 70, 100, 100, 100" mergecellsfixedrows="bycolrec" rowheader="update" rowsep="|" style="left:0px; top:455px; width:750px; height:213px; ">
  927. <col ref="instcd"/>
  928. <col ref="dutym"/>
  929. <col ref="dutplcedeptcd"/>
  930. <col ref="appscheexecflag"/>
  931. <col ref="emplno"/>
  932. <col ref="dutcd"/>
  933. <col ref="dutdd"/>
  934. <col ref="suppdeptcd" visibility="visible"/>
  935. <col ref="dutresn"/>
  936. <col ref="cmt"/>
  937. </datagrid>
  938. </group>
  939. <line id="line8" class="line_1" style="x1:0px; y1:744px; x2:1194px; y2:744px; "/>
  940. <group id="group2" scroll="auto" style="left:0px; top:12px; width:1195px; height:27px; ">
  941. <line id="line75" class="line_6" style="x1:0; y1:25; x2:1195; y2:25; "/>
  942. <button id="btn_save" class="btn4_letter2" style="left:1135px; top:3px; width:56px; height:22px; ">
  943. <caption>저장</caption>
  944. <script type="javascript" ev:event="DOMActivate">
  945. <![CDATA[
  946. fSave();
  947. ]]>
  948. </script>
  949. </button>
  950. <button id="btn_clear" class="btn4_letter3" visibility="hidden" style="left:970px; top:3px; width:68px; height:22px; ">
  951. <caption>초기화</caption>
  952. <script type="javascript" ev:event="DOMActivate">
  953. <![CDATA[
  954. fGridInitialize();
  955. ]]>
  956. </script>
  957. </button>
  958. <button id="btn_appclose" class="btn4_letter4" visibility="hidden" style="left:1048px; top:3px; width:80px; height:22px; ">
  959. <caption>신청마감</caption>
  960. <script type="javascript" ev:event="DOMActivate">
  961. <![CDATA[
  962. fAppClose();
  963. ]]>
  964. </script>
  965. </button>
  966. </group>
  967. </xhtml:body>
  968. </xhtml:html>