Forráskód Böngészése

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

xodud1202 5 éve
szülő
commit
98bcb32370

+ 28 - 7
src/main/java/com/style24/front/biz/service/TsfCartService.java

@@ -325,9 +325,10 @@ public class TsfCartService {
 		Collection<Order> tmtbApplyList = cartDao.selectMoreBetterApplyCartList(param);
 
 		// 장바구니 등록 다다익선 일련번호 지정
-		List<Integer> applySq = new ArrayList<Integer>();
-		List<Integer> qtyApplySq = new ArrayList<Integer>();
-		List<Integer> amtApplySq = new ArrayList<Integer>();
+		List<Integer> applySq 		= new ArrayList<Integer>();
+		List<Integer> qtyApplySq	= new ArrayList<Integer>();
+		List<Integer> amtApplySq 	= new ArrayList<Integer>();
+		
 		for(Order tmtbApply : tmtbApplyList) {
 			if(TscConstants.GoodsGb.BASE.value().equals(tmtbApply.getQtyGoodsGb()) || TscConstants.GoodsGb.BASE.value().equals(tmtbApply.getAmtGoodsGb())) {
 				if(TscConstants.GoodsGb.BASE.value().equals(tmtbApply.getQtyGoodsGb())) {
@@ -394,10 +395,12 @@ public class TsfCartService {
 		int i = 0;
 
 		for(Order resultAmt : tmtbApplyList) {
+			int tempAmt  = 0;
+			
 			if("Y".equals(resultAmt.getApplyQtySectionYn()) && resultAmt.getQtyTmtbSq() > 0) {
 				if (TscConstants.DcWay.AMT.value().equals(resultAmt.getQtyDcWay())) {        // 할인 방식 금액일경우
 					i++;
-					int tempAmt = resultAmt.getCurrPrice();
+					tempAmt = resultAmt.getCurrPrice();
 
 					if (i == 1) {
 						leftAmt = resultAmt.getQtyDcVal();
@@ -405,17 +408,23 @@ public class TsfCartService {
 
 					if (i == resultAmt.getQtyTmtbCnt()) {
 						resultAmt.setTmtbDcAmt(tempAmt - leftAmt);
+						resultAmt.setTmtb1DcAmt(leftAmt); // tmtb1 할인금액
 						leftAmt = 0;
 						i = 0;
 					} else {
 						double tempDcAmt = resultAmt.getQtyDcVal() * ((tempAmt) / (double)resultAmt.getQtyTmtbSumAmt());
 						leftAmt -= (int)tempDcAmt;
 						resultAmt.setTmtbDcAmt(tempAmt - (int)tempDcAmt);
+						
+						resultAmt.setTmtb1DcAmt(tempAmt - resultAmt.getTmtbDcAmt()); // tmtb1 할인금액
 					}
 				} else {                                                                // 할인 방식 할인율일 경우
-					int tempAmt = resultAmt.getCurrPrice();
+					tempAmt = resultAmt.getCurrPrice();
+					
 					tempAmt = (int) (tempAmt - (tempAmt * (resultAmt.getQtyDcVal() / 100.0)));
 					resultAmt.setTmtbDcAmt(tempAmt);
+					
+					resultAmt.setTmtb1DcAmt((int) (tempAmt * (resultAmt.getQtyDcVal() / 100.0))); // tmtb1 할인금액
 				}
 			}
 
@@ -436,27 +445,35 @@ public class TsfCartService {
 		leftAmt = 0;
 		i = 0;
 		for(Order resultAmt : tmtbApplyList) {
+			int tempAmt  = 0;
+			
 			if("Y".equals(resultAmt.getApplyAmtSectionYn()) && resultAmt.getAmtTmtbSq() > 0) {
 				if (TscConstants.DcWay.AMT.value().equals(resultAmt.getAmtDcWay())) {        // 할인 방식 금액일경우
 					i++;
-					int tempAmt = resultAmt.getCurrPrice();
+					tempAmt = resultAmt.getCurrPrice();
 					if (i == 1) {
 						leftAmt = resultAmt.getAmtDcVal();
 					}
 
 					if (i == resultAmt.getAmtTmtbCnt()) {
 						resultAmt.setTmtbDcAmt(tempAmt - leftAmt);
+						resultAmt.setTmtb2DcAmt(leftAmt); // tmtb1 할인금액
+						
 						leftAmt = 0;
 						i = 0;
 					} else {
 						double tempDcAmt = resultAmt.getAmtDcVal() * ((tempAmt) / (double)resultAmt.getAmtTmtbSumAmt());
 						leftAmt -= (int)tempDcAmt;
 						resultAmt.setTmtbDcAmt(tempAmt - (int)tempDcAmt);
+						
+						resultAmt.setTmtb2DcAmt(tempAmt - resultAmt.getTmtbDcAmt()); // tmtb1 할인금액
 					}
 				} else {                                                                // 할인 방식 할인율일 경우
-					int tempAmt = resultAmt.getCurrPrice();
+					tempAmt = resultAmt.getCurrPrice();
 					tempAmt = (int) (tempAmt - (tempAmt * (resultAmt.getAmtDcVal() / 100.0)));
 					resultAmt.setTmtbDcAmt(tempAmt);
+					
+					resultAmt.setTmtb2DcAmt((int) (resultAmt.getCurrPrice() * (resultAmt.getAmtDcVal() / 100.0))); // tmtb1 할인금액
 				}
 			}
 		}
@@ -465,6 +482,10 @@ public class TsfCartService {
 		for (Order cart : cartGoodsList) {
 			for (Order apply : tmtbApplyList) {
 				if (cart.getCartSq() == apply.getCartSq()) {
+					// 2021.02.24 jsh77b
+					cart.setTmtb1DcAmt(apply.getTmtb1DcAmt());
+					cart.setTmtb2DcAmt(apply.getTmtb2DcAmt());
+					
 					cart.setTmtbDcAmt(apply.getTmtbDcAmt());
 					cart.setApplyQtySectionYn(apply.getApplyQtySectionYn());
 					cart.setQtyTmtbNm(apply.getQtyTmtbNm());

+ 12 - 11
src/main/java/com/style24/front/biz/web/TsfOrderController.java

@@ -65,14 +65,14 @@ public class TsfOrderController extends TsfBaseController {
 		
 		// TODO 임시 장바구니
 		// 2. 장바구니시퀀스 배열 등록 (장바구니 상품 정보 조회)
-		int[] arr = {14,15,16,17,18,19,20,21,11,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,8,77};
+		int[] arr = {11,77,8};
 		order.setCartSqArr(arr);
 		order.setShotDelvYn("Y");
 		
 		mav.addObject("order" 	, order);										// 주문정보
 		mav.addObject("isLogin"	, TsfSession.isLogin());						// 로그인여부
 		mav.setViewName(super.getDeviceViewName("order/OrderNoMember"));		// 비회원주문서화면
-		
+
 		return mav;
 	}
 	
@@ -106,13 +106,11 @@ public class TsfOrderController extends TsfBaseController {
 			order.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
 		}
 		
-		// 임시
-		//order.setCustNo(1000006); // 고객번호등록
-		
 		// TODO
 		// 1.1 카트시퀀스가 없을때 처리 장바구니로 이동 
 		if (order.getCartSqArr() == null) {
-			
+			mav.setViewName("redirect:/order/noMember");		// 비회원주문서화면
+			return mav;
 		}
 		
 		Order custemerInfo = new Order();
@@ -153,10 +151,8 @@ public class TsfOrderController extends TsfBaseController {
 		// 2.1 배송단위별 상품 목록 조회 (장바구니)
 		Collection<Order> tmtbGoodsApplyList = cartService.getMoreBetterAmtList(order);
 		
-		int prePntDcAmt = 0;
-		for (Order tmtbGoodsApply : tmtbGoodsApplyList) {
-			prePntDcAmt += tmtbGoodsApply.getPrePntDcAmt();
-		}
+		// 상품금액, 선포인트, 다다익선할인금액
+		GagaMap goodsDcAmtMap = coreOrderService.getGoodsDcAmt(tmtbGoodsApplyList);
 		
 		// 2.2 배송단위별 장바구니 상품 건수 조회 (장바구니상품)
 		GagaMap delvOrderMap = coreOrderService.getCartDelvGoodsCntList(tmtbGoodsApplyList);
@@ -171,6 +167,8 @@ public class TsfOrderController extends TsfBaseController {
 		// 3.2.1 상품기준 ---> 상품쿠폰 적용된 상품 목록
 		Collection<Order> goodsApplyCpnList = coreOrderService.getGoodsCpnApplyList(tmtbGoodsApplyList, goodsCpnList);
 		
+		//cartCpnList = coreOrderService.getGoodsCpnApplyList(tmtbGoodsApplyList, cartCpnList);
+		
 		// 3.3 배송비쿠폰목록 조회
 		Collection<Order> delvCpnList = coreOrderService.getDelvCpnList(order);
 		
@@ -194,6 +192,7 @@ public class TsfOrderController extends TsfBaseController {
 		mav.addObject("wmsCartList" 					, delvOrderMap.get("wmsCartList"));		// 자사장바구니상품목록
 		mav.addObject("resCartList" 					, delvOrderMap.get("resCartList"));		// 자사장바구니예약상품목
 		mav.addObject("delvCartList" 					, delvOrderMap.get("delvCartList"));	// 입점업체장바구니상품목록
+		mav.addObject("sumDelvFee" 						, delvOrderMap.get("sumDelvFee"));		// 배송비합계
 		
 		// 102. 고객정보
 		mav.addObject("custemerInfo"					, custemerInfo);						// 고객정보
@@ -205,7 +204,9 @@ public class TsfOrderController extends TsfBaseController {
 		mav.addObject("goodsApplyCpnList"				, goodsApplyCpnList);					// 상품적용쿠폰
 		mav.addObject("cartCpnList"						, cartCpnList);							// 장바구니쿠폰목록
 		mav.addObject("delvCpnList"						, delvCpnList);							// 배송비쿠폰목록
-		mav.addObject("prePntDcAmt"						, prePntDcAmt);							// 선포인트정보
+		mav.addObject("prePntDcAmt"						, goodsDcAmtMap.get("prePntDcAmt"));	// 선포인트정보
+		mav.addObject("goodsSumAmt"						, goodsDcAmtMap.get("goodsSumAmt"));	// 상품금액합계
+		mav.addObject("tmtbDcSumAmt"					, goodsDcAmtMap.get("tmtbDcSumAmt"));	// 다다익선할인금액합계
 		mav.addObject("rmPntAmt"						, rmPntAmt);							// 고객포인트정보
 		mav.addObject("rmGfcdAmt"						, rmGfcdAmt);							// 고객상품권정보
 		

+ 225 - 104
src/main/webapp/WEB-INF/views/web/order/OrderFormWeb.html

@@ -23,13 +23,6 @@
 <script type="text/javascript" src="/ux/pc/js/slick.min.js"></script>
 <script type="text/javascript" src="/ux/pc/js/jquery-ui.js"></script>
 
-<!-- 
-<script type="text/javascript" src="https://code.jquery.com/jquery-1.11.0.min.js"></script>
-<script type="text/javascript" src="https://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
-<script type="text/javascript" src="/ux/pc/js/jquery.modal.min.js"></script>
-<script type="text/javascript" src="/ux/pc/js/common-ui.js"></script>
- -->
-
 <!--  container -->
 <form id="payForm" name="payForm">
 	<input type="hidden" name="delvMemo" th:value="${deliveryAddrInfo.delvMemo}">
@@ -369,7 +362,6 @@
 																									<div class="brand" th:text="${goods.brandEnm}+' '+${goods.brandKnm}"></div>
 																									<div class="name" th:text="${goods.goodsNm}"></div>
 																									<div class="price">
-																										<span th:text="${goods.goodsCd}"></span>
 																										<th:block th:if="${goods.tmtbDcAmt} > 0">
 																											<span class="selling_price"  th:text="${#numbers.formatInteger(goods.tmtbDcAmt, 1, 'COMMA')}"></span>
 																										</th:block>
@@ -380,21 +372,26 @@
 																								</figcaption>
 																							</figure>
 																						</div>
-																						
+																						 
 																						<div class="form_field">
-																							<select class="select_hidden cpnSelect">
-																								<option value="">선택안함</option>
-																								<th:block th:each="goodsCpn, k : ${goods.goodsCpnList}">
-																									<option th:value="${goodsCpn.cpnId}" th:text="${goodsCpn.cpnId}+'|'+${goodsCpn.cpnNm}+'|'+${goodsCpn.cpnDcAmt}"></option>
-																								</th:block>
-																							</select>
+																							<div class="select_custom type1">
+																								<div class="combo">
+																									<input type="hidden" name="custCpnSq" value="0"/>
+																									<input type="hidden" name="cpnDcAmt" value="0"/>
+																									
+																									<div class="select">선택없음</div>
+																									<ul class="list">
+																										<li value="0">선택없음</li>
+																										<th:block th:each="goodsCpn, k : ${goods.goodsCpnList}">
+																											<li th:value="${goodsCpn.custCpnSq}" th:data="${goodsCpn.cpnDcAmt}" th:text="${goodsCpn.cpnNm}"></li>
+																										</th:block>
+																									</ul>
+																								</div>
+																							</div>
 																						</div>
-	
-																						<div class="cp_discount">
-																							<span class="cp_amount">-10,000원 할인적용</span>
-																							<button type="button" class="btn_del_coupon" id="">
-																								<span>쿠폰적용해제</span>
-																							</button>
+																						<div class="cp_discount" style="display:none;">
+																							<span class="cp_amount"></span>
+																							<button type="button" class="btn_del_coupon"><span>쿠폰적용해제</span></button>
 																						</div>
 																					</div>
 																				</li>
@@ -407,19 +404,24 @@
 																			<li>
 																				<div class="coupon">
 																					<div class="form_field">
-																						<label for="">장바구니 할인쿠폰</label> 
-																						<select class="select_hidden">
-																							<option value="">선택안함</option>
-																							<th:block th:each="cartCpn, k : ${cartCpnList}">
-																								<option th:value="${cartCpn.cpnId}" th:text="${cartCpn.cpnId}+'|'+${cartCpn.cpnNm}"></option>
-																							</th:block>
-																						</select>
+																						<div class="select_custom type1">
+																							<div class="combo">
+																								<input type="hidden" name="custCpnSq" value="0"/>
+																								<input type="hidden" name="cpnDcAmt" value="0"/>
+																								
+																								<div class="select">선택없음</div>
+																								<ul class="list">
+																									<li value="0">선택없음</li>
+																									<th:block th:each="cartCpn, k : ${cartCpnList}">
+																										<li th:value="${cartCpn.custCpnSq}" th:data="${cartCpn.cpnDcAmt}" th:text="${cartCpn.cpnNm}"></li>
+																									</th:block>
+																								</ul>
+																							</div>
+																						</div>
 																					</div>
 																					<div class="cp_discount">
-																						<span class="cp_amount">-10,000원 할인적용</span>
-																						<button type="button" class="btn_del_coupon" id="">
-																							<span>쿠폰적용해제</span>
-																						</button>
+																						<span class="cp_amount"></span>
+																						<button type="button" class="btn_del_coupon"><span>쿠폰적용해제</span></button>
 																					</div>
 																				</div>
 																			</li>
@@ -431,18 +433,24 @@
 																			<li>
 																				<div class="coupon">
 																					<div class="form_field">
-																						<label for="">배송비 할인쿠폰</label> 
-																						<select id="" class="select_hidden">
-																							<th:block th:each="delvCpn, k : ${delvCpnList}">
-																								<option th:value="${delvCpn.cpnId}" th:text="${delvCpn.cpnNm}"></option>
-																							</th:block>
-																						</select>
+																						<div class="select_custom type1">
+																							<div class="combo">
+																								<input type="hidden" name="custCpnSq" value="0"/>
+																								<input type="hidden" name="cpnDcAmt" value="0"/>
+																								
+																								<div class="select" value="0">선택없음</div>
+																								<ul class="list">
+																									<li value="0">선택없음</li>
+																									<th:block th:each="delvCpn, k : ${delvCpnList}">
+																										<li th:value="${delvCpn.custCpnSq}" th:data="${delvCpn.cpnDcAmt}" th:text="${delvCpn.cpnNm}"></li>
+																									</th:block>
+																								</ul>
+																							</div>
+																						</div>
 																					</div>
 																					<div class="cp_discount">
-																						<span class="cp_amount">-10,000원 할인적용</span>
-																						<button type="button" class="btn_del_coupon" id="">
-																							<span>쿠폰적용해제</span>
-																						</button>
+																						<span class="cp_amount"></span>
+																						<button type="button" class="btn_del_coupon"><span>쿠폰적용해제</span></button>
 																					</div>
 																				</div>
 																			</li>
@@ -457,22 +465,24 @@
 												
 												<div class="area_selpoint">
 													<dl>
-														<div>
-															<dt>선 포인트 사용</dt>
-															<dd>
-																<div class="form_field">
-																	<div>
-																		<input type="radio" name="rdi-beforpoint" id="rdi-beforpoint1" value="" checked=""> 
-																		<label for="rdi-beforpoint1"><span>사용 안함</span></label>
-																	</div>
-																	<div>
-																		<input type="radio" name="rdi-beforpoint" id="rdi-beforpoint2" value=""> 
-																		<label for="rdi-beforpoint2"><span>사용함</span></label> 
-																		<span class="remain_point" th:text="|사용가능 포인트 : ${#numbers.formatInteger(prePntDcAmt, 1, 'COMMA')} P|">사용가능 포인트:1,500P</span>
+														<th:block th:if="${prePntDcAmt} > 0">
+															<div>
+																<dt>선 포인트 사용</dt>
+																<dd>
+																	<div class="form_field">
+																		<div>
+																			<input type="radio" name="rdi-beforpoint" id="rdi-beforpoint1"> 
+																			<label for="rdi-beforpoint1"><span>사용 안함</span></label>
+																		</div>
+																		<div>
+																			<input type="radio" name="rdi-beforpoint" id="rdi-beforpoint2"> 
+																			<label for="rdi-beforpoint2"><span>사용함</span></label> 
+																			<span class="remain_point" th:text="|사용가능 포인트 : ${#numbers.formatInteger(prePntDcAmt, 1, 'COMMA')} P|"></span>
+																		</div>
 																	</div>
-																</div>
-															</dd>
-														</div>
+																</dd>
+															</div>
+														</th:block>
 														<div>
 															<dt>
 																<span class="mid">스타일 포인트</span>
@@ -480,19 +490,22 @@
 															<dd>
 																<div class="form_field">
 																	<!-- 스타일 포인트 3만원 이상 결제시 노출 -->
-																	<div class="input_wrap">
-																		<input type="text" class="form_control" maxlength="" placeholder="사용할 포인트를 입력해주세요.">
-																		<button type="button" class="btn btn_dark">적용</button>
-																	</div>
+																	<th:block th:if="${goodsSumAmt} >= 30000">
+																		<div class="input_wrap">
+																			<input type="text" class="form_control" maxlength="" placeholder="사용할 포인트를 입력해주세요.">
+																			<button type="button" class="btn btn_dark">적용</button>
+																		</div>
+																	</th:block>
 																	<!-- 스타일 포인트 3만원 이상 결제시 노출 -->
 																	
 																	<!-- 스타일 포인트 3만원 미만 결제시 노출 -->
-																	<div class="input_wrap">
-																		<input type="text" class="form_control" maxlength="" placeholder="3만원 이상 결제시에만 포인트 사용이 가능합니다." disabled>
-																		<button type="button" class="btn btn_dark">적용</button>
-																	</div>
-																	<!-- //스타일 포인트 3만원 미만 결제시 노출 -->
-																	<p><span class="remain_point" th:text="|보유 : ${#numbers.formatInteger(rmPntAmt, 1, 'COMMA')} P|"></span>(결제금액의 최대 40%까지 사용가능)</p>
+																	<th:block th:if="${goodsSumAmt} < 30000">
+																		<div class="input_wrap">
+																			<input type="text" class="form_control" maxlength="" placeholder="3만원 이상 결제시에만 포인트 사용이 가능합니다." disabled>
+																		</div>
+																		<!-- //스타일 포인트 3만원 미만 결제시 노출 -->
+																		<p><span class="remain_point" th:text="|보유 : ${#numbers.formatInteger(rmPntAmt, 1, 'COMMA')} P|"></span>(결제금액의 최대 40%까지 사용가능)</p>
+																	</th:block>
 																</div>
 															</dd>
 														</div>
@@ -797,6 +810,41 @@
 											<div class="gd_list">
 												<th:block th:each="goods, i : ${wmsCartList}">
 													<div class="item_gd">
+														<input type="text" name="cartSq" 			th:value="${goods.cartSq}"/>
+														<input type="text" name="goodscd" 			th:value="${goods.goodsCd}"/>
+														<input type="text" name="ordQty" 			th:value="${goods.goodsQty}"/>
+														<input type="text" name="itemCd" 			th:value="${goods.itemCd}"/>
+														<input type="text" name="optCd" 			th:value="${goods.optCd}"/>
+														<input type="text" name="optCd1" 			th:value="${goods.optCd1}"/>
+														<input type="text" name="optCd2" 			th:value="${goods.optCd2}"/>
+														
+														<input type="text" name="currPrice" 		th:value="${goods.orgCurrPrice}"/>
+														<input type="text" name="cpn1CpnSq" 		th:value="${goods.cpn1CpnSq}"/>
+														<input type="text" name="cpn1DcAmt" 		th:value="${goods.orgCurrPrice} - ${goods.currPrice}"/>
+														
+														<th:block th:if="${goods.applyQtySectionYn} == 'Y' and ${goods.qtyTmtbSq} > 0">
+															<input type="text" name="tmtb1Sq" 		th:value="${goods.qtyTmtbSq}"/>
+															<input type="text" name="tmtb1DcAmt" 	th:value="${goods.tmtb1DcAmt}"/>
+														</th:block>
+														<th:block th:if="${goods.applyQtySectionYn} != 'Y'">
+															<input type="text" name="tmtb1Sq" 		value="0"/>
+															<input type="text" name="tmtb1DcAmt" 	value="0"/>
+														</th:block>
+														
+														<th:block th:if="${goods.applyAmtSectionYn} == 'Y' and ${goods.amtTmtbSq} > 0">
+															<input type="text" name="tmtb2Sq" 		th:value="${goods.amtTmtbSq}"/>
+															<input type="text" name="tmtb2DcAmt" 	th:value="${goods.tmtb2DcAmt}"/>
+														</th:block>
+														<th:block th:if="${goods.applyAmtSectionYn} != 'Y'">
+															<input type="text" name="tmtb2Sq" 		value="0"/>
+															<input type="text" name="tmtb2DcAmt" 	value="0"/>
+														</th:block>
+														
+														<input type="text" name="goodsCpnSq" 		value=""/>
+														<input type="text" name="goodsCpnDcAmt" 	value=""/>
+														<input type="text" name="cartCpnSq" 		value=""/>
+														<input type="text" name="cartCpnDcAmt" 		value=""/>
+														
 														<figure>
 															<span class="thumb"><img src="/images/pc/thumb/tmp_odSide1.jpg" alt=""></span>
 															<figcaption>
@@ -898,35 +946,35 @@
 									<dl>
 										<div>
 											<dt>상품금액</dt>
-											<dd id="goodsSumAmt">1,590,000 원</dd>
+											<dd id="goodsSumAmt" th:text="|${#numbers.formatInteger(goodsSumAmt, 1, 'COMMA')}원|"></dd>
 										</div>
 										<div>
 											<dt>배송비</dt>
-											<dd id="delvSumAmt">0원</dd>
+											<dd id="delvSumAmt" th:text="|${#numbers.formatInteger(sumDelvFee, 1, 'COMMA')}원|"></dd>
 										</div>
 										<div>
 											<dt>할인금액</dt>
-											<dd><span class="disc_amount" id="goodsDcSumAmt">-1,746,500원</span></dd>
+											<dd><span class="disc_amount" id="goodsDcSumAmt"></span></dd>
 										</div>
 										<div>
 											<dt>다다익선할인금액</dt>
-											<dd><span class="disc_amount" id="tmtbDcSumAmt">25,000원</span></dd>
+											<dd><span class="disc_amount" id="tmtbDcSumAmt" th:text="|${#numbers.formatInteger(tmtbDcSumAmt, 1, 'COMMA')}원|"></span></dd>
 										</div>
 										<div>
 											<dt>쿠폰할인금액</dt>
-											<dd><span class="disc_amount" id="couponDcSumAmt">3,000원</span></dd>
+											<dd><span class="disc_amount" id="couponDcSumAmt"></span></dd>
 										</div>
 										<div>
 											<dt>선포인트 사용</dt>
-											<dd><span class="disc_amount" id="prePntDcSumAmt">-1,500P</span></dd>
+											<dd><span class="disc_amount" id="prePntDcSumAmt"></span></dd>
 										</div>
 										<div>
 											<dt>포인트 사용</dt>
-											<dd><span class="disc_amount" id="pntDcSumAmt">-5,500P</span></dd>
+											<dd><span class="disc_amount" id="pntDcSumAmt"></span></dd>
 										</div>
 										<div>
 											<dt>상품권 사용</dt>
-											<dd><span class="disc_amount" id="gfcdUseSumAmt">-50,000원</span></dd>
+											<dd><span class="disc_amount" id="gfcdUseSumAmt"></span></dd>
 										</div>
 									</dl>
 								</div>
@@ -1215,24 +1263,13 @@ $(document).ready( function() {
 			}
 		)
 	}
-	
-	// 상품금액, 배송비, 할인금액, 다다익선할인금액, 쿠폰할인금액, 선포인트사용, 포인트사용, 상품권사용
-	var goodsSumAmt = 0;
-	var tmtbDcSumAmt = 0;
-	
-	var cartGoodsAmtList = function() {
-		for (i=0 ; i<cartGoodsList.length ; i++) {
-			var obj = cartGoodsList[i];
-			
-			goodsSumAmt = goodsSumAmt + obj.currPrice;
-			tmtbDcSumAmt = tmtbDcSumAmt + (obj.currPrice - obj.tmtbDcAmt);
-		}
-		$("#goodsSumAmt").text(goodsSumAmt.addComma() + "원");
-		$("#tmtbDcSumAmt").text("-" + tmtbDcSumAmt.addComma() + "원");
-	} 
+
 </script>
 
 <script th:inline="javascript">
+	var custCpnSq 	= 0;
+	var cpnIndex	= 0;
+	
 	// 컨텐츠 호출
 	$(document).ready( function() {
 		// 1. 총알배송가능 지역, 총알배송 가능 시간 체크
@@ -1253,25 +1290,109 @@ $(document).ready( function() {
 		if (resCnt > 0) {
 			$("#resDelvArea").css("display", "block");
 		}
-		
-		// 3. 최적의 할인으로 쿠폰 설정
-		//$(".cpnSelect option:eq(1)").attr("selected", "selected");
-		/*
-		$(".cpnSelect").each(function(i){
-			//$(this).find("option:eq(1)").attr("selected", "selected");
+
+		// 3. 쿠폰 SELECT BOX 설정
+		$('.select_custom.type1').each(function(index){
+			var selecter01 	= new sCombo($(this));
+			var cpnIndex 	= 0;
+			
+			// select 박스 반복문 실행
+			$(this).find("ul li").each(function(i){
+				cpnIndex++;
+				
+				// 1이상부터 중복 체크
+				if (cpnIndex > 1) {
+					if (cpnDuplicationCheck($(this).prop("value"), index)) {
+						// 쿠폰적용
+						custCpnApply($(this));
+					}
+				}
+				
+				// SELECT BOX 버튼 기능 설정
+				$(this).on("click", function(){
+					// 선택없음
+					if ($(this).prop("value") == 0) {
+						$(this).parent().parent().find("input[name='custCpnSq']").val("0");
+						$(this).parent().parent().find("input[name='cpnDcAmt']").val("0");
+						
+						$(this).parent().parent().find(".select").text("선택없음");
+						$(this).parent().parent().parent().parent().parent().find(".cp_discount").css("display", "none");
+					} else {
+						// 쿠폰중복체크 후 적용
+						if (cpnDuplicationCheck($(this).prop("value"), index)) {
+							// 쿠폰적용
+							custCpnApply($(this));
+						} else {
+							alert("이미 적용된 쿠폰 입니다.");
+							
+							// 쿠폰적용불가
+							custCpnNotApply($(this));
+						}
+					}
+				});
+			});
 		});
-		*/
+	});
+	
+	// 쿠폰중복사용체크
+	var cpnDuplicationCheck = function(custCpnSq, index) {
+		var selCustSq 	= 0;
+		var cnt 		= 0;
 
-		$(".cpnSelect").on("change", function(){
-			alert($(this).val());
+		// 쿠폰중본사용체크
+		$("input[name='custCpnSq']").each(function(i){
+			if (index != i) {
+				selCustSq = $(this).val();
+				if (selCustSq == custCpnSq) {
+					cnt++;
+				}
+			}
 		});
 		
-		$(".select_dress").on("click", function() {
-			alert($("this").text());	
-		});
+		// 쿠폰적용불가
+		if (cnt > 0) {
+			return false;
+		}
+		// 쿠폰적용가능
+		else {
+			return true;
+		}
+	}
+	
+	// 쿠폰중복체크 후 적용가능
+	var custCpnApply = function(obj) {
+		// 적용된 할인금액 text 설정 
+		var dcAmtStr = "- " + parseInt(obj.attr("data")).addComma() + " 원 할인적용";
+		obj.parent().parent().parent().parent().parent().find(".cp_amount").text(dcAmtStr);
 		
-		cartGoodsAmtList();
-	});
+		// select box 쿠폰 적용
+		obj.parent().parent().find("input[name='custCpnSq']").val(obj.prop("value"));
+		obj.parent().parent().find("input[name='cpnDcAmt']").val(obj.attr("data"));
+		
+		obj.parent().parent().find(".select").text(obj.text());
+		
+		// 선택된 할인금액 노출
+		obj.parent().parent().parent().parent().parent().find(".cp_discount").css("display", "block");
+	}
+	
+	// 쿠폰중복체크 후 적용불가
+	var custCpnNotApply = function(obj) {
+		// 이전에 등록된 쿠폰시퀀스  
+		var custCpnSq = obj.parent().parent().find("input[name='custCpnSq']").val();
+		
+		// 이전에 등록된 쿠폰시퀀스 비교후 데이타 원복
+		obj.parent().find("li").each(function(){
+			if ($(this).prop("value") == custCpnSq) {
+				$(this).parent().parent().find(".select").text($(this).text());
+				
+				if (custCpnSq == 0) {
+					$(this).parent().parent().parent().parent().parent().find(".cp_discount").css("display", "none");
+				} else {
+					$(this).parent().parent().parent().parent().parent().find(".cp_discount").css("display", "block");
+				}
+			}
+		});
+	}
 	
 	// 사은품선택 라디오 버튼 기능
 	$(".freegiftRdo").on("click", function() {

+ 134 - 129
src/main/webapp/WEB-INF/views/web/order/OrderNoMemberWeb.html

@@ -19,157 +19,162 @@
 <body>
 
 <th:block layout:fragment="content">
-<div class="wrap">
-	<div class="content nonMBorder">
-		<!-- 페이지특정 클래스 = nonMBorder -->
-		<div class="cont_head">
-			<h2 class="t_c mb60">비회원 주문하기</h2>
-		</div>
-		<div class="cont_body">
-			<form id="orderForm" name="orderForm" class="form_wrap form_col_c form_full" action="#" th:action="@{'/order/form'}" th:method="post">
-				<input type="hidden" name="shotDelvYn" th:value="${order.shotDelvYn}" /><!-- 장바구니화면 총알배송여부 -->
-				<!-- 장바구니화면 시퀀스 배열 등록 -->
-				<th:block th:each="cartSq , index : ${order.cartSqArr}">
-					<input type="hidden" name="cartSqArr" th:value="${cartSq}" />
-				</th:block>
-				
-				<div class="form_head">
-					<p>
-						비회원 주문을 위한 주문자 정보 입력 및 개인정보 수집/이용 동의에<br>체크하신 후 주문을 완료하실 수
-						있습니다.
-					</p>
+<form id="orderForm" name="orderForm" class="form_wrap form_col_c form_full" action="#" th:action="@{'/order/form'}" th:method="post">
+	<input type="hidden" name="shotDelvYn" th:value="${order.shotDelvYn}" /><!-- 장바구니화면 총알배송여부 -->
+	<!-- 장바구니화면 시퀀스 배열 등록 -->
+	<th:block th:each="cartSq , index : ${order.cartSqArr}">
+		<input type="hidden" name="cartSqArr" th:value="${cartSq}" />
+	</th:block>
+	
+	<!-- 회원 -->
+	<th:block th:if="${isLogin} == true">
+		<script>$("#orderForm").submit();</script>
+	</th:block>
+	
+	<!-- <span th:text="${isLogin}"></span> -->
+	
+	<!-- 비회원 -->
+	<th:block th:if="${isLogin} == 'false'">
+		<div class="wrap">
+			<div class="content nonMBorder">
+				<!-- 페이지특정 클래스 = nonMBorder -->
+				<div class="cont_head">
+					<h2 class="t_c mb60">비회원 주문하기</h2>
 				</div>
-				
-				<div class="form_field">
-					<label class="input_label sr-only">이름(주문자명)</label>
-					<div class="ui_col_12">
-						<div class="input_wrap">
-							<input type="text" name="custNm" id="custNm" placeholder="이름(주문자명)">
+				<div class="cont_body">
+					<div class="form_head">
+						<p>
+							비회원 주문을 위한 주문자 정보 입력 및 개인정보 수집/이용 동의에<br>체크하신 후 주문을 완료하실 수
+							있습니다.
+						</p>
+					</div>
+					
+					<div class="form_field">
+						<label class="input_label sr-only">이름(주문자명)</label>
+						<div class="ui_col_12">
+							<div class="input_wrap">
+								<input type="text" name="custNm" id="custNm" placeholder="이름(주문자명)">
+							</div>
 						</div>
 					</div>
-				</div>
-				<div class="form_field">
-					<label class="input_label sr-only">휴대폰 번호</label>
-					<div class="ui_col_12">
-						<div class="input_wrap">
-							<input type="text" name="cellPhnno" id="cellPhnno" placeholder="휴대폰 번호">
+					<div class="form_field">
+						<label class="input_label sr-only">휴대폰 번호</label>
+						<div class="ui_col_12">
+							<div class="input_wrap">
+								<input type="text" name="cellPhnno" id="cellPhnno" placeholder="휴대폰 번호">
+							</div>
 						</div>
 					</div>
-				</div>
-				<div class="form_field">
-					<label class="input_label sr-only">이메일주소</label>
-					<div class="ui_col_12">
-						<div class="input_wrap">
-							<input type="text" name="email" id="email" placeholder="이메일주소">
+					<div class="form_field">
+						<label class="input_label sr-only">이메일주소</label>
+						<div class="ui_col_12">
+							<div class="input_wrap">
+								<input type="text" name="email" id="email" placeholder="이메일주소">
+							</div>
 						</div>
 					</div>
-				</div>
-				<div class="form_field">
-					<label class="input_label sr-only">배송주소 우편번호</label>
-					<div class="ui_col_12">
-						<div class="input_wrap" style="display: flex;">
-							<input type="text" name="recipZipcode" id="recipZipcode" placeholder="우편번호">
-							<button type="submit" class="btn btn_default">우편번호 찾기</button>
+					<div class="form_field">
+						<label class="input_label sr-only">배송주소 우편번호</label>
+						<div class="ui_col_12">
+							<div class="input_wrap" style="display: flex;">
+								<input type="text" name="recipZipcode" id="recipZipcode" placeholder="우편번호">
+								<button type="submit" class="btn btn_default">우편번호 찾기</button>
+							</div>
 						</div>
 					</div>
-				</div>
-				<br>
-				<div class="form_field">
-					<label class="input_label sr-only">배송주소 기본주소</label>
-					<div class="ui_col_12">
-						<input type="text" name="recipBaseAddr" id="recipBaseAddr" placeholder="기본주소">
+					<br>
+					<div class="form_field">
+						<label class="input_label sr-only">배송주소 기본주소</label>
+						<div class="ui_col_12">
+							<input type="text" name="recipBaseAddr" id="recipBaseAddr" placeholder="기본주소">
+						</div>
 					</div>
-				</div>
-				<div class="form_field">
-					<label class="input_label sr-only">배송주소 상세주소</label>
-					<div class="ui_col_12">
-						<input type="text" name="recipDtlAddr" id="recipDtlAddr" placeholder="상세주소">
+					<div class="form_field">
+						<label class="input_label sr-only">배송주소 상세주소</label>
+						<div class="ui_col_12">
+							<input type="text" name="recipDtlAddr" id="recipDtlAddr" placeholder="상세주소">
+						</div>
 					</div>
-				</div>
-				
-				<!-- 주소 출력 
-				<div class="help_block">
-					<p><span>도로명</span>서울특별시 서초구 서운로 57번길</p>
-					<p><span>지번</span>서울특별시 서초구 서포동 60-28</p>
-				</div>
-				-->
-				
-				<!-- //주소 출력 -->
-				<div class="form_field">
-					<div>
-						<input id="chk-2" type="checkbox"><label for="chk-2">
-							<p>
-								비회원 개인정보 수집&#47;이용 동의 <span>(필수)</span>
-							</p>
-						</label>
+					
+					<!-- 주소 출력 
+					<div class="help_block">
+						<p><span>도로명</span>서울특별시 서초구 서운로 57번길</p>
+						<p><span>지번</span>서울특별시 서초구 서포동 60-28</p>
 					</div>
-				</div>
-				
-				<div class="form_field txt_area">
-					<div
-						style="overflow: auto; max-height: 176px; border: 1px solid #ddd;">
-						<strong>제1조(목적)</strong>
-						<p>이 약관은 (유)내고향시푸드(전자거래 사업자)이 운영하는 홈페이지(이하 "쇼핑몰"이라 한다)에서
-							제공하는 인터넷 관련 서비스(이하 "서비스"라 한다)를 이용함에 있어 (유)내고향시푸드와 이용자의 권리·의무 및
-							책임사항을 규정함을 목적으로 합니다. ※ 「PC통신 등을 이용하는 전자거래에 대해서도 그 성질에 반하지 않는 한
-							이 약관을 준용합니다」 제2조(정의) ① "쇼핑몰" 이란 사업자가 재화 또는 용역을 이용자에게 제공하기 위하여
-							컴퓨터 등 정보통신설비를 이용하여 재화 또는 용역을 거래할 수 있도록 설정한 가상의 영업장을 말하며, 아울러
-							쇼핑몰을 운영하는 사업자의 의미로도 사용합니다. ② "이용자"란 "쇼핑몰"에 접속하여 이 약관에 따라 "쇼핑몰"이
-							제공하는 서비스를 받는 회원 및 비회원을 말합니다. ③ "회원"이라 함은 "쇼핑몰"에 개인정보를 제공하여
-							회원등록을 한 자로서, "쇼핑몰"의 정보를 지속적으로 제공받으며, "쇼핑몰"이 제공하는 서비스를 계속적으로 이용할
-							수 있는 자를 말합니다. ④ "비회원"이라 함은 회원에 가입하지 않고 "쇼핑몰"이 제공하는 서비스를 이용하는 자를
-							말합니다. 제3조 (약관의 명시와 개정) ① "쇼핑몰"은 이 약관의 내용과 상호, 영업소 소재지, 대표자의 성명,
-							사업자등록번호, 연락처(전화, 팩스, 전자우편 주소 등) 등을 이용자가 알 수 있도록 사이트의 초기
-							서비스화면(전면)에 게시합니다. ② "쇼핑몰"은 약관의 규제 등에 관한 법률, 전자거래기본법, 전자서명법,
-							정보통신망 이용촉진 등에 관한 법률, 방문판매 등에 관한법률, 소비자보호법 등 관련법을 위배하지 않는 범위에서 이
-							약관을 개정할 수 있습니다. ③ "쇼핑몰"이 약관을 개정할 경우에는 적용일자 및 개정사유를 명시하여 현행약관과
-							함께 홈페이지의 초기화면에 그 적용일자 7일 이전부터 적용일자 전일까지 공지합니다. ④ "쇼핑몰"이 약관을 개정할
-							경우에는 그 개정약관은 그 적용일자 이후에 체결되는 계약에만 적용되고 그 이전에 이미 체결된 계약에 대해서는 개정
-							전의 약관조항이 그대로 적용됩니다. 다만 이미 계약을 체결한 이용자가 개정약관 조항의 적용을 받기를 원하는 뜻을
-							제3항에 의한 개정약관의 공지기간 내에 "쇼핑몰"에 송신하여 "쇼핑몰"의 동의를 받은 경우에는 개정약관 조항이
-							적용됩니다. ⑤ 이 약관에서 정하지 아니한 사항과 이 약관의 해석에 관하여는 정부가 제정한 전자거래소비자보호지침
-							및 관계법령 또는 상관례에 따릅니다. 제4조(서비스의 제공 및 변경) ① "쇼핑몰"은 다음과 같은 업무를
-							수행합니다. 1. 재화 또는 용역에 대한 정보 제공 및 구매계약의 체결 2. 구매계약이 체결된 재화 또는 용역의
-							배송 3. 기타 "쇼핑몰"이 정하는 업무 ② "쇼핑몰"은 재화의 품절 또는 기술적 사양의 변경 등의 경우에는 장차
-							체결되는 계약에 의해 제공할 재화·용역의 내용을 변경할 수 있습니다. 이 경우에는 변경된 재화·용역의 내용 및
-							제공일자를 명시하여 현재의 재화·용역의 내용을 게시한 곳에 그 제공일자 이전 7일부터 공지합니다. ③ "쇼핑몰"이
-							제공하기로 이용자와 계약을 체결한 서비스의 내용을 재화의 품절 또는 기술적 사양의 변경 등의 사유로 변경할
-							경우에는 "쇼핑몰"은 이로 인하여 이용자가 입은 손해를 배상합니다. 단, "쇼핑몰"에 고의 또는 과실이 없는
-							경우에는 그러하지 아니합니다.</p>
+					-->
+					
+					<!-- //주소 출력 -->
+					<div class="form_field">
+						<div>
+							<input id="chk-2" type="checkbox"><label for="chk-2">
+								<p>
+									비회원 개인정보 수집&#47;이용 동의 <span>(필수)</span>
+								</p>
+							</label>
+						</div>
 					</div>
-				</div>
-				<div class="form_field">
-					<div class="ui_row btn_group_md">
-						<div class="ui_col_6">
-							<button class="btn btn_default btn_block" id="btn_cancel">
-								<span>취소</span>
-							</button>
+					
+					<div class="form_field txt_area">
+						<div
+							style="overflow: auto; max-height: 176px; border: 1px solid #ddd;">
+							<strong>제1조(목적)</strong>
+							<p>이 약관은 (유)내고향시푸드(전자거래 사업자)이 운영하는 홈페이지(이하 "쇼핑몰"이라 한다)에서
+								제공하는 인터넷 관련 서비스(이하 "서비스"라 한다)를 이용함에 있어 (유)내고향시푸드와 이용자의 권리·의무 및
+								책임사항을 규정함을 목적으로 합니다. ※ 「PC통신 등을 이용하는 전자거래에 대해서도 그 성질에 반하지 않는 한
+								이 약관을 준용합니다」 제2조(정의) ① "쇼핑몰" 이란 사업자가 재화 또는 용역을 이용자에게 제공하기 위하여
+								컴퓨터 등 정보통신설비를 이용하여 재화 또는 용역을 거래할 수 있도록 설정한 가상의 영업장을 말하며, 아울러
+								쇼핑몰을 운영하는 사업자의 의미로도 사용합니다. ② "이용자"란 "쇼핑몰"에 접속하여 이 약관에 따라 "쇼핑몰"이
+								제공하는 서비스를 받는 회원 및 비회원을 말합니다. ③ "회원"이라 함은 "쇼핑몰"에 개인정보를 제공하여
+								회원등록을 한 자로서, "쇼핑몰"의 정보를 지속적으로 제공받으며, "쇼핑몰"이 제공하는 서비스를 계속적으로 이용할
+								수 있는 자를 말합니다. ④ "비회원"이라 함은 회원에 가입하지 않고 "쇼핑몰"이 제공하는 서비스를 이용하는 자를
+								말합니다. 제3조 (약관의 명시와 개정) ① "쇼핑몰"은 이 약관의 내용과 상호, 영업소 소재지, 대표자의 성명,
+								사업자등록번호, 연락처(전화, 팩스, 전자우편 주소 등) 등을 이용자가 알 수 있도록 사이트의 초기
+								서비스화면(전면)에 게시합니다. ② "쇼핑몰"은 약관의 규제 등에 관한 법률, 전자거래기본법, 전자서명법,
+								정보통신망 이용촉진 등에 관한 법률, 방문판매 등에 관한법률, 소비자보호법 등 관련법을 위배하지 않는 범위에서 이
+								약관을 개정할 수 있습니다. ③ "쇼핑몰"이 약관을 개정할 경우에는 적용일자 및 개정사유를 명시하여 현행약관과
+								함께 홈페이지의 초기화면에 그 적용일자 7일 이전부터 적용일자 전일까지 공지합니다. ④ "쇼핑몰"이 약관을 개정할
+								경우에는 그 개정약관은 그 적용일자 이후에 체결되는 계약에만 적용되고 그 이전에 이미 체결된 계약에 대해서는 개정
+								전의 약관조항이 그대로 적용됩니다. 다만 이미 계약을 체결한 이용자가 개정약관 조항의 적용을 받기를 원하는 뜻을
+								제3항에 의한 개정약관의 공지기간 내에 "쇼핑몰"에 송신하여 "쇼핑몰"의 동의를 받은 경우에는 개정약관 조항이
+								적용됩니다. ⑤ 이 약관에서 정하지 아니한 사항과 이 약관의 해석에 관하여는 정부가 제정한 전자거래소비자보호지침
+								및 관계법령 또는 상관례에 따릅니다. 제4조(서비스의 제공 및 변경) ① "쇼핑몰"은 다음과 같은 업무를
+								수행합니다. 1. 재화 또는 용역에 대한 정보 제공 및 구매계약의 체결 2. 구매계약이 체결된 재화 또는 용역의
+								배송 3. 기타 "쇼핑몰"이 정하는 업무 ② "쇼핑몰"은 재화의 품절 또는 기술적 사양의 변경 등의 경우에는 장차
+								체결되는 계약에 의해 제공할 재화·용역의 내용을 변경할 수 있습니다. 이 경우에는 변경된 재화·용역의 내용 및
+								제공일자를 명시하여 현재의 재화·용역의 내용을 게시한 곳에 그 제공일자 이전 7일부터 공지합니다. ③ "쇼핑몰"이
+								제공하기로 이용자와 계약을 체결한 서비스의 내용을 재화의 품절 또는 기술적 사양의 변경 등의 사유로 변경할
+								경우에는 "쇼핑몰"은 이로 인하여 이용자가 입은 손해를 배상합니다. 단, "쇼핑몰"에 고의 또는 과실이 없는
+								경우에는 그러하지 아니합니다.</p>
 						</div>
-						<div class="ui_col_6">
-							<button class="btn btn_dark btn_block" id="btn_order">
-								<span>주문하기</span>
-							</button>
+					</div>
+					<div class="form_field">
+						<div class="ui_row btn_group_md">
+							<div class="ui_col_6">
+								<button class="btn btn_default btn_block" id="btn_cancel">
+									<span>취소</span>
+								</button>
+							</div>
+							<div class="ui_col_6">
+								<button class="btn btn_dark btn_block" id="btn_order">
+									<span>주문하기</span>
+								</button>
+							</div>
 						</div>
 					</div>
+					<div class="form_info">
+						<p>STYLE24에 회원가입을 하시면 더 많은 혜택을 받으실 수 있습니다!</p>
+						<a href="#none" id="btn_join">회원가입</a>
+					</div>
 				</div>
-				<div class="form_info">
-					<p>STYLE24에 회원가입을 하시면 더 많은 혜택을 받으실 수 있습니다!</p>
-					<a href="#none" id="btn_join">회원가입</a>
-				</div>
-			</form>
+			</div>
 		</div>
-	</div>
-</div>
+	</th:block>
+</form>
 
 <script th:inline="javascript">
-	var isLogin = [[${isLogin}]];				// 자사 일반,촐알 배송건수
-		
 	// 컨텐츠 호출
 	$(document).ready( function() {
-		// 로그인 
-		if (isLogin) {
-			$("#orderForm").submit();
-		}
+		
 	});
 	
 	// 취소버튼

+ 124 - 7
src/main/webapp/ux/pc/css/common.css

@@ -1,8 +1,8 @@
 @charset "utf-8";
 
-@import "reset.css?v=20210219";
+@import "reset.css";
 @import "font.css";
-@import "layout.css?v=20210219";
+@import "layout.css";
 
 
 /* h1 ~ h6  */
@@ -627,11 +627,11 @@ content: "〉";font-size: 12px;padding-left: 8px;
     background-repeat: no-repeat;
     background-position: 50% 50%;
 }
-.pageNav .disabled a {width:15px; height: 14px; background: url('/images/pc/ico_paging.png')no-repeat 0 11px; text-indent: -9999px;}
-.pageNav .disabled.prev a {width:8px; height: 14px; background-position: -23px 11px; margin-left: 29px;}
-.pageNav .next a,.pageNav > li:last-child a { width:15px; height: 14px; background: url('/images/pc/ico_paging.png')no-repeat -64px 11px; text-indent: -9999px;}
+.pageNav .disabled a {width:15px; height: 34px; background: url('/images/pc/ico_paging.png')no-repeat 0 11px; text-indent: -9999px;}
+.pageNav .disabled.prev a {width:8px; height: 34px; background-position: -23px 11px; margin-left: 29px;}
+.pageNav .next a,.pageNav > li:last-child a { width:15px; height: 34px; background: url('/images/pc/ico_paging.png')no-repeat -64px 11px; text-indent: -9999px;}
 .pageNav > li:last-child a {margin-left: 29px;}
-.pageNav .next a{width: 8px; height: 14px; background-position: -47px 11px;}
+.pageNav .next a{width: 8px; height: 34px; background-position: -47px 11px;}
 .pageNav > li.active > a {color: #fd4802;}
 .pageNav > li.active > a::after {
   content: ''; display: block; width: 100%; height: 2px; background: #fd4802;
@@ -1030,11 +1030,128 @@ input[type="file"] {
 }
 .select_options li:hover{background-color: #dddddd;}
 .select_options li[rel="hide"] {display: none;}
+.select_options li.disabled {text-decoration:line-through; background:#f5f5f5; color:#bbb}
+.select_options li.disabled:hover,
+.select_options li.disabled:active {cursor:default;}
 .select_dress:active, .select_dress.active {background-color: #ffffff;border: 1px solid #222222;border-bottom: 1px solid #dddddd;}
 .select_dress:active:after, .select_dress.active:after {top: 9px;border-color: transparent transparent #888888 transparent;}
 
+/* select-custom */
+.select_custom {
+	cursor: pointer;
+    display: inline-block;
+    position: relative;
+    font-size: 16px;
+    color: #333333;
+    width: 100%;
+    height: 40px;
+}
+.select_custom .combo {
+    display: inline-block;
+    position: relative;
+    width: 100%;
+}
+.select_custom .combo .select {
+	position: relative;
+    box-sizing: border-box;
+    height: 40px;
+    line-height: 1;
+    cursor: pointer;
+    padding: 10px 15px;
+    background-color: #ffffff;
+    border: 1px solid #dddddd;
+}
+.select_custom .combo .select:after {
+    /* content: '▼'; */
+    /* position: absolute; */
+    /* top: 50%; */
+    /* right: 10px; */
 
-/* list-type */
+	content: '';
+    width: 0;
+    height: 0;
+    box-sizing: border-box;
+    position: absolute;
+    top: 16px;
+    right: 10px;
+    border: 6px solid transparent;
+    border-color: #888888 transparent transparent transparent;
+}
+.select_custom.on .combo .select {
+	border: 1px solid #999999;
+}
+.select_custom.on .combo .select:after {
+    /* content: '▲'; */
+	top: 9px;
+    border-color: transparent transparent #888888 transparent;
+}
+.select_custom .combo .list {
+    display: none;
+    overflow-y: auto;
+    position: absolute;
+    top: 39px;
+    left: 0;
+    z-index: 10;
+    border: 1px solid #999999;
+    border-top: 0;
+    box-sizing: border-box;
+    padding: 10px 0;
+    width: 100%;
+    max-height: 500px;
+    background-color: #fff;
+}
+.select_custom .combo .list::-webkit-scrollbar {
+    width: 10px;
+    height: 0;
+}
+.select_custom .combo .list::-webkit-scrollbar-button:start:decrement,
+.select_custom .combo .list::-webkit-scrollbar-button:end:increment {
+    display: block;
+    height: 0;
+}
+.select_custom .combo .list::-webkit-scrollbar-track {
+    background: rgba(0, 0, 0, .05);
+    -webkit-border-radius: 10px;
+    border-radius: 10px;
+}
+.select_custom .combo .list::-webkit-scrollbar-thumb {
+    height: 50px;
+    width: 50px;
+    background: rgba(0, 0, 0, .2);
+    -webkit-border-radius: 5px;
+    border-radius: 5px;
+}
+.select_custom .combo .list>li[aria-disabled="true"] {
+	text-decoration: line-through;
+    background: #f5f5f5;
+    color: #bbb;
+	pointer-events: none;
+}
+.select_custom .combo .list>li[data-soldout="true"] {
+	pointer-events: none;
+}
+.select_custom .combo .list>li[data-soldout="true"]::after {
+	content: '품절';
+    display: inline-block;
+    font-size: 12px;
+    color: #bbbbbb;
+    position: absolute;
+    right: 10px;
+    top: 0;
+    bottom: 0;
+}
+.select_custom .combo .list>li {
+    box-sizing: border-box;
+    padding: 0 10px;
+    width: 100%;
+    height: auto;
+    line-height: 35px;
+    cursor: pointer;
+	position: relative;
+}
+.select_custom .combo .list>li:hover {
+    background-color: #ccc;
+}/* list-type */
 
 /* description */
 

+ 77 - 8
src/main/webapp/ux/pc/js/common-ui.js

@@ -24,7 +24,6 @@
 
 
 
-
 /* * * * * * * * * * * * * * * * * * * * * * * 
 
 2. Init    (초기설정)
@@ -32,7 +31,7 @@
 * * * * * * * * * * * * * * * * * * * * * */
 $(document).ready(function(){
 
-	/* header minify */
+	// header minify
 	$(function(){
 		$(window).scroll(function(){
 			//var scroll = $(this).scrollTop();
@@ -49,7 +48,11 @@ $(document).ready(function(){
 			}
 		});
 	});
-	/* //header minify */
+
+	// history back
+	$(".back").on("click", function () {
+		history.back()
+	});
 
 });
 /* * * * * * * * * * * * * * * * * * * * * * * 
@@ -150,7 +153,8 @@ $( document ).ready(function() {
 		for (var i = 0; i < numberOfOptions; i++) {
 			$('<li />', {
 				text: $this.children('option').eq(i).text(),
-				rel: $this.children('option').eq(i).val()
+				rel: $this.children('option').eq(i).val(),
+				class: $this.children('option').eq(i).attr('disabled')
 			}).appendTo($selList);
 		}
 	
@@ -166,10 +170,15 @@ $( document ).ready(function() {
 	
 		$selListItems.click(function(e) {
 			e.stopPropagation();
-			$dressSelect.text($(this).text()).removeClass('active');
-			$this.val($(this).attr('rel'));
-			$selList.hide();
-			//console.log($this.val());
+			
+			if($(this).hasClass('disabled')){
+				$this.val($(this).attr('rel',false));
+			} 
+			else{
+				$dressSelect.text($(this).text()).removeClass('active');
+				$this.val($(this).attr('rel'));
+				$selList.hide();
+			}
 		});
 	
 		$(document).click(function() {
@@ -181,6 +190,56 @@ $( document ).ready(function() {
 });
 
 
+// Select-Combo-Custom
+function sCombo(selector){
+	this.$selectBox = null,
+	this.$select = null,
+	this.$list = null,
+	this.$listLi = null;
+	sCombo.prototype.init = function(selector){
+		this.$selectBox = $(selector);
+		this.$select = this.$selectBox.find('.combo .select');
+		this.$list = this.$selectBox.find('.combo .list');
+		this.$listLi = this.$list.children('li');
+	}
+	sCombo.prototype.initEvent = function(e){
+		var that = this;
+		this.$select.on('click', function(e){
+			that.listOn();
+		});
+		this.$listLi.on('click', function(e){
+			that.listSelect($(this));
+		});
+		$(document).on('click', function(e){
+			that.listOff($(e.target));
+		});
+	}
+	sCombo.prototype.listOn = function(){
+		this.$selectBox.toggleClass('on');
+		if(this.$selectBox.hasClass('on')){
+			this.$list.css('display', 'block');
+		}else{
+			this.$list.css('display', 'none');
+		};
+	}
+	sCombo.prototype.listSelect = function($target){
+		$target.addClass('selected').siblings('li').removeClass('selected');
+		this.$selectBox.removeClass('on');
+		this.$select.text($target.text());
+		this.$list.css('display', 'none');
+	}
+	sCombo.prototype.listOff = function($target){
+		if(!$target.is(this.$select) && this.$selectBox.hasClass('on')){
+			this.$selectBox.removeClass('on');
+			this.$list.css('display', 'none');
+		};
+	}
+	this.init(selector);
+	this.initEvent();
+};
+
+
+
 // selectBrand on/off
 $( document ).ready( function() {
 	$("#selectBrand .brandbox input").on("click", function() {
@@ -190,6 +249,9 @@ $( document ).ready( function() {
 });
 
 
+
+
+
 /* alert */
 $(function(){
 	$('.alertCls').click(function(){
@@ -244,6 +306,13 @@ $(document).ready( function() {
 		$("#rdi-paymethod-quick").trigger("click");
 		return false;
 	});
+
+	/* 상품상세 > 상품문의 _accordion */
+	$(document).on('click','.pd_qnalist_pop .foldGroup .fold_head',function(e){
+		$(this).parents('.foldGroup li').find('.fold_cont').slideToggle(100);
+		$(this).toggleClass('on');
+		return false;
+	});
 	
 	/* 아이디/비밀번호 찾기_accordion:open */
 	$(document).on('click','.mb .foldGroup.checkcase .fold_head',function(e){