Browse Source

재고실사 엑셀업로드 구현중

marseyes 2 years ago
parent
commit
db131d8a84

+ 1 - 0
src/main/webapp/app/stockmng/STOCKMNG02010.html

@@ -84,6 +84,7 @@
84
 												<select id="ITP_FORM_STOCKMNG02010_DETAIL_CDD_DVSN" data-select-code="CDD_DVSN" class="form-control itp_input" name="cddDvsn"></select>										
84
 												<select id="ITP_FORM_STOCKMNG02010_DETAIL_CDD_DVSN" data-select-code="CDD_DVSN" class="form-control itp_input" name="cddDvsn"></select>										
85
 											</div>
85
 											</div>
86
 											<div class="col-xs-2 itp_ip">
86
 											<div class="col-xs-2 itp_ip">
87
+												<input id="ITP_FORM_STOCKMNG02010_DETAIL_EXCEL_UPLOAD_SELECT_FILE" type="file" style="display:none;" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet">
87
 												<button type="button" id="ITP_BTN_STOCKMNG02010_DETAIL_EXCEL_UPLOAD" class="btn btn-warning btn-sm FFB"><i class="glyphicon "></i>&nbsp;&nbsp;엑셀업로드&nbsp;&nbsp;</button>
88
 												<button type="button" id="ITP_BTN_STOCKMNG02010_DETAIL_EXCEL_UPLOAD" class="btn btn-warning btn-sm FFB"><i class="glyphicon "></i>&nbsp;&nbsp;엑셀업로드&nbsp;&nbsp;</button>
88
 											</div>
89
 											</div>
89
 										</div>
90
 										</div>

+ 12 - 3
src/main/webapp/app/stockmng/STOCKMNG04010.html

@@ -118,14 +118,23 @@
118
 			                                        <input type="text" id="ITP_FORM_STOCKMNG04010_DETAIL_ZIPNO" class="form-control itp_input" name="zipNo" value="" maxlength="6" placeholder="우편번호" readonly="readonly">													
118
 			                                        <input type="text" id="ITP_FORM_STOCKMNG04010_DETAIL_ZIPNO" class="form-control itp_input" name="zipNo" value="" maxlength="6" placeholder="우편번호" readonly="readonly">													
119
 			                                    </div>
119
 			                                    </div>
120
 			                                    <div class="col-xs-2 itp_in" style="width:10%;">
120
 			                                    <div class="col-xs-2 itp_in" style="width:10%;">
121
-			                                        <button type="button" id="ITP_FORM_STOCKMNG04010_DETAIL_ADDRESS_SEARCH" class="btn btn-primary btn-sm ADDS" style="margin:0 3px;">&nbsp;&nbsp;주소찾기&nbsp;&nbsp;</button>
121
+			                                        <button type="button" id="ITP_BTN_STOCKMNG04010_DETAIL_ADDRESS_SEARCH" class="btn btn-primary btn-sm ADDS" style="margin:0 3px;">&nbsp;&nbsp;주소찾기&nbsp;&nbsp;</button>
122
 			                                    </div>
122
 			                                    </div>
123
 			                                    <div class="col-xs-4 itp_in" style="margin:0 5px;">
123
 			                                    <div class="col-xs-4 itp_in" style="margin:0 5px;">
124
-			                                        <input type="text" id="ITP_FORM_STOCKMNG04010_DETAIL_LOAD_ADDR" class="form-control itp_input" name="addr1" value="" placeholder="기본주소" readonly="readonly">													
124
+			                                        <input type="text" id="ITP_FORM_STOCKMNG04010_DETAIL_ADRES" class="form-control itp_input" name="addr1" value="" placeholder="기본주소" readonly="readonly">													
125
 			                                    </div>
125
 			                                    </div>
126
 			                                    <div class="col-xs-4 itp_in">
126
 			                                    <div class="col-xs-4 itp_in">
