ITP_MCOLLMNG02010.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390
  1. require(['config'], function() {
  2. require([
  3. ], function($) {
  4. mobPageObj.init();
  5. });
  6. });
  7. /*API URL*/
  8. const API_MOBILE_GRID_LIST = '/api/rtnmng/inoutmng/spply-target-rtn-grid-list'; // 목록
  9. const API_MOBILE_INFO = '/api/rtnmng/inoutmng/init-spply-col'; // 상세
  10. const API_MOBILE_SAVE = '/api/rtnmng/inoutmng/save-spply-col'; // 저장
  11. const API_POP_SEARCH_LIST = '/api/whs/mng/pop-whs-search';
  12. const PAGE_MODE_LIST = "LIST";
  13. const PAGE_MODE_VIEW = "VIEW";
  14. let mobPageObj = {
  15. viewMode: PAGE_MODE_LIST,
  16. init: function () {
  17. this.ui.init();
  18. this.event.init();
  19. this.ready();
  20. },
  21. ui: {
  22. init: function () {
  23. this.view();
  24. this.info();
  25. },
  26. view: function() {
  27. // 공통코드 표시
  28. $('select').each(function() {
  29. if($(this).data('select-code')) {
  30. fn_make_select(CODE_LIST, $(this).data('select-code'), $(this).attr('id'));
  31. }
  32. });
  33. // 조회일자 지정
  34. $('#ITP_MOBILE_MCOLLMNG02010 .itp_input.date').datepicker(ITP_DATE_LANGUAGE);
  35. $('#ITP_FORM_MCOLLMNG02010_LIST_SEARCH_FROM_DT').datepicker('setDate', itp_fn_date_add('M', -7));
  36. $('#ITP_FORM_MCOLLMNG02010_LIST_SEARCH_TO_DT').datepicker('setDate', itp_fn_date_add('M', 0));
  37. },
  38. info: function() {
  39. $('input:hidden[id$="_BRAND_ID"]').val(fn_make_user_info.get('brandId'));
  40. $('input:hidden[id$="_STORE_ID"]').val(fn_make_user_info.get('storeId'));
  41. $('input:hidden[id$="_SPPLY_ID"]').val(fn_make_user_info.get('userId'));
  42. }
  43. },
  44. event: {
  45. init: function() {
  46. this.button();
  47. },
  48. button: function() {
  49. $('button[id^="ITP_BTN_MCOLLMNG02010_LIST"]').on('click', function() {
  50. var id = $(this).attr('id');
  51. switch (id) {
  52. case 'ITP_BTN_MCOLLMNG02010_LIST_SEARCH_WHS_NM' : mobPopObj.popWhsNm.init(); break;
  53. case 'ITP_BTN_MCOLLMNG02010_LIST_DELETE_WHS_NM' : mobPopObj.popWhsNm.delete(); break;
  54. case 'ITP_BTN_MCOLLMNG02010_LIST_SEARCH' : mobContentObj.list.search(); break;
  55. case 'ITP_BTN_MCOLLMNG02010_LIST_CREATE' : mobContentObj.list.colPrint(); break;
  56. }
  57. return false;
  58. });
  59. $('button[id^="ITP_BTN_MCOLLMNG02010_VIEW"]').on('click', function() {
  60. var id = $(this).attr('id');
  61. switch (id) {
  62. case 'ITP_BTN_MCOLLMNG02010_VIEW_COL_ADD' : mobContentObj.view.add(); break;
  63. case 'ITP_BTN_MCOLLMNG02010_VIEW_CANCEL_LIST' : mobContentObj.view.cancel(); break;
  64. }
  65. return false;
  66. });
  67. $(document).off('click');
  68. // $(document).on('click', '#ITP_LIST_MCOLLMNG02010_LIST_ITEM_ROWS li button', function() {
  69. // var item = mobContentObj.list.rows[$(this).index()];
  70. // mobContentObj.view.init(item);
  71. // });
  72. $(document).on('click', 'input[type="checkbox"][id="ITP_LIST_MCOLLMNG02010_LIST_ITEM_CHECKBOX"]', function() {
  73. if($(this).prop('checked')) {
  74. $('input[type="checkbox"][id="ITP_LIST_MCOLLMNG02010_LIST_ITEM_CHECKBOX"]').prop('checked', false);
  75. $(this).prop('checked', true);
  76. }
  77. });
  78. $(document).on('click', '#ITP_LIST_MCOLLMNG02010_POP_WHS_ROWS li button', function() {
  79. mobPopObj.popWhsNm.choice($(this));
  80. });
  81. }
  82. },
  83. switchScreen: function(mode) {
  84. $('#ITP_MOBILE_MCOLLMNG02010').find('div[id$="_CONTAINER"]').each(function(i) {
  85. $(this).hide();
  86. });
  87. if(mode === PAGE_MODE_LIST) {
  88. $('#ITP_AJAX_MCOLLMNG02010_LIST_CONTAINER').show();
  89. this.moreView(true);
  90. } else if(mode === PAGE_MODE_VIEW) {
  91. $('#ITP_AJAX_MCOLLMNG02010_VIEW_CONTAINER').show();
  92. this.moreView(false);
  93. }
  94. this.viewMode = mode;
  95. },
  96. moreView: function(isScroll) {
  97. var _this = this;
  98. if(isScroll) {
  99. $('#ITP_LIST_MCOLLMNG02010_LIST_ITEM_AREA').on('scroll', function () {
  100. if($(this).scrollTop() + $(this).innerHeight() + 1 >= $(this)[0].scrollHeight) {
  101. if(mobContentObj.list.totPage > mobContentObj.list.listPage) {
  102. if(!mobContentObj.list.isSearch) {
  103. mobContentObj.list.load();
  104. }
  105. }
  106. }
  107. });
  108. } else {
  109. $('#ITP_LIST_MCOLLMNG02010_LIST_AREA').off('scroll');
  110. }
  111. },
  112. ready: function() {
  113. mobContentObj.list.init();
  114. }
  115. };
  116. let mobContentObj = {
  117. list: {
  118. listSize: 10,
  119. listPage: 0,
  120. totPage: 0,
  121. isSearch: false,
  122. rows: [],
  123. init: function() {
  124. mobPageObj.switchScreen(PAGE_MODE_LIST);
  125. this.search();
  126. },
  127. search: function() {
  128. this.listPage = 0;
  129. this.totPage = 0;
  130. this.rows.length = 0;
  131. $('#ITP_LIST_MCOLLMNG02010_LIST_ITEM_ROWS').empty();
  132. this.load();
  133. },
  134. load: function() {
  135. var _this = this;
  136. this.isSearch = true;
  137. var callbackFn = function(result) {
  138. console.log(result);
  139. _this.isSearch = false;
  140. _this.totPage = result.gridTotal;
  141. $.each(result.gridRows, function (i, item) {
  142. $('#ITP_LIST_MCOLLMNG02010_LIST_ITEM_AREA .panel-group').append($('#ITP_LIST_MCOLLMNG02010_LIST_ITEM_ROWCOPY').html());
  143. var $li = $('#ITP_LIST_MCOLLMNG02010_LIST_ITEM_AREA .panel-group > .list-row:last');
  144. $li.find('.fnBrandNm').text(item.brandNm);
  145. $li.find('.fnRtnPodrUnqNo').text(item.rtnPodrUnqNo);
  146. $li.find('.fnRtnPodrNo').text(item.rtnPodrNo);
  147. $li.find('.fnColReqDt').text(item.colReqDt);
  148. $li.find('.fnRtnWhsNm').text(item.rtnWhsNm);
  149. $li.find('.fnItemId').text(item.itemId);
  150. $li.find('.fnItemNm').text(item.itemNm);
  151. $li.find('.fnRtnDodrItemQty').text(CommonObj.currency.add(item.rtnDodrItemQty, '개'));
  152. $li.find('.fnUnitAmt').text(CommonObj.comma.set(item.unitAmt));
  153. $li.find('.fnRtnDodrTotalAmt').text(CommonObj.comma.set(item.rtnDodrTotalAmt));
  154. _this.rows.push(item);
  155. });
  156. };
  157. var errFn = function() { _this.isSearch = false;};
  158. const param = $('#ITP_FORM_MCOLLMNG02010_LIST_SEARCH').serializeObject();
  159. param.gridPage = ++this.listPage;
  160. param.gridSize = this.listSize;
  161. console.log(JSON.stringify(param));
  162. fn_ajax_call(API_MOBILE_GRID_LIST, JSON.stringify(param), callbackFn, 'POST', errFn);
  163. },
  164. colPrint: function() {
  165. var iChoice = -1;
  166. $('input[type="checkbox"][id="ITP_LIST_MCOLLMNG02010_LIST_ITEM_CHECKBOX"]').each(function(index) {
  167. if($(this).is(":checked")) {
  168. iChoice = index;
  169. return false;
  170. }
  171. });
  172. if(iChoice === -1) {
  173. alert("수거서를 선택해주세요 (대표 수거서번호)");
  174. return;
  175. }
  176. mobContentObj.view.init(this.rows[iChoice]);
  177. }
  178. },
  179. view: {
  180. rows: [],
  181. init: function(item) {
  182. mobPageObj.switchScreen(PAGE_MODE_VIEW);
  183. this.search(item);
  184. },
  185. search: function(item) {
  186. var _this = this;
  187. var callbackFn = function(result) {
  188. console.log(result);
  189. _this.view(result);
  190. };
  191. const param = {
  192. 'brandId': fn_make_user_info.get('brandId'),
  193. 'spplyId': fn_make_user_info.get('userId'),
  194. 'rtnPodrUnqNo': item.rtnPodrUnqNo
  195. };
  196. fn_ajax_call(API_MOBILE_INFO, param, callbackFn, 'GET');
  197. },
  198. view: function(result) {
  199. var _this = this;
  200. var id = '#ITP_AJAX_MCOLLMNG02010_VIEW_CONTAINER';
  201. $(id).find('.fnBrandNm').text(result.brandNm);
  202. $(id).find('.fnRtnPodrUnqNo').text(result.rtnPodrUnqNo);
  203. $(id).find('.fnColReqDt').text(result.colReqDt);
  204. $(id).find('.fnRtnDodrTotalAmt').text(CommonObj.currency.add(result.rtnDodrTotalAmt));
  205. $(id).find('.fnRtnWhsNm').text(result.rtnWhsNm);
  206. $(id).find('.fnPickTelNo').text(result.pickTelNo);
  207. $(id).find('#ITP_FORM_MCOLLMNG02010_VIEW_COL_MGR_NM').val(result.rtnMgrNm);
  208. $(id).find('#ITP_FORM_MCOLLMNG02010_VIEW_COL_MGR_TEL_NO').val(result.rtnMgrTelNo);
  209. $.each(result.pickRtnDtlInfo, function (i, item) {
  210. $('#ITP_LIST_MCOLLMNG02010_VIEW_ITEM_AREA .panel-group').append($('#ITP_LIST_MCOLLMNG02010_VIEW_ITEM_ROWCOPY').html());
  211. var $li = $('#ITP_LIST_MCOLLMNG02010_VIEW_ITEM_AREA .panel-group > .list-row:last');
  212. $li.find('.fnRtnPodrDtlNo').text(item.rtnPodrDtlNo);
  213. $li.find('.fnItemId').text(item.itemId);
  214. $li.find('.fnItemNm').text(item.itemNm);
  215. $li.find('.fnRtnOdrQty').text(CommonObj.comma.set(item.rtnOdrQty));
  216. $li.find('.fnUnitAmt').text(CommonObj.currency.add(item.unitAmt));
  217. $li.find('.fnUnit').text(item.unit);
  218. $(id).find('#ITP_FORM_MCOLLMNG02010_VIEW_COL_QTY').val(result.coltQty);
  219. $(id).find('#ITP_FORM_MCOLLMNG02010_VIEW_RTN_RSN_DVSN').val(result.rtnRsnDvsn);
  220. $(id).find('#ITP_FORM_MCOLLMNG02010_VIEW_RTN_RSN').val(result.rtnRsn);
  221. _this.rows.push(item);
  222. });
  223. },
  224. add: function() {
  225. var _this = this;
  226. var param = {};
  227. var colSchDt = $('#ITP_AJAX_MCOLLMNG02010_VIEW_CONTAINER #ITP_FORM_MORDMNG02010_VIEW_COL_SCH_DT').val();
  228. var pickMgrNm = $('#ITP_AJAX_MCOLLMNG02010_VIEW_CONTAINER #ITP_FORM_MCOLLMNG02010_VIEW_PICK_MGR_NM').val();
  229. var pickMgrTelNo = $('#ITP_AJAX_MCOLLMNG02010_VIEW_CONTAINER #ITP_FORM_MCOLLMNG02010_VIEW_PICK_MGR_TEL_NO').val();
  230. if(colSchDt.length < 1) {
  231. alert('수거일자를 입력해 주세요.');
  232. return false;
  233. }
  234. if(pickMgrNm.length < 1) {
  235. alert('수거담당자를 입력해 주세요.');
  236. return false;
  237. }
  238. if(pickMgrTelNo.length < 1) {
  239. alert('수거담당자 연락처를 입력해 주세요.');
  240. return false;
  241. }
  242. var gridInsertData = [];
  243. var isValid = false;
  244. $('#ITP_LIST_MCOLLMNG02010_VIEW_ITEM_AREA .panel-group > .list-row').each(function(index) {
  245. var row = _this.rows[index];
  246. var item = {
  247. 'rtnPodrDtlNo': row.rtnPodrDtlNo,
  248. 'rtnPodrUnqNo': row.rtnPodrUnqNo,
  249. 'coltQty': $(this).find('#ITP_FORM_MCOLLMNG02010_VIEW_COL_QTY').val(),
  250. 'rtnRsnDvsn': $(this).find("#ITP_FORM_MCOLLMNG02010_VIEW_RTN_RSN_DVSN option:selected").val(),
  251. 'rtnRsn': $(this).find('#ITP_FORM_MCOLLMNG02010_VIEW_RTN_RSN').val()
  252. };
  253. if(item.coltQty.length < 1) {
  254. alert('수거수량을 입력해 주세요.');
  255. return false;
  256. }
  257. if(item.coltQty > row.rtnOdrQty) {
  258. alert('수거수량은 수거요청수량을 초과할 수 없습니다.');
  259. return false;
  260. }
  261. if(item.rtnRsnDvsn.length < 1) {
  262. alert('수거사유를 선택해 주세요.');
  263. return false;
  264. }
  265. item.expryDate = item.expryDate.replace(/-/g, ".");
  266. gridInsertData.push(item);
  267. isValid = true;
  268. });
  269. if(isValid) {
  270. param['viewCd'] = 'C';
  271. param['brandId'] = fn_make_user_info.get('brandId');
  272. param['spplyId'] = fn_make_user_info.get('userId');
  273. param['colSchDt'] = colSchDt.replace(/-/g, ".");
  274. param['pickMgrNm'] = pickMgrNm;
  275. param['pickMgrTelNo'] = pickMgrTelNo;
  276. param['gridInsertData'] = gridInsertData;
  277. console.log(JSON.stringify(param));
  278. var callbackFn = function(result) {
  279. console.log(result);
  280. _this.cancel();
  281. };
  282. fn_ajax_call(API_MOBILE_SAVE, JSON.stringify(param), callbackFn, 'POST');
  283. }
  284. },
  285. cancel: function () {
  286. var id = '#ITP_AJAX_MCOLLMNG02010_VIEW_CONTAINER';
  287. $(id).find('#ITP_FORM_MCOLLMNG02010_VIEW_COL_MGR_NM').val('');
  288. $(id).find('#ITP_FORM_MCOLLMNG02010_VIEW_COL_MGR_TEL_NO').val('');
  289. $(id).find('.fnBrandNm').text('');
  290. $(id).find('.fnRtnPodrDtlNo').text('');
  291. $(id).find('.fnRtnOdrRegDt').text('');
  292. $(id).find('.fnRtnDodrTotalAmt').text('');
  293. $(id).find('.fnRtnWhsNm').text('');
  294. $(id).find('.fnPickTelNo').text('');
  295. $(id).find('#ITP_FORM_MCOLLMNG02010_VIEW_COL_MGR_NM').val('');
  296. $(id).find('#ITP_FORM_MCOLLMNG02010_VIEW_COL_MGR_TEL_NO').val('');
  297. $('#ITP_LIST_MCOLLMNG02010_VIEW_ITEM_AREA .panel-group').empty();
  298. mobPageObj.switchScreen(PAGE_MODE_LIST);
  299. }
  300. }
  301. };
  302. let mobPopObj = {
  303. popWhsNm: {
  304. popId: 'ITP_POP_MCOLLMNG02010_WHS_AREA',
  305. rows: [],
  306. init: function () {
  307. this.rows.length = 0;
  308. mobPopObj.show(this.popId);
  309. this.search();
  310. this.action();
  311. },
  312. search: function () {
  313. var _this = this;
  314. $('#ITP_LIST_MCOLLMNG02010_POP_WHS_AREA .panel-group').empty();
  315. var callbackFn = function(result) {
  316. console.log(result);
  317. _this.view(result.gridRows);
  318. };
  319. const param = $('#ITP_FORM_MCOLLMNG02010_POP_WHS').serializeObject();
  320. param.swhsDvsn = 'W01';
  321. fn_ajax_call(API_POP_SEARCH_LIST, JSON.stringify(param), callbackFn, 'POST');
  322. },
  323. view: function(gridRows) {
  324. this.rows = gridRows;
  325. $.each(gridRows, function (i, item) {
  326. $('#ITP_LIST_MCOLLMNG02010_POP_WHS_AREA .panel-group').append($('#ITP_LIST_MCOLLMNG02010_POP_WHS_ROWCOPY').html());
  327. var $li = $('#ITP_LIST_MCOLLMNG02010_POP_WHS_AREA .panel-group > .list-row:last');
  328. $li.find('.fnWhsNm').text(item.whsNm);
  329. $li.find('.fnLocationNm').text(item.locationNm);
  330. $li.find('.fnWhsId').data('whs-id', item.whsId);
  331. });
  332. },
  333. choice: function(elem) {
  334. var _this = this;
  335. var whsId = $(elem).data('whs-id');
  336. $.each(this.rows, function (i, item) {
  337. if(whsId === item.whsId) {
  338. $('#ITP_FORM_MCOLLMNG02010_LIST_SEARCH #ITP_FORM_MCOLLMNG02010_LIST_SEARCH_WHS_ID').val(item.whsId);
  339. $('#ITP_FORM_MCOLLMNG02010_LIST_SEARCH #ITP_FORM_MCOLLMNG02010_LIST_SEARCH_WHS_NM').val(item.whsNm);
  340. _this.close();
  341. return false;
  342. }
  343. });
  344. },
  345. action: function() {
  346. var _this = this;
  347. $('button[id^="ITP_BTN_MCOLLMNG02010_POP_WHS"]').off('click').on('click', function() {
  348. var id = $(this).attr('id');
  349. switch (id) {
  350. case 'ITP_BTN_MCOLLMNG02010_POP_WHS_SEARCH' : _this.search(); break;
  351. case 'ITP_BTN_MCOLLMNG02010_POP_WHS_CHOICE' : _this.choice($(this)); break;
  352. case 'ITP_BTN_MCOLLMNG02010_POP_WHS_CLOSE' : _this.close(); break;
  353. }
  354. return false;
  355. });
  356. },
  357. delete: function() {
  358. $('#ITP_FORM_MCOLLMNG02010_LIST_SEARCH #ITP_FORM_MCOLLMNG02010_LIST_SEARCH_WHS_ID').val('');
  359. $('#ITP_FORM_MCOLLMNG02010_LIST_SEARCH #ITP_FORM_MCOLLMNG02010_LIST_SEARCH_WHS_NM').val('');
  360. },
  361. close: function() {
  362. this.rows.length = 0;
  363. $('#ITP_POP_MCOLLMNG02010_LIST_WHS_AREA .panel-group').empty();
  364. $('#ITP_FORM_MCOLLMNG02010_POP_WHS #ITP_FORM_MCOLLMNG02010_POP_WHS_KEYWORD').val('');
  365. mobPopObj.hide(this.popId);
  366. }
  367. },
  368. show: function(popId) {
  369. $('button[id$="_CLOSE"]').off('click').on('click', function() {
  370. console.log($(this).attr('id'));
  371. if($(this).hasClass('btn-pop-close')) {
  372. mobPopObj.hide(popId);
  373. }
  374. });
  375. $('#' + popId).show();
  376. },
  377. hide: function(popId) {
  378. $('#' + popId).closest('.mobile-pop-close').hide();
  379. }
  380. };