SPZHA20101.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490
  1. var xreqdesc = "/root/main/reqdesc";
  2. var xsendfile = "/root/send/save";
  3. var xsenddesc = "/root/send/save/reqdesc";
  4. var xsendreqaprv = "/root/send/reqaprv";
  5. // 화면 초기화
  6. function fInitialize() {
  7. // 개발자리스트취득
  8. submit("TRZHA20008");
  9. // 현대개발자리스트취득
  10. model.setValue("/root/send/hitprgmrinfo/hityn", "Y");
  11. submit("TRZHA20105");
  12. // 파라미터 취득
  13. var depNo = opener.javascript.getParameter("SPZHA20101_PARM_DEPNO");
  14. var reqNo = opener.javascript.getParameter("SPZHA20101_PARM_REQNO");
  15. // 신규 -> 저장으로 연결된 경우..
  16. if (!isNull(model.getValue("/root/init/depno"))) {
  17. depNo = model.getValue("/root/init/depno");
  18. }
  19. //cap_test_depno.value = "depNo : " + depNo;
  20. //cap_test_reqno.value = "reqno : " + reqNo;
  21. // 초기화
  22. model.resetInstanceNode(xreqdesc);
  23. model.resetInstanceNode(xsenddesc);
  24. model.resetInstanceNode(xsendfile);
  25. model.resetInstanceNode(xsendreqaprv);
  26. // 버튼 초기화
  27. btn_acptaprv1.disabled = true;
  28. btn_acptcncl1.disabled = true;
  29. btn_acptaprv2.disabled = true;
  30. btn_acptcncl2.disabled = true;
  31. btn_acptaprv3.disabled = true;
  32. btn_acptcncl3.disabled = true;
  33. btn_acptaprv4.disabled = true;
  34. btn_acptcncl4.disabled = true;
  35. btn_acptaprv5.disabled = true;
  36. btn_acptcncl5.disabled = true;
  37. btn_acptaprv6.disabled = true;
  38. btn_acptcncl6.disabled = true;
  39. // 초기화 파라미터의 존재 유무에 따라 신규 / 수정판단
  40. // 신규
  41. if (isNull(depNo)) {
  42. btn_del.disabled = true;
  43. btn_save.disabled = false;
  44. btn_redep.visible = false;
  45. // 기본값 설정
  46. model.setValue(xreqdesc + "/reqdd", getCurrentDate());
  47. model.setValue(xreqdesc + "/deptype", "1");
  48. model.setValue(xreqdesc + "/urgenttype", "1");
  49. model.setValue(xreqdesc + "/reqno1", reqNo);
  50. model.setValue(xreqdesc + "/reqhopedd", getCurrentDate());
  51. model.setValue(xreqdesc + "/educhkhngnm", getUserName());
  52. model.refresh();
  53. // 수정
  54. } else {
  55. // 버튼 초기화
  56. btn_del.disabled = false;
  57. btn_save.disabled = false;
  58. // 배포번호 설정후 검색 실시
  59. model.makeValue(xsenddesc + "/depno", depNo);
  60. submit("TRZHA20101");
  61. // 비활성화 제어
  62. if (isNull(model.getValue(xreqdesc + "/depdd"))) {
  63. cap_depresult.visible = false;
  64. // DBA 결재버튼 제어
  65. if (model.getValue(xreqdesc + "/aprv5").length != 1) {
  66. btn_acptaprv6.disabled = false;
  67. btn_acptcncl6.disabled = false;
  68. btn_acptaprv5.disabled = false;
  69. btn_acptcncl5.disabled = false;
  70. // 파트장 결재버튼 제어
  71. } else if (model.getValue(xreqdesc + "/aprv4").length != 1) {
  72. btn_acptaprv5.disabled = false;
  73. btn_acptcncl5.disabled = false;
  74. btn_acptaprv4.disabled = false;
  75. btn_acptcncl4.disabled = false;
  76. // 총괄 결재버튼 제어
  77. } else if (model.getValue(xreqdesc + "/aprv3").length != 1) {
  78. btn_acptaprv4.disabled = false;
  79. btn_acptcncl4.disabled = false;
  80. btn_acptaprv3.disabled = false;
  81. btn_acptcncl3.disabled = false;
  82. // 현대PL 결재버튼 제어
  83. } else if (model.getValue(xreqdesc + "/aprv2").length != 1) {
  84. btn_acptaprv3.disabled = false;
  85. btn_acptcncl3.disabled = false;
  86. btn_acptaprv2.disabled = false;
  87. btn_acptcncl2.disabled = false;
  88. // 현대PM 결재버튼 제어
  89. } else if (model.getValue(xreqdesc + "/aprv1").length != 1) {
  90. btn_acptaprv2.disabled = false;
  91. btn_acptcncl2.disabled = false;
  92. btn_acptaprv1.disabled = false;
  93. btn_acptcncl1.disabled = false;
  94. // 담당 결재버튼 제어
  95. } else if (!isNull(model.getValue(xreqdesc + "/depno"))) {
  96. btn_acptaprv1.disabled = false;
  97. btn_acptcncl1.disabled = false;
  98. }
  99. // 담당결재시 삭제/저장 불가
  100. if (model.getValue(xreqdesc + "/aprv1").length != 1) {
  101. btn_del.disabled = true;
  102. btn_save.disabled = true;
  103. }
  104. } else {
  105. cap_depresult.visible = true;
  106. btn_del.disabled = true;
  107. btn_save.disabled = true;
  108. }
  109. //fCheckDepType();
  110. fCheckReDep();
  111. }
  112. }
  113. function fCheckValidation() {
  114. var hasEmpty = false;
  115. var errMsg = "";
  116. if (isNull(model.getValue(xreqdesc + "/reqid"))) {
  117. errMsg += "요청자\r\n";
  118. hasEmpty = true;
  119. }
  120. if (isNull(model.getValue(xreqdesc + "/reqdd"))) {
  121. errMsg += "요청일\r\n";
  122. hasEmpty = true;
  123. }
  124. if (isNull(model.getValue(xreqdesc + "/reqhopedd"))) {
  125. errMsg += "희망일\r\n";
  126. hasEmpty = true;
  127. }
  128. // 배포작업 중에 문서가 없는 경우도 있으므로 잠정 제외
  129. // if (isNull(model.getValue(xreqdesc + "/reqno1"))) {
  130. // errMsg += "개발요청번호\r\n";
  131. // hasEmpty = true;
  132. // }
  133. if (isNull(model.getValue(xreqdesc + "/reqserver"))) {
  134. errMsg += "배포요청서버\r\n";
  135. hasEmpty = true;
  136. }
  137. // AP 배포일 때만 체크
  138. if (model.getValue(xreqdesc + "/deptype") == "1"
  139. && isNull(model.getValue(xreqdesc + "/reqcomponent"))) {
  140. errMsg += "컴포넌트명\r\n";
  141. hasEmpty = true;
  142. }
  143. if (isNull(model.getValue(xreqdesc + "/reqcomment"))) {
  144. errMsg += "요청사유\r\n";
  145. hasEmpty = true;
  146. }
  147. if (isNull(model.getValue(xreqdesc + "/educhkhngnm"))) {
  148. errMsg += "ED확인자\r\n";
  149. hasEmpty = true;
  150. }
  151. if (isNull(model.getValue(xreqdesc + "/educhkdd"))) {
  152. errMsg += "ED확인일\r\n";
  153. hasEmpty = true;
  154. }
  155. if (isNull(model.getValue(xreqdesc + "/educhkresult"))) {
  156. errMsg += "ED확인결과\r\n";
  157. hasEmpty = true;
  158. }
  159. if (hasEmpty) {
  160. messageBox(errMsg + "\r\n위 항목은 필수입력입니다.", "C000");
  161. return false;
  162. } else {
  163. return true;
  164. }
  165. }
  166. // 저장
  167. function fSave() {
  168. // 필항체크
  169. if (fCheckValidation()) {
  170. // 노드 카피
  171. model.copyNode(xsenddesc, xreqdesc);
  172. // 입력구분 설정
  173. if (isNull(model.getValue(xsenddesc + "/depno"))) {
  174. // 신규
  175. model.makeValue(xsenddesc + "/edittype", "I");
  176. } else {
  177. // 수정
  178. model.makeValue(xsenddesc + "/edittype", "U");
  179. }
  180. model.makeValue(xsenddesc + "/userid", getUserId());
  181. if(submit("TXZHA20102")) {
  182. // 재조회를 위해 설정
  183. model.setValue("/root/init/depno", model.getValue(xreqdesc + "/depno"));
  184. fInitialize();
  185. }
  186. }
  187. }
  188. // 삭제
  189. function fDel() {
  190. // 삭제플래그 설정
  191. model.copyNode(xsenddesc, xreqdesc);
  192. model.makeValue(xsenddesc + "/edittype", "D");
  193. model.makeValue(xsenddesc + "/userid", getUserId());
  194. submit("TXZHA20102");
  195. model.close();
  196. }
  197. // 이하 파일첨부 연동부
  198. function fFileAdd() {
  199. //******파일을 첨부하기 위해 파일열기가 open 되게 한다.
  200. //파일의 크기를 측정한다.
  201. var maxsize = upload1.attribute("filesize");
  202. var name = model.getValue(xreqdesc + "/attfilenm");
  203. if(name != '' || name == '-'){
  204. var fileupdata = messageBox(name + " 파일 수정을" , "S001");
  205. if(fileupdata == '6'){
  206. //파일 삭제
  207. //input박스에 나타난 명을 제거
  208. ipt_attfilenm.value = "";
  209. //파일 저장
  210. //파일을 받아오기 위해 파일열기 팝업창을 띄운다.
  211. var fileopen = window.fileDialog("open","|","false");
  212. var name = fileopen;
  213. //lastIndexOf함수는 \\이것을 뒤어세 검색하여 나오면 앞에 것은 지운다.
  214. var filename = name.lastIndexOf("\\");
  215. //open 파일명를 input박스에 넣는다.
  216. ipt_attfilenm.value = fileopen.substring(filename + 1);
  217. //선택한 파일이 저장버튼을 눌렀을때 저장이 되게 하기 위해 파일 저장 인스턴스에 파일주소를 저장해 둔다.
  218. model.makeValue(xsendfile + "/file", name);
  219. model.refresh();
  220. //파일 크기가 너무 큰경우 메세지를 띄운다.
  221. if (!checkFileSize(upload1)){
  222. ipt_attfilenm.value = "";
  223. messageBox("파일 크기가 최대치(" + maxsize + "Byte)를", "E003");
  224. model.resetInstanceNode(xsendfile + "/file");
  225. }
  226. model.makeValue(xreqdesc + "/fileyn", 'Y');
  227. }else if(fileupdata == '7'){
  228. messageBox(name + " 파일 수정을 하지", "E007");
  229. model.makeValue(xreqdesc + "/fileyn", 'N');
  230. }
  231. }else{
  232. //파일을 받아오기 위해 파일열기 팝업창을 띄운다.
  233. var fileopen = window.fileDialog("open","|","false");
  234. //파일 경로가 아닌 이름만 input박스에 넣기 위한 처리
  235. model.makeValue(xreqdesc + "/attfilenm", fileopen);
  236. var name = fileopen;
  237. //lastIndexOf함수는 \\이것을 뒤어세 검색하여 나오면 앞에 것은 지운다.
  238. var filename = name.lastIndexOf("\\");
  239. //open 파일명를 input박스에 넣는다.
  240. ipt_attfilenm.value = fileopen.substring(filename + 1);
  241. //선택한 파일이 저장버튼을 눌렀을때 저장이 되게 하기 위해 파일 저장 인스턴스에 파일주소를 저장해 둔다.
  242. model.makeValue(xsendfile + "/file", name);
  243. model.refresh();
  244. //파일 크기가 너무 큰경우 메세지를 띄운다.
  245. if (!checkFileSize(upload1)){
  246. ipt_attfilenm.value = "";
  247. messageBox("파일 크기가 최대치(" + maxsize + "Byte)를", "E003");
  248. model.resetInstanceNode(xsendfile + "/file");
  249. }
  250. model.makeValue(xreqdesc + "/fileyn", 'Y');
  251. }
  252. }
  253. function fFileDown(filenm, filepath) {
  254. //파일명이 있는 경우 다운로드
  255. if(filenm != "" && model.getValue(xreqdesc + "/fileyn") == "Y"){
  256. //파일명의 확장자만 받아옴
  257. var fileext = filenm.lastIndexOf(".");
  258. var ext = filenm.substring(fileext +1);
  259. //파일을 다운로드 하기 위해 저장할 창을 띄움
  260. var filesave = window.fileDialog("save","|",false,filenm,ext,"All Files(*.*)|*.*");
  261. //키값을 받아옴
  262. var depno = model.getValue(xreqdesc + "/depno");
  263. //키값을 가지고 DB에 저장된 데이타를 조회하러 간다
  264. if (filesave != "") {
  265. model.download(getActionURL("TRZHA20103") + "&attfilepath=" + filepath + "&filepathcolnm=attfilepath", filesave);
  266. }
  267. } else {
  268. messageBox("파일이 첨부되지 않은상태입니다.", "C000");
  269. }
  270. }
  271. // 배포종류에 따른 입력제어
  272. function fCheckDepType() {
  273. /* AP / DB 공히 정규 및 긴급 배포요청 가능토록 수정
  274. // AP 배포 시 제어
  275. if (model.getValue(xreqdesc + "/deptype") == "1") {
  276. rdo_urgenttype.disabled = false;
  277. ta_reqcomponent.disabled = false;
  278. // DB 배포 시 제어
  279. } else if (model.getValue(xreqdesc + "/deptype") == "2") {
  280. rdo_urgenttype.disabled = true;
  281. ta_reqcomponent.disabled = true;
  282. }
  283. */
  284. }
  285. // 결재처리
  286. function fExeAprv(gubun){
  287. model.setValue("/root/send/reqaprv/reqno", model.getValue("/root/main/reqdesc/depno"));
  288. model.setValue("/root/send/reqaprv/gubun",gubun);
  289. if(submit("TXZHA20002")){
  290. fInitialize();
  291. }
  292. }
  293. // 임의결재팝업표시
  294. function fShowAprvHit(gubun){
  295. // 파라미터 설정
  296. model.setValue("/root/send/reqaprv/reqno", model.getValue("/root/main/reqdesc/depno"));
  297. model.setValue("/root/send/reqaprv/reqdd", model.getValue("/root/main/reqdesc/reqdd"));
  298. model.setValue("/root/send/reqaprv/gubun", gubun);
  299. // 결재팝업표시
  300. grp_aprv.visible = true;
  301. }
  302. // 임의결재팝업표시
  303. function fExeAprvHit(){
  304. if (isNull(model.getValue("/root/send/reqaprv/reqid")) || isNull(model.getValue("/root/send/reqaprv/reqpwd"))) {
  305. messageBox("결재자 또는 인증번호가 입력되지 않았습니다. ", "C000");
  306. return;
  307. }
  308. // 결재처리
  309. if (submit("TXZHA20104")) {
  310. grp_aprv.visible = false;
  311. fInitialize();
  312. }
  313. }
  314. /**
  315. * @desc : 파일 미리보기 버튼 클릭시 이벤트
  316. * @
  317. * @param :
  318. * @return :
  319. * @author :
  320. * @---------------------------------------------------
  321. */
  322. function fFilePreview(filenm, filepath) {
  323. //파일명이 있는 경우 다운로드
  324. if(filenm != "" && model.getValue(xreqdesc + "/fileyn") == "Y"){
  325. var fso, folder;
  326. var temp_path = "C:\\temp2";
  327. FSO = new ActiveXObject("Scripting.FileSystemObject");
  328. // 객체 생성 실패하면 리턴
  329. if (FSO == null)
  330. {
  331. return;
  332. }
  333. // 시스템 드라이브가 없다면..
  334. if (FSO.DriveExists("C") == false)
  335. {
  336. return;
  337. }
  338. // 임시디렉토리가 없으면 생성
  339. if (FSO.FolderExists(temp_path) == false)
  340. {
  341. folder = FSO.CreateFolder(temp_path);
  342. }
  343. //키값을 받아옴
  344. var depno = model.getValue(xreqdesc + "/depno");
  345. //키값을 가지고 DB에 저장된 데이타를 조회하러 간다
  346. model.download(getActionURL("TRZHA20103") + "&attfilepath=" + filepath + "&filepathcolnm=attfilepath" ,temp_path+"\\"+filenm, false, false);
  347. window.exec(temp_path+"\\"+filenm, "");
  348. } else {
  349. messageBox("파일이 첨부되지 않은상태입니다.", "C000");
  350. }
  351. }
  352. function fRedep(){
  353. // 버튼 초기화
  354. btn_acptaprv1.disabled = true;
  355. btn_acptcncl1.disabled = true;
  356. btn_acptaprv2.disabled = true;
  357. btn_acptcncl2.disabled = true;
  358. btn_acptaprv3.disabled = true;
  359. btn_acptcncl3.disabled = true;
  360. btn_acptaprv4.disabled = true;
  361. btn_acptcncl4.disabled = true;
  362. btn_acptaprv5.disabled = true;
  363. btn_acptcncl5.disabled = true;
  364. btn_acptaprv6.disabled = true;
  365. btn_acptcncl6.disabled = true;
  366. // 결재 정보 초기화
  367. ta_acptaprv1.value ="";
  368. ta_acptaprv2.value ="";
  369. ta_acptaprv3.value ="";
  370. ta_acptaprv4.value ="";
  371. ta_acptaprv5.value ="";
  372. ta_acptaprv6.value ="";
  373. btn_save.disabled = false; // 저장 버튼 활성화
  374. cap_depresult.visible = false; // 배포완료 표시 숨기기.
  375. model.makeValue("/root/main/reqdesc/orgdepno", model.getValue("/root/main/reqdesc/depno"));
  376. model.setValue("/root/main/reqdesc/depno" , "");
  377. }
  378. function fCheckReDep(){
  379. var depid = model.getValue("/root/main/reqdesc/depid");
  380. var redepyn = model.getValue("/root/main/reqdesc/redepyn");
  381. if ( redepyn =="Y" || depid == ""){
  382. btn_redep.visible = false;
  383. }else{
  384. btn_redep.visible = true ;
  385. }
  386. }