127
-			                                        <input type="text" id="ITP_FORM_STOCKMNG04010_DETAIL_DTL_ADDR" class="form-control itp_input" name="addr2" value="" placeholder="상세주소">													
127
+			                                        <input type="text" id="ITP_FORM_STOCKMNG04010_DETAIL_ADRES_DTL" class="form-control itp_input" name="addr2" value="" placeholder="상세주소">													
128
 			                                    </div>
128
 			                                    </div>
129
+			                                    
130
+			                                    <!-- 주소 맵 -->
131
+												<input type="hidden" id="ITP_FORM_STOCKMNG04010_DETAIL_LOTS_ADDRESS" value="" />
132
+												<input type="hidden" id="ITP_FORM_STOCKMNG04010_DETAIL_STREET_ADDRESS" value="" />
133
+												<input type="hidden" name="latX" id="ITP_FORM_STOCKMNG04010_DETAIL_LAT" value="" />
134
+												<input type="hidden" name="latY" id="ITP_FORM_STOCKMNG04010_DETAIL_LNG" value="" />
135
+												<input type="hidden" id="ITP_FORM_STOCKMNG04010_DETAIL_HJ_DONG" value="" />
136
+												<input type="hidden" id="ITP_FORM_STOCKMNG04010_DETAIL_BJ_DONG" value="" />
137
+												<div id="ITP_FORM_STOCKMNG04010_DETAIL_MAP" style="width:0px; height:0px;"></div>
129
 			                                </div>
138
 			                                </div>
130
 			                            </div>	
139
 			                            </div>	
131
 			                        </div>	
140
 			                        </div>	

+ 2 - 4
src/main/webapp/js/app/stockmng/ITP_STOCKMNG01010.js

