ITP_STINFO04010.js 51 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243
  1. require(['config'], function() {
  2. require([
  3. 'jquery.bootstrap.fileUpload', //파일 업로드가 있는 페이지에서 로딩
  4. 'xlsx' // 엑셀 다운로드
  5. ], function($) {
  6. pageObj.init();
  7. });
  8. });
  9. /********************************************************
  10. --------------------------------------------------------
  11. - Object 목록 -
  12. --------------------------------------------------------
  13. * const gridColModel = {} : 화면 Grid Object *
  14. * let pageObj = {} : 화면공통 Object *
  15. * let listObj = {} : 목록화면 Object *
  16. * let viewObj = {} : 상세화면 Object *
  17. * let modifyObj = {} : 수정화면 Object *
  18. * let createObj = {} : 신규화면 Object *
  19. *******************************************************/
  20. /*화면 변수*/
  21. const STINFO04010_GRID_ID = '#ITP_STINFO04010_jqGrid';
  22. const STINFO04010_GRID_LIST = '#ITP_STINFO04010_jqGrid_list';
  23. const STINFO04010_GRID_PAGER = '#ITP_STINFO04010_jqGridPager';
  24. const STINFO04010_GRID_EMPTY = '#ITP_STINFO04010_jqGridEmpty';
  25. const STINFO04010_UPLOAD_GRID_ID = '#ITP_STINFO04010_UPLOAD_jqGrid';
  26. const STINFO04010_UPLOAD_GRID_LIST = '#ITP_STINFO04010_UPLOAD_jqGrid_list';
  27. const STINFO04010_UPLOAD_GRID_PAGER = '#ITP_STINFO04010_UPLOAD_jqGridPager';
  28. const STINFO04010_UPLOAD_GRID_EMPTY = '#ITP_STINFO04010_UPLOAD_jqGridEmpty';
  29. const STINFO04010_VIEW_GRID_ID = '#ITP_STINFO04010_VIEW_jqGrid';
  30. const STINFO04010_VIEW_GRID_LIST = '#ITP_STINFO04010_VIEW_jqGrid_list';
  31. const STINFO04010_VIEW_GRID_PAGER = '#ITP_STINFO04010_VIEW_jqGridPager';
  32. const STINFO04010_VIEW_GRID_EMPTY = '#ITP_STINFO04010_VIEW_jqGridEmpty';
  33. const STINFO04010_DETAIL_GRID_ID = '#ITP_STINFO04010_DETAIL_jqGrid';
  34. const STINFO04010_DETAIL_GRID_LIST = '#ITP_STINFO04010_DETAIL_jqGrid_list';
  35. const STINFO04010_DETAIL_GRID_PAGER = '#ITP_STINFO04010_DETAIL_jqGridPager';
  36. const STINFO04010_DETAIL_GRID_EMPTY = '#ITP_STINFO04010_DETAIL_jqGridEmpty';
  37. let ITP_FORM_STINFO04010_DETAIL_IS_DUPLICATE = false;
  38. let ITP_FORM_STINFO04010_DETAIL_IS_WRITING = false;
  39. let STINFO04010_UPLOAD_GRID_LAST_ROW_ID;
  40. /*API URL*/
  41. let API_DETAIL_GRID_LIST = '/api/item/detail-grid-list'; // 목록
  42. let API_DETAIL_INFO = '/api/item/info-item'; // 상세
  43. let API_DETAIL_SAVE = '/api/item/save-item'; // 저장
  44. let API_DETAIL_SAVE_LIST = '/api/item/save-item-list'; // 일괄저장
  45. let API_ITEM_CLASS_LEVEL = '/api/item/class-level-list'; //품목분류 level 검색
  46. let API_GET_KEY = '/api/session/get-key';
  47. let SCREEN_MODE;
  48. function checkNumberPoint(event) {
  49. if(event.key === '.'
  50. || event.key === '-'
  51. || event.key >= 0 && event.key <= 9) {
  52. return true;
  53. }
  54. return false;
  55. }
  56. /*화면 Grid ColModel*/
  57. const gridColModel = {
  58. list: [
  59. {
  60. index: 'BRAND_ID', name: 'brandId',
  61. label: ITP_MSG_LOCALE.label.brandId, //브랜드ID
  62. width: '10', fixed: false, align: 'center',
  63. sortable: false, hidden: true
  64. },
  65. {
  66. index: 'BRAND_NM', name: 'brandNm',
  67. label: ITP_MSG_LOCALE.label.brandNm, //브랜드명
  68. width: '10', fixed: false, align: 'center',
  69. sortable: false, hidden: true
  70. },
  71. {
  72. index: 'ITEM_ID', name: 'itemId',
  73. label: ITP_MSG_LOCALE.label.itemId, //품목번호
  74. width: '14', fixed: false, align: 'center',
  75. sortable: false, hidden: false
  76. },
  77. {
  78. index: 'ITEM_NM', name: 'itemNm',
  79. label: ITP_MSG_LOCALE.label.itemNm, //품목명
  80. width: '13', fixed: false, align: 'left',
  81. sortable: false, hidden: false, classes: 'ui-ellipsis'
  82. },
  83. {
  84. index: 'ITEM_TYPE_NM', name: 'itemTypeNm',
  85. label: ITP_MSG_LOCALE.label.itemTypeNm, //품목유형
  86. width: '10', fixed: false, align: 'center',
  87. sortable: false, hidden: false
  88. },
  89. {
  90. index: 'ITEM_CLASS_NM', name: 'itemClassNm',
  91. label: ITP_MSG_LOCALE.label.itemClassNm, //품목분류
  92. width: '10', fixed: false, align: 'center',
  93. sortable: false, hidden: false, classes: 'ui-ellipsis'
  94. },
  95. {
  96. index: 'ST_CD', name: 'itemStNm',
  97. label: ITP_MSG_LOCALE.label.stNm, //상태
  98. width: '6', fixed: false, align: 'center',
  99. sortable: false, hidden: false
  100. },
  101. {
  102. index: 'PODR_PSSBLDVSN_NM', name: 'podrPssblDvsnNm',
  103. label: ITP_MSG_LOCALE.label.podrPssblDvsnNm, //발주여부
  104. width: '7', fixed: false, align: 'center',
  105. sortable: false, hidden: false
  106. },
  107. {
  108. index: 'UNIT', name: 'unit',
  109. label: ITP_MSG_LOCALE.label.unit, //기본단위
  110. width: '6', fixed: false, align: 'center',
  111. sortable: false, hidden: false
  112. },
  113. {
  114. index: 'PCH_ITEM_YN', name: 'pchItemYn',
  115. label: ITP_MSG_LOCALE.label.pchItemYn, //구매품목여부
  116. width: '8', fixed: false, align: 'center',
  117. sortable: false, hidden: false
  118. },
  119. {
  120. index: 'SALE_ITEM_YN', name: 'saleItemYn',
  121. label: ITP_MSG_LOCALE.label.saleItemYn, //판매품목여부
  122. width: '8', fixed: false, align: 'center',
  123. sortable: false, hidden: false
  124. },
  125. ],
  126. upload: [
  127. {
  128. index: 'VIEW_CD', name: 'viewCd',
  129. label: ITP_MSG_LOCALE.label.viewCd,
  130. width: '10', fixed: false, align: 'center',
  131. sortable: false, hidden: true
  132. },
  133. {
  134. index: 'NORMAL_YN', name: 'normalYn',
  135. label: "정상여부",
  136. width: '10', fixed: false, align: 'center',
  137. minwidth: 150, maxwidth: 250,
  138. sortable: false, editable: false, edittype: 'text',
  139. editrules: {required: false}
  140. },
  141. {
  142. index: 'ERROR_MSG', name: 'errorMsg',
  143. label: "에러메시지",
  144. width: '15', fixed: false, align: 'center',
  145. minwidth: 150, maxwidth: 300,
  146. sortable: false, editable: false, edittype: 'text',
  147. editrules: {required: false}
  148. },
  149. {
  150. index: 'ITEM_NM', name: 'itemNm',
  151. label: ITP_MSG_LOCALE.label.itemNm, //품목명
  152. width: '13', fixed: false, align: 'left',
  153. minwidth: 150, maxwidth: 250,
  154. sortable: false, hidden: false
  155. },
  156. {
  157. index: 'ITEM_TYPE_NM', name: 'itemTypeNm',
  158. label: ITP_MSG_LOCALE.label.itemTypeNm, //품목유형
  159. width: '10', fixed: false, align: 'center',
  160. minwidth: 150, maxwidth: 250,
  161. sortable: false, hidden: false
  162. },
  163. {
  164. index: 'IMP_DVSN_NM', name: 'impDvsnNm',
  165. label: '내외자구분',
  166. width: '10', fixed: false, align: 'center',
  167. minwidth: 150, maxwidth: 250,
  168. sortable: false, hidden: false
  169. },
  170. {
  171. index: 'PODR_PSSBL_DVSN_NM', name: 'podrPssblDvsnNm',
  172. label: '발주여부',
  173. width: '10', fixed: false, align: 'center',
  174. minwidth: 150, maxwidth: 250,
  175. sortable: false, hidden: false
  176. },
  177. {
  178. index: 'UNIT_NM', name: 'unitNm',
  179. label: '기본단위',
  180. width: '10', fixed: false, align: 'center',
  181. minwidth: 150, maxwidth: 250,
  182. sortable: false, hidden: false
  183. },
  184. {
  185. index: 'PCH_ITEM_YN', name: 'pchItemYn',
  186. label: '구매품목여부',
  187. width: '10', fixed: false, align: 'center',
  188. minwidth: 150, maxwidth: 250,
  189. sortable: false, hidden: false
  190. },
  191. {
  192. index: 'SALE_ITEM_YN', name: 'saleItemYn',
  193. label: '판매품목여부',
  194. width: '10', fixed: false, align: 'center',
  195. minwidth: 150, maxwidth: 250,
  196. sortable: false, hidden: false
  197. },
  198. {
  199. index: 'WEIGHT', name: 'weight',
  200. label: '중량 값',
  201. width: '6', fixed: false, align: 'center',
  202. minwidth: 150, maxwidth: 250,
  203. sortable: false, hidden: false
  204. },
  205. {
  206. index: 'WEIGHT_UNIT_NM', name: 'weightUnitNm',
  207. label: '중량 단위',
  208. width: '6', fixed: false, align: 'center',
  209. minwidth: 150, maxwidth: 250,
  210. sortable: false, hidden: false
  211. },
  212. {
  213. index: 'VOLUME', name: 'volume',
  214. label: '부피 값',
  215. width: '6', fixed: false, align: 'center',
  216. minwidth: 150, maxwidth: 250,
  217. sortable: false, hidden: false
  218. },
  219. {
  220. index: 'VOLUME_UNIT_NM', name: 'volumeUnitNm',
  221. label: '부피 단위',
  222. width: '6', fixed: false, align: 'center',
  223. minwidth: 150, maxwidth: 250,
  224. sortable: false, hidden: false
  225. },
  226. {
  227. index: 'WIDTH', name: 'width',
  228. label: '가로 값',
  229. width: '6', fixed: false, align: 'center',
  230. minwidth: 150, maxwidth: 250,
  231. sortable: false, hidden: false
  232. },
  233. {
  234. index: 'WIDTH_UNIT_NM', name: 'widthUnitNm',
  235. label: '가로 단위',
  236. width: '6', fixed: false, align: 'center',
  237. minwidth: 150, maxwidth: 250,
  238. sortable: false, hidden: false
  239. },
  240. {
  241. index: 'HEIGHT', name: 'height',
  242. label: '세로 값',
  243. width: '6', fixed: false, align: 'center',
  244. minwidth: 150, maxwidth: 250,
  245. sortable: false, hidden: false
  246. },
  247. {
  248. index: 'HEIGHT_UNIT_NM', name: 'heightUnitNm',
  249. label: '세로 단위',
  250. width: '6', fixed: false, align: 'center',
  251. minwidth: 150, maxwidth: 250,
  252. sortable: false, hidden: false
  253. },
  254. {
  255. index: 'HIGH', name: 'high',
  256. label: '높이 값',
  257. width: '6', fixed: false, align: 'center',
  258. minwidth: 150, maxwidth: 250,
  259. sortable: false, hidden: false
  260. },
  261. {
  262. index: 'HIGH_UNIT_NM', name: 'highUnitNm',
  263. label: '높이 단위',
  264. width: '6', fixed: false, align: 'center',
  265. minwidth: 150, maxwidth: 250,
  266. sortable: false, hidden: false
  267. },
  268. {
  269. index: 'EXPRY_YN', name: 'expryYn',
  270. label: '유통기한여부',
  271. width: '10', fixed: false, align: 'center',
  272. minwidth: 150, maxwidth: 250,
  273. sortable: false, hidden: false
  274. },
  275. {
  276. index: 'EXPRY_PERIOD', name: 'expryPeriod',
  277. label: '유통가능기간',
  278. width: '10', fixed: false, align: 'center',
  279. minwidth: 150, maxwidth: 250,
  280. sortable: false, hidden: false
  281. },
  282. {
  283. index: 'RTN_PSSBL_YN', name: 'rtnPssblYn',
  284. label: '반품가능여부',
  285. width: '10', fixed: false, align: 'center',
  286. minwidth: 150, maxwidth: 250,
  287. sortable: false, hidden: false
  288. },
  289. {
  290. index: 'RTN_DVSN_NM', name: 'rtnDvsnNm',
  291. label: '반품구분',
  292. width: '10', fixed: false, align: 'center',
  293. minwidth: 150, maxwidth: 250,
  294. sortable: false, hidden: false
  295. },
  296. {
  297. index: 'BARCODE', name: 'barcode',
  298. label: '바코드',
  299. width: '10', fixed: false, align: 'center',
  300. minwidth: 150, maxwidth: 250,
  301. sortable: false, hidden: false
  302. }
  303. ],
  304. detail: [
  305. {
  306. index: 'VIEW_CD', name: 'viewCd',
  307. label: ITP_MSG_LOCALE.label.viewCd,
  308. width: '10', fixed: false, align: 'center',
  309. sortable: false, hidden: true
  310. },
  311. {
  312. index: 'AUTH_NO', name: 'authNo',
  313. label: ITP_MSG_LOCALE.label.permitCd,
  314. width: '20', fixed: false, align: 'center',
  315. sortable: false, editable: false, edittype: 'text',
  316. editrules: {required: true}
  317. },
  318. {
  319. index: 'AUTH_NM', name: 'authNm',
  320. label: ITP_MSG_LOCALE.label.permitName,
  321. width: '30', fixed: false, align: 'center',
  322. sortable: true, editable: false, edittype: 'text',
  323. editrules: {required: true}
  324. },
  325. {
  326. index: 'USE_YN_NM', name: 'useYnNm',
  327. label: ITP_MSG_LOCALE.label.status,
  328. width: '10', fixed: false, align: 'center',
  329. sortable: false, editable: false, edittype: 'text'
  330. },
  331. {
  332. index: 'ADD_DT', name: 'addDt',
  333. label: ITP_MSG_LOCALE.label.regDt,
  334. width: '10', fixed: false, align: 'center',
  335. sortable: false, editable: false, edittype: 'text'
  336. }
  337. ]
  338. };
  339. var itemClassLevel = {
  340. level: 1,
  341. levelID: '',
  342. data: [],
  343. itemMode: '',
  344. eventCheck: false,
  345. keys: function() {
  346. var keys = {sBrandId:fn_make_user_info.get('brandId'), sItemLevel: this.level};
  347. for(var i=1; i<=this.level; i++) {
  348. var key = 'sItemClass' + i;
  349. var id = '#' + this.levelID + i;
  350. keys[key] = $(id + ' option:selected').val();
  351. }
  352. return keys;
  353. },
  354. addEditData: function(node) {
  355. this.initData();
  356. this.data.push(node.itemClass1);
  357. this.data.push(node.itemClass2);
  358. this.data.push(node.itemClass3);
  359. this.data.push(node.itemClass4);
  360. console.log("edit add data ===> ", this.data);
  361. },
  362. setComboEvent() {
  363. if(this.eventCheck) return;
  364. const me=this;
  365. $('#ITP_FORM_STINFO04010_DETAIL_ITEM_CLASS1').off('change').on('change', function() {
  366. ($(this).val() === '') ? me.clear(2): me.change(2);
  367. });
  368. $('#ITP_FORM_STINFO04010_DETAIL_ITEM_CLASS2').off('change').on('change', function() {
  369. ($(this).val() === '') ? me.clear(3): me.change(3);
  370. });
  371. $('#ITP_FORM_STINFO04010_DETAIL_ITEM_CLASS3').off('change').on('change', function() {
  372. ($(this).val() === '') ? me.clear(4): me.change(4);
  373. });
  374. this.eventCheck=true;
  375. },
  376. initData: function() {
  377. this.data=[];
  378. },
  379. switchScreen: function(mode) {
  380. this.itemMode=mode;
  381. this.levelID = (mode === 'LIST' ? 'ITP_FORM_STINFO04010_SEARCH_ITEM_CLASS' : 'ITP_FORM_STINFO04010_DETAIL_ITEM_CLASS');
  382. if(this.data.length && mode!='MODIFY') {
  383. this.initData();
  384. }
  385. if(mode=='MODIFY'|| mode=='ADD' ) {
  386. this.setComboEvent();
  387. this.setComboData(1);
  388. }
  389. },
  390. setComboData: function(level) {
  391. var _this=this, mode=this.itemMode, id=this.levelID + level;
  392. if(level==1) this.clear(1);
  393. var callbackFn = function(result) {
  394. var titleVal='품목분류Level' + level, nextLevel=0;
  395. fn_make_select_item_class(result.searchList, id, true, titleVal);
  396. if(mode=='MODIFY') {
  397. let idx=level-1, ok=false;
  398. if( idx<_this.data.length ) {
  399. const val=_this.data[idx++];
  400. $('#'+id).val(val);
  401. if(idx<_this.data.length ) {
  402. ok=true;
  403. }
  404. }
  405. if(ok) {
  406. _this.setComboData(level+1);
  407. } else {
  408. _this.initData();
  409. }
  410. }
  411. };
  412. var keys = {sBrandId:fn_make_user_info.get('brandId'), sItemLevel: level};
  413. for(var i=1; i<=level; i++) {
  414. var idx=i-1;
  415. var key = 'sItemClass' + i;
  416. keys[key] = this.data[idx];
  417. }
  418. fn_ajax_call(API_ITEM_CLASS_LEVEL, $.param(keys), callbackFn, 'GET');
  419. },
  420. make: function(level, mode) {
  421. this.level = level;
  422. this.startLevel= level;
  423. this.levelID = (mode === 'LIST' ? 'ITP_FORM_STINFO04010_SEARCH_ITEM_CLASS' : 'ITP_FORM_STINFO04010_DETAIL_ITEM_CLASS');
  424. if(mode !== 'MODIFY') {
  425. this.data.length = 0;
  426. this.clear(1);
  427. }
  428. this.call($.param(this.keys()), mode === 'MODIFY');
  429. },
  430. change: function(level) {
  431. if(this.data.length>0 ) return;
  432. this.level = level;
  433. this.clear(level);
  434. this.call($.param(this.keys()), false);
  435. },
  436. call: function(param, isModify) {
  437. var _this = this;
  438. var callbackFn = function(result) {
  439. var id = _this.levelID + _this.level;
  440. fn_make_select_item_class(result.searchList, id, true, _this.emptyText());
  441. if(isModify) {
  442. $('#' + id).val(_this.data[ _this.level - 1]);
  443. if(_this.level < _this.data.length) {
  444. if(_this.data[_this.level] !== '') {
  445. _this.level++;
  446. _this.call( $.param(_this.keys()), isModify);
  447. }
  448. }
  449. }
  450. };
  451. fn_ajax_call(API_ITEM_CLASS_LEVEL, param, callbackFn, 'GET');
  452. },
  453. emptyText: function() {
  454. return '품목분류Level' + this.level;
  455. },
  456. clear: function(level) {
  457. if(this.data.length>0 ) return;
  458. for(var i=level; i<5; i++) {
  459. $('#' + (this.levelID + i)).find('option:not(:first)').remove();
  460. }
  461. }
  462. };
  463. /*화면공통 Object*/
  464. let pageObj = {
  465. init: function () {
  466. this.ui.init();
  467. this.event.init();
  468. // this.fileUpload();
  469. uploadObj.change();
  470. },
  471. ui: {
  472. init: function () {
  473. this.view();
  474. this.grid();
  475. this.form();
  476. this.ready();
  477. },
  478. view: function() {
  479. // 버튼 권한설정
  480. fn_proc_btn_auth('STINFO04010');
  481. // 공통코드 표시
  482. $('select').each(function() {
  483. if($(this).data('select-code')) {
  484. fn_make_select(CODE_LIST, $(this).data('select-code'), $(this).attr('id'));
  485. }
  486. });
  487. itemClassLevel.make(1, 'LIST');
  488. },
  489. grid: function() {
  490. itp_fn_jqgrid_resize(STINFO04010_GRID_ID, STINFO04010_GRID_LIST, 'lg');
  491. //listObj.empty.init();
  492. },
  493. form: function() {
  494. itp_fn_form_event.onKeyup('#ITP_FORM_STINFO04010_DETAIL');
  495. },
  496. ready: function() {
  497. listObj.init();
  498. }
  499. },
  500. event: {
  501. init: function () {
  502. this.button();
  503. },
  504. button: function () {
  505. // 버튼 클릭 이벤트
  506. $('button').each(function() {
  507. var id = $(this).attr('id');
  508. $(this).on('click', function() {
  509. switch (id) {
  510. case 'ITP_BTN_STINFO04010_SRH' : listObj.button.search(); break; // 조회 버튼 클릭
  511. case 'ITP_BTN_STINFO04010_NEWREG' : listObj.button.create(); break; // 신규등록 버튼
  512. case 'ITP_BTN_STINFO04010_MODIFY' : modifyObj.button.modify(); break; // 수정 버튼
  513. case 'ITP_BTN_STINFO04010_CANCELLIST' : createObj.button.cancel(); break; // 취소/목록 버튼
  514. case 'ITP_BTN_STINFO04010_UPLOAD' : listObj.button.upload(); break; // 엑셀업로드 버튼
  515. case 'ITP_BTN_STINFO04010_DELETE' : break; // 삭제 버튼
  516. case 'ITP_BTN_STINFO04010_SAVE' : createObj.button.save(); break; // 저장 버튼
  517. case 'ITP_FORM_STINFO04010_DETAIL_DUP' : createObj.button.duplicate(); break; // 중복체크
  518. case 'ITP_BTN_STINFO04010_RESET_PW' : createObj.button.resetPass(); break; // 상세:비밀번호 초기화
  519. case 'ITP_BTN_STINFO04010_TEMPLATE_DOWNLOAD' : uploadObj.button.downTemplate(); break; // 템플릿 다운로드
  520. case 'ITP_BTN_STINFO04010_FILE_UPLOAD' : uploadObj.button.uploadFile(); break; // 파일 업로드
  521. }
  522. });
  523. });
  524. $('body').on('click', function(e) {
  525. var gridId = STINFO04010_DETAIL_GRID_ID.replace('#', '');
  526. var rids = $(STINFO04010_DETAIL_GRID_ID).jqGrid('getDataIDs');
  527. var last_row_id = rids[rids.length - 1];
  528. itp_fn_grid_reset_selection(e, last_row_id, gridId, 'STINFO04010_DETAIL');
  529. });
  530. }
  531. },
  532. fileUpload: function() {
  533. //파일업로드(등록/수정화면)
  534. var id = 'STINFO04010';
  535. $('#ITP_' + id + '_DETAIL_UPLOAD').empty();
  536. $('#ITP_' + id + '_DETAIL_LOGO_FILE').empty();
  537. var removeFn = (param) => {
  538. $('#ITP_' + id + '_DETAIL_LOGO_FILE').empty();
  539. };
  540. const fileArgs = {
  541. 'fileNo': $('#ITP_FORM_' + id + '_DETAIL_FILE_NO').val(),
  542. 'viewCd': $('#ITP_FORM_' + id + '_DETAIL_VIEW_CD').val(),
  543. 'showYn': $('#ITP_' + id + '_DETAIL_UPLOAD').attr('data-show-yn'),
  544. 'fileId': '#ITP_FORM_' + id + '_DETAIL_FILE_NO' //파일번호를 서버에서 받아서 넣을 파일번호 인풋박스 아이디
  545. };
  546. itp_fn_set_file_upload('ITP_' + id + '_DETAIL_UPLOAD', 'affl', false, false, id, fileArgs, removeFn);
  547. },
  548. switchScreen: function(mode) {
  549. SCREEN_MODE = mode;
  550. $('.itp_det_head').find('button[id^="ITP_BTN_STINFO04010_"]').each(function(i) {
  551. $(this).hide();
  552. });
  553. $('#ITP_TAB_STINFO04010').find('div[id$="_CONTAINER"]').each(function(i) {
  554. $(this).hide();
  555. });
  556. if(mode == 'LIST') { // 목록
  557. itp_fn_fire_window_resize();
  558. $('#ITP_AJAX_STINFO04010_LIST_CONTAINER').show();
  559. fn_show_btn_auth_array(['#ITP_BTN_STINFO04010_SRH', '#ITP_BTN_STINFO04010_NEWREG', '#ITP_BTN_STINFO04010_UPLOAD']);
  560. $('#ITP_FORM_STINFO04010_SEARCH_BRAND_ID').val(fn_make_user_info.get('brandId'));
  561. itemClassLevel.switchScreen(mode);
  562. } else if(mode == 'UPLOAD') { // 엑셀업로드
  563. $('#ITP_AJAX_STINFO04010_UPLOAD_CONTAINER').show();
  564. fn_show_btn_auth_array(['#ITP_BTN_STINFO04010_FILE_UPLOAD','#ITP_BTN_STINFO04010_TEMPLATE_DOWNLOAD','#ITP_BTN_STINFO04010_SAVE', '#ITP_BTN_STINFO04010_CANCELLIST']);
  565. $('#ITP_FORM_STINFO04010_UPLOAD_BRAND_ID').val(fn_make_user_info.get('brandId'));
  566. } else if(mode == 'ADD') { // 등록
  567. $('#ITP_AJAX_STINFO04010_DETAIL_CONTAINER').show();
  568. fn_show_btn_auth_array(['#ITP_BTN_STINFO04010_CANCELLIST', '#ITP_BTN_STINFO04010_SAVE']);
  569. $('#ITP_FORM_STINFO04010_DETAIL').find('input, textarea, select, checkbox').each(function(i, elem) {
  570. $(this).attr('id') === 'ITP_FORM_STINFO04010_DETAIL_VIEW_CD' ? $(this).val('C') : $(this).val('');
  571. if(elem.type === 'select') {
  572. $(this).val('').prop('selected', true);
  573. }
  574. });
  575. $('#ITP_FORM_STINFO04010_DETAIL_STORE_ID').removeAttr('readonly');
  576. $('#ITP_FORM_STINFO04010_DETAIL_DUP').removeAttr('disabled');
  577. // 브랜드그룹 정보 설정
  578. $('#ITP_FORM_STINFO04010_DETAIL_AFFL_SHOP_ID').val(fn_make_user_info.get('afflShopId'));
  579. $('#ITP_FORM_STINFO04010_DETAIL_BRAND_ID').val(fn_make_user_info.get('brandId'));
  580. $('#ITP_FORM_STINFO04010_DETAIL .fnBrandNm').text(fn_make_user_info.get('brandNm'));
  581. //$('#ITP_FORM_STINFO04010_DETAIL .fnItemClassMgntNo').text('(자동부여)');
  582. $('#ITP_FORM_STINFO04010_DETAIL_OQ_BRAND_ID').val(fn_make_user_info.get('oqBrandId'));
  583. itemClassLevel.switchScreen(mode);
  584. } else if(mode == 'MODIFY') { // 수정
  585. $('#ITP_AJAX_STINFO04010_DETAIL_CONTAINER').show();
  586. fn_show_btn_auth_array(['#ITP_BTN_STINFO04010_CANCELLIST', '#ITP_BTN_STINFO04010_SAVE', '#ITP_BTN_STINFO04010_RESET_PW']);
  587. $('#ITP_FORM_STINFO04010_DETAIL_AFFL_SHOP_ID').val(fn_make_user_info.get('afflShopId'));
  588. $('#ITP_FORM_STINFO04010_DETAIL_BRAND_ID').val(fn_make_user_info.get('brandId'));
  589. $('#ITP_FORM_STINFO04010_DETAIL .fnBrandNm').text(fn_make_user_info.get('brandNm'));
  590. $('#ITP_FORM_STINFO04010_DETAIL_STORE_ID').attr('readonly', true);
  591. $('#ITP_FORM_STINFO04010_DETAIL_DUP').attr('disabled', true);
  592. $('#ITP_FORM_STINFO04010_DETAIL_SEARCH_AFFL_SHOP_NM').attr('readonly', true);
  593. $('#ITP_FORM_STINFO04010_DETAIL_SEARCH_AFFL_SHOP').hide();
  594. $('#ITP_FORM_STINFO04010_DETAIL_DELETE_AFFL_SHOP').hide();
  595. } else if(mode == 'VIEW') { // 보기
  596. $('#ITP_AJAX_STINFO04010_VIEW_CONTAINER').show();
  597. $('#ITP_FORM_STINFO04010_VIEW .fnBrandNm').text(fn_make_user_info.get('brandNm'));
  598. fn_show_btn_auth_array(['#ITP_BTN_STINFO04010_MODIFY', '#ITP_BTN_STINFO04010_CANCELLIST']);
  599. itemClassLevel.switchScreen(mode);
  600. }
  601. }
  602. };
  603. /*목록화면 Object*/
  604. let listObj = {
  605. init: function () {
  606. this.form();
  607. this.grid.init();
  608. },
  609. itp_STINFO04010_search: false,
  610. button: {
  611. search: function() {
  612. listObj.itp_STINFO04010_search = true;
  613. let param = $('#ITP_FORM_STINFO04010_SEARCH').serializeObject();
  614. console.log(JSON.stringify(param));
  615. param.gridSize = $.jgrid.defaults.rowNum;
  616. param.gridPage = $.jgrid.defaults.page;
  617. $(STINFO04010_GRID_ID).data('grid-param',param);
  618. $(STINFO04010_GRID_ID).setGridParam({'postData': JSON.stringify(param)}).trigger('reloadGrid');
  619. },
  620. create: function() {
  621. if(!fn_make_user_info.isEmpty()) {
  622. createObj.init();
  623. }
  624. },
  625. upload: function() {
  626. if(!fn_make_user_info.isEmpty()) {
  627. uploadObj.init();
  628. }
  629. }
  630. },
  631. form: function() {
  632. $('#ITP_FORM_STINFO04010_SEARCH_ITEM_CLASS1').on('change', function() {
  633. ($(this).val() === '') ? itemClassLevel.clear(2): itemClassLevel.change(2);
  634. });
  635. $('#ITP_FORM_STINFO04010_SEARCH_ITEM_CLASS2').on('change', function() {
  636. ($(this).val() === '') ? itemClassLevel.clear(3): itemClassLevel.change(3);
  637. });
  638. $('#ITP_FORM_STINFO04010_SEARCH_ITEM_CLASS3').on('change', function() {
  639. ($(this).val() === '') ? itemClassLevel.clear(4): itemClassLevel.change(4);
  640. });
  641. },
  642. empty: {
  643. init: function() {
  644. },
  645. itp_STINFO04010_param: {},
  646. push: function() {
  647. },
  648. back: function() {
  649. }
  650. },
  651. grid: {
  652. init: function () {
  653. // 데이터 없을때
  654. //listObj.empty.push();
  655. this.search();
  656. },
  657. colModel: gridColModel.list,
  658. search: function() {
  659. pageObj.switchScreen('LIST');
  660. this.unload();
  661. this.load();
  662. },
  663. load: function() {
  664. let param = $('#ITP_FORM_STINFO04010_SEARCH').serializeObject();
  665. param.gridSize = $.jgrid.defaults.rowNum;
  666. param.sbrandId = fn_make_user_info.get('brandId');
  667. // param.sbrandId = sessionStorage.getItem('itp_brand_id') !== null ? sessionStorage.getItem('itp_brand_id') : 'BRD221000001';
  668. var option = {
  669. gridId: STINFO04010_GRID_ID,
  670. colModel: gridColModel.list,
  671. param: param,
  672. url: DOMAIN + API_DETAIL_GRID_LIST,
  673. pager: STINFO04010_GRID_PAGER,
  674. onCellSelect: function(rowId, cellIdx, cellValue) {
  675. var cm = $(this).jqGrid('getGridParam', 'colModel');
  676. var colNm = cm[cellIdx].name;
  677. if (colNm == 'itemId') {
  678. const selectVal = $(this).jqGrid('getCell', rowId, 'itemId');
  679. const key = {brandId:fn_make_user_info.get('brandId'), itemId: selectVal, viewCd: 'R'};
  680. var param = $.param(key);
  681. viewObj.init(param);
  682. }
  683. },
  684. loadComplete: function(data) {
  685. console.log(data);
  686. itp_fn_grid_load_complete(data, STINFO04010_GRID_ID, true, 'number', 'STINFO04010', listObj.itp_STINFO04010_search, listObj.empty, true, data.gridRecords, true);
  687. var ids = $(STINFO04010_GRID_ID).getDataIDs();
  688. $.each(ids, function(idx, rowId) {
  689. $(STINFO04010_GRID_ID).jqGrid('setCell', rowId, 'itemId', '', ITP_GRID_COL_STYLE.link);
  690. });
  691. },
  692. onPaging: function(action) {
  693. itp_fn_grid_paging(STINFO04010_GRID_ID, action, param);
  694. }
  695. };
  696. itp_fn_grid_make_remote(option);
  697. },
  698. clearData : function() {
  699. $(STINFO04010_GRID_ID).jqGrid('clearGridData', true);
  700. $(STINFO04010_GRID_LIST).find('.ui-jqgrid-bdiv').css('min-height', '100px');
  701. $(STINFO04010_GRID_EMPTY).html(ITP_MSG_LOCALE.message.grid.noData);
  702. $(STINFO04010_GRID_EMPTY).show();
  703. },
  704. unload : function() {
  705. $.jgrid.gridUnload(STINFO04010_GRID_ID);
  706. }
  707. }
  708. };
  709. /*상세화면 Object*/
  710. let viewObj = {
  711. init: function (param) {
  712. this.load(param);
  713. },
  714. load: function(param) {
  715. fn_ajax_call(API_DETAIL_INFO, param, this.callback, 'GET');
  716. },
  717. callback: function (result) {
  718. console.log(result);
  719. pageObj.switchScreen('VIEW');
  720. $('#ITP_FORM_STINFO04010_VIEW #ITP_FORM_STINFO04010_VIEW_ITEM_ID').val(result.itemId);
  721. $('#ITP_FORM_STINFO04010_VIEW .fnStCd').text(result.itemStNm);
  722. var itemClassNm = ""; //itemClassNm 값 없음
  723. if (result.itemClass1Nm != null && result.itemClass1Nm != "")//itemclass1Nm 값이 있을때
  724. {
  725. var itemClassNm = result.itemClass1Nm; //itemClassNm 에 itemClass1Nm 값 넣음
  726. }
  727. if (result.itemClass2Nm != null && result.itemClass2Nm != "")//itemclass2Nm 값이 있을때
  728. {
  729. var itemClassNm = itemClassNm + " " + ">" + " " + result.itemClass2Nm; //itemClassNm 에 itemClassNm + > + itemClass2Nm 값 넣음
  730. }
  731. if (result.itemClass3Nm != null && result.itemClass3Nm != "")//itemclass3Nm 값이 있을때
  732. {
  733. var itemClassNm = itemClassNm + " " + ">" + " " + result.itemClass3Nm; //itemClassNm 에 itemClassNm + > + itemClass3Nm 값 넣음
  734. }
  735. if (result.itemClass4Nm != null && result.itemClass4Nm != "")//itemclass4Nm 값이 있을때
  736. {
  737. var itemClassNm = itemClassNm + " " + ">" + " " + result.itemClass4Nm; //itemClassNm 에 itemClassNm + > + itemClass4Nm 값 넣음
  738. }
  739. $('#ITP_FORM_STINFO04010_VIEW .fnItemClass1').text(itemClassNm);
  740. $('#ITP_FORM_STINFO04010_VIEW .fnItemClassMgntNo').text(result.itemId);
  741. $('#ITP_FORM_STINFO04010_VIEW .fnItemTypeNm').text(result.itemTypeNm);
  742. $('#ITP_FORM_STINFO04010_VIEW .fnItemNm').text(result.itemNm);
  743. let impDvsnNm;
  744. $('#ITP_FORM_STINFO04010_VIEW #ITP_FORM_STINFO04010_VIEW_IMP_DVSN').val(result.impDvsn);
  745. if (result.impDvsn == '') {
  746. impDvsnNm = '';
  747. } else {
  748. impDvsnNm = $('#ITP_FORM_STINFO04010_VIEW_IMP_DVSN option:selected').text();
  749. }
  750. $('#ITP_FORM_STINFO04010_VIEW .fnImpDvsn').text(impDvsnNm);
  751. $('#ITP_FORM_STINFO04010_VIEW .fnPodrPssblDvsnNm').text(result.podrPssblDvsnNm);
  752. $('#ITP_FORM_STINFO04010_VIEW .fnUnit').text(result.unit);
  753. $('#ITP_FORM_STINFO04010_VIEW .fnPchItemYn').text(result.pchItemYn);
  754. //$('#ITP_FORM_STINFO04010_VIEW .fnViewPchUnit').text(result.pchUnit);
  755. $('#ITP_FORM_STINFO04010_VIEW .fnSaleItemYn').text(result.saleItemYn);
  756. //$('#ITP_FORM_STINFO04010_VIEW .fnSaleUnit').text(result.saleUnit);
  757. $('#ITP_FORM_STINFO04010_VIEW .fnBarcode').text(result.barcode);
  758. //$('#ITP_FORM_STINFO04010_VIEW .fnStckUnit').text(result.stckUnit);
  759. $('#ITP_FORM_STINFO04010_VIEW .fnWeight').text(result.weight.toFixed(2));
  760. $('#ITP_FORM_STINFO04010_VIEW .fnWeightUnit').text(result.weightUnitNm);
  761. $('#ITP_FORM_STINFO04010_VIEW .fnVolume').text(result.volume.toFixed(2));
  762. $('#ITP_FORM_STINFO04010_VIEW .fnVolumeUnit').text(result.volumeUnitNm);
  763. $('#ITP_FORM_STINFO04010_VIEW .fnWidth').text(result.width.toFixed(2));
  764. $('#ITP_FORM_STINFO04010_VIEW .fnWidthUnit').text(result.widthUnitNm);
  765. $('#ITP_FORM_STINFO04010_VIEW .fnHeight').text(result.height.toFixed(2));
  766. $('#ITP_FORM_STINFO04010_VIEW .fnHeightUnit').text(result.heightUnitNm);
  767. $('#ITP_FORM_STINFO04010_VIEW .fnHigh').text(result.high.toFixed(2));
  768. $('#ITP_FORM_STINFO04010_VIEW .fnHighUnit').text(result.highUnitNm);
  769. $('#ITP_FORM_STINFO04010_VIEW .fnOneBoxQty').text(itp_fn_number_comma(result.oneBoxQty));
  770. $('#ITP_FORM_STINFO04010_VIEW .fnExpryYn').text(result.expryYn);
  771. $('#ITP_FORM_STINFO04010_VIEW .fnExpryPeriod').text(itp_fn_number_comma(result.expryPeriod));
  772. $('#ITP_FORM_STINFO04010_VIEW .fnRtnPssblYn').text(result.rtnPssblYn);
  773. $('#ITP_FORM_STINFO04010_VIEW .fnRtnDvsnNm').text(result.rtnDvsnNm);
  774. $('#ITP_FORM_STINFO04010_VIEW .fnOqMenuCd').text(result.oqMenuCd);
  775. $('#ITP_FORM_STINFO04010_VIEWL #ITP_FORM_STINFO04010_VIEW_OQ_BRAND_ID').val(result.oqBrandId);
  776. $('#ITP_FORM_STINFO04010_VIEW_FILE_NO').val(result.itemImageFileNo);
  777. /*
  778. itp_fn_attach_file.view('ITP_FORM_STINFO04010_VIEW_FILE', result.imageFileNoList
  779. , 'form-control itp_input', 'border:none; top:12px; left:12px; height:100px; width:125px; position:absolute;');
  780. */
  781. fileUploadInfo4010()
  782. }
  783. };
  784. /*수정화면 Object*/
  785. let modifyObj = {
  786. init: function () {
  787. },
  788. button: {
  789. modify: function (param) {
  790. itp_fn_form_clear_validate(null, '#ITP_FORM_STINFO04010_DETAIL');
  791. const selectVal = $('#ITP_FORM_STINFO04010_VIEW_ITEM_ID').val();
  792. const key = {brandId:fn_make_user_info.get('brandId'), itemId: selectVal, viewCd: 'R'};
  793. var param = $.param(key);
  794. modifyObj.load(param);
  795. }
  796. },
  797. load: function(param) {
  798. fn_ajax_call(API_DETAIL_INFO, param, this.callback, 'GET');
  799. },
  800. callback: function (result) {
  801. console.log(result);
  802. pageObj.switchScreen('MODIFY');
  803. $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_VIEW_CD').val('U');
  804. $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_ITEM_ID').val(result.itemId);
  805. $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_ITEM_ST_CD').val(result.itemStCd);
  806. $('#ITP_FORM_STINFO04010_DETAIL .fnItemClassMgntNo').text(result.itemId);
  807. $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_ITEM_TYPE').val(result.itemType);
  808. $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_ITEM_NM').val(result.itemNm);
  809. $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_IMP_DVSN').val(result.impDvsn);
  810. $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_PODR_PSSBL_DVSN').val(result.podrPssblDvsn);
  811. $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_UNIT').val(result.unit);
  812. $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_PCH_ITEM_YN').val(result.pchItemYn);
  813. //$('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_PCH_UNIT').val(result.pchUnit);
  814. $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_SALE_ITEM_YN').val(result.saleItemYn);
  815. //$('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_SALE_UNIT').val(result.saleUnit);
  816. $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_BARCODE').val(result.barcode);
  817. //$('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_STCK_UNIT').val(result.stckUnit);
  818. $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_WEIGHT').val(result.weight.toFixed(2));
  819. $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_WEIGHT_UNIT').val(result.weightUnit);
  820. $('#ITP_FORM_STINFO04010_DETAIL .item_unit').text(result.unit);
  821. $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_VOLUME').val(result.volume.toFixed(2));
  822. $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_VOLUME_UNIT').val(result.volumeUnit);
  823. $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_WIDTH').val(result.width.toFixed(2));
  824. $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_WIDTH_UNIT').val(result.widthUnit);
  825. $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_HEIGHT').val(result.height.toFixed(2));
  826. $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_HEIGHT_UNIT').val(result.heightUnit);
  827. $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_HIGH').val(result.high.toFixed(2));
  828. $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_HIGH_UNIT').val(result.highUnit);
  829. $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_ONE_BOX_QTY').val(itp_fn_number_comma(result.oneBoxQty));
  830. $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_EXPRY_YN').val(result.expryYn);
  831. $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_EXPRY_PERIOD').val(itp_fn_number_comma(result.expryPeriod));
  832. $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_RTN_PSSBL_YN').val(result.rtnPssblYn);
  833. $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_RTN_DVSN').val(result.rtnDvsn);
  834. // $.each(result.imageFileNoList, function(index, item) {
  835. // $('#ITP_FORM_STINFO04010_VIEW .ITEM_IMAGE').append('<img src=" + item.filePath +" />');
  836. // });
  837. $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_OQ_MENU_CD').val(result.oqMenuCd);
  838. $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_OQ_BRAND_ID').val(result.oqBrandId);
  839. $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_FILE_NO').val(result.itemImageFileNo);
  840. pageObj.fileUpload();
  841. itp_fn_attach_file.view('ITP_STINFO040100_DETAIL_LOGO_FILE', result.fileLogNoList
  842. , 'form-control itp_input', 'border:none; top:12px; left:12px; height:100px; width:125px; position:absolute;');
  843. // itemClassLevel.make(1, 'MODIFY');
  844. itemClassLevel.addEditData(result );
  845. itemClassLevel.switchScreen('MODIFY');
  846. }
  847. };
  848. /* 엑셀업로드 화면 */
  849. let uploadObj = {
  850. init: function () {
  851. this.grid.init();
  852. // this.change();
  853. },
  854. button: {
  855. downTemplate: function() {
  856. var lidx = window.location.href.lastIndexOf('/');
  857. window.location.assign(window.location.href.substring(0, lidx) + '/excel_template/item_upload_v1.xlsx');
  858. },
  859. uploadFile: function() {
  860. uploadObj.grid.clearData();
  861. // 파일선택
  862. $('#ITP_FORM_STINFO04010_UPLOAD_EXCEL_UPLOAD_SELECT_FILE').click();
  863. },
  864. makeExcelDataList: function(excelData) {
  865. var processArray = [];
  866. excelData.shift();
  867. excelData.shift();
  868. excelData.some(function(data) {
  869. var processData = {};
  870. processData.itemNm = data.A.toString();
  871. processData.itemTypeNm = data.B.toString();
  872. processData.impDvsnNm = data.C.toString();
  873. processData.podrPssblDvsnNm = data.D.toString();
  874. processData.unitNm = data.E.toString();
  875. processData.pchItemYn = data.F.toString();
  876. processData.saleItemYn = data.G.toString();
  877. processData.weight = data.H.toString();
  878. processData.weightUnitNm = data.I.toString();
  879. processData.volume = data.J.toString();
  880. processData.volumeUnitNm = data.K.toString();
  881. processData.width = data.L.toString();
  882. processData.widthUnitNm = data.M.toString();
  883. processData.height = data.N.toString();
  884. processData.heightUnitNm = data.O.toString();
  885. processData.high = data.P.toString();
  886. processData.highUnitNm = data.Q.toString();
  887. processData.expryYn = data.R.toString();
  888. processData.expryPeriod = data.S.toString();
  889. processData.rtnPssblYn = data.T.toString();
  890. processData.rtnDvsnNm = data.U.toString();
  891. processData.barcode = data.V.toString();
  892. processArray.push(processData);
  893. });
  894. $.each(processArray, function(key, value) {
  895. var normalYn = 'Y';
  896. var errorMsg = '';
  897. // console.log(JSON.stringify(value));
  898. // 코드값 체크
  899. if("소모품:자산용".indexOf(value.itemTypeNm) < 0) {
  900. normalYn = 'N';
  901. errorMsg += '품목유형;';
  902. }
  903. if("국내:수입".indexOf(value.impDvsnNm) < 0) {
  904. normalYn = 'N';
  905. errorMsg += '내외자구분;';
  906. }
  907. if("발주가능:발주불가".indexOf(value.podrPssblDvsnNm) < 0) {
  908. normalYn = 'N';
  909. errorMsg += '발주여부;';
  910. }
  911. if("부피:개수:박스".indexOf(value.unitNm) < 0) {
  912. normalYn = 'N';
  913. errorMsg += '기본단위;';
  914. }
  915. if("Y:N".indexOf(value.pchItemYn) < 0) {
  916. normalYn = 'N';
  917. errorMsg += '구매품목여부;';
  918. }
  919. if("Y:N".indexOf(value.saleItemYn) < 0) {
  920. normalYn = 'N';
  921. errorMsg += '판매품목여부;';
  922. }
  923. if("kg:g:mg:ton".indexOf(value.weightUnitNm) < 0) {
  924. normalYn = 'N';
  925. errorMsg += '중량단위;';
  926. }
  927. if("cm³:m³:L:ml".indexOf(value.volumeUnitNm) < 0) {
  928. normalYn = 'N';
  929. errorMsg += '부피단위;';
  930. }
  931. if("cm:m:mm:km:inch:ft:yd".indexOf(value.widthUnitNm) < 0) {
  932. normalYn = 'N';
  933. errorMsg += '가로단위;';
  934. }
  935. if("cm:m:mm:km:inch:ft:yd".indexOf(value.heightUnitNm) < 0) {
  936. normalYn = 'N';
  937. errorMsg += '세로단위;';
  938. }
  939. if("cm:m:mm:km:inch:ft:yd".indexOf(value.highUnitNm) < 0) {
  940. normalYn = 'N';
  941. errorMsg += '높이단위;';
  942. }
  943. if("Y:N".indexOf(value.expryYn) < 0) {
  944. normalYn = 'N';
  945. errorMsg += '유통기한여부;';
  946. }
  947. if("Y:N".indexOf(value.rtnPssblYn) < 0) {
  948. normalYn = 'N';
  949. errorMsg += '반품가능여부;';
  950. }
  951. if("실물반품:폐기반품".indexOf(value.rtnDvsnNm) < 0) {
  952. normalYn = 'N';
  953. errorMsg += '반품구분;';
  954. }
  955. // 행추가
  956. $(STINFO04010_UPLOAD_GRID_ID).jqGrid('addRow', {position: 'last'});
  957. var rids = $(STINFO04010_UPLOAD_GRID_ID).jqGrid('getDataIDs');
  958. var last_row_id = rids[rids.length - 1];
  959. $(STINFO04010_UPLOAD_GRID_ID).jqGrid('setCell', last_row_id, 'viewCd', 'C');
  960. $(STINFO04010_UPLOAD_GRID_ID).jqGrid('setCell', last_row_id, 'normalYn', normalYn); // 정상여부
  961. $(STINFO04010_UPLOAD_GRID_ID).jqGrid('setCell', last_row_id, 'errorMsg', errorMsg);
  962. $(STINFO04010_UPLOAD_GRID_ID).jqGrid('setCell', last_row_id, 'itemNm', value.itemNm);
  963. $(STINFO04010_UPLOAD_GRID_ID).jqGrid('setCell', last_row_id, 'itemTypeNm', value.itemTypeNm);
  964. $(STINFO04010_UPLOAD_GRID_ID).jqGrid('setCell', last_row_id, 'impDvsnNm', value.impDvsnNm);
  965. $(STINFO04010_UPLOAD_GRID_ID).jqGrid('setCell', last_row_id, 'podrPssblDvsnNm', value.podrPssblDvsnNm);
  966. $(STINFO04010_UPLOAD_GRID_ID).jqGrid('setCell', last_row_id, 'unitNm', value.unitNm);
  967. $(STINFO04010_UPLOAD_GRID_ID).jqGrid('setCell', last_row_id, 'pchItemYn', value.pchItemYn);
  968. $(STINFO04010_UPLOAD_GRID_ID).jqGrid('setCell', last_row_id, 'saleItemYn', value.saleItemYn);
  969. $(STINFO04010_UPLOAD_GRID_ID).jqGrid('setCell', last_row_id, 'weight', value.weight);
  970. $(STINFO04010_UPLOAD_GRID_ID).jqGrid('setCell', last_row_id, 'weightUnitNm', value.weightUnitNm);
  971. $(STINFO04010_UPLOAD_GRID_ID).jqGrid('setCell', last_row_id, 'volume', value.volume);
  972. $(STINFO04010_UPLOAD_GRID_ID).jqGrid('setCell', last_row_id, 'volumeUnitNm', value.volumeUnitNm);
  973. $(STINFO04010_UPLOAD_GRID_ID).jqGrid('setCell', last_row_id, 'width', value.width);
  974. $(STINFO04010_UPLOAD_GRID_ID).jqGrid('setCell', last_row_id, 'widthUnitNm', value.widthUnitNm);
  975. $(STINFO04010_UPLOAD_GRID_ID).jqGrid('setCell', last_row_id, 'height', value.height);
  976. $(STINFO04010_UPLOAD_GRID_ID).jqGrid('setCell', last_row_id, 'heightUnitNm', value.heightUnitNm);
  977. $(STINFO04010_UPLOAD_GRID_ID).jqGrid('setCell', last_row_id, 'high', value.high);
  978. $(STINFO04010_UPLOAD_GRID_ID).jqGrid('setCell', last_row_id, 'highUnitNm', value.highUnitNm);
  979. $(STINFO04010_UPLOAD_GRID_ID).jqGrid('setCell', last_row_id, 'expryYn', value.expryYn);
  980. $(STINFO04010_UPLOAD_GRID_ID).jqGrid('setCell', last_row_id, 'expryPeriod', value.expryPeriod);
  981. $(STINFO04010_UPLOAD_GRID_ID).jqGrid('setCell', last_row_id, 'rtnPssblYn', value.rtnPssblYn);
  982. $(STINFO04010_UPLOAD_GRID_ID).jqGrid('setCell', last_row_id, 'rtnDvsnNm', value.rtnDvsnNm);
  983. $(STINFO04010_UPLOAD_GRID_ID).jqGrid('setCell', last_row_id, 'barcode', value.barcode);
  984. });
  985. $(STINFO04010_UPLOAD_GRID_EMPTY).hide();
  986. }
  987. },
  988. change: function() {
  989. // 파일선택
  990. $(document).on('change', '#ITP_FORM_STINFO04010_UPLOAD_EXCEL_UPLOAD_SELECT_FILE', function(obj) {
  991. var input = obj.target;
  992. var reader = new FileReader();
  993. var rABS = !!reader.readAsBinaryString;
  994. reader.onload = function(){
  995. var fileData = reader.result;
  996. var wb = XLSX.read(fileData, {type : rABS ? 'binary' : 'array'});
  997. var sheetNameList = wb.SheetNames; // 시트 이름 목록 가져오기
  998. var firstSheetName = sheetNameList[0]; // 첫번째 시트명
  999. var firstSheet = wb.Sheets[firstSheetName]; // 첫번째 시트
  1000. var rowObj =XLSX.utils.sheet_to_json(firstSheet, {header:"A", defval: ""});
  1001. console.log(JSON.stringify(rowObj));
  1002. // console.log(rowObj.length);
  1003. $('#ITP_FORM_STINFO04010_UPLOAD_EXCEL_UPLOAD_SELECT_FILE').val('');
  1004. if(rowObj.length < 3) {
  1005. itp_fn_modal_alert_ajax('엑셀파일에 품목 데이터를 기술하세요.');
  1006. return;
  1007. } else if(rowObj.length > 1001) {
  1008. itp_fn_modal_alert_ajax('엑셀 일괄처리는 최대 1000건까지 가능합니다.');
  1009. return;
  1010. }
  1011. uploadObj.button.makeExcelDataList(rowObj);
  1012. };
  1013. if(rABS) reader.readAsBinaryString(input.files[0]);
  1014. else reader.readAsArrayBuffer(input.files[0]);
  1015. });
  1016. },
  1017. grid: {
  1018. init: function () {
  1019. this.search();
  1020. },
  1021. colModel: gridColModel.upload,
  1022. search: function() {
  1023. pageObj.switchScreen('UPLOAD');
  1024. this.unload();
  1025. this.load();
  1026. },
  1027. load: function() {
  1028. let param = $('#ITP_FORM_STINFO04010_SEARCH').serializeObject();
  1029. param.gridSize = $.jgrid.defaults.rowNum;
  1030. param.sbrandId = fn_make_user_info.get('brandId');
  1031. param.uploadYn = "Y"; // 엑셀업로드 여부
  1032. var option = {
  1033. gridId: STINFO04010_UPLOAD_GRID_ID,
  1034. colModel: gridColModel.upload,
  1035. param: param,
  1036. url: DOMAIN + API_DETAIL_GRID_LIST,
  1037. pager: STINFO04010_UPLOAD_GRID_PAGER,
  1038. onCellSelect: function(rowId, cellIdx, cellValue) {
  1039. // STINFO04010_UPLOAD_GRID_LAST_ROW_ID = itp_fn_set_data_editable(rowId, cellIdx, STINFO04010_UPLOAD_GRID_LAST_ROW_ID, STINFO04010_UPLOAD_GRID_ID, ['itemId']);
  1040. },
  1041. loadComplete: function(data) {
  1042. // console.log(data);
  1043. itp_fn_grid_load_complete(data, STINFO04010_UPLOAD_GRID_ID, true, 'number', 'STINFO04010', listObj.itp_STINFO04010_search, listObj.empty, true, data.gridRecords, true);
  1044. },
  1045. onPaging: function(action) {
  1046. itp_fn_grid_paging(STINFO04010_UPLOAD_GRID_ID, action, param);
  1047. }
  1048. };
  1049. itp_fn_grid_make_remote(option);
  1050. },
  1051. clearData : function() {
  1052. $(STINFO04010_UPLOAD_GRID_ID).jqGrid('clearGridData', true);
  1053. $(STINFO04010_UPLOAD_GRID_LIST).find('.ui-jqgrid-bdiv').css('min-height', '100px');
  1054. $(STINFO04010_UPLOAD_GRID_EMPTY).html(ITP_MSG_LOCALE.message.grid.noData);
  1055. $(STINFO04010_UPLOAD_GRID_EMPTY).show();
  1056. },
  1057. unload : function() {
  1058. $.jgrid.gridUnload(STINFO04010_UPLOAD_GRID_ID);
  1059. }
  1060. }
  1061. }
  1062. /*신규화면 Object*/
  1063. let createObj = {
  1064. init: function () {
  1065. pageObj.switchScreen('ADD');
  1066. this.load();
  1067. pageObj.fileUpload();
  1068. itp_fn_form_clear_validate(null, '#ITP_FORM_STINFO04010_DETAIL');
  1069. this.button.init();
  1070. // itemClassLevel.make(1, 'ADD');
  1071. },
  1072. load: function() {
  1073. var param = {keyType:"It"};
  1074. fn_ajax_call(API_GET_KEY, param, this.callback, 'GET');
  1075. },
  1076. callback: function (result) {
  1077. $('.fnBrandId').text(result.keyData);
  1078. $('#ITP_FORM_STINFO04010_DETAIL .fnItemClassMgntNo').text(result.keyData);
  1079. $('#ITP_FORM_STINFO04010_DETAIL #ITP_FORM_STINFO04010_DETAIL_ITEM_ID').val(result.keyData);
  1080. },
  1081. button: {
  1082. init: function() {
  1083. },
  1084. cancel: function() {
  1085. let childrens = $('#ITP_FORM_STINFO04010_VIEW_FILE').children();
  1086. childrens.remove();
  1087. listObj.grid.search();
  1088. },
  1089. save: function() {
  1090. if(SCREEN_MODE == 'UPLOAD') { // 엑셀 일괄저장
  1091. // 그리드 체크
  1092. var reccount = $(STINFO04010_UPLOAD_GRID_ID).getGridParam("reccount");
  1093. if(reccount < 1) {
  1094. return;
  1095. }
  1096. let check = true;
  1097. const rowData = $(STINFO04010_UPLOAD_GRID_ID).getRowData();
  1098. $.each(rowData, function(key, value) {
  1099. if(check) {
  1100. if(value.normalYn == 'N') {
  1101. check = false;
  1102. }
  1103. }
  1104. });
  1105. if(!check) {
  1106. itp_fn_modal_alert_ajax('비정상 데이터가 포함되어 있습니다.');
  1107. return;
  1108. }
  1109. var modalFn = {
  1110. callBack: () => {
  1111. const formId = '#ITP_FORM_STINFO04010_UPLOAD';
  1112. let gridInsertData = [];
  1113. $.each(rowData, function(key, value) {
  1114. gridInsertData.push(value);
  1115. });
  1116. let param = $(formId).serializeObject();
  1117. param.list = gridInsertData;
  1118. var searhFn = function() {
  1119. ITP_FORM_STINFO04010_DETAIL_IS_WRITING = false;
  1120. listObj.grid.search();
  1121. };
  1122. fn_ajax_call(API_DETAIL_SAVE_LIST, JSON.stringify(param), searhFn, 'POST');
  1123. }
  1124. };
  1125. itp_fn_modal_confirm('저장 하시겠습니까?', modalFn);
  1126. } else {
  1127. const formId = '#ITP_FORM_STINFO04010_DETAIL';
  1128. itp_fn_form_clear_validate(null, formId);
  1129. if (itp_fn_form_event.isValid(formId)) {
  1130. // 박스수량, 유통기간 체크
  1131. var eid='#ITP_FORM_STINFO04010_DETAIL_ONE_BOX_QTY';
  1132. $(eid).val($(eid).val().replace(/[^0-9]/g, ''));
  1133. eid='#ITP_FORM_STINFO04010_DETAIL_EXPRY_PERIOD';
  1134. $(eid).val($(eid).val().replace(/[^0-9]/g, ''));
  1135. let param = $(formId).serializeObject();
  1136. // console.log(JSON.stringify(param));
  1137. var searhFn = function() {
  1138. ITP_FORM_STINFO04010_DETAIL_IS_WRITING = false;
  1139. listObj.grid.search();
  1140. };
  1141. fn_ajax_call(API_DETAIL_SAVE, JSON.stringify(param), searhFn, 'POST');
  1142. }
  1143. }
  1144. }
  1145. }
  1146. };
  1147. function fileUploadInfo4010() {
  1148. //파일업로드(등록/수정화면)
  1149. var uid='#ITP_FORM_STINFO04010_VIEW_FILE';
  1150. var fid='#ITP_FORM_STINFO04010_VIEW_FILE_NO';
  1151. console.log("xx file no xxx" ,$(fid).val())
  1152. $(uid).empty();
  1153. $(uid).bootstrapFileUpload({
  1154. url: DOMAIN + '/api/file/upload',
  1155. inputName: 'uploadFile',
  1156. folderName: 'affl',
  1157. fileNumber: $(fid).val(),
  1158. fileInput: fid,
  1159. fileTypes: ITP_UPLOAD_DEFAULTS.fileTypes,
  1160. viewCode: 'R',
  1161. formMethod: 'post',
  1162. multiFile: true,
  1163. multiUpload: false,
  1164. maxFiles: 5,
  1165. showThumb: true,
  1166. thumbWidth: 80,
  1167. thumbHeight: 80,
  1168. debug: false,
  1169. screen_id: 'ITP_STINFO04010_VIEW_FILE',
  1170. showYn: false,
  1171. onInit: function() {
  1172. }
  1173. });
  1174. setTimeout(function() {
  1175. $('#ITP_STINFO04010_VIEW_FILE_UPLOAD_FORM').hide();
  1176. $(uid).css("width", "100%");
  1177. // $(uid+' .btn').hide();
  1178. },20);
  1179. }