ITP_STINFO06010.js 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914
  1. require(['config'], function() {
  2. require([
  3. ], function($) {
  4. pageObj.init();
  5. });
  6. });
  7. /********************************************************
  8. --------------------------------------------------------
  9. - Object 목록 -
  10. --------------------------------------------------------
  11. * const gridColModel = {} : 화면 Grid Object *
  12. * let pageObj = {} : 화면공통 Object *
  13. * let listObj = {} : 목록화면 Object *
  14. * let viewObj = {} : 상세화면 Object *
  15. * let modifyObj = {} : 수정화면 Object *
  16. * let createObj = {} : 신규화면 Object *
  17. *******************************************************/
  18. /*화면 변수*/
  19. const STINFO06010_GRID_ID = '#ITP_STINFO06010_jqGrid';
  20. const STINFO06010_GRID_LIST = '#ITP_STINFO06010_jqGrid_list';
  21. const STINFO06010_GRID_PAGER = '#ITP_STINFO06010_jqGridPager';
  22. const STINFO06010_GRID_EMPTY = '#ITP_STINFO06010_jqGridEmpty';
  23. const STINFO06010_DETAIL_GRID_ID = '#ITP_STINFO06010_DETAIL_jqGrid';
  24. const STINFO06010_DETAIL_GRID_LIST = '#ITP_STINFO06010_DETAIL_jqGrid_list';
  25. const STINFO06010_DETAIL_GRID_PAGER = '#ITP_STINFO06010_DETAIL_jqGridPager';
  26. const STINFO06010_DETAIL_GRID_EMPTY = '#ITP_STINFO06010_DETAIL_jqGridEmpty';
  27. let STINFO06010_GRID_LAST_ROW_ID;
  28. /* 공통코드 리스트 */
  29. let ITP_COMMON_CD_DSTRBT_COST_UNIT = fn_make_common_cd_list(CODE_LIST, 'DSTRBT_COST_UNIT', true, '기본단위');
  30. let ITP_COMMON_CD_CURR = fn_make_common_cd_list(CODE_LIST, 'CURR', true, '통화');
  31. let ITP_COMMON_CD_UNIT_TARGET_CD = fn_make_common_cd_list(CODE_LIST, 'UNIT_TARGET_CD', true, '대상여부');
  32. /*API URL*/
  33. let API_DETAIL_GRID_LIST = '/api/itemunit/store-unit-grid-list'; // 목록
  34. let API_DETAIL_INFO = '/api/itemunit/info-storeitemunit'; // 상세
  35. let API_DETAIL_NEW = '/api/itemunit/new-info-storeitemunit'; // 신규
  36. let API_DETAIL_SAVE = '/api/itemunit/save-store-itemunit'; // 저장
  37. /*화면 Grid ColModel*/
  38. const gridColModel = {
  39. list: [
  40. {
  41. index: 'BRAND_ID', name: 'brandId',
  42. label: ITP_MSG_LOCALE.label.brandId, //브랜드ID
  43. width: '10', fixed: false, align: 'center',
  44. sortable: false, hidden: true
  45. },
  46. {
  47. index: 'STORE_ID', name: 'storeId',
  48. label: ITP_MSG_LOCALE.label.storeId, //매장ID
  49. width: '10', fixed: false, align: 'center',
  50. sortable: false, hidden: true
  51. },
  52. {
  53. index: 'STORE_NM', name: 'storeNm',
  54. label: ITP_MSG_LOCALE.label.storeNm, //매장명
  55. width: '10', fixed: false, align: 'left',
  56. sortable: false, hidden: false, classes: 'ui-ellipsis'
  57. },
  58. {
  59. index: 'CONT_STT_DT', name: 'contSttDt',
  60. label: ITP_MSG_LOCALE.label.contSttDt, //계약시작일
  61. width: '10', fixed: false, align: 'center',
  62. sortable: false, hidden: false
  63. },
  64. {
  65. index: 'CONT_END_DT', name: 'contEndDt',
  66. label: ITP_MSG_LOCALE.label.contEndDt, //계약종료일
  67. width: '10', fixed: false, align: 'center',
  68. sortable: false, hidden: false
  69. },
  70. {
  71. index: 'SYS_REG_DTTM', name: 'sysRegDttm',
  72. label: ITP_MSG_LOCALE.label.sysRegDt, //계약생성일
  73. width: '10', fixed: false, align: 'center',
  74. sortable: false, hidden: false
  75. },
  76. {
  77. index: 'ITEM_CNT', name: 'itemCnt',
  78. label: ITP_MSG_LOCALE.label.itemCnt, //계약품목수
  79. width: '10', fixed: false, align: 'right',
  80. sortable: false, hidden: false
  81. }
  82. ],
  83. detail: [
  84. {
  85. index: 'VIEW_CD', name: 'viewCd',
  86. label: ITP_MSG_LOCALE.label.viewCd, //공급단가
  87. width: '6', fixed: false, align: 'center',
  88. sortable: false, hidden: true
  89. },
  90. {
  91. index: 'VIEW_NM', name: 'viewNm',
  92. label: ITP_MSG_LOCALE.label.viewNm, //공급단가
  93. width: '6', fixed: false, align: 'center',
  94. sortable: false, hidden: false
  95. },
  96. {
  97. index: 'BRAND_ID', name: 'brandId',
  98. label: ITP_MSG_LOCALE.label.brandId, //브랜드ID
  99. width: '10', fixed: false, align: 'center',
  100. sortable: false, hidden: true
  101. },
  102. {
  103. index: 'BRAND_UNIT_UNQ_NO', name: 'brandUnitUnqNo',
  104. label: ITP_MSG_LOCALE.label.brandId, //브랜드ID
  105. width: '10', fixed: false, align: 'center',
  106. sortable: false, hidden: true
  107. },
  108. {
  109. index: 'STORE_UNIT_UNQ_NO', name: 'storeUnitUnqNo',
  110. label: ITP_MSG_LOCALE.label.storeId, //브랜드ID
  111. width: '10', fixed: false, align: 'center',
  112. sortable: false, hidden: true
  113. },
  114. {
  115. index: 'ITEM_ID', name: 'itemId',
  116. label: ITP_MSG_LOCALE.label.itemId, //품목번호
  117. width: '14', fixed: false, align: 'center',
  118. sortable: false, hidden: false
  119. },
  120. {
  121. index: 'ITEM_NM', name: 'itemNm',
  122. label: ITP_MSG_LOCALE.label.itemNm, //품목명
  123. width: '11', fixed: false, align: 'left',
  124. sortable: false, hidden: false, classes: 'ui-ellipsis'
  125. },
  126. {
  127. index: 'CONT_STT_DT', name: 'contSttDt',
  128. label: ITP_MSG_LOCALE.label.contSttDt, //계약시작일
  129. width: '7', fixed: false, align: 'center',
  130. sortable: false, hidden: false
  131. },
  132. {
  133. index: 'CONT_END_DT', name: 'contEndDt',
  134. label: ITP_MSG_LOCALE.label.contEndDt, //계약종료일
  135. width: '7', fixed: false, align: 'center',
  136. sortable: false, hidden: false
  137. },
  138. {
  139. index: 'UNIT', name: 'unit',
  140. label: ITP_MSG_LOCALE.label.unit, //기본단위
  141. width: '6', fixed: false, align: 'center',
  142. sortable: false, editable: false, formatter: 'select', edittype: 'select',
  143. editoptions: {value: ITP_COMMON_CD_DSTRBT_COST_UNIT}
  144. },
  145. {
  146. index: 'CURR', name: 'curr',
  147. label: ITP_MSG_LOCALE.label.curr, //통화
  148. width: '7', fixed: false, align: 'center',
  149. sortable: false, editable: true, formatter: 'select', edittype: 'select',
  150. editoptions: {value: ITP_COMMON_CD_CURR},
  151. classes: 'input_color',
  152. editrules: {required: true}
  153. },
  154. {
  155. index: 'UNIT_AMT', name: 'unitAmt',
  156. label: ITP_MSG_LOCALE.label.unitAmt, //단가
  157. width: '9', fixed: false, align: 'right',
  158. sortable: true, editable: true, edittype: 'text',
  159. classes: 'input_color',
  160. editrules: {required: true},
  161. editoptions: {"onKeyup": "this.value=this.value.replace(/[^0-9]/g,'');", maxlength: 10},
  162. formatter: 'integer', formatoptions: { defaultValue: '', thousandsSeparator: ',' }
  163. },
  164. {
  165. index: 'UNIT_TARGET_CD', name: 'unitTargetCd',
  166. label: ITP_MSG_LOCALE.label.unitTargetCd, //대상여부
  167. width: '7', fixed: false, align: 'center',
  168. classes: 'input_color',
  169. sortable: false, editable: true, formatter: 'select', edittype: 'select',
  170. editoptions: {value: ITP_COMMON_CD_UNIT_TARGET_CD},
  171. editrules: {required: true}
  172. },
  173. {
  174. index: 'SPPLY_UNIT_AMT', name: 'spplyUnitAmt',
  175. label: ITP_MSG_LOCALE.label.spplyUnitAmt, //공급단가
  176. width: '9', fixed: false, align: 'right',
  177. sortable: false, hidden: false,
  178. formatter: 'integer', formatoptions: { defaultValue: '', thousandsSeparator: ',' }
  179. },
  180. {
  181. index: 'SPPLY_NM', name: 'spplyNm',
  182. label: ITP_MSG_LOCALE.label.spplyNm, //공급업체명
  183. width: '8', fixed: false, align: 'left',
  184. minwidth: 240,
  185. sortable: false, hidden: false, classes: 'ui-ellipsis'
  186. }
  187. ],
  188. sdetail: [
  189. {
  190. index: 'VIEW_CD', name: 'viewCd',
  191. label: ITP_MSG_LOCALE.label.viewCd, //공급단가
  192. width: '6', fixed: false, align: 'center',
  193. sortable: false, hidden: true
  194. },
  195. {
  196. index: 'VIEW_NM', name: 'viewNm',
  197. label: ITP_MSG_LOCALE.label.viewNm, //공급단가
  198. width: '6', fixed: false, align: 'center',
  199. sortable: false, hidden: false
  200. },
  201. {
  202. index: 'BRAND_ID', name: 'brandId',
  203. label: ITP_MSG_LOCALE.label.brandId, //브랜드ID
  204. width: '10', fixed: false, align: 'center',
  205. sortable: false, hidden: true
  206. },
  207. {
  208. index: 'BRAND_UNIT_UNQ_NO', name: 'brandUnitUnqNo',
  209. label: ITP_MSG_LOCALE.label.brandId, //브랜드ID
  210. width: '10', fixed: false, align: 'center',
  211. sortable: false, hidden: true
  212. },
  213. {
  214. index: 'STORE_UNIT_UNQ_NO', name: 'storeUnitUnqNo',
  215. label: ITP_MSG_LOCALE.label.storeId, //브랜드ID
  216. width: '10', fixed: false, align: 'center',
  217. sortable: false, hidden: true
  218. },
  219. {
  220. index: 'ITEM_ID', name: 'itemId',
  221. label: ITP_MSG_LOCALE.label.itemId, //품목번호
  222. minwidth: 160,
  223. width: '13', fixed: false, align: 'center',
  224. sortable: false, hidden: false
  225. },
  226. {
  227. index: 'ITEM_NM', name: 'itemNm',
  228. label: ITP_MSG_LOCALE.label.itemNm, //품목명
  229. width: '13', fixed: false, align: 'center',
  230. sortable: false, hidden: false, classes: 'ui-ellipsis'
  231. },
  232. {
  233. index: 'CONT_STT_DT', name: 'contSttDt',
  234. label: ITP_MSG_LOCALE.label.contSttDt, //계약시작일
  235. width: '7', fixed: false, align: 'center',
  236. sortable: false, hidden: false
  237. },
  238. {
  239. index: 'CONT_END_DT', name: 'contEndDt',
  240. label: ITP_MSG_LOCALE.label.contEndDt, //계약종료일
  241. width: '7', fixed: false, align: 'center',
  242. sortable: false, hidden: false
  243. },
  244. {
  245. index: 'UNIT', name: 'unit',
  246. label: ITP_MSG_LOCALE.label.unit, //기본단위
  247. width: '8', fixed: false, align: 'center',
  248. sortable: false, editable: false, formatter: 'select', edittype: 'select',
  249. editoptions: {value: ITP_COMMON_CD_DSTRBT_COST_UNIT}
  250. },
  251. {
  252. index: 'CURR', name: 'curr',
  253. label: ITP_MSG_LOCALE.label.curr, //통화
  254. width: '7', fixed: false, align: 'center',
  255. sortable: false, editable: false, formatter: 'select', edittype: 'select',
  256. editoptions: {value: ITP_COMMON_CD_CURR}
  257. },
  258. {
  259. index: 'UNIT_AMT', name: 'unitAmt',
  260. label: ITP_MSG_LOCALE.label.unitAmt, //단가
  261. width: '10', fixed: false, align: 'center',
  262. sortable: true, editable: false, edittype: 'text',
  263. formatter: 'integer', formatoptions: { defaultValue: '', thousandsSeparator: ',' }
  264. },
  265. {
  266. index: 'UNIT_TARGET_CD', name: 'unitTargetCd',
  267. label: ITP_MSG_LOCALE.label.unitTargetCd, //대상여부
  268. width: '10', fixed: false, align: 'center',
  269. sortable: false, editable: false, formatter: 'select', edittype: 'select',
  270. editoptions: {value: ITP_COMMON_CD_UNIT_TARGET_CD}
  271. }
  272. ]
  273. };
  274. /*화면공통 Object*/
  275. let pageObj = {
  276. init: function () {
  277. this.ui.init();
  278. this.event.init();
  279. this.action();
  280. },
  281. screenMode: 'LIST',
  282. ui: {
  283. init: function () {
  284. this.view();
  285. this.grid();
  286. this.ready();
  287. },
  288. view: function() {
  289. // 버튼 권한설정
  290. fn_proc_btn_auth('STINFO06010');
  291. // 공통코드 표시
  292. $('select').each(function() {
  293. if($(this).data('select-code')) {
  294. fn_make_select(CODE_LIST, $(this).data('select-code'), $(this).attr('id'));
  295. }
  296. });
  297. // 조회일자 지정
  298. var now = new Date();
  299. $('#ITP_TAB_STINFO06010 .input-group.date').datepicker(ITP_DATE_LANGUAGE);
  300. $('#ITP_FORM_STINFO06010_DETAIL_FROM_DT').datepicker('setDate', new Date(now.setMonth(now.getMonth() - 1)));
  301. $('#ITP_FORM_STINFO06010_DETAIL_TO_DT').datepicker('setDate', new Date());
  302. },
  303. grid: function() {
  304. //itp_fn_jqgrid_resize(STINFO06010_GRID_ID, STINFO06010_GRID_LIST, 'lg');
  305. listObj.empty.init();
  306. },
  307. ready: function() {
  308. listObj.init();
  309. }
  310. },
  311. event: {
  312. init: function () {
  313. this.button();
  314. },
  315. button: function () {
  316. // 버튼 클릭 이벤트
  317. $('button').each(function() {
  318. var id = $(this).attr('id');
  319. $(this).on('click', function() {
  320. switch (id) {
  321. case 'ITP_BTN_STINFO06010_SRH' : listObj.button.search(); break; // 조회 버튼 클릭
  322. case 'ITP_BTN_STINFO06010_NEWREG' : listObj.button.create(); break; // 신규등록 버튼
  323. case 'ITP_BTN_STINFO06010_CANCELLIST' : listObj.grid.search(); break; // 취소/목록 버튼
  324. case 'ITP_BTN_STINFO06010_SAVE' : createObj.button.save(); break; // 저장 버튼
  325. case 'ITP_BTN_STINFO06010_EXCEL' : pageObj.excelDown(); break; // 엑셀 다운로드 버튼
  326. case 'ITP_BTN_STINFO06010_DETAIL_EXCEL' : pageObj.excelDtlDown(); break; // 엑셀 다운로드 버튼
  327. case 'ITP_BTN_STINFO06010_CALCULATE' : pageObj.calculate();
  328. }
  329. });
  330. });
  331. var fnDateChange = function(cellname, data) {
  332. var cnt = $(STINFO06010_DETAIL_GRID_ID).getGridParam("reccount");
  333. for (var i=1; i<=cnt; i++) {
  334. $(STINFO06010_DETAIL_GRID_ID).jqGrid('setCell', i, cellname, data);
  335. }
  336. };
  337. $('#ITP_FORM_STINFO06010_DETAIL_FROM_DT').datepicker().on('changeDate', function () {
  338. fnDateChange('contSttDt', $(this).val());
  339. });
  340. $('#ITP_FORM_STINFO06010_DETAIL_TO_DT').datepicker().on('changeDate', function () {
  341. fnDateChange('contEndDt', $(this).val());
  342. });
  343. $('body').on('click', function(e) {
  344. var gridId = STINFO06010_DETAIL_GRID_ID.replace('#', '');
  345. itp_fn_grid_reset_selection(e, STINFO06010_GRID_LAST_ROW_ID, gridId, 'STINFO06010');
  346. var preItemId = $(STINFO06010_DETAIL_GRID_ID).jqGrid('getCell', STINFO06010_GRID_LAST_ROW_ID, 'itemId');
  347. if(preItemId !== undefined) {
  348. var preUnitAmt = $(STINFO06010_DETAIL_GRID_ID).jqGrid('getCell', STINFO06010_GRID_LAST_ROW_ID, 'unitAmt');
  349. var cnt = $(STINFO06010_DETAIL_GRID_ID).getGridParam("reccount");
  350. var itemId;
  351. var viewCd ;
  352. for (var i = 1; i <= cnt ; i++) {
  353. itemId = $(STINFO06010_DETAIL_GRID_ID).jqGrid('getCell', i, 'itemId');
  354. viewCd = $(STINFO06010_DETAIL_GRID_ID).jqGrid('getCell', i, 'viewCd');
  355. if(preItemId == itemId) {
  356. if (viewCd != "C") {
  357. $(STINFO06010_DETAIL_GRID_ID).jqGrid('setCell', i, 'viewCd', 'U');
  358. }
  359. $(STINFO06010_DETAIL_GRID_ID).jqGrid('setCell', i, 'unitAmt', preUnitAmt);
  360. }
  361. }
  362. }
  363. });
  364. }
  365. },
  366. action: function () {
  367. var _this = this;
  368. //시작일자 변경시
  369. $('#ITP_FORM_STINFO06010_DETAIL_FROM_DT').focusin(function() {
  370. $(this).data('pre', $(this).val());
  371. });
  372. $('#ITP_FORM_STINFO06010_DETAIL_TO_DT').focusin(function() {
  373. $('#ITP_FORM_STINFO06010_DETAIL_TO_DT').data('pre', $(this).val());
  374. });
  375. $('#ITP_FORM_STINFO06010_DETAIL_FROM_DT').change(function() {
  376. if(pageObj.screenMode === 'MODIFY') {
  377. var preDate = $(this).data('pre');
  378. var topreDate = $('#ITP_FORM_STINFO06010_DETAIL_TO_DT').data('pre');
  379. var chgDate = $(this).val();
  380. var endDt = $('#ITP_FORM_STINFO06010_DETAIL_TO_DT').val();
  381. if (preDate > endDt) {
  382. if ( preDate != chgDate) {
  383. alert("계약 종료일은 시작일보다 이전일수 없습니다.");
  384. $('#ITP_FORM_STINFO06010_DETAIL #ITP_FORM_STINFO06010_DETAIL_FROM_DT').datepicker('setDate', new Date(preDate));
  385. $('#ITP_FORM_STINFO06010_DETAIL #ITP_FORM_STINFO06010_DETAIL_TO_DT').datepicker('setDate', new Date(topreDate));
  386. return;
  387. }
  388. } else {
  389. if ( preDate != chgDate) {
  390. alert("계약 시작일은 변경할 수 없습니다.");
  391. $('#ITP_FORM_STINFO06010_DETAIL #ITP_FORM_STINFO06010_DETAIL_FROM_DT').datepicker('setDate', new Date(preDate));
  392. return;
  393. }
  394. }
  395. }
  396. });
  397. },
  398. switchScreen: function(mode) {
  399. this.screenMode = mode;
  400. $('.itp_det_head').find('button[id^="ITP_BTN_STINFO06010_"]').each(function(i) {
  401. $(this).hide();
  402. });
  403. $('#ITP_TAB_STINFO06010').find('div[id$="_CONTAINER"]').each(function(i) {
  404. $(this).hide();
  405. });
  406. $('#ITP_FORM_STINFO06010_DETAIL_FROM_DT').val('');
  407. $('#ITP_FORM_STINFO06010_DETAIL_TO_DT').val('');
  408. /*
  409. if(mode == 'ADD') {
  410. $("#ITP_FORM_STINFO06010_DETAIL_FROM_DT").removeAttr('readonly');
  411. } else {
  412. //$('#ITP_FORM_STINFO06010_DETAIL .contDt').hide();
  413. //$('#ITP_FORM_STINFO06010_DETAIL_FROM_DT').attr('readonly','true');
  414. document.getElementById('ITP_FORM_STINFO06010_DETAIL_FROM_DT').readOnly = true;
  415. }
  416. */
  417. $('#ITP_FORM_STINFO06010_DETAIL .contDt').show();
  418. //if(pageObj.screenMode === 'ADD')
  419. if(mode == 'LIST') { // 목록
  420. //itp_fn_fire_window_resize();
  421. $('#ITP_AJAX_STINFO06010_LIST_CONTAINER').show();
  422. if(fn_make_user_info.get('authTpCd') === '50') {
  423. fn_show_btn_auth_array(['#ITP_BTN_STINFO06010_SRH']);
  424. $('#ITP_FORM_STINFO06010_SEARCH_STORE_ID').val(fn_make_user_info.get('storeId'));
  425. $('#ITP_FORM_STINFO06010_SEARCH_STORE').hide();
  426. } else {
  427. fn_show_btn_auth_array(['#ITP_BTN_STINFO06010_SRH', '#ITP_BTN_STINFO06010_NEWREG']);
  428. $('#ITP_BTN_STINFO06010_EXCEL').show();
  429. $('#ITP_BTN_STINFO06010_DETAIL_DELETE_STORE').show();
  430. }
  431. $('#ITP_FORM_STINFO06010_SEARCH_BRAND_ID').val(fn_make_user_info.get('brandId'));
  432. } else if(mode == 'ADD') { // 등록
  433. itp_fn_form_clear_validate(null, '#ITP_FORM_STINFO07010_DETAIL');
  434. $('#ITP_FORM_STINFO06010_DETAIL').find('input, textarea, select, checkbox').each(function(i, elem) {
  435. $(this).attr('id') === 'ITP_FORM_STINFO06010_DETAIL_VIEW_CD' ? $(this).val('C') : $(this).val('');
  436. if(elem.type === 'select') {
  437. $(this).val('').prop('selected', true);
  438. }
  439. });
  440. $('#ITP_AJAX_STINFO06010_DETAIL_CONTAINER').show();
  441. $('#ITP_BTN_STINFO06010_SRH').show();
  442. fn_show_btn_auth_array(['#ITP_BTN_STINFO06010_CANCELLIST', '#ITP_BTN_STINFO06010_SAVE']);
  443. $('#ITP_BTN_STINFO06010_DETAIL_SEARCH_STORE').removeAttr('disabled');
  444. $('#ITP_BTN_STINFO06010_DETAIL_DELETE_STORE').removeAttr('disabled');
  445. // 브랜드그룹 정보 설정
  446. $('#ITP_FORM_STINFO06010_DETAIL_BRAND_ID').val(fn_make_user_info.get('brandId'));
  447. $('#ITP_FORM_STINFO06010_DETAIL #ITP_FORM_STINFO06010_DETAIL_FROM_DT').datepicker('setDate', new Date());
  448. $('#ITP_FORM_STINFO06010_DETAIL #ITP_FORM_STINFO06010_DETAIL_TO_DT').datepicker('setDate', itp_fn_date_add('Y', 1));
  449. $('#ITP_BTN_STINFO06010_DETAIL_EXCEL').show();
  450. $('#ITP_BTN_STINFO06010_CALCULATE').show();
  451. //return itp_fn_date_format(date.setDate(-1), 2);
  452. } else if(mode == 'MODIFY') { // 수정
  453. $('#ITP_AJAX_STINFO06010_DETAIL_CONTAINER').show();
  454. if(fn_make_user_info.get('authTpCd') === '50') {
  455. fn_show_btn_auth_array(['#ITP_BTN_STINFO06010_CANCELLIST']);
  456. } else {
  457. fn_show_btn_auth_array(['#ITP_BTN_STINFO06010_CANCELLIST', '#ITP_BTN_STINFO06010_SAVE']);
  458. }
  459. $('#ITP_BTN_STINFO06010_DETAIL_SEARCH_STORE').attr('disabled', true);
  460. $('#ITP_BTN_STINFO06010_DETAIL_DELETE_STORE').attr('disabled', true);
  461. // $('#ITP_BTN_STINFO06010_SRH').show();
  462. $('#ITP_BTN_STINFO06010_DETAIL_EXCEL').show();
  463. $('#ITP_BTN_STINFO06010_CALCULATE').show();
  464. // 브랜드그룹 정보 설정
  465. $('#ITP_FORM_STINFO06010_DETAIL_BRAND_ID').val(fn_make_user_info.get('brandId'));
  466. } else if(mode == 'VIEW') { // 보기
  467. $('#ITP_AJAX_STINFO06010_VIEW_CONTAINER').show();
  468. fn_show_btn_auth_array(['#ITP_BTN_STINFO06010_MODIFY', '#ITP_BTN_STINFO06010_CANCELLIST']);
  469. }
  470. this.screenMode = mode;
  471. },
  472. excelDown: function() {
  473. var param = {
  474. 'url': API_DETAIL_GRID_LIST,
  475. 'param': $('#ITP_FORM_STINFO06010_SEARCH').serializeObject(),
  476. 'gridColumns': $(STINFO06010_GRID_ID).jqGrid('getGridParam', 'colModel'),
  477. 'fileName': '매장단가관리.xlsx',
  478. 'sheetName': '매장단가관리'
  479. };
  480. itp_fn_remote_to_excel(param);
  481. },
  482. excelDtlDown: function() {
  483. var storeId = $('#ITP_FORM_STINFO06010_DETAIL_STORE_ID').val();
  484. var contSttDt = $('#ITP_FORM_STINFO06010_DETAIL_FROM_DT').val();
  485. var contEndDt = $('#ITP_FORM_STINFO06010_DETAIL_FROM_DT').val();
  486. const key = {brandId:fn_make_user_info.get('brandId'), storeId: storeId, contSttDt: contSttDt, contEndDt: contEndDt, viewCd: 'R'};
  487. var param = {
  488. 'url': API_DETAIL_INFO,
  489. 'param': key,
  490. 'gridColumns': $(STINFO06010_DETAIL_GRID_ID).jqGrid('getGridParam', 'colModel'),
  491. 'fileName': '매장단가정보.xlsx',
  492. 'sheetName': '매장단가상세정보'
  493. };
  494. itp_fn_remote_to_excel(param);
  495. },
  496. calculate: function() {
  497. var rowId = $(STINFO06010_DETAIL_GRID_ID).jqGrid("getGridParam","selarrrow");
  498. console.log(rowId);
  499. }
  500. };
  501. /*목록화면 Object*/
  502. let listObj = {
  503. init: function () {
  504. this.grid.init();
  505. },
  506. itp_STINFO06010_search: false,
  507. button: {
  508. search: function() {
  509. listObj.itp_STINFO06010_search = true;
  510. let param = $('#ITP_FORM_STINFO06010_SEARCH').serializeObject();
  511. param.gridSize = $.jgrid.defaults.rowNum;
  512. param.gridPage = $.jgrid.defaults.page;
  513. $(STINFO06010_GRID_ID).data('grid-param',param);
  514. $(STINFO06010_GRID_ID).setGridParam({'postData': JSON.stringify(param)}).trigger('reloadGrid');
  515. },
  516. create: function() {
  517. var param = {'brandId':fn_make_user_info.get('brandId')};
  518. createObj.init(param);
  519. }
  520. },
  521. empty: {
  522. init: function() {
  523. },
  524. itp_STINFO06010_param: {},
  525. push: function() {
  526. },
  527. back: function() {
  528. }
  529. },
  530. grid: {
  531. init: function () {
  532. // 데이터 없을때
  533. listObj.empty.push();
  534. this.search();
  535. },
  536. search: function() {
  537. pageObj.switchScreen('LIST');
  538. this.unload();
  539. this.load();
  540. },
  541. load: function() {
  542. let param = $('#ITP_FORM_STINFO06010_SEARCH').serializeObject();
  543. param.gridSize = $.jgrid.defaults.rowNum;
  544. param.sbrandId = fn_make_user_info.get('brandId');
  545. param.sstoreId = fn_make_user_info.get('storeId');
  546. var option = {
  547. gridId: STINFO06010_GRID_ID,
  548. colModel: gridColModel.list,
  549. param: param,
  550. url: DOMAIN + API_DETAIL_GRID_LIST,
  551. pager: STINFO06010_GRID_PAGER,
  552. onCellSelect: function(rowId, cellIdx, cellValue) {
  553. var cm = $(this).jqGrid('getGridParam', 'colModel');
  554. var colNm = cm[cellIdx].name;
  555. if (colNm === 'contSttDt') {
  556. const storeId = $(this).jqGrid('getCell', rowId, 'storeId');
  557. const storeNm = $(this).jqGrid('getCell', rowId, 'storeNm');
  558. const contSttDt = $(this).jqGrid('getCell', rowId, 'contSttDt');
  559. const contEndDt = $(this).jqGrid('getCell', rowId, 'contEndDt');
  560. $('#ITP_FORM_STINFO06010_DETAIL_STORE_ID').val(storeId);
  561. $('#ITP_FORM_STINFO06010_DETAIL_STORE_NM').val(storeNm);
  562. const key = {brandId:fn_make_user_info.get('brandId'), storeId: storeId, contSttDt: contSttDt, contEndDt: contEndDt, viewCd: 'R'};
  563. // var param = $.param(key);
  564. modifyObj.init(key);
  565. }
  566. },
  567. loadComplete: function(data) {
  568. console.log(data);
  569. itp_fn_grid_load_complete(data, STINFO06010_GRID_ID, true, 'number', 'STINFO06010', listObj.itp_STINFO06010_search, listObj.empty, true, data.gridRecords, true);
  570. var ids = $(STINFO06010_GRID_ID).getDataIDs();
  571. $.each(ids, function(idx, rowId) {
  572. $(STINFO06010_GRID_ID).jqGrid('setCell', rowId, 'contSttDt', '', ITP_GRID_COL_STYLE.link);
  573. });
  574. },
  575. onPaging: function(action) {
  576. itp_fn_grid_paging(STINFO06010_GRID_ID, action, param);
  577. }
  578. };
  579. itp_fn_grid_make_remote(option);
  580. },
  581. clearData : function() {
  582. $(STINFO06010_GRID_ID).jqGrid('clearGridData', true);
  583. $(STINFO06010_GRID_LIST).find('.ui-jqgrid-bdiv').css('min-height', '100px');
  584. $(STINFO06010_GRID_EMPTY).html(ITP_MSG_LOCALE.message.grid.noData);
  585. $(STINFO06010_GRID_EMPTY).show();
  586. },
  587. unload : function() {
  588. $.jgrid.gridUnload(STINFO06010_GRID_ID);
  589. }
  590. }
  591. };
  592. /*수정화면 Object*/
  593. let modifyObj = {
  594. init: function (param) {
  595. pageObj.switchScreen('MODIFY');
  596. // var param = $.param($('#ITP_FORM_STINFO06010_DETAIL').serializeObject());
  597. this.grid.init(param);
  598. },
  599. itp_STINFO06010_search: false,
  600. search: function() {
  601. listObj.itp_STINFO06010_search = true;
  602. let param = $('#ITP_FORM_STINFO06010_DETAIL').serializeObject();
  603. param.gridSize = 100 ; //$.jgrid.defaults.rowNum;
  604. param.gridPage = $.jgrid.defaults.page;
  605. $(STINFO06010_DETAIL_GRID_ID).setGridParam({'postData': JSON.stringify(param)}).trigger('reloadGrid');
  606. },
  607. button: {
  608. },
  609. empty: {
  610. init: function() {
  611. var _this = this;
  612. this.push();
  613. $(STINFO06010_DETAIL_GRID_EMPTY).on('click', function() {
  614. _this.back();
  615. _this.itp_STINFO06010_param.gridSize = 100 ; // $.jgrid.defaults.rowNum;
  616. $(STINFO06010_DETAIL_GRID_ID).setGridParam($.param(_this.itp_STINFO06010_param)).trigger('reloadGrid');
  617. });
  618. },
  619. itp_STINFO06010_param: {},
  620. push: function() {
  621. let param = $('#ITP_FORM_STINFO06010_DETAIL').serializeObject();
  622. listObj.itp_STINFO06010_param = param;
  623. },
  624. back: function() {
  625. }
  626. },
  627. grid: {
  628. init: function (param) {
  629. // 데이터 없을때
  630. listObj.empty.push();
  631. this.unload();
  632. this.load(param);
  633. },
  634. prevRowId: null,
  635. load: function(param) {
  636. var _this = this;
  637. $('#ITP_FORM_STINFO06010_DETAIL_FROM_DT').val(param.contSttDt);
  638. $('#ITP_FORM_STINFO06010_DETAIL_TO_DT').val(param.contEndDt);
  639. var option = {
  640. gridId: STINFO06010_DETAIL_GRID_ID,
  641. colModel: fn_make_user_info.get('authTpCd') === '50' ? gridColModel.sdetail : gridColModel.detail,
  642. param: param,
  643. height : 'auto',
  644. rowNum: '',
  645. url: DOMAIN + API_DETAIL_INFO,
  646. loadComplete: function(data) {
  647. //console.log("12121212121212");
  648. //$(STINFO06010_DETAIL_GRID_LIST).jqGrid('hideCol',["spplyNm","spplyUnitAmt"]);
  649. createObj.rows = data.gridRows;
  650. itp_fn_grid_load_complete(data, STINFO06010_DETAIL_GRID_ID, false, 'number', 'STINFO06010', modifyObj.itp_STINFO06010_search, modifyObj.empty, true, data.gridRecords, true);
  651. },
  652. onCellSelect: function(rowid, cellIdx, cellValue) {
  653. if(fn_make_user_info.get('authTpCd') !== '50') {
  654. STINFO06010_GRID_LAST_ROW_ID = itp_fn_set_data_editable(rowid, cellIdx, STINFO06010_GRID_LAST_ROW_ID, STINFO06010_DETAIL_GRID_ID, ['actionId']);
  655. }
  656. },
  657. onPaging: function(action) {
  658. itp_fn_grid_paging(STINFO06010_GRID_ID, action, param);
  659. }
  660. };
  661. //itp_fn_grid_make_remote(option);
  662. itp_fn_grid_make_not_paging(option);
  663. },
  664. clearData : function() {
  665. $(STINFO06010_DETAIL_GRID_ID).jqGrid('clearGridData', true);
  666. $(STINFO06010_DETAIL_GRID_LIST).find('.ui-jqgrid-bdiv').css('min-height', '100px');
  667. $(STINFO06010_DETAIL_GRID_EMPTY).html(ITP_MSG_LOCALE.message.grid.noData);
  668. $(STINFO06010_DETAIL_GRID_EMPTY).show();
  669. },
  670. unload : function() {
  671. $.jgrid.gridUnload(STINFO06010_DETAIL_GRID_ID);
  672. }
  673. }
  674. };
  675. /*신규화면 Object*/
  676. function fn_grid_new(option) {
  677. var options = $.extend({
  678. mtype: 'POST',
  679. multiselect: false,
  680. rownumbers: true,
  681. ondblClickRow: null,
  682. loadBeforeSend: function(jqXHR) {
  683. jqXHR.setRequestHeader('X-AUTH-TOKEN', CONN_KEY);
  684. },
  685. loadError: function(jqXHR, textStatus, errorThrown) {
  686. itp_fn_grid_load_error(jqXHR, textStatus, errorThrown);
  687. }
  688. }, option);
  689. $(options.gridId).jqGrid({
  690. colModel: options.colModel,
  691. postData: JSON.stringify(options.param),
  692. mtype: options.mtype,
  693. url: options.url,
  694. rowNum: 10000,
  695. multiselect: options.multiselect,
  696. loadBeforeSend: options.loadBeforeSend,
  697. onCellSelect: options.onCellSelect,
  698. ondblClickRow: options.ondblClickRow,
  699. loadComplete: options.loadComplete,
  700. loadError: options.loadError,
  701. gridComplete: function () {
  702. $(STINFO06010_DETAIL_GRID_ID+'View').html("전체: "+$(options.gridId).getGridParam('records')+'건')
  703. }
  704. });
  705. }
  706. let createObj = {
  707. init: function (param) {
  708. pageObj.switchScreen('ADD');
  709. this.grid.init(param);
  710. this.button.init();
  711. },
  712. button: {
  713. init: function() {
  714. // 브랜드그룹 조회 버튼 클릭
  715. $('#ITP_BTN_STINFO06010_DETAIL_SEARCH_STORE').on('click', function() {
  716. createObj.popup();
  717. });
  718. // 브랜드그룹 텍스트 삭제 버튼 클릭
  719. $('#ITP_BTN_STINFO06010_DETAIL_DELETE_STORE').one('click', function() {
  720. $('#ITP_FORM_STINFO06010_DETAIL_BRAND_ID').val('');
  721. $('#ITP_FORM_STINFO06010_DETAIL_STORE_ID').val('');
  722. $('#ITP_FORM_STINFO06010_DETAIL_STORE_NM').val('');
  723. });
  724. },
  725. cancel: function() {
  726. listObj.grid.search();
  727. },
  728. save: function() {
  729. const formId = '#ITP_FORM_STINFO06010_DETAIL';
  730. var isValid = true;
  731. if(pageObj.screenMode === 'ADD') {
  732. //isValid = itp_fn_form_event.isValid(formId);
  733. //매장 아이디 존재 여부 확인
  734. var storeChk = $('#ITP_FORM_STINFO06010_DETAIL_STORE_ID').val();
  735. if (storeChk == '') {
  736. alert("계약할 매장을 선택해주세요!");
  737. return;
  738. }
  739. }
  740. if (isValid) {
  741. itp_fn_grid_save_rows(STINFO06010_DETAIL_GRID_ID);
  742. var rows = $(STINFO06010_DETAIL_GRID_ID).getRowData();
  743. let param = {};
  744. var gridInsertData = [];
  745. var gridUpdateData = [];
  746. var changeRows = createObj.changeRows(rows);
  747. $.each(changeRows, function (index, item) {
  748. if(item.viewCd === 'C') {
  749. gridInsertData.push(item);
  750. } else if(item.viewCd === 'U') {
  751. gridUpdateData.push(item);
  752. }
  753. // if(pageObj.screenMode === 'ADD') {
  754. // gridInsertData.push(item);
  755. // } else {
  756. // if(item.viewCd === 'C') {
  757. // gridInsertData.push(item);
  758. // } else if(item.viewCd === 'U') {
  759. // gridUpdateData.push(item);
  760. // }
  761. // }
  762. });
  763. param['viewCd'] = 'U';
  764. param['brandId'] = fn_make_user_info.get('brandId');
  765. param['storeId'] = $('#ITP_FORM_STINFO06010_DETAIL_STORE_ID').val();
  766. param['contSttDt'] = $('#ITP_FORM_STINFO06010_DETAIL_FROM_DT').val();
  767. param['contEndDt'] = $('#ITP_FORM_STINFO06010_DETAIL_TO_DT').val();
  768. if(pageObj.screenMode === 'ADD')
  769. {
  770. //param['contSttDt'] = $('#ITP_FORM_STINFO06010_DETAIL_FROM_DT').val();
  771. //param['contEndDt'] = $('#ITP_FORM_STINFO06010_DETAIL_TO_DT').val();
  772. param['viewCd'] = "C";
  773. } else {
  774. param['viewCd'] = "U";
  775. }
  776. param['gridInsertData'] = gridInsertData;
  777. param['gridUpdateData'] = gridUpdateData;
  778. console.log(JSON.stringify(param));
  779. var searhFn = function() {
  780. listObj.grid.search();
  781. };
  782. fn_ajax_call(API_DETAIL_SAVE, JSON.stringify(param), searhFn, 'POST');
  783. }
  784. }
  785. },
  786. grid: {
  787. init: function (param) {
  788. // 데이터 없을때
  789. listObj.empty.push();
  790. this.unload();
  791. this.load(param);
  792. },
  793. rows: [],
  794. prevRowId: null,
  795. load: function(param) {
  796. var _this = this;
  797. console.log(param);
  798. var option = {
  799. gridId: STINFO06010_DETAIL_GRID_ID,
  800. colModel: fn_make_user_info.get('authTpCd') === '50' ? gridColModel.sdetail : gridColModel.detail,
  801. mtype: 'POST',
  802. param: param,
  803. url: DOMAIN + API_DETAIL_NEW,
  804. loadComplete: function(data) {
  805. console.log(data);
  806. createObj.rows = data.gridRows;
  807. itp_fn_grid_load_complete(data, STINFO06010_DETAIL_GRID_ID, false, 'number', 'STINFO06010', modifyObj.itp_STINFO06010_search, modifyObj.empty, true, data.gridRecords, true);
  808. $('#ITP_FORM_STINFO06010_DETAIL_FROM_DT').datepicker().trigger('changeDate');
  809. $('#ITP_FORM_STINFO06010_DETAIL_TO_DT').datepicker().trigger('changeDate');
  810. },
  811. onCellSelect: function(rowid, cellIdx, cellValue) {
  812. STINFO06010_GRID_LAST_ROW_ID = itp_fn_set_data_editable(rowid, cellIdx, STINFO06010_GRID_LAST_ROW_ID, STINFO06010_DETAIL_GRID_ID, ['actionId']);
  813. },
  814. onPaging: function(action) {
  815. itp_fn_grid_paging(STINFO06010_GRID_ID, action, param);
  816. }
  817. };
  818. fn_grid_new(option);
  819. },
  820. clearData : function() {
  821. $(STINFO06010_DETAIL_GRID_ID).jqGrid('clearGridData', true);
  822. $(STINFO06010_DETAIL_GRID_LIST).find('.ui-jqgrid-bdiv').css('min-height', '100px');
  823. $(STINFO06010_DETAIL_GRID_EMPTY).html(ITP_MSG_LOCALE.message.grid.noData);
  824. $(STINFO06010_DETAIL_GRID_EMPTY).show();
  825. },
  826. unload : function() {
  827. $.jgrid.gridUnload(STINFO06010_DETAIL_GRID_ID);
  828. }
  829. },
  830. popup: function() {
  831. var popFn = function(rowDataPop) {
  832. console.log(rowDataPop);
  833. if(rowDataPop && rowDataPop.length > 0) {
  834. console.log(rowDataPop[0].storeNm);
  835. $('#ITP_FORM_STINFO06010_DETAIL_BRAND_ID').val(rowDataPop[0].brandId);
  836. $('#ITP_FORM_STINFO06010_DETAIL_STORE_ID').val(rowDataPop[0].storeId);
  837. $('#ITP_FORM_STINFO06010_DETAIL_STORE_NM').val(rowDataPop[0].storeNm);
  838. }
  839. // 강제로 팝업 창닫기 실행
  840. setTimeout(function() {
  841. $('.modal-backdrop').hide();
  842. }, 500);
  843. };
  844. fn_call_popup('biz', 'BIZPOP_BRAND_STORE', '#ITP_ASIDE', popFn, null, 'S');
  845. },
  846. rows: [],
  847. changeRows: function(gridRows) {
  848. var modifyRows = [];
  849. var chkColumns = ['unit', 'curr', 'unitAmt', 'unitTargetCd'];
  850. $.each(this.rows, function(index, item) {
  851. var row = gridRows[index];
  852. if(row.viewCd === 'C') {
  853. modifyRows.push(item);
  854. } else {
  855. if(row.itemId === item.itemId) {
  856. $.each(chkColumns, function(index, column) {
  857. if(row[column].toString() !== item[column].toString()) {
  858. row.viewCd = 'U';
  859. modifyRows.push(row);
  860. return false;
  861. }
  862. });
  863. }
  864. }
  865. });
  866. return modifyRows;
  867. }
  868. };