ITP_SYSTEM03010.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  1. const SYSTEM03010_GRID_ID = '#ITP_SYSTEM03010_jqGrid';
  2. const SYSTEM03010_GRID_LIST = '#ITP_SYSTEM03010_jqGrid_list';
  3. const SYSTEM03010_GRID_PAGER = '#ITP_SYSTEM03010_jqGridPager';
  4. const SYSTEM03010_GRID_EMPTY = '#ITP_SYSTEM03010_jqGridEmpty';
  5. let SYSTEM03010_GRID_LAST_ROW_ID;
  6. let MENU_MENU_SEARCH = '/api/menu/menu-search';
  7. let MENU_INFO_MENU = '/api/menu/info-menu';
  8. let ACT_SAVE_ACTION = '/api/act/save-action';
  9. let ACT_DETAIL_GRID_LIST = '/api/act/detail-grid-list';
  10. require(['config'], function() {
  11. require([
  12. 'jquery'
  13. ], function($) {
  14. // 버튼 권한설정
  15. fn_proc_btn_auth('SYSTEM03010');
  16. // 공통코드
  17. fn_make_input_common_cd(CODE_LIST, 'ACT_TP_CD', 'ITP_FORM_SYSTEM03010_ACT_TP_CD', true);
  18. itp_fn_SYSTEM03010_search();
  19. itp_fn_jqgrid_resize('#ITP_SYSTEM03010_jqGrid', '#ITP_SYSTEM03010_jqGrid_list', 'sm');
  20. itp_fn_SYSTEM03010_detail_grid.init();
  21. itp_fn_fire_window_resize();
  22. $('#ITP_BTN_SYSTEM03010_SRH').on('click', function() {
  23. itp_fn_SYSTEM03010_search();
  24. });
  25. $('#ITP_AJAX_SYSTEM03010_SRH_CONTAINER').on('click', '.list-group .list-group-item', function() {
  26. const $this = $(this);
  27. var itemFn = {
  28. callBack: function(args) {
  29. $('#ITP_AJAX_SYSTEM03010_SRH_CONTAINER .list-group .list-group-item').removeClass('active');
  30. $this.addClass('active');
  31. const txt = $this.attr('data-itp-param-key');
  32. itp_fn_SYSTEM03010_detail(txt);
  33. }
  34. };
  35. if (itp_fn_check_grid_is_writing('#ITP_SYSTEM03010_jqGrid')) {
  36. itp_fn_modal_confirm(ITP_MSG_LOCALE.message.ajax.cancelData, itemFn, $this);
  37. } else {
  38. itemFn.callBack($this);
  39. }
  40. });
  41. $('#ITP_BTN_SYSTEM03010_SAVE').on('click', function() {
  42. const formId = '#ITP_FORM_SYSTEM03010';
  43. if (itp_fn_grid_validate_row('#ITP_SYSTEM03010_jqGrid')) {
  44. let gridInsertData = [];
  45. let gridUpdateData = [];
  46. let gridDeleteData = [];
  47. const rowData = $('#ITP_SYSTEM03010_jqGrid').getRowData();
  48. const keyValue = $(formId + '_MENU_NO').val();
  49. $.each(rowData, function(key, value) {
  50. if (value.viewCd != 'R') {
  51. value.menuNo = keyValue;
  52. if (value.viewCd == 'C') {
  53. gridInsertData.push(value);
  54. } else if (value.viewCd == 'U') {
  55. gridUpdateData.push(value);
  56. } else if (value.viewCd == 'D') {
  57. gridDeleteData.push(value);
  58. }
  59. }
  60. });
  61. let param = $(formId + '_DETAIL').serializeObject();
  62. param.gridInsertData = gridInsertData;
  63. param.gridUpdateData = gridUpdateData;
  64. param.gridDeleteData = gridDeleteData;
  65. console.log(param); return;
  66. var searhFn = function() {
  67. var keyword = {keyword: $('#ITP_KEYWORD_SYSTEM03010_INPUT').val()};
  68. var param = $('#ITP_SYSTEM03010_ADV_SRH_FORM').serialize() + '&' + $.param(keyword);
  69. fn_ajax_call(MENU_MENU_SEARCH, param, itp_fn_SYSTEM03010_search_callback, 'GET');
  70. };
  71. fn_ajax_call(ACT_SAVE_ACTION, JSON.stringify(param), searhFn, 'POST');
  72. }
  73. });
  74. $(document).on('change', SYSTEM03010_GRID_ID + ' select[name=actTpCd]', function() {
  75. var actTpCd = $(this).find('option:selected').val();
  76. var menuId = $('#ITP_FORM_SYSTEM03010_MENU_ID').val();
  77. $(this).closest("tr").find("input[name=actId]").val(menuId + '_' + actTpCd);
  78. });
  79. });
  80. });
  81. var itp_fn_SYSTEM03010_search = function() {
  82. var searhFn = {
  83. callBack: function(args) {
  84. var keyword = {keyword: $('#ITP_KEYWORD_SYSTEM03010_INPUT').val()};
  85. var param = $('#ITP_SYSTEM03010_ADV_SRH_FORM').serialize() + '&' + $.param(keyword);
  86. fn_ajax_call(MENU_MENU_SEARCH, param, itp_fn_SYSTEM03010_search_callback, 'GET');
  87. }
  88. };
  89. if (itp_fn_check_grid_is_writing('#ITP_SYSTEM03010_jqGrid')) {
  90. itp_fn_modal_confirm(ITP_MSG_LOCALE.message.ajax.cancelData, searhFn, null);
  91. } else {
  92. searhFn.callBack();
  93. }
  94. };
  95. var itp_fn_SYSTEM03010_search_callback = function(result) {
  96. $('#ITP_SYSTEM03010_TREEVIEW').empty();
  97. $.each(result.searchList, function(index, item) {
  98. if(item.level == 1) { // 최상위메뉴
  99. $('#ITP_SYSTEM03010_TREEVIEW').append($('#ITP_SYSTEM03010_MENUROWCOPY').val());
  100. $('#ITP_SYSTEM03010_TREEVIEW li:last').append('<ul id="ITP_SYSTEM03010_LVL2_LIST"></ul>');
  101. $('#ITP_SYSTEM03010_TREEVIEW .list-group-item:first').attr('data-itp-param-key', item.menuNo);
  102. $('#ITP_SYSTEM03010_TREEVIEW .list-group-item:first').attr('data-level', item.level);
  103. $('#ITP_SYSTEM03010_TREEVIEW .list-group-item:first').find('.fnMenuNm').html(item.menuNm);
  104. $('#ITP_SYSTEM03010_TREEVIEW .list-group-item:first').find('.fnUseYnNm').html(item.useYnNm);
  105. } else if(item.level == 2) {
  106. $('#ITP_SYSTEM03010_LVL2_LIST').append($('#ITP_SYSTEM03010_MENUROWCOPY').val());
  107. $('#ITP_SYSTEM03010_LVL2_LIST .list-group-item:last').attr('data-itp-param-key', item.menuNo);
  108. $('#ITP_SYSTEM03010_LVL2_LIST .list-group-item:last').attr('data-level', item.level);
  109. $('#ITP_SYSTEM03010_LVL2_LIST .list-group-item:last').find('.fnMenuNm').html(item.menuNm);
  110. $('#ITP_SYSTEM03010_LVL2_LIST .list-group-item:last').find('.fnUseYnNm').html(item.useYnNm);
  111. if(item.bmenuCnt > 0) {
  112. $('#ITP_SYSTEM03010_LVL2_LIST li:last').append('<ul class="fnLvl3List"></ul>');
  113. $('#ITP_SYSTEM03010_LVL2_LIST .fnLvl3List:last').attr('data-menu-no', item.menuNo);
  114. }
  115. } else if(item.level == 3) {
  116. $('#ITP_SYSTEM03010_LVL2_LIST li').each(function() {
  117. if($(this).find('.fnLvl3List').data('menuNo') == item.topMenuNo) {
  118. $(this).find('.fnLvl3List').append($('#ITP_SYSTEM03010_MENUROWCOPY').val());
  119. $(this).find('.fnLvl3List .list-group-item:last').attr('data-itp-param-key', item.menuNo);
  120. $(this).find('.fnLvl3List .list-group-item:last').attr('data-level', item.level);
  121. $(this).find('.fnLvl3List .list-group-item:last').find('.fnMenuNm').html(item.menuNm);
  122. $(this).find('.fnLvl3List .list-group-item:last').find('.fnUseYnNm').html(item.useYnNm);
  123. if(item.bmenuCnt > 0) {
  124. $(this).find('.fnLvl3List li:last').append('<ul class="fnLvl4List"></ul>');
  125. $(this).find('.fnLvl3List .fnLvl4List:last').attr('data-menu-no', item.menuNo);
  126. }
  127. }
  128. });
  129. } else if(item.level == 4) {
  130. $('#ITP_SYSTEM03010_LVL2_LIST li').each(function() {
  131. $(this).find('.fnLvl3List li').each(function() {
  132. if($(this).find('.fnLvl4List').data('menuNo') == item.topMenuNo) {
  133. $(this).find('.fnLvl4List').append($('#ITP_SYSTEM03010_MENUROWCOPY').val());
  134. $(this).find('.fnLvl4List .list-group-item:last').attr('data-itp-param-key', item.menuNo);
  135. $(this).find('.fnLvl4List .list-group-item:last').attr('data-level', item.level);
  136. $(this).find('.fnLvl4List .list-group-item:last').find('.fnMenuNm').html(item.menuNm);
  137. $(this).find('.fnLvl4List .list-group-item:last').find('.fnUseYnNm').html(item.useYnNm);
  138. }
  139. });
  140. });
  141. }
  142. });
  143. $('#ITP_SYSTEM03010_TREEVIEW').treed();
  144. const item = $('#ITP_SYSTEM03010_TREEVIEW').find('.list-group-item').first();
  145. const txt = item.attr('data-itp-param-key');
  146. item.addClass('active');
  147. itp_fn_SYSTEM03010_detail(txt);
  148. };
  149. var itp_fn_SYSTEM03010_detail = function(key) {
  150. var menuNo = {menuNo: key};
  151. var param = $.param(menuNo);
  152. fn_ajax_call(MENU_INFO_MENU, param, itp_fn_SYSTEM03010_detail_callback, 'GET');
  153. };
  154. var itp_fn_SYSTEM03010_detail_callback = function(result) {
  155. // 정보표시
  156. // $('#ITP_FORM_SYSTEM03010_VIEW_CD').val('U');
  157. $('#ITP_FORM_SYSTEM03010_MENU_NO').val(result.menuNo);
  158. $('#ITP_FORM_SYSTEM03010_MENU_ID').val(result.menuId);
  159. $('#ITP_FORM_SYSTEM03010_MENU_NM').val(result.menuNm);
  160. $('#ITP_FORM_SYSTEM03010_CONN_URL').val(result.connUrl);
  161. // 코드 상세리스트 조회
  162. const key = {menuNo: result.menuNo, gridSize: $.jgrid.defaults.rowNum};
  163. itp_fn_SYSTEM03010_detail_grid.unload();
  164. itp_fn_SYSTEM03010_detail_grid.callBack(key);
  165. };
  166. var itp_fn_SYSTEM03010_detail_grid = {
  167. init: function() {
  168. $('body').on('click', function(e) {
  169. var gridId = SYSTEM03010_GRID_ID.replace('#', '');
  170. itp_fn_grid_reset_selection(e, SYSTEM03010_GRID_LAST_ROW_ID, gridId, 'SYSTEM03010');
  171. });
  172. $('#ITP_BTN_SYSTEM03010_ADDROW').on('click', function() {
  173. $(SYSTEM03010_GRID_EMPTY).hide();
  174. SYSTEM03010_GRID_LAST_ROW_ID = itp_fn_grid_add_row(SYSTEM03010_GRID_ID, undefined, ['actionId']);
  175. });
  176. $('#ITP_BTN_SYSTEM03010_DELROW').on('click', function() {
  177. itp_fn_grid_del_row(SYSTEM03010_GRID_ID);
  178. });
  179. },
  180. callBack: function(args) {
  181. $(SYSTEM03010_GRID_ID).jqGrid({
  182. colModel: [
  183. {
  184. index: 'VIEW_CD', name: 'viewCd',
  185. label: ITP_MSG_LOCALE.label.viewCd,
  186. width: '10', fixed: false, align: 'center',
  187. sortable: false, hidden: true
  188. },
  189. {
  190. index: 'MENU_NO', name: 'menuNo',
  191. label: ITP_MSG_LOCALE.label.menuNumber,
  192. width: '10', fixed: false, align: 'center',
  193. sortable: false, hidden: true
  194. },
  195. {
  196. index: 'ACT_ID', name: 'actId',
  197. label: ITP_MSG_LOCALE.label.actionId,
  198. width: '12', fixed: false, align: 'center',
  199. sortable: false, editable: true, edittype: 'text',
  200. editrules: {required: true},
  201. editoptions: {maxlength: 30}
  202. },
  203. {
  204. index: 'ACT_TP_CD', name: 'actTpCd',
  205. label: ITP_MSG_LOCALE.label.actionType,
  206. width: '7', fixed: false, align: 'center',
  207. sortable: false, editable: true, formatter: 'select', edittype: 'select',
  208. editoptions: {value: $('#ITP_FORM_SYSTEM03010_ACT_TP_CD').val()},
  209. editrules: {required: true}
  210. },
  211. {
  212. index: 'ACT_NM', name: 'actNm',
  213. label: ITP_MSG_LOCALE.label.actionName,
  214. width: '13', fixed: false, align: 'center',
  215. sortable: false, editable: true, edittype: 'text',
  216. editrules: {required: true},
  217. editoptions: {maxlength: 128}
  218. },
  219. {
  220. index: 'WRITE_YN', name: 'writeYn',
  221. label: ITP_MSG_LOCALE.label.writeYn,
  222. width: '8', fixed: false, align: 'center',
  223. sortable: false, editable: true, formatter: 'checkbox', edittype: 'checkbox',
  224. editoptions: {value: 'Y:N', defaultValue: 'Y'},
  225. editrules: {required: true}
  226. },
  227. {
  228. index: 'USE_YN', name: 'useYn',
  229. label: ITP_MSG_LOCALE.label.useYn,
  230. width: '8', fixed: false, align: 'center',
  231. sortable: false, editable: true, formatter: 'checkbox', edittype: 'checkbox',
  232. editoptions: {value: 'Y:N', defaultValue: 'Y'},
  233. editrules: {required: true}
  234. }
  235. ],
  236. loadBeforeSend: function(jqXHR) {
  237. jqXHR.setRequestHeader('X-AUTH-TOKEN', CONN_KEY);
  238. },
  239. postData: JSON.stringify(args),
  240. url: DOMAIN + ACT_DETAIL_GRID_LIST,
  241. pager: SYSTEM03010_GRID_PAGER,
  242. rowNum: '',
  243. onCellSelect: function(rowId, cellIdx, cellValue) {
  244. SYSTEM03010_GRID_LAST_ROW_ID = itp_fn_set_data_editable(rowId, cellIdx, SYSTEM03010_GRID_LAST_ROW_ID, SYSTEM03010_GRID_ID, ['actionId']);
  245. },
  246. loadComplete: function(data) {
  247. console.log(data);
  248. itp_fn_grid_load_complete(data, SYSTEM03010_GRID_ID, false, undefined, 'SYSTEM03010');
  249. },
  250. loadError: function(jqXHR, textStatus, errorThrown) {
  251. itp_fn_grid_load_error(jqXHR, textStatus, errorThrown);
  252. }
  253. }).navGrid(SYSTEM03010_GRID_PAGER, ITP_GRID_NAV_DEFAULTS.navGrid);
  254. },
  255. unload : function() {
  256. $.jgrid.gridUnload(SYSTEM03010_GRID_ID);
  257. }
  258. };