@@ -139,8 +139,7 @@ let pageObj = {
139
 			fn_proc_btn_auth('STOCKMNG01010');
139
 			fn_proc_btn_auth('STOCKMNG01010');
140
 			
140
 			
141
 			// 브랜드ID 지정
141
 			// 브랜드ID 지정
142
-			var data = JSON.parse(sessionStorage.getItem('itp_manage_brand_info'));
143
-			$('#ITP_FORM_STOCKMNG01010_SEARCH_BRAND_ID').val(data.brandId);
142
+			$('#ITP_FORM_STOCKMNG01010_SEARCH_BRAND_ID').val(pageObj.brandInfo.brandId);
144
 			
143
 			
145
 			pageObj.fnWhsList(function() {
144
 			pageObj.fnWhsList(function() {
146
 				pageObj.fnLocationList();
145
 				pageObj.fnLocationList();
@@ -340,8 +339,7 @@ let listObj = {
340
 			this.load();
339
 			this.load();
341
 		},
340
 		},
342
 		load: function() {
341
 		load: function() {
343
-			var data = JSON.parse(sessionStorage.getItem('itp_manage_brand_info'));
344
-			$('#ITP_FORM_STOCKMNG01010_SEARCH_BRAND_ID').val(data.brandId);
342
+			$('#ITP_FORM_STOCKMNG01010_SEARCH_BRAND_ID').val(pageObj.brandInfo.brandId);
345
 			
343
 			
346
 			let param = $('#ITP_FORM_STOCKMNG01010_SEARCH').serializeObject();
344
 			let param = $('#ITP_FORM_STOCKMNG01010_SEARCH').serializeObject();
347
 			param.gridSize = $.jgrid.defaults.rowNum;
345
 			param.gridSize = $.jgrid.defaults.rowNum;

+ 31 - 0
src/main/webapp/js/app/stockmng/ITP_STOCKMNG02010.js

@@ -264,6 +264,8 @@ const gridColModel = {
264
 
264
 
265
 require(['config'], function() {
265
 require(['config'], function() {
266
 	require([
266
 	require([
267
+		'jquery.bootstrap.fileUpload',	//파일 업로드가 있는 페이지에서 로딩
268
+		'xlsx' 		// 엑셀 다운로드
267
 	], function($) {
269
 	], function($) {
268
 		pageObj.init();
270
 		pageObj.init();
269
 	});
271
 	});
@@ -335,6 +337,7 @@ let pageObj = {
335
 						case 'ITP_BTN_STOCKMNG02010_SAVE'				: stockCddObj.button.save(); 		break;	// 저장 버튼
337
 						case 'ITP_BTN_STOCKMNG02010_SAVE'				: stockCddObj.button.save(); 		break;	// 저장 버튼
336
 						case 'ITP_BTN_STOCKMNG02010_DETAIL_ADDROW'		: stockCddObj.button.addRow();	break;	// 품목추가 버튼
338
 						case 'ITP_BTN_STOCKMNG02010_DETAIL_ADDROW'		: stockCddObj.button.addRow();	break;	// 품목추가 버튼
337
 						// case 'ITP_BTN_STOCKMNG02010_DETAIL_DELROW'		: locInfoObj.button.delRow();	break;	// 상세:삭제버튼
339
 						// case 'ITP_BTN_STOCKMNG02010_DETAIL_DELROW'		: locInfoObj.button.delRow();	break;	// 상세:삭제버튼
340
+						case 'ITP_BTN_STOCKMNG02010_DETAIL_EXCEL_UPLOAD'	: stockCddObj.button.uploadExcel();	break;	// 엑셀업로드
338
 					}
341
 					}
339
 				});
342
 				});
340
 			});
343
 			});
@@ -631,13 +634,41 @@ let viewObj = {
631
 /*재고실사 Object*/
634
 /*재고실사 Object*/
632
 let stockCddObj = {
635
 let stockCddObj = {
633
 	init: function () {
636
 	init: function () {
637
+		this.change();
634
 		this.unload();
638
 		this.unload();
635
 		this.load();
639
 		this.load();
636
 	},
640
 	},
641
+	change: function() {
642
+		// 파일선택
643
+		$(document).on('change', '#ITP_FORM_STOCKMNG02010_DETAIL_EXCEL_UPLOAD_SELECT_FILE', function(obj) {						
644
+			var input = obj.target;
645
+		    var reader = new FileReader();
646
+			var rABS = !!reader.readAsBinaryString;
647
+		    reader.onload = function(){
648
+		        var fileData = reader.result;
649
+		        var wb = XLSX.read(fileData, {type : rABS ? 'binary' : 'array'});
650
+		        var sheetNameList = wb.SheetNames; // 시트 이름 목록 가져오기 
651
+		        var firstSheetName = sheetNameList[0]; // 첫번째 시트명
652
+		        var firstSheet = wb.Sheets[firstSheetName]; // 첫번째 시트 
653
+		        var rowObj =XLSX.utils.sheet_to_json(firstSheet, {header:"A", defval: ""});
654
+				
655
+				console.log(JSON.stringify(rowObj));
656
+				// console.log(rowObj);
657
+				// console.log(Object.keys(rowObj[0]).length);
658
+				// makeExcelDataList(rowObj);
659
+		    };
660
+		    if(rABS) reader.readAsBinaryString(input.files[0]); 
661
+			else reader.readAsArrayBuffer(input.files[0]);			
662
+		});
663
+	}, 
637
 	button: {
664
 	button: {
638
 		cancel: function() {
665
 		cancel: function() {
639
 			listObj.grid.search();
666
 			listObj.grid.search();
640
 		},
667
 		},
668
+		uploadExcel: function() {
669
+			// 파일선택
670
+			$('#ITP_FORM_STOCKMNG02010_DETAIL_EXCEL_UPLOAD_SELECT_FILE').click();
671
+		}, 
641
 		addRow: function() {
672
 		addRow: function() {
642
 			var brandId = $('#ITP_FORM_STOCKMNG02010_DETAIL_BRAND_ID').val();
673
 			var brandId = $('#ITP_FORM_STOCKMNG02010_DETAIL_BRAND_ID').val();
643
 			var whsId = $('#ITP_FORM_STOCKMNG02010_DETAIL_WHS_ID').val();
674
 			var whsId = $('#ITP_FORM_STOCKMNG02010_DETAIL_WHS_ID').val();

+ 21 - 4
src/main/webapp/js/app/stockmng/ITP_STOCKMNG04010.js

@@ -177,6 +177,7 @@ const gridColModel = {
177
 
177
 
178
 require(['config'], function() {
178
 require(['config'], function() {
179
 	require([
179
 	require([
180
+		'kakao.map.util'
180
 	], function($) {
181
 	], function($) {
181
 		pageObj.init();
182
 		pageObj.init();
182
 	});
183
 	});
@@ -233,6 +234,9 @@ let pageObj = {
233
 						case 'ITP_BTN_STOCKMNG04010_SAVE'				: createObj.button.save(); 		break;	// 저장 버튼
234
 						case 'ITP_BTN_STOCKMNG04010_SAVE'				: createObj.button.save(); 		break;	// 저장 버튼
234
 						case 'ITP_BTN_STOCKMNG04010_DETAIL_ADDROW'		: locInfoObj.button.addRow();	break;	// 상세:추가버튼
235
 						case 'ITP_BTN_STOCKMNG04010_DETAIL_ADDROW'		: locInfoObj.button.addRow();	break;	// 상세:추가버튼
235
 						case 'ITP_BTN_STOCKMNG04010_DETAIL_DELROW'		: locInfoObj.button.delRow();	break;	// 상세:삭제버튼
236
 						case 'ITP_BTN_STOCKMNG04010_DETAIL_DELROW'		: locInfoObj.button.delRow();	break;	// 상세:삭제버튼
237
+						case 'ITP_BTN_STOCKMNG04010_DETAIL_ADDRESS_SEARCH'		: createObj.button.address();	break;	// 신규등록 주소 찾기
238
+						case 'ITP_BTN_STOCKMNG04010_SEARCH_SRH'			: createObj.button.popupStore();	break;	// 매장선택 팝업
239
+						case 'ITP_BTN_STOCKMNG04010_SEARCH_MODIFY'		: createObj.button.eraseStore();	break;	// 매장선택 삭제
236
 					}
240
 					}
237
 				});
241
 				});
238
 			});
242
 			});
@@ -288,8 +292,8 @@ let pageObj = {
288
 			$('#ITP_FORM_STOCKMNG04010_DETAIL_MGR_NM').val('');
292
 			$('#ITP_FORM_STOCKMNG04010_DETAIL_MGR_NM').val('');
289
 			$('#ITP_FORM_STOCKMNG04010_DETAIL_STORE_NM').val('');
293
 			$('#ITP_FORM_STOCKMNG04010_DETAIL_STORE_NM').val('');
290
 			$('#ITP_FORM_STOCKMNG04010_DETAIL_ZIPNO').val('');
294
 			$('#ITP_FORM_STOCKMNG04010_DETAIL_ZIPNO').val('');
291
-			$('#ITP_FORM_STOCKMNG04010_DETAIL_LOAD_ADDR').val('');
292
-			$('#ITP_FORM_STOCKMNG04010_DETAIL_DTL_ADDR').val('');
295
+			$('#ITP_FORM_STOCKMNG04010_DETAIL_ADRES').val('');
296
+			$('#ITP_FORM_STOCKMNG04010_DETAIL_ADRES_DTL').val('');
293
 			
297
 			
294
 		} else if(mode == 'MODIFY') { // 수정
298
 		} else if(mode == 'MODIFY') { // 수정
295
 			$('#ITP_BTN_STOCKMNG04010_SRH').hide();
299
 			$('#ITP_BTN_STOCKMNG04010_SRH').hide();
@@ -556,8 +560,10 @@ let modifyObj = {
556
 		$('#ITP_FORM_STOCKMNG04010_DETAIL #ITP_FORM_STOCKMNG04010_DETAIL_MGR_NM').val(result.mgrNm);
560
 		$('#ITP_FORM_STOCKMNG04010_DETAIL #ITP_FORM_STOCKMNG04010_DETAIL_MGR_NM').val(result.mgrNm);
557
 		$('#ITP_FORM_STOCKMNG04010_DETAIL #ITP_FORM_STOCKMNG04010_DETAIL_STORE_NM').val(result.storeNm);
561
 		$('#ITP_FORM_STOCKMNG04010_DETAIL #ITP_FORM_STOCKMNG04010_DETAIL_STORE_NM').val(result.storeNm);
558
 		$('#ITP_FORM_STOCKMNG04010_DETAIL #ITP_FORM_STOCKMNG04010_DETAIL_ZIPNO').val(result.zipNo);
562
 		$('#ITP_FORM_STOCKMNG04010_DETAIL #ITP_FORM_STOCKMNG04010_DETAIL_ZIPNO').val(result.zipNo);
559
-		$('#ITP_FORM_STOCKMNG04010_DETAIL #ITP_FORM_STOCKMNG04010_DETAIL_LOAD_ADDR').val(result.addr1);
560
-		$('#ITP_FORM_STOCKMNG04010_DETAIL #ITP_FORM_STOCKMNG04010_DETAIL_DTL_ADDR').val(result.addr2);
563
+		$('#ITP_FORM_STOCKMNG04010_DETAIL #ITP_FORM_STOCKMNG04010_DETAIL_ADRES').val(result.addr1);
564
+		$('#ITP_FORM_STOCKMNG04010_DETAIL #ITP_FORM_STOCKMNG04010_DETAIL_ADRES_DTL').val(result.addr2);
565
+		
566
+		kakaoMap.init('ITP_FORM_STOCKMNG04010_DETAIL', $('#ITP_FORM_STOCKMNG04010_DETAIL #ITP_FORM_STOCKMNG04010_DETAIL_ADRES').val());
561
 		
567
 		
562
 		// 권한정보 리스트 조회
568
 		// 권한정보 리스트 조회
563
 		modifyObj.grid.init();
569
 		modifyObj.grid.init();
@@ -629,6 +635,7 @@ let modifyObj = {
629
 /*신규화면 Object*/
635
 /*신규화면 Object*/
630
 let createObj = {
636
 let createObj = {
631
 	init: function () {
637
 	init: function () {
638
+		kakaoMap.init('ITP_FORM_STOCKMNG04010_DETAIL', '');
632
 		this.unload();
639
 		this.unload();
633
 		this.load();
640
 		this.load();
634
 	},
641
 	},
@@ -673,6 +680,16 @@ let createObj = {
673
 				};
680
 				};
674
 				fn_ajax_call(detailViewCd == 'C' ? WHS_MNG_ADD_WHS : WHS_MNG_MIDIFY_WHS, JSON.stringify(param), searhFn, 'POST');
681
 				fn_ajax_call(detailViewCd == 'C' ? WHS_MNG_ADD_WHS : WHS_MNG_MIDIFY_WHS, JSON.stringify(param), searhFn, 'POST');
675
 			}
682
 			}
683
+		}, 
684
+		address: function() {
685
+			kakaoMap.address('ITP_FORM_STOCKMNG04010_DETAIL');
686
+		},
687
+		popupStore: function() { // 매장선택 팝업
688
+			
689
+		}, 
690
+		eraseStore: function() { // 매장선택 삭제
691
+			$('#ITP_FORM_STOCKMNG04010_DETAIL_STORE_ID').val('');
692
+			$('#ITP_FORM_STOCKMNG04010_DETAIL_STORE_NM').val('');
676
 		}
693
 		}
677
 	},
694
 	},
678
 	load: function () {
695
 	load: function () {