ITP_VENDINFO02010.js 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730
  1. require(['config'], function() {
  2. require([
  3. 'jquery.bootstrap.fileUpload' //파일 업로드가 있는 페이지에서 로딩
  4. ], function($) {
  5. pageObj.init();
  6. });
  7. });
  8. /********************************************************
  9. --------------------------------------------------------
  10. - Object 목록 -
  11. --------------------------------------------------------
  12. * const gridColModel = {} : 화면 Grid Object *
  13. * let pageObj = {} : 화면공통 Object *
  14. * let listObj = {} : 목록화면 Object *
  15. * let viewObj = {} : 상세화면 Object *
  16. * let modifyObj = {} : 수정화면 Object *
  17. * let createObj = {} : 신규화면 Object *
  18. *******************************************************/
  19. /*화면 변수*/
  20. const VENDINFO02010_GRID_ID = '#ITP_VENDINFO02010_jqGrid';
  21. const VENDINFO02010_GRID_LIST = '#ITP_VENDINFO02010_jqGrid_list';
  22. const VENDINFO02010_GRID_PAGER = '#ITP_VENDINFO02010_jqGridPager';
  23. const VENDINFO02010_GRID_EMPTY = '#ITP_VENDINFO02010_jqGridEmpty';
  24. const VENDINFO02010_VIEW_GRID_ID = '#ITP_VENDINFO02010_VIEW_jqGrid';
  25. const VENDINFO02010_VIEW_GRID_LIST = '#ITP_VENDINFO02010_VIEW_jqGrid_list';
  26. const VENDINFO02010_VIEW_GRID_PAGER = '#ITP_VENDINFO02010_VIEW_jqGridPager';
  27. const VENDINFO02010_VIEW_GRID_EMPTY = '#ITP_VENDINFO02010_VIEW_jqGridEmpty';
  28. const VENDINFO02010_DETAIL_GRID_ID = '#ITP_VENDINFO02010_DETAIL_jqGrid';
  29. const VENDINFO02010_DETAIL_GRID_LIST = '#ITP_VENDINFO02010_DETAIL_jqGrid_list';
  30. const VENDINFO02010_DETAIL_GRID_PAGER = '#ITP_VENDINFO02010_DETAIL_jqGridPager';
  31. const VENDINFO02010_DETAIL_GRID_EMPTY = '#ITP_VENDINFO02010_DETAIL_jqGridEmpty';
  32. let ITP_FORM_VENDINFO02010_DETAIL_IS_DUPLICATE = false;
  33. let ITP_FORM_VENDINFO02010_DETAIL_IS_WRITING = false;
  34. /*API URL*/
  35. let API_DETAIL_GRID_LIST = '/api/item/spply-grid-list'; // 목록
  36. let API_DETAIL_INFO = '/api/item/info-item'; // 상세
  37. let API_DETAIL_SAVE = '/api/item/save-item'; // 저장
  38. let API_ITEM_CLASS_LEVEL = '/api/item/class-level-list'; //품목분류 level 검색
  39. /*화면 Grid ColModel*/
  40. const gridColModel = {
  41. list: [
  42. {
  43. index: 'ITEM_ID', name: 'itemId',
  44. label: ITP_MSG_LOCALE.label.itemId, //품목번호
  45. width: '12', fixed: false, align: 'center',
  46. sortable: false, hidden: false
  47. },
  48. {
  49. index: 'ITEM_NM', name: 'itemNm',
  50. label: ITP_MSG_LOCALE.label.itemNm, //품목명
  51. width: '13', fixed: false, align: 'center',
  52. sortable: false, hidden: false
  53. },
  54. {
  55. index: 'ITEM_TYPE_NM', name: 'itemTypeNm',
  56. label: ITP_MSG_LOCALE.label.itemTypeNm, //품목유형
  57. width: '10', fixed: false, align: 'center',
  58. sortable: false, hidden: false
  59. },
  60. {
  61. index: 'ITEM_CLASS_NM', name: 'itemClassNm',
  62. label: ITP_MSG_LOCALE.label.itemClassNm, //품목분류
  63. width: '15', fixed: false, align: 'center',
  64. sortable: false, hidden: false
  65. },
  66. {
  67. index: 'ITEM_ST_CD', name: 'itemStCd',
  68. label: ITP_MSG_LOCALE.label.stNm, //상태
  69. width: '6', fixed: false, align: 'center',
  70. sortable: false, hidden: true
  71. },
  72. {
  73. index: 'PODR_PSSBLDVSN_NM', name: 'podrPssblDvsnNm',
  74. label: ITP_MSG_LOCALE.label.podrPssblDvsnNm, //발주여부
  75. width: '6', fixed: false, align: 'center',
  76. sortable: false, hidden: false
  77. },
  78. {
  79. index: 'UNIT', name: 'unit',
  80. label: ITP_MSG_LOCALE.label.unit, //기본단위
  81. width: '6', fixed: false, align: 'center',
  82. sortable: false, hidden: false
  83. },
  84. {
  85. index: 'PCH_ITEM_YN', name: 'pchItemYn',
  86. label: ITP_MSG_LOCALE.label.pchItemYn, //구매품목여부
  87. width: '6', fixed: false, align: 'center',
  88. sortable: false, hidden: false
  89. },
  90. {
  91. index: 'SALE_ITEM_YN', name: 'saleItemYn',
  92. label: ITP_MSG_LOCALE.label.saleItemYn, //판매품목여부
  93. width: '10', fixed: false, align: 'center',
  94. sortable: false, hidden: false
  95. },
  96. ],
  97. detail: [
  98. {
  99. index: 'VIEW_CD', name: 'viewCd',
  100. label: ITP_MSG_LOCALE.label.viewCd,
  101. width: '10', fixed: false, align: 'center',
  102. sortable: false, hidden: true
  103. },
  104. {
  105. index: 'AUTH_NO', name: 'authNo',
  106. label: ITP_MSG_LOCALE.label.permitCd,
  107. width: '20', fixed: false, align: 'center',
  108. sortable: false, editable: false, edittype: 'text',
  109. editrules: {required: true}
  110. },
  111. {
  112. index: 'AUTH_NM', name: 'authNm',
  113. label: ITP_MSG_LOCALE.label.permitName,
  114. width: '30', fixed: false, align: 'center',
  115. sortable: true, editable: false, edittype: 'text',
  116. editrules: {required: true}
  117. },
  118. {
  119. index: 'USE_YN_NM', name: 'useYnNm',
  120. label: ITP_MSG_LOCALE.label.status,
  121. width: '10', fixed: false, align: 'center',
  122. sortable: false, editable: false, edittype: 'text'
  123. },
  124. {
  125. index: 'ADD_DT', name: 'addDt',
  126. label: ITP_MSG_LOCALE.label.regDt,
  127. width: '10', fixed: false, align: 'center',
  128. sortable: false, editable: false, edittype: 'text'
  129. }
  130. ]
  131. };
  132. /*화면공통 Object*/
  133. let pageObj = {
  134. init: function () {
  135. this.ui.init();
  136. this.event.init();
  137. this.fileUpload();
  138. storeSpplyObj.init();
  139. },
  140. ui: {
  141. init: function () {
  142. this.view();
  143. this.grid();
  144. this.ready();
  145. },
  146. view: function() {
  147. // 버튼 권한설정
  148. fn_proc_btn_auth('VENDINFO02010');
  149. // 공통코드 표시
  150. $('select').each(function() {
  151. if($(this).data('select-code')) {
  152. fn_make_select(CODE_LIST, $(this).data('select-code'), $(this).attr('id'));
  153. }
  154. });
  155. itemClassLevel.make(1, 'LIST');
  156. },
  157. grid: function() {
  158. itp_fn_jqgrid_resize(VENDINFO02010_GRID_ID, VENDINFO02010_GRID_LIST, 'lg');
  159. listObj.empty.init();
  160. itp_fn_fire_window_resize();
  161. },
  162. ready: function() {
  163. listObj.init();
  164. }
  165. },
  166. event: {
  167. init: function () {
  168. this.button();
  169. },
  170. button: function () {
  171. // 버튼 클릭 이벤트
  172. $('button').each(function() {
  173. var id = $(this).attr('id');
  174. $(this).on('click', function() {
  175. switch (id) {
  176. case 'ITP_BTN_VENDINFO02010_SRH' : listObj.button.search(); break; // 조회 버튼 클릭
  177. case 'ITP_BTN_VENDINFO02010_NEWREG' : listObj.button.create(); break; // 신규등록 버튼
  178. case 'ITP_BTN_VENDINFO02010_MODIFY' : modifyObj.button.modify(); break; // 수정 버튼
  179. case 'ITP_BTN_VENDINFO02010_CANCELLIST' : createObj.button.cancel(); break; // 취소/목록 버튼
  180. case 'ITP_BTN_VENDINFO02010_DELETE' : break; // 삭제 버튼
  181. case 'ITP_BTN_VENDINFO02010_SAVE' : createObj.button.save(); break; // 저장 버튼
  182. case 'ITP_FORM_VENDINFO02010_DETAIL_DUP' : createObj.button.duplicate(); break; // 중복체크
  183. case 'ITP_BTN_VENDINFO02010_RESET_PW' : createObj.button.resetPass(); break; // 상세:비밀번호 초기화
  184. }
  185. });
  186. });
  187. $('body').on('click', function(e) {
  188. var gridId = VENDINFO02010_DETAIL_GRID_ID.replace('#', '');
  189. var rids = $(VENDINFO02010_DETAIL_GRID_ID).jqGrid('getDataIDs');
  190. var last_row_id = rids[rids.length - 1];
  191. itp_fn_grid_reset_selection(e, last_row_id, gridId, 'VENDINFO02010_DETAIL');
  192. });
  193. }
  194. },
  195. fileUpload: function() {
  196. //파일업로드(등록/수정화면)
  197. var id = 'VENDINFO02010';
  198. $('#ITP_' + id + '_DETAIL_UPLOAD').empty();
  199. const fileArgs = {
  200. 'fileNo': $('#ITP_FORM_' + id + '_DETAIL_FILE_NO').val(),
  201. 'viewCd': $('#ITP_FORM_' + id + '_DETAIL_VIEW_CD').val(),
  202. 'showYn': $('#ITP_' + id + '_DETAIL_UPLOAD').attr('data-show-yn'),
  203. 'fileId': '#ITP_FORM_' + id + '_DETAIL_FILE_NO' //파일번호를 서버에서 받아서 넣을 파일번호 인풋박스 아이디
  204. };
  205. itp_fn_set_file_upload('ITP_' + id + '_DETAIL_UPLOAD', 'notice', true, false, id, fileArgs);
  206. },
  207. switchScreen: function(mode) {
  208. $('.itp_det_head').find('button[id^="ITP_BTN_VENDINFO02010_"]').each(function(i) {
  209. $(this).hide();
  210. });
  211. $('#ITP_TAB_VENDINFO02010').find('div[id$="_CONTAINER"]').each(function(i) {
  212. $(this).hide();
  213. });
  214. if(mode == 'LIST') { // 목록
  215. $('#ITP_AJAX_VENDINFO02010_LIST_CONTAINER').show();
  216. if(fn_make_user_info.get('authTpCd') !== '60') {
  217. $('#ITP_FORM_VENDINFO02010_SEARCH_STORE_SPPLY').show();
  218. $('#ITP_FORM_VENDINFO02010_DELETE_STORE_SPPLY').show();
  219. } else {
  220. $('#ITP_FORM_VENDINFO02010_SEARCH_STORE_SPPLY').hide();
  221. $('#ITP_FORM_VENDINFO02010_DELETE_STORE_SPPLY').hide();
  222. }
  223. fn_show_btn_auth_array(['#ITP_BTN_VENDINFO02010_SRH']);
  224. } else if(mode == 'ADD') { // 등록
  225. $('#ITP_AJAX_VENDINFO02010_DETAIL_CONTAINER').show();
  226. fn_show_btn_auth_array(['#ITP_BTN_VENDINFO02010_CANCELLIST', '#ITP_BTN_VENDINFO02010_SAVE']);
  227. $('#ITP_FORM_VENDINFO02010_DETAIL').find('input, textarea, select, checkbox').each(function(i, elem) {
  228. $(this).attr('id') === 'ITP_FORM_VENDINFO02010_DETAIL_VIEW_CD' ? $(this).val('C') : $(this).val('');
  229. if(elem.type === 'select') {
  230. $(this).val('').prop('selected', true);
  231. }
  232. });
  233. $('#ITP_FORM_VENDINFO02010_DETAIL_STORE_ID').removeAttr('readonly');
  234. $('#ITP_FORM_VENDINFO02010_DETAIL_DUP').removeAttr('disabled');
  235. // 가맹점 정보 설정
  236. $('#ITP_FORM_VENDINFO02010_DETAIL_AFFL_SHOP_ID').val(fn_make_user_info.get('afflShopId'));
  237. $('#ITP_FORM_VENDINFO02010_DETAIL_BRAND_ID').val(fn_make_user_info.get('brandId'));
  238. $('#ITP_FORM_VENDINFO02010_DETAIL .fnBrandNm').text(fn_make_user_info.get('brandNm'));
  239. $('#ITP_FORM_VENDINFO02010_DETAIL .fnItemClassMgntNo').text('(자동부여)');
  240. } else if(mode == 'MODIFY') { // 수정
  241. $('#ITP_AJAX_VENDINFO02010_DETAIL_CONTAINER').show();
  242. fn_show_btn_auth_array(['#ITP_BTN_VENDINFO02010_CANCELLIST', '#ITP_BTN_VENDINFO02010_SAVE', '#ITP_BTN_VENDINFO02010_RESET_PW']);
  243. $('#ITP_FORM_VENDINFO02010_DETAIL_AFFL_SHOP_ID').val(fn_make_user_info.get('afflShopId'));
  244. $('#ITP_FORM_VENDINFO02010_DETAIL_BRAND_ID').val(fn_make_user_info.get('brandId'));
  245. $('#ITP_FORM_VENDINFO02010_DETAIL .fnBrandNm').text(fn_make_user_info.get('brandNm'));
  246. $('#ITP_FORM_VENDINFO02010_DETAIL_STORE_ID').attr('readonly', true);
  247. $('#ITP_FORM_VENDINFO02010_DETAIL_DUP').attr('disabled', true);
  248. $('#ITP_FORM_VENDINFO02010_DETAIL_SEARCH_AFFL_SHOP_NM').attr('readonly', true);
  249. $('#ITP_FORM_VENDINFO02010_DETAIL_SEARCH_AFFL_SHOP').hide();
  250. $('#ITP_FORM_VENDINFO02010_DETAIL_DELETE_AFFL_SHOP').hide();
  251. } else if(mode == 'VIEW') { // 보기
  252. $('#ITP_AJAX_VENDINFO02010_VIEW_CONTAINER').show();
  253. $('#ITP_FORM_VENDINFO02010_VIEW .fnBrandNm').text(fn_make_user_info.get('brandNm'));
  254. fn_show_btn_auth_array(['#ITP_BTN_VENDINFO02010_MODIFY', '#ITP_BTN_VENDINFO02010_CANCELLIST']);
  255. }
  256. },
  257. grid: {
  258. init: function(mode) {
  259. this.mode = mode;
  260. this.gridId = (mode === 'VIEW') ? VENDINFO02010_VIEW_GRID_ID : VENDINFO02010_NEW_GRID_ID;
  261. this.unload();
  262. this.load(mode);
  263. },
  264. mode: 'DETAIL',
  265. gridId: '',
  266. button: {
  267. addRow: function() {
  268. // 팝업
  269. var gridId = (pageObj.pageMode === 'MODIFY') ? VENDINFO02010_NEW_GRID_ID : VENDINFO02010_DETAIL_GRID_ID;
  270. var popFn = function(rowDataPop) {
  271. console.log(rowDataPop);
  272. // 기존등록 사용자ID
  273. var exists = '';
  274. const rowData = $(gridId).getRowData();
  275. $.each(rowData, function(key, value) {
  276. exists = exists + value.authNo + ';';
  277. });
  278. $.each(rowDataPop, function(key, value) {
  279. // console.log(JSON.stringify(value));
  280. if(exists.indexOf(value.authNo) < 0) {
  281. value['viewCd'] = "C";
  282. $(gridId).jqGrid('addRowData', value.authNo, value, 'last');
  283. }
  284. });
  285. $((pageObj.pageMode === 'MODIFY') ? VENDINFO02010_NEW_GRID_EMPTY : VENDINFO02010_DETAIL_GRID_EMPTY).hide();
  286. };
  287. fn_call_popup('comm', 'STORE_SPPLY', '#ITP_ASIDE', popFn, null, 'S');
  288. },
  289. delRow: function() {
  290. itp_fn_grid_del_row((pageObj.pageMode === 'MODIFY') ? VENDINFO02010_NEW_GRID_ID : VENDINFO02010_DETAIL_GRID_ID);
  291. }
  292. },
  293. load : function() {
  294. var gridId = (pageObj.pageMode === 'MODIFY') ? VENDINFO02010_NEW_GRID_ID : VENDINFO02010_VIEW_GRID_ID;
  295. var formId = (pageObj.pageMode === 'MODIFY') ? '#ITP_FORM_VENDINFO02010_NEW' : '#ITP_FORM_VENDINFO02010_VIEW';
  296. let param = $(formId).serializeObject();
  297. param.gridSize = $.jgrid.defaults.rowNum;
  298. param.pagingYn = false; // 페이지안함
  299. var option = {
  300. gridId: gridId,
  301. colModel: gridColModel.detail,
  302. param: param,
  303. url: DOMAIN + API_USERAUTH_GRID_LIST,
  304. multiselect: (this.mode !== 'VIEW'),
  305. loadComplete: function(data) {
  306. console.log(data);
  307. itp_fn_grid_load_complete(data, gridId, true, undefined, 'VENDINFO02010_' + this.mode);
  308. },
  309. onSortCol: function(index, columnIndex, sortOrder) {
  310. var sortingFn = {
  311. callBack: function(args) {
  312. $(args).trigger('reloadGrid');
  313. }
  314. };
  315. if (itp_fn_check_grid_is_writing(gridId)) {
  316. itp_fn_modal_confirm(ITP_MSG_LOCALE.message.ajax.cancelData, sortingFn, gridId);
  317. return 'stop';
  318. } else {
  319. itp_fn_grid_sorting(gridId, index, sortOrder);
  320. }
  321. }
  322. };
  323. itp_fn_grid_make_not_paging(option);
  324. },
  325. unload : function() {
  326. $.jgrid.gridUnload(this.gridId);
  327. }
  328. }
  329. };
  330. /*목록화면 Object*/
  331. let listObj = {
  332. init: function () {
  333. this.form();
  334. this.grid.init();
  335. },
  336. itp_VENDINFO02010_param: {},
  337. itp_VENDINFO02010_search: false,
  338. button: {
  339. search: function() {
  340. listObj.itp_VENDINFO02010_search = true;
  341. let param = $('#ITP_FORM_VENDINFO02010_SEARCH').serializeObject();
  342. param.gridSize = $.jgrid.defaults.rowNum;
  343. param.gridPage = $.jgrid.defaults.page;
  344. $(VENDINFO02010_GRID_ID).setGridParam({'postData': JSON.stringify(param)}).trigger('reloadGrid');
  345. },
  346. create: function() {
  347. if(!fn_make_user_info.isEmpty()) {
  348. createObj.init();
  349. }
  350. }
  351. },
  352. form: function() {
  353. $('#ITP_FORM_VENDINFO02010_SEARCH_ITEM_CLASS1').on('change', function() {
  354. ($(this).val() === '') ? itemClassLevel.clear(2): itemClassLevel.change(2);
  355. });
  356. $('#ITP_FORM_VENDINFO02010_SEARCH_ITEM_CLASS2').on('change', function() {
  357. ($(this).val() === '') ? itemClassLevel.clear(3): itemClassLevel.change(3);
  358. });
  359. $('#ITP_FORM_VENDINFO02010_SEARCH_ITEM_CLASS3').on('change', function() {
  360. ($(this).val() === '') ? itemClassLevel.clear(4): itemClassLevel.change(4);
  361. });
  362. },
  363. empty: {
  364. init: function() {
  365. var _this = this;
  366. this.push();
  367. $(VENDINFO02010_GRID_EMPTY).on('click', function() {
  368. _this.back();
  369. _this.itp_VENDINFO02010_param.gridSize = $.jgrid.defaults.rowNum;
  370. $(VENDINFO02010_GRID_ID).setGridParam({'postData': JSON.stringify(_this.itp_VENDINFO02010_param)}).trigger('reloadGrid');
  371. });
  372. },
  373. itp_VENDINFO02010_param: {},
  374. push: function() {
  375. let param = $('#ITP_FORM_VENDINFO02010_SEARCH').serializeObject();
  376. listObj.itp_VENDINFO02010_param = param;
  377. },
  378. back: function() {
  379. // $('#ITP_FORM_VENDINFO02010_SERVICE_ST_CD').val(this.itp_VENDINFO02010_param.sitemStCd);
  380. $('#ITP_FORM_VENDINFO02010_SEARCH_PODR_PSSBL_DVSN').val(listObj.itp_VENDINFO02010_param.podrPssblDvsnNm);
  381. $('#ITP_FORM_VENDINFO02010_SEARCH_ITEM_KIND').val(listObj.itp_VENDINFO02010_param.sitemKind);
  382. $('#ITP_FORM_VENDINFO02010_SEARCH_ITEM_NM').val(listObj.itp_VENDINFO02010_param.itemNm);
  383. }
  384. },
  385. grid: {
  386. init: function () {
  387. // 데이터 없을때
  388. listObj.empty.push();
  389. this.search();
  390. },
  391. colModel: gridColModel.list,
  392. search: function() {
  393. pageObj.switchScreen('LIST');
  394. this.unload();
  395. this.load();
  396. },
  397. load: function() {
  398. $('#ITP_FORM_VENDINFO02010_SEARCH_SPPLY_ID').val(fn_make_user_info.get('spplyId'));
  399. $('#ITP_FORM_VENDINFO02010_SEARCH_BRAND_ID').val(fn_make_user_info.get('brandId'));
  400. $('#ITP_FORM_VENDINFO02010_SEARCH_SPPLY_NM').val(fn_make_user_info.get('spplyNm'));
  401. let param = $('#ITP_FORM_VENDINFO02010_SEARCH').serializeObject();
  402. param.gridSize = $.jgrid.defaults.rowNum;
  403. param.sbrandId = sessionStorage.getItem('itp_brand_id') !== null ? sessionStorage.getItem('itp_brand_id') : 'BRD221000001';
  404. var option = {
  405. gridId: VENDINFO02010_GRID_ID,
  406. colModel: gridColModel.list,
  407. param: param,
  408. url: DOMAIN + API_DETAIL_GRID_LIST,
  409. pager: VENDINFO02010_GRID_PAGER,
  410. onCellSelect: function(rowId, cellIdx, cellValue) {
  411. var cm = $(this).jqGrid('getGridParam', 'colModel');
  412. var colNm = cm[cellIdx].name;
  413. if (colNm == 'itemId') {
  414. const selectVal = $(this).jqGrid('getCell', rowId, 'itemId');
  415. const key = {brandId:fn_make_user_info.get('brandId'), itemId: selectVal, viewCd: 'R'};
  416. var param = $.param(key);
  417. viewObj.init(param);
  418. }
  419. },
  420. loadComplete: function(data) {
  421. console.log(data);
  422. itp_fn_grid_load_complete(data, VENDINFO02010_GRID_ID, true, 'number', 'VENDINFO02010', listObj.itp_VENDINFO02010_search, listObj.empty, true, data.gridRecords, true);
  423. var ids = $(VENDINFO02010_GRID_ID).getDataIDs();
  424. $.each(ids, function(idx, rowId) {
  425. $(VENDINFO02010_GRID_ID).jqGrid('setCell', rowId, 'itemId', '', ITP_GRID_COL_STYLE.link);
  426. });
  427. },
  428. onPaging: function(action) {
  429. itp_fn_grid_paging(VENDINFO02010_GRID_ID, action, param);
  430. }
  431. };
  432. itp_fn_grid_make_remote(option);
  433. },
  434. clearData : function() {
  435. $(VENDINFO02010_GRID_ID).jqGrid('clearGridData', true);
  436. $(VENDINFO02010_GRID_LIST).find('.ui-jqgrid-bdiv').css('min-height', '100px');
  437. $(VENDINFO02010_GRID_EMPTY).html(ITP_MSG_LOCALE.message.grid.noData);
  438. $(VENDINFO02010_GRID_EMPTY).show();
  439. },
  440. unload : function() {
  441. $.jgrid.gridUnload(VENDINFO02010_GRID_ID);
  442. }
  443. }
  444. };
  445. /*상세화면 Object*/
  446. let viewObj = {
  447. init: function (param) {
  448. this.load(param);
  449. },
  450. load: function(param) {
  451. fn_ajax_call(API_DETAIL_INFO, param, this.callback, 'GET');
  452. },
  453. callback: function (result) {
  454. console.log(result);
  455. pageObj.switchScreen('VIEW');
  456. $('#ITP_FORM_VENDINFO02010_VIEW #ITP_FORM_VENDINFO02010_VIEW_ITEM_ID').val(result.itemId);
  457. $('#ITP_FORM_VENDINFO02010_VIEW .fnStCd').text(result.itemStCd);
  458. $('#ITP_FORM_VENDINFO02010_VIEW .fnItemClass1').text(result.itemClass1);
  459. $('#ITP_FORM_VENDINFO02010_VIEW .fnItemClass2').text(result.itemClass2);
  460. $('#ITP_FORM_VENDINFO02010_VIEW .fnItemClass3').text(result.itemClass3);
  461. $('#ITP_FORM_VENDINFO02010_VIEW .fnItemClass4').text(result.itemClass4);
  462. $('#ITP_FORM_VENDINFO02010_VIEW .fnItemClassMgntNo').text(result.itemClassMgntNo);
  463. $('#ITP_FORM_VENDINFO02010_VIEW .fnItemId').text(result.itemId);
  464. $('#ITP_FORM_VENDINFO02010_VIEW .fnItemTypeNm').text(result.itemTypeNm);
  465. $('#ITP_FORM_VENDINFO02010_VIEW .fnItemNm').text(result.itemClassNm);
  466. $('#ITP_FORM_VENDINFO02010_VIEW .fnImpDvsnNm').text(result.impDvsnNm);
  467. $('#ITP_FORM_VENDINFO02010_VIEW .fnPodrPssblDvsn').text(result.podrPssblDvsnNm);
  468. $('#ITP_FORM_VENDINFO02010_VIEW .fnUnit').text(result.unit);
  469. $('#ITP_FORM_VENDINFO02010_VIEW .fnWeightUnit').text(result.weightUnit);
  470. $('#ITP_FORM_VENDINFO02010_VIEW .fnVolumeUnit').text(result.volumeUnit);
  471. $('#ITP_FORM_VENDINFO02010_VIEW .fnWidthUnit').text(result.widthUnit);
  472. $('#ITP_FORM_VENDINFO02010_VIEW .fnHeightUnit').text(result.heightUnit);
  473. $('#ITP_FORM_VENDINFO02010_VIEW .fnHighUnit').text(result.highUnit);
  474. $('#ITP_FORM_VENDINFO02010_VIEW .fnPchItemYn').text(result.pchItemYn);
  475. $('#ITP_FORM_VENDINFO02010_VIEW .fnViewPchUnit').text(result.pchUnit);
  476. $('#ITP_FORM_VENDINFO02010_VIEW .fnSaleItemYn').text(result.saleItemYn);
  477. $('#ITP_FORM_VENDINFO02010_VIEW .fnSaleUnit').text(result.saleUnit);
  478. $('#ITP_FORM_VENDINFO02010_VIEW .fnAssetInfo').text(result.assetInfo);
  479. $('#ITP_FORM_VENDINFO02010_VIEW .fnStckUnit').text(result.stckUnit);
  480. $('#ITP_FORM_VENDINFO02010_VIEW .fnWeight').text(result.weight);
  481. $('#ITP_FORM_VENDINFO02010_VIEW .fnVolume').text(result.volume);
  482. $('#ITP_FORM_VENDINFO02010_VIEW .fnWidth').text(result.width);
  483. $('#ITP_FORM_VENDINFO02010_VIEW .fnHeight').text(result.height);
  484. $('#ITP_FORM_VENDINFO02010_VIEW .fnHigh').text(result.high);
  485. $('#ITP_FORM_VENDINFO02010_VIEW .fnOneBoxQty').text(result.oneBoxQty);
  486. $('#ITP_FORM_VENDINFO02010_VIEW .fnExpryYn').text(result.expryYn);
  487. $('#ITP_FORM_VENDINFO02010_VIEW .fnExpryPeriod').text(result.expryPeriod);
  488. $('#ITP_FORM_VENDINFO02010_VIEW .fnRtnPssblYn').text(result.rtnPssblYn);
  489. $('#ITP_FORM_VENDINFO02010_VIEW .fnRtnDvsn').text(result.rtnDvsnNm);
  490. // $('#ITP_FORM_VENDINFO02010_VIEW .fnItemImage').text(result.imageFileNoList);
  491. $.each(result.imageFileNoList, function(index, item) {
  492. $('#ITP_FORM_VENDINFO02010_VIEW .fnItemImage').append('<img src=" + item.filePath +" />');
  493. });
  494. }
  495. };
  496. /*수정화면 Object*/
  497. let modifyObj = {
  498. init: function () {
  499. },
  500. button: {
  501. modify: function (param) {
  502. itp_fn_form_clear_validate(null, '#ITP_FORM_VENDINFO02010_DETAIL');
  503. const selectVal = $('#ITP_FORM_VENDINFO02010_VIEW_ITEM_ID').val();
  504. const key = {brandId:fn_make_user_info.get('brandId'), itemId: selectVal, viewCd: 'R'};
  505. var param = $.param(key);
  506. modifyObj.load(param);
  507. }
  508. },
  509. load: function(param) {
  510. fn_ajax_call(API_DETAIL_INFO, param, this.callback, 'GET');
  511. },
  512. callback: function (result) {
  513. console.log(result);
  514. pageObj.switchScreen('MODIFY');
  515. $('#ITP_FORM_VENDINFO02010_DETAIL #ITP_FORM_VENDINFO02010_DETAIL_VIEW_CD').val('U');
  516. $('#ITP_FORM_VENDINFO02010_DETAIL #ITP_FORM_VENDINFO02010_DETAIL_ITEM_ID').val(result.itemId);
  517. $('#ITP_FORM_VENDINFO02010_DETAIL #ITP_FORM_VENDINFO02010_DETAIL_STORE_ST_CD').val(result.itemStCd);
  518. $('#ITP_FORM_VENDINFO02010_DETAIL .fnItemClassMgntNo').text(result.itemId);
  519. $('#ITP_FORM_VENDINFO02010_DETAIL #ITP_FORM_VENDINFO02010_DETAIL_ITEM_TYPE').val(result.itemType);
  520. $('#ITP_FORM_VENDINFO02010_DETAIL #ITP_FORM_VENDINFO02010_DETAIL_ITEM_NM').val(result.itemClassNm);
  521. $('#ITP_FORM_VENDINFO02010_DETAIL #ITP_FORM_VENDINFO02010_DETAIL_IMP_DVSN').val(result.impDvsn);
  522. $('#ITP_FORM_VENDINFO02010_DETAIL #ITP_FORM_VENDINFO02010_DETAIL_PODR_PSSBL_DVSN').val(result.podrPssblDvsn);
  523. $('#ITP_FORM_VENDINFO02010_DETAIL #ITP_FORM_VENDINFO02010_DETAIL_UNIT').val(result.unit);
  524. $('#ITP_FORM_VENDINFO02010_DETAIL #ITP_FORM_VENDINFO02010_DETAIL_PCH_ITEM_YN').val(result.pchItemYn);
  525. $('#ITP_FORM_VENDINFO02010_DETAIL #ITP_FORM_VENDINFO02010_DETAIL_PCH_UNIT').val(result.pchUnit);
  526. $('#ITP_FORM_VENDINFO02010_DETAIL #ITP_FORM_VENDINFO02010_DETAIL_SALE_ITEM_YN').val(result.saleItemYn);
  527. $('#ITP_FORM_VENDINFO02010_DETAIL #ITP_FORM_VENDINFO02010_DETAIL_SALE_UNIT').val(result.saleUnit);
  528. $('#ITP_FORM_VENDINFO02010_DETAIL #ITP_FORM_VENDINFO02010_DETAIL_ASSET_INFO').val(result.assetInfo);
  529. $('#ITP_FORM_VENDINFO02010_DETAIL #ITP_FORM_VENDINFO02010_DETAIL_STCK_UNIT').val(result.stckUnit);
  530. $('#ITP_FORM_VENDINFO02010_DETAIL #ITP_FORM_VENDINFO02010_DETAIL_WEIGHT').val(result.weight);
  531. $('#ITP_FORM_VENDINFO02010_DETAIL .item_unit').text(result.unit);
  532. $('#ITP_FORM_VENDINFO02010_DETAIL #ITP_FORM_VENDINFO02010_DETAIL_VOLUME').val(result.volume);
  533. $('#ITP_FORM_VENDINFO02010_DETAIL #ITP_FORM_VENDINFO02010_DETAIL_WIDTH').val(result.width);
  534. $('#ITP_FORM_VENDINFO02010_DETAIL #ITP_FORM_VENDINFO02010_DETAIL_HEIGHT').val(result.height);
  535. $('#ITP_FORM_VENDINFO02010_DETAIL #ITP_FORM_VENDINFO02010_DETAIL_HIGH').val(result.high);
  536. $('#ITP_FORM_VENDINFO02010_DETAIL #ITP_FORM_VENDINFO02010_DETAIL_ONE_BOX_QTY').val(result.oneBoxQty);
  537. $('#ITP_FORM_VENDINFO02010_DETAIL #ITP_FORM_VENDINFO02010_DETAIL_EXPRY_YN').val(result.expryYn);
  538. $('#ITP_FORM_VENDINFO02010_DETAIL #ITP_FORM_VENDINFO02010_DETAIL_EXPRY_PERIOD').val(result.expryPeriod);
  539. $('#ITP_FORM_VENDINFO02010_DETAIL #ITP_FORM_VENDINFO02010_DETAIL_RTN_PSSBL_YN').val(result.rtnPssblYn);
  540. $('#ITP_FORM_VENDINFO02010_DETAIL #ITP_FORM_VENDINFO02010_DETAIL_RTN_DVSN').val(result.rtnDvsn);
  541. $.each(result.imageFileNoList, function(index, item) {
  542. $('#ITP_FORM_VENDINFO02010_VIEW .ITEM_IMAGE').append('<img src=" + item.filePath +" />');
  543. });
  544. itemClassLevel.data.push(result.itemClass1);
  545. itemClassLevel.data.push(result.itemClass2);
  546. itemClassLevel.data.push(result.itemClass3);
  547. itemClassLevel.data.push(result.itemClass4);
  548. itemClassLevel.make(1, 'MODIFY');
  549. }
  550. };
  551. /*신규화면 Object*/
  552. let createObj = {
  553. init: function () {
  554. pageObj.switchScreen('ADD');
  555. itp_fn_form_clear_validate(null, '#ITP_FORM_VENDINFO02010_DETAIL');
  556. this.button.init();
  557. itemClassLevel.make(1, 'ADD');
  558. },
  559. button: {
  560. init: function() {
  561. $('#ITP_FORM_VENDINFO02010_DETAIL_ITEM_CLASS1').off('change').on('change', function() {
  562. ($(this).val() === '') ? itemClassLevel.clear(2): itemClassLevel.change(2);
  563. });
  564. $('#ITP_FORM_VENDINFO02010_DETAIL_ITEM_CLASS2').off('change').on('change', function() {
  565. ($(this).val() === '') ? itemClassLevel.clear(3): itemClassLevel.change(3);
  566. });
  567. $('#ITP_FORM_VENDINFO02010_DETAIL_ITEM_CLASS3').off('change').on('change', function() {
  568. ($(this).val() === '') ? itemClassLevel.clear(4): itemClassLevel.change(4);
  569. });
  570. },
  571. cancel: function() {
  572. listObj.grid.search();
  573. },
  574. save: function() {
  575. const formId = '#ITP_FORM_VENDINFO02010_DETAIL';
  576. itp_fn_form_clear_validate(null, formId);
  577. if (createObj.isValid(formId)) {
  578. let param = $(formId).serializeObject();
  579. console.log(JSON.stringify(param));
  580. var searhFn = function() {
  581. ITP_FORM_VENDINFO02010_DETAIL_IS_WRITING = false;
  582. listObj.grid.search();
  583. };
  584. fn_ajax_call(API_DETAIL_SAVE, JSON.stringify(param), searhFn, 'POST');
  585. }
  586. }
  587. },
  588. isValid: function(formId) {
  589. var isValid = false;
  590. $(formId).find('input, select, checkbox, textarea').each(function(k) {
  591. if($(this).data('check-required')) {
  592. var arry = $(this).data('check-required').split(',');
  593. isValid = itp_fn_form_validate(formId, '#' + $(this).attr('id'), arry, undefined);
  594. if(!isValid) return false;
  595. }
  596. });
  597. return isValid;
  598. }
  599. };
  600. var itemClassLevel = {
  601. level: 1,
  602. levelID: '',
  603. data: [],
  604. keys: function() {
  605. var keys = {sBrandId:fn_make_user_info.get('brandId'), sItemLevel: this.level};
  606. for(var i=1; i<=this.level; i++) {
  607. var key = 'sItemClass' + i;
  608. var id = '#' + this.levelID + i;
  609. keys[key] = $(id + ' option:selected').val();
  610. }
  611. return keys;
  612. },
  613. make: function(level, mode) {
  614. this.level = level;
  615. this.levelID = (mode === 'LIST' ? 'ITP_FORM_VENDINFO02010_SEARCH_ITEM_CLASS' : 'ITP_FORM_VENDINFO02010_DETAIL_ITEM_CLASS');
  616. if(mode !== 'MODIFY') {
  617. this.data.length = 0;
  618. this.clear(1);
  619. }
  620. this.call($.param(this.keys()), mode === 'MODIFY');
  621. },
  622. change: function(level) {
  623. this.level = level;
  624. this.clear(level);
  625. this.call($.param(this.keys()), false);
  626. },
  627. call: function(param, isModify) {
  628. var _this = this;
  629. var callbackFn = function(result) {
  630. var id = _this.levelID + _this.level;
  631. fn_make_select_item_class(result.searchList, id, true, _this.emptyText());
  632. if(isModify) {
  633. $('#' + id).val(_this.data[ _this.level - 1]);
  634. if(_this.level < _this.data.length) {
  635. if(_this.data[_this.level] !== '') {
  636. _this.level++;
  637. _this.call( $.param(_this.keys()), isModify);
  638. }
  639. }
  640. }
  641. };
  642. fn_ajax_call(API_ITEM_CLASS_LEVEL, param, callbackFn, 'GET');
  643. },
  644. emptyText: function() {
  645. return '품목분류Level' + this.level;
  646. },
  647. clear: function(level) {
  648. for(var i=level; i<5; i++) {
  649. $('#' + (this.levelID + i)).find('option:not(:first)').remove();
  650. }
  651. }
  652. };
  653. let storeSpplyObj = {
  654. init: function () {
  655. this.action();
  656. },
  657. action: function () {
  658. var _this = this;
  659. // 가맹점 조회 클릭
  660. $('#ITP_FORM_VENDINFO02010_SEARCH_STORE_SPPLY').on('click', function() {
  661. _this.popup('L');
  662. });
  663. // 가맹점 텍스트 삭제 버튼 클릭
  664. $('#ITP_FORM_VENDINFO02010_DELETE_STORE_SPPLY').on('click', function() {
  665. $('#ITP_FORM_VENDINFO02010_SEARCH_SPPLY_NM').val('');
  666. $('select#ITP_FORM_VENDINFO02010_SEARCH_BRAND_ID option').remove();
  667. });
  668. },
  669. popup: function (view) {
  670. // 팝업
  671. var popFn = (view === 'C') ? this.callback.create : this.callback.list;
  672. fn_call_popup('biz', 'BIZPOP_STORE_SPPLY', '#ITP_ASIDE', popFn, null, 'S');
  673. },
  674. callback: {
  675. list: function(rowDataPop) {
  676. // console.log(rowDataPop);
  677. if(rowDataPop.STORE_SPPLY) {
  678. $('#ITP_FORM_VENDINFO02010_SEARCH_STORE_SPPLY_ID').val(rowDataPop.STORE_SPPLY.afflShopId);
  679. $('#ITP_FORM_VENDINFO02010_SEARCH_STORE_SPPLY_NM').val(rowDataPop.STORE_SPPLY.afflShopNm);
  680. }
  681. if(rowDataPop.AFFL_BRAND) {
  682. fn_make_select_brand(rowDataPop.AFFL_BRAND, 'ITP_FORM_VENDINFO02010_SEARCH_BRAND_ID', true, '선택');
  683. }
  684. },
  685. create: function(rowDataPop) {
  686. console.log(rowDataPop);
  687. if(rowDataPop.STORE_SPPLY) {
  688. $('#ITP_FORM_VENDINFO02010_DETAIL_SEARCH_STORE_SPPLY_ID').val(rowDataPop.STORE_SPPLY.afflShopId);
  689. $('#ITP_FORM_VENDINFO02010_DETAIL_SEARCH_STORE_SPPLY_NM').val(rowDataPop.STORE_SPPLY.afflShopNm);
  690. }
  691. if(rowDataPop.AFFL_BRAND) {
  692. fn_make_select_brand(rowDataPop.AFFL_BRAND, 'ITP_FORM_VENDINFO02010_DETAIL_BRAND_NM', true, '선택');
  693. }
  694. }
  695. }
  696. };