Ver Fonte

딜 상품상세 개발중

eskim há 5 anos atrás
pai
commit
019f0f4727

+ 17 - 0
src/main/java/com/style24/front/biz/web/TsfGoodsController.java

@@ -923,6 +923,23 @@ public class TsfGoodsController extends TsfBaseController {
 		return result;
 	}
 
+	/**
+	 * 상품 옵션1 목록
+	 * @param goods
+	 * @return
+	 * @author eskim
+	 * @since 2021. 3. 24
+	 */
+	@PostMapping("/detail/option1/list")
+	@ResponseBody
+	public GagaMap getGoodsOption1List(@RequestBody Goods goods) {
+
+		GagaMap result = new GagaMap();
+		result.set("dataList",  goodsService.getGoodsOption1List(goods));
+
+		return result;
+	}
+	
 	/**
 	 * 상품 옵션2 목록
 	 * @param goods

+ 3 - 1
src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml

@@ -251,6 +251,8 @@
 		FROM (
 		      SELECT G.GOODS_CD
 		           , G.SELF_GOODS_YN
+		           , G.MIN_ORD_QTY
+		           , G.MAX_ORD_QTY
 		           , O.OPT_CD1
 		           , SUM(CASE WHEN O.SOLDOUT_YN = 'Y' THEN 0
 		                      WHEN VS.CURR_STOCK_QTY  <![CDATA[<=]]> 0 THEN 0
@@ -263,7 +265,7 @@
 		                          AND O.OPT_CD = VS.OPT_CD
 		      WHERE G.GOODS_CD =  #{goodsCd}
 		      AND G.GOODS_TYPE = 'G056_N' -- 일반상품
-		      GROUP BY G.GOODS_CD , G.SELF_GOODS_YN , VS.OPT_CD1
+		      GROUP BY G.GOODS_CD , G.SELF_GOODS_YN , G.MIN_ORD_QTY, G.MAX_ORD_QTY, O.OPT_CD1
 		) A
 	</select>
 		

+ 454 - 159
src/main/webapp/WEB-INF/views/web/goods/GoodsDealDetailFormWeb.html

@@ -105,7 +105,7 @@
 									</div>
 									<div class="price_blk">
 										<span class="sale_price">
-											<em>134,100</em>원 ~ 
+											<em th:text="${#numbers.formatInteger(goodsInfo.currPrice, 0,'COMMA')}">134,100</em>원 ~ 
 										</span>
 										<button type="button" id="btn_saleCoupon_pop" class="btn btn_primary btn_sm btn_coupon"  th:if="${goodsCouponList != null and !goodsCouponList.empty}" th:onclick="cfGoodsCouponInfo([[${goodsInfo.goodsCd}]])"><span>쿠폰받기</span></button>
 									</div>
@@ -154,96 +154,35 @@
 													<div class="select">
 														<div class="item_prod">
 															<div class="item_state">
-																<a href="javascript:void(0)" class="itemLink">
+																<a href="javascript:void(0);" class="itemLink">
 																	<div class="itemPic">
-																		<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
+																		<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 																	</div>
 																	<div class="itemName">선택</div>
 																</a>
 															</div>
 														</div>
 													</div>
-													<ul class="list">
-														<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" / 품절표기 data-soldout="true" 추가  -->
-														<li class="selected">
+													<ul class="list" th:if="${goodsDealComposeList  != null and !goodsDealComposeList.empty}">
+														<th:block th:each="goodsInfo, status : ${goodsDealComposeList}" th:attr="aria-disabled=${(goodsInfo.goodsStat != 'G008_90' or goodsInfo.stockQty <= 0)? 'true':''}, data-soldout=${(goodsInfo.stockQty <= 0)? 'true':''}">
+														<li th:onclick="fnOption1('Up', [[${goodsInfo.compsGoodsCd}]]);">
 															<div class="item_prod">
-																<div class="item_state">
-																	<a href="javascript:void(0)" class="itemLink">
+																<div class="item_state" >
+																	<a href="javascript:void(0);" class="itemLink" >
 																		<div class="itemPic">
-																			<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
+																			<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 																		</div>
-																		<div class="itemName"><span class="tit_option">[상품1]</span>유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>
-																		<p class="itemPrice">134,100
-																			<span class="itemPrice_original">149,000</span>
-																			<span class="itemPercent">30%</span>
-																		</p>
-																	</a>
-																</div>
-															</div>
-														</li> 
-														<li>
-															<div class="item_prod">
-																<div class="item_state">
-																	<a href="javascript:void(0)" class="itemLink">
-																		<div class="itemPic">
-																			<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
-																		</div>
-																		<div class="itemName"><span class="tit_option">[상품2]</span>유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>
-																		<p class="itemPrice">134,100
-																			<span class="itemPrice_original">149,000</span>
-																			<span class="itemPercent">30%</span>
-																		</p>
-																	</a>
-																</div>
-															</div>
-														</li>
-														<li>
-															<div class="item_prod">
-																<div class="item_state">
-																	<a href="javascript:void(0)" class="itemLink">
-																		<div class="itemPic">
-																			<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
-																		</div>
-																		<div class="itemName"><span class="tit_option">[상품3]</span>유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>
-																		<p class="itemPrice">134,100
-																			<span class="itemPrice_original">149,000</span>
-																			<span class="itemPercent">30%</span>
-																		</p>
-																	</a>
-																</div>
-															</div>
-														</li>
-														<li aria-disabled="true">
-															<div class="item_prod">
-																<div class="item_state">
-																	<a href="javascript:void(0)" class="itemLink">
-																		<div class="itemPic">
-																			<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
-																		</div>
-																		<div class="itemName"><span class="tit_option">[상품4]</span>유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>
-																		<p class="itemPrice">134,100
-																			<span class="itemPrice_original">149,000</span>
-																			<span class="itemPercent">30%</span>
-																		</p>
-																	</a>
-																</div>
-															</div>
-														</li><li aria-disabled="true" data-soldout="true">
-															<div class="item_prod">
-																<div class="item_state">
-																	<a href="javascript:void(0)" class="itemLink">
-																		<div class="itemPic">
-																			<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
-																		</div>
-																		<div class="itemName"><span class="tit_option">[상품5]</span>유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>
-																		<p class="itemPrice">134,100
-																			<span class="itemPrice_original">149,000</span>
-																			<span class="itemPercent">30%</span>
+																		<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">NBA 키즈</p>
+																		<div class="itemName" ><span class="tit_option" th:text="${'[상품'+status.count+']'}">[상품1]</span><th:block th:text="${goodsInfo.goodsFullNm}"></th:block></div>
+																		<p class="itemPrice"><th:block th:text="${#numbers.formatInteger(goodsInfo.currPrice, 0,'COMMA')}"> 134,100</th:block>
+																			<span class="itemPrice_original" th:if="${goodsInfo.listPrice > goodsInfo.currPrice}" th:text="${#numbers.formatInteger(goodsInfo.listPrice, 0,'COMMA')}">149,000</span>
+																			<span class="itemPercent" th:if="${goodsInfo.dcRate > 0}" th:text="|${#numbers.formatDecimal(goodsInfo.dcRate,0,0)}%|">30%</span>
 																		</p>
 																	</a>
 																</div>
 															</div>
 														</li>
+														</th:block> 
 													</ul>
 												</div>
 											</div>
@@ -252,21 +191,8 @@
 											<div class="select_custom deal_opt1" disabled>
 												<div class="combo">
 													<div class="select">선택</div>
-													<ul class="list">
-														<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" / 품절표기 data-soldout="true" 추가  -->
-														<li class="selected">선택</li> 
-														<li>상품옵션01</li>
-														<li>상품옵션02</li>
-														<li>상품옵션03</li>
-														<li aria-disabled="true">
-															<div>상품옵션05</div>
-															<div>120,000원</div>
-														</li>
-														<li>상품옵션06</li>
-														<li aria-disabled="true" data-soldout="true">
-															<div>상품옵션07</div>
-															<div>120,000원</div>
-														</li>
+													<ul class="list" id="goodsDealOptUp1">
+														<!--  옵션 1 -->
 													</ul>
 												</div>
 											</div>
@@ -275,21 +201,8 @@
 											<div class="select_custom deal_opt2" disabled>
 												<div class="combo">
 													<div class="select">선택</div>
-													<ul class="list">
-														<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" / 품절표기 data-soldout="true" 추가  -->
-														<li class="selected">선택</li> 
-														<li>상품옵션11</li>
-														<li>상품옵션12</li>
-														<li>상품옵션13</li>
-														<li aria-disabled="true">
-															<div>상품옵션15</div>
-															<div>120,000원</div>
-														</li>
-														<li>상품옵션16</li>
-														<li aria-disabled="true" data-soldout="true">
-															<div>상품옵션17</div>
-															<div>120,000원</div>
-														</li>
+													<ul class="list" id="goodsDealOptUp2">
+														<!--  옵션 2 -->
 													</ul>
 												</div>
 											</div>
@@ -312,21 +225,6 @@
 										</div>
 										<button type="button" class="btn_delete_item"><span>삭제</span></button>
 									</div>
-									<div class="result_item">
-										<div class="opt_header">
-											<span class="item_name">[상품1] 남성 테이퍼드핏 기모면 올밴딩 팬트</span>
-											<span class="item_option">블루그레이/S</span>
-										</div>
-										<div class="number_count">
-											<span class="minus"><em class="sr-only">감소</em></span>
-											<input type="text" name="" maxlength="3" style='ime-mode:disabled' value="1" />
-											<span class="plus"><em class="sr-only">추가</em></span>
-										</div>
-										<div class="item_price">
-											<p><em>99,999,999</em>원</p>
-										</div>
-										<button type="button" class="btn_delete_item"><span>삭제</span></button>
-									</div>
 								</div>
 							</div>
 							<div class="price_box">
@@ -369,10 +267,22 @@
 		</div>
 		<!-- // 이 상품과 함께 본 상품 -->
 	</div>
+	<!-- 상품썸네일 크게보기 팝업 -->
+	<div class="pd_pop full_pop pd_itemthumb_pop" id="pdItemThumbPop"> 
+		<div class="full_popup_wrap">
+			<h5 class="sr-only">상품썸네일 크게보기</h5>
+			<div class="btn_close">
+				<a href="" id="btn_close_itemThumbPop">닫기버튼</a>
+			</div>
+			<div class="full_pop_container">
+				<!-- 배송교환반품안내 리스트 내용 -->
+			</div>
+		</div>		
+	</div>
+	<!-- //상품썸네일 크게보기 팝업 -->
 </div>
-
  
-	<script th:inline="javascript">
+<script th:inline="javascript">
 /*<![CDATA[*/
 	
 	var cateNm = "";
