SMZTP00200_프로젝트진척관리(관리자용).xrw 46 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298
  1. <?xml version="1.0" encoding="EUC-KR"?>
  2. <?xml-stylesheet type="text/css" href="../../../com/commonweb/css/common.css" ?>
  3. <?xml-stylesheet href="../../../com/commonweb/css/common.css" type="text/css" ?>
  4. <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">
  5. <xhtml:head>
  6. <xhtml:title>프로젝트진척관리(슈퍼관리자)</xhtml:title>
  7. <model id="model1">
  8. <instance id="instance1">
  9. <root xmlns="">
  10. <main>
  11. <projlist>
  12. <list>
  13. <proj>
  14. <prcscd/>
  15. <subteam/>
  16. <lrg/>
  17. <mdl/>
  18. <sml/>
  19. <srfeflag/>
  20. <scrnid/>
  21. <scrnname/>
  22. <insuimp/>
  23. <detailfe/>
  24. <datafile/>
  25. <dev/>
  26. <usernm/>
  27. <schestartdd/>
  28. <schedd/>
  29. <acptdd/>
  30. <startdd/>
  31. <enddd/>
  32. <prcsrate/>
  33. <prcsyn/>
  34. <remark/>
  35. <funt1/>
  36. <funt2/>
  37. <funt3/>
  38. <updtneedyn/>
  39. <subjno/>
  40. <fstrgstrid/>
  41. <fstrgstdt/>
  42. <lastupdtrid/>
  43. <lastupdtdt/>
  44. <useyn/>
  45. <adchflag/>
  46. <appdd/>
  47. <reqno/>
  48. <devflag/>
  49. <ifoption/>
  50. <sort/>
  51. </proj>
  52. </list>
  53. </projlist>
  54. <list/>
  55. </main>
  56. <send>
  57. <search>
  58. <subteam/>
  59. <lrg/>
  60. <mdl/>
  61. <sml/>
  62. <srfeflag/>
  63. <scrnname/>
  64. <dev/>
  65. <usernm/>
  66. <useyn/>
  67. <appdd/>
  68. <acptfromdd/>
  69. <acpttodd/>
  70. <schefromdd/>
  71. <schetodd/>
  72. <startfromdd/>
  73. <starttodd/>
  74. <endfromdd/>
  75. <endtodd/>
  76. <prcsyn/>
  77. <subjno/>
  78. <devflag/>
  79. <reqno/>
  80. </search>
  81. <projlist/>
  82. <col>
  83. <dev/>
  84. </col>
  85. <popup/>
  86. </send>
  87. <init>
  88. <srfe>
  89. <item>
  90. <name>전체</name>
  91. <id>-</id>
  92. </item>
  93. <item>
  94. <name>화면</name>
  95. <id>화면</id>
  96. </item>
  97. <item>
  98. <name>보고서</name>
  99. <id>보고서</id>
  100. </item>
  101. <item>
  102. <name>기능</name>
  103. <id>기능</id>
  104. </item>
  105. <item>
  106. <name>오류</name>
  107. <id>오류</id>
  108. </item>
  109. <item>
  110. <name>DB변경</name>
  111. <id>DB변경</id>
  112. </item>
  113. <item>
  114. <name>화면+보고서</name>
  115. <id>sr</id>
  116. </item>
  117. </srfe>
  118. <srfe2>
  119. <item>
  120. <name>화면</name>
  121. <id>화면</id>
  122. </item>
  123. <item>
  124. <name>보고서</name>
  125. <id>보고서</id>
  126. </item>
  127. <item>
  128. <name>기능</name>
  129. <id>기능</id>
  130. </item>
  131. <item>
  132. <name>오류</name>
  133. <id>오류</id>
  134. </item>
  135. <item>
  136. <name>DB변경</name>
  137. <id>DB변경</id>
  138. </item>
  139. <item>
  140. <name>분석설계</name>
  141. <id>분석설계</id>
  142. </item>
  143. <item>
  144. <name>산출물</name>
  145. <id>산출물</id>
  146. </item>
  147. <item>
  148. <name>전환</name>
  149. <id>전환</id>
  150. </item>
  151. <item>
  152. <name>기타</name>
  153. <id>기타</id>
  154. </item>
  155. </srfe2>
  156. <subteam>
  157. <item>
  158. <name>전체</name>
  159. <id>-</id>
  160. </item>
  161. <item>
  162. <name>CMC네트워크</name>
  163. <id>CMC네트워크</id>
  164. </item>
  165. <item>
  166. <name>CRM</name>
  167. <id>CRM</id>
  168. </item>
  169. <item>
  170. <name>LIS</name>
  171. <id>LIS</id>
  172. </item>
  173. <item>
  174. <name>MIS</name>
  175. <id>MIS</id>
  176. </item>
  177. <item>
  178. <name>SWAT</name>
  179. <id>SWAT</id>
  180. </item>
  181. <item>
  182. <name>간호EMR</name>
  183. <id>간호EMR</id>
  184. </item>
  185. <item>
  186. <name>건진</name>
  187. <id>건진</id>
  188. </item>
  189. <item>
  190. <name>공통</name>
  191. <id>공통</id>
  192. </item>
  193. <item>
  194. <name>보험청구</name>
  195. <id>보험청구</id>
  196. </item>
  197. <item>
  198. <name>원무</name>
  199. <id>원무</id>
  200. </item>
  201. <item>
  202. <name>진료EMR</name>
  203. <id>진료EMR</id>
  204. </item>
  205. <item>
  206. <name>진료지원</name>
  207. <id>진료지원</id>
  208. </item>
  209. </subteam>
  210. <appdd>
  211. <item>
  212. <name/>
  213. <id/>
  214. </item>
  215. <item>
  216. <name>2009-01-01</name>
  217. <id>2009-01-01</id>
  218. </item>
  219. <item>
  220. <name>2008-10-01</name>
  221. <id>2008-10-01</id>
  222. </item>
  223. <item>
  224. <name>2009-03-01</name>
  225. <id>2009-03-01</id>
  226. </item>
  227. <item>
  228. <name>2009-03-23</name>
  229. <id>2009-03-23</id>
  230. </item>
  231. <item>
  232. <name>2009-05-01</name>
  233. <id>2009-05-01</id>
  234. </item>
  235. </appdd>
  236. <insuimp>
  237. <item>
  238. <name/>
  239. <id/>
  240. </item>
  241. <item>
  242. <name>A</name>
  243. <id>A</id>
  244. </item>
  245. <item>
  246. <name>B</name>
  247. <id>B</id>
  248. </item>
  249. <item>
  250. <name>C</name>
  251. <id>C</id>
  252. </item>
  253. </insuimp>
  254. <yn>
  255. <item>
  256. <name/>
  257. <id/>
  258. </item>
  259. <item>
  260. <name>Y</name>
  261. <id>Y</id>
  262. </item>
  263. <item>
  264. <name>N</name>
  265. <id>N</id>
  266. </item>
  267. </yn>
  268. <useyn>
  269. <item>
  270. <name>전체</name>
  271. <id>-</id>
  272. </item>
  273. <item>
  274. <name>Y</name>
  275. <id>Y</id>
  276. </item>
  277. <item>
  278. <name>N</name>
  279. <id>N</id>
  280. </item>
  281. </useyn>
  282. <datecond>
  283. <item>
  284. <name>전체</name>
  285. <id>-</id>
  286. </item>
  287. <item>
  288. <name>추가일</name>
  289. <id>acptdd</id>
  290. </item>
  291. <item>
  292. <name>예정완료일</name>
  293. <id>schedd</id>
  294. </item>
  295. <item>
  296. <name>시작일</name>
  297. <id>startdd</id>
  298. </item>
  299. <item>
  300. <name>종료일</name>
  301. <id>enddd</id>
  302. </item>
  303. </datecond>
  304. <subjno>
  305. <item>
  306. <name>전체</name>
  307. <id>-</id>
  308. </item>
  309. <item>
  310. <name>1</name>
  311. <id>1</id>
  312. </item>
  313. <item>
  314. <name>2</name>
  315. <id>2</id>
  316. </item>
  317. <item>
  318. <name>3</name>
  319. <id>3</id>
  320. </item>
  321. <item>
  322. <name>4</name>
  323. <id>4</id>
  324. </item>
  325. <item>
  326. <name>5</name>
  327. <id>5</id>
  328. </item>
  329. <item>
  330. <name>6</name>
  331. <id>6</id>
  332. </item>
  333. <item>
  334. <name>7</name>
  335. <id>7</id>
  336. </item>
  337. <item>
  338. <name>8</name>
  339. <id>8</id>
  340. </item>
  341. <item>
  342. <name>9</name>
  343. <id>9</id>
  344. </item>
  345. <item>
  346. <name>10</name>
  347. <id>10</id>
  348. </item>
  349. </subjno>
  350. <devflag>
  351. <item>
  352. <name>전체</name>
  353. <id>-</id>
  354. </item>
  355. <item>
  356. <name>평화</name>
  357. <id>평화</id>
  358. </item>
  359. <item>
  360. <name>HIT</name>
  361. <id>HIT</id>
  362. </item>
  363. <item>
  364. <name>평화+HIT</name>
  365. <id>평화+HIT</id>
  366. </item>
  367. </devflag>
  368. </init>
  369. <sheet>1</sheet>
  370. <pageCount>1000</pageCount>
  371. <totalPage/>
  372. <curPage>1</curPage>
  373. <temp>
  374. <usernm/>
  375. </temp>
  376. <popup>
  377. <grd_projlist>
  378. <item>
  379. <name>일괄수정</name>
  380. <func>fBatUpdate</func>
  381. </item>
  382. </grd_projlist>
  383. <fileupload>
  384. <item>
  385. <name>파일첨부</name>
  386. <func>fFileupload</func>
  387. </item>
  388. <item>
  389. <name>첨부파일 보기</name>
  390. <func>fFileView</func>
  391. </item>
  392. </fileupload>
  393. </popup>
  394. <popIndex>super</popIndex>
  395. <isxlsload/>
  396. <pw>1</pw>
  397. </root>
  398. </instance>
  399. <script type="javascript" ev:event="xforms-model-construct-done">
  400. <![CDATA[
  401. combo1.select(0);
  402. combo2.select(0);
  403. combo3.select(1);
  404. combo5.select(1);
  405. combo6.select(0);
  406. combo7.select(0);
  407. ]]>
  408. </script>
  409. <script type="javascript" ev:event="xforms-ready">
  410. <![CDATA[
  411. model.removeNodeset("/root/main/projlist/list/proj");
  412. // 페이징 구현 setTotalPage();
  413. //setPage(root.curPage.value);
  414. grd_projlist.frozenCols=10;
  415. // 적용 기준일
  416. submit("TRZTP00802");
  417. addComboItem("combo4", "전체", "-", "above");
  418. combo4.select(0);
  419. // fsetDate();
  420. model.refresh();
  421. ]]>
  422. </script>
  423. <submission id="TRZTP00101" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/search" resultref="/root/main/projlist/list"/>
  424. <submission id="TRZTP00102" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/col/dev" resultref="/root/temp"/>
  425. <submission id="TRZTP00802" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/search/appdd" resultref="/root/temp"/>
  426. <submission id="TRZTP00103" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/search_file"/>
  427. <submission id="TXZTP00101" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/main/list"/>
  428. </model>
  429. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  430. <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
  431. <script type="javascript">
  432. <![CDATA[
  433. function setPage(curPage)
  434. {
  435. var pageCount = root.pageCount.value;
  436. var endIdx = parseInt(curPage) * pageCount;
  437. var startIdx = endIdx - pageCount;
  438. var totalPage = root.totalPage.value;
  439. if ( curPage <= totalPage )
  440. grd_projlist.nodeset= "/root/main/projlist/list/proj[position()>"+startIdx+" and position()<="+endIdx+"]";
  441. }
  442. function setTotalPage()
  443. {
  444. var pageCount = root.pageCount.value;
  445. var count = model.getXPathValue( "count(/root/main/projlist/list/proj" );
  446. var totalPage = parseInt(parseInt(count) / pageCount);
  447. var mod = parseInt(count) / pageCount - parseInt(parseInt(count) / pageCount);
  448. if ( mod != 0 )
  449. totalPage = totalPage + 1;
  450. root.totalPage.value = totalPage;
  451. }
  452. function checkGridUpdate(grid)
  453. {
  454. var iData = grid.getUpdateDataXml("insert");
  455. var uData = grid.getUpdateDataXml("update");
  456. var dData = grid.getUpdateDataXml("delete");
  457. if (iData=="" && uData=="" && dData=="") return false;
  458. else return true;
  459. }
  460. function checkGridField(grid, field)
  461. {
  462. //alert(grd_scrnlist.fixedRows);
  463. // alert(grd_scrnlist.rows);
  464. var nodeset = grid.nodeset;
  465. var iStatus;
  466. var iData = grid.getUpdateDataXml("insert");
  467. for (i=grid.fixedRows; i<grid.rows; i++)
  468. {
  469. iStatus = grid.rowstatus(i);
  470. if (iStatus == 1) // ?? ??? ?? ????
  471. {
  472. if(model.getValue(nodeset+"["+i+"]/"+field)=="") return false;
  473. }
  474. }
  475. return true;
  476. }
  477. function fbtnSearch()
  478. {
  479. grd_projlist.rebuildStyle();
  480. submit("TRZTP00101");
  481. var gridObj = document.all("grd_projlist");
  482. for(var i=1; i<grd_projlist.rows; i++)
  483. {
  484. for(var j=0; j<grd_projlist.cols-1; j++)
  485. {
  486. if(model.getValue("/root/main/projlist/list/proj["+i+"]/useyn") == "N")
  487. {
  488. gridObj.cellStyle("text-decoration", i+1, j) = "line-through";
  489. }
  490. }
  491. }
  492. model.refresh();
  493. }
  494. function fBatUpdate()
  495. {
  496. // var rowNode;
  497. for(var i=0; i<grd_projlist.selectedRows; i++)
  498. {
  499. var row = grd_projlist.selectedRow(i);
  500. grd_projlist.addStatus(row, "update");
  501. // rowNode = instance1.selectSingleNode("/root/main/projlist/list/proj[" + (grd_projlist.selectedRow(i) - grd_projlist.fixedRows + 1) + "]");
  502. // model.duplicate(destNode, rowNode);
  503. }
  504. modal("SPZTP01000", "", "", "", "popup", "/root/send/popup", "/root/main/grd_projlist","left:300; top:300; width:750; height:200; sysmenu:visible; min:visible; max:true; resize:true; caption:visible;");
  505. }
  506. function fsetDate()
  507. {
  508. nday = new Date() // 오늘의 날짜와 시간을 구함
  509. t_year = nday.getYear();
  510. t_mon = nday.getMonth()+1; // 0부터 시작해서 1월이다.
  511. t_day = nday.getDate();
  512. // 날짜 포맷 맞추기
  513. if(t_mon < 10)
  514. t_mon = "0" + t_mon;
  515. if(t_day < 10)
  516. t_day = "0" + t_day;
  517. var cur_date = t_year + "-" + t_mon + "-" + t_day;
  518. model.setValue("/root/send/search/acpttodd",cur_date);
  519. model.setValue("/root/send/search/schetodd",cur_date);
  520. model.setValue("/root/send/search/starttodd",cur_date);
  521. model.setValue("/root/send/search/endtodd",cur_date);
  522. }
  523. function fFileupload()
  524. {
  525. modal("SPZTP00300", "1", "100", "200", "popup", "/root/send/popup", "/root/main/grd_projlist", "left:200; top:200; width:500; height:150; sysmenu:visible; min:visible; max:true; resize:true; caption:visible;" , false);
  526. }
  527. function fFileView()
  528. {
  529. modal("SPZTP00200", "1", "100", "200", "SPZTP00200", "", "", "left:200; top:200; width:925; height:570; sysmenu:visible; min:visible; max:true; resize:true; caption:visible;" , false);
  530. }
  531. ]]>
  532. </script>
  533. </xhtml:head>
  534. <xhtml:body guideline="1,1195;2,782;" style="margin-left:8; margin-top:0; margin-right:8; margin-bottom:0; ">
  535. <group id="group1" style="left:0px; top:0px; width:1195px; height:13px; ">
  536. <caption id="caption1" class="tit_1" style="left:0px; top:0px; width:196px; height:14px; ">프로젝트진척관리(슈퍼관리자)</caption>
  537. </group>
  538. <group id="group5" scroll="auto" style="left:0px; top:45px; width:1195px; height:730px; ">
  539. <group id="group6" style="left:0px; top:0px; width:1194px; height:100px; vertical-align:top; ">
  540. <shape id="roundrect3" class="roundrect_search" appearance="roundrect" style="left:0px; top:0px; width:1194px; height:100px; "/>
  541. <line id="line18" class="line_4" style="x1:1114px; y1:7px; x2:1114px; y2:90px; border-left-style:solid; "/>
  542. <caption id="caption2" class="search_name" style="left:9px; top:12px; width:86px; height:17px; ">SubTeam</caption>
  543. <caption id="caption3" class="search_name" style="left:9px; top:39px; width:66px; height:17px; ">대분류</caption>
  544. <caption id="caption4" class="search_name" style="left:155px; top:39px; width:66px; height:17px; ">중분류</caption>
  545. <caption id="caption5" class="search_name" style="left:303px; top:39px; width:66px; height:17px; ">소분류</caption>
  546. <caption id="caption6" class="search_name" style="left:9px; top:66px; width:54px; height:17px; ">구분</caption>
  547. <caption id="caption7" class="search_name" style="left:413px; top:12px; width:63px; height:17px; ">화면명</caption>
  548. <button id="button1" class="btn1_letter2" style="left:1130px; top:40px; width:56px; height:22px; background-image:../../../com/commonweb/images/btn1_letter2.gif; ">
  549. <caption>조회</caption>
  550. <script type="javascript" ev:event="DOMActivate">
  551. <![CDATA[
  552. fbtnSearch();
  553. ]]>
  554. </script>
  555. </button>
  556. <input id="input2" ref="/root/send/search/lrg" class="input_search" style="left:76px; top:39px; width:75px; height:19px; ">
  557. <script type="javascript" ev:event="onkeypress">
  558. <![CDATA[
  559. if (event.keycode == 13)
  560. {
  561. input2.value = input2.currentText;
  562. fbtnSearch();
  563. }
  564. ]]>
  565. </script>
  566. </input>
  567. <input id="input3" ref="/root/send/search/mdl" class="input_search" style="left:224px; top:39px; width:75px; height:19px; ">
  568. <script type="javascript" ev:event="onkeypress">
  569. <![CDATA[
  570. if (event.keycode == 13)
  571. {
  572. input3.value = input3.currentText;
  573. fbtnSearch();
  574. }
  575. ]]>
  576. </script>
  577. </input>
  578. <input id="input4" ref="/root/send/search/sml" class="input_search" style="left:370px; top:39px; width:65px; height:19px; ">
  579. <script type="javascript" ev:event="onkeypress">
  580. <![CDATA[
  581. if (event.keycode == 13)
  582. {
  583. input4.value = input4.currentText;
  584. fbtnSearch();
  585. }
  586. ]]>
  587. </script>
  588. </input>
  589. <select1 id="combo1" ref="/root/send/search/srfeflag" class="combo_search" appearance="minimal" style="left:71px; top:65px; width:99px; height:19px; ">
  590. <choices>
  591. <itemset nodeset="/root/init/srfe/item">
  592. <label ref="name"/>
  593. <value ref="id"/>
  594. </itemset>
  595. </choices>
  596. </select1>
  597. <input id="input5" ref="/root/send/search/scrnname" class="input_search" style="left:485px; top:12px; width:100px; height:19px; ">
  598. <script type="javascript" ev:event="onkeypress">
  599. <![CDATA[
  600. if (event.keycode == 13)
  601. {
  602. input5.value = input5.currentText;
  603. fbtnSearch();
  604. }
  605. ]]>
  606. </script>
  607. </input>
  608. <select1 id="combo2" ref="/root/send/search/subteam" class="combo_search" appearance="minimal" style="left:101px; top:12px; width:110px; height:19px; ">
  609. <choices>
  610. <itemset nodeset="/root/init/subteam/item">
  611. <label ref="name"/>
  612. <value ref="id"/>
  613. </itemset>
  614. </choices>
  615. </select1>
  616. <caption id="caption10" class="search_name" style="left:220px; top:12px; width:63px; height:17px; ">개발자</caption>
  617. <input id="input6" ref="/root/send/search/usernm" class="input_search" style="left:289px; top:12px; width:110px; height:19px; ">
  618. <script type="javascript" ev:event="onkeypress">
  619. <![CDATA[
  620. if (event.keycode == 13)
  621. {
  622. input6.value = input6.currentText;
  623. fbtnSearch();
  624. }
  625. ]]>
  626. </script>
  627. </input>
  628. <caption id="caption11" class="search_name" style="left:383px; top:66px; width:76px; height:17px; ">사용여부</caption>
  629. <select1 id="combo3" ref="/root/send/search/useyn" class="combo_search" appearance="minimal" style="left:465px; top:65px; width:65px; height:19px; ">
  630. <choices>
  631. <itemset nodeset="/root/init/useyn/item">
  632. <label ref="name"/>
  633. <value ref="id"/>
  634. </itemset>
  635. </choices>
  636. </select1>
  637. <caption id="caption12" class="search_name" style="left:185px; top:66px; width:89px; height:17px; ">적용기준일</caption>
  638. <select1 id="combo4" ref="/root/send/search/appdd" class="combo_search" appearance="minimal" style="left:279px; top:65px; width:90px; height:19px; ">
  639. <choices>
  640. <itemset nodeset="/root/temp/combo">
  641. <label ref="appdd"/>
  642. <value ref="value"/>
  643. </itemset>
  644. </choices>
  645. </select1>
  646. <caption id="caption13" class="search_name" style="left:750px; top:4px; width:89px; height:17px; ">예정완료일</caption>
  647. <input id="input7" ref="/root/send/search/schefromdd" class="input_search" inputtype="date" mask="include" style="left:850px; top:4px; width:110px; height:19px; ">
  648. <script type="javascript" ev:event="onkeypress">
  649. <![CDATA[
  650. if (event.keycode == 13)
  651. {
  652. input2.value = input2.currentText;
  653. fbtnSearch();
  654. }
  655. ]]>
  656. </script>
  657. </input>
  658. <input id="input8" ref="/root/send/search/schetodd" class="input_search" inputtype="date" mask="include" style="left:981px; top:4px; width:110px; height:19px; ">
  659. <script type="javascript" ev:event="onkeypress">
  660. <![CDATA[
  661. if (event.keycode == 13)
  662. {
  663. input2.value = input2.currentText;
  664. fbtnSearch();
  665. }
  666. ]]>
  667. </script>
  668. </input>
  669. <caption id="caption14" style="left:965px; top:5px; width:20px; height:20px; ">~</caption>
  670. <input id="input9" ref="/root/send/search/acptfromdd" class="input_search" inputtype="date" mask="include" style="left:850px; top:28px; width:110px; height:19px; ">
  671. <script type="javascript" ev:event="onkeypress">
  672. <![CDATA[
  673. if (event.keycode == 13)
  674. {
  675. input2.value = input2.currentText;
  676. fbtnSearch();
  677. }
  678. ]]>
  679. </script>
  680. </input>
  681. <input id="input10" ref="/root/send/search/acpttodd" class="input_search" inputtype="date" mask="include" style="left:981px; top:28px; width:110px; height:19px; ">
  682. <script type="javascript" ev:event="onkeypress">
  683. <![CDATA[
  684. if (event.keycode == 13)
  685. {
  686. input2.value = input2.currentText;
  687. fbtnSearch();
  688. }
  689. ]]>
  690. </script>
  691. </input>
  692. <caption id="caption15" class="search_name" style="left:750px; top:28px; width:89px; height:17px; ">추가일</caption>
  693. <caption id="caption16" style="left:965px; top:29px; width:20px; height:20px; ">~</caption>
  694. <input id="input11" ref="/root/send/search/startfromdd" class="input_search" inputtype="date" mask="include" style="left:850px; top:52px; width:110px; height:19px; ">
  695. <script type="javascript" ev:event="onkeypress">
  696. <![CDATA[
  697. if (event.keycode == 13)
  698. {
  699. input2.value = input2.currentText;
  700. fbtnSearch();
  701. }
  702. ]]>
  703. </script>
  704. </input>
  705. <input id="input12" ref="/root/send/search/starttodd" class="input_search" inputtype="date" mask="include" style="left:981px; top:52px; width:110px; height:19px; ">
  706. <script type="javascript" ev:event="onkeypress">
  707. <![CDATA[
  708. if (event.keycode == 13)
  709. {
  710. input2.value = input2.currentText;
  711. fbtnSearch();
  712. }
  713. ]]>
  714. </script>
  715. </input>
  716. <caption id="caption17" class="search_name" style="left:750px; top:53px; width:86px; height:17px; ">시작일</caption>
  717. <caption id="caption18" style="left:965px; top:53px; width:20px; height:20px; ">~</caption>
  718. <input id="input13" ref="/root/send/search/endfromdd" class="input_search" inputtype="date" mask="include" style="left:850px; top:75px; width:110px; height:19px; ">
  719. <script type="javascript" ev:event="onkeypress">
  720. <![CDATA[
  721. if (event.keycode == 13)
  722. {
  723. input2.value = input2.currentText;
  724. fbtnSearch();
  725. }
  726. ]]>
  727. </script>
  728. </input>
  729. <input id="input14" ref="/root/send/search/endtodd" class="input_search" inputtype="date" mask="include" style="left:981px; top:75px; width:110px; height:19px; ">
  730. <script type="javascript" ev:event="onkeypress">
  731. <![CDATA[
  732. if (event.keycode == 13)
  733. {
  734. input2.value = input2.currentText;
  735. fbtnSearch();
  736. }
  737. ]]>
  738. </script>
  739. </input>
  740. <caption id="caption19" class="search_name" style="left:750px; top:76px; width:86px; height:17px; ">종료일</caption>
  741. <caption id="caption20" style="left:965px; top:76px; width:20px; height:20px; ">~</caption>
  742. <caption id="caption21" class="search_name" style="left:545px; top:66px; width:115px; height:17px; ">공정률적용여부</caption>
  743. <select1 id="combo5" ref="/root/send/search/prcsyn" class="combo_search" appearance="minimal" style="left:670px; top:65px; width:65px; height:19px; ">
  744. <choices>
  745. <itemset nodeset="/root/init/useyn/item">
  746. <label ref="name"/>
  747. <value ref="id"/>
  748. </itemset>
  749. </choices>
  750. </select1>
  751. <caption id="caption22" class="search_name" style="left:593px; top:39px; width:66px; height:17px; ">과제명</caption>
  752. <select1 id="combo6" ref="/root/send/search/subjno" class="combo_search" appearance="minimal" style="left:674px; top:40px; width:60px; height:19px; ">
  753. <choices>
  754. <itemset nodeset="/root/init/subjno/item">
  755. <label ref="name"/>
  756. <value ref="id"/>
  757. </itemset>
  758. </choices>
  759. </select1>
  760. <caption id="caption23" class="search_name" style="left:593px; top:12px; width:76px; height:17px; ">통합개발</caption>
  761. <select1 id="combo7" ref="/root/send/search/devflag" class="combo_search" appearance="minimal" style="left:674px; top:12px; width:60px; height:19px; ">
  762. <choices>
  763. <itemset nodeset="/root/init/devflag/item">
  764. <label ref="name"/>
  765. <value ref="id"/>
  766. </itemset>
  767. </choices>
  768. </select1>
  769. <caption id="caption24" class="search_name" style="left:443px; top:39px; width:76px; height:17px; ">요청번호</caption>
  770. <input id="input15" ref="/root/send/search/reqno" class="input_search" style="left:520px; top:39px; width:70px; height:19px; ">
  771. <script type="javascript" ev:event="onkeypress">
  772. <![CDATA[
  773. if (event.keycode == 13)
  774. {
  775. input4.value = input4.currentText;
  776. fbtnSearch();
  777. }
  778. ]]>
  779. </script>
  780. </input>
  781. </group>
  782. <line id="line20" class="line_1" style="x1:0px; y1:126px; x2:1194px; y2:126px; "/>
  783. <caption id="caption8" class="tit_2" style="left:5px; top:111px; width:160px; height:13px; ">
  784. <![CDATA[프로젝트 진척관리내역]]>
  785. <script type="javascript" ev:event="onmousedown">
  786. <![CDATA[
  787. var pwcnt = model.getValue("/root/pw");
  788. if(event.button == 3)
  789. {
  790. pwcnt++;
  791. model.setValue("/root/pw", pwcnt);
  792. if(pwcnt == "5"){
  793. modal("SPMQR03000", 1,10, 10, "SPMQR03000", "", "");
  794. model.setValue("/root/pw", 1);
  795. }
  796. }
  797. ]]>
  798. </script>
  799. </caption>
  800. <group id="group2" style="left:800px; top:100px; width:395px; height:25px; ">
  801. <button id="button3" class="btn2_letter4" disable.background-image="../../../com/commonweb/images/dis_btn2_letter4.gif" style="left:10px; top:5px; width:64px; height:19px; background-image:../../../com/commonweb/images/btn2_letter4.gif; ">
  802. <caption>엑셀저장</caption>
  803. <script type="javascript" ev:event="DOMActivate">
  804. <![CDATA[
  805. var fileName = window.fileDialog("save", ",", false, "excel", "xls", "All Files (*.*)|*.*|Excel Files(*.xls)|*.xls");
  806. if (fileName != "")
  807. {
  808. grd_projlist.saveExcel(fileName);
  809. }
  810. ]]>
  811. </script>
  812. </button>
  813. <button id="button4" class="btn2_letter4" disable.background-image="../../../com/commonweb/images/dis_btn2_letter4.gif" style="left:220px; top:5px; width:64px; height:19px; background-image:../../../com/commonweb/images/btn2_letter4.gif; ">
  814. <caption>엑셀입력</caption>
  815. <script type="javascript" ev:event="DOMActivate">
  816. <![CDATA[
  817. grd_projlist.rebuildStyle();
  818. var fileName = window.fileDialog("open", "", false);
  819. var sheet = parseInt(model.getValue("/root/sheet"));
  820. grd_projlist.loadExcel(fileName,sheet);
  821. // 엑셀 로드 후 바로 수정 시에 row 상태가 update가 아니라 insert로 주기 위한 설정
  822. model.setValue("/root/isxlsload","Y");
  823. nday = new Date() // 오늘의 날짜와 시간을 구함
  824. t_year = nday.getYear();
  825. t_mon = nday.getMonth()+1; // 0부터 시작해서 1월이다.
  826. t_day = nday.getDate();
  827. // 날짜 포맷 맞추기
  828. if(t_mon < 10)
  829. t_mon = "0" + t_mon;
  830. if(t_day < 10)
  831. t_day = "0" + t_day;
  832. var chk_date = t_year + "-" + t_mon + "-" + t_day;
  833. var err_code = ""
  834. for (i=grd_projlist.fixedRows; i < grd_projlist.rows; i++)
  835. {
  836. // 필수 입력 필드가 빈 값이 아니면 insert로 상태를 바꾼다.
  837. if(grd_projlist.textmatrix(i, grd_projlist.colRef("prcscd")) != "" && grd_projlist.textmatrix(i,grd_projlist.colRef("subteam")) != "")
  838. {
  839. grd_projlist.rowStatus(i) = 1;
  840. } else {
  841. err_code = err_code + "Row:" + (i-1) + "] SEQ,SubTeam 컬럼은 필수 입력입니다. \n + 엑셀 파일 수정 후 다시 로드 하세요 + \n";
  842. grd_projlist.textmatrix(i, grd_projlist.colRef("prcscd")) = "";
  843. grd_projlist.cellStyle("background-color", i, grd_projlist.colRef("prcscd")) = "#FFFDBF";
  844. }
  845. // seq 컬럼이 비워져 있으면 auto라고 박아 준다.
  846. // 플래그가 auto일 경우 DB에서 MAX값으로 검색후 자동으로 매겨 준다.
  847. // // 왠지 문제의 소지가 있으므로 넌 주석이다, seq 컬림이 중간 중간 비워져 있다면 문제가 생긴다.
  848. // if(grd_projlist.textmatrix(i, grd_projlist.colRef("seq")) != "")
  849. // {}
  850. // else {
  851. // err_code = err_code + "Row:" + (i-1) + "] SEQ 컬럼은 필수 입력입니다. \n 원본 데이터 > " + grd_projlist.textmatrix(i, grd_projlist.colRef("seq")) + "\n";
  852. // grd_projlist.textmatrix(i, grd_projlist.colRef("seq")) = "";
  853. // grd_projlist.cellStyle("background-color", i, grd_projlist.colRef("seq")) = "#FFFDBF";
  854. // }
  855. // 구분 , != 로 비교를 하면 안된다.. 해서 if else로 처리 했다.
  856. if(grd_projlist.textmatrix(i, grd_projlist.colRef("srfeflag")) == "화면" | grd_projlist.textmatrix(i, grd_projlist.colRef("srfeflag")) == "기능" | grd_projlist.textmatrix(i, grd_projlist.colRef("srfeflag")) == "보고서"
  857. | grd_projlist.textmatrix(i, grd_projlist.colRef("srfeflag")) == "오류" | grd_projlist.textmatrix(i, grd_projlist.colRef("srfeflag")) == "DB변경" | grd_projlist.textmatrix(i, grd_projlist.colRef("srfeflag")) == "기타"
  858. | grd_projlist.textmatrix(i, grd_projlist.colRef("srfeflag")) == "산출물" | grd_projlist.textmatrix(i, grd_projlist.colRef("srfeflag")) == "분석설계" | grd_projlist.textmatrix(i, grd_projlist.colRef("srfeflag")) == "전환")
  859. { }
  860. else {
  861. err_code = err_code + "Row:" + (i-1) + "] 구분 컬럼 데이터를 확인하세요. \n 원본 데이터 > " + grd_projlist.textmatrix(i, grd_projlist.colRef("srfeflag")) + "\n";
  862. grd_projlist.textmatrix(i, grd_projlist.colRef("srfeflag")) = "";
  863. grd_projlist.cellStyle("background-color", i, grd_projlist.colRef("srfeflag")) = "#FFFDBF";
  864. }
  865. // 중요도
  866. if(grd_projlist.textmatrix(i, grd_projlist.colRef("insuimp")) == "" | grd_projlist.textmatrix(i, grd_projlist.colRef("insuimp")) == "A" | grd_projlist.textmatrix(i, grd_projlist.colRef("insuimp")) == "B"
  867. | grd_projlist.textmatrix(i, grd_projlist.colRef("insuimp")) == "C")
  868. { }
  869. else {
  870. err_code = err_code + "Row:" + (i-1) + "] A/B/C 중 선택하세요 \n 원본 데이터 > " + grd_projlist.textmatrix(i, grd_projlist.colRef("insuimp")) + "\n";
  871. grd_projlist.textmatrix(i, grd_projlist.colRef("insuimp")) = "";
  872. grd_projlist.cellStyle("background-color", i, grd_projlist.colRef("insuimp")) = "#FFFDBF";
  873. }
  874. // 개발자ID 는 대문자로 일괄 변경
  875. grd_projlist.textmatrix(i, grd_projlist.colRef("dev")) = grd_projlist.textmatrix(i, grd_projlist.colRef("dev")).toUpperCase();
  876. // 공정대상
  877. if(grd_projlist.textmatrix(i, grd_projlist.colRef("prcsyn")) == "" | grd_projlist.textmatrix(i, grd_projlist.colRef("prcsyn")) == "Y" | grd_projlist.textmatrix(i, grd_projlist.colRef("prcsyn")) == "N")
  878. { }
  879. else {
  880. err_code = err_code + "Row:" + (i-1) + "] Y/N 중 선택하세요 \n 원본 데이터 > " + grd_projlist.textmatrix(i, grd_projlist.colRef("prcsyn")) + "\n";
  881. grd_projlist.textmatrix(i, grd_projlist.colRef("prcsyn")) = "";
  882. grd_projlist.cellStyle("background-color", i, grd_projlist.colRef("prcsyn")) = "#FFFDBF";
  883. }
  884. // 공정 대상은 Y 이고 적용 기준일이 빈 값이면
  885. if(grd_projlist.textmatrix(i, grd_projlist.colRef("prcsyn")) == "Y" & grd_projlist.textmatrix(i, grd_projlist.colRef("appdd")) == "")
  886. {
  887. err_code = err_code + "Row:" + (i-1) + "] 공정대상이 Y 이면 적용 기준일은 빈 값이 될 수 없습니다." + "\n";
  888. grd_projlist.textmatrix(i, grd_projlist.colRef("appdd")) = "";
  889. grd_projlist.cellStyle("background-color", i, grd_projlist.colRef("appdd")) = "#FFFDBF";
  890. }
  891. // 추가일
  892. if(grd_projlist.textmatrix(i, grd_projlist.colRef("acptdd")) > chk_date)
  893. {
  894. err_code = err_code + "Row:" + (i-1) + "] 추가일은 현재날짜 보다 클 수 없습니다. \n 원본 데이터 > " + grd_projlist.textmatrix(i, grd_projlist.colRef("acptdd")) + "\n";
  895. grd_projlist.textmatrix(i, grd_projlist.colRef("acptdd")) = "";
  896. grd_projlist.cellStyle("background-color", i, grd_projlist.colRef("acptdd")) = "#FFFDBF";
  897. }
  898. // 종료일
  899. if(grd_projlist.textmatrix(i, grd_projlist.colRef("enddd")) > chk_date)
  900. {
  901. err_code = err_code + "Row:" + (i-1) + "] 종료일은 현재날짜 보다 클 수 없습니다. \n 원본 데이터 > " + grd_projlist.textmatrix(i, grd_projlist.colRef("enddd")) + "\n";
  902. grd_projlist.textmatrix(i, grd_projlist.colRef("enddd")) = "";
  903. grd_projlist.cellStyle("background-color", i, grd_projlist.colRef("enddd")) = "#FFFDBF";
  904. }
  905. // 진행률에서 %부분을 빼고 로드 한다. %가 있으면 저장시 오류 발생! (엑셀 저장시 %가 붙어서 저장이 된다)
  906. grd_projlist.textmatrix(i,grd_projlist.colRef("prcsrate")) = grd_projlist.textmatrix(i,grd_projlist.colRef("prcsrate")).replace("%","");
  907. // 적용 기준일
  908. if(grd_projlist.textmatrix(i, grd_projlist.colRef("appdd")) == "2008-10-01" ||
  909. grd_projlist.textmatrix(i, grd_projlist.colRef("appdd")) == "2009-01-01" ||
  910. grd_projlist.textmatrix(i, grd_projlist.colRef("appdd")) == "2009-03-01" ||
  911. grd_projlist.textmatrix(i, grd_projlist.colRef("appdd")) == "2009-03-23" ||
  912. grd_projlist.textmatrix(i, grd_projlist.colRef("appdd")) == "2009-05-01" ||
  913. grd_projlist.textmatrix(i, grd_projlist.colRef("appdd")) == "") // 적용 기준일
  914. {
  915. }
  916. else
  917. {
  918. err_code = err_code + "Row:" + (i-1) + "] 적용 기준일은 2008-10-01, 2009-01-01, 2009-03-01, 2009-03-23, 2009-05-01 중 하나입니다. \n 원본 데이터 > " + grd_projlist.textmatrix(i, grd_projlist.colRef("appdd")) + "\n";
  919. grd_projlist.cellStyle("background-color", i, grd_projlist.colRef("appdd")) = "#FFFDBF";
  920. grd_projlist.textmatrix(i, grd_projlist.colRef("appdd")) = "";
  921. }
  922. }
  923. // 오류가 있으면 메세지창을 띄워 주는 친절함.
  924. if ( err_code != "")
  925. alert("오류가 발생한 데이터 리스트 입니다 \n노란색으로 처리된 셀을 확인하세요.\n\n" + err_code);
  926. ]]>
  927. </script>
  928. </button>
  929. <button id="button5" class="btn2_letter3" disable.background-image="../../../com/commonweb/images/dis_btn2_letter3.gif" style="left:285px; top:5px; width:53px; height:19px; background-image:../../../com/commonweb/images/btn2_letter3.gif; ">
  930. <caption>행추가</caption>
  931. <script type="javascript" ev:event="DOMActivate">
  932. <![CDATA[
  933. grd_projlist.addRow(); // 입력할 행 추가.
  934. var cur_row = grd_projlist.row-1; // 추가된 행 번호 가져오기
  935. var cnt_row = grd_projlist.rows-1; // 현재 행의 갯수 가져오기
  936. var subteam;
  937. var prcscd;
  938. if (cnt_row > 2) // 이미 데이터가 있으면
  939. {
  940. subteam = model.getValue("/root/main/projlist/list/proj["+(cnt_row-2)+"]/subteam");
  941. prcscd = 'auto';
  942. }
  943. else // 데이터가 하나도 없으면
  944. {
  945. subteam = '입력하세요';
  946. prcscd = 'auto';
  947. }
  948. model.setValue("/root/main/projlist/list/proj["+cur_row+"]/subteam",subteam);
  949. model.setValue("/root/main/projlist/list/proj["+cur_row+"]/prcscd",prcscd);
  950. nday = new Date() // 오늘의 날짜와 시간을 구함
  951. t_year = nday.getYear();
  952. t_mon = nday.getMonth()+1; // 0부터 시작해서 1월이다.
  953. t_day = nday.getDate();
  954. // 날짜 포맷 맞추기
  955. if(t_mon < 10)
  956. t_mon = "0" + t_mon;
  957. if(t_day < 10)
  958. t_day = "0" + t_day;
  959. // 추가일 자동 입력
  960. model.setValue("/root/main/projlist/list/proj["+cur_row+"]/acptdd",t_year + "-" + t_mon + "-" + t_day);
  961. // 그리드에 추가
  962. //model.copyNode("/root/main/list/scrnlist["+cur_row+"]","/root/main/item");
  963. model.refresh();
  964. grd_projlist.row = cur_row;
  965. ]]>
  966. </script>
  967. </button>
  968. <button id="button6" class="btn2_letter3" disable.background-image="../../../com/commonweb/images/dis_btn2_letter3.gif" style="left:340px; top:5px; width:53px; height:19px; background-image:../../../com/commonweb/images/btn2_letter3.gif; ">
  969. <caption>행삭제</caption>
  970. <script type="javascript" ev:event="DOMActivate">
  971. <![CDATA[
  972. //다중행 삭제 가능 +_+
  973. var selectedRows = grd_projlist.selectedRows;
  974. var arr = new Array(selectedRows);
  975. if(selectedRows <= 0) {
  976. alert("삭제할 행을 선택해주세요.");
  977. return;
  978. }
  979. for ( var i = 0 ; i < arr.length ; i ++ )
  980. {
  981. arr[i] = grd_projlist.selectedRow(i);
  982. if( grd_projlist.textmatrix(grd_projlist.selectedRow(i),grd_projlist.colRef("datafile")) == "Y")
  983. {
  984. alert("첨부파일이 포함되어 있습니다.\n\n 첨부파일을 먼저 삭제 하세요.");
  985. return;
  986. }
  987. }
  988. for ( var i = arr.length - 1 ; i >= 0 ; i-- )
  989. {
  990. // deleteRow(수정할 row,리프레쉬여부) , false로 설정하여 마지막에 한번에 refresh 한다.
  991. grd_projlist.deleteRow(arr[i],false);
  992. }
  993. grd_projlist.refresh();
  994. ]]>
  995. </script>
  996. </button>
  997. <caption id="caption9" class="cell_1" style="left:80px; top:5px; width:90px; height:20px; ">엑셀입력Sheet</caption>
  998. <input id="input1" ref="/root/sheet" style="left:175px; top:5px; width:40px; height:19px; "/>
  999. </group>
  1000. <datagrid id="grd_projlist" nodeset="/root/main/projlist/list/proj" autoresize="true" caption="seq^SubTeam^대분류^중분류^소분류^구분^화면ID^화면명^중요도^세부기능/오류^첨부파일^개발자ID^개발자^예정시작일^예정완료일^추가일^시작일^종료일^진행률^공정대상^비고^기능분해1^기능분해2^기능분해3^수정필요여부^과제명^최초입력자^입력일시^수정자^수정일시^사용여부^변경구분^적용기준일^변경요청번호^통합개발^병원 구분^sort^seq|seq^SubTeam^대분류^중분류^소분류^구분^화면ID^화면명^중요도^세부기능/오류^첨부파일^개발자ID^개발자^예정시작일^예정완료일^추가일^시작일^종료일^진행률^공정대상^비고^기능분해1^기능분해2^기능분해3^수정필요여부^과제명^최초입력자^입력일시^수정자^수정일시^사용여부^변경구분^적용기준일^변경요청번호^통합개발^병원 구분^sort^seq" colsep="^" colwidth="30, 60, 80, 80, 80, 50, 83, 100, 30, 180, 33, 55, 45, 67, 67, 67, 67, 67, 45, 30, 100, 100, 100, 100, 60, 40, 70, 67, 70, 67, 40, 60, 67, 61, 62, 184, 60" dataheight="23" defaultrows="0" explorerbar="sortshow" extendlastcol="scroll" mergecellsfixedrows="bycolrec" rowheader="seq" rowheight="23" rowsep="|" tooltip="true" style="left:0px; top:130px; width:1194px; height:595px; ">
  1001. <col ref="prcscd"/>
  1002. <col ref="subteam" type="input" _chartype="upper"/>
  1003. <col ref="lrg" type="input"/>
  1004. <col ref="mdl" type="input"/>
  1005. <col ref="sml" type="input"/>
  1006. <col imemode="hangul" ref="srfeflag" type="combo" _inputmode="koreanOnly">
  1007. <choices>
  1008. <itemset nodeset="/root/init/srfe2/item">
  1009. <label ref="name"/>
  1010. <value ref="id"/>
  1011. </itemset>
  1012. </choices>
  1013. </col>
  1014. <col ref="scrnid" type="input"/>
  1015. <col ref="scrnname" type="input"/>
  1016. <col ref="insuimp" type="combo" _chartype="upper">
  1017. <choices>
  1018. <itemset nodeset="/root/init/insuimp/item">
  1019. <label ref="name"/>
  1020. <value ref="id"/>
  1021. </itemset>
  1022. </choices>
  1023. </col>
  1024. <col ref="detailfe" type="input"/>
  1025. <col ref="datafile" style="font-weight:bold; text-decoration:underline; color:#0000ff; text-align:center; "/>
  1026. <col ref="dev" type="input"/>
  1027. <col ref="usernm"/>
  1028. <col ref="schestartdd" type="input" format="yyyy-mm-dd" mask="include"/>
  1029. <col ref="schedd" type="input" format="yyyy-mm-dd" mask="include"/>
  1030. <col ref="acptdd" type="input" format="yyyy-mm-dd" mask="include"/>
  1031. <col ref="startdd" type="input" format="yyyy-mm-dd" mask="include"/>
  1032. <col ref="enddd" type="input" format="yyyy-mm-dd" mask="include"/>
  1033. <col ref="prcsrate" type="input" format="###%" style="left:1146px; top:43px; width:45px; height:23px; "/>
  1034. <col ref="prcsyn" type="combo" _chartype="upper">
  1035. <choices>
  1036. <itemset nodeset="/root/init/yn/item">
  1037. <label ref="name"/>
  1038. <value ref="id"/>
  1039. </itemset>
  1040. </choices>
  1041. </col>
  1042. <col ref="remark" type="input"/>
  1043. <col ref="funt1" type="input"/>
  1044. <col ref="funt2" type="input"/>
  1045. <col ref="funt3" type="input"/>
  1046. <col ref="updtneedyn" type="input" _chartype="upper"/>
  1047. <col ref="subjno" type="input"/>
  1048. <col ref="fstrgstrid"/>
  1049. <col ref="fstrgstdt" format="yyyy-mm-dd"/>
  1050. <col ref="lastupdtrid"/>
  1051. <col ref="lastupdtdt" format="yyyy-mm-dd"/>
  1052. <col ref="useyn" type="combo" _chartype="upper">
  1053. <choices>
  1054. <itemset nodeset="/root/init/yn/item">
  1055. <label ref="name"/>
  1056. <value ref="id"/>
  1057. </itemset>
  1058. </choices>
  1059. </col>
  1060. <col ref="adchflag" type="input"/>
  1061. <col ref="appdd" type="combo" format="yyyy-mm-dd" mask="include">
  1062. <choices>
  1063. <itemset nodeset="/root/init/appdd/item">
  1064. <label ref="name"/>
  1065. <value ref="id"/>
  1066. </itemset>
  1067. </choices>
  1068. </col>
  1069. <col ref="reqno" type="input"/>
  1070. <col ref="devflag" type="input"/>
  1071. <col ref="ifoption" type="inputbutton"/>
  1072. <col ref="sort" type="input" format="99999999"/>
  1073. <script type="javascript" ev:event="xforms-value-changed">
  1074. <![CDATA[
  1075. var cur_row = grd_projlist.row;
  1076. var cur_col = grd_projlist.col;
  1077. col_name = grd_projlist.textmatrix(1,cur_col);
  1078. if(col_name == "개발자ID"){ //개발자 ID
  1079. // 소문자로 ID 를 넣었을 경우 대문자로 변환
  1080. grd_projlist.textmatrix(cur_row, cur_col) = grd_projlist.textmatrix(cur_row, cur_col).toUpperCase();
  1081. // 개발자 ID 컬럼의 값을 instance send/col/dev 에 넣는다
  1082. model.setValue("/root/send/col/dev", grd_projlist.textmatrix(cur_row, cur_col));
  1083. // send/col/dev 값을 argument로 TRTZP00102 에 패스한다 리턴값은 root/temp 에 받는다.
  1084. submit("TRZTP00102");
  1085. // root/temp 의 값을 개발자 column 에 표현한다.
  1086. grd_projlist.textmatrix(cur_row, cur_col+1) = model.getValue("/root/temp/usernm");
  1087. }
  1088. else if(col_name == "추가일" || col_name == "종료일") // 추가일
  1089. {
  1090. nday = new Date() // 오늘의 날짜와 시간을 구함
  1091. t_year = nday.getYear();
  1092. t_mon = nday.getMonth()+1; // 0부터 시작해서 1월이다.
  1093. t_day = nday.getDate();
  1094. // 날짜 포맷 맞추기
  1095. if(t_mon < 10)
  1096. t_mon = "0" + t_mon;
  1097. if(t_day < 10)
  1098. t_day = "0" + t_day;
  1099. if(grd_projlist.textmatrix(cur_row, cur_col) > t_year + "-" + t_mon + "-" + t_day)
  1100. {
  1101. if ( col_name == "추가일" )
  1102. alert("추가일은 현재날짜 보다 클 수 없습니다.");
  1103. else
  1104. alert("종료일은 현재날짜 보다 클 수 없습니다.");
  1105. grd_projlist.textmatrix(cur_row, cur_col) = "";
  1106. grd_projlist.editCell();
  1107. }
  1108. }
  1109. ]]>
  1110. </script>
  1111. <script type="javascript" ev:event="onmousedown">
  1112. <![CDATA[
  1113. // 한 행만 선택했을 경우에는 파일 첨부/보기 팝업을 띄우고 두 행이상 부터는 일괄 수정 팝업을 띄운다
  1114. if( grd_projlist.selectedRows == 1)
  1115. {
  1116. setPopupMenu("grd_projlist", false, "/root/popup/fileupload/item", "name", "func");
  1117. }
  1118. else
  1119. {
  1120. setPopupMenu("grd_projlist", false, "/root/popup/grd_projlist/item", "name", "func");
  1121. }
  1122. ]]>
  1123. </script>
  1124. <script type="javascript" ev:event="DOMFocusOut">
  1125. <![CDATA[
  1126. initPopupMenu();
  1127. ]]>
  1128. </script>
  1129. <script type="javascript" ev:event="onclick">
  1130. <![CDATA[
  1131. if( isDataCell() && grd_projlist.col == grd_projlist.colRef("datafile"))
  1132. {
  1133. modal("SPZTP00200", "1", "100", "200", "SPZTP00200", "", "", "left:200; top:200; width:925; height:570; sysmenu:visible; min:visible; max:true; resize:true; caption:visible;" , false);
  1134. }
  1135. ]]>
  1136. </script>
  1137. <script type="javascript" ev:event="onaftersort">
  1138. <![CDATA[
  1139. grd_projlist.gridToInstance();
  1140. ]]>
  1141. </script>
  1142. <script type="javascript" ev:event="onbuttonclick">
  1143. <![CDATA[
  1144. var bValue = model.getValue("/root/main/projlist/list/proj["+(grd_projlist.row-1)+"]/ifoption");
  1145. var rowStatus = grd_projlist.rowStatus(grd_projlist.row);
  1146. var sNode = "/root/main/projlist/list/proj["+(grd_projlist.row-1)+"]/ifoption";
  1147. setParameter("opener_parameter_id", bValue+"▦"+sNode);
  1148. modal("SPZTP00400");
  1149. var aValue = model.getValue("/root/main/projlist/list/proj["+(grd_projlist.row-1)+"]/ifoption");
  1150. if(bValue != aValue && rowStatus != "1"){
  1151. grd_projlist.rowStatus(grd_projlist.row) = 2;
  1152. }
  1153. ]]>
  1154. </script>
  1155. </datagrid>
  1156. </group>
  1157. <group id="group3" style="left:0px; top:13px; width:1190px; height:27px; ">
  1158. <button id="button2" class="btn4_letter2" disable.background-image="../../../com/commonweb/images/dis_btn4_letter2.gif" style="left:1060px; top:2px; width:56px; height:22px; background-image:../../../com/commonweb/images/btn4_letter2.gif; ">
  1159. <caption>저장</caption>
  1160. <script type="javascript" ev:event="DOMActivate">
  1161. <![CDATA[
  1162. if(messageBox("", "Q002")==6){
  1163. // 엑셀에서 불러오기를 실행하고 바로 수정을 했을 경우 rowStatus가 update 형식이 되므로 입력되지 않아서 강제로 몽땅 입력상태로 설정
  1164. if(model.getValue("/root/isxlsload") == "Y")
  1165. {
  1166. for (i=grd_projlist.fixedRows; i<grd_projlist.rows; i++)
  1167. {
  1168. // 필수 입력필드가 비어있지 않으면 저장상태로 변경
  1169. if(grd_projlist.textmatrix(i, 1) != "" && grd_projlist.textmatrix(i, 2) != "")
  1170. {
  1171. grd_projlist.rowStatus(i) = 1;
  1172. }
  1173. else
  1174. {
  1175. alert("seq 와 subteam 은 필수 입력 필드 입니다. (seq컬럼에 auto 입력 시 자동으로 입력)");
  1176. return;
  1177. }
  1178. }
  1179. }
  1180. if(!checkGridUpdate(grd_projlist))
  1181. {
  1182. alert("저장할 자료가 존재하지 않습니다.");
  1183. return;
  1184. }
  1185. for (i=grd_projlist.fixedRows; i<grd_projlist.rows; i++)
  1186. {
  1187. if(model.getValue("/root/main/projlist/list/proj["+i+"]/prcsyn") == "Y" & model.getValue("/root/main/projlist/list/proj["+i+"]/appdd") == "")
  1188. {
  1189. alert("ROW " + i + "] 공정대상이 Y 일때 적용기준일은 빈 값이 될 수 없습니다!");
  1190. return;
  1191. }
  1192. }
  1193. model.setValue("/root/send/projlist",grd_projlist.getUpdateData());
  1194. if ( submit("TXZTP00101") ) {
  1195. grd_projlist.clearStatus(); // submit() 성공하면 그리드의 i,u,d 상태 제거
  1196. model.setValue("/root/isxlsload",""); // 엑셀 로드 상태 제거 -> 이거 안 해주면 재앙이 닥친다. 무조건 insert로 지정한다.
  1197. fbtnSearch();
  1198. }
  1199. }
  1200. ]]>
  1201. </script>
  1202. </button>
  1203. <button id="button7" class="btn4_letter3" disable.background-image="../../../com/commonweb/images/dis_btn4_letter3.gif" style="left:1120px; top:2px; width:68px; height:22px; background-image:../../../com/commonweb/images/btn4_letter3.gif; ">
  1204. <caption>초기화</caption>
  1205. <script type="javascript" ev:event="DOMActivate">
  1206. <![CDATA[
  1207. model.removeNodeset("/root/main/projlist/list/proj");
  1208. model.resetInstanceNode("/root/send");
  1209. //model.resetInstanceNode("/root/main/item");
  1210. //fsetDate();
  1211. model.refresh();
  1212. combo1.select(0);
  1213. combo2.select(0);
  1214. combo3.select(1);
  1215. combo4.select(0);
  1216. combo5.select(1);
  1217. combo6.select(0);
  1218. ]]>
  1219. </script>
  1220. </button>
  1221. <line id="line1" class="line_6" style="x1:0px; y1:25px; x2:1189px; y2:25px; "/>
  1222. </group>
  1223. </xhtml:body>
  1224. </xhtml:html>