Browse Source

Merge remote-tracking branch 'origin/xodud1202' into develop

xodud1202 5 years ago
parent
commit
2fd76b0574

+ 3 - 2
src/main/java/com/style24/front/biz/service/TsfOrderService.java

@@ -805,8 +805,8 @@ public class TsfOrderService {
 	}
 
 	/**
-	 * USAFE 보증보험 신청
-	 * temp.setOrdNo(111);			// 상품명 배열
+	 * USAFE 보증보험 입금 확인(보증보험 신청 완료 > 완료 후 취소안됨 주의)
+	 * temp.setOrdNo(111);			// 주문번호
 	 * @param param
 	 * @author xodud1202
 	 * @since 2021. 04. 26
@@ -816,6 +816,7 @@ public class TsfOrderService {
 		// 보증보험 정보 조회
 		Order insurance = coreOrderDao.getInsuranceInfo(param);
 
+		// 보증보험 신청 이력이 없으면 완료안됨
 		if(insurance != null) {
 			// 보증보험 입금 완료 정보 송부
 			InsuranceManager manager = new InsuranceManager(env.getProperty("usafe.guarantee.send.url"), null);

+ 2 - 2
src/main/resources/config/application-dev.yml

@@ -71,8 +71,8 @@ pg:
         js.url: https://testpay.kcp.co.kr/plugin/payplus_web.jsp
         server: false
         site:
-            cd: T0000
-            key: 3grptw1.zW0GSo4PQdaGvsF__
+            cd: U3476
+            key:
             name: ISTYLE TEST
         log.level: 3
         module.type: 01

+ 2 - 2
src/main/resources/config/application-locd.yml

@@ -69,8 +69,8 @@ pg:
         js.url: https://testpay.kcp.co.kr/plugin/payplus_web.jsp
         server: false
         site:
-            cd: T0000
-            key: 3grptw1.zW0GSo4PQdaGvsF__
+            cd: U3476
+            key:
             name: ISTYLE TEST
         log.level: 3
         module.type: 01

+ 2 - 2
src/main/resources/config/application-tsit.yml

@@ -70,8 +70,8 @@ pg:
         js.url: https://testpay.kcp.co.kr/plugin/payplus_web.jsp
         server: false
         site:
-            cd: T0000
-            key: 3grptw1.zW0GSo4PQdaGvsF__
+            cd: U3476
+            key:
             name: KCP TEST SHOP
         log.level: 3
         module.type: 01

+ 71 - 0
src/main/webapp/WEB-INF/views/mob/cart/CartDelvFeeSaveGoodsPopupMob.html

@@ -0,0 +1,71 @@
+<html lang="ko" xmlns:th="http://www.thymeleaf.org">
+<div class="lap" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}, imgUrl=${@environment.getProperty('upload.image.view')}">
+	<div class="popup_close">카테고리닫기</div>
+	<div class="popup_head">
+		<h2>배송비 SAVE 상품</h2>
+	</div>
+	<div class="popup_con">
+		<div class="part_goods">
+			<ul>
+				<li th:each="goods, status : ${goodsList}">
+					<div class="goods_detail">
+						<div class="thumb_box">
+							<a th:href="|javascript:fnGoToGoodsDetail('${goods.goodsCd}')|">
+								<img th:src="${imgGoodsUrl} + '/' + ${goods.sysImgNm} + '?RS=150'" src="/" width="100%" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'"  th:alt="${goods.sysImgNm}" alt="">
+							</a>
+						</div>
+						<div class="info_box">
+							<div class="od_name">
+								<div class="brand">
+									<span th:text="${goods.brandNm}"></span>
+								</div>
+								<div class="name"><a th:href="|javascript:fnGoToGoodsDetail('${goods.goodsCd}')|" th:text="${goods.goodsNm}"></a></div>
+							</div>
+							<div class="od_calc">
+								<p class="price">
+									<span class="selling_price"><em th:text="${#numbers.formatInteger(goods.currPrice, 1, 'COMMA')}"></em>원</span>
+									<th:block th:if="${goods.listPrice != goods.currPrice}">
+										<span class="sale_price"><del><em th:text="${#numbers.formatInteger(goods.listPrice, 1, 'COMMA')}"></em>원</del></span>
+										<span class="sale_percent" th:text="${goods.dcRate + '%'}"></span>
+									</th:block>
+								</p>
+							</div>
+							<div class="od_shoppingbag">
+								<button type="button" class="btn btn_primary_line" th:onclick="fnAddCartDelvFeeSaveGoods([[${goods.goodsCd}]], [[${goods.optCd}]])"><span>쇼핑백 담기</span></button>
+							</div>
+						</div>
+					</div>
+				</li>
+			</ul>
+		</div>
+	</div>
+</div>
+
+<script th:inline="javascript">
+	$(document).ready(function() {
+		var goodsListCnt = [[${goodsList.size()}]];
+		if(goodsListCnt < 1) {
+			mcxDialog.alert("배송비 SAVE 상품이 없습니다.");
+			$(".popup_close").trigger("click");
+		} else {
+			$('#dlvrSavePop').show().addClass("active");
+			$("body").css({"overflow":"hidden"});
+		}
+	});
+
+	function fnAddCartDelvFeeSaveGoods(goodsCd, optCd) {
+		let compsList = [];
+		let temp 			= new Object;
+		temp.goodsCd 		= goodsCd;
+		temp.optCd 			= optCd;
+		temp.goodsQty 		= 1;
+		temp.goodsType 		= "G056_N";
+		temp.cartGb 		= "C";
+		temp.popupYn		= "Y";
+		compsList.push(temp);
+
+		cfnAddCart(compsList);
+	};
+</script>
+<!-- //다다익선 상품보기 팝업 -->
+</html>

+ 37 - 26
src/main/webapp/WEB-INF/views/mob/cart/CartListAjaxFormMob.html

@@ -103,8 +103,9 @@
 						<input type="hidden" name="currPrice" th:value="${cart.currPrice}" />
 						<input type="hidden" name="tmtbDcAmt" th:value="${cart.tmtbDcAmt}" />
 						<input type="hidden" name="soldoutYn" th:value="${cart.soldoutYn}" />
-						<input type="hidden" name="ordCanYn" th:value="${cart.ordCanYn}" />
-						<input type="hidden" name="cartSq" th:value="${cart.cartSq}" />
+						<input type="hidden" name="ordCanYn"  th:value="${cart.ordCanYn}" />
+						<input type="hidden" name="goodsCd"   th:value="${cart.goodsCd}" />
+						<input type="hidden" name="cartSq"    th:value="${cart.cartSq}" />
 
 						<button type="button" class="btn_delete" th:onclick="|deleteCart(${cart.cartSq}, 'cart')|"><span><em class="sr-only">상품삭제</em></span></button>
 						<div class="goods_detail">
@@ -115,7 +116,7 @@
 								<label th:for="|od_item_${cart.cartSq}|"><span class="sr-only">상품선택</span></label>
 							</div>
 							<div class="thumb_box">
-								<a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}')|">
+								<a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}', '${cart.ordCanYn}')|">
 									<img th:src="${IMG_PATH} + '/' + ${cart.sysImgNm} + '?RS=100'" src="/" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'" th:alt="${cart.sysImgNm}" alt="">
 								</a>
 							</div>
@@ -124,7 +125,7 @@
 									<div class="brand">
 										<span th:text="|${cart.brandEnm} ${cart.brandKnm}|"></span>
 									</div>
-									<div class="name"><a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}')|" th:text="${cart.goodsNm}"></a></div>
+									<div class="name"><a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}', '${cart.ordCanYn}')|" th:text="${cart.goodsNm}"></a></div>
 								</div>
 								<div class="od_opt">
 									<th:block th:each="opt, index : ${cart.itemNmArr}">
@@ -144,8 +145,8 @@
 									<p class="point"><span th:text="${#numbers.formatInteger(cart.savePntAmt, 1, 'COMMA')}"></span>P 적립예정</p>
 								</div>
 								<div class="od_exinfo">
-									<span th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y')}" class="applyTmtb btn_moresale order_badge order_bullet_badge">다다익선 할인 적용</span>
-									<a th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N')}" href="javascript:;" id="btn_moresale_pop" class="notApplyTmtb btn_moresale btn_moresale_pop order_badge order_bullet_badge">다다익선 할인 대상</a>
+									<span th:style="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y') ? 'display:inline-block' : 'display:none'}" class="applyTmtb btn_moresale order_badge order_bullet_badge">다다익선 할인 적용</span>
+									<a    th:style="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N') ? 'display:inline-block' : 'display:none'}" href="javascript:void(0);" onclick="fnGetTmtbSalesGoods(this);" id="btn_moresale_pop" class="notApplyTmtb btn_moresale btn_moresale_pop order_badge order_bullet_badge">다다익선 할인 대상</a>
 								</div>
 							</div>
 						</div>
@@ -204,8 +205,9 @@
 						<input type="hidden" name="currPrice" th:value="${cart.currPrice}" />
 						<input type="hidden" name="tmtbDcAmt" th:value="${cart.tmtbDcAmt}" />
 						<input type="hidden" name="soldoutYn" th:value="${cart.soldoutYn}" />
-						<input type="hidden" name="ordCanYn" th:value="${cart.ordCanYn}" />
-						<input type="hidden" name="cartSq" th:value="${cart.cartSq}" />
+						<input type="hidden" name="ordCanYn"  th:value="${cart.ordCanYn}" />
+						<input type="hidden" name="goodsCd"   th:value="${cart.goodsCd}" />
+						<input type="hidden" name="cartSq"    th:value="${cart.cartSq}" />
 
 						<button type="button" class="btn_delete" th:onclick="|deleteCart(${cart.cartSq}, 'cart')|"><span><em class="sr-only">상품삭제</em></span></button>
 						<div class="goods_detail">
@@ -216,7 +218,7 @@
 								<label th:for="|od_item_${cart.cartSq}|"><span class="sr-only">상품선택</span></label>
 							</div>
 							<div class="thumb_box">
-								<a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}')|">
+								<a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}', '${cart.ordCanYn}')|">
 									<img th:src="${IMG_PATH} + '/' + ${cart.sysImgNm} + '?RS=100'" src="/" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'" th:alt="${cart.sysImgNm}" alt="">
 								</a>
 							</div>
@@ -225,7 +227,7 @@
 									<div class="brand">
 										<span th:text="|${cart.brandEnm} ${cart.brandKnm}|"></span>
 									</div>
-									<div class="name"><a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}')|" th:text="${cart.goodsNm}"></a></div>
+									<div class="name"><a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}', '${cart.ordCanYn}')|" th:text="${cart.goodsNm}"></a></div>
 								</div>
 								<div class="od_opt">
 									<th:block th:each="opt, index : ${cart.itemNmArr}">
@@ -245,8 +247,8 @@
 									<p class="point"><span th:text="${#numbers.formatInteger(cart.savePntAmt, 1, 'COMMA')}"></span>P 적립예정</p>
 								</div>
 								<div class="od_exinfo">
-									<span th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y')}" class="applyTmtb btn_moresale order_badge order_bullet_badge">다다익선 할인 적용</span>
-									<a th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N')}" href="javascript:;" id="btn_moresale_pop" class="notApplyTmtb btn_moresale btn_moresale_pop order_badge order_bullet_badge">다다익선 할인 대상</a>
+									<span th:style="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y') ? 'display:inline-block' : 'display:none'}" class="applyTmtb btn_moresale order_badge order_bullet_badge">다다익선 할인 적용</span>
+									<a    th:style="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N') ? 'display:inline-block' : 'display:none'}" href="javascript:void(0);" onclick="fnGetTmtbSalesGoods(this);" id="btn_moresale_pop" class="notApplyTmtb btn_moresale btn_moresale_pop order_badge order_bullet_badge">다다익선 할인 대상</a>
 								</div>
 							</div>
 						</div>
@@ -301,7 +303,7 @@
 				</div>
 
 				<div class="goods_dlvr_save" th:style="${'Y'.equals(order.delvYn) and order.wmsDelvFee > 0 ? 'display:block' : 'display:none'}">
-					<a href="javascript:;" id="btn_dlvrSave_pop" class="btn_popup_save">배송비 SAVE 상품 보기</a>
+					<a th:href="|javascript:fnGetDelvFeeSaveGoods('WMS', '${order.minOrdAmt - order.compSumPrice}');|" id="btn_dlvrSave_pop" class="btn_popup_save">배송비 SAVE 상품 보기</a>
 				</div>
 			</div>
 			<!-- //STYLE24 배송 -->
@@ -324,9 +326,10 @@
 						<input type="hidden" name="amtTmtbNm" th:value="${cart.amtTmtbNm}" />
 						<input type="hidden" name="currPrice" th:value="${cart.currPrice}" />
 						<input type="hidden" name="soldoutYn" th:value="${cart.soldoutYn}" />
-						<input type="hidden" name="ordCanYn" th:value="${cart.ordCanYn}" />
+						<input type="hidden" name="ordCanYn"  th:value="${cart.ordCanYn}" />
 						<input type="hidden" name="tmtbDcAmt" th:value="${cart.tmtbDcAmt}" />
-						<input type="hidden" name="cartSq" th:value="${cart.cartSq}" />
+						<input type="hidden" name="goodsCd"   th:value="${cart.goodsCd}" />
+						<input type="hidden" name="cartSq"    th:value="${cart.cartSq}" />
 
 						<button type="button" class="btn_delete"><span><em class="sr-only">상품삭제</em></span></button>
 						<div class="goods_detail">
@@ -337,7 +340,7 @@
 								<label th:for="|od_item_${cart.cartSq}|"><span class="sr-only">상품선택</span></label>
 							</div>
 							<div class="thumb_box">
-								<a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}')|">
+								<a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}', '${cart.ordCanYn}')|">
 									<img th:src="${IMG_PATH} + '/' + ${cart.sysImgNm} + '?RS=100'" src="/" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'" th:alt="${cart.sysImgNm}" alt="">
 								</a>
 							</div>
@@ -346,7 +349,7 @@
 									<div class="brand">
 										<span th:text="|${cart.brandEnm} ${cart.brandKnm}|"></span>
 									</div>
-									<div class="name"><a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}')|" th:text="${cart.goodsNm}"></a></div>
+									<div class="name"><a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}', '${cart.ordCanYn}')|" th:text="${cart.goodsNm}"></a></div>
 								</div>
 								<div class="od_opt">
 									<th:block th:each="opt, index : ${cart.itemNmArr}">
@@ -366,8 +369,8 @@
 									<p class="point"><span th:text="${#numbers.formatInteger(cart.savePntAmt, 1, 'COMMA')}"></span>P 적립예정</p>
 								</div>
 								<div class="od_exinfo">
-									<span th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y')}" class="applyTmtb btn_moresale order_badge order_bullet_badge">다다익선 할인 적용</span>
-									<a th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N')}" href="javascript:;" id="btn_moresale_pop" class="notApplyTmtb btn_moresale btn_moresale_pop order_badge order_bullet_badge">다다익선 할인 대상</a>
+									<span th:style="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y') ? 'display:inline-block' : 'display:none'}" class="applyTmtb btn_moresale order_badge order_bullet_badge">다다익선 할인 적용</span>
+									<a    th:style="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N') ? 'display:inline-block' : 'display:none'}" href="javascript:void(0);" onclick="fnGetTmtbSalesGoods(this);" id="btn_moresale_pop" class="notApplyTmtb btn_moresale btn_moresale_pop order_badge order_bullet_badge">다다익선 할인 대상</a>
 								</div>
 							</div>
 						</div>
@@ -419,7 +422,7 @@
 						</div>
 
 						<div class="goods_dlvr_save" th:if="${'Y'.equals(cart.addDelvFeeYn)}" th:style="${'Y'.equals(cart.delvYn) and cart.delvFee > 0 ? 'display:block' : 'display:none'}">
-							<a href="javascript:;" id="btn_dlvrSave_pop" class="btn_popup_save">배송비 SAVE 상품 보기</a>
+							<a th:href="|javascript:fnGetDelvFeeSaveGoods('${cart.delvFeeCd}', '${cart.minOrdAmt - cart.compSumPrice}');|" id="btn_dlvrSave_pop" class="btn_popup_save">배송비 SAVE 상품 보기</a>
 						</div>
 					</div>
 				</div>
@@ -881,12 +884,15 @@
 					$("#cartListForm .shotCartInfo input[name=cartSq]").each(function() {
 						if(shotList[i].cartSq == $(this).val()) {
 							let shot = shotList[i];
+							$(this).parent().find("input[name=applyQtySectionYn]").val(shot.applyQtySectionYn);
+							$(this).parent().find("input[name=applyAmtSectionYn]").val(shot.applyQtySectionYn);
 
 							// 다다익선 적용 정보 생성성
 							if((shot.qtyTmtbSq > 0 && shot.applyQtySectionYn == "Y") || (shot.amtTmtbSq > 0 && shot.applyAmtSectionYn == "Y")) {
 								$(this).parent().find(".applyTmtb").show();
 							}
 
+							// 다다익선 상품보기 노출
 							if((shot.qtyTmtbSq > 0 && shot.applyQtySectionYn == "N") || (shot.amtTmtbSq > 0 && shot.applyAmtSectionYn == "N")) {
 								$(this).parent().find(".notApplyTmtb").show();
 							}
@@ -907,13 +913,14 @@
 					$("#cartListForm .wmsCartInfo input[name=cartSq]").each(function() {
 						if(wmsList[i].cartSq == $(this).val()) {
 							let wms = wmsList[i];
-							$(this).parent().find(".od_moresale .applyTmtbNm > ul").html("");
-							$(this).parent().find(".od_moresale .notApplyTmtbNm > ul").html("");
+							$(this).parent().find("input[name=applyQtySectionYn]").val(wms.applyQtySectionYn);
+							$(this).parent().find("input[name=applyAmtSectionYn]").val(wms.applyQtySectionYn);
 
 							// 다다익선 적용 정보 생성성
 							if((wms.qtyTmtbSq > 0 && wms.applyQtySectionYn == "Y") || (wms.amtTmtbSq > 0 && wms.applyAmtSectionYn == "Y")) {
 								$(this).parent().find(".applyTmtb").show();
 							}
+
 							if((wms.qtyTmtbSq > 0 && wms.applyQtySectionYn == "N") || (wms.amtTmtbSq > 0 && wms.applyAmtSectionYn == "N")) {
 								$(this).parent().find(".notApplyTmtb").show();
 							}
@@ -945,8 +952,8 @@
 					$("#cartListForm .delvList .delvCartInfo input[name=cartSq]").each(function() {
 						if(delvList[i].cartSq == $(this).val()) {
 							let delv = delvList[i];
-							$(this).parent().find(".od_moresale .applyTmtbNm > ul").html("");
-							$(this).parent().find(".od_moresale .notApplyTmtbNm > ul").html("");
+							$(this).parent().find("input[name=applyQtySectionYn]").val(delv.applyQtySectionYn);
+							$(this).parent().find("input[name=applyAmtSectionYn]").val(delv.applyQtySectionYn);
 
 							// 다다익선 적용 정보 생성성
 							if((delv.qtyTmtbSq > 0 && delv.applyQtySectionYn == "Y") || (delv.amtTmtbSq > 0 && delv.applyAmtSectionYn == "Y")) {
@@ -1215,8 +1222,12 @@
 			}
 
 			// 페이지 이동
-			function fnGoToGoodsDetail(goodsCd) {
-				cfnGoToPage(_PAGE_GOODS_DETAIL + goodsCd);
+			function fnGoToGoodsDetail(goodsCd, ordCanYn) {
+				if(ordCanYn == "Y" || !ordCanYn) {
+					cfnGoToPage(_PAGE_GOODS_DETAIL + goodsCd);
+				} else {
+					mcxDialog.alert("현재 구매가 불가능한 상품입니다.");
+				}
 			}
 
 			// 전체선택 버튼

+ 46 - 43
src/main/webapp/WEB-INF/views/mob/cart/CartListFormMob.html

@@ -48,38 +48,11 @@
 		<!-- //옵션변경_팝업02 -->
 
 		<!-- 다다익선 할인 대상_팝업 -->
-		<div id="moresalePop" class="popup_box moresalePop">
-			<div class="lap">
-				<div class="popup_close">카테고리닫기</div>
-				<div class="popup_head">
-					<h2>다다익선 할인 상품</h2>
-					<div class="area_benefit">
-						<span class="tag primary">SALE</span>
-						<p>
-							<span>10만원 이상 구매 시 1만원 할인</span>
-							<span>5개 이상 구매 시 1만원 할인</span>
-						</p>
-					</div>
-				</div>
-				<div class="popup_con">
-
-				</div>
-			</div>
-		</div>
+		<div id="moresalePop" class="popup_box moresalePop" style="display: none;"></div>
 		<!-- //다다익선 할인 대상_팝업 -->
 
 		<!-- 배송비 SAVE_팝업 -->
-		<div id="dlvrSavePop" class="popup_box dlvrSavePop">
-			<div class="lap">
-				<div class="popup_close">카테고리닫기</div>
-				<div class="popup_head">
-					<h2>배송비 SAVE 상품</h2>
-				</div>
-				<div class="popup_con">
-
-				</div>
-			</div>
-		</div>
+		<div id="dlvrSavePop" class="popup_box dlvrSavePop" style="display: none;"></div>
 		<!-- //배송비 SAVE_팝업 -->
 
 		<!-- 옵션변경 팝업 -->
@@ -137,20 +110,6 @@
 			$("body").css({"overflow":"hidden"});
 		});
 
-		//다다익선 할인 대상_팝업
-		$(document).on("click", ".btn_moresale_pop", function(){
-			//$("#moresalePop .popup_con").load("popup_moresale.html");
-			$('#moresalePop').show().addClass("active");
-			$("body").css({"overflow":"hidden"});
-		});
-
-		//배송비 SAVE_팝업
-		$(document).on("click", ".btn_popup_save", function(){
-			//$("#dlvrSavePop .popup_con").load("popup_dlvrSave.html");
-			$('#dlvrSavePop').show().addClass("active");
-			$("body").css({"overflow":"hidden"});
-		});
-
 		//팝업_닫기
 		$(document).on("click", ".popup_close", function(){
 			$('.popup_box').hide();
@@ -269,6 +228,50 @@
 		});
 	});
 
+	//배송비 SAVE_팝업
+	function fnGetDelvFeeSaveGoods(delvFeeCd, delvFeeSaveGoodsAmt) {
+		let param = new Object();
+		param.delvFeeCd = delvFeeCd;
+		param.delvFeeSaveGoodsAmt = delvFeeSaveGoodsAmt;
+
+		gagajf.ajaxSubmit("/cart/delv/fee/save/goods/list", "html", "dlvrSavePop", param);
+	};
+
+	//다다익선 할인 대상_팝업
+	function fnGetTmtbSalesGoods(obj) {
+		// 파라미터
+		let tmtbSqList = new Array();
+		let param = new Object();
+
+		// 다다익선 정보
+		let qtyTmtbSq = $(obj).parent().parent().parent().parent().find("input[name=qtyTmtbSq]").val();
+		let amtTmtbSq = $(obj).parent().parent().parent().parent().find("input[name=qtyTmtbSq]").val();
+		let qtyTmtbYn = $(obj).parent().parent().parent().parent().find("input[name=applyQtySectionYn]").val();
+		let amtTmtbYn = $(obj).parent().parent().parent().parent().find("input[name=applyAmtSectionYn]").val();
+		let goodsCd = $(obj).parent().parent().parent().parent().find("input[name=goodsCd]").val();
+
+		if(qtyTmtbYn == "N") {tmtbSqList.push(Number(qtyTmtbSq));}
+		if(amtTmtbYn == "N") {tmtbSqList.push(Number(amtTmtbSq));}
+		if(tmtbSqList.length < 1) {mcxDialog.alert("적용가능한 다다익선이 없습니다."); return false;}
+
+		let tmtb = JSON.stringify({goodsCd : goodsCd, arrTmtbSq : tmtbSqList});
+
+		$.ajax( {
+			type		: "POST",
+			url 		: '/cart/tmtb/sales/goods/list',
+			data		: tmtb,
+			dataType 	: 'html',
+			beforeSend : function(xhr, settings) {
+				xhr.setRequestHeader("AJAX"			, "true");
+				xhr.setRequestHeader('Accept'		, 'application/json');
+				xhr.setRequestHeader('Content-Type'	, 'application/json');
+			},
+			success 	: function(result) {
+				$("#moresalePop").html(result);
+			}
+		});
+	};
+
 	function getCartList(parameter) {
 		// 장바구니 정보 조회
 		$.ajax( {

+ 95 - 0
src/main/webapp/WEB-INF/views/mob/cart/CartTmtbSalesGoodsPopupMob.html

@@ -0,0 +1,95 @@
+<html lang="ko"
+	  xmlns:th="http://www.thymeleaf.org">
+
+<!-- 다다익선 상품보기 팝업 -->
+<div class="lap" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}, imgUrl=${@environment.getProperty('upload.image.view')}">
+	<div class="popup_close">카테고리닫기</div>
+	<div class="popup_head">
+		<h2>다다익선 할인 상품</h2>
+		<div class="area_benefit">
+			<span class="tag primary">SALE</span>
+			<p>
+				<span th:each="desc, index : ${tmtbDcDescList}" th:text="${desc}"></span>
+			</p>
+		</div>
+	</div>
+	<div class="popup_con">
+		<div class="part_goods">
+			<ul>
+				<li th:each="goods, status : ${goodsList}">
+					<div class="goods_detail">
+						<div class="thumb_box">
+							<a th:href="|javascript:fnGoToGoodsDetail('${goods.goodsCd}')|">
+								<img class="vLHTC pd_img" th:src="${imgGoodsUrl} + '/' + ${goods.sysImgNm} + '?RS=150'" src="/" width="100%" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'"  th:alt="${goods.sysImgNm}" alt="">
+							</a>
+						</div>
+						<div class="info_box">
+							<div class="od_name">
+								<div class="brand">
+									<span th:text="${goods.brandGroupNm}"></span>
+								</div>
+								<div class="name"><a th:href="|javascript:fnGoToGoodsDetail('${goods.goodsCd}')|" th:text="${goods.goodsFullNm}"></a></div>
+							</div>
+							<div class="od_calc">
+								<p class="price">
+									<span class="selling_price"><em th:text="${#numbers.formatInteger(goods.currPrice, 1, 'COMMA')}"></em>원</span>
+									<th:block th:if="${goods.listPrice != goods.currPrice}">
+										<span class="sale_price"><del><em th:text="${#numbers.formatInteger(goods.listPrice, 1, 'COMMA')}"></em>원</del></span>
+										<span class="sale_percent" th:text="${goods.dcRate + '%'}"></span>
+									</th:block>
+								</p>
+							</div>
+							<div class="od_shoppingbag">
+								<button type="button" class="btn btn_primary_line" th:onclick="fnAddCartTmtbSalesGoods([[${goods.goodsCd}]])"><span>쇼핑백 담기</span></button>
+							</div>
+						</div>
+					</div>
+				</li>
+			</ul>
+		</div>
+	</div>
+</div>
+
+<script th:inline="javascript">
+	$(document).ready(function() {
+		var goodsListCnt = [[${goodsList.size()}]];
+		if(goodsListCnt < 1) {
+			mcxDialog.alert("다다익선 적용 가능한 다른 상품이 없습니다.");
+			$(".popup_close").trigger("click");
+		} else {
+			$('#moresalePop').show().addClass("active");
+			$("body").css({"overflow":"hidden"});
+			// $("#moresalePop").modal("show");
+		}
+	});
+
+	function fnAddCartTmtbSalesGoods(goodsCd) {
+		let data = JSON.stringify({goodsCd : goodsCd});
+		$.ajax( {
+			type		: "POST",
+			url 		: '/cart/tmtb/sales/goods/optcd',
+			data		: data,
+			dataType 	: 'json',
+			beforeSend : function(xhr, settings) {
+				xhr.setRequestHeader("AJAX"			, "true");
+				xhr.setRequestHeader('Accept'		, 'application/json');
+				xhr.setRequestHeader('Content-Type'	, 'application/json');
+			},
+			success 	: function(result) {
+				let compsList = [];
+				let temp 			= new Object;
+				temp.goodsCd 		= goodsCd;
+				temp.optCd 			= result.optCd;
+				temp.goodsQty 		= 1;
+				temp.goodsType 		= "G056_N";
+				temp.cartGb 		= "C";
+				temp.popupYn		= "Y";
+				compsList.push(temp);
+
+				cfnAddCart(compsList);
+			}
+		});
+	};
+</script>
+<!-- //다다익선 상품보기 팝업 -->
+</html>

+ 13 - 13
src/main/webapp/WEB-INF/views/web/cart/CartListAjaxFormWeb.html

@@ -141,8 +141,8 @@
 												</div>
 												<div class="gd_exinfo">
 													<p th:if="${!#strings.isEmpty(cart.delvResDt)}"><span class="tag primary_line">총알배송</span><span th:text="|${cart.delvResDt} 배송예정|"></span></p>
-													<p th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y')}" class="applyTmtb"><span class="tag primary">SALE</span>다다익선 할인 적용</p>
-													<p th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N')}" class="notApplyTmtb"><a href="javascript:void(0);" onclick="fnGetTmtbSalesGoods(this);" class="btn_moresale"><span class="tag primary">SALE</span>다다익선 상품보기</a></p>
+													<p th:style="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y') ? 'display:inline-block' : 'display:none'}" class="applyTmtb"><span class="tag primary">SALE</span>다다익선 할인 적용</p>
+													<p th:style="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N') ? 'display:inline-block' : 'display:none'}" class="notApplyTmtb"><a href="javascript:void(0);" onclick="fnGetTmtbSalesGoods(this);" class="btn_moresale"><span class="tag primary">SALE</span>다다익선 상품보기</a></p>
 													<p th:if="${cart.soldoutYn.equals('Y') and cart.ordCanYn.equals('Y')}">품절된 상품입니다.</p>
 													<p th:if="${cart.ordCanYn.equals('N')}">해당 상품은 구매 불가능한 상품입니다.</p>
 													<p th:if="${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.goodsQty < cart.minOrdQty}" th:text="|해당 상품은 최소 ${cart.minOrdQty}개부터 구매 가능합니다.|"></p>
@@ -250,8 +250,8 @@
 												<div class="gd_exinfo">
 													<div class="gd_exinfo">
 														<p th:if="${!#strings.isEmpty(cart.delvResDt)}" th:text="|${cart.delvResDt} 배송예정|"></p>
-														<p th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y')}" class="applyTmtb"><span class="tag primary">SALE</span>다다익선 할인 적용</p>
-														<p th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N')}" class="notApplyTmtb"><a href="javascript:void(0);" onclick="fnGetTmtbSalesGoods(this);" class="btn_moresale"><span class="tag primary">SALE</span>다다익선 상품보기</a></p>
+														<p th:style="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y') ? 'display:inline-block' : 'display:none'}" class="applyTmtb"><span class="tag primary">SALE</span>다다익선 할인 적용</p>
+														<p th:style="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N') ? 'display:inline-block' : 'display:none'}" class="notApplyTmtb"><a href="javascript:void(0);" onclick="fnGetTmtbSalesGoods(this);" class="btn_moresale"><span class="tag primary">SALE</span>다다익선 상품보기</a></p>
 														<p th:if="${cart.soldoutYn.equals('Y') and cart.ordCanYn.equals('Y')}">품절된 상품입니다.</p>
 														<p th:if="${cart.ordCanYn.equals('N')}">해당 상품은 구매 불가능한 상품입니다.</p>
 														<p th:if="${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.goodsQty < cart.minOrdQty}" th:text="|해당 상품은 최소 ${cart.minOrdQty}개부터 구매 가능합니다.|"></p>
@@ -369,8 +369,8 @@
 												</div>
 												<div class="gd_exinfo">
 													<p th:if="${!#strings.isEmpty(cart.delvResDt)}" th:text="|${cart.delvResDt} 배송예정|"></p>
-													<p th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y')}" class="applyTmtb"><span class="tag primary">SALE</span>다다익선 할인 적용</p>
-													<p th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N')}" class="notApplyTmtb"><a href="javascript:void(0);" onclick="fnGetTmtbSalesGoods(this);" class="btn_moresale"><span class="tag primary">SALE</span>다다익선 상품보기</a></p>
+													<p th:style="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y') ? 'display:inline-block' : 'display:none'}" class="applyTmtb"><span class="tag primary">SALE</span>다다익선 할인 적용</p>
+													<p th:style="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N') ? 'display:inline-block' : 'display:none'}" class="notApplyTmtb"><a href="javascript:void(0);" onclick="fnGetTmtbSalesGoods(this);" class="btn_moresale"><span class="tag primary">SALE</span>다다익선 상품보기</a></p>
 													<p th:if="${cart.soldoutYn.equals('Y') and cart.ordCanYn.equals('Y')}">품절된 상품입니다.</p>
 													<p th:if="${cart.ordCanYn.equals('N')}">해당 상품은 구매 불가능한 상품입니다.</p>
 													<p th:if="${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.goodsQty < cart.minOrdQty}" th:text="|해당 상품은 최소 ${cart.minOrdQty}개부터 구매 가능합니다.|"></p>
@@ -875,8 +875,8 @@
 				$("#cartListForm .shotCartInfo input[name=cartSq]").each(function() {
 					if(shotList[i].cartSq == $(this).val()) {
 						let shot = shotList[i];
-						$(this).parent().find(".od_moresale .applyTmtbNm > ul").html("");
-						$(this).parent().find(".od_moresale .notApplyTmtbNm > ul").html("");
+						$(this).parent().find("input[name=applyQtySectionYn]").val(shot.applyQtySectionYn);
+						$(this).parent().find("input[name=applyAmtSectionYn]").val(shot.applyQtySectionYn);
 
 						// 다다익선 적용 정보 생성성
 						if((shot.qtyTmtbSq > 0 && shot.applyQtySectionYn == "Y") || shot.amtTmtbSq > 0 && shot.applyAmtSectionYn == "Y") {
@@ -910,8 +910,8 @@
 				$("#cartListForm .wmsCartInfo input[name=cartSq]").each(function() {
 					if(wmsList[i].cartSq == $(this).val()) {
 						let wms = wmsList[i];
-						$(this).parent().find(".od_moresale .applyTmtbNm > ul").html("");
-						$(this).parent().find(".od_moresale .notApplyTmtbNm > ul").html("");
+						$(this).parent().find("input[name=applyQtySectionYn]").val(wms.applyQtySectionYn);
+						$(this).parent().find("input[name=applyAmtSectionYn]").val(wms.applyQtySectionYn);
 
 						// 다다익선 적용 정보 생성성
 						if((wms.qtyTmtbSq > 0 && wms.applyQtySectionYn == "Y") || (wms.amtTmtbSq > 0 && wms.applyAmtSectionYn == "Y")) {
@@ -935,8 +935,8 @@
 				$("#cartListForm .delvList .delvCartInfo input[name=cartSq]").each(function() {
 					if(delvList[i].cartSq == $(this).val()) {
 						let delv = delvList[i];
-						$(this).parent().find(".od_moresale .applyTmtbNm > ul").html("");
-						$(this).parent().find(".od_moresale .notApplyTmtbNm > ul").html("");
+						$(this).parent().find("input[name=applyQtySectionYn]").val(delv.applyQtySectionYn);
+						$(this).parent().find("input[name=applyAmtSectionYn]").val(delv.applyQtySectionYn);
 
 						// 다다익선 적용 정보 생성성
 						if((delv.qtyTmtbSq > 0 && delv.applyQtySectionYn == "Y") || (delv.amtTmtbSq > 0 && delv.applyAmtSectionYn == "Y")) {
@@ -1205,7 +1205,7 @@
 
 		// 페이지 이동
 		function fnGoToGoodsDetail(goodsCd, ordCanYn) {
-			if(ordCanYn == "Y") {
+			if(ordCanYn == "Y" || !ordCanYn) {
 				cfnGoToPage(_PAGE_GOODS_DETAIL + goodsCd);
 			} else {
 				mcxDialog.alert("현재 구매가 불가능한 상품입니다.");

+ 1 - 3
src/main/webapp/WEB-INF/views/web/cart/CartTmtbSalesGoodsPopupWeb.html

@@ -21,7 +21,7 @@
 							<div th:each="goods, status : ${goodsList}" class="swiper-slide swiper-slide-active" style="width: 150px; margin-right: 20px;">
 								<div class="item_prod">
 									<div class="item_state">
-										<a href="#none" class="itemLink">
+										<a th:href="|javascript:fnGoToGoodsDetail('${goods.goodsCd}')|" class="itemLink">
 											<div class="itemPic">
 												<img class="vLHTC pd_img" th:src="${imgGoodsUrl} + '/' + ${goods.sysImgNm} + '?RS=150'" src="/" width="100%" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'"  th:alt="${goods.sysImgNm}" alt="">
 											</div>
@@ -89,8 +89,6 @@
 				xhr.setRequestHeader('Content-Type'	, 'application/json');
 			},
 			success 	: function(result) {
-				alert(result.goodsCd + " / " + result.optCd);
-
 				let compsList = [];
 				let temp 			= new Object;
 				temp.goodsCd 		= goodsCd;

+ 20 - 13
src/main/webapp/ux/style24_link.js

@@ -268,20 +268,27 @@ function cfnAddCart(cartList) {
 		success : function(result) {
 			if(result.message == "SUCCESS") {
 				if(result.cartGb == "C") {
-					mcxDialog.confirm("<div class="+"dialog-title"+">"+"상품이 쇼핑백에 추가되었습니다.</div><p>쇼핑백으로 이동하시겠습니까?</p>", {
-						cancelBtnText: "계속 쇼핑하기",
-						sureBtnText: "쇼핑백 가기",
-						sureBtnClick: function(){
-							location.href='/cart/list/form'; 	//내 쇼핑백 이동url
+					// 룩북 및 이벤트 페이지에서 여러 타입의 상품이 들어 올 수 있음. 반복문으로 들어오므로 cartList[0].multiGoodsGb == O면 confirm 창 안띄움.
+					// 일반적인 장바구니 담기를 위해 공백이나 O가 아닌 값일때 confirm 처리
+					if(!(cartList != null && cartList[0].multiGoodsGb != null && cartList[0].multiGoodsGb == "O")) {
+						mcxDialog.confirm("<div class=" + "dialog-title" + ">" + "상품이 쇼핑백에 추가되었습니다.</div><p>쇼핑백으로 이동하시겠습니까?</p>", {
+							cancelBtnText: "계속 쇼핑하기",
+							sureBtnText  : "쇼핑백 가기",
+							sureBtnClick : function () {
+								location.href = '/cart/list/form'; 	//내 쇼핑백 이동url
+							}
+						});
+						
+						// PC버전에서만 동작해야함(퀵메뉴)
+						if (navigator.userAgent.indexOf('Mobile') == -1) {
+							fnGetCartGoodsList();
+						}
+						
+						// 장바구니 팝업에서
+						if (cartList != null && cartList[0].popupYn != null && cartList[0].popupYn == "Y") {
+							let data = {shotDelvUseYn: $("input[name=shotDelvUseYn]:checked").val()};
+							getCartList(data);
 						}
-					});
-					
-					fnGetCartGoodsList();
-					
-					// 장바구니 팝업에서
-					if(cartList != null && cartList[0].popupYn != null && cartList[0].popupYn == "Y") {
-						let data = {shotDelvUseYn : $("input[name=shotDelvUseYn]:checked").val()};
-						getCartList(data);
 					}
 				} else if (result.cartGb == "O"){
 					let orderHtml = "";