SMRPD02300_간호부실시확정번표등록.xrw 116 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832
  1. <?xml version="1.0" encoding="EUC-KR"?>
  2. <?xml-stylesheet href="../../../com/commonweb/css/common.css" ytype="text/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. <dutcdlist/>
  12. <dutcdlist/>
  13. </list>
  14. <resn>
  15. <reqresn/>
  16. <dutresn/>
  17. </resn>
  18. <daylist/>
  19. <resltdata>
  20. <dutschelist/>
  21. <dutmancntlist/>
  22. <stndduttablelist/>
  23. <yearnoinfolist/>
  24. <srvapplist/>
  25. <offcntlist/>
  26. </resltdata>
  27. <resnlist/>
  28. <userholiinfo>
  29. <genryearno/>
  30. <useyearno/>
  31. <spreyearno/>
  32. <genrhealholi/>
  33. <usehealholi/>
  34. <sprehealholi/>
  35. <monthhealholiusecnt/>
  36. <monthofcnt/>
  37. <monthuseofcnt/>
  38. <monthunuseofcnt/>
  39. <curmonthofcnt/>
  40. <curmonthuseofcnt/>
  41. <curmonthunuseofcnt/>
  42. <olmtspreyearno/>
  43. </userholiinfo>
  44. <stndduttableitem>
  45. <day/>
  46. <evening/>
  47. <night/>
  48. <total/>
  49. </stndduttableitem>
  50. <authcheck>
  51. <check/>
  52. </authcheck>
  53. <close>
  54. <closeyn>
  55. <cnt/>
  56. <closeyn/>
  57. <deptyn/>
  58. </closeyn>
  59. </close>
  60. <print>
  61. <printlist/>
  62. <daylist/>
  63. </print>
  64. </main>
  65. <send>
  66. <instcd/>
  67. <dutym/>
  68. <dutunitcd/>
  69. <dutunitnm/>
  70. <appscheexecflag/>
  71. <jobkind/>
  72. <emplno/>
  73. <dutdd/>
  74. <dutschelist/>
  75. <anualcalcyy/>
  76. <resnlist/>
  77. <apryn/>
  78. <deptpryn>Y</deptpryn>
  79. <params>
  80. <instcd/>
  81. <dutym/>
  82. <dutunitcd/>
  83. <appscheexecflag/>
  84. <flag/>
  85. </params>
  86. <dutcdparams>
  87. <instcd/>
  88. <dutunitcd/>
  89. </dutcdparams>
  90. <winparams>
  91. <instcd/>
  92. <dutunitcd/>
  93. <dutym/>
  94. </winparams>
  95. <scheexecflag/>
  96. </send>
  97. <init/>
  98. <hidden/>
  99. <temp>
  100. </temp>
  101. <codedata>
  102. <popupmenu>
  103. <dutschelist>
  104. </dutschelist>
  105. </popupmenu>
  106. <popuptemp>
  107. <dutschelist>
  108. <item>
  109. <name>사유 및 helper 등록</name>
  110. <func>fOpenPopup</func>
  111. </item>
  112. <item>
  113. <name>개인근무변경신청</name>
  114. <func>fOpenPopupChngApp</func>
  115. </item>
  116. <item>
  117. <name>지우기</name>
  118. <func>fGridCellClear</func>
  119. </item>
  120. <item>
  121. <name>-</name>
  122. <func/>
  123. </item>
  124. </dutschelist>
  125. </popuptemp>
  126. </codedata>
  127. </root>
  128. </instance>
  129. <submission id="TRRPD02201" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/main/resltdata"/>
  130. <submission id="TRRPD02202" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/main/resnlist"/>
  131. <submission id="TRRPD02203" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/dutcdparams" resultref="/root/main/list"/>
  132. <submission id="TRRPD02204" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/main/authcheck"/>
  133. <submission id="TRRPD02206" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/main/daylist"/>
  134. <submission id="TRRPD02208" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/main/close"/>
  135. <submission id="TRRPD02209" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/main/print"/>
  136. <submission id="TRRPD02200" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/main/temp"/>
  137. <submission id="TXRPD02201" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/main/resltdata/dutschelist" resultref="/root/temp"/>
  138. <submission id="TXRPD02202" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/params" resultref="/root/temp"/>
  139. <submission id="TXRPD02203" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/params" resultref="/root/temp"/>
  140. <submission id="TXRPD02204" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/params" resultref="/root/temp"/>
  141. <submission id="TXRPD10701" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/temp"/>
  142. </model>
  143. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  144. <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
  145. <script type="javascript" src="../../../com/commonweb/js/stringHelper.js"/>
  146. <script type="javascript" src="../../../com/commonweb/js/dateHelper.js"/>
  147. <script type="javascript" src="../../../mis/miscommonweb/js/MIS.js"/>
  148. <script type="javascript" src="../../../mis/dligclaznsmngtweb/js/RPD001.js"/>
  149. <script type="javascript" ev:event="xforms-ready">
  150. <![CDATA[
  151. fInitialize();
  152. ]]>
  153. </script>
  154. <script type="javascript">
  155. <![CDATA[
  156. var arrDayMax = new Array();
  157. var arrEveningMax = new Array();
  158. var arrNightMax = new Array();
  159. var arrTotalMax = new Array();
  160. var DUTCODE_FLAG = false;
  161. var ZOOM_FLAG = false;
  162. var MOUSE_DOWN = false;
  163. var FIRST_CHECK = false;
  164. var iDay1ColIdx = 10;
  165. var iDay31ColIdx = 42;
  166. var bFirst = true;
  167. var sCurYM = "";
  168. // var JOB_RESP_CD = "";
  169. // var DUT_UNIT_CD = "";
  170. // var DUT_UNIT_NM = "";
  171. //
  172. // var DUTY_RESP_YN = ""; // 복무 책임자
  173. // var DUTY_PART_YN = ""; // 인사 복무 담당자
  174. var SELECTED_ROW = -1;
  175. // 화면 open시와 초기화 버튼 클릭시 화면 초기화 기능을 수행한다.
  176. function fInitialize()
  177. {
  178. model.removeNodeset("/root/main/resltdata/dutschelist");
  179. model.removeNodeset("/root/main/resltdata/dutmancntlist");
  180. model.removeNodeset("/root/main/resnlist");
  181. model.removeNodeset("/root/main/list/dutcdlist");
  182. model.resetInstanceNode("/root/main/yearnoinfoitem");
  183. model.resetInstanceNode("/root/main/resn");
  184. misfMsterDetailSet(grd_dutschelist, null, "TRRPD02201", "Y");
  185. misfMsterDetailSet(grd_resnlist, null, "TRRPD02202", "Y");
  186. // misfMsterDetailSet(grd_dutcdlist, null, "TRRPD02203", "N");
  187. // misfComboComCdListMulti("Z0007","cmb_instcd");
  188. misfComboInstCdListMulti("cmb_instcd",getCurrentDate().substr(0, 8),"","N");
  189. misfGetAndSetUserInfo();
  190. misfGetUserAuth();
  191. rpdfSetControlAuth();
  192. rpdfComboCdList(cmb_dutplce); // 권한별 근무부서 세팅
  193. rpdfSetDutUnitCombo();
  194. sCurYM = getCurrentDate().substr(0, 6);
  195. model.setValue("/root/send/appscheexecflag", "2");
  196. model.setValue("/root/send/instcd", getUserInfo("dutplceinstcd"));
  197. model.setValue("/root/send/dutym", getCurrentDate().substr(0, 6));
  198. model.setValue("/root/send/dutunitcd", DUT_UNIT_CD);
  199. model.setValue("/root/send/dutunitnm", DUT_UNIT_NM);
  200. model.setValue("/root/send/dutcdparams/instcd", getUserInfo("dutplceinstcd"));
  201. model.setValue("/root/send/dutcdparams/dutunitcd", DUT_UNIT_CD);
  202. if(DUTY_PART_YN == "Y") {
  203. btn_delrow.visible = true;
  204. }
  205. //화면 권한 설정
  206. btn_save.disabled = !(checkAuth("X"));
  207. // btn_print.disabled =!(checkAuth("P"));
  208. ipt_dutym.dispatch("xforms-value-changed");
  209. model.refresh();
  210. }
  211. function fInitDutManCntList()
  212. {
  213. misfGridInit(grd_dutmancntlist);
  214. for(var i = 2; i <= 5; i++)
  215. {
  216. if( i == 2) {
  217. grd_dutmancntlist.valueMatrix(i, 0) = "Day";
  218. }
  219. else if(i == 3) {
  220. grd_dutmancntlist.valueMatrix(i, 0) = "Evening";
  221. }
  222. else if(i == 4) {
  223. grd_dutmancntlist.valueMatrix(i, 0) = "Night";
  224. }
  225. else if(i == 5) {
  226. grd_dutmancntlist.valueMatrix(i, 0) = "Total";
  227. }
  228. }
  229. }
  230. function fSetMaxCnttoArray()
  231. {
  232. arrDayMax[0] = grd_stndduttablelist.valueMatrix(1, 20);
  233. arrEveningMax[0] = grd_stndduttablelist.valueMatrix(1, 21);
  234. arrNightMax[0] = grd_stndduttablelist.valueMatrix(1, 22);
  235. arrDayMax[1] = grd_stndduttablelist.valueMatrix(1, 2);
  236. arrEveningMax[1] = grd_stndduttablelist.valueMatrix(1, 3);
  237. arrNightMax[1] = grd_stndduttablelist.valueMatrix(1, 4);
  238. arrDayMax[2] = grd_stndduttablelist.valueMatrix(1, 5);
  239. arrEveningMax[2] = grd_stndduttablelist.valueMatrix(1, 6);
  240. arrNightMax[2] = grd_stndduttablelist.valueMatrix(1, 7);
  241. arrDayMax[3] = grd_stndduttablelist.valueMatrix(1, 8);
  242. arrEveningMax[3] = grd_stndduttablelist.valueMatrix(1, 9);
  243. arrNightMax[3] = grd_stndduttablelist.valueMatrix(1, 10);
  244. arrDayMax[4] = grd_stndduttablelist.valueMatrix(1, 11);
  245. arrEveningMax[4] = grd_stndduttablelist.valueMatrix(1, 12);
  246. arrNightMax[4] = grd_stndduttablelist.valueMatrix(1, 13);
  247. arrDayMax[5] = grd_stndduttablelist.valueMatrix(1, 14);
  248. arrEveningMax[5] = grd_stndduttablelist.valueMatrix(1, 15);
  249. arrNightMax[5] = grd_stndduttablelist.valueMatrix(1, 16);
  250. arrDayMax[6] = grd_stndduttablelist.valueMatrix(1, 17);
  251. arrEveningMax[6] = grd_stndduttablelist.valueMatrix(1, 18);
  252. arrNightMax[6] = grd_stndduttablelist.valueMatrix(1, 19);
  253. }
  254. function fCheckStndSche(iDayIdx)
  255. {
  256. model.setValue("/root/main/stndduttableitem/day", arrDayMax[iDayIdx]);
  257. model.setValue("/root/main/stndduttableitem/evening", arrEveningMax[iDayIdx]);
  258. model.setValue("/root/main/stndduttableitem/night", arrNightMax[iDayIdx]);
  259. model.setValue("/root/main/stndduttableitem/total", arrTotalMax[iDayIdx]);
  260. }
  261. //사유팝업을 띄운다.
  262. function fOpenPopup()
  263. {
  264. if(grd_dutschelist.rowStyle(grd_dutschelist.row, "data", "background-color") == "#E5EFFC") return;
  265. model.setValue("/root/send/winparams/instcd", model.getValue("/root/send/instcd"));
  266. model.setValue("/root/send/winparams/dutunitcd", model.getValue("/root/send/dutunitcd"));
  267. model.setValue("/root/send/winparams/dutym", model.getValue("/root/send/dutym"));
  268. rpdfOpenPopUpList("1", grd_dutschelist, "", "", "", "", "/root/send/winparams");
  269. // modal("SPRPD01700", "", "", "", "", "/root/temp/params", "/root/target" );
  270. fSetDutImage();
  271. fSetHelperColor();
  272. }
  273. //사유팝업을 띄운다.
  274. function fOpenPopupChngApp()
  275. {
  276. if(grd_dutschelist.rowStyle(grd_dutschelist.row, "data", "background-color") == "#E5EFFC") return;
  277. model.setValue("/root/send/winparams/instcd", model.getValue("/root/send/instcd"));
  278. model.setValue("/root/send/winparams/dutunitcd", model.getValue("/root/send/dutunitcd"));
  279. model.setValue("/root/send/winparams/dutym", model.getValue("/root/send/dutym"));
  280. // modal("SPRPD10001", "", "", "", "", "/root/temp/params", "/root/target" );
  281. rpdfOpenPopUpList("3", grd_dutschelist, "", "", "", "", "/root/send/winparams");
  282. }
  283. //드래그하여 코드를 선택할시 지우기 메뉴를 선택하였을때 호출되는 함수이다.
  284. //지우기메뉴 -> 셀을 지움
  285. function fGridCellClear()
  286. {
  287. var iEditCnt = 0;
  288. var iPreRowIdx = 0;
  289. for(var i=0; i<grd_dutschelist.selectedCells.length; i++)
  290. {
  291. var iColIdx = grd_dutschelist.selectedCells.item(i).col;
  292. var iRowIdx = grd_dutschelist.selectedCells.item(i).row;
  293. if(grd_dutschelist.colRef("brngfwrdoffqty") <= iColIdx) continue;
  294. if(grd_dutschelist.rowStyle(iRowIdx, "data", "background-color") == "#E5EFFC") continue;
  295. grd_dutschelist.valueMatrix(iRowIdx, iColIdx) = "";
  296. var sDutYM = ipt_dutym.value;
  297. var sDutDD = (iColIdx - iDay1ColIdx).toString();
  298. if(sDutDD.length == 1) sDutDD = '0' + sDutDD;
  299. var sDutYMD = sDutYM + sDutDD;
  300. var sEmplNo = grd_dutschelist.valueMatrix(iRowIdx, grd_dutschelist.colRef("emplno"));
  301. var iExistCnt = 0;
  302. for(var j = 1; j<grd_resnlist.rows ; j++)
  303. {
  304. var sResnListEmplNo = grd_resnlist.valueMatrix(j, grd_resnlist.colRef("emplno"));
  305. var sResnListDutDD = grd_resnlist.valueMatrix(j, grd_resnlist.colRef("dutdd"));
  306. var sExecFlag = grd_resnlist.valueMatrix(j, grd_resnlist.colRef("appscheexecflag"));
  307. if(sResnListEmplNo == sEmplNo && sResnListDutDD == sDutYMD &&
  308. ((rdo_appscheexecflag.value == "2" && sExecFlag == "2") || (rdo_appscheexecflag.value == "3" && sExecFlag == "3")))
  309. {
  310. grd_resnlist.deleteRow(j,"false");
  311. }
  312. }
  313. grd_dutschelist.cellStyle("background-color", iRowIdx, iColIdx) = "#FFFFFF";
  314. if(iPreRowIdx != iRowIdx)
  315. {
  316. fStatusCheck(iRowIdx);
  317. iPreRowIdx = iRowIdx;
  318. }
  319. fSetMonthPrDayCnt();
  320. fSetYearHoliOffCnt();
  321. }
  322. }
  323. //드래그로 근무코드를 선택했을시 그리드에 Status를 "insert" 나 "update"로 바꾼다.
  324. function fStatusCheck(iRowIdx)
  325. {
  326. if(grd_dutschelist.valueMatrix(iRowIdx, 1) == "" && grd_dutschelist.rowStyle(iRowIdx, "data", "background-color") != "#E5EFFC")
  327. {
  328. grd_dutschelist.valueMatrix(iRowIdx, grd_dutschelist.colRef("dutym")) = model.getValue("/root/send/dutym");
  329. grd_dutschelist.valueMatrix(iRowIdx, grd_dutschelist.colRef("appscheexecflag")) = model.getValue("/root/send/appscheexecflag");
  330. grd_dutschelist.addStatus(iRowIdx, "insert");
  331. }
  332. else
  333. {
  334. if(grd_dutschelist.rowStyle(iRowIdx, "data", "background-color") != "#E5EFFC")
  335. {
  336. grd_dutschelist.addStatus(iRowIdx, "update");
  337. }
  338. }
  339. }
  340. //드래그하여 마우스 오른쪽버튼을 누를시 근무코드 메뉴가 호출되며,
  341. //호출되는 메뉴를 눌렀을시 해당 누른메뉴에 따른 이벤트를 호출하는 함수이다.
  342. function fSetValueGrid2Cell(sCMnuNm)
  343. {
  344. if(sCMnuNm == "fOpenPopup")
  345. {
  346. if(grd_dutschelist.valueMatrix(grd_dutschelist.row, grd_dutschelist.col) == "") return;
  347. fOpenPopup();
  348. }
  349. else if(sCMnuNm == "fOpenPopupChngApp")
  350. {
  351. if(grd_dutschelist.valueMatrix(grd_dutschelist.row, grd_dutschelist.col) == "") return;
  352. fOpenPopupChngApp();
  353. }
  354. else if (sCMnuNm == "fGridCellClear")
  355. {
  356. fGridCellClear();
  357. }
  358. else
  359. {
  360. if(sCMnuNm == "-") return;
  361. fSetScheDutCd(sCMnuNm);
  362. fSetMonthPrDayCnt();
  363. }
  364. }
  365. // 일자별 근무 세팅
  366. function fSetScheDutCd(sDutCd)
  367. {
  368. var iPreRowIdx = 0;
  369. for(var i=0; i<grd_dutschelist.selectedCells.length; i++)
  370. {
  371. var iColIdx = grd_dutschelist.selectedCells.item(i).col;
  372. var iRowIdx = grd_dutschelist.selectedCells.item(i).row;
  373. if(iColIdx <= iDay1ColIdx || iColIdx >= iDay31ColIdx) {
  374. continue;
  375. }
  376. if(grd_dutschelist.valueMatrix(iRowIdx, grd_dutschelist.colRef("suppflag")) == "1") {
  377. continue;
  378. }
  379. if(grd_dutschelist.colRef("brngfwrdoffqty") <= iColIdx) continue;
  380. if(grd_dutschelist.rowStyle(iRowIdx, "data", "background-color") == "#E5EFFC") continue;
  381. grd_dutschelist.valueMatrix(iRowIdx, iColIdx) = sDutCd;
  382. if(iPreRowIdx != iRowIdx)
  383. {
  384. fStatusCheck(iRowIdx);
  385. iPreRowIdx = iRowIdx;
  386. }
  387. var iRet = fScheValidCheck_Under1Year(iRowIdx, iColIdx);
  388. if(iRet != 6 && iRet != 100) {
  389. grd_dutschelist.valueMatrix(iRowIdx, iColIdx) = "";
  390. grd_dutschelist.row = iRowIdx;
  391. grd_dutschelist.col = iColIdx;
  392. return;
  393. }
  394. else if(iRet != 100 && iRet == 6) {
  395. grd_dutschelist.valueMatrix(iRowIdx, iColIdx) = "V1";
  396. }
  397. // 신청 OFF, 실시 밤근무 체크
  398. if(fScheValidCheck_DutSet(iRowIdx, iColIdx) != 6)
  399. {
  400. grd_dutschelist.valueMatrix(iRowIdx, iColIdx) = "";
  401. grd_dutschelist.row = iRowIdx;
  402. grd_dutschelist.col = iColIdx;
  403. return;
  404. }
  405. // 5일연속 근무 체크
  406. if(fScheValidCheck_5DayDut(iRowIdx, iColIdx) != 6)
  407. {
  408. grd_dutschelist.valueMatrix(iRowIdx, iColIdx) = "";
  409. grd_dutschelist.row = iRowIdx;
  410. grd_dutschelist.col = iColIdx;
  411. return;
  412. }
  413. if(fScheValidCheck_OffCnt(iRowIdx, iColIdx) != 6)
  414. {
  415. grd_dutschelist.valueMatrix(iRowIdx, iColIdx) = "";
  416. grd_dutschelist.row = iRowIdx;
  417. grd_dutschelist.col = iColIdx;
  418. return;
  419. }
  420. // 신청 OFF, 실시 밤근무 체크
  421. fScheValidCheck_NightVacation(iRowIdx, iColIdx);
  422. if(fSetYearHoliOffCntByDutCd(iRowIdx, iColIdx))
  423. {
  424. grd_dutschelist.valueMatrix(iRowIdx, iColIdx) = "";
  425. grd_dutschelist.row = iRowIdx;
  426. grd_dutschelist.col = iColIdx;
  427. }
  428. }
  429. if(grd_dutschelist.col + 1 != iDay31ColIdx - 2) {
  430. grd_dutschelist.col = grd_dutschelist.col + 1;
  431. }
  432. fSetYearHoliOffCnt();
  433. }
  434. function fSetYearHoliOffCntByDutCd(iRowIdx, iColIdx)
  435. {
  436. var bRet = false;
  437. var sSetDutCd = grd_dutschelist.valueMatrix(iRowIdx, iColIdx);
  438. var sDutCd;
  439. var iCareCount = 0;
  440. var iValiCount = 0;
  441. var nurse1yearyn = "N";
  442. var sEntcoDD = grd_dutschelist.valueMatrix(iRowIdx, grd_dutschelist.colRef("entcodd"));
  443. var iEnterDayCnt = parseInt( Math.floor( Date.parse( misfConvertChar2Date(sEntcoDD, "/")) / 8.64e7));
  444. var iCurntDayCnt = parseInt( Math.floor( Date.parse( misfConvertChar2Date(getCurrentDate(), "/")) / 8.64e7));
  445. if (iCurntDayCnt - iEnterDayCnt <= 365) {
  446. nurse1yearyn = "Y";
  447. }
  448. else {
  449. nurse1yearyn = "N";
  450. }
  451. var sEmplno = grd_dutschelist.valueMatrix(iRowIdx, grd_dutschelist.colRef("emplno"));
  452. var iEmplRowIdx = grd_yearnoinfolist.findRow(sEmplno, 2, grd_yearnoinfolist.colRef("emplno"));
  453. if(iEmplRowIdx != -1) // 년차, 보휴, OFF데이터가 존재할경우
  454. {
  455. if(sSetDutCd == "C") // 보호휴가일경우
  456. {
  457. for(var i=iDay1ColIdx+1; i<iDay31ColIdx; i++)
  458. {
  459. sDutCd = grd_dutschelist.valueMatrix(iRowIdx, i);
  460. if(sDutCd == "C") iCareCount ++;
  461. }
  462. /*
  463. *보휴는 한달에 하나만 사용하도록 수정
  464. * 2009년 11월 25일 김미선 수정. 빈센트 요청
  465. */
  466. if( iCareCount > 1 ) {
  467. messageBox("보호휴가는 한달에 한번 이상 사용", "E001");
  468. bRet = true;
  469. return;
  470. }
  471. // 발생수랑 사용수랑 비교
  472. var iGenrHealHoli = parseFloat(model.getValue("/root/main/resltdata/offcntlist[" + iEmplRowIdx + "]/genrhealholi"));
  473. var iUseHealHoli = parseFloat(model.getValue("/root/main/resltdata/offcntlist[" + iEmplRowIdx + "]/usehealholi"));
  474. var iSprehealholi = parseFloat(model.getValue("/root/main/resltdata/offcntlist[" + iEmplRowIdx + "]/sprehealholi"));
  475. var iExistYn = model.getValue("/root/main/resltdata/offcntlist[" + iEmplRowIdx + "]/existyn");
  476. if(iExistYn == "N")
  477. {
  478. iUseHealHoli += iCareCount;
  479. }
  480. if(iGenrHealHoli < iUseHealHoli )
  481. {
  482. messageBox("발생 보호 휴가수보다 더 많이 사용", "E001");
  483. bRet = true;
  484. }
  485. }
  486. else if(sSetDutCd == "V" || sSetDutCd == "V1")
  487. {
  488. for(var i=iDay1ColIdx + 1; i<iDay31ColIdx; i++)
  489. {
  490. sDutCd = grd_dutschelist.valueMatrix(iRowIdx, i);
  491. if(sDutCd == "V" || sDutCd == "V1") iValiCount++;
  492. }
  493. // 발생수랑 사용수랑 비교
  494. if (nurse1yearyn == "Y") {
  495. var iGenrYearNo = parseFloat(model.getValue("/root/main/resltdata/offcntlist[" + iEmplRowIdx + "]/genryearno"))
  496. + parseFloat(model.getValue("/root/main/resltdata/offcntlist[" + iEmplRowIdx + "]/olmtspreyearno"));
  497. }
  498. else {
  499. var iGenrYearNo = parseFloat(model.getValue("/root/main/resltdata/offcntlist[" + iEmplRowIdx + "]/genryearno"))
  500. + parseFloat(model.getValue("/root/main/resltdata/offcntlist[" + iEmplRowIdx + "]/olmtspreyearno"));
  501. }
  502. var iUseYearNo = parseFloat(model.getValue("/root/main/resltdata/offcntlist[" + iEmplRowIdx + "]/useyearno"));
  503. var iExistYn = model.getValue("/root/main/resltdata/offcntlist[" + iEmplRowIdx + "]/existyn");
  504. if(iExistYn == "N")
  505. {
  506. iUseYearNo += iValiCount++;
  507. }
  508. if(iGenrYearNo < iUseYearNo)
  509. {
  510. messageBox("발생 법정 휴가수보다 더 많이 사용@", "E001");
  511. bRet = true;
  512. }
  513. }
  514. }
  515. return bRet;
  516. }
  517. function fScheValidCheck_Under1Year(iRowIdx, iColIdx)
  518. {
  519. var sDutCd = grd_dutschelist.valueMatrix(iRowIdx, iColIdx);
  520. if(sDutCd != "V") return 100;
  521. var sEntcoDD = grd_dutschelist.valueMatrix(iRowIdx, grd_dutschelist.colRef("entcodd"));
  522. var iEnterDayCnt = parseInt(Math.floor(Date.parse(misfConvertChar2Date(sEntcoDD, "/")) / 8.64e7));
  523. var iCurntDayCnt = parseInt(Math.floor(Date.parse(misfConvertChar2Date(getCurrentDate(), "/")) / 8.64e7));
  524. var iPassDayCnt = iCurntDayCnt - iEnterDayCnt;
  525. var dlgResult = 6;
  526. if(iPassDayCnt <= 365)
  527. {
  528. dlgResult = messageBox("[ 1년 미만 신입간호사 ] 의 휴가는 \n\n만 1년을 채운 후 발생되는 휴가수에서 빠지므로\n\n주의하여 입력 하시기 바랍니다.\n\n", "Q003");
  529. }
  530. else
  531. {
  532. dlgResult = 100;
  533. }
  534. return dlgResult
  535. }
  536. function fScheValidCheck_NightVacation(iRowIdx, iColIdx)
  537. {
  538. var sDutCd = grd_dutschelist.valueMatrix(iRowIdx, iColIdx).substr(0, 1);
  539. var sEmplno = grd_dutschelist.valueMatrix(iRowIdx, grd_dutschelist.colRef("emplno"));
  540. var sDay = (iColIdx - iDay1ColIdx).toString().length == 1 ? "0" + (iColIdx - iDay1ColIdx).toString() : (iColIdx - iDay1ColIdx).toString();
  541. var sDate = ipt_dutym.value + sDay;
  542. var iResnIdx = 1;
  543. if(sDutCd == "N")
  544. {
  545. while(grd_resnlist.findRow(sDate, iResnIdx, grd_resnlist.colRef("dutdd")) > 0)
  546. {
  547. iSelectedRow = grd_resnlist.findRow(sDate, iResnIdx, grd_resnlist.colRef("dutdd"));
  548. if(grd_resnlist.valueMatrix(iSelectedRow, grd_resnlist.colRef("appscheexecflag")) == '1' && grd_resnlist.valueMatrix(iSelectedRow, grd_resnlist.colRef("emplno")) == sEmplno && grd_resnlist.valueMatrix(iSelectedRow, grd_resnlist.colRef("dutcd")).substr(0, 1) == "V")
  549. {
  550. grd_dutschelist.cellStyle("background-color", iRowIdx, iColIdx) = "#FFFCC4";
  551. return;
  552. }
  553. iResnIdx = iSelectedRow + 1;
  554. }
  555. }
  556. else
  557. {
  558. grd_dutschelist.cellStyle("background-color", iRowIdx, iColIdx) = "#FFFFFF";
  559. }
  560. }
  561. function fScheValidCheck_DutSet(iRowIdx, iColIdx)
  562. {
  563. var iMonthMaxDay = instance1.selectSingleNode("/root/main/daylist").length;
  564. var iLeft = iColIdx - 5;
  565. var bEveningDay = false;
  566. var bEveningOffDay = false;
  567. if(iLeft == 1)
  568. {
  569. var sFirstDutCd = grd_dutschelist.valueMatrix(grd_dutschelist.row, iColIdx).substr(0, 1);
  570. var sSecondDutCd = grd_dutschelist.valueMatrix(grd_dutschelist.row, iColIdx + 1).substr(0, 1);
  571. var sThirdDutCd = grd_dutschelist.valueMatrix(grd_dutschelist.row, iColIdx + 2).substr(0, 1);
  572. if(sFirstDutCd == "E" && sSecondDutCd == "D")
  573. {
  574. bEveningDay = true;
  575. }
  576. if(sFirstDutCd == "E" && sSecondDutCd == "O" && sThirdDutCd == "D")
  577. {
  578. bEveningOffDay = true;
  579. }
  580. }
  581. else if(iLeft == 2)
  582. {
  583. var sFirstDutCd = grd_dutschelist.valueMatrix(grd_dutschelist.row, iColIdx - 1).substr(0, 1);
  584. var sSecondDutCd = grd_dutschelist.valueMatrix(grd_dutschelist.row, iColIdx).substr(0, 1);
  585. var sThirdDutCd = grd_dutschelist.valueMatrix(grd_dutschelist.row, iColIdx + 1).substr(0, 1);
  586. var sForthDutCd = grd_dutschelist.valueMatrix(grd_dutschelist.row, iColIdx + 2).substr(0, 1);
  587. if(sFirstDutCd == "E" && sSecondDutCd == "D")
  588. {
  589. bEveningDay = true;
  590. }
  591. if(sSecondDutCd == "E" && sThirdDutCd == "D")
  592. {
  593. bEveningDay = true;
  594. }
  595. if(sFirstDutCd == "E" && sSecondDutCd == "O" && sThirdDutCd == "D")
  596. {
  597. bEveningOffDay = true;
  598. }
  599. if(sSecondDutCd == "E" && sThirdDutCd == "O" && sForthDutCd == "D")
  600. {
  601. bEveningOffDay = true;
  602. }
  603. }
  604. else if(iLeft >= 3 && iLeft <= (iMonthMaxDay - 2))
  605. {
  606. var sFirstDutCd = grd_dutschelist.valueMatrix(grd_dutschelist.row, iColIdx - 2).substr(0, 1);
  607. var sSecondDutCd = grd_dutschelist.valueMatrix(grd_dutschelist.row, iColIdx - 1).substr(0, 1);
  608. var sThirdDutCd = grd_dutschelist.valueMatrix(grd_dutschelist.row, iColIdx).substr(0, 1);
  609. var sForthDutCd = grd_dutschelist.valueMatrix(grd_dutschelist.row, iColIdx + 1).substr(0, 1);
  610. var sFifthDutCd = grd_dutschelist.valueMatrix(grd_dutschelist.row, iColIdx + 2).substr(0, 1);
  611. if(sSecondDutCd == "E" && sThirdDutCd == "D")
  612. {
  613. bEveningDay = true;
  614. }
  615. if(sThirdDutCd == "E" && sForthDutCd == "D")
  616. {
  617. bEveningDay = true;
  618. }
  619. if(sFirstDutCd == "E" && sSecondDutCd == "O" && sThirdDutCd == "D")
  620. {
  621. bEveningOffDay = true;
  622. }
  623. if(sSecondDutCd == "E" && sThirdDutCd == "O" && sForthDutCd == "D")
  624. {
  625. bEveningOffDay = true;
  626. }
  627. if(sThirdDutCd == "E" && sForthDutCd == "O" && sFifthDutCd == "D")
  628. {
  629. bEveningOffDay = true;
  630. }
  631. }
  632. if(iLeft == (iMonthMaxDay - 1))
  633. {
  634. var sFirstDutCd = grd_dutschelist.valueMatrix(grd_dutschelist.row, iColIdx - 2).substr(0, 1);
  635. var sSecondDutCd = grd_dutschelist.valueMatrix(grd_dutschelist.row, iColIdx - 1).substr(0, 1);
  636. var sThirdDutCd = grd_dutschelist.valueMatrix(grd_dutschelist.row, iColIdx).substr(0, 1);
  637. var sForthDutCd = grd_dutschelist.valueMatrix(grd_dutschelist.row, iColIdx + 1).substr(0, 1);
  638. if(sSecondDutCd == "E" && sThirdDutCd == "D")
  639. {
  640. bEveningDay = true;
  641. }
  642. if(sThirdDutCd == "E" && sForthDutCd == "D")
  643. {
  644. bEveningDay = true;
  645. }
  646. if(sFirstDutCd == "E" && sSecondDutCd == "O" && sThirdDutCd == "D")
  647. {
  648. bEveningOffDay = true;
  649. }
  650. if(sSecondDutCd == "E" && sThirdDutCd == "O" && sForthDutCd == "D")
  651. {
  652. bEveningOffDay = true;
  653. }
  654. }
  655. else if(iLeft == iMonthMaxDay)
  656. {
  657. var sFirstDutCd = grd_dutschelist.valueMatrix(grd_dutschelist.row, iColIdx - 2).substr(0, 1);
  658. var sSecondDutCd = grd_dutschelist.valueMatrix(grd_dutschelist.row, iColIdx - 1).substr(0, 1);
  659. var sThirdDutCd = grd_dutschelist.valueMatrix(grd_dutschelist.row, iColIdx).substr(0, 1);
  660. if(sSecondDutCd == "E" && sThirdDutCd == "D")
  661. {
  662. bEveningDay = true;
  663. }
  664. if(sFirstDutCd == "E" && sSecondDutCd == "O" && sThirdDutCd == "D")
  665. {
  666. bEveningOffDay = true;
  667. }
  668. }
  669. var dlgResult = 6;
  670. if(bEveningDay)
  671. {
  672. dlgResult = messageBox("Evening - Day 근무 배치입니다.\n\n", "Q003");
  673. if(dlgResult != 6) return dlgResult;
  674. }
  675. if(bEveningOffDay)
  676. {
  677. dlgResult = messageBox("Evening - Off - Day 근무 배치입니다.\n\n", "Q003");
  678. }
  679. return dlgResult;
  680. }
  681. function fScheValidCheck_OffCnt(iRowIdx, iColIdx)
  682. {
  683. var sDay = (iColIdx - 5).toString();
  684. if(sDay.length == 1) sDay = '0' + sDay;
  685. var dtSelected = new Date(ipt_dutym.value.substr(0, 4) + "/" + ipt_dutym.value.substr(4, 2) + "/" + sDay);
  686. var iCurDayNum = dtSelected.getDay() == 0 ? 0 : dtSelected.getDay()-1;
  687. var iStartNum = dtSelected.getDay() == 0 ? iCurDayNum - 6 : iCurDayNum - (iCurDayNum * 2);
  688. var iLastNum = dtSelected.getDay() == 0 ? 0 : 6 - (iCurDayNum);
  689. var arrWeekDutCd = new Array();
  690. var iIdx = 0;
  691. var iOffCnt = 0;
  692. var iPillCnt = 0;
  693. for(var i=iStartNum; i<=iLastNum; i++)
  694. {
  695. if((iColIdx + i) < 6 || (iColIdx + i) > 36)
  696. {
  697. arrWeekDutCd[iIdx++] = "BLOCK";
  698. iPillCnt++;
  699. }
  700. else
  701. {
  702. arrWeekDutCd[iIdx++] = grd_dutschelist.valueMatrix(grd_dutschelist.row, iColIdx + i).substr(0, 1);
  703. if(grd_dutschelist.valueMatrix(grd_dutschelist.row, iColIdx + i).substr(0, 1) != "")
  704. {
  705. iPillCnt++;
  706. }
  707. if(grd_dutschelist.valueMatrix(grd_dutschelist.row, iColIdx + i).substr(0, 1) == "O" ||
  708. grd_dutschelist.valueMatrix(grd_dutschelist.row, iColIdx + i).substr(0, 1) == "V" ||
  709. grd_dutschelist.valueMatrix(grd_dutschelist.row, iColIdx + i).substr(0, 1) == "B")
  710. {
  711. iOffCnt++;
  712. }
  713. }
  714. }
  715. var dlgResult = 6;
  716. if(iOffCnt < 2 && iPillCnt >= 6)
  717. {
  718. dlgResult = messageBox("주 휴무 2회 미만입니다.\n\n", "Q003");
  719. }
  720. return dlgResult;
  721. }
  722. function fScheValidCheck_5DayDut(iRowIdx, iColIdx)
  723. {
  724. var bShowCaution = false;
  725. var sFirstDutCd = grd_dutschelist.valueMatrix(iRowIdx, iColIdx - 5).substr(0, 1);
  726. var sSecondDutCd = grd_dutschelist.valueMatrix(iRowIdx, iColIdx - 4).substr(0, 1);
  727. var sThirdDutCd = grd_dutschelist.valueMatrix(iRowIdx, iColIdx - 3).substr(0, 1);
  728. var sFourthDutCd = grd_dutschelist.valueMatrix(iRowIdx, iColIdx - 2).substr(0, 1);
  729. var sFifthDutCd = grd_dutschelist.valueMatrix(iRowIdx, iColIdx - 1).substr(0, 1);
  730. var sSixthDutCd = grd_dutschelist.valueMatrix(iRowIdx, iColIdx).substr(0, 1);
  731. var sSeventhDutCd = grd_dutschelist.valueMatrix(iRowIdx, iColIdx + 1).substr(0, 1);
  732. var sEighthDutCd = grd_dutschelist.valueMatrix(iRowIdx, iColIdx + 2).substr(0, 1);
  733. var sNinthDutCd = grd_dutschelist.valueMatrix(iRowIdx, iColIdx + 3).substr(0, 1);
  734. var sTenthDutCd = grd_dutschelist.valueMatrix(iRowIdx, iColIdx + 4).substr(0, 1);
  735. var sEleventhDutCd = grd_dutschelist.valueMatrix(iRowIdx, iColIdx + 5).substr(0, 1);
  736. if( (sFirstDutCd == "D" || sFirstDutCd == "E" || sFirstDutCd == "N" || sFirstDutCd == "R") &&
  737. (sSecondDutCd == "D" || sSecondDutCd == "E" || sSecondDutCd == "N" || sSecondDutCd == "R") &&
  738. (sThirdDutCd == "D" || sThirdDutCd == "E" || sThirdDutCd == "N" || sThirdDutCd == "R") &&
  739. (sFourthDutCd == "D" || sFourthDutCd == "E" || sFourthDutCd == "N" || sFourthDutCd == "R") &&
  740. (sFifthDutCd == "D" || sFifthDutCd == "E" || sFifthDutCd == "N" || sFifthDutCd == "R") &&
  741. (sSixthDutCd == "D" || sSixthDutCd == "E" || sSixthDutCd == "N" || sSixthDutCd == "R") )
  742. {
  743. bShowCaution = true;
  744. }
  745. if( (sSecondDutCd == "D" || sSecondDutCd == "E" || sSecondDutCd == "N" || sSecondDutCd == "R") &&
  746. (sThirdDutCd == "D" || sThirdDutCd == "E" || sThirdDutCd == "N" || sThirdDutCd == "R") &&
  747. (sFourthDutCd == "D" || sFourthDutCd == "E" || sFourthDutCd == "N" || sFourthDutCd == "R") &&
  748. (sFifthDutCd == "D" || sFifthDutCd == "E" || sFifthDutCd == "N" || sFifthDutCd == "R") &&
  749. (sSixthDutCd == "D" || sSixthDutCd == "E" || sSixthDutCd == "N" || sSixthDutCd == "R") &&
  750. (sSeventhDutCd == "D" || sSeventhDutCd == "E" || sSeventhDutCd == "N" || sSeventhDutCd == "R") )
  751. {
  752. bShowCaution = true;
  753. }
  754. if( (sThirdDutCd == "D" || sThirdDutCd == "E" || sThirdDutCd == "N" || sThirdDutCd == "R") &&
  755. (sFourthDutCd == "D" || sFourthDutCd == "E" || sFourthDutCd == "N" || sFourthDutCd == "R") &&
  756. (sFifthDutCd == "D" || sFifthDutCd == "E" || sFifthDutCd == "N" || sFifthDutCd == "R") &&
  757. (sSixthDutCd == "D" || sSixthDutCd == "E" || sSixthDutCd == "N" || sSixthDutCd == "R") &&
  758. (sSeventhDutCd == "D" || sSeventhDutCd == "E" || sSeventhDutCd == "N" || sSeventhDutCd == "R") &&
  759. (sEighthDutCd == "D" || sEighthDutCd == "E" || sEighthDutCd == "N" || sEighthDutCd == "R") )
  760. {
  761. bShowCaution = true;
  762. }
  763. if( (sFourthDutCd == "D" || sFourthDutCd == "E" || sFourthDutCd == "N" || sFourthDutCd == "R") &&
  764. (sFifthDutCd == "D" || sFifthDutCd == "E" || sFifthDutCd == "N" || sFifthDutCd == "R") &&
  765. (sSixthDutCd == "D" || sSixthDutCd == "E" || sSixthDutCd == "N" || sSixthDutCd == "R") &&
  766. (sSeventhDutCd == "D" || sSeventhDutCd == "E" || sSeventhDutCd == "N" || sSeventhDutCd == "R") &&
  767. (sEighthDutCd == "D" || sEighthDutCd == "E" || sEighthDutCd == "N" || sEighthDutCd == "R") &&
  768. (sNinthDutCd == "D" || sNinthDutCd == "E" || sNinthDutCd == "N" || sNinthDutCd == "R") )
  769. {
  770. bShowCaution = true;
  771. }
  772. if( (sFifthDutCd == "D" || sFifthDutCd == "E" || sFifthDutCd == "N" || sFifthDutCd == "R") &&
  773. (sSixthDutCd == "D" || sSixthDutCd == "E" || sSixthDutCd == "N" || sSixthDutCd == "R") &&
  774. (sSeventhDutCd == "D" || sSeventhDutCd == "E" || sSeventhDutCd == "N" || sSeventhDutCd == "R") &&
  775. (sEighthDutCd == "D" || sEighthDutCd == "E" || sEighthDutCd == "N" || sEighthDutCd == "R") &&
  776. (sNinthDutCd == "D" || sNinthDutCd == "E" || sNinthDutCd == "N" || sNinthDutCd == "R") &&
  777. (sTenthDutCd == "D" || sTenthDutCd == "E" || sTenthDutCd == "N" || sTenthDutCd == "R") )
  778. {
  779. bShowCaution = true;
  780. }
  781. if( (sSixthDutCd == "D" || sSixthDutCd == "E" || sSixthDutCd == "N" || sSixthDutCd == "R") &&
  782. (sSeventhDutCd == "D" || sSeventhDutCd == "E" || sSeventhDutCd == "N" || sSeventhDutCd == "R") &&
  783. (sEighthDutCd == "D" || sEighthDutCd == "E" || sEighthDutCd == "N" || sEighthDutCd == "R") &&
  784. (sNinthDutCd == "D" || sNinthDutCd == "E" || sNinthDutCd == "N" || sNinthDutCd == "R") &&
  785. (sTenthDutCd == "D" || sTenthDutCd == "E" || sTenthDutCd == "N" || sTenthDutCd == "R") &&
  786. (sEleventhDutCd == "D" || sEleventhDutCd == "E" || sEleventhDutCd == "N" || sEleventhDutCd == "R") )
  787. {
  788. bShowCaution = true;
  789. }
  790. var dlgResult = 6;
  791. if(bShowCaution)
  792. {
  793. dlgResult = messageBox("5일 연속 및 초과 근무 입니다\n\n휴무를 지정 하십시오.\n\n", "Q003");
  794. }
  795. return dlgResult;
  796. }
  797. // 년차, 보휴, OFF를 카운트 하고 세팅한다.
  798. function fSetYearHoliOffCnt(sType)
  799. {
  800. var iRowIdx = grd_dutschelist.row;
  801. var sDutCd;
  802. var sExecYn;
  803. var sCnfmYn;
  804. var iDayCount;
  805. var iEveCount;
  806. var iNightCount;
  807. var iOffCount;
  808. var iValiCount;
  809. var iCareCount;
  810. var iTimeDutCount;
  811. var iSickCount;
  812. var iBirthCount;
  813. var sDutKindCd;
  814. var sDutYm = ipt_dutym.value;
  815. var dt = new Date(sDutYm.substr(0, 4), sDutYm.substr(4, 2), 0);
  816. var iLastDay = dt.getDate();
  817. var sHoliFlag;
  818. for(var i=2; i<grd_dutschelist.rows; i++)
  819. {
  820. iDayCount = 0;
  821. iEveCount = 0;
  822. iNightCount = 0;
  823. iOffCount = 0;
  824. iValiCount = 0.0;
  825. iCareCount = 0;
  826. iTimeDutCount = 0;
  827. iSickCount = 0;
  828. iBirthCount = 0;
  829. var sEmplno = grd_dutschelist.valueMatrix(i, grd_dutschelist.colRef("emplno"));
  830. var sEmplnm = grd_dutschelist.valueMatrix(i, grd_dutschelist.colRef("emplnm"));
  831. sDeptYn = model.getValue(grd_dutschelist.nodeset + "[" + (i - 1) + "]/psnworkdutcnfnyn");
  832. sExecYn = model.getValue(grd_dutschelist.nodeset + "[" + (i - 1) + "]/execschecloseyn");
  833. sCnfmYn = model.getValue(grd_dutschelist.nodeset + "[" + (i - 1) + "]/deprtmangrdutcnfmyn");
  834. if(sEmplnm == "실 시") continue;
  835. sDutKindCd = model.getValue("/root/main/resltdata/offcntlist[emplno='" + sEmplno + "']/dutkindcd");
  836. for(var j=iDay1ColIdx + 1; j<iDay31ColIdx; j++)
  837. {
  838. if(j <= iLastDay + iDay1ColIdx)
  839. {
  840. sHoliFlag = model.getValue("/root/main/daylist["+ (j - iDay1ColIdx) + "]/holiflag");
  841. sDutCd = grd_dutschelist.valueMatrix(i, j);
  842. if(sDutCd.substr(0, 1) == "D")
  843. {
  844. iDayCount++;
  845. }
  846. else if(sDutCd.substr(0, 1) == "E")
  847. {
  848. iEveCount++;
  849. }
  850. else if(sDutCd.substr(0, 1) == "N")
  851. {
  852. iNightCount++;
  853. }
  854. else if(sDutCd == "OF" || sDutCd == "OFN" || sDutCd == "OFP")
  855. {
  856. iOffCount++;
  857. }
  858. else if(sDutCd == "C")
  859. {
  860. iCareCount++;
  861. }
  862. else if(sDutCd == "V" || sDutCd == "V1")
  863. {
  864. iValiCount++;
  865. }
  866. else if(sDutCd == "1" || sDutCd == "2" || sDutCd == "3" || sDutCd == "4" || sDutCd == "5" || sDutCd == "6" || sDutCd == "7" || sDutCd == "8")
  867. {
  868. iTimeDutCount += parseFloat(sDutCd);
  869. }
  870. else if(sDutCd == "S" || sDutCd == "S1" || sDutCd == "S2" || sDutCd == "S3" || sDutCd == "S4")
  871. {
  872. iSickCount++;
  873. if((sHoliFlag == "0" || sHoliFlag == "4")) iOffCount++;
  874. }
  875. else if(sDutCd == "B")
  876. {
  877. iBirthCount++;
  878. if((sHoliFlag == "0" || sHoliFlag == "4")) iOffCount++;
  879. }
  880. else if(sDutCd == "H1" && ( (sHoliFlag == "0" || sHoliFlag == "4") || sDutKindCd == "C" ))
  881. {
  882. iOffCount++;
  883. }
  884. if(sDutCd == "DVH" || sDutCd == "VDH" || sDutCd == "VPH" || sDutCd == "VFH" || sDutCd == "VF1H" || sDutCd == "EVH" || sDutCd == "VEH")
  885. {
  886. iValiCount += 0.5;
  887. }
  888. if(sDutCd == "VFH" || sDutCd == "DFH" || sDutCd == "EFH" || sDutCd == "FDH" || sDutCd == "FEH" || sDutCd == "FF1H" || sDutCd == "PFH")
  889. {
  890. iOffCount += 0.5;
  891. }
  892. }
  893. }
  894. if(model.getValue("/root/send/appscheexecflag") == "2" && sExecYn == "Y")
  895. {
  896. continue;
  897. }
  898. if(model.getValue("/root/send/appscheexecflag") == "3" && sCnfmYn == "Y")
  899. {
  900. continue;
  901. }
  902. if(iLastDay == (iSickCount + iBirthCount))
  903. {
  904. iCareCount = 1;
  905. iOffCount = model.getValue("/root/main/userholiinfo/curmonthofcnt");
  906. }
  907. var itempDayCount = parseFloat(grd_dutschelist.valueMatrix(i, grd_dutschelist.colRef("daysum")) == "" ? 0 : grd_dutschelist.valueMatrix(i, grd_dutschelist.colRef("daysum")));
  908. var itempEveCount = parseFloat(grd_dutschelist.valueMatrix(i, grd_dutschelist.colRef("eveningsum")) == "" ? 0 : grd_dutschelist.valueMatrix(i, grd_dutschelist.colRef("eveningsum")));
  909. var itempNightCount = parseFloat(grd_dutschelist.valueMatrix(i, grd_dutschelist.colRef("nigtsum")) == "" ? 0 : grd_dutschelist.valueMatrix(i, grd_dutschelist.colRef("nigtsum")));
  910. var itempOffCount = parseFloat(grd_dutschelist.valueMatrix(i, grd_dutschelist.colRef("offsum")) == "" ? 0 : grd_dutschelist.valueMatrix(i, grd_dutschelist.colRef("offsum")));
  911. var itempValiiCount = parseFloat(grd_dutschelist.valueMatrix(i, grd_dutschelist.colRef("useholidayno")) == "" ? 0 : grd_dutschelist.valueMatrix(i, grd_dutschelist.colRef("useholidayno")));
  912. var itempCareCount = parseFloat(grd_dutschelist.valueMatrix(i, grd_dutschelist.colRef("mensholidayno")) == "" ? 0 : grd_dutschelist.valueMatrix(i, grd_dutschelist.colRef("mensholidayno")));
  913. var itempTimeDutCount = parseFloat(grd_dutschelist.valueMatrix(i, grd_dutschelist.colRef("surp1_totduttm")) == "" ? 0 : grd_dutschelist.valueMatrix(i, grd_dutschelist.colRef("surp1_totduttm")));
  914. if(sType == "retr")
  915. {
  916. if(itempDayCount != iDayCount || itempEveCount != iEveCount || itempNightCount != iNightCount || itempOffCount != iOffCount || itempValiiCount != iValiCount || itempCareCount != iCareCount || itempTimeDutCount != iTimeDutCount)
  917. {
  918. model.setValue(grd_dutschelist.nodeset + "[" + (i - 1) + "]/daysum", iDayCount);
  919. model.setValue(grd_dutschelist.nodeset + "[" + (i - 1) + "]/eveningsum", iEveCount);
  920. model.setValue(grd_dutschelist.nodeset + "[" + (i - 1) + "]/nigtsum", iNightCount);
  921. model.setValue(grd_dutschelist.nodeset + "[" + (i - 1) + "]/offsum", iOffCount);
  922. model.setValue(grd_dutschelist.nodeset + "[" + (i - 1) + "]/useholidayno", iValiCount);
  923. model.setValue(grd_dutschelist.nodeset + "[" + (i - 1) + "]/mensholidayno", iCareCount);
  924. model.setValue(grd_dutschelist.nodeset + "[" + (i - 1) + "]/surp1_totduttm", iTimeDutCount);
  925. grd_dutschelist.addStatus(i, "update");
  926. }
  927. }
  928. else
  929. {
  930. model.setValue(grd_dutschelist.nodeset + "[" + (i - 1) + "]/daysum", iDayCount);
  931. model.setValue(grd_dutschelist.nodeset + "[" + (i - 1) + "]/eveningsum", iEveCount);
  932. model.setValue(grd_dutschelist.nodeset + "[" + (i - 1) + "]/nigtsum", iNightCount);
  933. model.setValue(grd_dutschelist.nodeset + "[" + (i - 1) + "]/offsum", iOffCount);
  934. model.setValue(grd_dutschelist.nodeset + "[" + (i - 1) + "]/useholidayno", iValiCount);
  935. model.setValue(grd_dutschelist.nodeset + "[" + (i - 1) + "]/mensholidayno", iCareCount);
  936. model.setValue(grd_dutschelist.nodeset + "[" + (i - 1) + "]/surp1_totduttm", iTimeDutCount);
  937. }
  938. }
  939. fSetEmplDutInfo();
  940. model.refresh();
  941. }
  942. // 일별 Day, Evening, Night, 별 Count
  943. function fSetMonthPrDayCnt()
  944. {
  945. var arrHoliFlag = new Array();
  946. var iDayCnt = 0;
  947. var iEveningCnt = 0;
  948. var iNightCnt = 0;
  949. var iTotalCnt = 0;
  950. for(var i=1; i<=31; i++)
  951. {
  952. iDayCnt = 0;
  953. iEveningCnt = 0;
  954. iNightCnt = 0;
  955. iTotalCnt = 0;
  956. var iColIdx = i + iDay1ColIdx;
  957. for(var j=0; j<grd_dutschelist.rows; j++)
  958. {
  959. var iRowIdx = j + 2;
  960. var sDutCd = grd_dutschelist.valueMatrix(iRowIdx, iColIdx);
  961. if(sDutCd == "") continue;
  962. if(sDutCd.substr(0, 1) == "D")
  963. {
  964. iDayCnt++;
  965. iTotalCnt++;
  966. }
  967. else if(sDutCd.substr(0, 1) == "E")
  968. {
  969. iEveningCnt++;
  970. iTotalCnt++;
  971. }
  972. else if(sDutCd.substr(0, 1) == "N")
  973. {
  974. iNightCnt++;
  975. iTotalCnt++;
  976. }
  977. }
  978. model.setValue(grd_dutmancntlist.nodeset + "[" + 1 + "]/" + grd_dutmancntlist.colAttribute(i, "ref"), iDayCnt);
  979. model.setValue(grd_dutmancntlist.nodeset + "[" + 2 + "]/" + grd_dutmancntlist.colAttribute(i, "ref"), iEveningCnt);
  980. model.setValue(grd_dutmancntlist.nodeset + "[" + 3 + "]/" + grd_dutmancntlist.colAttribute(i, "ref"), iNightCnt);
  981. model.setValue(grd_dutmancntlist.nodeset + "[" + 4 + "]/" + grd_dutmancntlist.colAttribute(i, "ref"), iTotalCnt);
  982. grd_dutmancntlist.colStyle((i), "all", "color") = "#000000";
  983. grd_dutmancntlist.colStyle((i), "all", "font-weight") = "";
  984. var sYM = ipt_dutym.value;
  985. var sDay = (i).toString();
  986. (sDay.length == 1) ? sDay = '0' + sDay : sDay;
  987. var dt = new Date(misfConvertChar2Date(sYM + sDay, "/"));
  988. var iArrIdx = dt.getDay();
  989. if(iDayCnt > parseInt(arrDayMax[iArrIdx]))
  990. {
  991. grd_dutmancntlist.cellStyle("color", 2, i) = "#FF0000";
  992. grd_dutmancntlist.cellStyle("font-weight", 2, i) = "bold";
  993. }
  994. else if(iDayCnt < parseInt(arrDayMax[iArrIdx]) && iDayCnt != 0)
  995. {
  996. grd_dutmancntlist.cellStyle("color", 2, i) = "#0000FF";
  997. grd_dutmancntlist.cellStyle("font-weight", 2, i) = "bold";
  998. }
  999. else if(iDayCnt == 0)
  1000. {
  1001. grd_dutmancntlist.cellStyle("color", 2, i) = "#C0C0C0"
  1002. }
  1003. if(iEveningCnt > parseInt(arrEveningMax[iArrIdx]))
  1004. {
  1005. grd_dutmancntlist.cellStyle("color", 3, i) = "#FF0000";
  1006. grd_dutmancntlist.cellStyle("font-weight", 3, i) = "bold";
  1007. }
  1008. else if(iEveningCnt < parseInt(arrEveningMax[iArrIdx]) && iEveningCnt != 0)
  1009. {
  1010. grd_dutmancntlist.cellStyle("color", 3, i) = "#0000FF";
  1011. grd_dutmancntlist.cellStyle("font-weight", 3, i) = "bold";
  1012. }
  1013. else if(iEveningCnt == 0)
  1014. {
  1015. grd_dutmancntlist.cellStyle("color", 3, i) = "#C0C0C0";
  1016. }
  1017. if(iNightCnt > parseInt(opt_night.value))
  1018. {
  1019. grd_dutmancntlist.cellStyle("color", 4, i) = "#FF0000";
  1020. grd_dutmancntlist.cellStyle("font-weight", 4, i) = "bold";
  1021. }
  1022. else if(iNightCnt < parseInt(arrNightMax[iArrIdx]) && iNightCnt != 0)
  1023. {
  1024. grd_dutmancntlist.cellStyle("color", 4, i) = "#0000FF";
  1025. grd_dutmancntlist.cellStyle("font-weight", 4, i) = "bold";
  1026. }
  1027. else if(iNightCnt == 0)
  1028. {
  1029. grd_dutmancntlist.cellStyle("color", 4, i) = "#C0C0C0"
  1030. }
  1031. if(iTotalCnt == 0)
  1032. {
  1033. grd_dutmancntlist.cellStyle("color", 5, i) = "#C0C0C0"
  1034. }
  1035. }
  1036. }
  1037. //셀 클릭시 사유 세팅..
  1038. function fSetResnValue()
  1039. {
  1040. grd_dutmancntlist.col = grd_dutschelist.col - iDay1ColIdx;
  1041. var dt = new Date(misfConvertChar2Date(model.getValue("/root/main/daylist[" + (grd_dutschelist.col - iDay1ColIdx) + "]/basedd"), "/"));
  1042. fCheckStndSche(dt.getDay());
  1043. if(grd_dutschelist.col < iDay1ColIdx || grd_dutschelist.col > iDay31ColIdx || grd_dutschelist.valueMatrix(grd_dutschelist.row, grd_dutschelist.col) == "" &&
  1044. grd_dutschelist.cellStyle("background-image", grd_dutschelist.row, grd_dutschelist.col, grd_dutschelist.row, grd_dutschelist.col) == "")
  1045. {
  1046. model.setValue("/root/main/resn/reqresn", "");
  1047. model.setValue("/root/main/resn/dutresn", "");
  1048. return;
  1049. }
  1050. else
  1051. {
  1052. model.setValue("/root/main/resn/reqresn", "");
  1053. model.setValue("/root/main/resn/dutresn", "");
  1054. var sDutYM = model.getValue("/root/send/dutym").substr(0, 6);
  1055. var sDutDD = (grd_dutschelist.col - iDay1ColIdx).toString();
  1056. if(sDutDD.length == 1) sDutDD = '0' + sDutDD;
  1057. var sDutYMD = sDutYM + sDutDD;
  1058. var sEmplNo = grd_dutschelist.valueMatrix(grd_dutschelist.row, grd_dutschelist.colRef("emplno"));
  1059. var iExistRowIdx = 0;
  1060. var sResnListEmplNo = "";
  1061. var sResnListDutDD = "";
  1062. var sResnListAppScheExecFlag = "";
  1063. var sReqResn = "";
  1064. var sDutResn = "";
  1065. var sCmt = "";
  1066. if(model.getValue("/root/send/appscheexecflag") == '2')
  1067. {
  1068. for(i = 1; i <grd_resnlist.rows ; i++)
  1069. {
  1070. sResnListEmplNo = grd_resnlist.valueMatrix(i, grd_resnlist.colRef("emplno"));
  1071. sResnListDutDD = grd_resnlist.valueMatrix(i, grd_resnlist.colRef("dutdd"));
  1072. sResnListAppScheExecFlag = grd_resnlist.valueMatrix(i, grd_resnlist.colRef("appscheexecflag"));
  1073. if(sDutYMD == sResnListDutDD && sEmplNo == sResnListEmplNo)
  1074. {
  1075. if(sResnListAppScheExecFlag == '1')
  1076. {
  1077. sReqResn = grd_resnlist.valueMatrix(i, grd_resnlist.colRef("dutresn"));
  1078. sCmt = grd_resnlist.valueMatrix(i, grd_resnlist.colRef("cmt"));
  1079. }
  1080. else if(sResnListAppScheExecFlag == '2')
  1081. {
  1082. sDutResn = grd_resnlist.valueMatrix(i, grd_resnlist.colRef("dutresn"));
  1083. }
  1084. }
  1085. }
  1086. if(grd_dutschelist.cellStyle("background-image", grd_dutschelist.row, grd_dutschelist.col, grd_dutschelist.row, grd_dutschelist.col) == "")
  1087. {
  1088. model.setValue("/root/main/resn/reqresn", "");
  1089. }
  1090. else
  1091. {
  1092. model.setValue("/root/main/resn/reqresn", sReqResn + sCmt)
  1093. }
  1094. model.setValue("/root/main/resn/dutresn", sDutResn);
  1095. }
  1096. else if(model.getValue("/root/send/appscheexecflag") == '3')
  1097. {
  1098. for(i = 1; i <grd_resnlist.rows ; i++)
  1099. {
  1100. sResnListEmplNo = grd_resnlist.valueMatrix(i, grd_resnlist.colRef("emplno"));
  1101. sResnListDutDD = grd_resnlist.valueMatrix(i, grd_resnlist.colRef("dutdd"));
  1102. sResnListAppScheExecFlag = grd_resnlist.valueMatrix(i, grd_resnlist.colRef("appscheexecflag"));
  1103. if(sDutYMD == sResnListDutDD && sEmplNo == sResnListEmplNo)
  1104. {
  1105. if(sResnListAppScheExecFlag == '1')
  1106. {
  1107. sReqResn = grd_resnlist.valueMatrix(i, grd_resnlist.colRef("dutresn"));
  1108. sCmt = grd_resnlist.valueMatrix(i, grd_resnlist.colRef("cmt"));
  1109. }
  1110. else if(sResnListAppScheExecFlag == '2' && grd_dutschelist.valueMatrix(grd_dutschelist.row, grd_dutschelist.colRef("appscheexecflag")) == '2')
  1111. {
  1112. sDutResn = grd_resnlist.valueMatrix(i, grd_resnlist.colRef("dutresn"));
  1113. }
  1114. else if(sResnListAppScheExecFlag == '3')
  1115. {
  1116. sDutResn = grd_resnlist.valueMatrix(i, grd_resnlist.colRef("dutresn"));
  1117. }
  1118. }
  1119. }
  1120. if(grd_dutschelist.cellStyle("background-image", grd_dutschelist.row, grd_dutschelist.col, grd_dutschelist.row, grd_dutschelist.col) == "")
  1121. {
  1122. model.setValue("/root/main/resn/reqresn","");
  1123. }
  1124. else
  1125. {
  1126. model.setValue("/root/main/resn/reqresn", sReqResn + sCmt)
  1127. }
  1128. model.setValue("/root/main/resn/dutresn", sDutResn);
  1129. }
  1130. }
  1131. model.refresh();
  1132. }
  1133. // 컨텍스트 메뉴 호출
  1134. function fOpenContextMenuList()
  1135. {
  1136. if(grd_dutschelist.mouseCol > iDay1ColIdx && grd_dutschelist.mouseCol < iDay31ColIdx && grd_dutschelist.isCell(event.target) && grd_dutschelist.mouseRow >= grd_dutschelist.fixedRows)
  1137. {
  1138. if(grd_dutschelist.mouseRow >= grd_dutschelist.fixedrows)
  1139. {
  1140. if(grd_dutschelist.selectedCells.length > 1)
  1141. {
  1142. row2 = grd_dutschelist.mouseRow;
  1143. col2 = grd_dutschelist.mouseCol;
  1144. }
  1145. window.setPopupMenu(true, "/root/codedata/popupmenu/dutschelist/item", "name", "func", true);
  1146. }
  1147. else
  1148. {
  1149. window.setPopupMenu(false);
  1150. }
  1151. }
  1152. else
  1153. {
  1154. window.setPopupMenu(false);
  1155. }
  1156. }
  1157. // 로우 변경시.. 해당 사원의 정보를 조회
  1158. function fSetEmplDutInfo()
  1159. {
  1160. var sEmplNo = grd_dutschelist.valueMatrix(grd_dutschelist.row, grd_dutschelist.colRef("emplno"));
  1161. var iEmplNoIdx = grd_yearnoinfolist.findRow(sEmplNo, 0, grd_yearnoinfolist.colRef("emplno"));
  1162. if(iEmplNoIdx != -1)
  1163. {
  1164. model.copyNode("/root/main/userholiinfo", "/root/main/resltdata/offcntlist[" + iEmplNoIdx + "]");
  1165. var iUseHolidayNo = parseFloat((grd_dutschelist.valueMatrix(grd_dutschelist.row, grd_dutschelist.colRef("useholidayno")) == "") ? 0 : grd_dutschelist.valueMatrix(grd_dutschelist.row, grd_dutschelist.colRef("useholidayno")));
  1166. var iMensHoliDayNo = parseFloat((grd_dutschelist.valueMatrix(grd_dutschelist.row, grd_dutschelist.colRef("mensholidayno")) == "") ? 0 : grd_dutschelist.valueMatrix(grd_dutschelist.row, grd_dutschelist.colRef("mensholidayno")));
  1167. var iOffSum = parseFloat((grd_dutschelist.valueMatrix(grd_dutschelist.row, grd_dutschelist.colRef("offsum")) == "") ? 0 : grd_dutschelist.valueMatrix(grd_dutschelist.row, grd_dutschelist.colRef("offsum")));
  1168. var iUseYearNo = parseFloat(model.getValue("/root/main/resltdata/offcntlist[" + iEmplNoIdx + "]/useyearno"));
  1169. var iSPreYearNo = parseFloat(model.getValue("/root/main/resltdata/offcntlist[" + iEmplNoIdx + "]/spreyearno"));
  1170. var iUseHealHoli = parseFloat(model.getValue("/root/main/resltdata/offcntlist[" + iEmplNoIdx + "]/usehealholi"));
  1171. var iSPreHealHoli = parseFloat(model.getValue("/root/main/resltdata/offcntlist[" + iEmplNoIdx + "]/sprehealholi"));
  1172. var iMonthUseOfCnt = parseFloat(model.getValue("/root/main/resltdata/offcntlist[" + iEmplNoIdx + "]/monthuseofcnt"));
  1173. var iMonthUnUseOfCnt = parseFloat(model.getValue("/root/main/resltdata/offcntlist[" + iEmplNoIdx + "]/monthunuseofcnt"));
  1174. var iMonthHealHoliUseCnt = parseFloat(model.getValue("/root/main/resltdata/offcntlist[" + iEmplNoIdx + "]/monthhealholiusecnt"));
  1175. var iCurMonthOfCnt = parseFloat(model.getValue("/root/main/resltdata/offcntlist[" + iEmplNoIdx + "]/curmonthofcnt"));
  1176. var iCurMonthUseOfCnt = parseFloat(model.getValue("/root/main/resltdata/offcntlist[" + iEmplNoIdx + "]/curmonthuseofcnt"));
  1177. var iCurMonthUnUseOfCnt = parseFloat(model.getValue("/root/main/resltdata/offcntlist[" + iEmplNoIdx + "]/curmonthunuseofcnt"));
  1178. var iExistYn = model.getValue("/root/main/resltdata/offcntlist[" + iEmplNoIdx + "]/existyn")
  1179. if(iExistYn == "N")
  1180. {
  1181. iUseYearNo += iUseHolidayNo;
  1182. iSPreYearNo -= iUseHolidayNo;
  1183. iUseHealHoli += iMensHoliDayNo;
  1184. iSPreHealHoli -= iMensHoliDayNo;
  1185. iMonthUseOfCnt += iOffSum;
  1186. iMonthUnUseOfCnt -= iOffSum;
  1187. iCurMonthUseOfCnt += iOffSum;
  1188. iCurMonthUnUseOfCnt -= iOffSum;
  1189. }
  1190. model.setValue("/root/main/userholiinfo/useyearno", iUseYearNo); //사용법정휴가
  1191. model.setValue("/root/main/userholiinfo/spreyearno", iSPreYearNo); //잔여법정휴가
  1192. model.setValue("/root/main/userholiinfo/usehealholi", iUseHealHoli); //사용보호휴가수
  1193. model.setValue("/root/main/userholiinfo/sprehealholi", iSPreHealHoli); //잔여보호휴가수
  1194. model.setValue("/root/main/userholiinfo/monthuseofcnt", iMonthUseOfCnt);
  1195. model.setValue("/root/main/userholiinfo/monthunuseofcnt", iMonthUnUseOfCnt);
  1196. model.setValue("/root/main/userholiinfo/monthhealholiusecnt", iMonthHealHoliUseCnt);
  1197. model.setValue("/root/main/userholiinfo/curmonthuseofcnt", iCurMonthUseOfCnt);
  1198. model.setValue("/root/main/userholiinfo/curmonthunuseofcnt", iCurMonthUnUseOfCnt);
  1199. }
  1200. else
  1201. {
  1202. model.makeValue("/root/main/userholiinfo/genryearno", 0); //법정휴가
  1203. model.makeValue("/root/main/userholiinfo/olmtspreyearno", 0); //1년미만연차
  1204. model.makeValue("/root/main/userholiinfo/useyearno", 0); //사용법정휴가
  1205. model.makeValue("/root/main/userholiinfo/spreyearno", 0); //잔여법정휴가
  1206. model.makeValue("/root/main/userholiinfo/genrhealholi", 0); //보호휴가수
  1207. model.makeValue("/root/main/userholiinfo/usehealholi", 0); //사용보호휴가수
  1208. model.makeValue("/root/main/userholiinfo/sprehealholi", 0); //잔여보호휴가수
  1209. model.makeValue("/root/main/userholiinfo/monthofcnt", 0);
  1210. model.makeValue("/root/main/userholiinfo/monthuseofcnt", 0);
  1211. model.makeValue("/root/main/userholiinfo/monthunuseofcnt", 0);
  1212. model.makeValue("/root/main/userholiinfo/monthhealholiusecnt", 0);
  1213. model.makeValue("/root/main/userholiinfo/curmonthofcnt", 0);
  1214. model.makeValue("/root/main/userholiinfo/curmonthuseofcnt", 0);
  1215. model.makeValue("/root/main/userholiinfo/curmonthunuseofcnt", 0);
  1216. }
  1217. model.refresh();
  1218. }
  1219. // 조회
  1220. function fRetrieve()
  1221. {
  1222. grd_dutschelist.rebuildStyle();
  1223. submit("TRRPD02204");
  1224. model.setValue("/root/send/apryn", "Y");
  1225. if(model.getValue("/root/send/dutym") == "")
  1226. {
  1227. messageBox("적용년월을", "C002");
  1228. return;
  1229. }
  1230. else if(model.getValue("/root/send/dutunitcd") == "")
  1231. {
  1232. messageBox("근무부서를", "C001");
  1233. return "dutunitval";
  1234. }
  1235. model.setValue("/root/send/emplno", "");
  1236. model.setValue("/root/send/anualcalcyy", ipt_dutym.value.substr(0, 4));
  1237. misfMsterDetailRetrieve();
  1238. submit("TRRPD02203");
  1239. fSetContextMenu(); // 번표 컨텍스트 메뉴를 추가
  1240. fSetScheFlagRowStyle(); // 실시일때와, 확정일때 로우스타일을 바꾼다.
  1241. fSetCalendarScheList(); // 번표에 달력의 일자를 세팅한다.
  1242. fSetDutImage(); // 1년 미만 및 근무 스케쥴이 등록된 사유가 있으면 Cell 에 별표 표시
  1243. fSetMaxCnttoArray(); // 배열에 일별 Day, Evening, Night 맥스값 넣기
  1244. fSetMonthPrDayCnt(); // 월별 근무 카운트
  1245. fSetSrvAppDutCd();
  1246. fSetHelperColor(); // 헬퍼일자 코드 색칠
  1247. fShowInfoVisible();
  1248. }
  1249. function fSetScheFlagRowStyle()
  1250. {
  1251. for(var i=2 ; i<grd_dutschelist.rows; i++)
  1252. {
  1253. if(model.getValue("/root/send/appscheexecflag") == "3") {
  1254. misfSetReadOnlyCol(grd_dutschelist, "part", true, i);
  1255. }
  1256. else {
  1257. misfSetReadOnlyCol(grd_dutschelist, "part", false, i);
  1258. grd_dutschelist.rowStyle(i, "data", "background-color") = "#FFFFFF";
  1259. }
  1260. var sJobKindCd = model.getValue("/root/main/resltdata/dutschelist[" + (i - 1) +"]/jobkindcd");
  1261. if(sJobKindCd == "2820")
  1262. {
  1263. grd_dutschelist.rowStyle(i, "data", "background-color") = "#FEF2FE";
  1264. }
  1265. }
  1266. }
  1267. function fSetCalendarScheList()
  1268. {
  1269. var basedd = new Array();
  1270. var holiflag = new Array();
  1271. var daynm = new Array();
  1272. for( var i=1; i<=31; i++)
  1273. {
  1274. basedd[i - 1] = model.getValue("/root/main/daylist["+ i + "]/basedd");
  1275. holiflag[i - 1] = model.getValue("/root/main/daylist["+ i + "]/holiflag");
  1276. daynm[i - 1] = model.getValue("/root/main/daylist["+ i + "]/daynm");
  1277. if(basedd[i - 1] == "")
  1278. {
  1279. grd_dutschelist.colHidden(i + iDay1ColIdx) = true;
  1280. grd_dutmancntlist.colHidden(i) = true;
  1281. }
  1282. else
  1283. {
  1284. grd_dutschelist.colHidden(i + iDay1ColIdx) = false;
  1285. grd_dutmancntlist.colHidden(i) = false;
  1286. }
  1287. if(holiflag[i - 1] == '4')
  1288. {
  1289. grd_dutschelist.colStyle((i + iDay1ColIdx), "all", "color") = "#0000FF";
  1290. }
  1291. else if(holiflag[i - 1] == '0')
  1292. {
  1293. grd_dutschelist.colStyle((i + iDay1ColIdx), "all", "color") = "#FF0000";
  1294. }
  1295. else
  1296. {
  1297. grd_dutschelist.colStyle((i + iDay1ColIdx), "all", "color") = "#000000";
  1298. }
  1299. }
  1300. var sche_caption = grd_dutschelist.caption;
  1301. var sche_split = sche_caption.split("^");
  1302. var man_caption = grd_dutmancntlist.caption;
  1303. var man_split = man_caption.split("^");
  1304. sche_caption = "근무년월";
  1305. man_caption = "Duty별 근무자수";
  1306. for(var j=1; j<sche_split.length; j++ )
  1307. {
  1308. if(j > 79 && j < 111)
  1309. {
  1310. sche_caption = sche_caption + "^" + daynm[j - 80];
  1311. }
  1312. else
  1313. {
  1314. sche_caption = sche_caption + "^" + sche_split[j];
  1315. }
  1316. }
  1317. grd_dutschelist.caption = sche_caption;
  1318. for(var k=1; k<man_split.length; k++)
  1319. {
  1320. if(k > 31)
  1321. {
  1322. man_caption = man_caption + "^" + daynm[k - 32];
  1323. }
  1324. else
  1325. {
  1326. man_caption = man_caption + "^" + man_split[k];
  1327. }
  1328. }
  1329. grd_dutmancntlist.caption = man_caption;
  1330. }
  1331. function fSetContextMenu()
  1332. {
  1333. model.removenode("/root/codedata/popupmenu/dutschelist");
  1334. model.copyNode("/root/codedata/popupmenu", "/root/codedata/popuptemp");
  1335. var sPreCode = "";
  1336. var iLineCnt = 0;
  1337. for(i=2 ; i < grd_dutcdlist.rows ; i++)
  1338. {
  1339. model.makeValue("/root/codedata/popupmenu/dutschelist[" + (i + iLineCnt) + "]/item/name", grd_dutcdlist.valueMatrix(i, grd_dutcdlist.colRef("dutcdnm")));
  1340. model.makeValue("/root/codedata/popupmenu/dutschelist[" + (i + iLineCnt) + "]/item/func", grd_dutcdlist.valueMatrix(i, grd_dutcdlist.colRef("dutcd")));
  1341. }
  1342. }
  1343. function fSetDutImage()
  1344. {
  1345. if(model.getValue("/root/send/appscheexecflag") == "2")
  1346. {
  1347. for(var i = 2 ; i < grd_dutschelist.rows; i++)
  1348. {
  1349. for(var j=iDay1ColIdx + 1; j<iDay31ColIdx; j++)
  1350. {
  1351. grd_dutschelist.cellStyle("background-image", i, j) = "";
  1352. }
  1353. var sEmplNo = grd_dutschelist.valueMatrix(i, grd_dutschelist.colRef("emplno"));
  1354. var iResnIdx = 0;
  1355. var iSelectedRow = 0;
  1356. while(grd_resnlist.findRow(sEmplNo, iResnIdx, grd_resnlist.colRef("emplno")) > 0)
  1357. {
  1358. iSelectedRow = grd_resnlist.findRow(sEmplNo, iResnIdx, grd_resnlist.colRef("emplno"));
  1359. if(grd_resnlist.valueMatrix(iSelectedRow, grd_resnlist.colRef("appscheexecflag")) == '1')
  1360. {
  1361. sDutDD = grd_resnlist.valueMatrix(iSelectedRow, grd_resnlist.colRef("dutdd")).substr(6, 2);
  1362. sDutCd = grd_resnlist.valueMatrix(iSelectedRow, grd_resnlist.colRef("dutcd"));
  1363. iColIdx = parseFloat(sDutDD) + iDay1ColIdx;
  1364. grd_dutschelist.cellStyle("background-image", i, iColIdx) = "../../../com/commonweb/images/input_essential.gif";
  1365. if(grd_dutschelist.valueMatrix(i, iColIdx).substr(0, 1) == "N" && sDutCd.substr(0, 1) == "V")
  1366. {
  1367. grd_dutschelist.cellStyle("background-color", i, iColIdx) = "#FFFCC4";
  1368. }
  1369. }
  1370. iResnIdx = iSelectedRow + 1;
  1371. }
  1372. }
  1373. }
  1374. }
  1375. function fSetSrvAppDutCd()
  1376. {
  1377. for(var i=2; i<grd_dutschelist.rows; i++)
  1378. {
  1379. if(grd_dutschelist.valueMatrix(i, grd_dutschelist.colRef("emplappyn")) == "0")
  1380. {
  1381. model.setValue(grd_dutschelist.nodeset + "[" + (i - 1) + "]/dutym", model.getValue("/root/send/dutym"));
  1382. model.setValue(grd_dutschelist.nodeset + "[" + (i - 1) + "]/appscheexecflag", "2");
  1383. grd_dutschelist.addStatus(i, "insert");
  1384. }
  1385. }
  1386. }
  1387. function fSetHelperColor()
  1388. {
  1389. for(var i=2; i<grd_dutschelist.rows; i++)
  1390. {
  1391. var sSuppFlag = grd_dutschelist.valueMatrix(i, grd_dutschelist.colRef("suppflag"))
  1392. var iCnt = 0;
  1393. for(var j=iDay1ColIdx + 1; j<iDay31ColIdx; j++)
  1394. {
  1395. sBackCol = grd_dutschelist.cellStyle("background-color", i, j);
  1396. if(sSuppFlag == "1" && grd_dutschelist.valueMatrix(i, j) != "") {
  1397. iCnt++;
  1398. }
  1399. if(iCnt > 0) {
  1400. grd_dutschelist.rowStyle(i, "data", "background-color") == "#CCFFCC"
  1401. }
  1402. }
  1403. if(sSuppFlag == "1") {
  1404. misfSetReadOnlyCol(grd_dutschelist, "part", true, i);
  1405. grd_dutschelist.cellStyle("background-color", i, grd_dutschelist.colRef("emplnm")) = "#CCFFCC";
  1406. }
  1407. }
  1408. for(var i=1; i<grd_resnlist.rows; i++)
  1409. {
  1410. var sSuppDeptCd = grd_resnlist.valueMatrix(i, grd_resnlist.colRef("suppdeptcd"));
  1411. var sDutDD = parseFloat(grd_resnlist.valueMatrix(i, grd_resnlist.colRef("dutdd")).substr(6, 2));
  1412. var sEmplNo = grd_resnlist.valueMatrix(i, grd_resnlist.colRef("emplno"));
  1413. var sScheFlag = grd_resnlist.valueMatrix(i, grd_resnlist.colRef("appscheexecflag"));
  1414. var iRowIdx = grd_dutschelist.findRow(sEmplNo, 2, grd_dutschelist.colRef("emplno"));
  1415. var sSuppFlag = "";
  1416. if(sSuppDeptCd != "" && sScheFlag == rdo_appscheexecflag.value)
  1417. {
  1418. if(iRowIdx < 0) continue;
  1419. sSuppFlag = grd_dutschelist.valueMatrix(iRowIdx, grd_dutschelist.colRef("suppflag"));
  1420. if(sSuppFlag == "1") {
  1421. grd_dutschelist.cellStyle("background-color", iRowIdx, sDutDD + iDay1ColIdx ) = "#CCFFCC";
  1422. }
  1423. else {
  1424. grd_dutschelist.cellStyle("background-color", iRowIdx, sDutDD + iDay1ColIdx ) = "#FFCC66";
  1425. }
  1426. }
  1427. else {
  1428. sSuppFlag = grd_dutschelist.valueMatrix(iRowIdx, grd_dutschelist.colRef("suppflag"));
  1429. }
  1430. }
  1431. }
  1432. function fShowInfoVisible()
  1433. {
  1434. model.refresh();
  1435. var bCnfm = false;
  1436. var bExec = false;
  1437. var bDept = false;
  1438. for(var i=1; i<=instance1.selectNodes(grd_dutschelist.nodeset).length; i++)
  1439. {
  1440. if(model.getValue(grd_dutschelist.nodeset + "[" + i + "]/dutplcedeptcd") == model.getValue("/root/send/dutunitcd") &&
  1441. model.getValue(grd_dutschelist.nodeset + "[" + i + "]/psnworkdutcnfnyn") == "Y")
  1442. {
  1443. bDept = true;
  1444. i = instance1.selectNodes(grd_dutschelist.nodeset).length + 1;
  1445. }
  1446. }
  1447. for(var i=1; i<=instance1.selectNodes(grd_dutschelist.nodeset).length; i++)
  1448. {
  1449. if(model.getValue(grd_dutschelist.nodeset + "[" + i + "]/dutplcedeptcd") == model.getValue("/root/send/dutunitcd") &&
  1450. model.getValue(grd_dutschelist.nodeset + "[" + i + "]/execschecloseyn") == "Y")
  1451. {
  1452. bExec = true;
  1453. i = instance1.selectNodes(grd_dutschelist.nodeset).length + 1;
  1454. }
  1455. }
  1456. for(var i=1; i<=instance1.selectNodes(grd_dutschelist.nodeset).length; i++)
  1457. {
  1458. if(model.getValue(grd_dutschelist.nodeset + "[" + i + "]/dutplcedeptcd") == model.getValue("/root/send/dutunitcd") &&
  1459. model.getValue(grd_dutschelist.nodeset + "[" + i + "]/deprtmangrdutcnfmyn") == "Y")
  1460. {
  1461. bCnfm = true;
  1462. i = instance1.selectNodes(grd_dutschelist.nodeset).length + 1;
  1463. }
  1464. }
  1465. if(rdo_appscheexecflag.value == "2")
  1466. {
  1467. if(bDept && !bExec && !bCnfm ) // 부서마감 Y, 실시마감 N 상태
  1468. {
  1469. cap_caution4.visible = true;
  1470. cap_caution1.visible = false;
  1471. cap_caution2.visible = false;
  1472. cap_caution5.visible = false;
  1473. btn_deptclose.attribute("text") = "실시취소";
  1474. btn_execclose.attribute("text") = "확정마감";
  1475. btn_deptclose.disabled = false;
  1476. btn_execclose.disabled = false;
  1477. btn_cnfmclose.disabled = true;
  1478. btn_deptclose.visible = true;
  1479. btn_execclose.visible = true;
  1480. btn_cnfmclose.visible = true;
  1481. btn_save.disabled = false;
  1482. btn_print.disabled = false;
  1483. }
  1484. else if( bDept && bExec && !bCnfm )
  1485. {
  1486. cap_caution4.visible = false;
  1487. cap_caution1.visible = true;
  1488. cap_caution2.visible = false;
  1489. cap_caution5.visible = false;
  1490. btn_deptclose.attribute("text") = "실시취소";
  1491. btn_execclose.attribute("text") = "확정취소";
  1492. btn_deptclose.disabled = true;
  1493. btn_execclose.disabled = true;
  1494. btn_cnfmclose.disabled = true;
  1495. btn_deptclose.visible = true;
  1496. btn_execclose.visible = true;
  1497. btn_cnfmclose.visible = true;
  1498. btn_save.disabled = true;
  1499. btn_print.disabled = false;
  1500. }
  1501. else if( bDept && bExec && bCnfm )
  1502. {
  1503. cap_caution4.visible = false;
  1504. cap_caution1.visible = false;
  1505. cap_caution2.visible = true;
  1506. cap_caution5.visible = false;
  1507. btn_deptclose.disabled = true;
  1508. btn_execclose.disabled = true;
  1509. btn_cnfmclose.disabled = false;
  1510. btn_deptclose.visible = true;
  1511. btn_execclose.visible = true;
  1512. btn_cnfmclose.visible = true;
  1513. btn_save.disabled = true;
  1514. btn_print.disabled = false;
  1515. }
  1516. else if ( !bDept && !bExec && !bCnfm ) {
  1517. cap_caution4.visible = false;
  1518. cap_caution1.visible = false;
  1519. cap_caution2.visible = false;
  1520. cap_caution5.visible = false;
  1521. btn_deptclose.disabled = false;
  1522. btn_execclose.disabled = true;
  1523. btn_cnfmclose.disabled = true;
  1524. btn_deptclose.visible = true;
  1525. btn_execclose.visible = true;
  1526. btn_cnfmclose.visible = true;
  1527. btn_deptclose.attribute("text") = "실시마감";
  1528. btn_execclose.attribute("text") = "확정마감";
  1529. btn_save.disabled = false;
  1530. btn_print.disabled = true;
  1531. }
  1532. }
  1533. else if(rdo_appscheexecflag.value == "3")
  1534. {
  1535. if( DUT_UNIT_CD == "3041000000" ) {
  1536. if(bCnfm)
  1537. {
  1538. cap_caution1.visible = false;
  1539. cap_caution2.visible = true;
  1540. cap_caution5.visible = false;
  1541. btn_deptclose.disabled = false;
  1542. btn_execclose.disabled = true;
  1543. btn_cnfmclose.disabled = true;
  1544. btn_execclose.visible = false;
  1545. btn_cnfmclose.visible = false;
  1546. btn_execclose.attribute("text") = "확정취소";
  1547. btn_save.disabled = false;
  1548. btn_print.disabled = true;
  1549. }
  1550. else
  1551. {
  1552. cap_caution1.visible = false;
  1553. cap_caution2.visible = false;
  1554. cap_caution5.visible = false;
  1555. btn_save.disabled = false;
  1556. btn_clear.disabled = false;
  1557. btn_execclose.attribute("text") = "확정취소";
  1558. btn_execclose.disabled = true;
  1559. btn_cnfmclose.disabled = true;
  1560. btn_execclose.visible = true;
  1561. btn_cnfmclose.visible = true;
  1562. if(grd_dutschelist.rows == 2)
  1563. {
  1564. btn_execclose.disabled = true;
  1565. btn_cnfmclose.disabled = true;
  1566. btn_save.disabled = true;
  1567. }
  1568. else
  1569. {
  1570. btn_execclose.disabled = false;
  1571. btn_cnfmclose.disabled = false;
  1572. btn_save.disabled = false;
  1573. }
  1574. }
  1575. }
  1576. else {
  1577. cap_caution1.visible = false;
  1578. cap_caution2.visible = false;
  1579. cap_caution5.visible = true;
  1580. btn_deptclose.disabled = true;
  1581. btn_execclose.disabled = true;
  1582. btn_cnfmclose.disabled = true;
  1583. btn_save.disabled = true;
  1584. btn_print.disabled = true;
  1585. }
  1586. btn_print.disabled = false;
  1587. // btn_viewscheexec.visible = true;
  1588. btn_deptclose.visible = false;
  1589. }
  1590. }
  1591. // 근무년월 변경 이벤트
  1592. function fDutYMValueChanged()
  1593. {
  1594. model.removenode("/root/main/close");
  1595. submit("TRRPD02208");
  1596. var iCnt = parseFloat(model.getValue("/root/main/close/closeyn/cnt"));
  1597. var sCloseYn = ( model.getValue("/root/main/close/closeyn/closeyn") != "" ) ? model.getValue("/root/main/close/closeyn/closeyn") : "N";
  1598. var sDeptYn = ( model.getValue("/root/main/close/closeyn/deptyn") != "" ) ? model.getValue("/root/main/close/closeyn/deptyn") : "N";
  1599. if(instance1.selectNodes("/root/main/close/closeyn").length == 0)
  1600. {
  1601. if(!fSetControlAttr())
  1602. {
  1603. rdo_scheexecflag.value = "1";
  1604. model.removeNodeset(grd_dutschelist.nodeset);
  1605. model.refresh();
  1606. return;
  1607. }
  1608. }
  1609. if(sDeptYn == "N")
  1610. { // 실시마감 되었을때.
  1611. if(!fSetControlAttr())
  1612. {
  1613. rdo_scheexecflag.value = "2";
  1614. model.removeNodeset(grd_dutschelist.nodeset);
  1615. model.refresh();
  1616. return;
  1617. }
  1618. if(sCurYM <= model.getValue("/root/send/dutym"))
  1619. {
  1620. rdo_appscheexecflag.value = "2";
  1621. rdo_scheexecflag.value = "1";
  1622. }
  1623. }
  1624. else if(sDeptYn == "Y" && sCloseYn == "N")
  1625. { // 실시마감은 되었으나 확정마감 되지 않은 번표
  1626. if(!fSetControlAttr())
  1627. {
  1628. rdo_scheexecflag.value = "2";
  1629. model.removeNodeset(grd_dutschelist.nodeset);
  1630. model.refresh();
  1631. return;
  1632. }
  1633. if(sCurYM <= model.getValue("/root/send/dutym"))
  1634. {
  1635. rdo_appscheexecflag.value = "2";
  1636. rdo_scheexecflag.value = "2";
  1637. }
  1638. }
  1639. else
  1640. {
  1641. cap_caution3.visible = false;
  1642. if(bFirst)
  1643. {
  1644. rdo_appscheexecflag.value = "3";
  1645. rdo_scheexecflag.value = "3";
  1646. bFirst = false;
  1647. }
  1648. }
  1649. submit("TRRPD02206");
  1650. btn_search.dispatch("DOMActivate");
  1651. }
  1652. function fSetControlAttr()
  1653. {
  1654. var bRetr = true;
  1655. // UM / JM / 팀장 / 간호부장 / 인사담당자 / 복무책임자 일때
  1656. if(JOB_RESP_CD == "1070" || JOB_RESP_CD == "1080" || JOB_RESP_CD == "1901" || JOB_RESP_CD == "1907" || DUTY_RESP_YN == "Y" || DUTY_PART_YN == "Y")
  1657. {
  1658. cap_caution1.visible = false;
  1659. cap_caution2.visible = false;
  1660. cap_caution3.visible = false;
  1661. cap_caution4.visible = false;
  1662. cap_caution5.visible = false;
  1663. btn_search.disabled = false;
  1664. btn_save.disabled = false;
  1665. }
  1666. else if ( JOB_RESP_CD == "2010" ) {
  1667. cap_caution1.visible = false;
  1668. cap_caution2.visible = false;
  1669. cap_caution3.visible = false;
  1670. cap_caution4.visible = false;
  1671. cap_caution5.visible = false;
  1672. btn_search.disabled = false;
  1673. cmb_dutplce.disabled = false;
  1674. rdo_appscheexecflag.disabled = false;
  1675. }
  1676. else {
  1677. cap_caution1.visible = false;
  1678. cap_caution2.visible = false;
  1679. cap_caution3.visible = true;
  1680. cap_caution4.visible = false;
  1681. cap_caution5.visible = false;
  1682. btn_search.disabled = true;
  1683. btn_save.disabled = true;
  1684. btn_cnfmclose.disabled = true;
  1685. btn_execclose.disabled = true;
  1686. btn_deptclose.disabled = true;
  1687. rdo_appscheexecflag.disabled = true;
  1688. bRetr = false;
  1689. }
  1690. return bRetr;
  1691. }
  1692. // 저장
  1693. function fSave()
  1694. {
  1695. var updtdata1 = getGridUpdateData(grd_dutschelist);
  1696. if (updtdata1 == "") {
  1697. messageBox("변경된 데이터가", "I004");
  1698. return;
  1699. }
  1700. if(misfSave("TXRPD02201")) {
  1701. messageBox("저장", "I001");
  1702. }
  1703. grd_dutschelist.dispatch("onentercell");
  1704. }
  1705. function fSet1YearNurse()
  1706. {
  1707. var sEntcoDD = "";
  1708. var iEnterDayCnt = 0;
  1709. var iCurntDayCnt = 0;
  1710. for(var i=2; i<grd_dutschelist.rows; i++)
  1711. {
  1712. sEntcoDD = grd_dutschelist.valueMatrix(i, grd_dutschelist.colRef("entcodd"));
  1713. iEnterDayCnt = parseInt( Math.floor( Date.parse( misfConvertChar2Date(sEntcoDD, "/")) / 8.64e7));
  1714. iCurntDayCnt = parseInt( Math.floor( Date.parse( misfConvertChar2Date(getCurrentDate(), "/")) / 8.64e7));
  1715. if(iCurntDayCnt - iEnterDayCnt <= 365)
  1716. {
  1717. grd_dutschelist.cellStyle("background-image", i, grd_dutschelist.colRef("emplnm")) = "../../../com/commonweb/images/input_s_essential.gif";
  1718. grd_dutschelist.cellStyle("background-position", i, grd_dutschelist.colRef("emplnm")) = "center left";
  1719. }
  1720. }
  1721. }
  1722. function fCnfmClose()
  1723. {
  1724. submit("TRRPD02200");
  1725. if( model.getValue("/root/main/temp/flag/flag") == 'Y' ) {
  1726. messageBox("이미 간호부 최종마감 되었습니다.","I000");
  1727. return;
  1728. }
  1729. for(var i=2; i<grd_dutschelist.rows; i++)
  1730. {
  1731. if(grd_dutschelist.rowStatus(i) == 1 || grd_dutschelist.rowStatus(i) == 2 || grd_dutschelist.rowStatus(i) == 3)
  1732. {
  1733. messageBox("수정중인 데이터가 존재합니다. 저장 후 마감 하세요", "I000");
  1734. return;
  1735. }
  1736. }
  1737. var dlgResult
  1738. dlgResult = messageBox("간호부 최종 마감 하시면 번표 수정이 불가능 합니다.\n\n", "Q006");
  1739. model.setValue("/root/send/params/instcd", model.getValue("/root/send/instcd"));
  1740. model.setValue("/root/send/params/dutym", model.getValue("/root/send/dutym"));
  1741. model.setValue("/root/send/params/dutunitcd", model.getValue("/root/send/dutunitcd"));
  1742. model.setValue("/root/send/params/appscheexecflag", model.getValue("/root/send/appscheexecflag"));
  1743. if(dlgResult == 6)
  1744. {
  1745. if(misfSave("TXRPD02202"))
  1746. {
  1747. messageBox("간호부 최종 마감", "I001");
  1748. }
  1749. btn_search.dispatch("DOMActivate");
  1750. }
  1751. }
  1752. function fExecClose()
  1753. {
  1754. if(btn_execclose.attribute("text") == "확정마감")
  1755. {
  1756. for(var i=2; i<grd_dutschelist.rows; i++)
  1757. {
  1758. if(grd_dutschelist.rowStatus(i) == 1 || grd_dutschelist.rowStatus(i) == 2 || grd_dutschelist.rowStatus(i) == 3)
  1759. {
  1760. messageBox("수정중인 데이터가 존재합니다. 저장 후 마감 하세요", "I000");
  1761. return;
  1762. }
  1763. }
  1764. var dlgResult
  1765. dlgResult = messageBox("[ 확정 마감 ] 하시면 실시 번표 수정이 불가능 합니다.\n\n마감 하시겠습니까? 예(Yes) / 아니오(No)", "Q000");
  1766. model.setValue("/root/send/params/instcd", model.getValue("/root/send/instcd"));
  1767. model.setValue("/root/send/params/dutym", model.getValue("/root/send/dutym"));
  1768. model.setValue("/root/send/params/dutunitcd", model.getValue("/root/send/dutunitcd"));
  1769. model.setValue("/root/send/params/appscheexecflag", model.getValue("/root/send/appscheexecflag"));
  1770. model.setValue("/root/send/params/flag", "operateclose");
  1771. if(dlgResult == 6)
  1772. {
  1773. if(misfSave("TXRPD02203"))
  1774. {
  1775. messageBox("확정 마감", "I001");
  1776. }
  1777. btn_search.dispatch("DOMActivate");
  1778. }
  1779. }
  1780. else if(btn_execclose.attribute("text") == "확정취소")
  1781. {
  1782. var dlgResult
  1783. dlgResult = messageBox("[ 확정 마감 ] ", "Q007");
  1784. model.setValue("/root/send/params/instcd", model.getValue("/root/send/instcd"));
  1785. model.setValue("/root/send/params/dutym", model.getValue("/root/send/dutym"));
  1786. model.setValue("/root/send/params/dutunitcd", model.getValue("/root/send/dutunitcd"));
  1787. model.setValue("/root/send/params/appscheexecflag", model.getValue("/root/send/appscheexecflag"));
  1788. model.setValue("/root/send/params/flag", "cancelclose");
  1789. if(dlgResult == 6)
  1790. {
  1791. misfSave("TXRPD02203");
  1792. btn_search.dispatch("DOMActivate");
  1793. }
  1794. }
  1795. }
  1796. function fDeptClose()
  1797. {
  1798. if(btn_deptclose.attribute("text") == "실시마감")
  1799. {
  1800. for(var i=2; i<grd_dutschelist.rows; i++)
  1801. {
  1802. if(grd_dutschelist.rowStatus(i) == 1 || grd_dutschelist.rowStatus(i) == 2 || grd_dutschelist.rowStatus(i) == 3)
  1803. {
  1804. messageBox("수정중인 데이터가 존재합니다. 저장 후 마감 하세요", "I000");
  1805. return;
  1806. }
  1807. }
  1808. var dlgResult
  1809. dlgResult = messageBox("[ 실시마감 ] 하시면 번표 수정이 불가능 합니다.\n\n마감 하시겠습니까? 예(Yes) / 아니오(No)", "Q000");
  1810. model.setValue("/root/send/params/instcd", model.getValue("/root/send/instcd"));
  1811. model.setValue("/root/send/params/dutym", model.getValue("/root/send/dutym"));
  1812. model.setValue("/root/send/params/dutunitcd", model.getValue("/root/send/dutunitcd"));
  1813. model.setValue("/root/send/params/appscheexecflag", model.getValue("/root/send/appscheexecflag"));
  1814. model.setValue("/root/send/params/flag", "operateclose");
  1815. if(dlgResult == 6)
  1816. {
  1817. if(misfSave("TXRPD02204"))
  1818. {
  1819. messageBox("실시마감", "I001");
  1820. }
  1821. btn_search.dispatch("DOMActivate");
  1822. }
  1823. }
  1824. else if(btn_deptclose.attribute("text") == "실시취소")
  1825. {
  1826. var dlgResult
  1827. dlgResult = messageBox("[ 실시마감 ] ", "Q007");
  1828. model.setValue("/root/send/params/instcd", model.getValue("/root/send/instcd"));
  1829. model.setValue("/root/send/params/dutym", model.getValue("/root/send/dutym"));
  1830. model.setValue("/root/send/params/dutunitcd", model.getValue("/root/send/dutunitcd"));
  1831. model.setValue("/root/send/params/appscheexecflag", model.getValue("/root/send/appscheexecflag"));
  1832. model.setValue("/root/send/params/flag", "cancelclose");
  1833. if(dlgResult == 6)
  1834. {
  1835. misfSave("TXRPD02204");
  1836. btn_search.dispatch("DOMActivate");
  1837. }
  1838. }
  1839. }
  1840. function fPrint()
  1841. {
  1842. submit("TRRPD02209");
  1843. exeReportPreview("RPRPD02201", "XMLSTR");
  1844. model.removeNodeset("/root/main/print/printlist");
  1845. model.refresh();
  1846. }
  1847. // 실시대비확정보기 변경
  1848. function fChangeAppScheExec()
  1849. {
  1850. ipt_dutym.dispatch("xforms-value-changed");
  1851. if(grd_dutschelist.rows == 2 && model.getValue("/root/send/appscheexecflag") == '3')
  1852. {
  1853. cap_caution3.visible = true;
  1854. btn_cnfmclose.disabled = true;
  1855. }
  1856. else if(grd_dutschelist.rows > 2 && model.getValue("/root/send/appscheexecflag") == '3')
  1857. {
  1858. cap_caution3.visible = false;
  1859. if( DUT_UNIT_CD == "3041000000" ) {
  1860. btn_cnfmclose.disabled = false;
  1861. }
  1862. }
  1863. }
  1864. ]]>
  1865. </script>
  1866. </xhtml:head>
  1867. <xhtml:body pagewidth="1211" pageheight="784" style="margin-left:8; margin-top:0; margin-right:8; margin-bottom:0; ">
  1868. <script type="javascript" ev:event="onmenu">
  1869. <![CDATA[
  1870. var popupParam = event.description;
  1871. fSetValueGrid2Cell(popupParam);
  1872. ]]>
  1873. </script>
  1874. <group id="group1" style="left:0px; top:0px; width:1195px; height:13px; ">
  1875. <caption id="caption6" class="tit_1" style="left:0px; top:0px; width:230px; height:14px; ">실시확정번표등록</caption>
  1876. <caption id="caption4" class="patient_text_black" style="left:922px; top:0px; width:272px; "/>
  1877. </group>
  1878. <group id="group3" scroll="auto" style="left:0px; top:38px; width:1195px; height:744px; ">
  1879. <line id="line1" class="line_1" style="x1:0px; y1:89px; x2:1195px; y2:89px; "/>
  1880. <caption id="caption9" class="tit_2" style="left:5px; top:74px; width:109px; height:13px; ">근무 스케줄</caption>
  1881. <group id="group4" style="left:0px; top:10px; width:1195px; height:55px; vertical-align:top; ">
  1882. <shape id="roundrect2" appearance="roundrect" ellipsewidth="10" ellipseheight="10" style="left:0px; top:0px; width:1195px; height:55px; background-color:#fffbf2; border-color:#ffd799; "/>
  1883. <caption id="caption5" class="search_name" style="left:15px; top:31px; width:86px; height:17px; ">관리부서 :</caption>
  1884. <line id="line3" class="line_4" style="x1:1110px; y1:7px; x2:1110px; y2:49px; border-color:#ffe4bb; border-left-style:solid; "/>
  1885. <caption id="caption1" class="search_name" style="left:393px; top:7px; width:91px; height:17px; ">근무년월 :</caption>
  1886. <caption id="caption2" class="search_name" style="left:630px; top:7px; width:68px; height:17px; ">구분 :</caption>
  1887. <input id="ipt_dutym" ref="/root/send/dutym" class="input_search" inputtype="date" format="yyyy-mm" style="left:480px; top:6px; width:110px; height:19px; text-align:center; ">
  1888. <script type="javascript" ev:event="xforms-value-changed">
  1889. <![CDATA[
  1890. var instcd = cmb_instcd.value;
  1891. if( getStringLength(ipt_dutym.value) == "6" ) {
  1892. misfComboInstCdListMulti("cmb_instcd",ipt_dutym.value+"31","","N");
  1893. cmb_instcd.value = instcd;
  1894. model.refresh();
  1895. }
  1896. fDutYMValueChanged();
  1897. ]]>
  1898. </script>
  1899. </input>
  1900. <input id="ipt_dutdeptcd" ref="/root/send/dutunitcd" class="input_s_essential" navindex="2" visibility="visible" maxlength="10" style="left:102px; top:30px; width:85px; height:19px; ">
  1901. <script type="javascript" ev:event="xforms-value-changed">
  1902. <![CDATA[
  1903. misfValidationCheck("02", "", "dutunitcd,dutunitnm", cmb_instcd.value, "instcd" );
  1904. model.setValue("/root/send/dutcdparams/dutunitcd", cmb_dutplce.value);
  1905. model.refresh();
  1906. ]]>
  1907. </script>
  1908. <script type="javascript" ev:event="onkeypress">
  1909. <![CDATA[
  1910. if(event.keyCode == 13)
  1911. {
  1912. ipt_dutdeptcd.value = ipt_dutdeptcd.currentText;
  1913. misfValidationCheck("02", "", "dutunitcd,dutunitnm", cmb_instcd.value, "instcd" );
  1914. model.setValue("/root/send/dutcdparams/dutunitcd", cmb_dutplce.value);
  1915. model.refresh();
  1916. }
  1917. ]]>
  1918. </script>
  1919. </input>
  1920. <input id="ipt_dutdeptnm" ref="/root/send/dutunitnm" class="input_search" navindex="3" visibility="visible" style="left:211px; top:30px; width:134px; height:19px; ">
  1921. <script type="javascript" ev:event="xforms-value-changed">
  1922. <![CDATA[
  1923. misfValidationCheck("02", "", "dutunitcd,dutunitnm", cmb_instcd.value, "instcd" );
  1924. model.setValue("/root/send/dutcdparams/dutunitcd", cmb_dutplce.value);
  1925. model.refresh();
  1926. ]]>
  1927. </script>
  1928. <script type="javascript" ev:event="onkeypress">
  1929. <![CDATA[
  1930. if(event.keyCode == 13)
  1931. {
  1932. ipt_dutdeptnm.value = ipt_dutdeptnm.currentText;
  1933. misfValidationCheck("02", "", "dutunitcd,dutunitnm", cmb_instcd.value, "instcd" );
  1934. model.setValue("/root/send/dutcdparams/dutunitcd", cmb_dutplce.value);
  1935. model.refresh();
  1936. }
  1937. ]]>
  1938. </script>
  1939. </input>
  1940. <button id="btn_dutdept" class="icon_search" visibility="visible" style="left:193px; top:32px; width:16px; height:16px; ">
  1941. <caption/>
  1942. <script type="javascript" ev:event="DOMActivate">
  1943. <![CDATA[
  1944. // misfOpenPopUpList("02", ipt_dutdeptcd, "", "dutunitcd,dutunitnm", cmb_instcd.value, "instcd");
  1945. misfOpenPopUpList("02", ipt_dutdeptcd,"","dutunitcd,dutunitnm", cmb_instcd.value + "," + ipt_dutym.value+"31", "instcd,basedd");
  1946. model.setValue("/root/send/dutcdparams/dutunitcd", ipt_dutdeptcd.value);
  1947. model.refresh();
  1948. ]]>
  1949. </script>
  1950. </button>
  1951. <button id="btn_search" class="btn1_letter2" navindex="4" style="left:1125px; top:17px; width:56px; height:22px; text-align:left; ">
  1952. <caption>조회</caption>
  1953. <script type="javascript" ev:event="DOMActivate">
  1954. <![CDATA[
  1955. if (fRetrieve() == "dutunitval") return;
  1956. fSet1YearNurse();
  1957. fSetYearHoliOffCnt("retr");
  1958. if(JOB_RESP_CD != "1901" && JOB_RESP_CD != "1070" && JOB_RESP_CD != "1907" && JOB_RESP_CD != "1080" && DUTY_PART_YN != "Y" && DUTY_PART_YN != "Y") // 권한이 UM, 팀장, JM, 복무책임자, 인사담당자가 아닐때..
  1959. {
  1960. rpdfSetControlByJobRespCd("btn_execclose,btn_cnfmclose,btn_save,cmb_dutplce,rdo_appscheexecflag");
  1961. }
  1962. if( JOB_RESP_CD == "2010" ) { // 간호부장이면
  1963. cap_caution1.visible = false;
  1964. cap_caution2.visible = false;
  1965. cap_caution3.visible = false;
  1966. cap_caution4.visible = false;
  1967. btn_search.disabled = false;
  1968. cmb_dutplce.disabled = false;
  1969. rdo_appscheexecflag.disabled = false;
  1970. }
  1971. ]]>
  1972. </script>
  1973. </button>
  1974. <select1 id="rdo_scheexecflag" ref="/root/send/scheexecflag" appearance="full" cellspacing="10" cols="3" overflow="hidden" style="left:695px; top:7px; width:185px; height:15px; border-style:none; ">
  1975. <choices>
  1976. <item>
  1977. <label>실시</label>
  1978. <value>1</value>
  1979. </item>
  1980. <item>
  1981. <label>확정</label>
  1982. <value>2</value>
  1983. </item>
  1984. <item>
  1985. <label>최종</label>
  1986. <value>3</value>
  1987. </item>
  1988. </choices>
  1989. <script type="javascript" ev:event="xforms-value-changed">
  1990. <![CDATA[
  1991. // btn_viewscheexec.attribute("class") = "btn5_letter8";
  1992. // btn_viewscheexec.attribute("text") = "실시대비확정보기";
  1993. if( rdo_scheexecflag.value == "1" ) {
  1994. model.setValue(rdo_appscheexecflag.attribute("ref"),"2");
  1995. }
  1996. else {
  1997. model.setValue(rdo_appscheexecflag.attribute("ref"),rdo_scheexecflag.value);
  1998. }
  1999. fChangeAppScheExec();
  2000. ]]>
  2001. </script>
  2002. </select1>
  2003. <select1 id="cmb_dutplce" ref="/root/send/dutunitcd" class="combo_search" visibility="visible" appearance="minimal" style="left:102px; top:30px; width:243px; height:19px; ">
  2004. <choices>
  2005. <itemset>
  2006. <label/>
  2007. <value/>
  2008. </itemset>
  2009. </choices>
  2010. <script type="javascript" ev:event="xforms-value-changed">
  2011. <![CDATA[
  2012. model.setValue("/root/send/dutcdparams/dutunitcd", cmb_dutplce.value);
  2013. ]]>
  2014. </script>
  2015. </select1>
  2016. <caption id="caption3" class="search_name" style="left:393px; top:31px; width:90px; height:17px; ">직 종 :</caption>
  2017. <select1 id="cmb_jobkind" ref="/root/send/jobkind" class="combo_search" visibility="visible" appearance="minimal" style="left:480px; top:30px; width:110px; height:19px; text-align:center; ">
  2018. <choices>
  2019. <item>
  2020. <label>전체</label>
  2021. <value/>
  2022. </item>
  2023. <item>
  2024. <label>간호직</label>
  2025. <value>1</value>
  2026. </item>
  2027. <item>
  2028. <label>병원지원직</label>
  2029. <value>2</value>
  2030. </item>
  2031. </choices>
  2032. </select1>
  2033. <select1 id="cmb_instcd" ref="/root/send/instcd" class="combo_search" navindex="1" appearance="minimal" style="left:102px; top:6px; width:243px; height:19px; ">
  2034. <choices>
  2035. <itemset>
  2036. <label/>
  2037. <value/>
  2038. </itemset>
  2039. </choices>
  2040. <script type="javascript" ev:event="xforms-value-changed">
  2041. <![CDATA[
  2042. model.setValue("/root/send/dutcdparams/instcd", cmb_instcd.value)
  2043. ]]>
  2044. </script>
  2045. </select1>
  2046. <caption id="caption29" class="search_name" style="left:14px; top:7px; width:86px; height:17px; ">소속기관 :</caption>
  2047. <select1 id="rdo_appscheexecflag" ref="/root/send/appscheexecflag" visibility="hidden" appearance="full" cellspacing="10" cols="3" overflow="hidden" style="left:695px; top:30px; width:185px; height:15px; border-style:none; ">
  2048. <choices>
  2049. <item>
  2050. <label>실시</label>
  2051. <value>2</value>
  2052. </item>
  2053. <item>
  2054. <label>확정</label>
  2055. <value>3</value>
  2056. </item>
  2057. </choices>
  2058. <script type="javascript" ev:event="xforms-value-changed">
  2059. <![CDATA[
  2060. // btn_viewscheexec.attribute("class") = "btn5_letter8";
  2061. // btn_viewscheexec.attribute("text") = "실시대비확정보기";
  2062. //
  2063. // fChangeAppScheExec();
  2064. ]]>
  2065. </script>
  2066. </select1>
  2067. </group>
  2068. <line id="line12" class="line_2" style="x1:0px; y1:605px; x2:1195px; y2:605px; "/>
  2069. <caption id="caption15" class="cell_1" style="left:0px; top:552px; width:90px; height:23px; text-align:center; vertical-align:middle; ">신청사유</caption>
  2070. <caption id="caption18" class="cell_1" style="left:0px; top:579px; width:90px; height:22px; text-align:center; vertical-align:middle; ">근무사유</caption>
  2071. <line id="line2" class="line_1" style="x1:0px; y1:550px; x2:1193px; y2:550px; "/>
  2072. <datagrid id="grd_dutcdlist" nodeset="/root/main/list/dutcdlist" class="text_center" allowuserresize="true" caption="코드^근무명^근무코드명^근무시간^Day인원^Evening인원^Night인원|코드^근무명^근무코드명^근무시간^Day인원^Evening인원^Night인원" colsep="^" colwidth="35, 250, 0, 0, 0, 0, 0" frozencols="1" mergecellsfixedrows="bycolrec" rowsep="|" style="left:1024px; top:94px; width:170px; height:455px; ">
  2073. <col ref="dutcd" style="font-family:돋움체; font-size:9pt; text-align:left; "/>
  2074. <col ref="dutnm" style="font-family:돋움체; font-size:9pt; text-align:left; "/>
  2075. <col ref="dutcdnm" visibility="hidden"/>
  2076. <col ref="duttm" visibility="hidden"/>
  2077. <col ref="daycnt" visibility="hidden"/>
  2078. <col ref="eveningpsnno" visibility="hidden"/>
  2079. <col ref="nigtpsnno" visibility="hidden"/>
  2080. <script type="javascript" ev:event="ondblclick">
  2081. <![CDATA[
  2082. fSetScheDutCd(grd_dutcdlist.valueMatrix(grd_dutcdlist.row, grd_dutcdlist.colRef("dutcd")));
  2083. fSetMonthPrDayCnt();
  2084. ]]>
  2085. </script>
  2086. </datagrid>
  2087. <line id="line15" class="line_3" style="x1:0px; y1:602px; x2:1194px; y2:602px; "/>
  2088. <button id="btn_reqresnview" class="btn2_letter6" style="left:561px; top:557px; width:86px; height:19px; text-align:left; ">
  2089. <caption>신청사유보기</caption>
  2090. <script type="javascript" ev:event="DOMActivate">
  2091. <![CDATA[
  2092. model.setValue("/root/send/winparams/instcd", model.getValue("/root/send/instcd"));
  2093. model.setValue("/root/send/winparams/dutunitcd", model.getValue("/root/send/dutunitcd"));
  2094. model.setValue("/root/send/winparams/dutym", model.getValue("/root/send/dutym"));
  2095. rpdfOpenPopUpList("2", btn_reqresnview, "", "", "", "", "/root/send/winparams/dutym");
  2096. model.refresh();
  2097. ]]>
  2098. </script>
  2099. </button>
  2100. <input id="opt_dutresn" ref="/root/main/resn/dutresn" class="output_fix" disabled="true" style="left:92px; top:580px; width:468px; height:19px; "/>
  2101. <input id="opt_reqresn" ref="/root/main/resn/reqresn" class="output_fix" disabled="true" style="left:92px; top:557px; width:468px; height:19px; "/>
  2102. <button id="btn_dutcdflag" class="btn2_letter3" style="left:1139px; top:69px; width:53px; height:19px; text-align:left; ">
  2103. <caption>숨기기</caption>
  2104. <script type="javascript" ev:event="DOMActivate">
  2105. <![CDATA[
  2106. if(DUTCODE_FLAG == false)
  2107. {
  2108. DUTCODE_FLAG = true;
  2109. grd_dutcdlist.visible = false;
  2110. grd_dutschelist.attribute("style") = "left:0px; top:94px; width:1194px; height:458px; "
  2111. btn_dutcdflag.attribute("text") = "보이기";
  2112. grd_dutschelist.colHidden(grd_dutschelist.colRef("emplno")) = true;
  2113. grd_dutschelist.colHidden(grd_dutschelist.colRef("dutplcedeptnmtemp")) = true;
  2114. grd_dutschelist.colHidden(grd_dutschelist.colRef("jobkindnm")) = true;
  2115. }
  2116. else
  2117. {
  2118. DUTCODE_FLAG = false;
  2119. grd_dutcdlist.visible = true;
  2120. grd_dutschelist.attribute("style") = "left:0px; top:94px; width:1025px; height:458px; "
  2121. btn_dutcdflag.attribute("text") = "숨기기";
  2122. grd_dutschelist.colHidden(grd_dutschelist.colRef("emplno")) = false;
  2123. grd_dutschelist.colHidden(grd_dutschelist.colRef("dutplcedeptnmtemp")) = false;
  2124. grd_dutschelist.colHidden(grd_dutschelist.colRef("jobkindnm")) = false;
  2125. }
  2126. ]]>
  2127. </script>
  2128. </button>
  2129. <datagrid id="grd_dutmancntlist" nodeset="/root/main/resltdata/dutmancntlist" class="text_center" caption="Duty별 근무자수^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|Duty별 근무자수^월^화^수^목^금^토^일^월^화^수^목^금^토^일^월^화^수^목^금^토^일^월^화^수^목^금^토^일^월^화^수" colsep="^" colwidth="124, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32" focuscolor="#ccffff" mergecellsfixedrows="bycolrec" rowheight="23" rowsep="|" selectionmode="bycol" style="left:71px; top:604px; width:1123px; height:137px; ">
  2130. <col ref="dutmancnt"/>
  2131. <col ref="day01"/>
  2132. <col ref="day02"/>
  2133. <col ref="day03"/>
  2134. <col ref="day04"/>
  2135. <col ref="day05"/>
  2136. <col ref="day06"/>
  2137. <col ref="day07"/>
  2138. <col ref="day08"/>
  2139. <col ref="day09"/>
  2140. <col ref="day10"/>
  2141. <col ref="day11"/>
  2142. <col ref="day12"/>
  2143. <col ref="day13"/>
  2144. <col ref="day14"/>
  2145. <col ref="day15"/>
  2146. <col ref="day16"/>
  2147. <col ref="day17"/>
  2148. <col ref="day18"/>
  2149. <col ref="day19"/>
  2150. <col ref="day20"/>
  2151. <col ref="day21"/>
  2152. <col ref="day22"/>
  2153. <col ref="day23"/>
  2154. <col ref="day24"/>
  2155. <col ref="day25"/>
  2156. <col ref="day26"/>
  2157. <col ref="day27"/>
  2158. <col ref="day28"/>
  2159. <col ref="day29"/>
  2160. <col ref="day30"/>
  2161. <col ref="day31"/>
  2162. <script type="javascript" ev:event="oncolchanged">
  2163. <![CDATA[
  2164. grd_dutschelist.col = grd_dutmancntlist.col + iDay1ColIdx;
  2165. var dt = new Date(misfConvertChar2Date(model.getValue("/root/main/daylist[" + (grd_dutschelist.col - iDay1ColIdx) + "]/basedd"), "/"));
  2166. fCheckStndSche(dt.getDay());
  2167. model.refresh();
  2168. ]]>
  2169. </script>
  2170. </datagrid>
  2171. <button id="btn_excsave" class="btn2_letter4" style="left:1007px; top:69px; width:64px; height:19px; ">
  2172. <caption>엑셀저장</caption>
  2173. <script type="javascript" ev:event="DOMActivate">
  2174. <![CDATA[
  2175. misfSaveExcel(grd_dutschelist);
  2176. ]]>
  2177. </script>
  2178. </button>
  2179. <button id="btn_excsave2" class="btn2_letter4" style="left:4px; top:607px; width:64px; height:19px; ">
  2180. <caption>엑셀저장</caption>
  2181. <script type="javascript" ev:event="DOMActivate">
  2182. <![CDATA[
  2183. misfSaveExcel(grd_dutmancntlist);
  2184. ]]>
  2185. </script>
  2186. </button>
  2187. <caption id="caption7" style="left:150px; top:70px; width:135px; height:20px; ">신청 OFF / 스케쥴 Night</caption>
  2188. <output id="output2" style="left:125px; top:69px; width:20px; height:19px; background-color:#FFFCC4; border-style:solid; "/>
  2189. <caption id="caption10" style="left:340px; top:70px; width:106px; height:20px; ">지원 나간 Helper</caption>
  2190. <output id="output3" style="left:315px; top:69px; width:20px; height:19px; background-color:#FFCC66; border-style:solid; "/>
  2191. <caption id="caption8" style="left:485px; top:70px; width:94px; height:20px; ">지원 온 Helper</caption>
  2192. <output id="output1" style="left:460px; top:69px; width:20px; height:19px; background-color:#CCFFCC; border-style:solid; "/>
  2193. <button id="btn_retrsrvp" class="btn2_letter8" visibility="visible" style="left:898px; top:69px; width:108px; height:19px; ">
  2194. <caption>복무계획신청내역</caption>
  2195. <script type="javascript" ev:event="DOMActivate">
  2196. <![CDATA[
  2197. model.setValue("/root/send/winparams/instcd", model.getValue("/root/send/instcd"));
  2198. model.setValue("/root/send/winparams/dutunitcd", model.getValue("/root/send/dutunitcd"));
  2199. model.setValue("/root/send/winparams/dutym", model.getValue("/root/send/dutym"));
  2200. modal("SPRPD02610", "", "", "", "", "/root/send/winparams", "/root/target" );
  2201. ]]>
  2202. </script>
  2203. </button>
  2204. <button id="btn_zoom" class="btn2_letter4" style="left:1074px; top:69px; width:64px; height:19px; text-align:left; ">
  2205. <caption>확대하기</caption>
  2206. <script type="javascript" ev:event="DOMActivate">
  2207. <![CDATA[
  2208. if(ZOOM_FLAG == false)
  2209. {
  2210. ZOOM_FLAG = true;
  2211. grd_dutcdlist.visible = false;
  2212. grd_dutschelist.attribute("style") = "left:0px; top:94px; width:1194px; height:650px; "
  2213. btn_zoom.attribute("text") = "축소하기";
  2214. }
  2215. else
  2216. {
  2217. ZOOM_FLAG = false;
  2218. grd_dutcdlist.visible = true;
  2219. grd_dutschelist.attribute("style") = "left:0px; top:94px; width:1025px; height:458px; "
  2220. btn_zoom.attribute("text") = "확대하기";
  2221. }
  2222. ]]>
  2223. </script>
  2224. </button>
  2225. <caption id="caption11" style="left:755px; top:558px; width:26px; height:20px; text-align:center; vertical-align:middle; background-color:#dddddd; ">사용</caption>
  2226. <caption id="caption12" style="left:783px; top:558px; width:26px; height:20px; text-align:center; vertical-align:middle; background-color:#dddddd; ">잔여</caption>
  2227. <caption id="caption14" class="cell_1" style="left:666px; top:558px; width:31px; height:41px; text-align:center; vertical-align:middle; ">
  2228. <![CDATA[법정
  2229. 휴가]]>
  2230. </caption>
  2231. <caption id="caption16" style="left:699px; top:558px; width:26px; height:20px; text-align:center; vertical-align:middle; background-color:#dddddd; ">발생</caption>
  2232. <caption id="caption17" style="left:882px; top:558px; width:26px; height:20px; text-align:center; vertical-align:middle; background-color:#dddddd; ">사용</caption>
  2233. <caption id="caption22" style="left:910px; top:558px; width:26px; height:20px; text-align:center; vertical-align:middle; background-color:#dddddd; ">잔여</caption>
  2234. <caption id="caption23" class="cell_1" style="left:819px; top:558px; width:32px; height:41px; text-align:center; vertical-align:middle; ">
  2235. <![CDATA[보호
  2236. 휴가]]>
  2237. </caption>
  2238. <caption id="caption24" style="left:854px; top:558px; width:26px; height:20px; text-align:center; vertical-align:middle; background-color:#dddddd; ">발생</caption>
  2239. <caption id="caption25" style="left:1036px; top:558px; width:26px; height:20px; text-align:center; vertical-align:middle; background-color:#dddddd; ">잔여</caption>
  2240. <caption id="caption26" class="cell_1" style="left:946px; top:558px; width:31px; height:41px; text-align:center; vertical-align:middle; ">
  2241. <![CDATA[월
  2242. OFF]]>
  2243. </caption>
  2244. <caption id="caption27" style="left:980px; top:558px; width:26px; height:20px; text-align:center; vertical-align:middle; background-color:#dddddd; ">발생</caption>
  2245. <caption id="caption28" style="left:1008px; top:558px; width:26px; height:20px; text-align:center; vertical-align:middle; background-color:#dddddd; ">사용</caption>
  2246. <output id="opt_golmtspreyearno" ref="/root/main/userholiinfo/olmtspreyearno" format="(-)9999" style="left:727px; top:580px; width:26px; height:19px; text-align:right; border-color:#eaeaea; border-style:solid; "/>
  2247. <caption id="caption19" style="left:727px; top:558px; width:26px; height:20px; font-size:6pt; text-align:center; vertical-align:middle; background-color:#dddddd; ">1년미만연차</caption>
  2248. <output id="opt_genryearno" ref="/root/main/userholiinfo/genryearno" style="left:699px; top:580px; width:26px; height:19px; text-align:right; border-color:#eaeaea; border-style:solid; "/>
  2249. <output id="opt_useyearno" ref="/root/main/userholiinfo/useyearno" style="left:755px; top:580px; width:26px; height:19px; text-align:right; border-color:#eaeaea; border-style:solid; "/>
  2250. <output id="opt_spreyearno" ref="/root/main/userholiinfo/spreyearno" style="left:783px; top:580px; width:26px; height:19px; text-align:right; border-color:#eaeaea; border-style:solid; "/>
  2251. <output id="opt_genrhealholi" ref="/root/main/userholiinfo/genrhealholi" format="(-)9999" style="left:854px; top:580px; width:26px; height:19px; text-align:right; border-color:#eaeaea; border-style:solid; "/>
  2252. <output id="opt_usehealholi" ref="/root/main/userholiinfo/usehealholi" format="(-)9999" style="left:882px; top:580px; width:26px; height:19px; text-align:right; border-color:#eaeaea; border-style:solid; "/>
  2253. <output id="opt_sprehealholi" ref="/root/main/userholiinfo/sprehealholi" format="(-)9999" style="left:910px; top:580px; width:26px; height:19px; text-align:right; border-color:#eaeaea; border-style:solid; "/>
  2254. <output id="opt_monthofcnt" ref="/root/main/userholiinfo/curmonthofcnt" style="left:980px; top:580px; width:26px; height:19px; text-align:right; border-color:#eaeaea; border-style:solid; "/>
  2255. <output id="opt_monthuseofcnt" ref="/root/main/userholiinfo/curmonthuseofcnt" style="left:1008px; top:580px; width:26px; height:19px; text-align:right; border-color:#eaeaea; border-style:solid; "/>
  2256. <output id="opt_monthunuseofcnt" ref="/root/main/userholiinfo/curmonthunuseofcnt" style="left:1036px; top:580px; width:26px; height:19px; text-align:right; border-color:#eaeaea; border-style:solid; "/>
  2257. <button id="btn_delrow" class="btn2_letter3" visibility="hidden" style="left:822px; top:69px; width:64px; height:19px; ">
  2258. <caption>행삭제</caption>
  2259. <script type="javascript" ev:event="DOMActivate">
  2260. <![CDATA[
  2261. misfGridIUD(grd_dutschelist, "D");
  2262. ]]>
  2263. </script>
  2264. </button>
  2265. <output id="output4" ref="/root/main/userholiinfo/monthuseofcnt" style="left:1133px; top:580px; width:26px; height:19px; text-align:right; border-color:#eaeaea; border-style:solid; "/>
  2266. <output id="output5" ref="/root/main/userholiinfo/monthunuseofcnt" style="left:1161px; top:580px; width:26px; height:19px; text-align:right; border-color:#eaeaea; border-style:solid; "/>
  2267. <output id="output6" ref="/root/main/userholiinfo/monthofcnt" style="left:1105px; top:580px; width:26px; height:19px; text-align:right; border-color:#eaeaea; border-style:solid; "/>
  2268. <caption id="caption30" style="left:1161px; top:558px; width:26px; height:20px; text-align:center; vertical-align:middle; background-color:#dddddd; ">잔여</caption>
  2269. <caption id="caption31" class="cell_1" style="left:1071px; top:558px; width:31px; height:41px; text-align:center; vertical-align:middle; ">
  2270. <![CDATA[누적
  2271. OFF]]>
  2272. </caption>
  2273. <caption id="caption32" style="left:1105px; top:558px; width:26px; height:20px; text-align:center; vertical-align:middle; background-color:#dddddd; ">발생</caption>
  2274. <caption id="caption33" style="left:1133px; top:558px; width:26px; height:20px; text-align:center; vertical-align:middle; background-color:#dddddd; ">사용</caption>
  2275. <output id="opt_day" ref="/root/main/stndduttableitem/day" format="(-)9999" style="left:42px; top:650px; width:26px; height:19px; font-size:10pt; font-weight:bold; text-align:center; border-color:#eaeaea; border-style:solid; "/>
  2276. <output id="opt_evening" ref="/root/main/stndduttableitem/evening" format="(-)9999" style="left:42px; top:672px; width:26px; height:19px; font-size:10pt; font-weight:bold; text-align:center; border-color:#eaeaea; border-style:solid; "/>
  2277. <output id="opt_night" ref="/root/main/stndduttableitem/night" format="(-)9999" style="left:42px; top:694px; width:26px; height:19px; font-size:10pt; font-weight:bold; text-align:center; border-color:#eaeaea; border-style:solid; "/>
  2278. <caption id="caption13" class="cell_1" style="left:8px; top:649px; width:31px; height:64px; text-align:center; vertical-align:middle; ">
  2279. <![CDATA[적
  2280. 원]]>
  2281. </caption>
  2282. <datagrid id="grd_dutschelist" nodeset="/root/main/resltdata/dutschelist" class="text_center" allowuserresize="false" backcoloralternate="transparent" caption="근무년월^근무부서^신청예정&#xA;실시구분^기관코드^사원번호^성명^근무지부서코드^근무지^직종^P^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&#xA;합계^Evening&#xA;합계^Night&#xA;합계^Off&#xA;합계^시간제&#xA;근무합계^시간제&#xA;주휴합계^여분3&#xA;OT근무시간^여분4&#xA;총근무인정시간^여분5&#xA;총근무할시간^연차합계^교육합계^보수합계^소속부서코드^직원구분^부서장&#xA;근무확정여부^인사팀&#xA;근무확정여부^비고^복무신청여부^부서지원여부^년차^입사일자^최종수정일시|근무년월^근무부서^신청예정&#xA;실시구분^기관코드^사원번호^성명^근무지부서코드^근무지^직종^P^월^화^수^목^금^토^일^월^화^수^목^금^토^일^월^화^수^목^금^토^일^월^화^수^목^금^토^일^월^화^수^이월Off수^Night수^Total&#xA;휴가수^사용&#xA;휴가수^보호&#xA;휴가수^Holiday수^Start Duty^Lase Duty^Day&#xA;합계^Evening&#xA;합계^Night&#xA;합계^Off&#xA;합계^시간제&#xA;근무합계^시간제&#xA;주휴합계^여분3&#xA;OT근무시간^여분4&#xA;총근무인정시간^여분5&#xA;총근무할시간^연차합계^교육합계^보수합계^소속부서코드^직원구분^부서장&#xA;근무확정여부^인사팀&#xA;근무확정여부^비고^복무신청여부^부서지원여부^년차^입사일자^최종수정일시" colsep="^" colwidth="0, 0, 0, 0, 70, 60, 0, 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, 35, 0, 0, 53, 53, 53, 0, 0, 0, 53, 53, 53, 53, 55, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 0" explorerbar="sort" frozencols="6" mergecellsfixedcols="bycolrec" mergecellsfixedrows="bycolrec" rowheader="update" rowheight="23" rowsep="|" style="left:1px; top:94px; width:1024px; height:455px; ">
  2283. <col ref="dutym" visibility="hidden"/>
  2284. <col ref="dutplcedeptcd" visibility="hidden"/>
  2285. <col ref="appscheexecflag" visibility="hidden"/>
  2286. <col ref="instcd" visibility="hidden"/>
  2287. <col ref="emplno"/>
  2288. <col ref="emplnm"/>
  2289. <col ref="dutplcedeptcdtemp" visibility="hidden"/>
  2290. <col ref="dutplcedeptnmtemp"/>
  2291. <col ref="jobkindnm"/>
  2292. <col ref="part" type="input" style="text-align:center; "/>
  2293. <col ref="day01" maxlength="4" _chartype="upper" style="font-family:돋움체; font-size:9pt; "/>
  2294. <col ref="day02" maxlength="4" _chartype="upper" style="font-family:돋움체; font-size:9pt; "/>
  2295. <col ref="day03" maxlength="4" _chartype="upper" style="font-family:돋움체; font-size:9pt; "/>
  2296. <col ref="day04" maxlength="4" _chartype="upper" style="font-family:돋움체; font-size:9pt; "/>
  2297. <col ref="day05" maxlength="4" _chartype="upper" style="font-family:돋움체; font-size:9pt; "/>
  2298. <col ref="day06" maxlength="4" _chartype="upper" style="font-family:돋움체; font-size:9pt; "/>
  2299. <col ref="day07" maxlength="4" _chartype="upper" style="font-family:돋움체; font-size:9pt; "/>
  2300. <col ref="day08" maxlength="4" _chartype="upper" style="font-family:돋움체; font-size:9pt; "/>
  2301. <col ref="day09" maxlength="4" _chartype="upper" style="font-family:돋움체; font-size:9pt; "/>
  2302. <col ref="day10" maxlength="4" _chartype="upper" style="font-family:돋움체; font-size:9pt; "/>
  2303. <col ref="day11" maxlength="4" _chartype="upper" style="font-family:돋움체; font-size:9pt; "/>
  2304. <col ref="day12" maxlength="4" _chartype="upper" style="font-family:돋움체; font-size:9pt; "/>
  2305. <col ref="day13" maxlength="4" _chartype="upper" style="font-family:돋움체; font-size:9pt; "/>
  2306. <col ref="day14" maxlength="4" _chartype="upper" style="font-family:돋움체; font-size:9pt; "/>
  2307. <col ref="day15" maxlength="4" _chartype="upper" style="font-family:돋움체; font-size:9pt; "/>
  2308. <col ref="day16" maxlength="4" _chartype="upper" style="font-family:돋움체; font-size:9pt; "/>
  2309. <col ref="day17" maxlength="4" _chartype="upper" style="font-family:돋움체; font-size:9pt; "/>
  2310. <col ref="day18" maxlength="4" _chartype="upper" style="font-family:돋움체; font-size:9pt; "/>
  2311. <col ref="day19" maxlength="4" _chartype="upper" style="font-family:돋움체; font-size:9pt; "/>
  2312. <col ref="day20" maxlength="4" _chartype="upper" style="font-family:돋움체; font-size:9pt; "/>
  2313. <col ref="day21" maxlength="4" _chartype="upper" style="font-family:돋움체; font-size:9pt; "/>
  2314. <col ref="day22" maxlength="4" _chartype="upper" style="font-family:돋움체; font-size:9pt; "/>
  2315. <col ref="day23" maxlength="4" _chartype="upper" style="font-family:돋움체; font-size:9pt; "/>
  2316. <col ref="day24" maxlength="4" _chartype="upper" style="font-family:돋움체; font-size:9pt; "/>
  2317. <col ref="day25" maxlength="4" _chartype="upper" style="font-family:돋움체; font-size:9pt; "/>
  2318. <col ref="day26" maxlength="4" _chartype="upper" style="font-family:돋움체; font-size:9pt; "/>
  2319. <col ref="day27" maxlength="4" _chartype="upper" style="font-family:돋움체; font-size:9pt; "/>
  2320. <col ref="day28" maxlength="4" _chartype="upper" style="font-family:돋움체; font-size:9pt; "/>
  2321. <col ref="day29" maxlength="4" _chartype="upper" style="font-family:돋움체; font-size:9pt; "/>
  2322. <col ref="day30" maxlength="4" _chartype="upper" style="font-family:돋움체; font-size:9pt; "/>
  2323. <col ref="day31" maxlength="4" _chartype="upper" style="font-family:돋움체; font-size:9pt; "/>
  2324. <col ref="brngfwrdoffqty" visibility="hidden"/>
  2325. <col ref="nigtcnt" visibility="hidden"/>
  2326. <col ref="holitotcnt" style="text-align:right; padding-right:2; "/>
  2327. <col ref="useholidayno" style="text-align:right; padding-right:2; "/>
  2328. <col ref="mensholidayno" format="9999" style="text-align:right; padding-right:2; "/>
  2329. <col ref="holicnt" visibility="hidden" format="9999"/>
  2330. <col ref="startdut" visibility="hidden" format="9999"/>
  2331. <col ref="lastdut" visibility="hidden" format="9999"/>
  2332. <col ref="daysum" format="9999" style="text-align:right; padding-right:2; "/>
  2333. <col ref="eveningsum" format="9999" style="text-align:right; padding-right:2; "/>
  2334. <col ref="nigtsum" format="9999" style="text-align:right; padding-right:2; "/>
  2335. <col ref="offsum" visibility="hidden" style="left:993px; top:0px; width:0px; height:0px; text-align:right; padding-right:2; "/>
  2336. <col ref="surp1_totduttm" format="9999" style="text-align:right; padding-right:2; "/>
  2337. <col ref="surp2_otofftm" format="9999" style="text-align:right; padding-right:2; "/>
  2338. <col ref="surp3_ottm" visibility="hidden"/>
  2339. <col ref="surp4_sumdutrcogtm" visibility="hidden"/>
  2340. <col ref="surp5_sumduttm" visibility="hidden"/>
  2341. <col ref="sumyearno" visibility="hidden"/>
  2342. <col ref="educsum" visibility="hidden"/>
  2343. <col ref="remunrsum" visibility="hidden"/>
  2344. <col ref="posdeptcd" visibility="hidden"/>
  2345. <col ref="empflag" visibility="hidden"/>
  2346. <col ref="deprtmangrdutcnfmyn" visibility="hidden"/>
  2347. <col ref="psnworkdutcnfnyn" visibility="hidden"/>
  2348. <col ref="cmt" type="input"/>
  2349. <col ref="emplappyn" visibility="hidden"/>
  2350. <col ref="suppflag" visibility="hidden"/>
  2351. <col ref="anual" visibility="hidden"/>
  2352. <col ref="entcodd" visibility="hidden"/>
  2353. <script type="javascript" ev:event="onrowchanged">
  2354. <![CDATA[
  2355. fSetEmplDutInfo();
  2356. ]]>
  2357. </script>
  2358. <script type="javascript" ev:event="onmousedown">
  2359. <![CDATA[
  2360. if(event.button == 3)
  2361. {
  2362. fOpenContextMenuList();
  2363. }
  2364. ]]>
  2365. </script>
  2366. <script type="javascript" ev:event="onmouseup">
  2367. <![CDATA[
  2368. if(event.button == 1)
  2369. {
  2370. fSetResnValue();
  2371. SELECTED_ROW = grd_dutschelist.row;
  2372. }
  2373. ]]>
  2374. </script>
  2375. <script type="javascript" ev:event="DOMFocusOut">
  2376. <![CDATA[
  2377. window.setPopupMenu(false);
  2378. ]]>
  2379. </script>
  2380. <script type="javascript" ev:event="onaftersort">
  2381. <![CDATA[
  2382. grd_dutschelist.gridToInstance();
  2383. ]]>
  2384. </script>
  2385. </datagrid>
  2386. <datagrid id="grd_resnlist" nodeset="/root/main/resnlist" visibility="hidden" backcoloralternate="#ffffff" caption="기관코드^근무년월^근무부서^예정실시확정구분^사번^근무코드^근무일^지원부서^근무사유^비고" colsep="^" colwidth="30, 70, 70, 58, 60, 55, 80, 80, 100, 80" mergecellsfixedrows="bycolrec" rowheader="update" rowsep="|" style="left:55px; top:340px; width:715px; height:140px; ">
  2387. <col ref="instcd"/>
  2388. <col ref="dutym"/>
  2389. <col ref="dutplcedeptcd"/>
  2390. <col ref="appscheexecflag"/>
  2391. <col ref="emplno"/>
  2392. <col ref="dutcd"/>
  2393. <col ref="dutdd"/>
  2394. <col ref="suppdeptcd"/>
  2395. <col ref="dutresn"/>
  2396. <col ref="cmt"/>
  2397. </datagrid>
  2398. <datagrid id="grd_yearnoinfolist" nodeset="/root/main/resltdata/offcntlist" visibility="hidden" caption="사번^발생연차^1년미만^사용연차^잔여연차^발생보휴^사용보휴^잔여보휴^월총&#xA;OF^월사용OF^월잔여OF" colsep="^" colwidth="70, 34, 35, 35, 35, 35, 35, 35, 35, 35, 35" mergecellsfixedrows="bycolrec" rowsep="|" style="left:760px; top:365px; width:405px; height:168px; ">
  2399. <col ref="emplno"/>
  2400. <col ref="genryearno" format="9999" style="text-align:right; "/>
  2401. <col ref="olmtspreyearno" format="9999" style="text-align:right; "/>
  2402. <col ref="useyearno" format="9999" style="text-align:right; "/>
  2403. <col ref="spreyearno" format="9999" style="text-align:right; "/>
  2404. <col ref="genrhealholi" format="9999" style="text-align:right; ">
  2405. <![CDATA[//]]>
  2406. </col>
  2407. <col ref="usehealholi" format="9999" style="text-align:right; "/>
  2408. <col ref="sprehealholi" format="9999" style="text-align:right; "/>
  2409. <col ref="monthofcnt" format="9999" style="text-align:right; "/>
  2410. <col ref="monthuseofcnt" format="9999" style="text-align:right; "/>
  2411. <col ref="monthunuseofcnt" format="9999" style="text-align:right; ">
  2412. <![CDATA[//]]>
  2413. </col>
  2414. </datagrid>
  2415. <datagrid id="grd_stndduttablelist" nodeset="/root/main/resltdata/stndduttablelist" visibility="hidden" caption="적용일자^부서코드^월D^월E^월N^화D^화E^화N^수D^수E^수N^목D^목E^목N^금D^금E^금N^토D^토E^토N^일D^일E^일N^N연속제한일수^N월제한일수" colsep="^" colwidth="60, 75, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 50, 50" mergecellsfixedrows="bycolrec" rowsep="|" style="left:0px; top:460px; width:765px; height:72px; ">
  2416. <col ref="appym"/>
  2417. <col ref="deptcd"/>
  2418. <col ref="mondaypsncnt"/>
  2419. <col ref="moneveningpsncnt"/>
  2420. <col ref="monnightpsncnt"/>
  2421. <col ref="tuesdaypsncnt"/>
  2422. <col ref="tueseveningpsncnt"/>
  2423. <col ref="tuesnightpsncnt"/>
  2424. <col ref="weddaypsncnt"/>
  2425. <col ref="wedeveningpsncnt"/>
  2426. <col ref="wednightpsncnt"/>
  2427. <col ref="thurdaypsncnt"/>
  2428. <col ref="thureveningpsncnt"/>
  2429. <col ref="thurnightpsncnt"/>
  2430. <col ref="fridaypsncnt"/>
  2431. <col ref="frieveningpsncnt"/>
  2432. <col ref="frinightpsncnt"/>
  2433. <col ref="satdaypsncnt"/>
  2434. <col ref="sateveningpsncnt"/>
  2435. <col ref="satnightpsncnt"/>
  2436. <col ref="sundaypsncnt"/>
  2437. <col ref="suneveningpsncnt"/>
  2438. <col ref="sunnightpsncnt"/>
  2439. <col ref="nightdutcontlimdayno"/>
  2440. <col ref="nightdutmmlimdayno"/>
  2441. </datagrid>
  2442. </group>
  2443. <group id="group5" scroll="auto" style="left:0px; top:12px; width:1195px; height:27px; ">
  2444. <line id="line75" class="line_6" style="x1:0; y1:25; x2:1195; y2:25; "/>
  2445. <button id="btn_save" class="btn4_letter2" style="left:1135px; top:3px; width:56px; height:22px; ">
  2446. <caption>저장</caption>
  2447. <script type="javascript" ev:event="DOMActivate">
  2448. <![CDATA[
  2449. submit("TRRPD02200");
  2450. if( model.getValue("/root/main/temp/flag/flag") == 'Y' ) {
  2451. messageBox("이미 확정마감 되었습니다.","I000");
  2452. return;
  2453. }
  2454. for(var i=2; i<grd_dutschelist.rows; i++)
  2455. {
  2456. if(grd_dutschelist.rowStatus(i) == 1 || grd_dutschelist.rowStatus(i) == 3)
  2457. {
  2458. grd_dutschelist.valueMatrix(i, grd_dutschelist.colRef("surp4_sumdutrcogtm")) = "0.0";
  2459. grd_dutschelist.valueMatrix(i, grd_dutschelist.colRef("surp5_sumduttm")) = "0.0";
  2460. }
  2461. }
  2462. fSave();
  2463. ]]>
  2464. </script>
  2465. </button>
  2466. <button id="btn_print" class="btn6_letter2" style="left:0px; top:3px; width:56px; height:22px; ">
  2467. <caption>출력</caption>
  2468. <script type="javascript" ev:event="DOMActivate">
  2469. <![CDATA[
  2470. fPrint();
  2471. ]]>
  2472. </script>
  2473. </button>
  2474. <button id="btn_clear" class="btn4_letter3" visibility="hidden" style="left:760px; top:3px; width:68px; height:22px; ">
  2475. <caption>초기화</caption>
  2476. <script type="javascript" ev:event="DOMActivate">
  2477. <![CDATA[
  2478. var updtdata = getGridUpdateData(grd_dutschelist);
  2479. if (updtdata != "")
  2480. {
  2481. var ret = messageBox("그리드에 작업 중인 내용이 있습니다. 초기화 작업을","Q003");
  2482. if (ret != 6) // not OK
  2483. {
  2484. return;
  2485. }
  2486. }
  2487. fInitialize();
  2488. ]]>
  2489. </script>
  2490. </button>
  2491. <button id="btn_cnfmclose" class="btn4_letter7" style="left:1010px; top:3px; width:116px; height:22px; ">
  2492. <caption>간호부최종마감</caption>
  2493. <script type="javascript" ev:event="DOMActivate">
  2494. <![CDATA[
  2495. fCnfmClose();
  2496. ]]>
  2497. </script>
  2498. </button>
  2499. <button id="btn_execclose" class="btn4_letter4" style="left:930px; top:3px; width:80px; height:22px; ">
  2500. <caption>확정마감</caption>
  2501. <script type="javascript" ev:event="DOMActivate">
  2502. <![CDATA[
  2503. fExecClose();
  2504. ]]>
  2505. </script>
  2506. </button>
  2507. <button id="btn_deptclose" class="btn4_letter4" style="left:850px; top:3px; width:80px; height:22px; ">
  2508. <caption>실시마감</caption>
  2509. <script type="javascript" ev:event="DOMActivate">
  2510. <![CDATA[
  2511. fDeptClose();
  2512. ]]>
  2513. </script>
  2514. </button>
  2515. <input id="ipt_cnt" ref="/root/main/close/closeyn/cnt" visibility="hidden" inputtype="input" style="left:335px; top:5px; width:24px; height:19px; "/>
  2516. <input id="ipt_closeyn" ref="/root/main/close/closeyn/closeyn" visibility="hidden" inputtype="input" style="left:360px; top:5px; width:24px; height:19px; "/>
  2517. <input id="ipt_deptyn" ref="/root/main/close/closeyn/deptyn" visibility="hidden" inputtype="input" style="left:380px; top:5px; width:24px; height:19px; "/>
  2518. <caption id="cap_caution1" visibility="hidden" style="left:460px; top:4px; width:300px; height:20px; font-size:11pt; font-weight:bold; color:#ff0000; ">확정마감된 번표(수정불가)</caption>
  2519. <caption id="cap_caution2" visibility="hidden" style="left:460px; top:4px; width:300px; height:20px; font-size:11pt; font-weight:bold; color:#ff0000; ">간호부 최종마감된 번표(수정불가)</caption>
  2520. <caption id="cap_caution3" visibility="hidden" style="left:460px; top:4px; width:300px; height:20px; font-size:11pt; font-weight:bold; color:#ff0000; ">실시번표 작성이 완료되지 않음.</caption>
  2521. <caption id="cap_caution4" visibility="hidden" style="left:460px; top:4px; width:320px; height:20px; font-size:11pt; font-weight:bold; color:#ff0000; ">실시마감된 번표. 확인 후 확정마감하세요.</caption>
  2522. <caption id="cap_caution5" visibility="hidden" style="left:460px; top:4px; width:320px; height:20px; font-size:11pt; font-weight:bold; color:#ff0000; ">최종번표는 조회만 가능합니다.</caption>
  2523. </group>
  2524. </xhtml:body>
  2525. </xhtml:html>