Просмотр исходного кода

Merge branch 'develop' into jsshin

jsshin 5 лет назад
Родитель
Сommit
e2865d1842
46 измененных файлов с 506 добавлено и 348 удалено
  1. 4 4
      src/main/java/com/style24/front/biz/web/TsfMypageController.java
  2. 26 9
      src/main/java/com/style24/front/biz/web/TsfPgController.java
  3. 26 15
      src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml
  4. 4 4
      src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml
  5. 13 11
      src/main/java/com/style24/persistence/mybatis/shop/TsfRecentlyGoods.xml
  6. 1 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfReview.xml
  7. 4 4
      src/main/resources/config/application-locd.yml
  8. 2 16
      src/main/webapp/WEB-INF/views/mob/common/fragments/GnbMob.html
  9. 1 1
      src/main/webapp/WEB-INF/views/mob/display/CategoryGoodsListFormMob.html
  10. 2 3
      src/main/webapp/WEB-INF/views/mob/display/LookbookDetailFormMob.html
  11. 4 3
      src/main/webapp/WEB-INF/views/mob/display/LookbookMainFormMob.html
  12. 8 6
      src/main/webapp/WEB-INF/views/mob/goods/GoodsCouponFormMob.html
  13. 2 2
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailDeliveryFormMob.html
  14. 101 17
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html
  15. 20 20
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailReviewFormMob.html
  16. 1 4
      src/main/webapp/WEB-INF/views/mob/mypage/MypageExchangeFormMob.html
  17. 8 8
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReturnFormMob.html
  18. 1 4
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberExchangeFormMob.html
  19. 8 8
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberReturnFormMob.html
  20. 4 3
      src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html
  21. 3 2
      src/main/webapp/WEB-INF/views/mob/pg/kcpOrderMob.html
  22. 6 6
      src/main/webapp/WEB-INF/views/mob/planning/PlanningEventPollFormMob.html
  23. 3 1
      src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb.html
  24. 3 4
      src/main/webapp/WEB-INF/views/web/display/LookbookDetailFormWeb.html
  25. 12 8
      src/main/webapp/WEB-INF/views/web/display/LookbookMainFormWeb.html
  26. 11 7
      src/main/webapp/WEB-INF/views/web/goods/GoodsCouponFormWeb.html
  27. 1 1
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailDeliveryFormWeb.html
  28. 68 1
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html
  29. 2 2
      src/main/webapp/WEB-INF/views/web/mypage/MypageCreListFormWeb.html
  30. 6 9
      src/main/webapp/WEB-INF/views/web/mypage/MypageExchangeFormWeb.html
  31. 2 2
      src/main/webapp/WEB-INF/views/web/mypage/MypageOrderListFormWeb.html
  32. 10 16
      src/main/webapp/WEB-INF/views/web/mypage/MypageReturnFormWeb.html
  33. 3 5
      src/main/webapp/WEB-INF/views/web/mypage/MypageReviewFormWeb.html
  34. 2 2
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberCreListFormWeb.html
  35. 6 8
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberExchangeFormWeb.html
  36. 2 2
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberOrderListFormWeb.html
  37. 9 7
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberReturnFormWeb.html
  38. 29 11
      src/main/webapp/WEB-INF/views/web/popup/RefundAccountAddPopupFormWeb.html
  39. 1 65
      src/main/webapp/biz/goods.js
  40. 19 0
      src/main/webapp/biz/payment.js
  41. 7 1
      src/main/webapp/ux/mo/css/layout_m.css
  42. 5 4
      src/main/webapp/ux/mo/css/style24_m.css
  43. 2 2
      src/main/webapp/ux/mo/js/common_m.js
  44. 15 10
      src/main/webapp/ux/pc/css/layout.css
  45. 3 3
      src/main/webapp/ux/pc/js/common-ui.js
  46. 36 26
      src/main/webapp/ux/plugins/approval_key.js

+ 4 - 4
src/main/java/com/style24/front/biz/web/TsfMypageController.java

