Преглед на файлове

네이버 최저가 화면만 구성

eskim преди 5 години
родител
ревизия
980fd4a58e

+ 20 - 0
style24.admin/src/main/java/com/style24/admin/biz/web/TsaGoodsController.java

@@ -2009,4 +2009,24 @@ public class TsaGoodsController extends TsaBaseController {
 		return super.ok("");
 	}
 
+	/**
+	 * 네이버 최저가 조회 화면
+	 *
+	 * @return
+	 * @author eskim
+	 * @since 2020. 12. 03
+	 */
+	@GetMapping("/naver/price/form")
+	@ResponseBody
+	public ModelAndView goodsNaverPriceForm() {
+		ModelAndView mav = new ModelAndView();
+
+		// 공급업체
+		String supplyCompCd = "";
+		mav.addObject("supplyCompList", rendererService.getSupplyCompanyList(supplyCompCd, "Y"));
+
+		mav.setViewName("goods/GoodsNaverPriceForm");
+		return mav;
+	}
+
 }

+ 1 - 1
style24.admin/src/main/webapp/WEB-INF/views/goods/GoodsItemkindForm.html

@@ -71,7 +71,7 @@
 						</td>
 					</tr>
 					<tr>
-						<th>브랜드</th>
+						<th>업체/브랜드</th>
 						<td>
 							<select name="supplyCompCd" id="supplyCompCd">
 								<option value="" th:if="${sessionInfo.roleCd} != 'G001_B000'">[전체]</option>

+ 3 - 3
style24.admin/src/main/webapp/WEB-INF/views/goods/GoodsListForm.html

@@ -239,9 +239,6 @@
 					<input type="hidden" name="pageNo" id="pageNo" value ="1"/>
 				</li>
 			</ul>
-			<label class="off">
-				<a href="javascript:void(0);" id="GoodsExcelList" style="display: none;">상품목록 엑셀다운로드</a>
-			</label>
 			<!-- //상단버튼 영역  -->
 			<div id="gridList" style="width: 100%; height: 700px;" class="ag-theme-balham lh60"></div>
 			<ul class="panelBar">
@@ -255,6 +252,9 @@
 					<button type="button" class="btn btn-info btn-sm" onclick="fnGoodsStaSelfNotArea();" th:if="${sessionInfo.roleCd == 'G001_0000' OR sessionInfo.roleCd == 'G001_A000' OR sessionInfo.roleCd == 'G001_A101' OR sessionInfo.roleCd == 'G001_A100' OR sessionInfo.roleCd == 'G001_A001'}">입점상태일괄적용</button>
 				</li>
 			</ul>
+			<label class="off">
+				<a href="javascript:void(0);" id="GoodsExcelList" style="display: none;">상품목록 엑셀다운로드</a>
+			</label>
 			<ul class="boxContent off" id="goodsStatArea">
 				<li class="pad20">
 					<table class="frmStyle">

+ 338 - 0
style24.admin/src/main/webapp/WEB-INF/views/goods/GoodsNaverPriceForm.html

