SYSInputStandardCodeList.jsp 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493
  1. <%--
  2. - FileName : SYSInputStandardCodeList.jsp
  3. - Author : gyeongmo an
  4. - Date : 2014.08.01
  5. - Copyright : Copyright (c) 2014 www.udapsoft.co.kr, Inc.
  6. - All rights reserved.
  7. - Description: 기준코드 등록
  8. --%>
  9. <%@ page contentType="text/html; charset=utf-8" %>
  10. <%@ page import="com.udapsoft.waf.system.HandlerStorage" %>
  11. <%@ page import="com.udapsoft.waf.common.ui.*" %>
  12. <%@ page import="kr.co.udapsoft.common.code.*" %>
  13. <%@ page import="kr.co.hsnc.common.util.*"%>
  14. <%@ page import="kr.co.hsnc.common.sql.*" %>
  15. <%@ include file="/jsp/work/taglib.jsp" %>
  16. <jsp:useBean id="ctx" class="com.udapsoft.waf.system.context.SessionContext" scope="session" />
  17. <%
  18. ctx.init(request, response);
  19. HandlerStorage storage = ctx.getHandlerStorage();
  20. ValueObject params = storage.getParams();
  21. ValueObject user = storage.getUser();
  22. String fevent = storage.getEvent();
  23. %>
  24. <SCRIPT language="javascript" src="/active_x/sheet/IBSheetInfo.js"></SCRIPT>
  25. <SCRIPT language="JavaScript">
  26. /*예약함수*/
  27. var sheet1;
  28. var sheet1Row;
  29. var sheet1PageNo = 1;
  30. var sheet2;
  31. var sheet2Row;
  32. var sheet2PageNo = 1;
  33. var pageLastRowIndex = 1;
  34. var validationResult = false;
  35. var filterShow = false;
  36. //마지막으로 선택된 행의 번호를 기억하고 있음
  37. var CurMasterRow = 0;
  38. var CurMasterRow1 = 0;
  39. function _onReady(){
  40. grid1Init(sheet1);
  41. grid2Init(sheet2);
  42. jQuery("#btnExplanationAdd").click(function() {
  43. /*
  44. var f = document.form1;
  45. var colNames ="";
  46. var colTexts ="";
  47. // 컬럼SAVENAME 가져오기 : 숨김컬럼 제외, check이름가진 컬럼 제외, sort_no이름가진 컬럼 제외
  48. colNames = "DETAILCD|DETAILNM|DETAILSORTNM|CHG_CODE01|CHG_CODE02|CHG_CODE03|CHG_CODE04|CHG_CODE05|"+
  49. "CHG_CODE06|CHG_CODE07|CHG_CODE08|CHG_CODE09|CHG_CODE10|CHG_CODE11|CHG_CODE12|CHG_CODE13|CHG_CODE14|CHG_CODE15|CHG_CODE16|CHG_CODE17|"+
  50. "CHG_CODE18|CHG_CODE19|CHG_CODE20|REMARK";
  51. // 컬럼명 가져오기
  52. colTexts = "내역코드|내역코드명|약어명|변환코드01|변환코드02|변환코드03|변환코드04|변환코드05|변환코드06|변환코드07"+
  53. "|변환코드08|변환코드09|변환코드10|변환코드11|변환코드12|변환코드13|변환코드14|변환코드15|변환코드16|변환코드17|변환코드18|변환코드19|변환코드20"+
  54. "|REMARK|기준코드";
  55. var arg = new Array();
  56. arg[0] = this.window; // window
  57. arg[1] = sheet2; // SHEET 명
  58. arg[2] = colNames; // ColName
  59. arg[3] = colTexts; // ConText
  60. var m_result = window.showModalDialog("/sycs/code/CommCodeDescList.screen?fevent=GET_DESC&p_table_nm=COM911T&p_base_cd="+f.p_basecd.value, arg, 'dialogWidth:800px;dialogHeight:450px; center:yes; help:no; status:no; scroll:auto; resizable:yes');
  61. */
  62. var f = document.form1;
  63. var win_id = "_searchCommCodeDescList";
  64. var link = "/sycs/code/CommCodeDescList.screen";
  65. link += "?pop_win_id="+win_id+"&p_table_nm=COM911T&p_base_cd="+f.p_basecd.value;
  66. fLayerPop(win_id, link, 800,400, '', '', 'NO');
  67. });
  68. jQuery("#btnSearch").click(function() {
  69. // 기준코드상세목록 조회
  70. setWorkGubun('M');
  71. // 기준코드목록 조회
  72. jQuery("#fevent").val("GET_STANDARDCODE_LIST");
  73. var url = Modular.model.PageContext.CONTEXT_ROOT + "/sycs/code/SYSInputStandardCodeList_sheet.screen";
  74. Modular.view.IBSheet7.doSearch(sheet1, url, jQuery("#form1"), 10, "");
  75. });
  76. jQuery("#btnAdd").click(function() {
  77. var f = document.form1;
  78. var msg = '기준코드가 없습니다. 기준코드 목록을 선택하세요.';
  79. if (f.work_gubun.value == 'M') { // 기준코드목록에 추가
  80. f.p_basecd.value = "";
  81. doInsert_code_list(sheet1);
  82. } else if (f.work_gubun.value == 'D') { // 기준코드상세목록에 추가
  83. if (f.p_basecd.value == '') {
  84. alert(msg);
  85. return;
  86. }
  87. doInsert_detail_list(sheet2);
  88. }
  89. });
  90. jQuery("#btnSave").click(function() {
  91. if(sheet1.RowCount("I") > 0 || sheet1.RowCount("U") > 0 || sheet1.RowCount("D") > 0) {
  92. CurMasterRow1 = sheet1.GetSelectRow();
  93. doSave1();
  94. }
  95. if(sheet2.RowCount("I") > 0 || sheet2.RowCount("U") > 0 || sheet2.RowCount("D") > 0) {
  96. doSave2();
  97. }
  98. });
  99. autoResize();
  100. jQuery("#btnSearch").click();
  101. }
  102. function doSave1() {
  103. jQuery("#fevent").val("SAVE_STANDARDCODE_LIST");
  104. var url = Modular.model.PageContext.CONTEXT_ROOT + "/sycs/code/SYSInputStandardCodeList_sheet.screen";
  105. var result = Modular.view.IBSheet7.doSave(sheet1, url, jQuery("#form1"), false);
  106. }
  107. function doSave2() {
  108. //순번 다시 지정
  109. if(sheet2.RowCount("D") > 0){
  110. var temp_no = 1;
  111. for(i=1; i<=sheet2.RowCount(); i++){
  112. if(sheet2.GetCellValue(i, "STATUS") != "D") {
  113. if(sheet2.GetCellText(i,"SORT_NO") != temp_no){
  114. sheet2.SetCellText(i,"SORT_NO", temp_no);
  115. sheet2.SetCellValue(i, "STATUS", "U");
  116. }
  117. temp_no++
  118. }
  119. }
  120. }
  121. jQuery("#fevent").val("SAVE_STANDARDCODEDETAIL_LIST");
  122. var url = Modular.model.PageContext.CONTEXT_ROOT + "/sycs/code/SYSInputStandardCodeListDetail_sheet.screen";
  123. var result = Modular.view.IBSheet7.doSave(sheet2, url, jQuery("#form1"), false);
  124. }
  125. function searchCommCodeDescList(){
  126. fLayerPopClose('_searchCommCodeDescList');
  127. }
  128. function grid1Init(sheetName){
  129. var init_sheet = {};
  130. init_sheet.Cfg = {SearchMode:2, Page:10};
  131. init_sheet.Cols = [
  132. {Header:'삭제', Type:"DelCheck", SaveName:"DEL_CHECK", Width:50, Align:"Center"},
  133. {Header:'순번', Type:"Seq", SaveName:"NO", Width:50, Align:"Center"},
  134. {Header:'Status', Type:"Status", SaveName:"STATUS", Width:0, Align:"Center", Hidden:"True"},
  135. {Header:'기준코드', Type:"Text", SaveName:"BASECD", Width:200, Align:"Center", EditLen:20, KeyField:"True"},
  136. {Header:'기준코드명', Type:"Text", SaveName:"BASENM", Width:350, Align:"Left", EditLen:200},
  137. {Header:'정렬방법', Type:"Combo", SaveName:"SORT_METHOD", Width:80, Align:"Center", ComboText:"순번|코드명|한글명|영문명|등록일시", ComboCode:"1|2|3|4|5", Hidden:"True"},
  138. {Header:'길이', Type:"Text", SaveName:"BASELENGTH", Width:60, Align:"Center"},
  139. {Header:'비고', Type:"Text", SaveName:"REMARK", Width:500, Align:"Left", EditLen:1000}
  140. ];
  141. init_sheet.HeaderMode = {Sort:1};
  142. IBS_InitSheet(sheetName, init_sheet);
  143. sheetName.SetDataAutoTrim(0);
  144. //sheetName.SetEditable(false);
  145. setGrid1Size();
  146. }
  147. function grid2Init(sheetName){
  148. var init_sheet = {};
  149. init_sheet.Cfg = {SearchMode:2, Page:10};
  150. init_sheet.Cols = [
  151. {Header:'삭제', Type:"DelCheck", SaveName:"DEL_CHECK", Width:50, Align:"Center"},
  152. {Header:'순번', Type:"Text", SaveName:"NO", Width:40, Align:"Center", Hidden:"True"},
  153. {Header:'상태', Type:"Status", SaveName:"STATUS", Width:0, Align:"Center", Hidden:"True"},
  154. {Header:'순번', Type:"Text", SaveName:"SORT_NO", Width:50, Align:"Center"},
  155. {Header:'내역코드', Type:"Text", SaveName:"DETAILCD", Width:80, Align:"Center", EditLen:10, KeyField:"True"},
  156. {Header:'내역코드명', Type:"Text", SaveName:"DETAILNM", Width:200, Align:"Left", EditLen:200, KeyField:"True"},
  157. {Header:'약어명', Type:"Text", SaveName:"DETAILSORTNM", Width:150, Align:"Left", EditLen:100},
  158. {Header:'변환코드01', Type:"Text", SaveName:"CHG_CODE01", Width:150, Align:"Left", EditLen:100},
  159. {Header:'변환코드02', Type:"Text", SaveName:"CHG_CODE02", Width:150, Align:"Left", EditLen:100},
  160. {Header:'변환코드03', Type:"Text", SaveName:"CHG_CODE03", Width:150, Align:"Left", EditLen:100},
  161. {Header:'변환코드04', Type:"Text", SaveName:"CHG_CODE04", Width:150, Align:"Left", EditLen:100},
  162. {Header:'변환코드05', Type:"Text", SaveName:"CHG_CODE05", Width:150, Align:"Left", EditLen:100},
  163. {Header:'변환코드06', Type:"Text", SaveName:"CHG_CODE06", Width:150, Align:"Left", EditLen:100},
  164. {Header:'변환코드07', Type:"Text", SaveName:"CHG_CODE07", Width:150, Align:"Left", EditLen:100},
  165. {Header:'변환코드08', Type:"Text", SaveName:"CHG_CODE08", Width:150, Align:"Left", EditLen:100},
  166. {Header:'변환코드09', Type:"Text", SaveName:"CHG_CODE09", Width:150, Align:"Left", EditLen:100},
  167. {Header:'변환코드10', Type:"Text", SaveName:"CHG_CODE10", Width:150, Align:"Left", EditLen:100},
  168. {Header:'변환코드11', Type:"Text", SaveName:"CHG_CODE11", Width:150, Align:"Left", EditLen:100},
  169. {Header:'변환코드12', Type:"Text", SaveName:"CHG_CODE12", Width:150, Align:"Left", EditLen:100},
  170. {Header:'변환코드13', Type:"Text", SaveName:"CHG_CODE13", Width:150, Align:"Left", EditLen:100},
  171. {Header:'변환코드14', Type:"Text", SaveName:"CHG_CODE14", Width:150, Align:"Left", EditLen:100},
  172. {Header:'변환코드15', Type:"Text", SaveName:"CHG_CODE15", Width:150, Align:"Left", EditLen:100},
  173. {Header:'변환코드16', Type:"Text", SaveName:"CHG_CODE16", Width:150, Align:"Left", EditLen:100},
  174. {Header:'변환코드17', Type:"Text", SaveName:"CHG_CODE17", Width:150, Align:"Left", EditLen:100},
  175. {Header:'변환코드18', Type:"Text", SaveName:"CHG_CODE18", Width:150, Align:"Left", EditLen:100},
  176. {Header:'변환코드19', Type:"Text", SaveName:"CHG_CODE19", Width:150, Align:"Left", EditLen:100},
  177. {Header:'변환코드20', Type:"Text", SaveName:"CHG_CODE20", Width:150, Align:"Left", EditLen:100},
  178. {Header:'REMARK', Type:"Text", SaveName:"REMARK", Width:150, Align:"Left", EditLen:1000},
  179. {Header:'기준코드', Type:"Text", SaveName:"BASECD", Width:80, Align:"Center", Hidden:"True", EditLen:20}
  180. ];
  181. init_sheet.HeaderMode = {Sort:1};
  182. IBS_InitSheet(sheetName, init_sheet);
  183. sheetName.SetDataAutoTrim(0);
  184. //sheetName.SetEditable(false);
  185. //setGrid2Size();
  186. }
  187. function sheet1_OnSearchEnd(code, message) {
  188. if(code == 0) {
  189. setGrid1Size();
  190. // 조회시 기준코드목록의 첫번째 기준코드 코드값을 얻어온다.
  191. if(CurMasterRow1 < 1) {
  192. sheet1.SetSelectRow(1);
  193. getBaseCode(1, 3 );
  194. } else {
  195. sheet1.SetSelectRow(CurMasterRow1);
  196. getBaseCode(CurMasterRow1, 3 );
  197. }
  198. CurMasterRow1 = 1;
  199. //마지막으로 선택된 행이 없음
  200. CurMasterRow= 0;
  201. doSearch_detail_list();
  202. } else {
  203. //조회 에러 수행
  204. alert(message);
  205. }
  206. }
  207. function sheet2_OnSearchEnd(code, message) {
  208. if(code == 0) {
  209. //setGrid2Size();
  210. /*
  211. var title = sheet2.GetEtcData("head_title");
  212. alert(title);
  213. var titleSplit = title.split('|');
  214. for(var i = 0; i < titleSplit.length; i++) {
  215. sheet2.SetCellText(0, i) = titleSplit[i];
  216. }
  217. */
  218. } else {
  219. //조회 에러 수행
  220. alert(message);
  221. }
  222. }
  223. function sheet1_OnSaveEnd(code, msg) {
  224. if(code >= 0) {
  225. alert("기준코드목록을 처리 완료했습니다.");
  226. jQuery("#btnSearch").click();
  227. } else {
  228. alert(msg);
  229. }
  230. }
  231. function sheet2_OnSaveEnd(code, msg) {
  232. if(code >= 0) {
  233. alert("상세내역을 처리 완료했습니다.");
  234. doSearch_detail_list();
  235. } else {
  236. alert(msg);
  237. }
  238. }
  239. /**
  240. * IBSheet size setting
  241. */
  242. function setGrid1Size() {
  243. sheet1.FitColWidth();
  244. }
  245. function setGrid2Size() {
  246. sheet2.FitColWidth();
  247. }
  248. // 선택된 기준코드를 설정
  249. function getBaseCode(row, col ) {
  250. var f = document.form1;
  251. sText = sheet1.GetCellText(row,col);
  252. f.p_basecd.value = sText;
  253. }
  254. // 기준코드목록 또는 기준코드상세목록 설정(기준코드목록 : 'M', 기준코드상세목록 : 'D')
  255. function setWorkGubun(workgubun) {
  256. var f = document.form1;
  257. f.work_gubun.value = workgubun;
  258. }
  259. // 기준목록에 대한 detail 목록 조회
  260. function doSearch_detail_list() {
  261. var f = document.form1;
  262. f.isSubmit = false;
  263. jQuery("#fevent").val("GET_STANDARDCODEDETAIL_LIST");
  264. var url = Modular.model.PageContext.CONTEXT_ROOT + "/sycs/code/SYSInputStandardCodeListDetail_sheet.screen";
  265. Modular.view.IBSheet7.doSearch(sheet2, url, jQuery("#form1"), 10, "");
  266. }
  267. // 기준자료 목록 레코드추가
  268. function doInsert_code_list(sheetObj) {
  269. var f = document.form1;
  270. sheetObj.DataAutoTrim = false;
  271. var rowIndex = sheetObj.DataInsert();
  272. f.p_basecd.value = "";
  273. sheet2.RemoveAll();
  274. sheet1.SelectCell(rowIndex, 3, false, false);
  275. }
  276. // 기준목록에 대한 detail 목록 레코드추가
  277. function doInsert_detail_list(sheetObj) {
  278. var f = document.form1;
  279. var msg = '기준코드 목록을 기준코드를 등록하세요.';
  280. if(f.p_basecd.value == "") {
  281. alert(msg);
  282. return;
  283. }
  284. sheetObj.DataAutoTrim = false;
  285. var rowIndex = sheetObj.DataInsert();
  286. //경영정보 고도화 코드통합 작업 순번 추가 2010.09.06
  287. sheetObj.SetCellText(rowIndex,"SORT_NO", sheetObj.RowCount());
  288. sheetObj.SetCellText(rowIndex,"BASECD", f.p_basecd.value);
  289. setWorkGubun('D');
  290. sheet2.SelectCell(rowIndex, 3, false, false);
  291. }
  292. /*조회조건 에터키 이력시 조회*/
  293. function check_Enter(sheetObj)
  294. {
  295. if (event.keyCode==13){
  296. jQuery("#btnSearch").click();
  297. }
  298. }
  299. function sheet1_OnClick(Row, Col, Value, CellX, CellY, CellW, CellH) {
  300. // 현재선택한 체크박스이면 이전거는 지우고 현재것만 체크함.
  301. var sName = sheet1.ColSaveName(0, Col);
  302. if ( sName == "DEL_CHECK") {
  303. if (sheet1.CheckedRows(0) > 0) {
  304. var sRow = sheet1.FindStatusRow("D");
  305. // 받은 결과를 배열로 생성한다.
  306. var arRow = sRow.split(";");
  307. for(var i=0; i<arRow.length; i++) {
  308. if(Row != arRow[i]) {
  309. sheet1.SetCellValue(arRow[i],0, 0 );
  310. }
  311. }
  312. }
  313. }
  314. // 기준코드목록클릭시 해당로우의 기준코드 코드값을 얻어온다.
  315. getBaseCode(Row, 3 );
  316. setWorkGubun('M');
  317. if (CurMasterRow != Row) {
  318. // 기준코드 상세목록에 입력/수정/삭제된 데이터가 한건이라도 있으면 저장함수를 호출한다.
  319. if(sheet2.RowCount("I") > 0 || sheet2.RowCount("U") > 0 || sheet2.RowCount("D") > 0) {
  320. if( confirm("기준코드 상세목록을 저장하시겠습니까?")) {
  321. doSave2();
  322. }
  323. }
  324. // 마스터가 세로 생긴로우인지를 체크한다.
  325. if(sheet1.GetCellValue(Row, "STATUS") != "I") {
  326. doSearch_detail_list();
  327. } else {
  328. sheet2.RemoveAll();
  329. }
  330. sheet1.SelectCell(Row, Col, false, Value);
  331. }
  332. // 마지막으로 선택된 행을 저장한다.
  333. CurMasterRow = Row;
  334. }
  335. function sheet2_OnClick(Row, Col, Value, CellX, CellY, CellW, CellH) {
  336. setWorkGubun('D');
  337. // 마지막으로 선택된 행을 0 으로 설정한다.
  338. CurMasterRow = 0;
  339. }
  340. function sheet2_OnMouseDown(Button, Shift, X, Y) {
  341. setWorkGubun('D');
  342. // 마지막으로 선택된 행을 0 으로 설정한다.
  343. CurMasterRow = 0;
  344. }
  345. function sheet1_OnChange(Row, Col, Value, OldValue, RaiseFlag) {
  346. if(sheet1.ColSaveName(0, Col) == "BASECD") {
  347. if(sheet1.GetCellValue(Row, "STATUS") != "I") {
  348. alert("기준코드는 수정할 수 없습니다.");
  349. sheet1.SetCellValue(Row, Col, OldValue, 0);
  350. return;
  351. }
  352. }
  353. }
  354. function sheet2_OnChange(Row, Col, Value, OldValue, RaiseFlag) {
  355. if(sheet2.ColSaveName(0, Col) == "DETAILCD") {
  356. if(sheet2.GetCellValue(Row, "STATUS") != "I") {
  357. alert("내역코드는 수정할 수 없습니다.");
  358. sheet2.SetCellValue(Row, Col, OldValue, 0);
  359. return;
  360. }
  361. }
  362. }
  363. function sheet1_OnSmartResize(Width, Height) {
  364. sheet1.FitColWidth();
  365. autoResize();
  366. }
  367. function autoResize(){
  368. var t1_height = document.getElementById("search-table").scrollHeight + document.getElementById("title").scrollHeight + 24;
  369. var iframeHeight= document.body.scrollHeight - t1_height - 350;
  370. sheet1.SetSheetHeight(iframeHeight);
  371. }
  372. document.body.onresize = addEvent( document.body.onresize, "autoResize()");
  373. </SCRIPT>
  374. <modular:search id="form1">
  375. <modular:key id="fevent" />
  376. </modular:search>
  377. <form id="form1" name="form1" method="post" modular:type="search" style="width:100%;height:100%;">
  378. <INPUT type="hidden" name="fevent">
  379. <input type=hidden name=p_basecd value="">
  380. <input type=hidden name=work_gubun value='M'>
  381. <input type=hidden name=work_flag value='F'>
  382. <input type=hidden name=title value="">
  383. <INPUT type="hidden" name="p_table_nm" value="COM911T">
  384. <INPUT type="hidden" name="p_head_nm" value="">
  385. <INPUT type="hidden" name="p_save_nm" value="">
  386. <div align="left" id="title">
  387. <ul>
  388. <li>기준코드 등록</li>
  389. </ul>
  390. </div>
  391. <!-- 검색조건 시작 -->
  392. <table id="search-table" class="search-form-table">
  393. <colgroup>
  394. <col width="100" />
  395. <col width="*" />
  396. <col width="300" />
  397. </colgroup>
  398. <tr>
  399. <th>기준코드명</th>
  400. <td>
  401. <INPUT type="text" name='p_basenm' class="input" value="<%= params.get("p_basenm") %>" style="width:60%" >
  402. </td>
  403. <td class="button" rowspan="2">
  404. <span class="btnSearch center"><a href="javascript:void(0);" id="btnExplanationAdd">설명추가</a></span>
  405. <span class="btnSearch center"><a href="javascript:void(0);" id="btnSearch">검색</a></span>
  406. <span class="btnSearch center"><a href="javascript:void(0);" id="btnAdd">추가</a></span>
  407. <span class="btnSearch center"><a href="javascript:void(0);" id="btnSave">저장</a></span>
  408. </td>
  409. </tr>
  410. </table>
  411. <!-- 검색조건 종료 -->
  412. <div id="sheet1_div" style="padding-top:5px; height: auto; min-height: 400px; overflow: auto;">
  413. <script>createIBSheet('sheet1','100%', '400px');</script>
  414. </div>
  415. <br/>
  416. <div id="sheet2_div" style="padding-top:5px; height: auto; min-height: 280px; overflow: auto;">
  417. <script>createIBSheet('sheet2','100%', '280px');</script>
  418. </div>
  419. </FORM>