@@ -1689,13 +1689,13 @@ public class TsfMypageController extends TsfBaseController {
 		
 		review.setReviewExpireDay(eventService.getGoodsReviewPointExpireDays(TscConstants.Site.STYLE24.value()));
 		result.set("alreadyReviewCount", reviewService.getAlreadyReviewList(review).size());
-		TscPageRequest pageable2 = new TscPageRequest((review.getPageNo2() > 0 ? review.getPageNo2() - 1 : 0), review.getPageSize2(), review.getPageUnit2());
+		TscPageRequest pageable = new TscPageRequest((review.getPageNo() > 0 ? review.getPageNo() - 1 : 0), review.getPageSize(), review.getPageUnit());
 		int totalCnt = reviewService.getAlreadyReviewList(review).size();
-		pageable2.setTotalCount(totalCnt);
-		review.setPageable2(pageable2);
+		pageable.setTotalCount(totalCnt);
+		review.setPageable(pageable);
 		result.set("paging2", review);
 		result.set("totalCnt", totalCnt);
-		result.set("endRow", pageable2.getEndRow());
+		result.set("endRow", pageable.getEndRow());
 		result.set("dataList2", reviewService.getAlreadyReviewList(review));
 
 		return result;

+ 26 - 9
src/main/java/com/style24/front/biz/web/TsfPgController.java

@@ -7,10 +7,9 @@ import com.style24.front.support.controller.TsfBaseController;
 import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.domain.Order;
 import com.style24.persistence.domain.Payment;
-import kr.co.kcp.net.connection.ConnectionKCP;
-import kr.co.kcp.net.connection.dto.ParamData;
-import kr.co.kcp.net.connection.util.HttpJsonXml;
-import kr.co.kcp.net.connection.util.OpenHash;
+import kr.co.kcp.net.connection.*;
+import kr.co.kcp.net.connection.dto.*;
+import kr.co.kcp.net.connection.util.*;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
@@ -24,9 +23,7 @@ import org.springframework.web.servlet.ModelAndView;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
 import java.io.PrintWriter;
-import java.util.Collection;
 
 @Controller
 @RequestMapping("/pg")
@@ -95,8 +92,9 @@ public class TsfPgController extends TsfBaseController {
 	 */
 	@RequestMapping(value = "/kcp/approval")
 	public ModelAndView kcpApproval(Payment param, HttpServletRequest request, HttpServletResponse response, Model model) throws Exception{
-		try {	request.setCharacterEncoding("euc-kr");	} catch(Exception e) {	}
-		response.setContentType("text/html;charset=euc-kr");
+		/*try {	request.setCharacterEncoding("euc-kr");	} catch(Exception e) {	}
+		response.setContentType("text/html;charset=euc-kr");*/
+		log.info("CHECK INFO ::::: {}", param.toString());
 		response.setHeader("Cache-Control","no-store");
 		response.setHeader("Pragma","no-cache");
 		response.setDateHeader("Expires",0);
@@ -108,6 +106,14 @@ public class TsfPgController extends TsfBaseController {
 		HttpJsonXml   hjx = new HttpJsonXml();			// 응답값 get value 형식으로 가져올수 있는 Object           ( Java 또는 JSP 내에서 데이터를 파싱할때 필요 - XML 또는 JSON )
 		ParamData pd  = new ParamData();				// 파라메타 값을 세팅할수 있는 bean Object                  ( String, HashMap 등으로 대체 가능 )
 
+		/*pd.setGood_mny(String.valueOf(param.getGoodMny()));
+		pd.setGood_name(param.getGoodName());
+		pd.setOrdr_idxx(param.getOrdrIdxx());
+		pd.setPay_method(param.getPayMethod());
+		pd.setRet_URL(coreOrderService.simpleEncode(param.getRetUrl()));
+		pd.setSite_cd(param.getSiteCd());
+		pd.setEscw_used(param.getEscwUsed() == null ? "" : param.getEscwUsed());*/
+
 		pd.setGood_mny(request.getParameter("good_mny"));
 		pd.setGood_name(request.getParameter("good_name"));
 		pd.setOrdr_idxx(request.getParameter("ordr_idxx"));
@@ -116,12 +122,23 @@ public class TsfPgController extends TsfBaseController {
 		pd.setSite_cd(request.getParameter("site_cd"));
 		pd.setEscw_used(request.getParameter("escw_used") == null ? "" : request.getParameter("escw_used"));
 
+		log.info("CHECK INFO :::::: {}", pd.getGood_mny());
+		log.info("CHECK INFO :::::: {}", pd.getGood_name());
+		log.info("CHECK INFO :::::: {}", pd.getOrdr_idxx());
+		log.info("CHECK INFO :::::: {}", pd.getPay_method());
+		log.info("CHECK INFO :::::: {}", pd.getRet_URL());
+		log.info("CHECK INFO :::::: {}", pd.getSite_cd());
+		log.info("CHECK INFO :::::: {}", pd.getEscw_used());
+
+
 		String responseType = request.getParameter("response_type");
 		if("JSON".equals(responseType) || "XML".equals(responseType)) {
 			pd.setResponse_type(responseType);
 		}
 
-		out.println( suc.kcpPaymentSmartPhone(request, Boolean.parseBoolean(env.getProperty("pg.kcp.server")), pd, env.getProperty("pg.kcp.log.dir"))); // 이클립스 상에서 메서드를 클릭 후 F2를 누르면 상세 내용이 나옵니다.
+		String result = suc.kcpPaymentSmartPhone(request, Boolean.parseBoolean(env.getProperty("pg.kcp.server")), pd, env.getProperty("pg.kcp.log.dir"));
+		log.info("CHECK KCP MOBILE RESULT ::::: {}", result);
+		out.println(result); // 이클립스 상에서 메서드를 클릭 후 F2를 누르면 상세 내용이 나옵니다.
 
 		return null;
 	}

+ 26 - 15
src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml

@@ -634,7 +634,11 @@
 	<!-- 상품리스트 카테고리별 필터 목록 -->
 	<select id="getGoodsListCategoryFilterList" parameterType="SearchEngine" resultType="Filter">
 		/* TsfDisplay.getGoodsListCategoryFilterList */
-		SELECT FILTER_GB
+		SELECT
+		<if test="brandGroupNo != null and brandGroupNo > 0 ">
+		    DISTINCT
+		</if>
+		       FILTER_GB
 		     , CASE WHEN FILTER_GB = 'SIZE' THEN
 		                SUBSTRING_INDEX(FILTER_CD,'|',1)
 		            ELSE
@@ -646,20 +650,27 @@
 		AND    CATE_GB = #{cateGb}
 		AND    FORMAL_GB = #{formalGb}
 		AND    BRAND_GROUP_NO = #{brandGroupNo}
-		AND    CATE_NO = CASE WHEN IFNULL(#{cate4No},0) > 0 THEN
-		                          #{cate4No}
-		                      ELSE
-		                          CASE WHEN IFNULL(#{cate3No},0) > 0 THEN
-		                                   #{cate3No}
-		                               ELSE
-		                                   CASE WHEN IFNULL(#{cate2No},0) > 0 THEN
-		                                            #{cate2No}
-		                                        ELSE
-		                                            #{cate1No}
-		                                   END
-		                          END
-		                 END
-		ORDER  BY FILTER_GB, DISP_ORD
+		<choose>
+		  <when test="cate1No == null and cate2No == null and cate3No == null and cate4No == null">
+		ORDER  BY FILTER_GB
+		  </when>
+		  <otherwise>
+		  AND    CATE_NO = CASE WHEN IFNULL(#{cate4No},0) > 0 THEN
+		                                    #{cate4No}
+		                             ELSE
+		                                  CASE WHEN IFNULL(#{cate3No},0) > 0 THEN
+		                                           #{cate3No}
+		                                       ELSE
+		                                           CASE WHEN IFNULL(#{cate2No},0) > 0 THEN
+		                                                     #{cate2No}
+		                                                ELSE
+		                                                     #{cate1No}
+		                                            END
+		                                  END
+		                             END
+		  ORDER  BY FILTER_GB
+		  </otherwise>
+		</choose>
 	</select>
 	
 	<!-- 검색상품리스트 카테고리별 필터 목록 -->

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

@@ -1976,7 +1976,7 @@
 		            AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT /*유효한 판매기간*/
 		            <if test="ageArr != null and ageArr.length > 0"> <!-- 연령대 -->
 		            AND    G.AGE_GRP_CD IN
-		            <foreach collection="agesArr" item="item" index="index"  open="(" close=")" separator=",">
+		            <foreach collection="ageArr" item="item" index="index"  open="(" close=")" separator=",">
 		                #{item}
 		            </foreach>
 		            </if>
@@ -2159,7 +2159,7 @@
 		        AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT /*유효한 판매기간*/
 		        <if test="ageArr != null and ageArr.length > 0"> <!-- 연령대 -->
 		            AND    G.AGE_GRP_CD IN
-		            <foreach collection="agesArr" item="item" index="index"  open="(" close=")" separator=",">
+		            <foreach collection="ageArr" item="item" index="index"  open="(" close=")" separator=",">
 		                #{item}
 		            </foreach>
 		        </if>
@@ -2391,7 +2391,7 @@
 		        AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT /*유효한 판매기간*/
 		        <if test="ageArr != null and ageArr.length > 0"> <!-- 연령대 -->
 		        AND    G.AGE_GRP_CD IN
-		            <foreach collection="agesArr" item="item" index="index"  open="(" close=")" separator=",">
+		            <foreach collection="ageArr" item="item" index="index"  open="(" close=")" separator=",">
 		            #{item}
 		            </foreach>
 		        </if>
@@ -2543,7 +2543,7 @@
 		            AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT /*유효한 판매기간*/
 		            <if test="ageArr != null and ageArr.length > 0"> <!-- 연령대 -->
 		            AND    G.AGE_GRP_CD IN
-		                <foreach collection="agesArr" item="item" index="index"  open="(" close=")" separator=",">
+		                <foreach collection="ageArr" item="item" index="index"  open="(" close=")" separator=",">
 		                #{item}
 		                </foreach>
 		            </if>

+ 13 - 11
src/main/java/com/style24/persistence/mybatis/shop/TsfRecentlyGoods.xml

@@ -20,17 +20,19 @@
 		/* TsfRecentlyGoods.deleteRecentlyFirstGoods */
 		DELETE
 		FROM   TB_RECENTLY_GOODS
-		WHERE  RGOODS_SQ = (SELECT RGOODS_SQ
-		                    FROM   TB_RECENTLY_GOODS
-		                    WHERE  1 = 1
-		                    AND    (
-		                            JSESSION_ID = #{jsessionId}
-		                            OR
-		                            CUST_NO = #{custNo}
-		                           )
-		                    ORDER  BY RGOODS_SQ
-		                    LIMIT 1
-		                   )
+		WHERE  RGOODS_SQ IN (SELECT * 
+		                     FROM (SELECT RGOODS_SQ
+		                           FROM   TB_RECENTLY_GOODS
+		                           WHERE  1 = 1
+		                           AND    (
+		                                   JSESSION_ID = #{jsessionId}
+		                                   OR
+		                                   CUST_NO = #{custNo}
+		                                  )
+		                           ORDER  BY RGOODS_SQ
+		                           LIMIT 1
+		                           ) Z
+		                     )
 	</delete>
 	
 	<!-- 최근본상품 저장 -->

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

@@ -1157,7 +1157,7 @@
 		        , Z.SUPPLY_COMP_CD, Z.DELV_FEE_CD, Z.SHOT_DELV_YN, Z.CHANGEABLE_YN, Z.SELF_GOODS_YN, Z.BRAND_NM, Z.BRAND_ENM, Z.ORD_DTL_STAT_NM
 		        , Z.ORD_REQ_CHG_QTY, Z.ORD_CAN_CHG_QTY, Z.REVIEW_SQ 
 		ORDER BY Z.ORD_NO DESC, Z.ORD_DTL_STAT, Z.SELF_GOODS_YN DESC, Z.SHOT_DELV_YN DESC, Z.SUPPLY_COMP_CD
-		<include refid="selectForPagingFooter2"/>
+		<include refid="selectForPagingFooter"/>
 		</select>
 	
 	<select id="getReviewAttach" parameterType="Review" resultType="Review">

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

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

+ 2 - 16
src/main/webapp/WEB-INF/views/mob/common/fragments/GnbMob.html

@@ -48,20 +48,6 @@
 	<div id="gnb" class="gnb">
 		<div class="gnb-inner">
 			<ul id="ulGnbTab">
-				<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MAIN);">홈</a></li>
-				<li class="on"><a href="javascript:void(0);">브랜드</a></li>
-				<li><a href="#none">여성</a></li>
-				<li><a href="#none">남성</a></li>
-				<li><a href="#none">유아동</a></li>
-				<li><a href="#none">골프</a></li>
-				<li><a href="#none">라이프</a></li>
-				<li><a href="#none">베스트</a></li>
-				<li><a href="#none">핫딜</a></li>
-				<li><a href="#none">기획전</a></li>
-				<li><a href="#none">총알배송</a></li>
-				<li><a href="#none">아울렛</a></li>
-				<li><a href="#none">룩북</a></li>
-				<li><a href="#none">이벤트</a></li>
 			</ul>
 		</div>
 		<button onclick="$('#gnb').toggleClass('expand');" class="btn-expand"></button>
@@ -70,7 +56,7 @@
 	<!-- 통합검색 팝업 -->
 	<div class="modal pop_full schPop sch" id="schPop" tabindex="-1" role="dialog" aria-labelledby="schPopLabel" aria-hidden="true">
 		<div class="modal-dialog" role="document">
-			<div class="modal-content">      
+			<div class="modal-content">
 			</div>
 		</div>
 		<a href="#close-modal" rel="modal:close" id="schAllPop_close" class="close-modal">Close</a>
@@ -89,7 +75,7 @@
 						
 						let tag = '';
 						tag += '<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MAIN);">홈</a></li>\n';
-						tag += '<li class="on"><a href="javascript:void(0);">브랜드</a></li>\n';
+						tag += '<li class="on"><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_ALL_BRAND);">브랜드</a></li>\n';
 						$.each(result, function(idx, item) {
 							if (item.contentsType == 'C') { // 컨텐츠유형: 카테고리
 								tag += '<li><a href="javascript:void(0);" onclick="cfnGoToCategoryMain(\'G032_101\',' + item.cate1No + ');">' + item.gtabNm + '</a></li>\n';

+ 1 - 1
src/main/webapp/WEB-INF/views/mob/display/CategoryGoodsListFormMob.html

@@ -1007,7 +1007,7 @@
 					$("#searchGoodsForm input:hidden[name=sortingType]").val(historyData.sortingType);
 					fnSortingChange(this,historyData.sortingType,'back','Mob');
 				}else{
-					fnCategoryGoodsInfiniteScrollInit();
+					// fnCategoryGoodsInfiniteScrollInit();
 					fnGoodsListSearch();
 				}
 			}else{

+ 2 - 3
src/main/webapp/WEB-INF/views/mob/display/LookbookDetailFormMob.html

@@ -78,9 +78,8 @@
 										<div class="swiper-wrapper" style="transform: translate3d(0px, 0px, 0px);">
 											<th:block th:if="${item.lookbookGoodsList != null and !item.lookbookGoodsList.empty}" th:each="goodsItem, goodsStatus : ${item.lookbookGoodsList}">
 												<div class="swiper-slide swiper-slide-active" style="width: 210.333px; margin-right: 20px;">
-													<div class="item_prod" th:classappend="${(goodsItem.stockQty <= 0 or goodsItem.soldoutYn == 'Y')}? 'unable' : ''"
-														 th:attr="goodsCd=${goodsItem.goodsCd}, optCdInfo=${goodsItem.optCdInfo}, minOrdQty=${goodsItem.minOrdQty},  goodsType=${goodsItem.goodsType}">
-														<div class="item_state">
+													<div class="item_prod" th:attr="goodsCd=${goodsItem.goodsCd}, optCdInfo=${goodsItem.optCdInfo}, minOrdQty=${goodsItem.minOrdQty},  goodsType=${goodsItem.goodsType}">
+														<div class="item_state" th:classappend="${(goodsItem.stockQty <= 0 or goodsItem.soldoutYn == 'Y')}? 'soldout' : ''">
 															<th:block th:each="optCd : ${#strings.arraySplit(goodsItem.optCdInfo,',')}">
 																<input type="hidden" name="lookbookGoodsOptCd" th:value="${optCd}"/>
 															</th:block>

+ 4 - 3
src/main/webapp/WEB-INF/views/mob/display/LookbookMainFormMob.html

@@ -45,11 +45,12 @@
 							</ul>
 						</div>
 					</div>
-					<div class="list_defult">
+					<div class="list_defult" id="divLookbookNoData" style="display: none;">
 						<div>
 							<p>등록된 룩북이 없습니다.</p>
 						</div>
-						<button type="button" class="btn btn_default"><span>홈으로 가기</span></button>
+						<button type="button" class="btn btn_default" th:unless="${lbInfo.lookbookGb=='BL'}" onclick="cfnGoToPage(_PAGE_MAIN);"><span>메인으로 가기</span></button>
+						<button type="button" class="btn btn_default" th:if="${lbInfo.lookbookGb=='BL'}" th:onclick="cfnGoToBrandMain([[${lbInfo.brandCd}]]);"><span th:text="${brandGroupInfo.brandGroupNm+' 홈으로 가기'}"><span>메인으로 가기</span></button>
 					</div>
 					<div class="lookbookGrp">
 						<div class="swiper_filter brand" id="filterChkArea">
@@ -64,7 +65,7 @@
 						</div>
 
 					</div>
-					<div class="list_last">마지막페이지 입니다.</div>
+					<div class="list_last" id="divLastPage" style="display: none;">마지막페이지 입니다.</div>
 				</div>
 				<!-- //상품리스트 -->
 			</div>

+ 8 - 6
src/main/webapp/WEB-INF/views/mob/goods/GoodsCouponFormMob.html

@@ -41,7 +41,7 @@
 							</div>
 							<div class="btn_group_flex">
 								<div>
-									<button type="button" class="btn btn_dark btn_coupon_down" id="btn_result_coupon" 
+									<button type="button" class="btn btn_dark" 
 											th:disabled="${goodsCoupon.custPubLimitQty > 0 and goodsCoupon.custPubLimitQty <= goodsCoupon.custCouponCnt}"
 											th:attr="cpnId=${goodsCoupon.cpnId}" th:id="${'coupon_'+goodsCoupon.cpnId}" onclick="fnGoodsCouponDown(this);">
 										<span>쿠폰받기</span>
@@ -103,12 +103,14 @@
 						if (Number(coupon.custPubLimitQty) <= Number(coupon.custCouponCnt)){
 							//$('#coupon_'+ coupon.cpnId).html('<span>받기완료</span>');
 							$('#coupon_'+ coupon.cpnId).attr('disabled', true);
+							$('#coupon_'+ coupon.cpnId).find('span::after').attr('content','');
 						}
 					}
 					if (Number(coupon.TotPubLimitQty) > 0){
 						if (Number(coupon.TotPubLimitQty) <= Number(coupon.CustCouponCnt)){
 							//$('#coupon_'+ coupon.cpnId).html('<span>받기완료</span>');
 							$('#coupon_'+ coupon.cpnId).attr('disabled', true);
+							$('#coupon_'+ coupon.cpnId).find('span::after').attr('content','');
 						}
 					}
 				}
@@ -119,11 +121,11 @@
 	
 	
 	// 쿠폰 전체 다운로드
-	var fnGoodsCouponDownAll = function(){debugger;
+	var fnGoodsCouponDownAll = function(){
 		//00개 쿠폰이 발급되었습니다.
 		let couponDownAbleYn = "N";
 		let arrCpnId = [];
-		$('.btn_coupon_down').each(function(){debugger;
+		$('.btn_group_flex .btn_dark').each(function(){
 			if (!$(this).attr('disabled')){
 				couponDownAbleYn = "Y";
 				arrCpnId.push($(this).attr('cpnId'));
@@ -146,7 +148,7 @@
 			let list = result.goodsCouponList;
 
 			list.forEach(function(coupon){
-				$('.btn_coupon_down').each(function(){
+				$('.btn_group_flex .btn_dark').each(function(){
 					if (!$(this).attr('disabled')){
 						let cpnId = $(this).attr('cpnId');
 						if (coupon.cpnId == cpnId){
@@ -173,14 +175,14 @@
 	
 	var jfCouponCheck = function(){
 		let couponDownAbleYn = "N";
-		$('.btn_coupon_down').each(function(){
+		$('.btn_group_flex .btn_dark').each(function(){
 			if (!$(this).attr('disabled')){
 				couponDownAbleYn = "Y";
 			}
 		});	
 		
 		if(couponDownAbleYn == "N"){
-			$('.btn_all_cpdown').attr('disabled', true);
+			$('#btn_all_coupon').attr('disabled', true);
 		}
 	}	
 	

+ 2 - 2
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailDeliveryFormMob.html

@@ -20,7 +20,7 @@
 			<div class="pop_cont">
 				<h2>배송안내</h2>
 				<h3>구분</h3>
-				<th:block th:if="${goodsInfo.quikDelvYn = 'Y'}" ><p class="dot">총알배송(오전 10시까지 주문 시)</p></th:block>
+				<th:block th:if="${goodsInfo.quikDelvYn = 'Y'}" ><p class="dot">일반배송/총알배송(오전 10시까지 주문 시)</p></th:block>
 				<th:block th:unless="${goodsInfo.quikDelvYn = 'Y'}" ><p class="dot">일반배송</p></th:block>
 			</div>
 			<div class="pop_cont">
@@ -94,7 +94,7 @@
 			<div class="pop_cont" th:if="${deliveryInfo != null and deliveryInfo.delvFeeCd != null and not #strings.isEmpty(deliveryInfo.note)}">
 				<h3>기타사항</h3>
 				<th:block th:each="note : ${#strings.arraySplit(#strings.replace(#strings.replace(#strings.escapeJava(deliveryInfo.note),'\r',''),'\n','|'),'|')}">
-				<p class="dot" th:text="${note}"></p>
+				<p class="dot" th:utext="${#strings.unescapeJava(note)}"></p>
 				</th:block>
 			</div>
 		</div>

+ 101 - 17
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html

@@ -97,8 +97,8 @@
 							<span class="sale_percent" th:if="${goodsInfo.dcRate > 0}" th:text="|${#numbers.formatDecimal(goodsInfo.dcRate,0,0)}%|">30%</span>
 						</p>
 						<p class="save_point" th:if="${goodsInfo.pntAmt > 0}">스타일포인트 <th:block th:text="${#numbers.formatInteger(goodsInfo.pntAmt, 0,'COMMA')}"></th:block>P 적립예정</p>
-						<div class="btn_group_flex">
-							<div><button type="button" class="btn btn_default" id="btn_saleCoupon_pop" th:if="${goodsCouponList != null and !goodsCouponList.empty}" th:onclick="cfGoodsCouponInfo([[${goodsInfo.goodsCd}]],[[${goodsInfo.goodsType}]])">쿠폰받기</button></div>
+						<div class="btn_group_flex" th:if="${goodsCouponList != null and !goodsCouponList.empty}">
+							<div><button type="button" class="btn btn_default" id="btn_saleCoupon_pop"  th:onclick="cfGoodsCouponInfo([[${goodsInfo.goodsCd}]],[[${goodsInfo.goodsType}]])">쿠폰받기</button></div>
 						</div>
 					</div>
 				</div>
@@ -635,7 +635,12 @@
 											<th:block th:if="${bestReview.reviewAttachList != null and !bestReview.reviewAttachList.empty}">
 											<div class="pic" >
 												<th:block th:each="reviewAttach, attachStatus : ${bestReview.reviewAttachList}" th:if="${attachStatus.first}">
-												<span class="thumb " th:classAppend="${(reviewAttach.fileGb == 'M') ? 'mov' :''}"  th:style="${'background-image:url('+imgUrl+ reviewAttach.sysFileNm+');'}"></span><!-- 동영상의 썸네일일 경우 mov 클래스 추가 -->
+													<th:block th:if="${reviewAttach.fileGb == 'M'}" >
+												<span class="thumb mov" th:style="${'background-image:url('+kollusMediaUrl+'/poster/'+reviewAttach.kmcKey+');'}"></span><!-- 동영상의 썸네일일 경우 mov 클래스 추가 -->
+													</th:block>
+													<th:block th:unless="${reviewAttach.fileGb == 'M'}" >
+												<span class="thumb" th:style="${'background-image:url('+imgUrl+ reviewAttach.sysFileNm+');'}"></span>
+													</th:block>
 												</th:block>
 											</div>
 											</th:block>
@@ -824,15 +829,20 @@
 								</span>
 							</div>
 							<div class="form_field">
-							<th:block th:each="goodsOption2, status : ${goodsOption2List}"> <!--  품절사이즈 미노출 -->
-							<th:block th:if="${goodsOption2.soldoutYn == 'N' and goodsOption2.stockQty > 0}">
+							<th:block th:each="goodsOption2, status : ${goodsOption2List}">  
 								<div> 
-									<input type="radio" name="opt"  th:id="${goodsOption2.optCd}" 
+									<th:block th:if="${goodsOption2.soldoutYn == 'Y' or goodsOption2.stockQty <= 0}" >
+									<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}">90</span></label>
+									</th:block>
+									<th:block th:unless="${goodsOption2.soldoutYn == 'Y' or goodsOption2.stockQty <= 0}" >
+									<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}" th:onclick="fnViewStock(this, [[${goodsInfo.goodsCd}]],[[${goodsOption2.optCd}]],[[${goodsOption2.optCd1}]],[[${goodsOption2.optCd2}]],[[${goodsInfo.minOrdQty}]], [[${goodsInfo.maxOrdQty}]] )" ><span th:text="${goodsOption2.optCd2}">90</span></label>
+									</th:block>
 								</div>
 							</th:block>
-							</th:block>
 						</div>
 						</div>
 						<!-- 해당상품 품절시 노출 -->
@@ -844,8 +854,7 @@
 							</div>
 							<div class="number_count">
 								<span class="minus min_val" onclick="fnAdjustOrderEa(this);" adjust="-"><em class="sr-only">감소</em></a></span>
-								<input type="text" name="cea" maxlength="3" style="ime-mode:disabled" th:value="${goodsInfo.minOrdQty}" onblur="fnChangeOrderEa(this)"
-									th:attr="minOrdQty=${goodsInfo.minOrdQty}, maxOrdQty=${goodsInfo.maxOrdQty}" data-valid-type="numeric">
+								<input type="text" name="cea" maxlength="3" style="ime-mode:disabled" th:value="${goodsInfo.minOrdQty}" readonly>
 								<input type="hidden" name="coption" value=""   th:attr="price=${goodsInfo.currPrice}">
 								<span class="plus" onclick="fnAdjustOrderEa(this);" adjust="+"><em class="sr-only">추가</em></span>
 							</div>
@@ -1090,6 +1099,72 @@
 		}
 	}
 	
+	//사이즈 클릭시 - 단품
+	var fnViewStock = function(obj, goodsCd, optCd, optCd1, optCd2,  minOrdQty, maxOrdQty) {
+		let $obj = $(obj);
+		let selfGoodsYn = $("#cartForm  input[name=selfGoodsYn]").val();
+		let $target = null;
+		if (selfGoodsYn == "Y"){
+			//$target = $obj;
+			$target = $obj.parent().find('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);
+
+				$('.price_box').show();
+				fnSetTotalPrice();
+				
+				// 모바일에서 작업해야함
+				if ('P' != _frontGb) {
+					$("#cartForm  input[name=opt]").parent().find('label').removeClass('on');
+					$("#cartForm  input[name=opt]").each(function(){
+						if ($(this).attr('optCd') == optCd){
+							$(this).parent().find('label').addClass('on');
+						}
+					});
+				}
+			}
+
+		}, "text");
+	}
+	
 	//사이즈 클릭시 - 입점단품
 	var fnViewStockSelfNo = function(obj) {
 		
@@ -1671,13 +1746,23 @@
 		$('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'));	
-				}
-			});	
 			
+			if("G056_N" == $("#cartForm  input[name=goodsType]").val() && "Y" == $("#cartForm  input[name=selfGoodsYn]").val()){
+				let target=$('.opt_size').find('input[name=opt]');
+				target.each(function() {
+					if ($(this).is(":checked")){
+						addPrice += Number($(this).attr('addPrice'));	
+					}
+				});	
+			}else{
+			
+				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;
@@ -1963,13 +2048,12 @@
 		$(document).on('click','.pd_descrp .btn_more_box button',function(e){
 			$('.pd_descrp .cont_body').toggleClass('on'); 
 			$(this).toggleClass('active');
-			$(this).parent('.btn_more_box').toggleClass('covered');
+			$(this).parents('.btn_more_box').toggleClass('covered');
 			var descrpToggle = $(this).find('span');
 			$(descrpToggle).text($(descrpToggle).text() == '상세정보 더보기' ? '상세정보 접기' : '상세정보 더보기');
 			return false;
 		}); 
 		
-
 		
 		//슬라이드 - 함께하면 할인되는 다다익선 상품
 		var togetherItemSwiper = new Swiper('.pd .pd_together .area_slider .swiper-container', {

+ 20 - 20
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailReviewFormMob.html

@@ -83,7 +83,7 @@
 						<dt>작음</dt>
 						<dd>
 							<span class="ratio">
-								<em class="progbar" th:style="${'width:'+scoreSize1+'%;' }"></em>
+								<em class="progbar" th:style="${'width:'+scoreSize1+'%'}" th:styleappend="${scoreSize1} <= 0 ? '; margin-left:-8px': ''"></em>
 							</span>
 							<span class="percent"><th:block th:text="${scoreSize1}"></th:block>%</span>
 						</dd>
@@ -92,7 +92,7 @@
 						<dt>딱맞음</dt>
 						<dd>
 							<span class="ratio">
-								<em class="progbar" th:style="${'width:'+scoreSize2+'%;' }"></em>
+								<em class="progbar" th:style="${'width:'+scoreSize2+'%;' }" th:styleappend="${scoreSize2} <= 0 ? '; margin-left:-8px': ''"></em>
 							</span>
 							<span class="percent"><th:block th:text="${scoreSize2}"></th:block>%</span>
 						</dd>
@@ -101,7 +101,7 @@
 						<dt>큼</dt>
 						<dd>
 							<span class="ratio">
-								<em class="progbar" th:style="${'width:'+scoreSize3+'%;' }"></em>
+								<em class="progbar" th:style="${'width:'+scoreSize3+'%;' }" th:styleappend="${scoreSize3} <= 0 ? '; margin-left:-8px': ''"></em>
 							</span>
 							<span class="percent"><th:block th:text="${scoreSize3}"></th:block>%</span>
 						</dd>
@@ -134,7 +134,7 @@
 						<dt>밝음</dt>
 						<dd>
 							<span class="ratio">
-								<em class="progbar" th:style="${'width:'+scoreColor1+'%;' }"></em>
+								<em class="progbar" th:style="${'width:'+scoreColor1+'%;' }" th:styleappend="${scoreColor1} <= 0 ? '; margin-left:-8px': ''"></em>
 							</span>
 							<span class="percent"><th:block th:text="${scoreColor1}"></th:block>%</span>
 						</dd>
@@ -143,7 +143,7 @@
 						<dt>똑같음</dt>
 						<dd>
 							<span class="ratio">
-								<em class="progbar" th:style="${'width:'+scoreColor2+'%;' }"></em>
+								<em class="progbar" th:style="${'width:'+scoreColor2+'%;' }" th:styleappend="${scoreColor2} <= 0 ? '; margin-left:-8px': ''"></em>
 							</span>
 							<span class="percent"><th:block th:text="${scoreColor2}"></th:block>%</span>
 						</dd>
@@ -152,7 +152,7 @@
 						<dt>어두움</dt>
 						<dd>
 							<span class="ratio">
-								<em class="progbar" th:style="${'width:'+scoreColor3+'%;' }"></em>
+								<em class="progbar" th:style="${'width:'+scoreColor3+'%;' }" th:styleappend="${scoreColor3} <= 0 ? '; margin-left:-8px': ''"></em>
 							</span>
 							<span class="percent"><th:block th:text="${scoreColor3}"></th:block>%</span>
 						</dd>
@@ -186,7 +186,7 @@
 						<dt>슬림</dt>
 						<dd>
 							<span class="ratio">
-								<em class="progbar" th:style="${'width:'+scoreFit1+'%;' }"></em>
+								<em class="progbar" th:style="${'width:'+scoreFit1+'%;' }" th:styleappend="${scoreFit1} <= 0 ? '; margin-left:-8px': ''"></em>
 							</span>
 							<span class="percent"><th:block th:text="${scoreFit1}"></th:block>%</span>
 						</dd>
@@ -195,7 +195,7 @@
 						<dt>레귤러</dt>
 						<dd>
 							<span class="ratio">
-								<em class="progbar" th:style="${'width:'+scoreFit2+'%;' }"></em>
+								<em class="progbar" th:style="${'width:'+scoreFit2+'%;' }" th:styleappend="${scoreFit2} <= 0 ? '; margin-left:-8px': ''"></em>
 							</span>
 							<span class="percent"><th:block th:text="${scoreFit2}"></th:block>%</span>
 						</dd>
@@ -204,7 +204,7 @@
 						<dt>오버</dt>
 						<dd>
 							<span class="ratio">
-								<em class="progbar" th:style="${'width:'+scoreFit3+'%;' }"></em>
+								<em class="progbar" th:style="${'width:'+scoreFit3+'%;' }" th:styleappend="${scoreFit3} <= 0 ? '; margin-left:-8px': ''"></em>
 							</span>
 							<span class="percent"><th:block th:text="${scoreFit3}"></th:block>%</span>
 						</dd>
@@ -237,7 +237,7 @@
 						<dt>얇음</dt>
 						<dd>
 							<span class="ratio">
-								<em class="progbar" th:style="${'width:'+scoreThick1+'%;' }"></em>
+								<em class="progbar" th:style="${'width:'+scoreThick1+'%;' }" th:styleappend="${scoreThick1} <= 0 ? '; margin-left:-8px': ''"></em>
 							</span>
 							<span class="percent"><th:block th:text="${scoreThick1}"></th:block>%</span>
 						</dd>
@@ -246,7 +246,7 @@
 						<dt>적당함</dt>
 						<dd>
 							<span class="ratio">
-								<em class="progbar" th:style="${'width:'+scoreThick2+'%;' }"></em>
+								<em class="progbar" th:style="${'width:'+scoreThick2+'%;' }" th:styleappend="${scoreThick2} <= 0 ? '; margin-left:-8px': ''"></em>
 							</span>
 							<span class="percent"><th:block th:text="${scoreThick2}"></th:block>%</span>
 						</dd>
@@ -255,7 +255,7 @@
 						<dt>도톰함</dt>
 						<dd>
 							<span class="ratio">
-								<em class="progbar" th:style="${'width:'+scoreThick3+'%;' }"></em>
+								<em class="progbar" th:style="${'width:'+scoreThick3+'%;' }" th:styleappend="${scoreThick3} <= 0 ? '; margin-left:-8px': ''"></em>
 							</span>
 							<span class="percent"><th:block th:text="${scoreThick3}"></th:block>%</span>
 						</dd>
@@ -290,7 +290,7 @@
 						<dt>가벼움</dt>
 						<dd>
 							<span class="ratio">
-								<em class="progbar" th:style="${'width:'+scoreWeight1+'%;' }"></em>
+								<em class="progbar" th:style="${'width:'+scoreWeight1+'%;' }" th:styleappend="${scoreWeight1} <= 0 ? '; margin-left:-8px': ''"></em>
 							</span>
 							<span class="percent"><th:block th:text="${scoreWeight1}"></th:block>%</span>
 						</dd>
@@ -299,16 +299,16 @@
 						<dt>적당함</dt>
 						<dd>
 							<span class="ratio">
-								<em class="progbar" th:style="${'width:'+scoreWeight2+'%;' }"></em>
+								<em class="progbar" th:style="${'width:'+scoreWeight2+'%;' }" th:styleappend="${scoreWeight2} <= 0 ? '; margin-left:-8px': ''"></em>
 							</span>
-							<span class="percent"><th:block th:text="${scoreWeight2"></th:block>%</span>
+							<span class="percent"><th:block th:text="${scoreWeight2}"></th:block>%</span>
 						</dd>
 					</dl>
 					<dl th:class="${(scoreWeight3 >= scoreWeight1 and scoreWeight3 >= scoreWeight2) ? 'on' : ''}">
 						<dt>무거움</dt>
 						<dd>
 							<span class="ratio">
-								<em class="progbar" th:style="${'width:'+scoreWeight3+'%;' }"></em>
+								<em class="progbar" th:style="${'width:'+scoreWeight3+'%;' }" th:styleappend="${scoreWeight3} <= 0 ? '; margin-left:-8px': ''"></em>
 							</span>
 							<span class="percent"><th:block th:text="${scoreWeight3}"></th:block>%</span>
 						</dd>
@@ -341,7 +341,7 @@
 						<dt>작음</dt>
 						<dd>
 							<span class="ratio">
-								<em class="progbar" th:style="${'width:'+scoreBall1+'%;' }"></em>
+								<em class="progbar" th:style="${'width:'+scoreBall1+'%;' }" th:styleappend="${scoreBall1} <= 0 ? '; margin-left:-8px': ''"></em>
 							</span>
 							<span class="percent"><th:block th:text="${scoreBall1}"></th:block>%</span>
 						</dd>
@@ -350,16 +350,16 @@
 						<dt>딱맞음</dt>
 						<dd>
 							<span class="ratio">
-								<em class="progbar" th:style="${'width:'+scoreBall2+'%;' }"></em>
+								<em class="progbar" th:style="${'width:'+scoreBall2+'%;' }" th:styleappend="${scoreBall2} <= 0 ? '; margin-left:-8px': ''"></em>
 							</span>
-							<span class="percent"><th:block th:text="${scoreBall2"></th:block>%</span>
+							<span class="percent"><th:block th:text="${scoreBall2}"></th:block>%</span>
 						</dd>
 					</dl>
 					<dl th:class="${(scoreBall3 >= scoreBall1 and scoreBall3 >= scoreBall2) ? 'on' : ''}">
 						<dt>큼</dt>
 						<dd>
 							<span class="ratio">
-								<em class="progbar" th:style="${'width:'+scoreBall3+'%;' }"></em>
+								<em class="progbar" th:style="${'width:'+scoreBall3+'%;' }" th:styleappend="${scoreBall3} <= 0 ? '; margin-left:-8px': ''"></em>
 							</span>
 							<span class="percent"><th:block th:text="${scoreBall3}"></th:block>%</span>
 						</dd>

+ 1 - 4
src/main/webapp/WEB-INF/views/mob/mypage/MypageExchangeFormMob.html

@@ -373,9 +373,6 @@ $(document).ready(function() {
 		$('#withdraw').click();
 		$('.wdGb').css('display','none');
 	}
-
-	// 교환사유 선택 처리
-	$('#exchangeReasonPop .lap .popup_con .button_list button').eq(0).click();
 });
 
 // 교환수량버튼기능
@@ -708,7 +705,7 @@ var delvAddrSet = function(delvObj) {
 
 		$('#chgerNm').text(recipNm);
 		$('#chgerPhnno').text(recipPhnno);
-		$('#chgerAddr').html(chgerAddr);
+		$('#chgerAddr').text(chgerAddr);
 	}
 }
 

+ 8 - 8
src/main/webapp/WEB-INF/views/mob/mypage/MypageReturnFormMob.html

@@ -185,6 +185,12 @@
 							<button type="button" id="btn_adrsChange_pop" class="btn_popup" onclick="fnChangeDeliveryAddr();"><span>회수지 변경</span></button>
 						</div>
 						<div class="tbl">
+							<input type="hidden" name="chgerNm" 		th:value="${deliveryAddrInfo.recipNm}">
+							<input type="hidden" name="chgerPhnno" 		th:value="${deliveryAddrInfo.recipPhnno}">
+							<input type="hidden" name="chgerZipcode" 	th:value="${deliveryAddrInfo.recipZipcode}">
+							<input type="hidden" name="chgerBaseAddr" 	th:value="${deliveryAddrInfo.recipBaseAddr}">
+							<input type="hidden" name="chgerDtlAddr" 	th:value="${deliveryAddrInfo.recipDtlAddr}">
+							<input type="hidden" name="chgerRtnMemo" 	th:value="${deliveryAddrInfo.delvMemo}">
 							<div class="ship_info">
 								<dl>
 									<div class="name">
@@ -201,12 +207,6 @@
 									</div>
 									<div class="desc_txt">택배사에서 반품 상품을 직접 회수할 장소 선택</div>
 								</dl>
-								<input type="hidden" name="chgerNm" 		th:value="${deliveryAddrInfo.recipNm}">
-								<input type="hidden" name="chgerPhnno" 		th:value="${deliveryAddrInfo.recipPhnno}">
-								<input type="hidden" name="chgerZipcode" 	th:value="${deliveryAddrInfo.recipZipcode}">
-								<input type="hidden" name="chgerBaseAddr" 	th:value="${deliveryAddrInfo.recipBaseAddr}">
-								<input type="hidden" name="chgerDtlAddr" 	th:value="${deliveryAddrInfo.recipDtlAddr}">
-								<input type="hidden" name="chgerRtnMemo" 	th:value="${deliveryAddrInfo.delvMemo}">
 							</div>
 						</div>
 					</div>
@@ -360,7 +360,7 @@
 			<div class="button_list">
 				<th:block th:if="${returnReason}" th:each="oneData, status : ${returnReason}">
 					<button type="button" th:attr="chgReason=${oneData.cd}" onclick="fnChangeReturnReason(this);">
-						<span th:text="${oneData.cdNm}">단순 변심</span>
+						<span th:text="${oneData.cdNm}"></span>
 					</button>
 				</th:block>
 			</div>
@@ -744,7 +744,7 @@ var delvAddrSet = function(delvObj) {
 	
 	$('#chgerNm').text(chgerNm);
 	$('#chgerPhnno').text(chgerPhnno);
-	$('#chgerAddr').html(chgerAddr);
+	$('#chgerAddr').text(chgerAddr);
 }
 
 let isValid = false;

+ 1 - 4
src/main/webapp/WEB-INF/views/mob/mypage/NoMemberExchangeFormMob.html

@@ -372,9 +372,6 @@ $(document).ready(function() {
 
 	// 타이틀명
 	$('#htopTitle').text('교환 신청');
-
-	// 교환사유 선택 처리
-	$('#exchangeReasonPop .lap .popup_con .button_list button').eq(0).click();
 });
 
 // 교환수량버튼기능
@@ -710,7 +707,7 @@ var delvAddrSet = function(delvObj) {
 
 		$('#chgerNm').text(recipNm);
 		$('#chgerPhnno').text(recipPhnno);
-		$('#chgerAddr').html(chgerAddr);
+		$('#chgerAddr').text(chgerAddr);
 	}
 }
 

+ 8 - 8
src/main/webapp/WEB-INF/views/mob/mypage/NoMemberReturnFormMob.html

@@ -184,6 +184,12 @@
 							<button type="button" id="btn_adrsChange_pop" class="btn_popup" onclick="fnChangeDeliveryAddr();"><span>회수지 변경</span></button>
 						</div>
 						<div class="tbl">
+							<input type="hidden" name="chgerNm" 		th:value="${deliveryAddrInfo.recipNm}">
+							<input type="hidden" name="chgerPhnno" 		th:value="${deliveryAddrInfo.recipPhnno}">
+							<input type="hidden" name="chgerZipcode" 	th:value="${deliveryAddrInfo.recipZipcode}">
+							<input type="hidden" name="chgerBaseAddr" 	th:value="${deliveryAddrInfo.recipBaseAddr}">
+							<input type="hidden" name="chgerDtlAddr" 	th:value="${deliveryAddrInfo.recipDtlAddr}">
+							<input type="hidden" name="chgerRtnMemo" 	th:value="${deliveryAddrInfo.delvMemo}">
 							<div class="ship_info">
 								<dl>
 									<div class="name">
@@ -200,12 +206,6 @@
 									</div>
 									<div class="desc_txt">택배사에서 반품 상품을 직접 회수할 장소 선택</div>
 								</dl>
-								<input type="hidden" name="chgerNm" 		th:value="${deliveryAddrInfo.recipNm}">
-								<input type="hidden" name="chgerPhnno" 		th:value="${deliveryAddrInfo.recipPhnno}">
-								<input type="hidden" name="chgerZipcode" 	th:value="${deliveryAddrInfo.recipZipcode}">
-								<input type="hidden" name="chgerBaseAddr" 	th:value="${deliveryAddrInfo.recipBaseAddr}">
-								<input type="hidden" name="chgerDtlAddr" 	th:value="${deliveryAddrInfo.recipDtlAddr}">
-								<input type="hidden" name="chgerRtnMemo" 	th:value="${deliveryAddrInfo.delvMemo}">
 							</div>
 						</div>
 					</div>
@@ -359,7 +359,7 @@
 			<div class="button_list">
 				<th:block th:if="${returnReason}" th:each="oneData, status : ${returnReason}">
 					<button type="button" th:attr="chgReason=${oneData.cd}" onclick="fnChangeReturnReason(this);">
-						<span th:text="${oneData.cdNm}">단순 변심</span>
+						<span th:text="${oneData.cdNm}"></span>
 					</button>
 				</th:block>
 			</div>
@@ -749,7 +749,7 @@ var delvAddrSet = function(delvObj) {
 	
 	$('#chgerNm').text(chgerNm);
 	$('#chgerPhnno').text(chgerPhnno);
-	$('#chgerAddr').html(chgerAddr);
+	$('#chgerAddr').text(chgerAddr);
 }
 
 let isValid = false;

+ 4 - 3
src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html

@@ -24,7 +24,7 @@
 <!-- payment.js -->
 <script type="text/javascript" th:src="${@environment.getProperty('pg.kcp.js.url')}" src=""></script>
 <script type="text/javascript" src="/biz/payment.js"></script>
-<script type="text/javascript" src="/ux/plugins/approval_key.js"></script>
+<script type="text/javascript" src="/ux/plugins/approval_key.js" charset='euc-kr'></script>
 
 <form id="order_info" name="order_info" method="post" action="/order/pay/result/response" ></form>
 
@@ -1260,15 +1260,16 @@ var paymentInfoSet = function() {
 							
 							// 결재정보로드
 							$("#order_info").html(result);
+							$("#order_info input[name=Ret_URL]").val("http:" + _frontUrl + "/order/pay/result/response");
 							
 							var pgGb = $("#order_info input[name=pgGb]").val();
-							
+
 							if (pgGb == "NAVER") {
 								fnNaverPaymentReady();
 							} else if (pgGb == "KAKAO") {
 								fnKakaoPaymentReady();
 							} else if (pgGb == "KCP" || pgGb == "PAYCO") {
-								jsf__pay(document.order_info);
+								kcp_AJAX();
 							}
 						}
 					});

+ 3 - 2
src/main/webapp/WEB-INF/views/mob/pg/kcpOrderMob.html

@@ -27,8 +27,9 @@
 	<input type="hidden" name="van_code"		value="">							<!-- 인증시 필요한 파라미터(변경불가)-->
 	<input type="hidden" name="quotaopt"		th:value="${payment.quotaopt}"/>	<!-- 최대 할부 개월 수(0 ~ 18까지 설정 가능) -->
 	<input type="hidden" name="ipgm_date"		value=""/>							<!-- 가상계좌설정 -->
-	<input type="hidden" name="PayUrl"			th:value="${'http:' + @environment.getProperty('domain.front') + payment.payUrl}" id="PayUrl"/>	<!-- 결제 정보 등록시 응답 타입 ( 필드가 없거나 값이 '' 일경우 TEXT, 값이 XML 또는 JSON 지원 -->
-	<input type="hidden" name="Ret_URL"			th:value="${'http:' + @environment.getProperty('domain.front') + payment.retUrl}">			<!-- 리턴 URL (kcp와 통신후 결제를 요청할 수 있는 암호화 데이터를 전송 받을 가맹점의 주문페이지 URL) -->
+	<input type="hidden" name="PayUrl"			id="PayUrl"/>	<!-- 결제 정보 등록시 응답 타입 ( 필드가 없거나 값이 '' 일경우 TEXT, 값이 XML 또는 JSON 지원 -->
+	<!--<input type="hidden" name="Ret_URL"			th:value="${'http:' + @environment.getProperty('domain.front') + payment.retUrl}">-->			<!-- 리턴 URL (kcp와 통신후 결제를 요청할 수 있는 암호화 데이터를 전송 받을 가맹점의 주문페이지 URL) -->
+	<input type="hidden" name="Ret_URL"			/>
 
 	<input type="hidden" name="tablet_size"		value="1.0">						<!-- 화면 크기 조정 -->
 	<input type="hidden" name="response_type"	value="TEXT"/>						<!-- 결제 정보 등록시 응답 타입 ( 필드가 없거나 값이 '' 일경우 TEXT, 값이 XML 또는 JSON 지원 -->

+ 6 - 6
src/main/webapp/WEB-INF/views/mob/planning/PlanningEventPollFormMob.html

@@ -35,7 +35,7 @@
 							<form action="">
 							<th:block th:each="pollData, pollStat : ${pollList}">
 								<div class="survey_row q1" th:if="${pollData.pollQtype == '10'}">
-									<h4 th:text=${pollData.pollQtitle}></h4>
+									<h4><span class="question" th:text="'Q'+${pollStat.index+1}+'.'"></span>[[${pollData.pollQtitle}]]</h4>
 									<div class="answer">
 										<div class="form_field">
 											<ul class="clear" th:id="${pollData.pollQsq+'_'+(pollStat.index+1)}">
@@ -134,7 +134,7 @@
 									</div>
 								</div>
 								<div class="survey_row q2" th:if="${pollData.pollQtype == '20'}">
-									<h4 th:text=${pollData.pollQtitle}></h4>
+									<h4><span class="question" th:text="'Q'+${pollStat.index+1}+'.'"></span>[[${pollData.pollQtitle}]]</h4>
 									<div class="answer">
 										<div class="form_field">
 											<ul class="clear" th:id="${pollData.pollQsq+'_'+(pollStat.index+1)}">
@@ -173,15 +173,15 @@
 									</div>
 								</div>
 
-								<div class="survey_row q4" th:if="${pollData.pollQtype == '40'}">
-									<h4 th:text=${pollData.pollQtitle}></h4> <!-- 210414_수정 : br태그 삭제 -->
+								<div class="survey_row q3" th:if="${pollData.pollQtype == '40'}">
+									<h4><span class="question" th:text="'Q'+${pollStat.index+1}+'.'"></span>[[${pollData.pollQtitle}]]</h4>
 									<div class="answer">
 										<textarea class="doc_ans" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="${pollData.pollQsq+'_'+(pollStat.index+1)}" placeholder="1,000자 이내로 입력해 주세요." style="resize: none;"></textarea>
 										<p class="txt_cnt"><span id="ans_cnt" class="c_primary">0</span>/1,000</p>
 									</div>
 								</div>
-								<div class="survey_row q3" th:if="${pollData.pollQtype == '30'}">
-								<h4 th:text=${pollData.pollQtitle}></h4> <!-- 210414_수정 : br태그 삭제 -->
+								<div class="survey_row q4" th:if="${pollData.pollQtype == '30'}">
+								<h4><span class="question" th:text="'Q'+${pollStat.index+1}+'.'"></span>[[${pollData.pollQtitle}]]</h4>
 									<div class="answer">
 										<textarea class="q4_ans" name="" id="" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="${pollData.pollQsq+'_'+(pollStat.index+1)}"></textarea>
 									</div>

+ 3 - 1
src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb.html

@@ -1057,7 +1057,7 @@
 					$(".fillter").show();
 				}else{
 					$(".fillter").show();
-					fnCategoryGoodsInfiniteScrollInit();
+					// fnCategoryGoodsInfiniteScrollInit();
 					fnGoodsListSearch();
 					fnImgOnoff();
 				}
@@ -1076,6 +1076,8 @@
 				}
 			}
 		});
+
+
 		
 		/*]]>*/
 		

+ 3 - 4
src/main/webapp/WEB-INF/views/web/display/LookbookDetailFormWeb.html

@@ -82,9 +82,8 @@
 									<div class="swiper-wrapper">
 										<th:block th:if="${item.lookbookGoodsList != null and !item.lookbookGoodsList.empty}" th:each="goodsItem, goodsStatus : ${item.lookbookGoodsList}">
 											<div class="swiper-slide">
-												<div class="item_prod" th:classappend="${(goodsItem.stockQty <= 0 or goodsItem.soldoutYn == 'Y')}? 'unable' : ''"
-													 th:attr="goodsCd=${goodsItem.goodsCd}, optCdInfo=${goodsItem.optCdInfo}, minOrdQty=${goodsItem.minOrdQty},  goodsType=${goodsItem.goodsType}">
-													<div class="item_state">
+												<div class="item_prod" th:attr="goodsCd=${goodsItem.goodsCd}, optCdInfo=${goodsItem.optCdInfo}, minOrdQty=${goodsItem.minOrdQty},  goodsType=${goodsItem.goodsType}">
+													<div class="item_state" th:classappend="${(goodsItem.stockQty <= 0 or goodsItem.soldoutYn == 'Y')}? 'soldout' : ''">
 														<th:block th:each="optCd : ${#strings.arraySplit(goodsItem.optCdInfo,',')}">
 															<input type="hidden" name="lookbookGoodsOptCd" th:value="${optCd}"/>
 														</th:block>
@@ -250,7 +249,7 @@
 		
 		$target.each(function(){
 			goodsIdx ++;
-			if ($(this).hasClass('unable')) {
+			if ($(this).find('.item_state').hasClass('soldout')) {
 				
 			}else{
 				// 옵션확인

+ 12 - 8
src/main/webapp/WEB-INF/views/web/display/LookbookMainFormWeb.html

@@ -70,14 +70,18 @@
 								<div class="last_page" id="divLastPage" style="display: none;">
 									<span>마지막 페이지입니다.</span>
 								</div>
-								<ul class="clear no_con" id="divLookbookNoData" style="display: none;">
-									<li>
-										<p><img src="/images/pc/ico_content_none.png" alt="등록된 이벤트가 없습니다."></p>
-										<span>등록된 룩북이 없습니다.</span>
-										<a href="javascript:void(0);" th:unless="${lbInfo.lookbookGb=='BL'}" onclick="cfnGoToPage(_PAGE_MAIN);">홈으로 가기</a>
-										<a href="javascript:void(0);" th:if="${lbInfo.lookbookGb=='BL'}" th:onclick="cfnGoToBrandMain([[${lbInfo.brandCd}]]);" th:text="${brandGroupInfo.brandGroupNm+' 홈으로 가기'}"></a>
-									</li>
-								</ul>
+							</div>
+
+							<div class="nodata" id="divLookbookNoData" style="display: none;">
+								<div class="txt_box">
+									<p>
+										등록된 룩북이 없습니다.
+									</p>
+								</div>
+								<div class="btn_box">
+									<button class="btn btn_default" th:unless="${lbInfo.lookbookGb=='BL'}" onclick="cfnGoToPage(_PAGE_MAIN);"><span>메인으로 가기</span></button>
+									<button class="btn btn_default" th:if="${lbInfo.lookbookGb=='BL'}" th:onclick="cfnGoToBrandMain([[${lbInfo.brandCd}]]);"><span th:text="${brandGroupInfo.brandGroupNm+' 홈으로 가기'}"><em>TBJ</em>&nbsp;메인으로 가기 </span></button>
+								</div>
 							</div>
 						</div>
 					</div>

+ 11 - 7
src/main/webapp/WEB-INF/views/web/goods/GoodsCouponFormWeb.html

@@ -40,7 +40,7 @@
 								</p>
 							</div>
 							<th:block th:if="${goodsCoupon.custPubLimitQty > 0 and goodsCoupon.custPubLimitQty <= goodsCoupon.custCouponCnt}">
-							<button type="button" class="btn btn_dark btn_block btn_coupon_down"   disabled="disabled"><span>받기완료</span></button>
+							<button type="button" class="btn btn_dark btn_block btn_coupon_down"  disabled="disabled"><span>받기완료</span></button>
 							</th:block>
 							<th:block th:unless="${goodsCoupon.custPubLimitQty > 0 and goodsCoupon.custPubLimitQty <= goodsCoupon.custCouponCnt}">
 							<button type="button" class="btn btn_dark btn_block btn_coupon_down" th:attr="cpnId=${goodsCoupon.cpnId}" th:id="${'coupon_'+goodsCoupon.cpnId}" onclick="fnGoodsCouponDown(this);"><span>쿠폰받기</span></button>
@@ -50,9 +50,9 @@
 				</ul>
 			</div>
 		</form>	
-		</div>
+		</div> 
 		<div class="modal-footer">
-			<button type="button" class="btn btn_primary btn_all_cpdown" onclick="fnGoodsCouponDownAll();"><span>쿠폰 모두 받기</span></button>
+			<button type="button"  id="btn_all_coupon" class="btn btn_primary btn_all_cpdown" onclick="fnGoodsCouponDownAll();"><span>쿠폰 모두 받기</span></button>
 		</div>
 	</div>
 </div>
@@ -143,12 +143,14 @@
 								if (Number(coupon.custPubLimitQty) <= Number(coupon.custCouponCnt)){
 									$('#coupon_'+ coupon.cpnId).html('<span>받기완료</span>');
 									$('#coupon_'+ coupon.cpnId).attr('disabled', true);
+									$('#coupon_'+ coupon.cpnId).find('span::after').attr('content','');
 								}
 							}
 							if (Number(coupon.TotPubLimitQty) > 0){
 								if (Number(coupon.TotPubLimitQty) <= Number(coupon.CustCouponCnt)){
 									$('#coupon_'+ coupon.cpnId).html('<span>받기완료</span>');
 									$('#coupon_'+ coupon.cpnId).attr('disabled', true);
+									$('#coupon_'+ coupon.cpnId).find('span::after').attr('content','');
 								}
 							}
 						}
@@ -162,16 +164,18 @@
 	
 	var jfCouponCheck = function(){
 		let couponDownAbleYn = "N";
-		$('.btn_coupon_down').each(function(){
+		$('#goodsCouponForm').find('.btn_coupon_down').each(function(){
 			if (!$(this).attr('disabled')){
 				couponDownAbleYn = "Y";
 			}
 		});	
 		
 		if(couponDownAbleYn == "N"){
-			$('.btn_all_cpdown').addClass('btn_coupon_done');
-			$('.btn_all_cpdown').attr('disabled', true);
-			$('.btn_all_cpdown').find('span').text('쿠폰 모두 받기 완료');
+			
+			$('#btn_all_coupon').removeClass('btn_primary');
+			$('#btn_all_coupon').addClass('btn_coupon_done');
+			$('#btn_all_coupon').attr('disabled', true);
+			$('#btn_all_coupon').find('span').text('쿠폰 모두 받기 완료');
 		}
 	}	
 	

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

@@ -29,7 +29,7 @@
 							구분
 						</th>
 						<td>
-							<th:block th:if="${goodsInfo.quikDelvYn = 'Y'}" >총알배송(오전 10시까지 주문 시)</th:block>
+							<th:block th:if="${goodsInfo.quikDelvYn = 'Y'}" >일반배송/총알배송(오전 10시까지 주문 시)</th:block>
 							<th:block th:unless="${goodsInfo.quikDelvYn = 'Y'}" >일반배송</th:block>
 						</td>
 					</tr>

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

@@ -884,7 +884,7 @@
 							<p class="tit normal" th:text="${goodsCompose.goodsSafeNo.certFormNm + ' '+ goodsCompose.goodsSafeNo.certTypeNm}"></p>
 							</th:block>
 							<p class="normal" >
-								<th:block th:if="${goodsCompose.goodsSafeNo.certNum}" th:text="${'인goodsCompose.증번호: ' + goodsSafeNo.certNum}"></th:block>
+								<th:block th:if="${goodsCompose.goodsSafeNo.certNum}" th:text="${'인증번호: ' + goodsCompose.goodsSafeNo.certNum}"></th:block>
 								<th:block th:if="${goodsCompose.goodsSafeNo.certFormGb != 'G084_4' and  goodsCompose.goodsSafeNo.certFormGb != 'G084_5' }">
 								<a th:href="@{http://www.safetykorea.kr/search/searchPop(certNum=${goodsCompose.goodsSafeNo.certNum})}" target="_blank" class="linktxt3">상세보기</a>
 								</th:block>
@@ -1108,12 +1108,78 @@
 <script th:inline="javascript">
 /*<![CDATA[*/
 	
+
 	var cateNm = "";
 	// 다다익선 상품
 	var fnGoodsTmtbSearch = function(params) {
 		gagajf.ajaxSubmit("/goods/detail/tmtb/frame", "html", "goodsTmtbArea", params);
 	}
 	
+	//사이즈 클릭시 - 단품
+	var fnViewStock = function(obj, goodsCd, optCd, optCd1, optCd2,  minOrdQty, maxOrdQty) {
+		let $obj = $(obj);
+		let selfGoodsYn = $("#cartForm  input[name=selfGoodsYn]").val();
+		let $target = null;
+		if (selfGoodsYn == "Y"){
+			$target = $obj;
+			$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);
+
+				$('.price_box').show();
+				fnSetTotalPrice();
+				
+				// 모바일에서 작업해야함
+				if ('P' != _frontGb) {
+					$("#cartForm  input[name=opt]").parent().find('label').removeClass('on');
+					$("#cartForm  input[name=opt]").each(function(){
+						if ($(this).attr('optCd') == optCd){
+							$(this).parent().find('label').addClass('on');
+						}
+					});
+				}
+			}
+
+		}, "text");
+	}
+	
 	//세트 사이즈 클릭시
 	function fnViewStockSet(obj, goodsCd, optCd1, optCd2, minOrdQty, maxOrdQty) {
 		
@@ -1835,6 +1901,7 @@
 			return false;
 		});
 
+		
 		var opt_selecter01 = new sCombo('.opt_select .select_custom.item_opt1.item_opt1_1');
 		var opt_selecter01_1 = new sCombo('.opt_set_select .select_custom.item_opt1.item_opt1_1');
 		var opt_selecter01_2 = new sCombo('.opt_set_select .select_custom.item_opt1.item_opt1_2');

+ 2 - 2
src/main/webapp/WEB-INF/views/web/mypage/MypageCreListFormWeb.html

@@ -157,7 +157,7 @@
 				</div>
 				<form id="searchForm" name="searchForm" th:action="@{'/mypage/cre/list'}" th:method="post">
 					<input type="hidden" name="pageNo" value=1 />
-					<input type="hidden" name="pageSize" value=5 />
+					<input type="hidden" name="pageSize" value=10 />
 					<input type="hidden" name="pageUnit" value=10 />
 					<input type="hidden" name="chgStat" value="" />
 					<input type="hidden" name="stDate" value="" />
@@ -192,7 +192,7 @@
 		$('#rdi-month2').click();
 
 		// Initialize a pagination
-		gagaPaging.init('searchForm', fnSearchCallback, 'paging', 5, 10);
+		gagaPaging.init('searchForm', fnSearchCallback, 'paging', 10, 10);
 		
 		// Load data
 		gagaPaging.load(1);

+ 6 - 9
src/main/webapp/WEB-INF/views/web/mypage/MypageExchangeFormWeb.html

@@ -196,9 +196,8 @@
 										</tr>
 										<tr>
 											<th>주소</th>
-											<td id="chgerAddr">
-												<span th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|"></span>
-	<!--											<th:block th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|"></th:block>-->
+											<td>
+												<span id="chgerAddr" th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|"></span>
 												<button type="button" class="btn btn_default btn_sm" onclick="fnChangeAddr('chger');"><span>회수지 변경</span></button>
 											</td>
 										</tr>
@@ -322,9 +321,6 @@
 			$('#withdraw').click();
 			$('.wdGb').css('display','none');
 		}
-
-		// 교환사유 선택 처리
-		$('.select_reason .combo .list li').eq(0).click();
 	});
 
 	// 교환 옵션 변경 팝업
@@ -615,8 +611,8 @@
 			$('#exchangeForm input[name=recipDtlAddr]').val(recipDtlAddr);
 			$('#exchangeForm input[name=delvMemo]').val(delvMemo);
 		} else if (addrGb == 'chger') {
-			let chgerAddr = recipBaseAddr + ' ' + recipDtlAddr + '\n';
-			chgerAddr += '<button type="button" class="btn btn_default btn_sm" onclick="fnChangeAddr(\'chger\');"><span>회수지 변경</span></button>';
+			//let chgerAddr = recipBaseAddr + ' ' + recipDtlAddr + '\n';
+			//chgerAddr += '<button type="button" class="btn btn_default btn_sm" onclick="fnChangeAddr(\'chger\');"><span>회수지 변경</span></button>';
 
 			$('#exchangeForm input[name=chgerNm]').val(recipNm);
 			$('#exchangeForm input[name=chgerPhnno]').val(recipPhnno);
@@ -627,7 +623,8 @@
 
 			$('#chgerNm').text(recipNm);
 			$('#chgerPhnno').text(recipPhnno);
-			$('#chgerAddr').html(chgerAddr);
+			$('#chgerAddr').text(recipBaseAddr + ' ' + recipDtlAddr);
+			//$('#chgerAddr').html(chgerAddr);
 		}
 	}
 

+ 2 - 2
src/main/webapp/WEB-INF/views/web/mypage/MypageOrderListFormWeb.html

@@ -179,7 +179,7 @@
 				</div>
 				<form id="searchForm" name="searchForm" th:action="@{'/mypage/order/list'}" th:method="post">
 					<input type="hidden" name="pageNo" value=1 />
-					<input type="hidden" name="pageSize" value=5 />
+					<input type="hidden" name="pageSize" value=10 />
 					<input type="hidden" name="pageUnit" value=10 />
 					<input type="hidden" name="ordDtlStat" value="" />
 					<input type="hidden" name="stDate" value="" />
@@ -214,7 +214,7 @@
 		$('#rdi-month2').click();
 
 		// Initialize a pagination
-		gagaPaging.init('searchForm', fnSearchCallback, 'paging', 5, 10);
+		gagaPaging.init('searchForm', fnSearchCallback, 'paging', 10, 10);
 		
 		// Load data
 		gagaPaging.load(1);

+ 10 - 16
src/main/webapp/WEB-INF/views/web/mypage/MypageReturnFormWeb.html

@@ -127,7 +127,7 @@
 														<div class="select">반품 사유를 선택하세요.</div>
 														<ul class="list">
 															<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" 추가  -->
-															<li class="selected">반품 사유를 선택하세요.</li>
+<!--															<li class="selected">반품 사유를 선택하세요.</li>-->
 															<li th:if="${returnReason}" th:each="oneData, status : ${returnReason}" th:attr="chgReason=${oneData.cd}" th:text="${oneData.cdNm}" onclick="fnChangeReturnReason(this);"></li>
 														</ul>
 													</div>
@@ -196,9 +196,8 @@
 										</tr>
 										<tr>
 											<th>주소</th>
-											<td id="chgerAddr">
-												<span th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|"></span>
-<!--												<th:block th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|"></th:block>-->
+											<td>
+												<span id="chgerAddr" th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|"></span>
 												<button type="button" class="btn btn_default btn_sm" onclick="fnChangeDeliveryAddr();"><span>회수지 변경</span></button>
 											</td>
 										</tr>
@@ -320,7 +319,7 @@
 							</p>
 						</div>
 						<div class="btn_footer_area">
-							<button type="button" class="btn btn_default btn_md" onclick="cfnGoToPage(_PAGE_MYPAGE_CRE_LIST)"><span>취소</span></button>
+							<button type="button" class="btn btn_default btn_md" onclick="cfnGoToPage(_PAGE_MYPAGE_ORDER_LIST)"><span>취소</span></button>
 							<button type="button" id="btn_refund_pop" class="btn btn_dark btn_md" onclick="fnReturn()"><span>반품 신청</span></button>
 						</div>
 					</div>
@@ -355,12 +354,6 @@
 		// 마이페이지 location 설정
 		fnSetMypageLocation('취소/반품/교환 내역', '_PAGE_MYPAGE_CRE_LIST', '반품 신청');
 
-		// 반품상품 수량 셀렉트박스 활성화
-		//var goods_count_selecter = new sCombo('.myOrderView .part_goods .select_custom.select_count');
-
-		// 반품사유 셀렉트박스 활성화
-		//var return_reason_selecter = new sCombo('.myOrderView .tbl.type1 td .select_custom.select_reason');
-		
 		// 셀렉트박스 활성화
 		$('.select_custom').each(function() {
 			new sCombo($(this));
@@ -410,8 +403,7 @@
 		let accountNm = $('#returnForm input[name=accountNm]').val();
 		let bankCd = $('#returnForm input[name=bankCd]').val();
 
-		//if (paymentInfo.payMeans == 'G014_20' && paymentInfo.payStat == 'G016_30' && (gagajf.isNull(accountNo) || gagajf.isNull(accountNm) || gagajf.isNull(bankCd))) {
-		if (true) {
+		if (paymentInfo.payMeans == 'G014_20' && paymentInfo.payStat == 'G016_30' && (gagajf.isNull(accountNo) || gagajf.isNull(accountNm) || gagajf.isNull(bankCd))) {
 			let data = {};
 			data.ordNo = oneData.ordNo;
 			data.accountNm = oneData.accountNm;
@@ -612,8 +604,9 @@
 		let chgerBaseAddr = delvObj.recipBaseAddr;
 		let chgerDtlAddr = delvObj.recipDtlAddr;
 		let delvMemo = delvObj.delvMemo;
-		let chgerAddr = chgerBaseAddr + ' ' + chgerDtlAddr + '\n';
-		chgerAddr += '<button type="button" class="btn btn_default btn_sm" onclick="fnChangeDeliveryAddr();"><span>회수지 변경</span></button>';
+		let chgerAddr = chgerBaseAddr + ' ' + chgerDtlAddr;
+		//let chgerAddr = chgerBaseAddr + ' ' + chgerDtlAddr + '\n';
+		//chgerAddr += '<button type="button" class="btn btn_default btn_sm" onclick="fnChangeDeliveryAddr();"><span>회수지 변경</span></button>';
 
 		$('#returnForm input[name=chgerNm]').val(chgerNm);
 		$('#returnForm input[name=chgerPhnno]').val(chgerPhnno);
@@ -624,7 +617,8 @@
 		
 		$('#chgerNm').text(chgerNm);
 		$('#chgerPhnno').text(chgerPhnno);
-		$('#chgerAddr').html(chgerAddr);
+		$('#chgerAddr').text(chgerAddr);
+		//$('#chgerAddr').html(chgerAddr);
 	}
 
 	// 환불계좌 등록 콜백 처리

+ 3 - 5
src/main/webapp/WEB-INF/views/web/mypage/MypageReviewFormWeb.html

@@ -103,8 +103,8 @@
 				<input type="hidden" name="pageSize" value="10" />
 			</form>
 			<form id="searchForm2" name="searchForm2" th:action="@{'/mypage/already/review/list'}" th:method="post">
-				<input type="hidden" name="pageNo2" value="1" />
-				<input type="hidden" name="pageSize2" value="10" />
+				<input type="hidden" name="pageNo" value="1" />
+				<input type="hidden" name="pageSize" value="10" />
 			</form>
 
 	<script src="/ux/plugins/gaga/gaga.paging.js"></script>
@@ -204,7 +204,6 @@
 		$('#nodata2').hide();
 		
 		$('#reviewList').html('');
-		
 		if (result.dataList2 != null && result.dataList2.length > 0) {
 			$.each(result.dataList2, function(idx, item) {
 				let html = '';
@@ -364,8 +363,7 @@
 			$('#nodata2').show();
 		}
 		// Create pagination
-		console.log(result.paging2.pageable2);
-		gagaPaging.createPagination(result.paging2.pageable2);
+		gagaPaging.createPagination(result.paging2.pageable);
 		
 	}
 	

+ 2 - 2
src/main/webapp/WEB-INF/views/web/mypage/NoMemberCreListFormWeb.html

@@ -157,7 +157,7 @@
 				</div>
 				<form id="searchForm" name="searchForm" th:action="@{'/noMember/cre/list'}" th:method="post">
 					<input type="hidden" name="pageNo" value=1 />
-					<input type="hidden" name="pageSize" value=5 />
+					<input type="hidden" name="pageSize" value=10 />
 					<input type="hidden" name="pageUnit" value=10 />
 					<input type="hidden" name="chgStat" value="" />
 					<input type="hidden" name="stDate" value="" />
@@ -195,7 +195,7 @@
 		$('#rdi-month2').click();
 
 		// Initialize a pagination
-		gagaPaging.init('searchForm', fnSearchCallback, 'paging', 5, 10);
+		gagaPaging.init('searchForm', fnSearchCallback, 'paging', 10, 10);
 		
 		// Load data
 		gagaPaging.load(1);

+ 6 - 8
src/main/webapp/WEB-INF/views/web/mypage/NoMemberExchangeFormWeb.html

@@ -195,8 +195,8 @@
 										</tr>
 										<tr>
 											<th>주소</th>
-											<td id="chgerAddr">
-												<span th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|"></span>
+											<td>
+												<span id="chgerAddr" th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|"></span>
 												<button type="button" class="btn btn_default btn_sm" onclick="fnChangeAddr('chger');"><span>회수지 변경</span></button>
 											</td>
 										</tr>
@@ -320,9 +320,6 @@
 			$('#withdraw').click();
 			$('.wdGb').css('display','none');
 		}
-
-		// 교환사유 선택 처리
-		$('.select_reason .combo .list li').eq(0).click();
 	});
 
 	// 교환 옵션 변경 팝업
@@ -614,8 +611,8 @@
 			$('#exchangeForm input[name=recipDtlAddr]').val(recipDtlAddr);
 			$('#exchangeForm input[name=delvMemo]').val(delvMemo);
 		} else if (addrGb == 'chger') {
-			let chgerAddr = recipBaseAddr + ' ' + recipDtlAddr + '\n';
-			chgerAddr += '<button type="button" class="btn btn_default btn_sm" onclick="fnChangeAddr(\'chger\');"><span>회수지 변경</span></button>';
+			//let chgerAddr = recipBaseAddr + ' ' + recipDtlAddr + '\n';
+			//chgerAddr += '<button type="button" class="btn btn_default btn_sm" onclick="fnChangeAddr(\'chger\');"><span>회수지 변경</span></button>';
 
 			$('#exchangeForm input[name=chgerNm]').val(recipNm);
 			$('#exchangeForm input[name=chgerPhnno]').val(recipPhnno);
@@ -626,7 +623,8 @@
 
 			$('#chgerNm').text(recipNm);
 			$('#chgerPhnno').text(recipPhnno);
-			$('#chgerAddr').html(chgerAddr);
+			$('#chgerAddr').text(recipBaseAddr + ' ' + recipDtlAddr);
+			//$('#chgerAddr').html(chgerAddr);
 		}
 	}
 

+ 2 - 2
src/main/webapp/WEB-INF/views/web/mypage/NoMemberOrderListFormWeb.html

@@ -146,7 +146,7 @@
 					<input type="hidden" name="ordNm" th:value="${ordNm}" />
 					<input type="hidden" name="ordPhnno" th:value="${ordPhnno}" />
 					<input type="hidden" name="pageNo" value=1 />
-					<input type="hidden" name="pageSize" value=5 />
+					<input type="hidden" name="pageSize" value=10 />
 					<input type="hidden" name="pageUnit" value=10 />
 					<input type="hidden" name="ordDtlStat" value="" />
 					<input type="hidden" name="stDate" value="" />
@@ -186,7 +186,7 @@
 		$('#rdi-month2').click();
 
 		// Initialize a pagination
-		gagaPaging.init('searchForm', fnSearchCallback, 'paging', 5, 10);
+		gagaPaging.init('searchForm', fnSearchCallback, 'paging', 10, 10);
 		
 		// Load data
 		gagaPaging.load(1);

+ 9 - 7
src/main/webapp/WEB-INF/views/web/mypage/NoMemberReturnFormWeb.html

@@ -125,7 +125,7 @@
 														<div class="select">반품 사유를 선택하세요.</div>
 														<ul class="list">
 															<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" 추가  -->
-															<li class="selected">반품 사유를 선택하세요.</li>
+<!--															<li class="selected">반품 사유를 선택하세요.</li>-->
 															<li th:if="${returnReason}" th:each="oneData, status : ${returnReason}" th:attr="chgReason=${oneData.cd}" th:text="${oneData.cdNm}" onclick="fnChangeReturnReason(this);"></li>
 														</ul>
 													</div>
@@ -194,8 +194,8 @@
 										</tr>
 										<tr>
 											<th>주소</th>
-											<td id="chgerAddr">
-												<th:block th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|"></th:block>
+											<td>
+												<span id="chgerAddr" th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|"></span>
 												<button type="button" class="btn btn_default btn_sm" onclick="fnChangeDeliveryAddr();"><span>회수지 변경</span></button>
 											</td>
 										</tr>
@@ -317,7 +317,7 @@
 							</p>
 						</div>
 						<div class="btn_footer_area">
-							<button type="button" class="btn btn_default btn_md" onclick="cfnGoToPage(_PAGE_NOMEMBER_CRE_LIST);"><span>취소</span></button>
+							<button type="button" class="btn btn_default btn_md" onclick="cfnGoToPage(_PAGE_NOMEMBER_ORDER_LIST);"><span>취소</span></button>
 							<button type="button" id="btn_refund_pop" class="btn btn_dark btn_md" onclick="fnReturn()"><span>반품 신청</span></button>
 						</div>
 					</div>
@@ -606,8 +606,9 @@
 		let chgerBaseAddr = delvObj.recipBaseAddr;
 		let chgerDtlAddr = delvObj.recipDtlAddr;
 		let delvMemo = delvObj.delvMemo;
-		let chgerAddr = chgerBaseAddr + ' ' + chgerDtlAddr + '\n';
-		chgerAddr += '<button type="button" class="btn btn_default btn_sm" onclick="fnChangeDeliveryAddr();"><span>회수지 변경</span></button>';
+		let chgerAddr = chgerBaseAddr + ' ' + chgerDtlAddr;
+		//let chgerAddr = chgerBaseAddr + ' ' + chgerDtlAddr + '\n';
+		//chgerAddr += '<button type="button" class="btn btn_default btn_sm" onclick="fnChangeDeliveryAddr();"><span>회수지 변경</span></button>';
 
 		$('#returnForm input[name=chgerNm]').val(chgerNm);
 		$('#returnForm input[name=chgerPhnno]').val(chgerPhnno);
@@ -618,7 +619,8 @@
 		
 		$('#chgerNm').text(chgerNm);
 		$('#chgerPhnno').text(chgerPhnno);
-		$('#chgerAddr').html(chgerAddr);
+		$('#chgerAddr').text(chgerAddr);
+		//$('#chgerAddr').html(chgerAddr);
 	}
 
 	// 환불계좌 등록 콜백 처리

+ 29 - 11
src/main/webapp/WEB-INF/views/web/popup/RefundAccountAddPopupFormWeb.html

@@ -5,6 +5,9 @@
 <div class="modal-body">
 	<div class="pop_cont">
 		<form class="form_wrap" id="refundAccountForm">
+			<input type="hidden" name="confirmedAccountNo"/>
+			<input type="hidden" name="confirmedAccountNm"/>
+			<input type="hidden" name="confirmedBankCd"/>
 			<table>
 				<colgroup>
 					<col width="90">
@@ -89,7 +92,7 @@
 	});
 
 	// 계좌인증 버튼 클릭 이벤트
-	$('#confirmAccount').click(function() {
+	$('#btnAccountCheck').click(function() {
 		if (!isValid) {
 			let url = '/mypage/account/check';
 			let accountNm = $('#refundAccountForm input[name=accountNm]').val();
@@ -110,8 +113,13 @@
 					mcxDialog.alert('계좌인증에 성공했습니다.');
 
 					// 계좌인증 성공 시 Disabled 처리
-					$('#refundAccountForm .select_custom.select_bank').attr('disabled', true);
-					$('#refundAccountForm input[name=accountNo]').attr('disabled', true);
+					//$('#refundAccountForm .select_custom.select_bank').attr('disabled', true);
+					//$('#refundAccountForm input[name=accountNo]').attr('disabled', true);
+
+					// 인증된 계좌 정보 설정
+					$('#refundAccountForm input[name=confirmedAccountNo]').val(accountNo);
+					$('#refundAccountForm input[name=confirmedAccountNm]').val(accountNm);
+					$('#refundAccountForm input[name=confirmedBankCd]').val(bankCd);
 				} else {
 					mcxDialog.alert('계좌정보를 다시 확인해주세요.');
 				}
@@ -122,20 +130,30 @@
 	// 계좌등록 후 환불신청 버튼 클릭 이벤트
 	$('#registerAccount').click(function() {
 		if (isValid) {
+			// 승인된 계좌 정보
+			let confirmedAccountNm = $('#refundAccountForm input[name=confirmedAccountNm]').val();
+			let confirmedAccountNo = $('#refundAccountForm input[name=confirmedAccountNo]').val();
+			let confirmedBankCd = $('#refundAccountForm input[name=confirmedBankCd]').val();
+
+			// 계좌정보
 			let accountNm = $('#refundAccountForm input[name=accountNm]').val();
 			let accountNo = $('#refundAccountForm input[name=accountNo]').val();
 			let bankCd = $('#refundAccountForm input[name=bankCd]').val();
 
-			let data = {};
-			data.accountNm = accountNm;
-			data.accountNo = accountNo;
-			data.bankCd = bankCd;
+			if (accountNm == confirmedAccountNm && accountNo == confirmedAccountNo && bankCd == confirmedBankCd) {
+				let data = {};
+				data.accountNm = accountNm;
+				data.accountNo = accountNo;
+				data.bankCd = bankCd;
 
-			// 부모창으로 정보 전달
-			fnRegisterAccountCallback(data);
+				// 부모창으로 정보 전달
+				fnRegisterAccountCallback(data);
 
-			// 팝업 닫기
-			$(".close-modal").trigger("click");
+				// 팝업 닫기
+				$(".close-modal").trigger("click");
+			} else {
+				mcxDialog.alert('인증받은 계좌정보와 다릅니다.');
+			}
 		} else {
 			mcxDialog.alert('계좌인증이 필요합니다.');
 		}

+ 1 - 65
src/main/webapp/biz/goods.js

@@ -14,70 +14,6 @@ var fnGoodsLikeSearch = function(params) {
 	gagajf.ajaxSubmit("/goods/detail/like/frame", "html", "goodsLikebArea", params);
 }
 
-//사이즈 클릭시 - 단품
-var fnViewStock = function(obj, goodsCd, optCd, optCd1, optCd2,  minOrdQty, maxOrdQty) {
-	let $obj = $(obj);
-	let selfGoodsYn = $("#cartForm  input[name=selfGoodsYn]").val();
-	let $target = null;
-	if (selfGoodsYn == "Y"){
-		$target = $obj;
-		$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);
-
-			$('.price_box').show();
-			fnSetTotalPrice();
-			
-			// 모바일에서 작업해야함
-			if ('P' != _frontGb) {
-				$("#cartForm  input[name=opt]").parent().find('label').removeClass('on');
-				$("#cartForm  input[name=opt]").each(function(){
-					if ($(this).attr('optCd') == optCd){
-						$(this).parent().find('label').addClass('on');
-					}
-				});
-			}
-		}
-
-	}, "text");
-}
-
 
 // EP 쿠폰조회
 var fnEpCouponDown = function(afLinkCd, goodsCd, maxRownum){
@@ -308,7 +244,7 @@ var fnCreateGoodsList = function(result, ithrCd, contentLoc, goodsUrl, lastPage,
 			var iconGb = '';
 			var iconNm = '';
 			tag += '	<p class="itemBadge">';
-			for(let i=0; i<iconArr.length; i++){
+			for(let i=0; i<3; i++){
 				var iconInfo = iconArr[i].split(":");
 				iconGb = iconInfo[0];
 				iconNm = iconInfo[1];

+ 19 - 0
src/main/webapp/biz/payment.js

@@ -33,4 +33,23 @@ function jsf__pay( form ) {
 	} catch (e) {
 		/* IE 에서 결제 정상종료시 throw로 스크립트 종료 */
 	}
+}
+
+/* kcp web 결제창 호츨 (변경불가) */
+function call_pay_form()
+{
+	var v_frm = document.order_info;
+
+	v_frm.action = PayUrl;
+
+	if (v_frm.Ret_URL.value == "")
+	{
+		/* Ret_URL값은 현 페이지의 URL 입니다. */
+		alert("연동시 Ret_URL을 반드시 설정하셔야 됩니다.");
+		return false;
+	}
+	else
+	{
+		v_frm.submit();
+	}
 }

+ 7 - 1
src/main/webapp/ux/mo/css/layout_m.css

@@ -650,8 +650,9 @@
 [class*="pd_descrp"] .descrp_box > div > span.tit_desc {display:block; margin-bottom:1rem; font-size:1.3rem; font-weight:500; letter-spacing:-0.025em;}
 [class*="pd_descrp"] .descrp_box > div > p {font-size:1.3rem; font-weight:200; line-height:1.5; word-break:keep-all;}
 [class*="pd_descrp"] .mdhtml_box {margin-top:4rem;}
-[class*="pd_descrp"] .mdhtml_box a{margin:0 -2rem; display:block;}
+[class*="pd_descrp"] .mdhtml_box a{display:block; margin:0 -2rem; padding-top: 26%; overflow: hidden; position: relative;}
 [class*="pd_descrp"] .mdhtml_box img {width:100%;}
+[class*="pd_descrp"] .mdhtml_box img {/*width:100%;*/max-width: none;width: auto;height: 100%;position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);}
 [class*="pd_descrp"] .mdhtml_box iframe {display:block; margin-left:auto; margin-right:auto}
 [class*="pd_descrp"] .mdhtml_box .movblock {position:relative; display:block; height:0; line-height:0; margin-left:auto; margin-right:auto; padding-top:56.25%; background:#eee}
 [class*="pd_descrp"] .mdhtml_box .movblock > iframe {position:absolute; left:0; right:0; top:0; bottom:0; width:100%; height:100%; z-index:2}
@@ -1169,6 +1170,11 @@
 .modal.pd_pop.pd_review_pop .riview_box .area_slider{margin-bottom:0;}
 .modal.pd_pop.pd_review_pop .btn_group_flex > div > .btn{height:5.3rem;}
 .modal.pd_pop.pd_review_pop .pd_review .area_rv_empty .btn_group_flex{position:fixed; width: 100%; bottom: 0; left:0; margin-top: 0; z-index:10;}
+.modal.pd_pop.pd_review_pop .btn_default:hover{background-color:#fff;}
+.modal.pd_pop.pd_review_pop .btn_default:focus{background-color:#fff;}
+.modal.pd_pop.pd_review_pop .btn_default:active{background-color:#fff;}
+.modal.pd_pop.pd_review_pop .btn_default.active{background-color:#fff;}
+.modal.pd_pop.pd_review_pop .tgl_dropdown.btn_default{background-color:#fff;}
 .pd_review{background:#f5f5f5;}
 .pd_review.best,
 .pd_review.photo{background:#fff; position:relative; bottom:0; z-index:999; max-height:35rem;}

+ 5 - 4
src/main/webapp/ux/mo/css/style24_m.css

@@ -1175,17 +1175,18 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .my .review .tbl_wrap .tbl .password .btn.btn_primary {width: 100%; height: 4.5rem; background: #fff; color:#fd4802}
 .my .review .desc_txt {margin-top: 1.5rem; font-size: 1.1rem; color: #666; font-weight: 200; position: relative; padding-left: 0.6rem;}
 .my .review .desc_txt:before {content:''; position: absolute; left: 0; top: 0.6rem; width: 0.2rem; height: 0.2rem; background: #888;}
-.my .review .btn_group_flex {/*padding:0 0 6rem;*/ margin:0; background: #fff;}
+.my .review .btn_group_flex {/*padding:0 0 6rem;*/ margin:0; background: #fff;} 
 .my .review .tbl_wrap .tbl td .certi_wrap {display: block;}
 .my .review .tbl_wrap .tbl td .certi_wrap .btn {width: 8.6rem; height: 4.5rem; position: absolute; top: 0; right: 0; padding: 0; text-align: center;}
 
 .my .review .tbl_wrap .tbl th.ver_top {vertical-align: top; padding-top: 25px;}
 .my .review .tbl_wrap .tbl th.ver_top02 {vertical-align: top;}
-.my .review .tbl_wrap .tbl td textarea {width: 100%; resize:none; height: 15rem; padding: 15px; font-size: 14px; color: #868686;}
+.my .review .tbl_wrap .tbl td textarea {width: 100%; resize:none; height: 15rem; padding: 1.5rem; padding-bottom: 2.5rem; font-size: 1.2rem; color: #222;}
+.my .review .tbl_wrap .tbl td textarea .txt_cnt {display:block; position:absolute; margin-top:0; right: 1rem; bottom: 0.1rem; text-align: right; font-size: 1.2rem; z-index:1; width:95%; background-color:#fff;}
 .my .review .tbl_wrap .tbl.review_tbl td {padding-left: 0;}
 .my .review .tbl_wrap .tbl.review_tbl td textarea {height: 200px;}
 .my .review .tbl_wrap .tbl td .select {width: 400px;}
-.my .review .tbl_wrap .tbl td .txt_cnt {text-align: right; margin-top: 10px;position: absolute;bottom: 2.0rem;right: 1.0rem;}
+.my .review .tbl_wrap .tbl td .txt_cnt {background: #fff; width: calc(100% - 3.0rem); position: absolute; bottom: 1.6rem; right: 1.5rem; margin-top: 0; padding:0.5rem 0 0.5rem; font-size: 1.3rem; text-align: right; color: #888;}
 .my .review .tbl_wrap .tbl td .rev_height, 
 .my .review .tbl_wrap .tbl td .rev_weight {border:1px solid #ddd; position: relative;}
 .my .review .tbl_wrap .tbl td .rev_height input, 
@@ -1283,7 +1284,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .tbl_wrap .tbl {padding:1.5rem 0 0; border-top:1px solid #000; border-bottom:0;} 
 .tbl_wrap .tbl table {text-align:left; word-break:keep-all; width: 100%;}
 .tbl_wrap .tbl table th,
-.tbl_wrap .tbl table td {position:relative; padding:0; font-weight:500; font-size:1.3rem; padding-bottom: 1.5rem; vertical-align: top; word-break: break-all;}
+.tbl_wrap .tbl table td {position:relative; padding:0; font-weight:300; font-size:1.3rem; padding-bottom: 1.5rem; vertical-align: top; word-break: break-all;}
 .tbl_wrap .tbl table th {font-weight:300; color: #888; font-size: 1.3rem; padding-right:1rem;}
 .tbl_wrap .tbl table th.sr-only {position: absolute;}
 .tbl_wrap .tbl table tr:last-child th, .tbl_wrap .tbl table tr:last-child td {padding-bottom: 0;}

+ 2 - 2
src/main/webapp/ux/mo/js/common_m.js

@@ -161,7 +161,7 @@ $(document).ready(function() {
                         var file = e.target;
                         console.log(file);
                         $("<span class=\"pics\">" +
-                            "<img class=\"picsThumbs\" src=\"" + e.target.result + "\"/>" +
+                            "<img class=\"picsThumbs\" src=\"" + e.target.result + "\" title=\"" + file.name + "\"/>" +
                             "<br/><span class=\"removes\">Removes image</span>" +
                             "</span>").insertBefore(".fileAdd");
                         $(".removes").click(function(){
@@ -209,7 +209,7 @@ $(document).ready(function() {
                     fileReader.onload = (function(e) {
                         var file = e.target;
                         $("<span class=\"pics\">" +
-                            "<img class=\"picsThumbs\" src=\"" + e.target.result + "\"/>" +
+                            "<img class=\"picsThumbs\" src=\"" + e.target.result + "\" title=\"" + file.name + "\"/>" +
                             "<br/><span class=\"removes\">Removes image</span>" +
                             "</span>").insertBefore(".fileAdd");
                         $(".removes").click(function(){

+ 15 - 10
src/main/webapp/ux/pc/css/layout.css

@@ -134,7 +134,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 .common_header .search button{float:right; margin:4px 0 0 0}
 .common_header .search .btn_open_search {display:none; float:left; margin-right:20px; margin-top:5px}
 .common_header .search .btn_cart {margin-top:4px}
-.common_header .search .circle_count{display:inline-block;width:23px;height:23px;margin-left:5px; font-size:7px;text-align:center;line-height:2.5;color:#fff;background:#fd4802;border-radius:50%; position:absolute; top:-10px; right:-18px; bottom:auto; left:auto;}
+.common_header .search .circle_count{display:inline-block;width:23px;height:23px;margin-left:5px; font-size:10px;text-align:center;line-height:2.5;color:#fff;background:#fd4802;border-radius:50%; position:absolute; top:-10px; right:-18px; bottom:auto; left:auto;}
 .common_header .search .circle_count.red{background:#fd4802}
 .common_header .nav > ul.btn_home {display:none;}
 .common_header .black_screen {position: fixed; width: 100%; height: 100%; background: rgba(0,0,0,0.7); z-index: 88; display:none;}
@@ -916,7 +916,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 .tbl.type1 table {text-align:left; word-break:keep-all;}
 .tbl.type1 table th,
 .tbl.type1 table td {position:relative; /*padding:10px 40px;*/ font-weight:200; font-size:16px; letter-spacing:-0.025em;}
-.tbl.type1 table th {padding:10px 0px 10px 40px; font-weight:500;}
+.tbl.type1 table th {padding:10px 0px 10px 40px; font-weight:500; text-align: left;}
 .tbl.type1 table td {padding:10px 40px 10px 0px;}
 .tbl.type1 table tr td:first-child {padding-left:40px}
 .tbl.type1 table tr td:last-child {padding-right:40px;}
@@ -1660,7 +1660,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.dp .itemsGrp.cut2 {margin:0 -10px;margin: 0 auto;display: inline-block;padding: 0 calc((58% - 20px)/2);}
 	.dp .itemsGrp.cut2 .item_prod {width: calc((100% - 0px)/2);}
 	.dp .itemsGrp.cut3 {margin:0 -10px;margin: 0 auto;display: inline-block;padding: 0 calc((42.8% - 20px)/2);}
-	.dp .itemsGrp.cut3 .item_prod {width: calc((100% - 0px)/3);}
+	.dp .itemsGrp.cut3 .item_prod {width: calc((100% - 1px)/3);}
 	.dp .itemsGrp.cut4 {margin:0 -10px;margin: 0 auto;display: inline-block;padding: 0 calc((28.8% - 20px)/2);}
 	.dp .itemsGrp.cut4 .item_prod {width: calc((100% - 0px)/4);}
 	.dp .wrap {padding-bottom:160px;}
@@ -1775,7 +1775,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.dp_best_top100 .ui_row .ui_col_12 .form_field {justify-content: flex-end;}
 	.dp_best_top100 .ui_row .ui_col_12 .select_custom {width:180px;}
 	.dp_best_top100 .ui_row .ui_col_12 .select_custom:first-child {margin-right: 10px;}
-	.dp_best_top100 .select_custom .combo .list {border-top:1px solid #ddd; z-index: 99;}
+	.dp_best_top100 .select_custom .combo .list {border-top:1px solid #ddd; z-index: 100;}
 	.dp_best_top100 .select_custom .combo .list > li {padding-left:15px; padding-right:15px; font-size:14px; line-height:40px;}
 	.dp_best_top100 .select_custom .combo .select {font-size: 14px; padding:14px 15px;}
 	.dp_best_top100 .list_content .item_prod {width: 20%;}
@@ -1890,7 +1890,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.dp .dp_btn_area {padding-bottom:20px;}
 	.dp .dp_btn_area .cont_head {display:none;}
 	.dp .dp_btn_area .btn_wrap {text-align:center; margin:0;}
-	.dp .dp_btn_area .btn_wrap .btn {min-width:220px; height:60px; font-size:18px; font-weight:300; line-height:normal;}
+	.dp .dp_btn_area .btn_wrap .btn {min-width:220px; height:60px; font-size:18px; font-weight:300; line-height:35px;}
 	.dp .dp_btn_area .btn_wrap .btn.go_next span {display:inline-block; padding-right:20px; background:url('/images/pc/ico_bread_root_w.png') no-repeat 100% 50%;}
 
 	/* dp_기획전상세 : 리얼후기 */	
@@ -2597,7 +2597,10 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.nonMBorder .agree_nombPrivacy label span {font-size:18px;}
 	.nonMBorder .agree_nombPrivacy label span .tmark_required {display:inline-block; margin-top:2px; font-size:14px; vertical-align:top;}
 	.nonMBorder .agree_nomb_txt_box {margin-bottom:40px; padding:35px 40px; border:1px solid #ddd;}
-	.nonMBorder .agree_nomb_txt_box > div {overflow:auto; max-height:160px; color:#888; font-size:14px; line-height:1.5; font-weight:200;}
+	.nonMBorder .agree_nomb_txt_box > div {overflow:auto; max-height:160px; color:#888; font-size:14px; line-height:1.5; font-weight:200; padding-right: 15px;}
+	.nonMBorder .agree_nomb_txt_box > div::-webkit-scrollbar {width:2px;}
+	.nonMBorder .agree_nomb_txt_box > div::-webkit-scrollbar-thumb {background-color:#222222; /*border-radius:50px; -webkit-border-radius:50px;*/ background-clip:padding-box; width: 4px;}
+	.nonMBorder .agree_nomb_txt_box > div::-webkit-scrollbar-track {background-color:#dddddd; /*border-radius:50px; -webkit-border-radius:50px;*/}
 	.nonMBorder .adress_area {}
 	.nonMBorder .adress_area dl {padding:20px 14px 0}
 	.nonMBorder .adress_area dl div {margin-top:15px;} 
@@ -2944,7 +2947,8 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	[class*="pd_descrp"] .descrp_box > div:first-child {margin-top:0;}
 	[class*="pd_descrp"] .descrp_box > div > span.tit_desc {display:block; margin-bottom:10px; font-size:18px; font-weight:500; letter-spacing:-0.025em;}
 	[class*="pd_descrp"] .descrp_box > div > p {font-size:16px; font-weight:200; line-height:1.5; word-break:keep-all;}
-	[class*="pd_descrp"] .mdhtml_box {margin-top:80px}
+	[class*="pd_descrp"] .mdhtml_box {margin-top:80px;text-align: center;}
+	[class*="pd_descrp"] .mdhtml_box p{text-align: center;}
 	[class*="pd_descrp"] .mdhtml_box img {max-width:100%;}
 	[class*="pd_descrp"] .mdhtml_box iframe {display:block; margin-left:auto; margin-right:auto}
 	[class*="pd_descrp"] .mdhtml_box .movblock {position:relative; display:block; height:0; line-height:0; margin-left:auto; margin-right:auto; padding-top:56.25%; background:#eee}
@@ -4236,7 +4240,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.my .myCoupon .content_area {margin-top:60px}
 	.my .myCoupon .content_area .coupon_list::after {content:''; clear:both; display:block;}
 	.my .myCoupon .content_area .coupon_list ul {margin-top:-20px}
-	.my .myCoupon .content_area .coupon_list li {float:left; width:calc((100% - 60px) * 0.25); margin-left:20px; margin-top:20px;}
+	.my .myCoupon .content_area .coupon_list li {float:left; width:calc(25% - 15px); margin-left:20px; margin-top:20px;} /* 210517_수정 : IE 1380px 이하 대응. */
 	.my .myCoupon .content_area .coupon_list li:nth-child(4n-3) {margin-left:0}
 
 	/* my_myWishlist : 위시리스트 */
@@ -4508,10 +4512,11 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	/* popup_배송지 변경 팝업 */	
 	.modal.adrsChange_pop {width:600px; max-width:none; height:auto;}
 	.modal.adrsChange_pop .modal-footer {margin-top:0; margin-left:-60px; margin-right:-60px; margin-bottom:-60px;}
-	.modal.adrsChange_pop .modal-body .pop_cont {max-height:510px !important; margin-left:-20px; margin-right:-20px; padding:0 20px 60px; line-height:1;}
+	.modal.adrsChange_pop .modal-body .pop_cont {max-height:510px !important; margin-left:-20px; margin-right:-20px; padding:0 20px; line-height:1;}
+	.modal.adrsChange_pop .modal-body .pop_cont ul {padding-bottom: 60px;}
 	.modal.adrsChange_pop .modal-body .pop_cont.nodata ul {display: none;}
 	.modal.adrsChange_pop .modal-body .pop_cont.nodata .empty_txt {display: block;}
-	.modal.adrsChange_pop .modal-body .pop_cont .empty_txt {display: none; padding:80px 0;}
+	.modal.adrsChange_pop .modal-body .pop_cont .empty_txt {display: none; padding:80px 0 140px;}
 	.modal.adrsChange_pop button span {line-height:1;}
 	.modal.adrsChange_pop .btn.btn_sm {min-width:70px; height:34px; padding-top:9px; font-size:14px; font-weight:300;}
 	.modal.adrsChange_pop .form_field,

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

@@ -91,7 +91,7 @@ $(document).ready(function() {
 					var file = e.target;
 					console.log(file);
 					$("<span class=\"pics\">" +
-						"<img class=\"picsThumbs\" src=\"" + e.target.result + "\"/>" +
+						"<img class=\"picsThumbs\" src=\"" + e.target.result + "\" title=\"" + file.name + "\"/>" +
 						"<br/><span class=\"removes\">Removes image</span>" +
 						"</span>").insertAfter("#fileAdd");
 					$(".removes").click(function(){
@@ -481,10 +481,10 @@ $(document).ready( function() {
 			$('.sticky_nav li').find('a').removeClass('active');
 
 			var $menu     = $('.sticky_nav li a'),
-				$contents = $(".list_content > div");
+				$contents = $(".list_content > div.dp_item_list"); //210517_ 수정 : 전시 브랜드별 상품리스트 특정 class .dp_item_list 추가. 
 
 			$.each($contents, function(idx, item){
-				var $target   = $(".list_content > div").eq(idx),
+				var $target   = $(".list_content > div.dp_item_list").eq(idx), //210517_ 수정 : 전시 브랜드별 상품리스트 특정 class .dp_item_list 추가. 
 					i         = $target.index(),
 					targetHeader = $(".sticky_nav").outerHeight() + 30,
 					targetTop = $target.offset().top - targetHeader;

+ 36 - 26
src/main/webapp/ux/plugins/approval_key.js

@@ -28,15 +28,25 @@
 
     function kcp_AJAX()
     {
-        // 해당 소스는 jQuery를 사용 하지 않는 업체에서도 작동 할수 있도록 구현되었습니다.
-        // 이 부분은 javascript로 구현시 jQuery를 이용하면 더욱 쉽게 구현 할수 있습니다. 
-        // 또는
-        // javascript를 통한 ajax 통신을 할 필요 없이 소스내에 order_approval.jsp를 연동해서 사용 하셔도 관계 없으며
-        // 제공되는 jar 파일에 직접 전달된 데이터를 사용할수 있도록 method가 구현 되어 있습니다.
+        // 占쌔댐옙 占쌀쏙옙占쏙옙 jQuery占쏙옙 占쏙옙占� 占쏙옙占쏙옙 占십댐옙 占쏙옙체占쏙옙占쏙옙占쏙옙 占쌜듸옙 占쌀쇽옙 占쌍듸옙占쏙옙 占쏙옙占쏙옙占실억옙占쏙옙占싹댐옙.
+        // 占쏙옙 占싸븝옙占쏙옙 javascript占쏙옙 占쏙옙占쏙옙占쏙옙 jQuery占쏙옙 占싱울옙占싹몌옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쌀쇽옙 占쌍쏙옙占싹댐옙. 
+        // 占실댐옙
+        // javascript占쏙옙 占쏙옙占쏙옙 ajax 占쏙옙占쏙옙占� 占쏙옙 占십울옙 占쏙옙占쏙옙 占쌀쏙옙占쏙옙占쏙옙 order_approval.jsp占쏙옙 占쏙옙占쏙옙占쌔쇽옙 占쏙옙占� 占싹셔듸옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙
+        // 占쏙옙占쏙옙占실댐옙 jar 占쏙옙占싹울옙 占쏙옙占쏙옙 占쏙옙占쌨듸옙 占쏙옙占쏙옙占싶몌옙 占쏙옙占쏙옙寗占� 占쌍듸옙占쏙옙 method占쏙옙 占쏙옙占쏙옙 占실억옙 占쌍쏙옙占싹댐옙.
         if(ajax_flag)
         {
-            var url    = "order_approval.jsp";
+            var url    = "http:" + _frontUrl + "/pg/kcp/approval";
             var form = document.order_info;
+            let data = {
+                  site_cd : form.site_cd.value
+                , ordr_idxx : form.ordr_idxx.value
+                , good_mny : form.good_mny.value
+                , pay_method : form.pay_method.value
+                , escw_used : form.escw_used.value
+                , good_name : form.good_name.value
+                , response_type : form.response_type.value
+                , Ret_URL : form.Ret_URL.value
+            }
             var params = "?site_cd=" + form.site_cd.value
                        + "&ordr_idxx=" + form.ordr_idxx.value
                        + "&good_mny=" + form.good_mny.value
@@ -45,13 +55,13 @@
                        + "&good_name=" + form.good_name.value
                        + "&response_type=" + form.response_type.value
                        + "&Ret_URL=" + form.Ret_URL.value;
-            sendRequest( url + params );
+            sendRequest(encodeURI(url + params));
             
             ajax_flag = false;
         }
         else
         {
-            alert("통신 중입니다. 잠시만 기다려 주세요.");
+            alert("占쏙옙占� 占쏙옙占쌉니댐옙. 占쏙옙첩占� 占쏙옙慕占� 占쌍쇽옙占쏙옙.");
         }
             
     }
@@ -64,31 +74,31 @@
             {
                 if ( req01_AJAX.responseText != null )
                 {
-                    // 해당 소스는 jQuery를 사용 하지 않는 업체에서도 작동 할수 있도록 구현되었습니다.
-                    // 이 부분은 javascript로 구현시 jQuery를 이용하면 더욱 쉽게 구현 할수 있습니다. 
-                    // 또는
-                    // javascript를 통한 ajax 통신을 할 필요 없이 소스내에 order_approval.jsp를 연동해서 사용 하셔도 관계 없으며
-                    // 제공되는 jar 파일에 직접 전달된 데이터를 사용할수 있도록 method가 구현 되어 있습니다.
+                    // 占쌔댐옙 占쌀쏙옙占쏙옙 jQuery占쏙옙 占쏙옙占� 占쏙옙占쏙옙 占십댐옙 占쏙옙체占쏙옙占쏙옙占쏙옙 占쌜듸옙 占쌀쇽옙 占쌍듸옙占쏙옙 占쏙옙占쏙옙占실억옙占쏙옙占싹댐옙.
+                    // 占쏙옙 占싸븝옙占쏙옙 javascript占쏙옙 占쏙옙占쏙옙占쏙옙 jQuery占쏙옙 占싱울옙占싹몌옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쌀쇽옙 占쌍쏙옙占싹댐옙. 
+                    // 占실댐옙
+                    // javascript占쏙옙 占쏙옙占쏙옙 ajax 占쏙옙占쏙옙占� 占쏙옙 占십울옙 占쏙옙占쏙옙 占쌀쏙옙占쏙옙占쏙옙 order_approval.jsp占쏙옙 占쏙옙占쏙옙占쌔쇽옙 占쏙옙占� 占싹셔듸옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙
+                    // 占쏙옙占쏙옙占실댐옙 jar 占쏙옙占싹울옙 占쏙옙占쏙옙 占쏙옙占쌨듸옙 占쏙옙占쏙옙占싶몌옙 占쏙옙占쏙옙寗占� 占쌍듸옙占쏙옙 method占쏙옙 占쏙옙占쏙옙 占실억옙 占쌍쏙옙占싹댐옙.
                     try
                     {
                         var form = document.order_info;
                         
                         if( form.response_type.value == "JSON" )
                         {
-                            StateChangeForJSON( req01_AJAX ); // JSON 방식일 경우
+                            StateChangeForJSON( req01_AJAX ); // JSON 占쏙옙占쏙옙占� 占쏙옙占�
                         }
                         else if( form.response_type.value == "XML" )
                         {
-                            StateChangeForXML( req01_AJAX ); // XML 방식일 경우
+                            StateChangeForXML( req01_AJAX ); // XML 占쏙옙占쏙옙占� 占쏙옙占�
                         }
                         else if( form.response_type.value == "TEXT" || form.response_type.value == "" )
                         {
-                            StateChangeForText( req01_AJAX ); // TEXT 방식일 경우
+                            StateChangeForText( req01_AJAX ); // TEXT 占쏙옙占쏙옙占� 占쏙옙占�
                         }
                     }
                     catch( e )
                     {
-                        StateChangeForText( req01_AJAX ); // TEXT 방식일 경우
+                        StateChangeForText( req01_AJAX ); // TEXT 占쏙옙占쏙옙占� 占쏙옙占�
                     }
                 }
             }
@@ -107,8 +117,8 @@
         if( txt[0].replace(/^\s*/,'').replace(/\s*$/,'') == '0000' )
         {
             document.getElementById( "approval" ).value = txt[1].replace(/^\s*/,'').replace(/\s*$/,'');
-            // 아래 alert는 삭제 해도됨
-            alert("성공적으로 거래가 등록 되었습니다.");
+            // 占싣뤄옙 alert占쏙옙 占쏙옙占쏙옙 占쌔듸옙占쏙옙
+            alert("占쏙옙占쏙옙占쏙옙占쏙옙占쏙옙 占신뤄옙占쏙옙 占쏙옙占� 占실억옙占쏙옙占싹댐옙.");
             PayUrl = decodeURIComponent( txt[2].replace(/^\s*/,'').replace(/\s*$/,'') );
             
             document.getElementById( "traceNo" ).value = txt[3].replace(/^\s*/,'').replace(/\s*$/,'');
@@ -123,7 +133,7 @@
             var res_msg = txt[2].replace(/^\s*/,'').replace(/\s*$/,'');
             
             ajax_flag=true;
-            alert("실패 되었습니다.[" + res_msg + "]");
+            alert("占쏙옙占쏙옙 占실억옙占쏙옙占싹댐옙.[" + res_msg + "]");
         }
     }
     
@@ -136,8 +146,8 @@
         if( x[0].getElementsByTagName( "Code" )[0].childNodes[0].nodeValue == '0000' )
         {
             document.getElementById( "approval" ).value = x[0].getElementsByTagName( "approvalKey" )[0].childNodes[0].nodeValue;
-            // 아래 alert는 삭제 해도됨
-            alert("성공적으로 거래가 등록 되었습니다.");
+            // 占싣뤄옙 alert占쏙옙 占쏙옙占쏙옙 占쌔듸옙占쏙옙
+            alert("占쏙옙占쏙옙占쏙옙占쏙옙占쏙옙 占신뤄옙占쏙옙 占쏙옙占� 占실억옙占쏙옙占싹댐옙.");
             PayUrl = x[0].getElementsByTagName( "PayUrl" )[0].childNodes[0].nodeValue;
             
             document.getElementById( "traceNo" ).value = x[0].getElementsByTagName( "traceNo"     )[0].childNodes[0].nodeValue;
@@ -152,7 +162,7 @@
         {
             ajax_flag=true;
             
-            alert("실패 되었습니다.[" + x[0].getElementsByTagName( "Message" )[0].childNodes[0].nodeValue + "]");
+            alert("占쏙옙占쏙옙 占실억옙占쏙옙占싹댐옙.[" + x[0].getElementsByTagName( "Message" )[0].childNodes[0].nodeValue + "]");
         }
     }
     
@@ -164,8 +174,8 @@
         if( json.Code == '0000' )
         {
             document.getElementById( "approval" ).value = json.approvalKey;
-            // 아래 alert는 삭제 해도됨
-            alert("성공적으로 거래가 등록 되었습니다.");
+            // 占싣뤄옙 alert占쏙옙 占쏙옙占쏙옙 占쌔듸옙占쏙옙
+            alert("占쏙옙占쏙옙占쏙옙占쏙옙占쏙옙 占신뤄옙占쏙옙 占쏙옙占� 占실억옙占쏙옙占싹댐옙.");
             PayUrl = json.PayUrl;
             
             document.getElementById( "PayUrl"  ).value = json.request_URI;
@@ -177,6 +187,6 @@
         {
             ajax_flag=true;
             
-            alert("실패 되었습니다.[" + json.Message + "]");
+            alert("占쏙옙占쏙옙 占실억옙占쏙옙占싹댐옙.[" + json.Message + "]");
         }
     }