@@ -0,0 +1,338 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : GoodsNaverPriceForm.html
+ * @desc    : 네이버최저가 조회
+ *============================================================================
+ * Pastelmall
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2020.12.03   eskim       최초 작성
+ *******************************************************************************
+ -->
+	<div id="main">
+		<!-- 메인타이틀 영역 -->
+		<div class="main-title">
+		</div>
+		<!-- //메인타이틀 영역 -->
+		
+		<!-- 메뉴 설명 -->
+		<div class="infoBox menu-desc">
+		</div>
+		<form id="searchForm" name="searchForm" action="#" th:action="@{'/goods/list'}">
+		<input type="hidden" id="searchGb" name="searchGb" />
+ 		<!-- 패널 영역1 -->
+		<div class="panelStyle" >
+			<!-- TITLE -->
+			<div class="panelTitle">
+				<h3><i class="fa fa-info-circle"></i>아래 검색조건 중 하나를 꼭 입력해 주세요.</h3>
+			</div>
+			<!-- //TITLE -->
+			<div class="panelContent">
+				<table class="frmStyle">
+					<colgroup>
+						<col width="10%"/>
+						<col width="40%"/>
+						<col width="10%"/>
+						<col/>
+					</colgroup>
+					<tr>
+						<th rowspan="3">브랜드</th>
+						<td rowspan="3">
+							<select name="supplyCompCd" id="supplyCompCd">
+								<option value="" th:if="${sessionInfo.roleCd} != 'G001_B000'">[전체]</option>
+								<option th:if="${supplyCompList}" th:each="oneData, status : ${supplyCompList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+							</select>
+							<select name="brandCd" id="brandCd">
+								<option value="">[전체]</option>
+							</select>
+						</td>
+						<th rowspan="3">키워드<em class="required" title="필수"></em></th>
+						<td rowspan="3">
+							<select name="search" id="search">
+								<option value="searchGoodsCd">상품코드</option>
+								<option value="searchGoodsNm">상품명</option>
+								<option value="searchGoodsNum">품번</option>
+							</select>
+							<textarea class="textareaR3 w150" name="condition" id="condition"></textarea>
+						</td>
+					</tr>
+				</table>
+				<ul class="panelBar">
+					<li class="center">
+						<button type="button" class="btn btn-gray btn-lg" id="btnInit" >초기화</button>
+						<button type="button" class="btn btn-info btn-lg" id="btnSearch" >조회</button>
+					</li>
+				</ul>
+			</div>
+			<!-- //검색조건 영역 -->
+		</div>
+		<!-- 패널 영역1 -->
+		<div class="panelStyle">
+			<!-- 검색결과 영역 -->
+			<!-- 상단버튼 영역  -->
+			<ul class="panelBar">
+				<li>
+					<button type="button" class="btn btn-default btn-lg" onclick="fnGoodsExcelDownLoad('');">엑셀다운로드</button>
+				</li>
+				<li class="aR">
+					검색결과 : <strong><span id="gridRowTotalCount">0</span> 건</strong>&nbsp;
+					쪽번호 <span id="pgNo">0</span>/ <strong id="endPgNo">0</strong>&nbsp;&nbsp;
+					<select id="pageSize" name="pageSize">
+						<option value="50" selected="selected">50개씩 보기</option>
+						<option value="100">100개씩 보기</option>
+						<option value="500">500개씩 보기</option>
+						<option value="1000">1000개씩 보기</option>
+					</select>
+					<input type="hidden" name="pageNo" id="pageNo" value ="1"/>
+				</li>
+			</ul>
+			<!-- //상단버튼 영역  -->
+			<div id="gridList" style="width: 100%; height: 500px;" class="ag-theme-balham lh60"></div>
+			<ul class="panelBar">
+				<li class="center">
+					<div class="tablePaging" id="goodsListPagination"></div>
+				</li>
+			</ul>
+			<label class="off">
+				<a href="javascript:void(0);" id="GoodsExcelList" style="display: none;">상품목록 엑셀다운로드</a>
+			</label>
+		</div>
+		</form>
+		<!-- //패널 영역2 -->
+<script type="text/javascript" src="/ux/plugins/gaga/gaga.paging.js?v=2019072202"></script>
+<script th:inline="javascript">
+/*<![CDATA[*/
+
+	var columnDefs = [];
+	columnDefs = [
+		{width: 40, minWidth: 40, cellClass: 'text-right', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
+		{headerName: 'No', width: 50, cellClass: 'text-center',
+			valueGetter: function(params) { return cfnGridNumner('searchForm',params.node.rowIndex, 'A');}
+		},
+		{headerName: "브랜드", field: "brandCd", width: 80, cellClass: 'text-center'},
+		{headerName: "브랜드명", field: "brandEnm", width: 130, cellClass: 'text-center'},
+		{headerName: "상품코드", field: "goodsCd", width: 140, cellClass: 'text-center'},
+		{headerName: "상품명", field: "goodsNm", width: 200, cellClass: 'text-left'
+			,cellRenderer: function(params) {
+				return '<a href="javascript:void(0);">' + params.value + '</a>';
+			}
+		},
+		{headerName: "정상가", field: "listPrice" , width: 120, cellClass: 'text-right'
+			,valueFormatter: function(params) {return params.value.addComma();},
+			cellEditor: 'textCellEditor',
+			cellEditorParams: { maxlength: 14, validType: 'numeric'}
+		},
+		{headerName: "판매가", field: "currPrice" , width: 120, cellClass: 'text-right'
+			,valueFormatter: function(params) {return params.value.addComma();},
+			cellEditor: 'textCellEditor',
+			cellEditorParams: { maxlength: 14, validType: 'numeric'}
+		},
+		{headerName: "자사즉시할인가", field: "currPrice" , width: 120, cellClass: 'text-right'
+			,valueFormatter: function(params) {return params.value.addComma();},
+			cellEditor: 'textCellEditor',
+			cellEditorParams: { maxlength: 14, validType: 'integer'}
+		},
+		{headerName: "네이버최저가", field: "currPrice" , width: 120, cellClass: 'text-right'
+			,valueFormatter: function(params) {return params.value.addComma();},
+			cellEditor: 'textCellEditor',
+			cellEditorParams: { maxlength: 14, validType: 'numeric'}
+		},
+		{headerName: "차액", field: "currPrice" , width: 100, cellClass: 'text-right'
+			,valueFormatter: function(params) {return params.value.addComma();},
+			cellEditor: 'textCellEditor',
+			cellEditorParams: { maxlength: 14, validType: 'numeric'}
+		},
+		{headerName: "최저가몰명", field: "goodsCd", width: 140, cellClass: 'text-center'},
+		{headerName: "최저가몰링크", field: "goodsCd", width: 200, cellClass: 'text-center'}
+	];
+
+	// Get GridOptions
+	var gridOptions = gagaAgGrid.getGridOptions(columnDefs);
+
+	// 중복 선택 가능
+	gridOptions.rowSelection = 'multiple';
+	gridOptions.suppressRowClickSelection = true;
+	gridOptions.rowHeight = 60; //이미지가 있을경우 높이 지정해야함.
+
+	gridOptions.stopEditingWhenGridLosesFocus = true;
+
+	// Row Click
+	gridOptions.onCellClicked = function(event) {
+		var goodsCd = event.data.goodsCd;
+		if (event.colDef.field == "goodsCd"){
+			cfnOpenGoodsDetailPopup('U',goodsCd);
+			//cfnOpenFrontGoodsPopup(goodsCd, event.data.siteCd);
+		}
+	}
+
+	var fnChangeSelect = function(val, selLvl){
+		$("#cateCd").val('');
+		$('#tcateCd').val('');
+		$('#mcateCd').val('');
+		$('#scateCd').val('');
+		$('#dcateCd').val('');
+		if(val==''){
+			if(selLvl>1){
+				selLvl = selLvl - 1;
+				if(selLvl>2){
+					$("#cateCd").val($("#selCate"+(selLvl-1)).val());
+				}
+			}else{
+				selLvl = '';
+			}
+		}else{
+			if(selLvl>2){
+				$("#cateCd").val(val);
+			}
+		}
+		$("#searchForm input[name=selLvl]").val(selLvl);
+		$("#searchForm input[name=searchGb]").val("BASIC");
+		gagajf.ajaxFormSubmit('/display/category/list', "#searchForm", fnChangeCategory);
+	}
+
+	var fnChangeCategory = function(data){
+		var selLvl = $("#searchForm input[name=selLvl]").val();
+		var html = '<option value="">[선택]</option>';
+		for(var i=1; i<6; i++){
+			if(i>selLvl){
+				$("#selCate"+i).html(html);
+			}
+		}
+		for(var i=0; i<data.length; i++){
+			var cd = '';
+			var nm = '';
+			if(data[i].useYn=='Y'){
+				if(selLvl=='1'){
+					cd = data[i].cateGb;
+					nm = gagaAgGrid.lookupValue(cateGbList, cd);
+				}else{
+					cd = data[i].cateCd;
+					nm = data[i].cateNm;
+					$("#cateType").val(data[i].cateType);
+				}
+				html += '<option value="'+cd+'">['+cd+'] '+nm+'</option>';
+			}
+		}
+		$("#selCate"+selLvl).html(html);
+	}
+
+	// 조회
+	$('#btnSearch').on('click', function() {
+		if($("#selCate2").val()=='' && $("#condition").val()=='' && $("#brandGrpNm").val()=='' && $("#itemkindCdSearch").val()==''
+			&& $("#styleYear").val()=='' && $("#formalGb").val()=='' && $("#mdId").val()==''){
+			mcxDialog.alert('검색조건을 입력해 주세요.');
+			return;
+		}
+		$("#searchForm input[name=searchGb]").val("BASIC");
+		fnSearch();
+	});
+
+	$("#pageSize").on("change", function(){
+		var rowCnt = gridOptions.api.getDisplayedRowCount();
+		if(rowCnt > 0){
+			fnSearch();
+		}
+	});
+
+	var fnSearch = function(){
+		gagaPaging.init('searchForm', fnSearchCallBack, 'goodsListPagination', $('#searchForm').find('#pageSize').val());
+		gagaPaging.load(1);
+	};
+
+	var fnSearchCallBack = function(result){
+
+		$('#searchForm').find('#gridRowTotalCount').html(result.pageing.pageable.totalCount.addComma());
+		$('#searchForm').find('#pageNo').val(result.pageing.pageable.pageNo.addComma());
+		$('#searchForm').find('#pgNo').html(result.pageing.pageable.pageNo.addComma());
+		$('#searchForm').find('#endPgNo').html(result.pageing.pageable.totalPage.addComma());
+		gridOptions.api.setRowData(result.goodsList);
+		gagaPaging.createPagination(result.pageing.pageable);
+	}
+
+	//엑셀 상품 조회
+	$('#btnGoodsExcelUpLoad').on('click', function() {
+		cfnExcelUploadPopup('goodsExcelUpload', 'goodsExcelUpload');
+	});
+
+	var goodsExcelUpload = function(result){
+		var data = {procJob : result.procJob
+					,excelFileNm : result.excelFileNm
+					};
+		var jsonData = JSON.stringify(data);
+		gagajf.ajaxJsonSubmit('/goods/search/excelupload/save', jsonData, fnGoodsExcelUploadCallBack);
+	}
+
+	var fnGoodsExcelUploadCallBack = function(result){
+		$("#searchForm input[name=searchGb]").val("EXCEL");
+		fnSearch();
+	}
+
+	$("#btnInit").on("click", function(){
+		$("#searchForm")[0].reset();
+	});
+
+	$("#btnChangeItemKindCd").on("click", function(){
+		if($("#itemKindCd").val()==''){
+			mcxDialog.alert('품목코드를 입력해 주세요.');
+			return;
+		}
+		var selectedData = gagaAgGrid.selectedRowData(gridOptions);
+		selectedData.forEach(function(data){
+			data.itemkindCdNew = $("#itemKindCd").val();
+		});
+		gridOptions.api.refreshCells();
+	});
+
+	$("#btnSave").on("click", function(){
+		var rowData = gagaAgGrid.getAllRowData(gridOptions);
+		var dataArr = [];
+		rowData.forEach(function(row){
+			if(typeof row.itemkindCdNew!='undefined' && row.itemkindCdNew!=''){
+				var data = {  goodsCd : row.goodsCd
+							, itemkindCd : row.itemkindCdNew
+				}
+				dataArr.push(data);
+			}
+		});
+		if(dataArr.length==0){
+			mcxDialog.alert('변경된 데이터가 없습니다.');
+			return;
+		}
+		mcxDialog.confirm('저장하시겠습니까?',{
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function(){
+				var jsonData = JSON.stringify(dataArr);
+				console.log(jsonData);
+				gagajf.ajaxJsonSubmit('/goods/itemKind/change/save', jsonData, fnSearch);
+			}
+		});
+	});
+	
+	// 업체변경시
+	$('#searchForm select[name=supplyCompCd]').on('change', function() {
+		var actionUrl = '/renderer/supplyCompany/brand/list/' + $(this).val();
+		if(sessRoleCd == "G001_B000"){
+			actionUrl = '/renderer/brand/AuthBrandlist';
+		}
+		$("#searchForm select[name=brandCd] option:gt(0)").remove();
+
+		cfnCreateCombo(actionUrl, $('#searchForm select[name=brandCd]'), "[전체]", "");
+	});
+
+	$(document).ready(function() {
+
+		// Create a agGrid
+		gagaAgGrid.createGrid('gridList', gridOptions);
+	});
+
+/*]]>*/
+</script>
+ 	</div>
+
+</html>