@@ -382,6 +292,414 @@
 		gagajf.ajaxSubmit("/goods/detail/together/frame", "html", "goodsTogetherbArea", params);
 	}
 	
+	// 옵션1 조회
+	var fnOption1 = function(flag, goodsCd){
+		let selfGoodsYn = $("#cartForm  input[name=selfGoodsYn]").val();
+		let data = {goodsCd : goodsCd
+					};
+		let jsonData = JSON.stringify(data);
+	
+		gagajf.ajaxJsonSubmit('/goods/detail/option1/list', jsonData, function(result) {
+			
+			if (result.dataList != null && result.dataList.length > 0) {
+				let tag = "";
+				let $objUp = null;
+				let $objDown = null;
+				let qty = 1;
+				$.each(result.dataList, function(idx, item) {
+					if (idx == 0){
+						$objUp = $('#goodsDealOptUp1');
+						$objUp.append('');
+						$objDown = $('#goodsDealOptDown1');
+						$objDown.append('');
+						
+						$('.form_field .select_custom.deal_opt1').attr('disabled', false)
+						tag += '<li class="selected" id="goodsOpt1">선택</li>\n';	
+					}
+					let soldoutYn = ""; 
+					if (item.stockQty <= 0) soldoutYn = "true";
+					tag += '<li aria-disabled="'+soldoutYn+'" data-soldout="'+soldoutYn +'" onclick="fnOption2(\''+flag+'\', \''+ item.goodsCd+'\' , \''+ item.optCd1+'\' , \''+ qty+'\', \''+ item.minOrdQty+'\', \''+ item.maxOrdQty+'\')">\n';
+					tag += '<div>'+ item.optCd1+'</div>\n';
+					if (item.addPrice > 0){
+						tag += '<div>'+ item.addPrice.addComma() +'원</div>\n';	
+					}
+					tag += '<input type="hidden" name="opt1" value="'+ item.goodsCd+'|'+item.optCd1 +'|'+qty +'" addPrice="'+item.addPrice+'"  optCd1="'+item.optCd1+'" />\n';
+					tag += '</li>\n';
+				});
+				
+				$objUp.append(tag);
+				$objDown.append(tag);
+				var detail_deal_option02 = new sCombo('.pd_detail .opt_select .select_custom.deal_opt1');
+				var desc_option02 = new sCombo('.pd_desc_wrap .opt_select .select_custom.deal_opt1');
+				//var pop_desc_option02 = new sCombo('.pd_detail .opt_select .select_custom.deal_opt1');
+			}
+			
+			let $obj = null;
+			let $taget = null;
+			// 하단 우측 상품선택영역  Up/ Down
+			if (flag  == "Up"){
+				$obj = $('.pd_detail .opt_select .select_custom.deal_opt_item').find('.combo .select'); 
+				$taget = $('.pd_desc_wrap .opt_select .select_custom.deal_opt_item').find('.combo .select');
+			}else if (flag  == "Down"){
+				$taget = $('.pd_detail .opt_select .select_custom.deal_opt_item').find('.combo .select');
+				$obj = $('.pd_desc_wrap .opt_select .select_custom.deal_opt_item').find('.combo .select');
+			}
+			let goodsDealInfo = $obj.html();
+			$taget.html(goodsDealInfo);
+			
+		});
+		
+	}
+	
+	// 옵션2 조회
+	var fnOption2 = function(flag, goodsCd, optCd1, qty, minOrdQty, maxOrdQty ){
+		let selfGoodsYn = $("#cartForm  input[name=selfGoodsYn]").val();
+		let data = {goodsCd : goodsCd
+					,optCd1 : optCd1
+					};
+		let jsonData = JSON.stringify(data);
+	
+		gagajf.ajaxJsonSubmit('/goods/detail/option2/list', jsonData, function(result) {
+			
+			if (result.dataList != null && result.dataList.length > 0) {
+				let tag = "";
+				let $objUp = null;
+				let $objDown = null;
+				$.each(result.dataList, function(idx, item) {
+					if (idx == 0){
+						$objUp = $('#goodsDealOptUp2');
+						$objUp.append('');
+						$objDown = $('#goodsDealOptDown2');
+						$objDown.append('');
+						$('.form_field .select_custom.deal_opt2').attr('disabled', false)
+						tag += '<li class="selected" id="goodsOpt2">선택</li>\n';	
+					}
+					let soldoutYn = ""; 
+					if ("Y" == item.soldoutYn || item.stockQty <= 0)soldoutYn = "true";
+					tag += '<li aria-disabled="'+soldoutYn+'" data-soldout="'+soldoutYn +'" onclick="fnViewStock(this, \''+ flag +'\' , \''+ item.goodsCd+'\' , \''+ item.optCd+'\' , \''+ item.optCd1+'\' , \''+ item.optCd2+'\', \''+ minOrdQty+'\', \''+ maxOrdQty+'\')">\n';
+					tag += '<div>'+ item.optCd2+'</div>\n';
+					if (item.addPrice > 0){
+						tag += '<div>'+ item.addPrice.addComma() +'원</div>\n';	
+					}
+					tag += '<input type="hidden" name="opt2" value="'+ item.goodsCd+'|'+item.optCd +'|'+qty +'" id="'+item.optCd+'" addPrice="'+item.addPrice+'"  optCd="'+item.optCd+'"  optCd1="'+item.optCd1+'"  optCd2="'+item.optCd2+'"  />\n';
+					tag += '</li>\n';
+				});
+				
+				$objUp.append(tag);
+				$objDown.append(tag);
+				var detail_deal_option03 = new sCombo('.pd_detail .opt_select .select_custom.deal_opt2');
+				var desc_option03 = new sCombo('.pd_desc_wrap .opt_select .select_custom.deal_opt2');
+				//var pop_desc_option03 = new sCombo('.pd_detail .opt_select .select_custom.deal_opt2');
+				
+			}
+			
+			let $obj = null;
+			let $taget = null;
+			// 하단 우측 상품선택영역  Up/ Down
+			if (flag  == "Up"){
+				$obj = $('.pd_detail .opt_select .select_custom.deal_opt1').find('.combo .select'); 
+				$taget = $('.pd_desc_wrap .opt_select .select_custom.deal_opt1').find('.combo .select');
+			}else if (flag  == "Down"){
+				$taget = $('.pd_detail .opt_select .select_custom.deal_opt1').find('.combo .select');
+				$obj = $('.pd_desc_wrap .opt_select .select_custom.deal_opt1').find('.combo .select');
+			}
+			
+			let goodsDealInfo = $obj.html();
+			$taget.html(goodsDealInfo);
+			
+		});	
+	}
+	
+	//사이즈 클릭시 - 단품
+	var fnViewStock = function(obj, flag, goodsCd, optCd, optCd1, optCd2,  minOrdQty, maxOrdQty) {
+		let $obj = $(obj);
+		let selfGoodsYn = $("#cartForm  input[name=selfGoodsYn]").val();
+		let $target = null;
+		if (selfGoodsYn == "Y"){
+			$target = $obj.parent().parent().children('input[name="opt"]');
+			$target.prop("checked",true);
+			$("#selectOptCd1").html(optCd2);
+		}else{
+			$target = $obj.find('input[name="opt2"]');
+		}
+		let addPrice  = $target.attr("addPrice");
+		$("#selectOptCd1addPrice").html('');
+		if (Number(addPrice) > 0) $("#selectOptCd1addPrice").html("(+" + addPrice.addComma() + ")");
+		
+		$("#cartForm  input[name=optCd]").val(optCd);
+		$("#cartForm  input[name=optCd1]").val(optCd1);
+		$("#cartForm  input[name=optCd2]").val(optCd2);
+		$("#cartForm  input[name=addPrice]").val(addPrice);
+		$("#cartForm  input[name=ordQty]").val("");
+		
+		let maxCnt = maxOrdQty;
+		let params = new Object();
+		params.goodsCd = goodsCd;
+		params.optCd = optCd;
+		params.optCd1 = optCd1;
+		params.optCd2 = optCd2;
+		params.selfGoodsYn = selfGoodsYn;
+		
+		$.get("/goods/detail/ajaxGoodsStockQty", $.param(params), function(result) {
+			let itemCnt = eval(result); //해당 아이템에 선택되어진 사이즈의 수량
+
+			if (maxCnt > itemCnt) {
+				maxCnt = itemCnt;
+			}
+
+			if (minOrdQty > itemCnt) {
+				$target.prop("disabled", true);
+			}else{
+				$("#cartForm  input[name=ordQty]").val(minOrdQty);
+				$("#cartForm  input[name=maxOrdQty]").val(maxCnt);
+				$("#cartForm  input[name=minOrdQty]").val(minOrdQty);
+				$("#cartForm  input[name=cea]").val(minOrdQty);
+				$("#cartForm  input[name=cea]").attr("readonly",false);
+				$("#cartForm  input[name=stock]").val(itemCnt);
+
+				fnSetTotalPrice();
+			}
+			
+			
+			// opt_result
+			/* <div class="result_item">
+				<div class="opt_header">
+					<span class="item_name">[상품1] 남성 테이퍼드핏 기모면 올밴딩 팬트</span>
+					<span class="item_option">다크그레이/XXL</span>
+				</div>
+				<div class="number_count">
+					<span class="minus min_val"><em class="sr-only">감소</em></span>
+					<input type="text" name="" maxlength="3" style="ime-mode:disabled" value="1">
+					<span class="plus"><em class="sr-only">추가</em></span>
+				</div>
+				<div class="item_price">
+					<p><em>99,999,999</em>원</p>
+				</div>
+				<button type="button" class="btn_delete_item"><span>삭제</span></button>
+			</div> */
+			let $obj = null;
+			let $taget = null;
+			// 하단 우측 상품선택영역  Up/ Down
+			if (flag  == "Up"){
+				$obj = $('.pd_detail .opt_select .select_custom.deal_opt2').find('.combo .select'); 
+				$taget = $('.pd_desc_wrap .opt_select .select_custom.deal_opt2').find('.combo .select');
+			}else if (flag  == "Down"){
+				$taget = $('.pd_detail .opt_select .select_custom.deal_opt2').find('.combo .select');
+				$obj = $('.pd_desc_wrap .opt_select .select_custom.deal_opt2').find('.combo .select');
+			}
+			
+			let goodsDealInfo = $obj.html();
+			$taget.html(goodsDealInfo);
+			
+			
+		}, "text");
+	}
+	
+	// 수량 변경 클릭
+	var fnAdjustOrderEa = function(obj) {
+
+		if("G056_N" == $("#cartForm  input[name=goodsType]").val()){
+			if(gagajf.isNull($("#cartForm  input[name=optCd2]").val())){
+				mcxDialog.alert("사이즈를 선택하세요.");
+				return false;
+			}
+		}else{
+			let target=$('.select_custom.item_opt2');
+			let targetSize = target.length;	//구성품 갯수
+			let itemSize = 0;
+			target.each(function(){
+				if (typeof ($(this).find('.select').find('input[name=opt2]').val()) != 'undefined' &&  !gagajf.isNull($(this).find('.select').find('input[name=opt2]').val())){
+					itemSize ++;
+				}
+			});
+			
+			if (targetSize != itemSize){
+				mcxDialog.alert("구성상품들의 옵션을 선택하세요.");
+				return false;
+			}
+		}
+
+		let $obj = $(obj);
+		let $target = $obj.parent().children('input[name="cea"]');
+		let minOrdQty = parseInt($("#cartForm  input[name=minOrdQty]").val());
+		let ea =parseInt($target.val());
+
+		if ($obj.attr('adjust') == '-') --ea;
+		else ++ea;
+
+		//var maxOrdQty = $("#cartForm  input[name=maxOrdQty]").val();
+
+		//if (maxOrdQty && ea > maxOrdQty) ea = maxOrdQty;
+		if (ea.toString().length > parseInt($target.attr('maxlength'))) --ea;
+		if (ea < 1) ea = minOrdQty;
+
+		$target.val(ea);
+
+		fnChangeOrderEa();
+	}
+
+	//옵션 갯수 변경
+	var fnChangeOrderEa = function() {
+
+		if("G056_N" == $("#cartForm  input[name=goodsType]").val()){
+			if(gagajf.isNull($("#cartForm  input[name=optCd2]").val())){
+				mcxDialog.alert("사이즈를 선택하세요.");
+				return false;
+			}
+		}else{
+			
+			let target=$('.select_custom.item_opt2');
+			let targetSize = target.length;	//구성품 갯수
+			let itemSize = 0;
+			target.each(function(){
+				if (typeof ($(this).find('.select').find('input[name=opt2]').val()) != 'undefined' &&  !gagajf.isNull($(this).find('.select').find('input[name=opt2]').val())){
+					itemSize ++;
+				}
+			});
+			
+			if (targetSize != itemSize){
+				mcxDialog.alert("구성상품들의 옵션을 선택하세요.");
+				return false;
+			}
+		}
+
+		//let f = document.cartForm;
+		let ea = parseInt($("#cartForm  input[name=cea]").val());
+		let buymin = parseInt($("#cartForm  input[name=minOrdQty]").val());
+		let buymax = parseInt($("#cartForm  input[name=maxOrdQty]").val());
+		let alertMsg = '';
+		if (ea < buymin) {
+			alertMsg ="최소 주문 가능 수량은 "+buymin+"개 입니다.";
+			ea = buymin;
+		}
+
+		if (ea > buymax) {
+			alertMsg = "최대 주문 가능 수량은 "+buymax+"개 입니다.";
+			ea = buymax;
+		}
+
+		$("#cartForm  input[name=cea]").val(ea);
+		$("#cartForm  input[name=ordQty]").val(ea);
+
+		if (alertMsg != ''){
+			mcxDialog.alert(alertMsg);
+			//return;
+		}
+
+		fnSetTotalPrice();
+	}
+	
+	//합계 계산
+	var fnSetTotalPrice = function() {
+		//let f = document.cartForm;
+
+		let totalEa = 0;
+		let totalPrice = 0;
+		
+		$('input[name="cea"]').each(function() {
+			let ea = parseInt($(this).val());
+			let addPrice = 0;
+			let target=$('.select_custom.item_opt2');
+			target.each(function() {
+				if (typeof ($(this).find('input[name=opt2]').val()) != 'undefined' && !gagajf.isNull($(this).find('input[name=opt2]').val())){
+					addPrice += Number($(this).find('input[name=opt2]').attr('addPrice'));	
+				}
+			});	
+			
+			let goodsPrice = parseInt($(this).parent().find('input[name="coption"]').attr('price'));
+
+			totalEa += ea;
+			if (goodsPrice > 0) {
+				totalPrice += ((goodsPrice+addPrice) * ea);
+			}
+		});
+
+		$('#goodsTotalQty').html(totalEa.addComma());
+		$('#goodsTotalPrice').html(totalPrice.addComma());
+		
+	}
+	
+	//장바구니담기
+	var fnAddCart = function(btnType){
+		
+		// 바로구매는 로그인여부 확인
+		if (btnType == "O" && !cfCheckLogin()) {
+			
+			let btn = ["비회원 구매", "로그인후 구매"]; //버튼명[좌,우]
+			mcxDialog.confirmC("로그인 후 구매 시 다양한 혜택을 받으실 수 있습니다.", { //내용
+				btn: btn,
+				btnClick: function(index){
+					if (index == 1){ //button1 일때 처리문
+						// 비회원 URL
+						ALERT('비회원');
+					} else {	//button2 일때 처리문
+						cfnGoToPage(_PAGE_LOGIN);
+					}
+				}
+			});
+			return false;
+		}
+		
+		let params = [];
+		let goodsType = $("#cartForm  input[name=goodsType]").val();
+
+		if (goodsType == 'G056_N'){
+			if (gagajf.isNull($("#cartForm  input[name=optCd2]").val())) {
+				mcxDialog.alert("사이즈를 선택하세요.");
+				return;
+			}
+		
+			let obj = new Object();
+			obj.goodsCd = $("#cartForm  input[name=goodsCd]").val();
+			obj.optCd = $("#cartForm  input[name=optCd]").val();
+			obj.goodsQty = $("#cartForm  input[name=ordQty]").val();
+			obj.goodsType = $("#cartForm  input[name=goodsType]").val();
+			obj.cartGb = btnType;
+			obj.afLinkCd =$("#cartForm  input[name=afLinkCd]").val();
+			obj.ithrCd =$("#cartForm  input[name=ithrCd]").val();
+			obj.contentsLoc =$("#cartForm  input[name=contentsLoc]").val();
+			obj.planDtlSq = $("#cartForm  input[name=planDtlSq]").val();
+			params.push(obj);
+
+		}else if (goodsType == 'G056_S'){  //수정요
+		
+			let target=$('.select_custom.item_opt2');
+			let targetSize = target.length;	//구성품 갯수
+			let itemSize = 0;
+			target.each(function(){
+				if (typeof ($(this).find('.select').find('input[name=opt2]').val()) != 'undefined' &&  !gagajf.isNull($(this).find('.select').find('input[name=opt2]').val())){
+					itemSize ++;
+				}
+			});
+			
+			if (targetSize != itemSize){
+				mcxDialog.alert("구성상품들의 옵션을 선택하세요.");
+				return false;
+			}
+			
+			target.each(function() {
+				var arrInfo = $(this).find('input[name=opt2]').val().split('|');	// 상품코드|사이즈|구성수량
+				
+				var obj = new Object();
+				obj.cartGb = btnType;
+				obj.goodsType = $("#cartForm  input[name=goodsType]").val();
+				obj.goodsCd = $("#cartForm  input[name=goodsCd]").val();
+				obj.itemCd = arrInfo[0];
+				obj.optCd = arrInfo[1];
+				obj.goodsQty = $("#cartForm  input[name=ordQty]").val();
+				obj.afLinkCd =$("#cartForm  input[name=afLinkCd]").val();
+				obj.ithrCd =$("#cartForm  input[name=ithrCd]").val();
+				obj.contentsLoc =$("#cartForm  input[name=contentsLoc]").val();
+				obj.planDtlSq = $("#cartForm  input[name=planDtlSq]").val();
+				params.push(obj);
+				
+			});
+		}
+		
+		// 장바구니담기
+		cfnAddCart(params);
+	}
+	
 	$(document).ready( function() {
 		
 		$('.timer_box').css('display', 'none');
@@ -437,22 +755,22 @@
 		//상품 대표설명 > 우측 상품정보 
 		/* 딜 옵션선택 후 다음 옵션 활성화 */
 		var detail_deal_option01 = new sCombo('.pd_detail .opt_select .select_custom.deal_opt_item');
-		var detail_deal_option02 = new sCombo('.pd_detail .opt_select .select_custom.deal_opt1');
-		var detail_deal_option03 = new sCombo('.pd_detail .opt_select .select_custom.deal_opt2');
-		$('.pd_detail .opt_select .select_custom .combo .list > li').click(function(e) {
+		//var detail_deal_option02 = new sCombo('.pd_detail .opt_select .select_custom.deal_opt1');
+		//var detail_deal_option03 = new sCombo('.pd_detail .opt_select .select_custom.deal_opt2');
+		/* $('.pd_detail .opt_select .select_custom .combo .list > li').click(function(e) {
 			$(this).parents('.form_field').next('.form_field').find('.select_custom').attr('disabled', false);
 			return false;
-		});
+		}); */
 
 		// 하단 우측 상품선택영역
 		/* 딜 옵션선택 후 다음 옵션 활성화 */
 		var desc_option01 = new sCombo('.pd_desc_wrap .opt_select .select_custom.deal_opt_item');
-		var desc_option02 = new sCombo('.pd_desc_wrap .opt_select .select_custom.deal_opt1');
-		var desc_option03 = new sCombo('.pd_desc_wrap .opt_select .select_custom.deal_opt2');
-		$('.pd_desc_wrap .opt_select .select_custom .combo .list > li').click(function(e) {
+		//var desc_option02 = new sCombo('.pd_desc_wrap .opt_select .select_custom.deal_opt1');
+		//var desc_option03 = new sCombo('.pd_desc_wrap .opt_select .select_custom.deal_opt2');
+		/* $('.pd_desc_wrap .opt_select .select_custom .combo .list > li').click(function(e) {
 			$(this).parents('.form_field').next('.form_field').find('.select_custom').attr('disabled', false);
 			return false;
-		});			
+		});	 */		
 
 		// 상품선택 옵션 : 하단 상품정보 영역  
 		var tab_review_item = new sCombo('.tab_detail_cont .select_custom.deal_opt_item.forReview');
@@ -461,8 +779,8 @@
 
 		// 상품선택 옵션 : 상세정보 > 상품 > 팝업
 		var pop_desc_option01 = new sCombo('.pd_descrp_pop .select_custom.deal_opt_item');
-		var pop_desc_option02 = new sCombo('.pd_detail .opt_select .select_custom.deal_opt1');
-		var pop_desc_option03 = new sCombo('.pd_detail .opt_select .select_custom.deal_opt2');
+		//var pop_desc_option02 = new sCombo('.pd_detail .opt_select .select_custom.deal_opt1');
+		//var pop_desc_option03 = new sCombo('.pd_detail .opt_select .select_custom.deal_opt2');
 
 		/* 상품옵션변경 팝업 > 수량조절 */
 		//수량1개 이하 감소버튼 비활성화 
@@ -470,29 +788,6 @@
 		if ( valItemCount == 1 ) {
 			$(' .option_box .result_item .number_count .minus').addClass('min_val');
 		} 
-		//수량조절 이벤트
-		$(document).on('click','.option_box .result_item .number_count .minus',function(e){
-			var $input = $(this).parent().find('input');
-				var count = parseInt($input.val()) - 1;
-				count = count < 1 ? 1 : count;
-				$input.val(count);
-				$input.change();  
-			//수량1개 이하 감소버튼 비활성화			
-			if ($input.val() == 1) {
-				$(this).parent('.number_count').find('.minus').addClass('min_val');
-			} 
-				return false;
-		}).on('click','.option_box .result_item .number_count .plus',function(e){
-			var $input = $(this).parent().find('input');
-				$input.val(parseInt($input.val()) + 1);
-				$input.change();
-			//수량2개 이상부터 감소버튼 활성화 
-			$(this).parent('.number_count').find('.minus').removeClass('min_val');
-				return false;
-		}).on('keyup','.option_box .result_item .number_count input[type=text]',function(e){
-			//텍스트, 0 입력금지 
-			$(this).val($(this).val().replace(/[^1-9]/g,""));
-		});
 
 		//상품상세정보 더보기
 		$(document).on('click','.pd_descrp_pop .btn_more_box button',function(e){
@@ -511,9 +806,9 @@
 			$('.pd.deal .tab_detail_cont').eq($(this).index()).show();
 			
 			//상품상세정보 호출
-			$('.pd_review .cont_body').load('pd_review_pop.html');
-			$('.pd_qnalist .cont_body').load('pd_qnalist_pop.html');
-			$('.pd_delivery .cont_body').load('pd_delivery_pop.html');
+			//$('.pd_review .cont_body').load('pd_review_pop.html');
+			//$('.pd_qnalist .cont_body').load('pd_qnalist_pop.html');
+			//$('.pd_delivery .cont_body').load('pd_delivery_pop.html');
 			
 			return false;
 		});						

+ 1 - 1
src/main/webapp/WEB-INF/views/web/goods/GoodsDealListFormWeb.html

@@ -191,7 +191,7 @@
 	}
 	
 	// 상품선택시
-	var fnGoodsDealDesc = function(goodsCd){debugger;
+	var fnGoodsDealDesc = function(goodsCd){
 		var params = new Object();
 		params.goodsCd = goodsCd;
 		fnGoodsDealDetail(params);  // ajax html

+ 4 - 6
src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html

@@ -190,7 +190,7 @@
 										<div  th:each="goodsOption2, status : ${goodsOption2List}">
 											<input type="radio" name="opt"  th:id="${goodsOption2.optCd}" th:disabled="${goodsOption2.soldoutYn == 'Y' or goodsOption2.stockQty <= 0}" 
 													th:attr="addPrice=${goodsOption2.addPrice}, optCd1=${goodsOption2.optCd1}, optCd2=${goodsOption2.optCd2}, optCd=${goodsOption2.optCd}">
-											<label th:for="${goodsOption2.optCd}"><span th:text="${goodsOption2.optCd2}" th:onclick="fnViewStock(this, [[${goodsInfo.goodsCd}]],[[${goodsOption2.optCd1}]],[[${goodsOption2.optCd2}]],[[${goodsInfo.minOrdQty}]], [[${goodsInfo.maxOrdQty}]] )">100</span></label>
+											<label th:for="${goodsOption2.optCd}"><span th:text="${goodsOption2.optCd2}" th:onclick="fnViewStock(this, [[${goodsInfo.goodsCd}]],[[${goodsOption2.optCd}]],[[${goodsOption2.optCd1}]],[[${goodsOption2.optCd2}]],[[${goodsInfo.minOrdQty}]], [[${goodsInfo.maxOrdQty}]] )">100</span></label>
 										</div>
 									</div>
 								</div>
@@ -784,7 +784,7 @@
 	}
 	
 	//사이즈 클릭시 - 단품
-	var fnViewStock = function(obj, goodsCd, optCd1, optCd2,  minOrdQty, maxOrdQty) {
+	var fnViewStock = function(obj, goodsCd, optCd, optCd1, optCd2,  minOrdQty, maxOrdQty) {
 		let $obj = $(obj);
 		let selfGoodsYn = $("#cartForm  input[name=selfGoodsYn]").val();
 		let $target = null;
@@ -796,7 +796,7 @@
 			$target = $obj.find('input[name="opt2"]');
 		}
 		let addPrice  = $target.attr("addPrice");
-		let optCd  = $target.attr("optCd");
+		// let optCd  = $target.attr("optCd");
 		$("#selectOptCd1addPrice").html('');
 		if (Number(addPrice) > 0) $("#selectOptCd1addPrice").html("(+" + addPrice.addComma() + ")");
 		
@@ -1089,7 +1089,6 @@
 				obj.itemCd = arrInfo[0];
 				obj.optCd = arrInfo[1];
 				obj.goodsQty = $("#cartForm  input[name=ordQty]").val();
-				//obj.itemQty = Number(arrInfo[2]);
 				obj.afLinkCd =$("#cartForm  input[name=afLinkCd]").val();
 				obj.ithrCd =$("#cartForm  input[name=ithrCd]").val();
 				obj.contentsLoc =$("#cartForm  input[name=contentsLoc]").val();
@@ -1121,7 +1120,6 @@
 				obj.optCd = $(this).attr("optCd");
 				obj.goodsQty = $(this).attr("minOrdQty");
 				obj.goodsType = $(this).attr("goodsType");
-				//obj.dealGoodsCd = $("#cartForm  input[name=goodsType]").val();
 				obj.cartGb = btnType;
 				obj.afLinkCd =$("#cartForm  input[name=afLinkCd]").val();
 				obj.ithrCd = $(this).attr("ithrCd");
@@ -1180,7 +1178,7 @@
 					if (selfGoodsYn == "Y"){
 						tag += '<li aria-disabled="'+soldoutYn+'" data-soldout="'+soldoutYn +'" onclick="fnViewStockSet(this, \''+ item.goodsCd+'\' , \''+ item.optCd1+'\' , \''+ item.optCd2+'\', \''+ minOrdQty+'\', \''+ maxOrdQty+'\')">\n';	
 					}else{
-						tag += '<li aria-disabled="'+soldoutYn+'" data-soldout="'+soldoutYn +'" onclick="fnViewStock(this, \''+ item.goodsCd+'\' , \''+ item.optCd1+'\' , \''+ item.optCd2+'\', \''+ minOrdQty+'\', \''+ maxOrdQty+'\')">\n';
+						tag += '<li aria-disabled="'+soldoutYn+'" data-soldout="'+soldoutYn +'" onclick="fnViewStock(this, \''+ item.goodsCd+'\' , \''+ item.optCd+'\' , \''+ item.optCd1+'\' , \''+ item.optCd2+'\', \''+ minOrdQty+'\', \''+ maxOrdQty+'\')">\n';
 					}
 					tag += '<div>'+ item.optCd2+'</div>\n';
 					if (item.addPrice > 0){

+ 259 - 348
src/main/webapp/WEB-INF/views/web/goods/GoodsIncludeFormWeb.html

@@ -76,413 +76,324 @@
 <!-- 딜 상품 상품소개영역 -->
 <th:block  th:fragment="goodsDealComposeForm">
 <!-- ***** 상품소개영역 ***** -->
-		<div class="content pd_desc_wrap">
-			<div class="cont_body">
-				<div class="item_descrp">
-					<div class="area_list">
-						<!-- 상품소개 탭 -->
-						<div class="tab_detail_nav">
-							<ul>
-								<li class="active"><a href="javascript:void(0)">상세정보</a></li>
-								<li><a href="javascript:void(0)">리뷰<em>(9,999+)</em></a></li>
-								<li><a href="javascript:void(0)">문의<em>(9,999+)</em></a></li>
-								<li><a href="javascript:void(0)">배송/교환/반품</em></a></li>
-							</ul>
+<div class="content pd_desc_wrap" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}">
+	<div class="cont_body">
+		<div class="item_descrp">
+			<div class="area_list">
+				<!-- 상품소개 탭 -->
+				<div class="tab_detail_nav">
+					<ul>
+						<li class="active"><a href="javascript:void(0)">상세정보</a></li>
+						<li><a href="javascript:void(0)">리뷰<em>(9,999+)</em></a></li>
+						<li><a href="javascript:void(0)">문의<em>(9,999+)</em></a></li>
+						<li><a href="javascript:void(0)">배송/교환/반품</em></a></li>
+					</ul>
+				</div>
+				<!-- //상품소개 탭 -->
+				<!-- 상품상세정보 -->
+				<div class="tab_detail_cont pd_dealitem" style="display:block;" >
+					<div class="itemsGrp" th:if="${goodsDealComposeList  != null and !goodsDealComposeList.empty}">
+						<!--  반복 -->
+						<div class="item_prod" th:each="goodsInfo, status : ${goodsDealComposeList}" th:attr="aria-disabled=${(goodsInfo.stockQty <= 0)? 'true':''}, data-soldout=${(goodsInfo.stockQty <= 0)? 'true':''}">
+							<div class="item_state">
+								<a href="javascript:void(0);" class="itemLink" th:onclick="cfGoodsDeailDetail([[${goodsInfo.goodsCd}]],[[${goodsInfo.compsGoodsCd}]])">
+									<div class="rank detail">
+										<span>상품<em class="number" th:text="${#numbers.formatInteger(status.count,2)}">01</em></span>
+									</div>
+									<div class="itemPic">
+										<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+									</div>
+									<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">BRAND NAME1</p>
+									<div class="itemName" th:text="${goodsInfo.goodsFullNm}">남성 </div>
+									<p class="itemPrice"><th:block th:text="${#numbers.formatInteger(goodsInfo.currPrice, 0,'COMMA')}"> 134,100</th:block>
+										<span class="itemPrice_original" th:if="${goodsInfo.listPrice > goodsInfo.currPrice}" th:text="${#numbers.formatInteger(goodsInfo.listPrice, 0,'COMMA')}">149,000</span>
+										<span class="itemPercent" th:if="${goodsInfo.dcRate > 0}" th:text="|${#numbers.formatDecimal(goodsInfo.dcRate,0,0)}%|">30%</span>
+									</p>
+								</a>
+							</div>
 						</div>
-						<!-- //상품소개 탭 -->
-						<!-- 상품상세정보 -->
-						<div class="tab_detail_cont pd_dealitem" style="display:block;" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}">
-							<div class="itemsGrp" th:if="${goodsDealComposeList  != null and !goodsDealComposeList.empty}">
-								<!--  반복 -->
-								<div class="item_prod" th:each="goodsInfo, status : ${goodsDealComposeList}" th:attr="aria-disabled=${(goodsInfo.stockQty <= 0)? 'true':''}, data-soldout=${(goodsInfo.stockQty <= 0)? 'true':''}">
-									<div class="item_state">
-										<a href="javascript:void(0);" class="itemLink" th:onclick="cfGoodsDeailDetail([[${goodsInfo.goodsCd}]],[[${goodsInfo.compsGoodsCd}]])">
-											<div class="rank detail">
-												<span>상품<em class="number" th:text="${#numbers.formatInteger(status.count,2)}">01</em></span>
-											</div>
-											<div class="itemPic">
-												<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+					</div>
+				</div>
+				<!-- //상품상세정보 -->
+				<!-- 상품리뷰 리스트 -->
+				<div class="tab_detail_cont pd_review">
+					<div class="cont_head">
+						<h3 class="sr-only">상품리뷰 목록</h3>
+						<!-- 아이템선택 -->
+						<div class="form_field">
+							<div class="select_custom deal_opt_item forReview">
+								<div class="combo">
+									<div class="select">
+										<div class="item_prod">
+											<div class="item_state">
+												<a href="javascript:void(0)" class="itemLink">
+													<div class="itemPic">
+														<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
+													</div>
+													<div class="itemName">선택</div>
+												</a>
 											</div>
-											<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">BRAND NAME1</p>
-											<div class="itemName" th:text="${goodsInfo.goodsFullNm}">남성 </div>
-											<p class="itemPrice"><th:block th:text="${#numbers.formatInteger(goodsInfo.currPrice, 0,'COMMA')}"> 134,100</th:block>
-												<span class="itemPrice_original" th:if="${goodsInfo.listPrice > goodsInfo.currPrice}" th:text="${#numbers.formatInteger(goodsInfo.listPrice, 0,'COMMA')}">149,000</span>
-												<span class="itemPercent" th:if="${goodsInfo.dcRate > 0}" th:text="|${#numbers.formatDecimal(goodsInfo.dcRate,0,0)}%|">30%</span>
-											</p>
-										</a>
+										</div>
 									</div>
+									<ul class="list">
+										<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" / 품절표기 data-soldout="true" 추가  -->
+										<li class="selected">
+											<div class="item_prod">
+												<div class="item_state">
+													<a href="#none" class="itemLink">
+														<div class="itemPic">
+															<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
+														</div>
+														<p class="itemBrand">NBA 키즈</p>
+														<div class="itemName">유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>
+														<p class="itemPrice">134,100
+															<span class="itemPrice_original">149,000</span>
+															<span class="itemPercent">30%</span>
+														</p>
+													</a>
+												</div>
+											</div>
+										</li> 
+									</ul>
 								</div>
 							</div>
 						</div>
-						<!-- //상품상세정보 -->
-						<!-- 상품리뷰 리스트 -->
-						<div class="tab_detail_cont pd_review">
-							<div class="cont_head">
-								<h3 class="sr-only">상품리뷰 목록</h3>
-								<!-- 아이템선택 -->
-								<div class="form_field">
-									<div class="select_custom deal_opt_item forReview">
-										<div class="combo">
-											<div class="select">
-												<div class="item_prod">
-													<div class="item_state">
-														<a href="javascript:void(0)" class="itemLink">
-															<div class="itemPic">
-																<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
-															</div>
-															<div class="itemName">선택</div>
-														</a>
+						<!-- //아이템선택 -->
+					</div>
+					<div class="cont_body">
+						아이템별 상품리뷰 목록
+					</div>
+				</div>
+				<!-- //상품리뷰 리스트 -->
+				<!-- 상품문의 리스트 -->
+				<div class="tab_detail_cont pd_qnalist">
+					<div class="cont_head">
+						<h3 class="sr-only">상품문의 목록</h3>
+						<!-- 아이템선택 -->
+						<div class="form_field">
+							<div class="select_custom deal_opt_item forQna">
+								<div class="combo">
+									<div class="select">
+										<div class="item_prod">
+											<div class="item_state">
+												<a href="javascript:void(0)" class="itemLink">
+													<div class="itemPic">
+														<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
 													</div>
-												</div>
+													<div class="itemName">선택</div>
+												</a>
 											</div>
-											<ul class="list">
-												<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" / 품절표기 data-soldout="true" 추가  -->
-												<li class="selected">
-													<div class="item_prod">
-														<div class="item_state">
-															<a href="#none" class="itemLink">
-																<div class="itemPic">
-																	<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
-																</div>
-																<p class="itemBrand">NBA 키즈</p>
-																<div class="itemName">유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>
-																<p class="itemPrice">134,100
-																	<span class="itemPrice_original">149,000</span>
-																	<span class="itemPercent">30%</span>
-																</p>
-															</a>
-														</div>
-													</div>
-												</li> 
-											</ul>
 										</div>
 									</div>
+									<ul class="list">
+										<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" / 품절표기 data-soldout="true" 추가  -->
+										<li class="selected">
+											<div class="item_prod">
+												<div class="item_state">
+													<a href="#none" class="itemLink">
+														<div class="itemPic">
+															<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
+														</div>
+														<p class="itemBrand">NBA 키즈</p>
+														<div class="itemName">유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>
+														<p class="itemPrice">134,100
+															<span class="itemPrice_original">149,000</span>
+															<span class="itemPercent">30%</span>
+														</p>
+													</a>
+												</div>
+											</div>
+										</li> 
+										
+									</ul>
 								</div>
-								<!-- //아이템선택 -->
-							</div>
-							<div class="cont_body">
-								아이템별 상품리뷰 목록
 							</div>
 						</div>
-						<!-- //상품리뷰 리스트 -->
-						<!-- 상품문의 리스트 -->
-						<div class="tab_detail_cont pd_qnalist">
-							<div class="cont_head">
-								<h3 class="sr-only">상품문의 목록</h3>
-								<!-- 아이템선택 -->
-								<div class="form_field">
-									<div class="select_custom deal_opt_item forQna">
-										<div class="combo">
-											<div class="select">
-												<div class="item_prod">
-													<div class="item_state">
-														<a href="javascript:void(0)" class="itemLink">
-															<div class="itemPic">
-																<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
-															</div>
-															<div class="itemName">선택</div>
-														</a>
+						<!-- //아이템선택 -->
+					</div>
+					<div class="cont_body">
+						아이템별 상품문의 목록
+					</div>
+				</div>
+				<!-- //상품문의 리스트 -->
+				<!-- 배송/교환/반품 정보 -->
+				<div class="tab_detail_cont pd_delivery">
+					<div class="cont_head">
+						<h3 class="sr-only">배송/교환/반품 정보</h3>
+						<!-- 아이템선택 -->
+						<div class="form_field">
+							<div class="select_custom deal_opt_item forExinfo">
+								<div class="combo">
+									<div class="select">
+										<div class="item_prod">
+											<div class="item_state">
+												<a href="javascript:void(0)" class="itemLink">
+													<div class="itemPic">
+														<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
 													</div>
-												</div>
+													<div class="itemName">선택</div>
+												</a>
 											</div>
-											<ul class="list">
-												<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" / 품절표기 data-soldout="true" 추가  -->
-												<li class="selected">
-													<div class="item_prod">
-														<div class="item_state">
-															<a href="#none" class="itemLink">
-																<div class="itemPic">
-																	<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
-																</div>
-																<p class="itemBrand">NBA 키즈</p>
-																<div class="itemName">유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>
-																<p class="itemPrice">134,100
-																	<span class="itemPrice_original">149,000</span>
-																	<span class="itemPercent">30%</span>
-																</p>
-															</a>
-														</div>
-													</div>
-												</li> 
-												
-											</ul>
 										</div>
 									</div>
+									<ul class="list">
+										<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" / 품절표기 data-soldout="true" 추가  -->
+										<li class="selected">
+											<div class="item_prod">
+												<div class="item_state">
+													<a href="#none" class="itemLink">
+														<div class="itemPic">
+															<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
+														</div>
+														<p class="itemBrand">NBA 키즈</p>
+														<div class="itemName">유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>
+														<p class="itemPrice">134,100
+															<span class="itemPrice_original">149,000</span>
+															<span class="itemPercent">30%</span>
+														</p>
+													</a>
+												</div>
+											</div>
+										</li> 
+									</ul>
 								</div>
-								<!-- //아이템선택 -->
-							</div>
-							<div class="cont_body">
-								아이템별 상품문의 목록
 							</div>
 						</div>
-						<!-- //상품문의 리스트 -->
-						<!-- 배송/교환/반품 정보 -->
-						<div class="tab_detail_cont pd_delivery">
-							<div class="cont_head">
-								<h3 class="sr-only">배송/교환/반품 정보</h3>
-								<!-- 아이템선택 -->
+						<!-- //아이템선택 -->
+					</div>
+					<div class="cont_body">
+						아이템별 배송/교환/반품 정보
+					</div>
+				</div>
+				<!-- //배송/교환/반품 정보 -->
+			</div>
+			<div class="area_option">
+				<div class="opt_wrap">
+					<div class="option_box">
+						<div class="opt_select">
 								<div class="form_field">
-									<div class="select_custom deal_opt_item forExinfo">
+									<div class="select_custom deal_opt_item">
 										<div class="combo">
 											<div class="select">
 												<div class="item_prod">
 													<div class="item_state">
 														<a href="javascript:void(0)" class="itemLink">
 															<div class="itemPic">
-																<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
+																<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 															</div>
 															<div class="itemName">선택</div>
 														</a>
 													</div>
 												</div>
 											</div>
-											<ul class="list">
-												<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" / 품절표기 data-soldout="true" 추가  -->
-												<li class="selected">
+											<ul class="list" th:if="${goodsDealComposeList  != null and !goodsDealComposeList.empty}">
+												<th:block th:each="goodsInfo, status : ${goodsDealComposeList}" th:attr="aria-disabled=${(goodsInfo.goodsStat != 'G008_90' or goodsInfo.stockQty <= 0)? 'true':''}, data-soldout=${(goodsInfo.stockQty <= 0)? 'true':''}">
+												<li  th:onclick="fnOption1('Down', [[${goodsInfo.compsGoodsCd}]]);">
 													<div class="item_prod">
 														<div class="item_state">
-															<a href="#none" class="itemLink">
+															<a href="javascript:void(0);" class="itemLink">
 																<div class="itemPic">
-																	<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
+																	<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 																</div>
-																<p class="itemBrand">NBA 키즈</p>
-																<div class="itemName">유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>
-																<p class="itemPrice">134,100
-																	<span class="itemPrice_original">149,000</span>
-																	<span class="itemPercent">30%</span>
+																<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">NBA 키즈</p>
+																<div class="itemName" ><span class="tit_option" th:text="${'[상품'+status.count+']'}">[상품1]</span><th:block th:text="${goodsInfo.goodsFullNm}"></th:block></div>
+																<p class="itemPrice"><th:block th:text="${#numbers.formatInteger(goodsInfo.currPrice, 0,'COMMA')}"> 134,100</th:block>
+																	<span class="itemPrice_original" th:if="${goodsInfo.listPrice > goodsInfo.currPrice}" th:text="${#numbers.formatInteger(goodsInfo.listPrice, 0,'COMMA')}">149,000</span>
+																	<span class="itemPercent" th:if="${goodsInfo.dcRate > 0}" th:text="|${#numbers.formatDecimal(goodsInfo.dcRate,0,0)}%|">30%</span>
 																</p>
 															</a>
 														</div>
 													</div>
-												</li> 
+												</li>
+												</th:block> 
 											</ul>
 										</div>
 									</div>
 								</div>
-								<!-- //아이템선택 -->
-							</div>
-							<div class="cont_body">
-								아이템별 배송/교환/반품 정보
-							</div>
-						</div>
-						<!-- //배송/교환/반품 정보 -->
-					</div>
-					<div class="area_option">
-						<div class="opt_wrap">
-							<div class="option_box">
-								<div class="opt_select">
-									<form class="form_wrap">
-										<div class="form_field">
-											<div class="select_custom deal_opt_item">
-												<div class="combo">
-													<div class="select">
-														<div class="item_prod">
-															<div class="item_state">
-																<a href="javascript:void(0)" class="itemLink">
-																	<div class="itemPic">
-																		<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
-																	</div>
-																	<div class="itemName">선택</div>
-																</a>
-															</div>
-														</div>
-													</div>
-													<ul class="list">
-														<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" / 품절표기 data-soldout="true" 추가  -->
-														<li class="selected">
-															<div class="item_prod">
-																<div class="item_state">
-																	<a href="javascript:void(0)" class="itemLink">
-																		<div class="itemPic">
-																			<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
-																		</div>
-																		<div class="itemName"><span class="tit_option">[상품1]</span>유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>
-																		<p class="itemPrice">134,100
-																			<span class="itemPrice_original">149,000</span>
-																			<span class="itemPercent">30%</span>
-																		</p>
-																	</a>
-																</div>
-															</div>
-														</li> 
-														<li>
-															<div class="item_prod">
-																<div class="item_state">
-																	<a href="javascript:void(0)" class="itemLink">
-																		<div class="itemPic">
-																			<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
-																		</div>
-																		<div class="itemName"><span class="tit_option">[상품2]</span>유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>
-																		<p class="itemPrice">134,100
-																			<span class="itemPrice_original">149,000</span>
-																			<span class="itemPercent">30%</span>
-																		</p>
-																	</a>
-																</div>
-															</div>
-														</li>
-														<li>
-															<div class="item_prod">
-																<div class="item_state">
-																	<a href="javascript:void(0)" class="itemLink">
-																		<div class="itemPic">
-																			<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
-																		</div>
-																		<div class="itemName"><span class="tit_option">[상품3]</span>유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>
-																		<p class="itemPrice">134,100
-																			<span class="itemPrice_original">149,000</span>
-																			<span class="itemPercent">30%</span>
-																		</p>
-																	</a>
-																</div>
-															</div>
-														</li>
-														<li aria-disabled="true">
-															<div class="item_prod">
-																<div class="item_state">
-																	<a href="javascript:void(0)" class="itemLink">
-																		<div class="itemPic">
-																			<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
-																		</div>
-																		<div class="itemName"><span class="tit_option">[상품4]</span>유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>
-																		<p class="itemPrice">134,100
-																			<span class="itemPrice_original">149,000</span>
-																			<span class="itemPercent">30%</span>
-																		</p>
-																	</a>
-																</div>
-															</div>
-														</li><li aria-disabled="true" data-soldout="true">
-															<div class="item_prod">
-																<div class="item_state">
-																	<a href="javascript:void(0)" class="itemLink">
-																		<div class="itemPic">
-																			<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
-																		</div>
-																		<div class="itemName"><span class="tit_option">[상품5]</span>유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>
-																		<p class="itemPrice">134,100
-																			<span class="itemPrice_original">149,000</span>
-																			<span class="itemPercent">30%</span>
-																		</p>
-																	</a>
-																</div>
-															</div>
-														</li>
-													</ul>
-												</div>
-											</div>
-										</div>
-										<div class="form_field">
-											<div class="select_custom deal_opt1" disabled="">
-												<div class="combo">
-													<div class="select">선택</div>
-													<ul class="list">
-														<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" / 품절표기 data-soldout="true" 추가  -->
-														<li class="selected">선택</li> 
-														<li>상품옵션01</li>
-														<li>상품옵션02</li>
-														<li>상품옵션03</li>
-														<li aria-disabled="true">
-															<div>상품옵션05</div>
-															<div>120,000원</div>
-														</li>
-														<li>상품옵션06</li>
-														<li aria-disabled="true" data-soldout="true">
-															<div>상품옵션07</div>
-															<div>120,000원</div>
-														</li>
-													</ul>
-												</div>
-											</div>
-										</div>
-										<div class="form_field">
-											<div class="select_custom deal_opt2" disabled="">
-												<div class="combo">
-													<div class="select">선택</div>
-													<ul class="list">
-														<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" / 품절표기 data-soldout="true" 추가  -->
-														<li class="selected">선택</li> 
-														<li>상품옵션11</li>
-														<li>상품옵션12</li>
-														<li>상품옵션13</li>
-														<li aria-disabled="true">
-															<div>상품옵션15</div>
-															<div>120,000원</div>
-														</li>
-														<li>상품옵션16</li>
-														<li aria-disabled="true" data-soldout="true">
-															<div>상품옵션17</div>
-															<div>120,000원</div>
-														</li>
-													</ul>
-												</div>
-											</div>
-										</div>
-									</form>
-								</div>
-								<div class="opt_result">
-									<div class="result_item">
-										<div class="opt_header">
-											<span class="item_name">[상품1] 남성 테이퍼드핏 기모면 올밴딩 팬트</span>
-											<span class="item_option">다크그레이/XXL</span>
-										</div>
-										<div class="number_count">
-											<span class="minus min_val"><em class="sr-only">감소</em></span>
-											<input type="text" name="" maxlength="3" style="ime-mode:disabled" value="1">
-											<span class="plus"><em class="sr-only">추가</em></span>
-										</div>
-										<div class="item_price">
-											<p><em>99,999,999</em>원</p>
+								<div class="form_field">
+									<div class="select_custom deal_opt1" disabled>
+										<div class="combo">
+											<div class="select">선택</div>
+											<ul class="list" id="goodsDealOptDown1">
+												<!--  옵션 1 -->
+											</ul>
 										</div>
-										<button type="button" class="btn_delete_item"><span>삭제</span></button>
 									</div>
-									<div class="result_item">
-										<div class="opt_header">
-											<span class="item_name">[상품1] 남성 테이퍼드핏 기모면 올밴딩 팬트</span>
-											<span class="item_option">블루그레이/S</span>
-										</div>
-										<div class="number_count">
-											<span class="minus min_val"><em class="sr-only">감소</em></span>
-											<input type="text" name="" maxlength="3" style="ime-mode:disabled" value="1">
-											<span class="plus"><em class="sr-only">추가</em></span>
-										</div>
-										<div class="item_price">
-											<p><em>99,999,999</em>원</p>
+								</div>
+								<div class="form_field">
+									<div class="select_custom deal_opt2" disabled>
+										<div class="combo">
+											<div class="select">선택</div>
+											<ul class="list" id="goodsDealOptDown2">
+												<!--  옵션 2 -->
+											</ul>
 										</div>
-										<button type="button" class="btn_delete_item"><span>삭제</span></button>
 									</div>
 								</div>
+						</div>
+						<div class="opt_result">
+							<div class="result_item">
+								<div class="opt_header">
+									<span class="item_name">[상품1] 남성 테이퍼드핏 기모면 올밴딩 팬트</span>
+									<span class="item_option">다크그레이/XXL</span>
+								</div>
+								<div class="number_count">
+									<span class="minus min_val"><em class="sr-only">감소</em></span>
+									<input type="text" name="" maxlength="3" style="ime-mode:disabled" value="1">
+									<span class="plus"><em class="sr-only">추가</em></span>
+								</div>
+								<div class="item_price">
+									<p><em>99,999,999</em>원</p>
+								</div>
+								<button type="button" class="btn_delete_item"><span>삭제</span></button>
 							</div>
-							<div class="price_box">
-								<p class="number">
-									총&nbsp;<span>99</span>개
-								</p>
-								<p class="price">
-									<span>
-										99,999,999<em>원</em>
-									</span>
-								</p>
-							</div>
-							<div class="btn_box">
-								<div class="btn_group_block ui_row">
-									<div class="ui_col_6">
-										<button type="button" id="btn_add_cart" class="btn btn_dark btn_block"><span>쇼핑백</span></button>
-									</div>
-									<div class="ui_col_6">
-										<button type="button"  class="btn btn_primary btn_block" id=""><span>바로구매</span></button>
-									</div>
+							<div class="result_item">
+								<div class="opt_header">
+									<span class="item_name">[상품1] 남성 테이퍼드핏 기모면 올밴딩 팬트</span>
+									<span class="item_option">블루그레이/S</span>
 								</div>
-								<div class="btn_group_block ui_row">
-									<div class="ui_col_12">
-										<button type="button" class="btn btn_dark btn_block" id="" disabled=""><span>SOLD OUT</span></button>
-									</div>
+								<div class="number_count">
+									<span class="minus min_val"><em class="sr-only">감소</em></span>
+									<input type="text" name="" maxlength="3" style="ime-mode:disabled" value="1">
+									<span class="plus"><em class="sr-only">추가</em></span>
+								</div>
+								<div class="item_price">
+									<p><em>99,999,999</em>원</p>
 								</div>
+								<button type="button" class="btn_delete_item"><span>삭제</span></button>
+							</div>
+						</div>
+					</div>
+					<div class="price_box">
+						<p class="number">
+							총&nbsp;<span>99</span>개
+						</p>
+						<p class="price">
+							<span>
+								99,999,999<em>원</em>
+							</span>
+						</p>
+					</div>
+					<div class="btn_box">
+						<div class="btn_group_block ui_row">
+							<div class="ui_col_6">
+								<button type="button" id="btn_add_cart" class="btn btn_dark btn_block"><span>쇼핑백</span></button>
+							</div>
+							<div class="ui_col_6">
+								<button type="button"  class="btn btn_primary btn_block" id=""><span>바로구매</span></button>
+							</div>
+						</div>
+						<div class="btn_group_block ui_row">
+							<div class="ui_col_12">
+								<button type="button" class="btn btn_dark btn_block" id="" disabled=""><span>SOLD OUT</span></button>
 							</div>
 						</div>
 					</div>
 				</div>
 			</div>
 		</div>
+	</div>
+</div>
 <script th:inline="javascript">
 /*<![CDATA[*/
 		

Diff do ficheiro suprimidas por serem muito extensas
+ 477 - 380
src/main/webapp/ux/pc/css/layout.css


Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff