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

Merge branch 'develop' into bin2107

bin2107 5 лет назад
Родитель
Сommit
b27b4fab56
78 измененных файлов с 1266 добавлено и 784 удалено
  1. 13 0
      src/main/java/com/style24/front/biz/service/TsfOrderService.java
  2. 21 0
      src/main/java/com/style24/front/biz/service/TsfReviewService.java
  3. 14 3
      src/main/java/com/style24/front/biz/thirdparty/KaKaoLogin.java
  4. 13 2
      src/main/java/com/style24/front/biz/thirdparty/NaverLogin.java
  5. 16 3
      src/main/java/com/style24/front/biz/thirdparty/NiceCertify.java
  6. 14 2
      src/main/java/com/style24/front/biz/thirdparty/Yes24Login.java
  7. 24 0
      src/main/java/com/style24/front/biz/web/TsfDisplayController.java
  8. 16 1
      src/main/java/com/style24/front/biz/web/TsfMypageController.java
  9. 1 0
      src/main/java/com/style24/front/biz/web/TsfOrderController.java
  10. 2 47
      src/main/java/com/style24/front/biz/web/TsfPgController.java
  11. 1 7
      src/main/java/com/style24/front/biz/web/TsfPlanningController.java
  12. 1 1
      src/main/java/com/style24/front/support/config/TsfRedisSessionConfig.java
  13. 5 7
      src/main/java/com/style24/front/support/interceptor/TsfDefaultInterceptor.java
  14. 1 0
      src/main/java/com/style24/persistence/domain/Review.java
  15. 1 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml
  16. 2 2
      src/main/java/com/style24/persistence/mybatis/shop/TsfOrder.xml
  17. 1 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfOrderChange.xml
  18. 1 2
      src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml
  19. 6 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfReview.xml
  20. 2 2
      src/main/java/com/style24/persistence/mybatis/shop/TsfSocial.xml
  21. 1 1
      src/main/resources/config/application-locd.yml
  22. 104 10
      src/main/webapp/WEB-INF/views/mob/common/fragments/FooterMob.html
  23. 50 8
      src/main/webapp/WEB-INF/views/mob/common/fragments/GnbMob.html
  24. 3 3
      src/main/webapp/WEB-INF/views/mob/common/fragments/GnbSubGoodsMob.html
  25. 3 3
      src/main/webapp/WEB-INF/views/mob/common/fragments/GnbSubMob.html
  26. 3 3
      src/main/webapp/WEB-INF/views/mob/common/fragments/GnbSubPlanningMob.html
  27. 15 16
      src/main/webapp/WEB-INF/views/mob/common/layout/DefaultLayoutMob.html
  28. 0 35
      src/main/webapp/WEB-INF/views/mob/common/layout/PlanningLayoutMob.html
  29. 215 215
      src/main/webapp/WEB-INF/views/mob/display/BrandMainFormMob.html
  30. 1 1
      src/main/webapp/WEB-INF/views/mob/display/CategoryGoodsListFormMob.html
  31. 0 1
      src/main/webapp/WEB-INF/views/mob/display/LookbookMainFormMob.html
  32. 3 1
      src/main/webapp/WEB-INF/views/mob/display/MallMainFormMob.html
  33. 17 9
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDescFormMob.html
  34. 2 2
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailDeliveryFormMob.html
  35. 41 23
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html
  36. 16 10
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailReviewFormMob.html
  37. 3 2
      src/main/webapp/WEB-INF/views/mob/goods/GoodsReviewPhotoFormMob.html
  38. 2 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCustConfirmFormMob.html
  39. 6 3
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCustModifyFormMob.html
  40. 1 4
      src/main/webapp/WEB-INF/views/mob/mypage/MypageExchangeFormMob.html
  41. 1 4
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReturnFormMob.html
  42. 1 2
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewCreateFormMob.html
  43. 1 3
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewDetailFormMob.html
  44. 9 11
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewFormMob.html
  45. 1 4
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberExchangeFormMob.html
  46. 1 4
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberReturnFormMob.html
  47. 1 34
      src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html
  48. 2 2
      src/main/webapp/WEB-INF/views/mob/pg/kcpOrderMob.html
  49. 140 138
      src/main/webapp/WEB-INF/views/mob/planning/PlanningDetailFormMob.html
  50. 3 1
      src/main/webapp/WEB-INF/views/mob/planning/PlanningMainFormMob.html
  51. 1 2
      src/main/webapp/WEB-INF/views/mob/planning/PlanningShotGuideFormMob.html
  52. 10 14
      src/main/webapp/WEB-INF/views/mob/social/SocialMainFormMob.html
  53. 7 6
      src/main/webapp/WEB-INF/views/web/goods/GoodsCouponFormWeb.html
  54. 13 5
      src/main/webapp/WEB-INF/views/web/goods/GoodsDealDescFormWeb.html
  55. 1 1
      src/main/webapp/WEB-INF/views/web/goods/GoodsDealDetailFormWeb.html
  56. 2 2
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailDeliveryFormWeb.html
  57. 27 12
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html
  58. 2 2
      src/main/webapp/WEB-INF/views/web/mypage/MypageCreListFormWeb.html
  59. 0 3
      src/main/webapp/WEB-INF/views/web/mypage/MypageExchangeFormWeb.html
  60. 2 2
      src/main/webapp/WEB-INF/views/web/mypage/MypageOrderListFormWeb.html
  61. 0 3
      src/main/webapp/WEB-INF/views/web/mypage/MypageReturnFormWeb.html
  62. 1 2
      src/main/webapp/WEB-INF/views/web/mypage/MypageReviewCreateFormWeb.html
  63. 3 9
      src/main/webapp/WEB-INF/views/web/mypage/MypageReviewDetailFormWeb.html
  64. 4 6
      src/main/webapp/WEB-INF/views/web/mypage/MypageReviewFormWeb.html
  65. 2 2
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberCreListFormWeb.html
  66. 0 3
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberExchangeFormWeb.html
  67. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberOrderDetailFormWeb.html
  68. 3 3
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberOrderListFormWeb.html
  69. 0 3
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberReturnFormWeb.html
  70. 12 15
      src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html
  71. 63 0
      src/main/webapp/WEB-INF/views/web/planning/PlanningReplyPhotoFormWeb.html
  72. 1 2
      src/main/webapp/WEB-INF/views/web/planning/PlanningShotGuideFormWeb.html
  73. 29 11
      src/main/webapp/WEB-INF/views/web/popup/RefundAccountAddPopupFormWeb.html
  74. 3 3
      src/main/webapp/WEB-INF/views/web/social/SocialMainFormWeb.html
  75. 26 7
      src/main/webapp/biz/payment.js
  76. 26 26
      src/main/webapp/ux/plugins/approval_key.js
  77. 220 0
      src/main/webapp/ux/plugins/gaga/gaga.singlePaging.js
  78. 6 3
      src/main/webapp/ux/style24_link.js

+ 13 - 0
src/main/java/com/style24/front/biz/service/TsfOrderService.java

@@ -493,6 +493,18 @@ public class TsfOrderService {
 	public int updateOrderDisplayYn(Order order) { return orderDao.updateOrderDisplayYn(order); }
 
 	public Payment setPgDataInfo(Order order) {
+		// TB_PAYMENT 우선 입력
+		Payment prePay = new Payment();
+		prePay.setOrdNo(order.getOrdNo());
+		prePay.setPgGb(order.getPgGb());
+		prePay.setPayMeans(order.getPayMeans());
+
+
+		// 상품권 100% 결제일 경우 PgGb STYLE24로 변경
+		if(TscConstants.PayMeans.CREDIT_CARD.value().equals(order.getPayMeans())) {prePay.setPgGb(TscConstants.PgGb.ISTYLE.value());}
+
+		// TODO TB_PAYMENT INSERT
+
 		Payment payment;
 		order.setFrontGb(TsfSession.getFrontGb());
 		if(TscConstants.PgGb.KAKAO.value().equals(order.getPgGb())) {			// 카카오페이
@@ -507,6 +519,7 @@ public class TsfOrderService {
 			throw new IllegalArgumentException("결제타입이 잘못 선택되었습니다. 새로고침 후 다시 시도해주세요.");
 		}
 
+		// TODO TB_PAYMENT INSERT
 		payment.setPgGb(order.getPgGb());
 		payment.setPayMeans(order.getPayMeans());
 		return payment;

+ 21 - 0
src/main/java/com/style24/front/biz/service/TsfReviewService.java

@@ -277,6 +277,27 @@ public class TsfReviewService {
 		
 	}
 		
+	/**
+	 * 상품 리뷰 목록
+	 * @param review
+	 * @return 
+	 * @author sowon
+	 * @since 2021. 5. 18
+	 */
+	public Collection<Review> getMypageReviewList(Review review) {
+		Collection<Review> reviewList = reviewDao.getReviewList(review);
+		
+		// 첨부파일
+		for(Review loopReview : reviewList) {
+			loopReview.setRvAtcSq(review.getRvAtcSq());
+			loopReview.setReviewAttachList(reviewDao.getReviewAttachList(loopReview));
+			loopReview.setGoodsOptionList(reviewDao.getReviewGoodsOptionList(loopReview));
+		}
+		//log.info("getReviewList {}", reviewList);
+		
+		return reviewList;
+	}
+	
 	
 	/**
 	 * 마이페이지 리뷰 업데이트

+ 14 - 3
src/main/java/com/style24/front/biz/thirdparty/KaKaoLogin.java

@@ -12,6 +12,7 @@ import com.style24.front.support.security.session.TsfSession;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.core.env.Environment;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
@@ -43,7 +44,8 @@ public class KaKaoLogin {
 	@Autowired
 	private RestTemplate restTemplate;
 
-	public static final String PROTOCOL = "http://";
+	@Value("${has-ssl}")
+	private String hasSsl;
 
 	private String callBackUrl;
 	private String restApiKey;
@@ -52,6 +54,7 @@ public class KaKaoLogin {
 	private String userInfoUrl;
 	private String authorizeUrl;
 	private String unlinkUrl;
+	private String protocal;
 
 	@PostConstruct
 	public void init() {
@@ -63,6 +66,14 @@ public class KaKaoLogin {
 		authorizeUrl = env.getProperty("kakao.authorizeUrl");
 		unlinkUrl = env.getProperty("kakao.unlinkUrl");
 
+		boolean isSslServer = Boolean.parseBoolean(hasSsl);
+
+		if (isSslServer) {
+			protocal = "https://";
+		} else {
+			protocal = "http://";
+		}
+
 		log.debug("\n\n---- Kakao initialization started ----");
 		log.debug("callBackUrl: [{}]", callBackUrl);
 		log.debug("restApiKey: [{}]", restApiKey);
@@ -82,7 +93,7 @@ public class KaKaoLogin {
 	 */
 	public String getAuthorizeUrl(String state) {
 		StringBuilder apiUrlBuilder = new StringBuilder();
-		String redirectUri = GagaFileUtil.getConcatenationPath(PROTOCOL + TsfSession.getHttpServletRequest().getServerName(), callBackUrl);
+		String redirectUri = GagaFileUtil.getConcatenationPath(protocal + TsfSession.getHttpServletRequest().getServerName(), callBackUrl);
 		apiUrlBuilder.append(authorizeUrl)
 				.append("?client_id=")
 				.append(restApiKey)
@@ -105,7 +116,7 @@ public class KaKaoLogin {
 	 */
 	public GagaMap getAccessTocken(String code, String state) {
 		GagaMap resultMap = new GagaMap();
-		String redirectUri = GagaFileUtil.getConcatenationPath(PROTOCOL + TsfSession.getHttpServletRequest().getServerName(), callBackUrl);
+		String redirectUri = GagaFileUtil.getConcatenationPath(protocal + TsfSession.getHttpServletRequest().getServerName(), callBackUrl);
 		String requestGb = "";
 		try {
 			MultiValueMap<String, String> params = new LinkedMultiValueMap<>();

+ 13 - 2
src/main/java/com/style24/front/biz/thirdparty/NaverLogin.java

@@ -10,6 +10,7 @@ import com.style24.front.support.security.session.TsfSession;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.core.env.Environment;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
@@ -40,7 +41,8 @@ public class NaverLogin {
 	@Autowired
 	private RestTemplate restTemplate;
 
-	public static final String PROTOCOL = "http://";
+	@Value("${has-ssl}")
+	private String hasSsl;
 
 	private String callBackUrl;
 	private String clientId;
@@ -49,6 +51,8 @@ public class NaverLogin {
 	private String tokenUrl;
 	private String userInfoUrl;
 	private String authorizeUrl;
+	private String protocal;
+
 
 	@PostConstruct
 	public void init() {
@@ -60,6 +64,13 @@ public class NaverLogin {
 		userInfoUrl = env.getProperty("naver.userInfoUrl");
 		authorizeUrl = env.getProperty("naver.authorizeUrl");
 
+		boolean isSslServer = Boolean.parseBoolean(hasSsl);
+		if (isSslServer) {
+			protocal = "https://";
+		} else {
+			protocal = "http://";
+		}
+
 		log.debug("\n\n---- Naver initialization started ----");
 		log.debug("callBackUrl: [{}]", callBackUrl);
 		log.debug("clientId: [{}]", clientId);
@@ -73,7 +84,7 @@ public class NaverLogin {
 
 	public String getAuthorizeUrl(String state) {
 		StringBuilder apiUrlBuilder = new StringBuilder();
-		String redirectUri = GagaFileUtil.getConcatenationPath(PROTOCOL + TsfSession.getHttpServletRequest().getServerName(), callBackUrl);
+		String redirectUri = GagaFileUtil.getConcatenationPath(protocal + TsfSession.getHttpServletRequest().getServerName(), callBackUrl);
 		apiUrlBuilder.append(authorizeUrl)
 				.append("?response_type=code&client_id=")
 				.append(clientId)

+ 16 - 3
src/main/java/com/style24/front/biz/thirdparty/NiceCertify.java

@@ -11,6 +11,7 @@ import com.style24.persistence.domain.Customer;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Component;
 
@@ -32,7 +33,8 @@ public class NiceCertify {
 	@Autowired
 	private Environment env;
 
-	public static final String PROTOCOL = "http://";
+	@Value("${has-ssl}")
+	private String hasSsl;
 
 	private String niceId;			// 나이스휴대폰인증ID
 	private String nicePwd;			// 나이스휴대폰인증비밀번호
@@ -41,6 +43,7 @@ public class NiceCertify {
 	private String ipinPwd;			// 나이스아이핀인증비밀번호
 	private String ipinCallback;	// 나이스아이핀콜백URL
 	private String domain;
+	private String protocal;
 
 	@PostConstruct
 	public void init() {
@@ -51,6 +54,14 @@ public class NiceCertify {
 		ipinPwd = env.getProperty("certify.ipin.pwd");
 		ipinCallback = env.getProperty("certify.ipin.callback");
 		domain = env.getProperty("domain.front");
+
+		boolean isSslServer = Boolean.parseBoolean(hasSsl);
+		if (isSslServer) {
+			protocal = "https://";
+		} else {
+			protocal = "http://";
+		}
+
 		log.debug("\n\n---- NiceCertify initialization started ----");
 		log.debug("나이스휴대폰인증(ID: {}, PWD: {}, callback: {})", niceId, nicePwd, domain + niceCallback);
 		log.debug("나이스아이핀인증(ID: {}, PWD: {}, callback: {})", ipinId, ipinPwd, domain + ipinCallback);
@@ -70,7 +81,9 @@ public class NiceCertify {
 		log.info("sRequestNo: {}", sRequestNo);
 		TsfSession.setAttribute("REQ_SEQ", sRequestNo);
 
-		String callback = GagaFileUtil.getConcatenationPath(PROTOCOL + TsfSession.getHttpServletRequest().getServerName(), niceCallback);
+
+
+		String callback = GagaFileUtil.getConcatenationPath(protocal + TsfSession.getHttpServletRequest().getServerName(), niceCallback);
 		log.info("niceCallback: {}", niceCallback);
 
 		String sAuthType = "M";	// 없으면 기본 선택화면, M: 휴대폰, C: 신용카드, X: 공인인증서
@@ -233,7 +246,7 @@ public class NiceCertify {
 	 */
 	public GagaMap certifyIpin() {
 		IPIN2Client ipinClinet = new IPIN2Client();
-		String callback = GagaFileUtil.getConcatenationPath( PROTOCOL + TsfSession.getHttpServletRequest().getServerName(), ipinCallback);
+		String callback = GagaFileUtil.getConcatenationPath( protocal + TsfSession.getHttpServletRequest().getServerName(), ipinCallback);
 
 		String sCPRequestNo = ipinClinet.getRequestNO(ipinId);
 		TsfSession.setAttribute("CPREQUEST", sCPRequestNo);

+ 14 - 2
src/main/java/com/style24/front/biz/thirdparty/Yes24Login.java

@@ -12,6 +12,7 @@ import com.style24.persistence.domain.CustSnsInfo;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.core.env.Environment;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
@@ -48,7 +49,9 @@ public class Yes24Login {
 	@Autowired
 	private RestTemplate restTemplate;
 
-	public static final String PROTOCOL = "http://";
+	@Value("${has-ssl}")
+	private String hasSsl;
+
 
 	private String id;
 	private String type;
@@ -58,6 +61,7 @@ public class Yes24Login {
 	private String userInfoUrl;
 	private String linkUrl;
 	private String unlinkUrl;
+	private String protocal;
 
 	@PostConstruct
 	public void init() {
@@ -70,6 +74,14 @@ public class Yes24Login {
 		linkUrl = env.getProperty("yes24.linkUrl");
 		unlinkUrl = env.getProperty("yes24.unlinkUrl");
 
+		boolean isSslServer = Boolean.parseBoolean(hasSsl);
+
+		if (isSslServer) {
+			protocal = "https://";
+		} else {
+			protocal = "http://";
+		}
+
 		log.debug("\n\n---- YES24 initialization started ----");
 		log.debug("id: [{}]", id);
 		log.debug("type: [{}]", type);
@@ -93,7 +105,7 @@ public class Yes24Login {
 		String idGb = TsfSession.getFrontGb().equals("P") ? "PID" : "MID";
 		String requestUrl = TsfSession.getFrontGb().equals("P") ? webRequestUrl : mobRequestUrl;
 		StringBuilder apiUrlBuilder = new StringBuilder();
-		String redirectUri = GagaFileUtil.getConcatenationPath(PROTOCOL + TsfSession.getHttpServletRequest().getServerName(), callBackUrl);
+		String redirectUri = GagaFileUtil.getConcatenationPath(protocal + TsfSession.getHttpServletRequest().getServerName(), callBackUrl);
 		apiUrlBuilder.append(requestUrl)
 				.append("?")
 				.append(idGb)

+ 24 - 0
src/main/java/com/style24/front/biz/web/TsfDisplayController.java

@@ -87,6 +87,30 @@ public class TsfDisplayController extends TsfBaseController {
 	@Autowired
 	private SearchEngineDiquest diquest;
 
+	/**
+	 * PC보기. 모바일에서 <PC> 형태로 볼 때
+	 * @return
+	 * @throws Exception
+	 * @since 2021. 5. 18
+	 */
+	@GetMapping("/view/normal/form")
+	public String viewNormal() {
+		GagaCookieUtil.setCookie(TsfSession.getHttpServletResponse(), TsfConstants.CK_PREFIX + "_site_preference", "normal", -1);
+		return "redirect:/display/mall/main/form";
+	}
+
+	/**
+	 * 모바일보기. 모바일 디바이스에서 <PC보기> 클릭 후 접근한 담에 다시 <모바일보기> 클릭 시
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 5. 18
+	 */
+	@GetMapping("/view/mobile/form")
+	public String viewMobile() {
+		GagaCookieUtil.deleteCookie(TsfSession.getHttpServletResponse(), TsfConstants.CK_PREFIX + "_site_preference");
+		return "redirect:/display/mall/main/form";
+	}
+
 	/**
 	 * 몰 메인
 	 * @return

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

@@ -1813,12 +1813,27 @@ public class TsfMypageController extends TsfBaseController {
 
 		mav.addObject("review", review);
 
-		mav.addObject("reviewList", reviewService.getReviewList(review));
+		mav.addObject("reviewList", reviewService.getMypageReviewList(review));
 
 		mav.setViewName(super.getDeviceViewName("mypage/MypageReviewDetailForm"));
 		return mav;
 	}
 	
+	/**
+	 * 상품상세 -  상품평 상세 레이어
+	 * @return
+	 * @author sowon
+	 * @since 2021. 3. 8
+	 */
+	@PostMapping("/review/detail/list")
+	@ResponseBody
+	public GagaMap getReviewDetailList(@RequestBody Review review) {
+		log.info("getReviewDetailList {}", review);
+		GagaMap result = new GagaMap();
+		result.set("reviewList", reviewService.getMypageReviewList(review));
+		return result;
+	}
+	
 	/**
 	 * 마이페이지 어드민 댓글 확인
 	 *

+ 1 - 0
src/main/java/com/style24/front/biz/web/TsfOrderController.java

@@ -783,6 +783,7 @@ public class TsfOrderController extends TsfBaseController {
 
 		param.setRegNo(param.getCustNo());
 		param.setUpdNo(param.getCustNo());
+		param.setFrontGb(TsfSession.getFrontGb());
 		
 		// 2. 결재정보등록(TB_PAYMENT)
 		param = orderService.orderPgPayResult(param, request, response);

+ 2 - 47
src/main/java/com/style24/front/biz/web/TsfPgController.java

@@ -92,8 +92,8 @@ 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");
@@ -143,51 +143,6 @@ public class TsfPgController extends TsfBaseController {
 		return null;
 	}
 
-	/**
-	 * 결제 PG 요청 완료
-	 *
-	 * @param
-	 * @return
-	 * @author xodud1202
-	 * @since 2021. 03. 05
-	 */
-	@ResponseBody
-	@RequestMapping(value = "/pay/result/response")
-	public ModelAndView payResultResponse(Payment param, HttpServletRequest request, HttpServletResponse response) {
-
-		ModelAndView mav = new ModelAndView();
-
-		Order order = new Order();
-
-		// 1. 로그인체크 후 custNo 설정
-		if (TsfSession.isLogin()) {
-			param.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
-			order.setCustNo(TsfSession.getInfo().getCustNo());
-		} else {
-			param.setCustNo(0);
-			order.setCustNo(0);
-		}
-
-		param.setUpdNo(param.getCustNo());
-		param.setFrontGb(TsfSession.getFrontGb());
-
-		// 2. 결재정보등록(TB_PAYMENT)
-		param = orderService.orderPgPayResult(param, request, response);
-
-		order.setOrdNo(param.getOrdNo());
-		order.setSellGb("10");
-		order.setPgGb(param.getPgGb());
-		order.setPayMeans(param.getPayMeans());
-
-		// TODO 3. 주문정보 업데이트
-		coreOrderService.updateOrderInfo(order);
-
-		mav.addObject("payment", param);
-
-		mav.setViewName(super.getDeviceViewName("pg/kcpOrder"));
-		return mav;
-	}
-
 	/**
 	 * 네이버 페이 결제 모듈
 	 * @param request

+ 1 - 7
src/main/java/com/style24/front/biz/web/TsfPlanningController.java

@@ -208,13 +208,7 @@ public class TsfPlanningController extends TsfBaseController {
 
 		// 상품2열 전시
 		plan.setTmplType("G082_51");
-		/*
-		 * if (TsfSession.getFrontGb().equals("M")) { TscPageRequest pageable = new
-		 * TscPageRequest((plan.getPageNo2() > 0 ? plan.getPageNo2() - 1 : 0),
-		 * plan.getPageSize2(), plan.getPageUnit2()); int totalCnt =
-		 * planningService.getPlanGoodsDisplayList(plan).size();
-		 * pageable.setTotalCount(totalCnt); plan.setPageable2(pageable); }
-		 */
+
 		mav.addObject("goods2Info", planningService.getPlanGoodsDisplayList(plan));
 
 		// 상품4열 전시

+ 1 - 1
src/main/java/com/style24/front/support/config/TsfRedisSessionConfig.java

@@ -94,7 +94,7 @@ public class TsfRedisSessionConfig extends AbstractHttpSessionApplicationInitial
 		String active = env.getProperty("spring.profiles.active");
 		// TODO : SSL 적용 후 주석 풀고 테스트 해야함 2021-04-13
 		// SSL인증서 적용 시 주석 제거
-		if ("run".equals(active)) {
+		if ("run".equals(active) || "locd".equals(active)) {
 			serializer.setUseSecureCookie(true);
 			serializer.setSameSite("NONE");
 		}

+ 5 - 7
src/main/java/com/style24/front/support/interceptor/TsfDefaultInterceptor.java

@@ -7,11 +7,12 @@ import org.springframework.stereotype.Component;
 import org.springframework.web.servlet.ModelAndView;
 import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
 
-import com.gagaframework.web.util.GagaStringUtil;
 import com.style24.front.support.security.session.TsfSession;
 
 import lombok.extern.slf4j.Slf4j;
 
+import com.gagaframework.web.util.GagaStringUtil;
+
 /**
  * 모든 Request에 대한 선처리
  * 
@@ -46,16 +47,13 @@ public class TsfDefaultInterceptor extends HandlerInterceptorAdapter {
 //			return false;
 //		}
 //
-//		// Set Meta Info.
-//		policyService.setMetaInfo(FoConstants.SITE_CD);
-//
 //		String queryString = GagaStringUtil.convertParameterToQueryString(request.getParameterMap());
 //		if (StringUtils.isNotBlank(queryString))
 //			queryString = "?" + queryString;
 //		log.debug("queryString: [{}]", queryString);
-//
-//		// Set APP Info.
-//		this.setAppInfo(request);
+
+		// Set APP Info.
+		this.setAppInfo(request);
 
 		return super.preHandle(request, response, handler);
 	}

+ 1 - 0
src/main/java/com/style24/persistence/domain/Review.java

@@ -108,6 +108,7 @@ public class Review extends TscBaseDomain {
 	private int reviewExpireDay;
 	private String kmcKey;
 	private String kufKey;
+	private Integer rvAtcSq;
 	
 	private Integer custPntSq;		// 고객포인트일련번호
 	private int gvPntAmt;			// 지급포인트금액

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

@@ -152,7 +152,7 @@
 		                  WHERE GOODS_CD= G.GOODS_CD
 		                  GROUP BY GOODS_CD )
 		            END) AS STOCK_QTY
-		     , (CASE WHEN G.SELF_GOODS_YN ='Y' AND IFNULL(DS.GOODS_CD, 'Y') THEN 'Y' ELSE 'N' END ) AS QUIK_DELV_YN
+		     , (CASE WHEN G.SELF_GOODS_YN ='Y' AND IFNULL(DS.GOODS_CD, 'Y') = 'Y' THEN 'Y' ELSE 'N' END ) AS QUIK_DELV_YN
 		     , GS.REVIEW_REG_CNT
 		     , GS.SCORE
 		     , GS.SCORE_SIZE1

+ 2 - 2
src/main/java/com/style24/persistence/mybatis/shop/TsfOrder.xml

@@ -146,7 +146,7 @@
 				 INNER JOIN TB_PAYMENT P
 				    ON O.ORD_NO = P.ORD_NO
 				   AND P.PAY_GB = 'O'
-				   AND P.PAY_STAT IN ('G016_00', 'G016_30')
+				   AND P.PAY_STAT IN ('G016_10', 'G016_30')
 				  LEFT OUTER JOIN TB_REVIEW R
 				    ON R.ORD_NO = OD.ORD_NO
 				   AND R.ORD_DTL_NO = OD.ORD_DTL_NO
@@ -421,7 +421,7 @@
 			<if test="pgGb != null and pgGb != ''">
 		   AND PG_GB = #{pgGb}
 			</if>
-		   AND PAY_STAT IN ('G016_00', 'G016_30')
+		   AND PAY_STAT IN ('G016_10', 'G016_30')
 		</where>
 	</select>
 

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

@@ -948,7 +948,7 @@
 		         INNER JOIN TB_PAYMENT P
 		            ON P.ORD_NO = O.ORD_NO
 		           AND P.PAY_GB = 'O'
-		           AND P.PAY_STAT IN ('G016_00', 'G016_30')
+		           AND P.PAY_STAT IN ('G016_10', 'G016_30')
 		         WHERE OCD.DEL_YN = 'N'
 		           AND O.DISP_YN = 'Y'
 		<choose>

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

@@ -632,7 +632,6 @@
 					 ,F.CUST_NO
 					 ,F.ORD_NO
 					 ,F.ORD_DTL_NO
-					 ,F.REVIEW_TITLE
 					 ,F.REVIEW_CONTENT
 					 ,F.SCORE
 					 ,F.HEIGHT
@@ -689,7 +688,7 @@
 			      ,(SELECT CUST_ID FROM TB_CUSTOMER WHERE CUST_NO = F.CUST_NO) AS CUST_ID
 				  , ROW_NUMBER() OVER (PARTITION BY F.GOODS_CD ORDER BY F.BEST_YN DESC,F.SCORE, F.REG_DT) AS RANKNO
 				  , 'G082_10' AS TMPL_TYPE
-				  ,(SELECT PC.TITLE FROM TB_PLAN_CONTENTS PC WHERE PC.PLAN_SQ = 1 AND PC.TMPL_TYPE = 'G082_10') AS TITLE
+				  ,(SELECT PC.TITLE FROM TB_PLAN_CONTENTS PC WHERE PC.PLAN_SQ = #{planSq} AND PC.TMPL_TYPE = 'G082_10') AS TITLE
 			FROM 
 			(
 				SELECT R.REVIEW_SQ

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

@@ -287,7 +287,7 @@
 		     , A.KMC_KEY
 		     , A.KUF_KEY
 		     , A.DEL_YN 
-		     , RANK() OVER(ORDER BY a.FILE_GB DESC) AS NUMB
+		     , RANK() OVER(ORDER BY A.FILE_GB DESC) AS NUMB
 		FROM  TB_REVIEW R
 		INNER JOIN TB_REVIEW_ATTACH A ON R.REVIEW_SQ = A.REVIEW_SQ
 		                              AND A.DEL_YN = 'N'
@@ -298,6 +298,10 @@
 		     OR
 		     FILE_GB = 'M' AND R.CONFIRM_YN = 'Y'  AND  NULLIF(KMC_KEY,'') IS NOT NULL
 		    )
+		<if test="rvAtcSq != null and rvAtcSq != ''">
+		ORDER BY FIELD(A.RV_ATC_SQ, #{rvAtcSq})DESC
+		        ,RV_ATC_SQ ASC 
+		</if>
 	</select>
 	
 	<!-- 상품평 상품 옵션 목록 -->
@@ -1205,6 +1209,7 @@
 			 , RA.KUF_KEY
 			 , RA.FILE_GB
 			 , RA.DEL_YN
+			 , RANK() OVER(ORDER BY RA.FILE_GB DESC) AS NUMB
 		FROM TB_REVIEW R LEFT JOIN TB_REVIEW_ATTACH RA ON R.REVIEW_SQ = RA.REVIEW_SQ 
 		WHERE 1=1
 		 AND R.REVIEW_SQ = RA.REVIEW_SQ 

+ 2 - 2
src/main/java/com/style24/persistence/mybatis/shop/TsfSocial.xml

@@ -8,8 +8,8 @@
 		     , A.SOCIAL_TYPE
 		     , A.SITE_CD
 		     , A.FRONT_GB
-		     , A.SOCIAL_STDT
-		     , A.SOCIAL_EDDT
+		     , DATE_FORMAT(A.SOCIAL_STDT, '%Y%m%d') AS SOCIAL_STDT
+		     , DATE_FORMAT(A.SOCIAL_EDDT, '%Y%m%d') AS SOCIAL_EDDT
 		     , A.SOCIAL_TNM
 		     , A.USE_YN
 		     , A.APPLY_GB

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

@@ -17,7 +17,7 @@ logging:
     config: classpath:log/logback-locd.xml
 
 # SSL Server
-has-ssl: false
+has-ssl: true
 
 domain:
     front: //ldfront.style24.com

+ 104 - 10
src/main/webapp/WEB-INF/views/mob/common/fragments/FooterMob.html

@@ -6,11 +6,11 @@
 	<nav id="tabbar" class="tabbar fixed">
 	<!-- <nav id="tabbar" class="tabbar"> -->
 		<div class="tabbar-inner">
+			<a href="javascript:void(0);" onclick="menu();" class="btn-menu" data-popup-trigger="" data-target="#menu">Menu</a>
+			<a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MYPAGE);" class="btn-my">Mypage</a>
 			<a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MAIN);" class="btn-home">Home</a>
-			<a href="javascript:history;" class="btn-history">History</a>
 			<a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_WISHLIST);" class="btn-wish">Wish</a>
-			<a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MYPAGE);" class="btn-my">Mypage</a>
-			<a href="javascript:menu;" class="btn-menu" data-popup-trigger="" data-target="#menu">Menu</a>
+			<a href="javascript:history.back(-1);" class="btn-history">History</a>
 		</div>
 			<!-- 
 				<span class="txt-balloon" id="tutorial_mycloset" style=""> 툴팁예제</span>
@@ -49,22 +49,43 @@
 				</div>
 				
 				<ul class="link">
-					<li><a href="#none">사업자정보확인</a></li>
-					<li><a href="#none">PC버전</a></li>
+					<li><a href="http://www.ftc.go.kr/bizCommPop.do?wrkr_no=2298137000">사업자정보확인</a></li>
+					<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_VIEW_NORMAL);">PC버전</a></li>
 					<li><a href="#none">APP 다운로드</a></li>
-					<li><a href="#none">SN&#64;PP</a></li>
+					<li><a href="http://zine.istyle24.com">SN&#64;PP</a></li>
 				</ul>
 				<ul class="copy">
 					<li>COPYRIGHTⓒ2020 STYLE24 ALL RIGHTS RESERVED.</li>
 				</ul>
 				<ul class="sns">
-					<li><a href="#none" class="insta">Instagram</a></li>
-					<li><a href="#none" class="facebook">facebook</a></li>
+					<li><a href="https://instagram.com/istyle24.official?igshid=o3nzm9tydg9n" class="insta">Instagram</a></li>
+					<li><a href="https://www.facebook.com/istyle24" class="facebook">facebook</a></li>
 				</ul>
 			</div>
 		</section>
 	</footer>
 	
+	<div id="menuFull">
+		<div class="fullHead">
+			<div class="goHome"><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MAIN);"><img src="/images/mo/logo_STYLE24_full.png" alt=""></a></div>
+			<a href="javascript:void(0);" class="appSett" th:if="${isApp == true}">AppSetting</a>
+			<a href="javascript:menu_cls();" class="menu_cls">close</a>
+		</div>
+		<div class="fullBody">
+			<div class="inner">
+				<ul class="fullCate" id="ulQuickMenuCate">
+				</ul>
+			</div>
+			<div class="inner">
+				<div class="btn_group btn_group_flex">
+					<div th:if="${sessionInfo == null}"><button type="button" class="btn" onclick="cfnGoToPage(_PAGE_LOGIN);"><span>로그인</span></button></div>
+					<div th:if="${sessionInfo != null}"><button type="button" class="btn" onclick="cfnGoToPage(_PAGE_LOGOUT);"><span>로그아웃</span></button></div>
+					<div><button type="button" class="btn" onclick="cfnGoToPage(_PAGE_FAQ);"><span>고객센터</span></button></div>
+				</div>
+			</div>
+		</div>
+	</div>
+	
 	<!-- 배송지관리_팝업 -->
 	<div class="modal pop_full adrsChange_Pop" id="adrsChangePop" tabindex="-1" role="dialog" aria-labelledby="adrsChangeLabel" aria-hidden="true">
 		<div class="modal-dialog" role="document">
@@ -113,7 +134,76 @@
 
 <script th:inline="javascript">
 /*<![CDATA[*/
+	function menu() {
+		$("#menuFull").addClass('on');
+		return false;
+	}
+	
+	function menu_cls() {
+		$("#menuFull").removeClass('on');
+		return false;
+	}
+	
+	$(document).on('click','.hasCate a',function(e){
+		$(this).next('.depthCate').slideToggle(300);
+		$(this).toggleClass('on');
+		return false;
+	});
+	
+	// 퀵메뉴카테고리
+	let fnGetQuickMenuCategory = function(cate1) {
+		let tag = '';
+		if (cate1 != null) {
+			tag += '<li class="hasCate">\n';
+			tag += '	<a href="javascript:;"><span>' + cate1.cate1Nm + '</span></a>\n';
+			if (cate1.leafYn == 'N' && cate1.cate2List.length > 0) {
+				tag += '	<ul class="depthCate">\n';
+				tag += '		<li><a href="javascript:void(0);" onclick="cfnGoToCategoryMain(\'' + cate1.cateGb + '\',' + cate1.cate1No + ');"><span>메인</span></a>\n';
+				tag += '		<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\'' + cate1.cateGb + '\',' + cate1.cate1No + ');"><span>전체</span></a>\n';
+				$.each(cate1.cate2List, function(idx2, cate2) {
+					tag += '		<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\'' + cate2.cateGb + '\',' + cate2.cate1No + ',' + cate2.cate2No + ');"><span>' + cate2.cate2Nm + '</span></a>\n';
+				});
+				tag += '	</ul>\n';
+			}
+			tag += '</li>\n';
+		}
+		return tag;
+	}
+	
+	// 퀵메뉴탭 생성
+	let fnCreateQuickMenuTab = function() {
+		$.getJSON('/display/gnb/tab/list'
+			, function(result, status) {
+				if (status == 'success') {
+					if (result.length > 0) {
+						$('#ulQuickMenuCate').html('');
+						
+						let tag = '';
+						tag += '<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_ALL_BRAND);"><span>브랜드</span></a></li>\n';
+						
+						let allCate = [[${allCateList}]];
+						$.each(result, function(idx, item) {
+							if (item.contentsType == 'C' || item.contentsType == 'O') { // 컨텐츠유형: 카테고리, 아울렛
+								$.each(allCate, function(allCateIdx, allCateItem) {
+									if (item.cate1No == allCateItem.cate1No) {
+										tag += fnGetQuickMenuCategory(allCateItem);
+									}
+								});
+							} else if (item.contentsType == 'L') { // 컨텐츠유형:링크
+								tag += '<li><a href="' + item.linkUrl + '"><span>' + item.gtabNm + '</span></a></li>';
+							}
+						});
+						
+						$('#ulQuickMenuCate').html(tag);
+					}
+				}
+			});
+	}
+	
 	$(document).ready(function() {
+		// 퀵메뉴탭 조회
+		fnCreateQuickMenuTab();
+		
 		$.getJSON('/cart/goods/not/soldout/cnt', function (order, status) {
 			let cartCnt;
 			if (order.cartGoodsList.length > 99) {
@@ -122,8 +212,12 @@
 				cartCnt = order.cartGoodsList.length;
 			}
 
-			$("header #htopSub .button_wrap .store>span").text(cartCnt);
-			$("#header .gnb .btn_cart").attr("href", _PAGE_CART);
+// 			$("header #htopSub .button_wrap .store>span").text(cartCnt);
+// 			$("#header .gnb .btn_cart").attr("href", _PAGE_CART);
+			if (cartCnt > 0) {
+				$('#spanGnbCartCnt').html(cartCnt);
+				$('#spanGnbCartCnt').show();
+			}
 		});
 	});
 /*]]>*/

+ 50 - 8
src/main/webapp/WEB-INF/views/mob/common/fragments/GnbMob.html

@@ -25,9 +25,9 @@
 				<button class="search">
 					<img src="/images/mo/ico_btn_search_w.png" alt="검색">
 				</button>
-				<button class="store">
+				<button class="store" onclick="cfnGoToPage(_PAGE_CART);">
 					<img src="/images/mo/ico_btn_store_w.png" alt="쇼핑백">
-					<span>99+</span>
+					<span id="spanGnbCartCnt" style="display: none;"></span>
 				</button>
 			</div>
 		</section>
@@ -65,6 +65,40 @@
 	
 <script th:inline="javascript">
 /*<![CDATA[*/
+	let fnClickGnbTab = function(gtabSq) {
+		gagajf.setCookie("st24ck_gnb_tab", gtabSq, 1);
+	}
+	
+	// 브랜드 GNB탭 생성
+	let fnCreateBrandGnbTab = function() {
+		$.getJSON('/display/brand/gnb/tab/list?brandGroupNo=' + [[${brandGroupInfo?.brandGroupNo}]]
+			, function(result, status) {
+				if (status == 'success') {
+					if (result.length > 0) {
+						$('#ulGnbTab').html('');
+						
+						let tag = '';
+						tag += '<ul>\n';
+						tag += '	<li><a href="javascript:void(0);" onclick="cfnGoToBrandMain(' + [[${brandGroupInfo?.brandGroupNo}]] + ');" class="on">홈</a></li>\n';
+						tag += '	<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + [[${brandGroupInfo?.brandGroupNo}]] + ',\'' + [[${brandGroupInfo?.cateGb}]] + '\');" class="on">상품</a></li>\n';
+						
+						$.each(result, function(idx, item) {
+							if (item.contentsType == 'L') { // 컨텐츠유형:링크
+								tag += '<li><a href="' + item.linkUrl + '">' + item.gtabNm + '</a></li>\n';
+							}else{
+								tag += '<li><a href="' + item.linkUrl + '">' + item.gtabNm + '</a></li>\n';
+							}
+						});
+						
+						tag += '</ul>\n';
+						tag += '<button>+</button>';
+						
+						$('#ulGnbTab').html(tag);
+					}
+				}
+			});
+	}
+	
 	// GNB탭 생성
 	let fnCreateGnbTab = function() {
 		$.getJSON('/display/gnb/tab/list'
@@ -73,16 +107,19 @@
 					if (result.length > 0) {
 						$('#ulGnbTab').html('');
 						
+						let ckGnbTabSq = gagajf.getCookie("st24ck_gnb_tab");
+						
 						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);" onclick="cfnGoToPage(_PAGE_ALL_BRAND);">브랜드</a></li>\n';
+						tag += '<li class="' + (gagajf.isNull(ckGnbTabSq) ? "on" : "") + '"><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MAIN);">홈</a></li>\n';
+						tag += '<li class="' + (ckGnbTabSq == 100 ? "on" : "") + '"><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_ALL_BRAND); fnClickGnbTab(100);">브랜드</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';
+								tag += '<li class="' + (ckGnbTabSq == item.gtabSq ? "on" : "") + '"><a href="javascript:void(0);" onclick="cfnGoToCategoryMain(\'G032_101\',' + item.cate1No + '); fnClickGnbTab(' + item.gtabSq + ');">' + item.gtabNm + '</a></li>\n';
 							} else if (item.contentsType == 'O') { // 컨텐츠유형: 아울렛
-								tag += '<li><a href="javascript:void(0);" onclick="cfnGoToOutletMain(\'G032_103\');">' + item.gtabNm + '</a></li>\n';
+								tag += '<li class="' + (ckGnbTabSq == item.gtabSq ? "on" : "") + '"><a href="javascript:void(0);" onclick="cfnGoToOutletMain(\'G032_103\'); fnClickGnbTab(' + item.gtabSq + ');">' + item.gtabNm + '</a></li>\n';
 							} else { // 컨텐츠유형: 링크
-								tag += '<li><a href="' + item.linkUrl + '">' + item.gtabNm + '</a></li>\n';
+								tag += '<li class="' + (ckGnbTabSq == item.gtabSq ? "on" : "") + '"><a href="' + item.linkUrl + '" onclick="fnClickGnbTab(' + item.gtabSq + ');">' + item.gtabNm + '</a></li>\n';
 							}
 						});
 						
@@ -109,7 +146,12 @@
 					}
 				}
 				
-				fnCreateGnbTab();
+				// 브랜드로 접근하지 않았으면
+				if (gagajf.isNull([[${brandGroupInfo}]])) {
+					fnCreateGnbTab();
+				} else {
+					fnCreateBrandGnbTab();
+				}
 		});
 	}
 	

+ 3 - 3
src/main/webapp/WEB-INF/views/mob/common/fragments/GnbSubGoodsMob.html

@@ -28,9 +28,9 @@
 					<button type="button" class="search">
 						<img src="/images/mo/ico_btn_search.png" alt="검색">
 					</button>
-					<button type="button" class="store">
-						<img src="/images/mo/ico_btn_store.png" alt="쇼핑백">
-						<span>99+</span> 
+					<button class="store" onclick="cfnGoToPage(_PAGE_CART);">
+						<img src="/images/mo/ico_btn_store_w.png" alt="쇼핑백">
+						<span id="spanGnbCartCnt" style="display: none;"></span>
 					</button>
 				</div>
 			</section>

+ 3 - 3
src/main/webapp/WEB-INF/views/mob/common/fragments/GnbSubMob.html

@@ -26,9 +26,9 @@
 				<button type="button" class="search">
 					<img src="/images/mo/ico_btn_search.png" alt="검색">
 				</button>
-				<button type="button" class="store" onclick="cfnGoToPage(_PAGE_CART);">
-					<img src="/images/mo/ico_btn_store.png" alt="쇼핑백">
-					<span>99+</span>
+				<button class="store" onclick="cfnGoToPage(_PAGE_CART);">
+					<img src="/images/mo/ico_btn_store_w.png" alt="쇼핑백">
+					<span id="spanGnbCartCnt" style="display: none;"></span>
 				</button>
 			</div>
 		</section>

+ 3 - 3
src/main/webapp/WEB-INF/views/mob/common/fragments/GnbSubPlanningMob.html

@@ -26,9 +26,9 @@
 				<button type="button" class="search">
 					<img src="/images/mo/ico_btn_search.png" alt="검색">
 				</button>
-				<button type="button" class="store">
-					<img src="/images/mo/ico_btn_store.png" alt="쇼핑백">
-					<span>99+</span>
+				<button class="store" onclick="cfnGoToPage(_PAGE_CART);">
+					<img src="/images/mo/ico_btn_store_w.png" alt="쇼핑백">
+					<span id="spanGnbCartCnt" style="display: none;"></span>
 				</button>
 			</div>
 		</section>

+ 15 - 16
src/main/webapp/WEB-INF/views/mob/common/layout/DefaultLayoutMob.html

@@ -7,21 +7,20 @@
 
 <body>
 
-	<th:block th:replace="~{web/common/fragments/VariablesWeb :: variables}"></th:block>
-	<th:block th:replace="~{mob/common/fragments/ScriptsMob :: scripts}"></th:block>
-	<div class="app">
-		<!-- GNB -->
-		<th:block th:replace="~{mob/common/fragments/GnbMob :: gnb}"></th:block>
-		<!--// GNB -->
-		
-		<!-- CONTENT AREA -->
-		<th:block layout:fragment="content"></th:block>
-		<!-- // CONTENT AREA -->
-		
-		<!-- Footer -->
-		<th:block th:replace="~{mob/common/fragments/FooterMob :: footer}"></th:block>
+<th:block th:replace="~{web/common/fragments/VariablesWeb :: variables}"></th:block>
+<th:block th:replace="~{mob/common/fragments/ScriptsMob :: scripts}"></th:block>
 
-		
+<div class="app">
+	<!-- GNB -->
+	<th:block th:replace="~{mob/common/fragments/GnbMob :: gnb}"></th:block>
+	<!--// GNB -->
+	
+	<!-- CONTENT AREA -->
+	<th:block layout:fragment="content"></th:block>
+	<!-- // CONTENT AREA -->
+	
+	<!-- Footer -->
+	<th:block th:replace="~{mob/common/fragments/FooterMob :: footer}"></th:block>
 
 <script th:inline="javascript">
 /*<![CDATA[*/
@@ -31,7 +30,7 @@
 /*]]>*/
 </script>
 
-	</div>
-	
+</div>
+
 </body>
 </html>

+ 0 - 35
src/main/webapp/WEB-INF/views/mob/common/layout/PlanningLayoutMob.html

@@ -1,35 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko"
-	xmlns:th="http://www.thymeleaf.org"
-	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
-
-<head th:replace="~{mob/common/fragments/HeadMob :: head}"></head>
-
-<body>
-
-	<th:block th:replace="~{web/common/fragments/VariablesWeb :: variables}"></th:block>
-	<th:block th:replace="~{mob/common/fragments/ScriptsMob :: scripts}"></th:block>
-	<div class="app">
-		<!-- GNB -->
-		<th:block th:replace="~{mob/common/fragments/GnbSubPlanningMob :: gnb}"></th:block>
-		<!--// GNB -->
-		
-		<!-- CONTENT AREA -->
-		<th:block layout:fragment="content"></th:block>
-		<!-- // CONTENT AREA -->
-
-		<!-- Footer -->
-		<th:block th:replace="~{mob/common/fragments/FooterMob :: footer}"></th:block>
-
-<script th:inline="javascript">
-/*<![CDATA[*/
-	$(document).ready(function() {
-		
-	});
-/*]]>*/
-</script>
-
-	</div>
-	
-</body>
-</html>

+ 215 - 215
src/main/webapp/WEB-INF/views/mob/display/BrandMainFormMob.html

@@ -18,8 +18,6 @@
  -->
 <body>
 
-<link rel="stylesheet" href="/ux/mo/css/layout_m.css">
-
 <th:block layout:fragment="content">
 <main role="" id="" class="container br">
 	<section class="content br_main">
@@ -395,232 +393,234 @@
 		</th:block>
 	</section>
 </main>
-	<!-- 픽커모달 -->
-	<div class="modal fade" id="reco_pop" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
-
-		<a href="#close-modal" rel="modal:close" class="close-modal ">Close</a>
-	</div>
-	<!-- //픽커모달 -->
-	<script th:inline="javascript">
-		var goodsImgUrl = [[${@environment.getProperty('upload.goods.view')}]];
-
-		// 픽커모달
-		var fnGoodsPopup = function(obj1,obj2,obj3,obj4,obj5,obj6,obj7){
-			$("#reco_pop .modal-dialog").remove();
-			var tag = '';
-
-			tag += '<div class="modal-dialog" role="document">\n';
-			tag += '	<div class="modal-content">\n';
-			tag += '		<div class="modal-header">\n';
-			tag += '			<h5 class="modal-title"><span class="sr_only">제품정보</span></h5>\n';
-			tag += '		</div>\n';
-			tag += '		<div class="modal-body">\n';
-			tag += '			<div class="itemsGrp rowtype">\n';
-			tag += '				<div class="item_prod">\n';
-			tag += '					<div class="item_state">\n';
-			tag += '						<a href="javascript:void(0);" class="itemLink" onclick="cfnGoToGoodsDetail(\''+obj7+'\',\'\',\'\')">\n';
-			tag += '							<div class="itemPic">\n';
-			tag += '								<img class="vLHTC pd_img" src="'+goodsImgUrl+'/'+obj1+'?RS=260" alt="">\n';
-			tag += '							</div>\n';
-			tag += '							<p class="itemBrand">'+obj2+'</p>\n';
-			tag += '							<div class="itemName">'+obj3+'</div>\n';
-			tag += '							<p class="itemPrice">'+obj5.addComma()+'</p>\n';
-			tag += '						</a>\n';
-			tag += '					</div>\n';
-			tag += '				</div>\n';
-			tag += '			</div>\n';
-			tag += '		</div>\n';
-			tag += '	</div>\n';
-			tag += '</div>\n';
-
-			$("#reco_pop").append(tag);
-			$('#reco_pop').modal("show");
-		}
-
-		$(document).ready(function () {
-			$(document).on('click','.item_picker',function(e){
-				//$("#reco_pop").modal("show");
-				$("body").addClass("recoPop");
-				return false;
-			});
-			$(document).on('click','#reco_pop .close-modal',function(e){
-				$("body").removeClass("recoPop");
-				return false;
-			});
-
-			var spc = $('.swiper-pagination-current');
-			var spt = $('.swiper-pagination-total');
-			setInterval(function(){
-				for(var i=0; i<spc.length; i++){
-					if(spc[i].innerText.length < 2){
-						var itNum = spc[i].innerText.toString();
-						spc[i].innerText = 0+itNum;
-					}
-				}
-				for(var i=0; i<spt.length; i++){
-					if(spt[i].innerText.length < 2){
-						var itNum2 = spt[i].innerText.toString();
-						spt[i].innerText = 0+itNum2;
-					}
-				}
-			}, 10);
 
-
-			var clNum = 0;
-			$(document).on('click', '.br .pnb_mo > button',function(e){
-				if(clNum === 0){
-					$('.br .pnb_mo > button').css("background", "url(/images/mo/ico_btn_narrow.png) center top/1.8rem 2.0rem no-repeat");
-					clNum = 1;
-				} else {
-					$('.br .pnb_mo > button').css("background", "url(/images/mo/ico_btn_expand.png) center top/1.8rem 2.0rem no-repeat");
-					clNum = 0;
-				}
-			});
-		});
-
-		// 서브비주얼 슬라이드
-		var myArray = ["01", "02", "03"];
-		var submainVisualSwiper = new Swiper('.swiper-container.submain_visual', {
-			//210414_자동롤링 추가
-			autoplay : {
-				delay : 3000,   // 시간 설정
-			},
-			pagination: {
-				el: '.swiper-pagination',
-				type: 'fraction',
-				//renderCustom: function (swiper, current, total) {
-				//	return current + ' of ' + total;
-				//}
-			}
+<!-- 픽커모달 -->
+<div class="modal fade" id="reco_pop" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
+
+	<a href="#close-modal" rel="modal:close" class="close-modal ">Close</a>
+</div>
+<!-- //픽커모달 -->
+
+<script th:inline="javascript">
+	var goodsImgUrl = [[${@environment.getProperty('upload.goods.view')}]];
+
+	// 픽커모달
+	var fnGoodsPopup = function(obj1,obj2,obj3,obj4,obj5,obj6,obj7){
+		$("#reco_pop .modal-dialog").remove();
+		var tag = '';
+
+		tag += '<div class="modal-dialog" role="document">\n';
+		tag += '	<div class="modal-content">\n';
+		tag += '		<div class="modal-header">\n';
+		tag += '			<h5 class="modal-title"><span class="sr_only">제품정보</span></h5>\n';
+		tag += '		</div>\n';
+		tag += '		<div class="modal-body">\n';
+		tag += '			<div class="itemsGrp rowtype">\n';
+		tag += '				<div class="item_prod">\n';
+		tag += '					<div class="item_state">\n';
+		tag += '						<a href="javascript:void(0);" class="itemLink" onclick="cfnGoToGoodsDetail(\''+obj7+'\',\'\',\'\')">\n';
+		tag += '							<div class="itemPic">\n';
+		tag += '								<img class="vLHTC pd_img" src="'+goodsImgUrl+'/'+obj1+'?RS=260" alt="">\n';
+		tag += '							</div>\n';
+		tag += '							<p class="itemBrand">'+obj2+'</p>\n';
+		tag += '							<div class="itemName">'+obj3+'</div>\n';
+		tag += '							<p class="itemPrice">'+obj5.addComma()+'</p>\n';
+		tag += '						</a>\n';
+		tag += '					</div>\n';
+		tag += '				</div>\n';
+		tag += '			</div>\n';
+		tag += '		</div>\n';
+		tag += '	</div>\n';
+		tag += '</div>\n';
+
+		$("#reco_pop").append(tag);
+		$('#reco_pop').modal("show");
+	}
+	
+	$(document).ready(function () {
+		$(document).on('click','.item_picker',function(e){
+			//$("#reco_pop").modal("show");
+			$("body").addClass("recoPop");
+			return false;
 		});
-
-		//  이미지배너 슬라이드
-		var imgBannerSwiper = new Swiper('.swiper-container.br_second_slide', {
-			//210414_자동롤링 추가
-			autoplay : {
-				delay : 3000,   // 시간 설정
-			},
-			pagination: {
-				el: '.swiper-pagination',
-			},
-		});
-
-		// 뉴아이템 슬라이드
-		var newItemSwiper = new Swiper('.new_item .area_slider .swiper-container', {
-			slidesPerView: 1,
-			pagination: {
-				el: '.swiper-pagination',
-			},
-		});
-
-		// 베스트아이템 슬라이드
-		var bestItemSwiper = new Swiper('.best_item .area_slider .swiper-container', {
-			slidesPerView: 2,
-			spaceBetween: 8,
-		});
-
-		// 엠디픽 슬라이드
-		var mdItemSwiper = new Swiper('.md_item .area_slider .swiper-container', {
-			slidesPerView: 2,
-			spaceBetween: 8,
-		});
-
-		// 스페셜샵 슬라이드
-		var specialShopSwiper = new Swiper('.special_shop .area_slider .swiper-container', {
-			slidesPerView: 1,
-			spaceBetween: 10,
+		$(document).on('click','#reco_pop .close-modal',function(e){
+			$("body").removeClass("recoPop");
+			return false;
 		});
 
-		// 룩북 슬라이드
-		var rcmdPicimgSwiper = new Swiper('.recommendedArea .area_slider .swiper-container', {
-			slidesPerView: 1,
-			spaceBetween: 0,
-			pagination: {
-				el: '.swiper-pagination',
-				type: 'fraction',
-			},
-		});
+		var spc = $('.swiper-pagination-current');
+		var spt = $('.swiper-pagination-total');
+		setInterval(function(){
+			for(var i=0; i<spc.length; i++){
+				if(spc[i].innerText.length < 2){
+					var itNum = spc[i].innerText.toString();
+					spc[i].innerText = 0+itNum;
+				}
+			}
+			for(var i=0; i<spt.length; i++){
+				if(spt[i].innerText.length < 2){
+					var itNum2 = spt[i].innerText.toString();
+					spt[i].innerText = 0+itNum2;
+				}
+			}
+		}, 10);
 
-		// 유튜브 슬라이드
-		var swiperYoutu = new Swiper('.swiper-container.br_youtube_slide', {
-			pagination: {
-				el: '.swiper-pagination',
-			},
-		});
 
-		// 브랜드메인 배너 <br> 처리
-		$('.bMainTitle').each(function (){
-			let tag = '';
-			if(!gagajf.isNull($(this).find("input[name=mainTitle]").val())){
-				var brText = $(this).find("input[name=mainTitle]").val().replaceAll("<BR>", "<br>").replaceAll("<bR>", "<br>").replaceAll("<Br>", "<br>").replaceAll("<br/>", "<br>");
-				if(brText.indexOf('<br>') > -1){
-					var reText = brText.split("<br>");
-					tag += reText[0];
-					tag += '<br>';
-					tag += reText[1];
-				}else{
-					tag += brText;
-				}
-				$(this).append(tag);
+		var clNum = 0;
+		$(document).on('click', '.br .pnb_mo > button',function(e){
+			if(clNum === 0){
+				$('.br .pnb_mo > button').css("background", "url(/images/mo/ico_btn_narrow.png) center top/1.8rem 2.0rem no-repeat");
+				clNum = 1;
+			} else {
+				$('.br .pnb_mo > button').css("background", "url(/images/mo/ico_btn_expand.png) center top/1.8rem 2.0rem no-repeat");
+				clNum = 0;
 			}
 		});
-
-		// 브랜드소개 <br> 처리
-		if(!gagajf.isNull($("#brandDesc").find("input[name=brandTitle]").val())){
-			var brandDesc = $("#brandDesc").find("input[name=brandTitle]").val().replaceAll("<BR>", "<br>").replaceAll("<bR>", "<br>").replaceAll("<Br>", "<br>");
-			if(!gagajf.isNull(brandDesc)){
-				if(brandDesc.indexOf('<br>') > -1){
-					let tag = '';
-					var reText = brandDesc.split("<br>");
-					tag += reText[0];
-					tag += '<br>';
-					tag += reText[1];
-					$("#brandDesc .cate").append(tag);
-				}else{
-					let tag = '';
-					tag += brandDesc;
-					$("#brandDesc .cate").append(tag);
-				}
+	});
+
+	// 서브비주얼 슬라이드
+	var myArray = ["01", "02", "03"];
+	var submainVisualSwiper = new Swiper('.swiper-container.submain_visual', {
+		//210414_자동롤링 추가
+		autoplay : {
+			delay : 3000,   // 시간 설정
+		},
+		pagination: {
+			el: '.swiper-pagination',
+			type: 'fraction',
+			//renderCustom: function (swiper, current, total) {
+			//	return current + ' of ' + total;
+			//}
+		}
+	});
+
+	//  이미지배너 슬라이드
+	var imgBannerSwiper = new Swiper('.swiper-container.br_second_slide', {
+		//210414_자동롤링 추가
+		autoplay : {
+			delay : 3000,   // 시간 설정
+		},
+		pagination: {
+			el: '.swiper-pagination',
+		},
+	});
+
+	// 뉴아이템 슬라이드
+	var newItemSwiper = new Swiper('.new_item .area_slider .swiper-container', {
+		slidesPerView: 1,
+		pagination: {
+			el: '.swiper-pagination',
+		},
+	});
+
+	// 베스트아이템 슬라이드
+	var bestItemSwiper = new Swiper('.best_item .area_slider .swiper-container', {
+		slidesPerView: 2,
+		spaceBetween: 8,
+	});
+
+	// 엠디픽 슬라이드
+	var mdItemSwiper = new Swiper('.md_item .area_slider .swiper-container', {
+		slidesPerView: 2,
+		spaceBetween: 8,
+	});
+
+	// 스페셜샵 슬라이드
+	var specialShopSwiper = new Swiper('.special_shop .area_slider .swiper-container', {
+		slidesPerView: 1,
+		spaceBetween: 10,
+	});
+
+	// 룩북 슬라이드
+	var rcmdPicimgSwiper = new Swiper('.recommendedArea .area_slider .swiper-container', {
+		slidesPerView: 1,
+		spaceBetween: 0,
+		pagination: {
+			el: '.swiper-pagination',
+			type: 'fraction',
+		},
+	});
+
+	// 유튜브 슬라이드
+	var swiperYoutu = new Swiper('.swiper-container.br_youtube_slide', {
+		pagination: {
+			el: '.swiper-pagination',
+		},
+	});
+
+	// 브랜드메인 배너 <br> 처리
+	$('.bMainTitle').each(function (){
+		let tag = '';
+		if(!gagajf.isNull($(this).find("input[name=mainTitle]").val())){
+			var brText = $(this).find("input[name=mainTitle]").val().replaceAll("<BR>", "<br>").replaceAll("<bR>", "<br>").replaceAll("<Br>", "<br>").replaceAll("<br/>", "<br>");
+			if(brText.indexOf('<br>') > -1){
+				var reText = brText.split("<br>");
+				tag += reText[0];
+				tag += '<br>';
+				tag += reText[1];
+			}else{
+				tag += brText;
 			}
+			$(this).append(tag);
 		}
-
-		if(!gagajf.isNull($("#brandDesc").find("input[name=brandNote]").val())){
-			var brandDesc = $("#brandDesc").find("input[name=brandNote]").val().replaceAll("<BR>", "<br>").replaceAll("<bR>", "<br>").replaceAll("<Br>", "<br>");
-			if(!gagajf.isNull(brandDesc)){
-				if(brandDesc.indexOf('<br>') > -1){
-					let tag = '';
-					var reText = brandDesc.split("<br>");
-					tag += reText[0];
-					tag += '<br>';
-					tag += reText[1];
-					$("#brandDesc .desc").append(tag);
-				}else{
-					let tag = '';
-					tag += brandDesc;
-					$("#brandDesc .desc").append(tag);
-				}
+	});
+
+	// 브랜드소개 <br> 처리
+	if(!gagajf.isNull($("#brandDesc").find("input[name=brandTitle]").val())){
+		var brandDesc = $("#brandDesc").find("input[name=brandTitle]").val().replaceAll("<BR>", "<br>").replaceAll("<bR>", "<br>").replaceAll("<Br>", "<br>");
+		if(!gagajf.isNull(brandDesc)){
+			if(brandDesc.indexOf('<br>') > -1){
+				let tag = '';
+				var reText = brandDesc.split("<br>");
+				tag += reText[0];
+				tag += '<br>';
+				tag += reText[1];
+				$("#brandDesc .cate").append(tag);
+			}else{
+				let tag = '';
+				tag += brandDesc;
+				$("#brandDesc .cate").append(tag);
 			}
 		}
-
-		// 배너 슬라이더 <br> 처리
-		$('.bText').each(function (){
-			let tag = '';
-			if(!gagajf.isNull($(this).find("input[name=bannerDesc]").val())){
-				var brText = $(this).find("input[name=bannerDesc]").val().replaceAll("<BR>", "<br>").replaceAll("<bR>", "<br>").replaceAll("<Br>", "<br>").replaceAll("<br/>", "<br>");
-				if(brText.indexOf('<br>') > -1){
-					var reText = brText.split("<br>");
-					tag += reText[0];
-					tag += '</p>';
-					tag += '<p>';
-					tag += reText[1];
-					tag += '</p>';
-				}else{
-					tag += brText;
-				}
-				$(this).append(tag);
+	}
+
+	if(!gagajf.isNull($("#brandDesc").find("input[name=brandNote]").val())){
+		var brandDesc = $("#brandDesc").find("input[name=brandNote]").val().replaceAll("<BR>", "<br>").replaceAll("<bR>", "<br>").replaceAll("<Br>", "<br>");
+		if(!gagajf.isNull(brandDesc)){
+			if(brandDesc.indexOf('<br>') > -1){
+				let tag = '';
+				var reText = brandDesc.split("<br>");
+				tag += reText[0];
+				tag += '<br>';
+				tag += reText[1];
+				$("#brandDesc .desc").append(tag);
+			}else{
+				let tag = '';
+				tag += brandDesc;
+				$("#brandDesc .desc").append(tag);
 			}
-		});
-	</script>
+		}
+	}
+
+	// 배너 슬라이더 <br> 처리
+	$('.bText').each(function (){
+		let tag = '';
+		if(!gagajf.isNull($(this).find("input[name=bannerDesc]").val())){
+			var brText = $(this).find("input[name=bannerDesc]").val().replaceAll("<BR>", "<br>").replaceAll("<bR>", "<br>").replaceAll("<Br>", "<br>").replaceAll("<br/>", "<br>");
+			if(brText.indexOf('<br>') > -1){
+				var reText = brText.split("<br>");
+				tag += reText[0];
+				tag += '</p>';
+				tag += '<p>';
+				tag += reText[1];
+				tag += '</p>';
+			}else{
+				tag += brText;
+			}
+			$(this).append(tag);
+		}
+	});
+</script>
 
 </th:block>
 

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

@@ -2,7 +2,7 @@
 <html lang="ko"
 	  xmlns:th="http://www.thymeleaf.org"
 	  xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
-	  layout:decorator="mob/common/layout/PlanningLayoutMob">
+	  layout:decorator="mob/common/layout/DefaultLayoutMob">
 <!--
  *******************************************************************************
  * @source  : CategoryGoodsListFormMob.html

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

@@ -20,7 +20,6 @@
 
 <th:block layout:fragment="content">
 	<main role="" id="" class="container dp">
-
 		<section class="content dp_lookbook">
 			<div class="inner">
 				<!-- 상품리스트 -->

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

@@ -20,6 +20,7 @@
 
 <th:block layout:fragment="content">
 
+<main role="" id="" class="container">
 	<section class="main">
 	<th:block th:if="${mainLayoutList}" th:each="mainData, mainStat : ${mainLayoutList}" th:with="contentsLoc=${#strings.replace(mainData.contentsLoc,'SMM','')},contentsTitle=${#strings.replace(mainData.contentsTitle,'<br>',' ')}">
 		<th:block th:if="${mainData.ContentsList != null and !mainData.ContentsList.empty}">
@@ -751,7 +752,8 @@
 	</th:block>
 
 	</section>
-	
+</main>
+
 <script th:inline="javascript">
 /*<![CDATA[*/
 	var mainLayoutList = [[${mainLayoutList}]];

+ 17 - 9
src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDescFormMob.html

@@ -198,7 +198,8 @@
 				<th:block th:if="${goodsSafeNo.certTargetGb == 'G083_3'}" >  <!-- 상세별도표시 -->
 			<div class="area_kcl no-mark">
 				<div>
-					<p class="tit normal"><th:block th:if="${goodsSafeNo.certFormNm}" th:text="${goodsSafeNo.certFormNm + '/'}"></th:block> 제품 상세정보 내 별도 표기</p>
+					<p class="tit normal"><th:block th:if="${goodsSafeNo.certFormNm}" th:text="${goodsSafeNo.certFormNm}"></th:block>
+										<th:block th:if="${goodsSafeNo.certTypeNm}" th:text="${' ' + goodsSafeNo.certTypeNm}"></th:block> / 제품 상세정보 내 별도 표기</p>
 					<p class="normal">제품 상세정보 내 표기되어 있습니다. 상품 정보를 확인해주세요.</p>
 				</div>
 			</div>	
@@ -208,7 +209,8 @@
 			<div class="area_kcl">
 				<div><i class="ico ico_kcl"></i></div>
 				<div>
-					<p class="tit normal"><th:block th:text="${goodsSafeNo.certFormNm}"></th:block> / 공급자적합성확인</p>
+					<p class="tit normal"><th:block th:if="${goodsSafeNo.certFormNm}" th:text="${goodsSafeNo.certFormNm}"></th:block>
+										<th:block th:if="${goodsSafeNo.certTypeNm}" th:text="${' ' + goodsSafeNo.certTypeNm}"></th:block> / 공급자적합성확인</p>
 					<p class="normal">공급자 적합성 확인 품목으로 국가통합인증을 필함</p>
 				</div>	
 			</div>
@@ -218,18 +220,24 @@
 				<div><i class="ico ico_kcl"></i></div>
 				<div>
 					<th:block th:if="${goodsSafeNo.certFormGb != 'G084_4' and  goodsSafeNo.certFormGb != 'G084_5' }">
-					<p class="tit normal" th:text="${goodsSafeNo.certDiv +' '+goodsSafeNo.certTypeNm + ' / ' + goodsSafeNo.certOrganName}">어린이제품 안전인증 / 한국건설생활시험연구원(KCL)</p>
+					<p class="tit normal">
+						<th:block th:if="${goodsSafeNo.certDiv}" th:text="${goodsSafeNo.certDiv}"></th:block>
+						<th:block th:if="${goodsSafeNo.certOrganName}" th:text="${' /' + goodsSafeNo.certOrganName}"></th:block>
+					</p>
 					</th:block>
 					<th:block th:unless="${goodsSafeNo.certFormGb != 'G084_4' and  goodsSafeNo.certFormGb != 'G084_5' }">
-					<p class="tit normal" th:text="${goodsSafeNo.certFormNm + ' '+goodsSafeNo.certTypeNm}"></p>
+					<p class="tit normal" >
+						<th:block th:if="${goodsSafeNo.certFormNm}" th:text="${goodsSafeNo.certFormNm}"></th:block>
+						<th:block th:if="${goodsSafeNo.certTypeNm}" th:text="${' ' + goodsSafeNo.certTypeNm}"></th:block>
+					</p>
 					</th:block>
-					<p class="normal" >
-						<th:block th:if="${goodsSafeNo.certFormGb != 'G084_4' and  goodsSafeNo.certFormGb != 'G084_5' }">
-						<span>인증번호:</span> <a class="num" th:href="@{http://www.safetykorea.kr/search/searchPop(certNum=${goodsSafeNo.certNum})}" target="_blank" th:text="${goodsSafeNo.certNum}">CB123A123-1234</a>
-						</th:block>
-						<th:block th:uless="${goodsSafeNo.certFormGb != 'G084_4' and  goodsSafeNo.certFormGb != 'G084_5' }">
+					<p class="normal"  th:if="${goodsSafeNo.certNum}">
+						<th:block th:if="${goodsSafeNo.certFormGb == 'G084_4' or goodsSafeNo.certFormGb == 'G084_5' }">
 						<span>인증번호:</span> <th:block th:text="${goodsSafeNo.certNum}">CB123A123-1234</th:block>
 						</th:block>
+						<th:block th:unless="${goodsSafeNo.certFormGb == 'G084_4' or goodsSafeNo.certFormGb == 'G084_5' }">
+						<span>인증번호:</span> <a class="num" th:href="@{http://www.safetykorea.kr/search/searchPop(certNum=${goodsSafeNo.certNum})}" target="_blank" th:text="${goodsSafeNo.certNum}">CB123A123-1234</a>
+						</th:block>
 					</p>
 				</div>
 			</div>

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

@@ -20,8 +20,8 @@
 			<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:unless="${goodsInfo.quikDelvYn = 'Y'}" ><p class="dot">일반배송</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">
 				<h3>배송비</h3>

+ 41 - 23
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html

@@ -414,7 +414,8 @@
 						<th:block th:if="${goodsSafeNo.certTargetGb == 'G083_3'}" >  <!-- 상세별도표시 -->
 					<div class="area_kcl no-mark">
 						<div>
-							<p class="tit normal"><th:block th:if="${goodsSafeNo.certFormNm}" th:text="${goodsSafeNo.certFormNm + '/'}"></th:block> 제품 상세정보 내 별도 표기</p>
+							<p class="tit normal"><th:block th:if="${goodsSafeNo.certFormNm}" th:text="${goodsSafeNo.certFormNm}"></th:block>
+												<th:block th:if="${goodsSafeNo.certTypeNm}" th:text="${' ' + goodsSafeNo.certTypeNm}"></th:block> / 제품 상세정보 내 별도 표기</p>
 							<p class="normal">제품 상세정보 내 표기되어 있습니다. 상품 정보를 확인해주세요.</p>
 						</div>
 					</div>	
@@ -424,7 +425,8 @@
 					<div class="area_kcl">
 						<div><i class="ico ico_kcl"></i></div>
 						<div>
-							<p class="tit normal"><th:block th:text="${goodsSafeNo.certFormNm}"></th:block> / 공급자적합성확인</p>
+							<p class="tit normal"><th:block th:if="${goodsSafeNo.certFormNm}" th:text="${goodsSafeNo.certFormNm}"></th:block>
+												<th:block th:if="${goodsSafeNo.certTypeNm}" th:text="${' ' + goodsSafeNo.certTypeNm}"></th:block> / 공급자적합성확인</p>
 							<p class="normal">공급자 적합성 확인 품목으로 국가통합인증을 필함</p>
 						</div>	
 					</div>
@@ -434,18 +436,24 @@
 						<div><i class="ico ico_kcl"></i></div>
 						<div>
 							<th:block th:if="${goodsSafeNo.certFormGb != 'G084_4' and  goodsSafeNo.certFormGb != 'G084_5' }">
-							<p class="tit normal" th:text="${goodsSafeNo.certDiv +' '+goodsSafeNo.certTypeNm + ' / ' + goodsSafeNo.certOrganName}">어린이제품 안전인증 / 한국건설생활시험연구원(KCL)</p>
+							<p class="tit normal">
+								<th:block th:if="${goodsSafeNo.certDiv}" th:text="${goodsSafeNo.certDiv}"></th:block>
+								<th:block th:if="${goodsSafeNo.certOrganName}" th:text="${' /' + goodsSafeNo.certOrganName}"></th:block>
+							</p>
 							</th:block>
 							<th:block th:unless="${goodsSafeNo.certFormGb != 'G084_4' and  goodsSafeNo.certFormGb != 'G084_5' }">
-							<p class="tit normal" th:text="${goodsSafeNo.certFormNm + ' '+goodsSafeNo.certTypeNm}"></p>
+							<p class="tit normal" >
+								<th:block th:if="${goodsSafeNo.certFormNm}" th:text="${goodsSafeNo.certFormNm}"></th:block>
+								<th:block th:if="${goodsSafeNo.certTypeNm}" th:text="${' ' + goodsSafeNo.certTypeNm}"></th:block>
+							</p>
 							</th:block>
-							<p class="normal" >
-								<th:block th:if="${goodsSafeNo.certFormGb != 'G084_4' and  goodsSafeNo.certFormGb != 'G084_5' }">
-								<span>인증번호:</span> <a class="num" th:href="@{http://www.safetykorea.kr/search/searchPop(certNum=${goodsSafeNo.certNum})}" target="_blank" th:text="${goodsSafeNo.certNum}">CB123A123-1234</a>
-								</th:block>
-								<th:block th:uless="${goodsSafeNo.certFormGb != 'G084_4' and  goodsSafeNo.certFormGb != 'G084_5' }">
+							<p class="normal"  th:if="${goodsSafeNo.certNum}">
+								<th:block th:if="${goodsSafeNo.certFormGb == 'G084_4' or goodsSafeNo.certFormGb == 'G084_5' }">
 								<span>인증번호:</span> <th:block th:text="${goodsSafeNo.certNum}">CB123A123-1234</th:block>
 								</th:block>
+								<th:block th:unless="${goodsSafeNo.certFormGb == 'G084_4' or goodsSafeNo.certFormGb == 'G084_5' }">
+								<span>인증번호:</span> <a class="num" th:href="@{http://www.safetykorea.kr/search/searchPop(certNum=${goodsSafeNo.certNum})}" target="_blank" th:text="${goodsSafeNo.certNum}">CB123A123-1234</a>
+								</th:block>
 							</p>
 						</div>
 					</div>
@@ -462,7 +470,8 @@
 								<th:block th:if="${goodsCompose.goodsSafeNo.certTargetGb == 'G083_3'}" >  <!-- 상세별도표시 -->
 					<div class="area_kcl no-mark">
 						<div>
-							<p class="tit normal"><th:block th:if="${goodsCompose.goodsSafeNo.certFormNm}" th:text="${goodsCompose.goodsSafeNo.certFormNm + '/'}"></th:block> 제품 상세정보 내 별도 표기</p>
+							<p class="tit normal"><th:block th:if="${goodsCompose.goodsSafeNo.certFormNm}" th:text="${goodsCompose.goodsSafeNo.certFormNm}"></th:block>
+												<th:block th:if="${goodsCompose.goodsSafeNo.certTypeNm}" th:text="${' ' + goodsCompose.goodsSafeNo.certTypeNm}"></th:block> / 제품 상세정보 내 별도 표기</p>
 							<p class="normal">제품 상세정보 내 표기되어 있습니다. 상품 정보를 확인해주세요.</p>
 						</div>
 					</div>	
@@ -472,7 +481,8 @@
 					<div class="area_kcl">
 						<div><i class="ico ico_kcl"></i></div>
 						<div>
-							<p class="tit normal"><th:block th:text="${goodsCompose.goodsSafeNo.certFormNm}"></th:block> / 공급자적합성확인</p>
+							<p class="tit normal"><th:block th:if="${goodsCompose.goodsSafeNo.certFormNm}" th:text="${goodsCompose.goodsSafeNo.certFormNm}"></th:block>
+												<th:block th:if="${goodsCompose.goodsSafeNo.certTypeNm}" th:text="${' ' + goodsCompose.goodsSafeNo.certTypeNm}"></th:block> / 공급자적합성확인</p>
 							<p class="normal">공급자 적합성 확인 품목으로 국가통합인증을 필함</p>
 						</div>	
 					</div>
@@ -482,18 +492,25 @@
 						<div><i class="ico ico_kcl"></i></div>
 						<div>
 							<th:block th:if="${goodsCompose.goodsSafeNo.certFormGb != 'G084_4' and  goodsCompose.goodsSafeNo.certFormGb != 'G084_5' }">
-							<p class="tit normal" th:text="${goodsCompose.goodsSafeNo.certDiv +' '+goodsCompose.goodsSafeNo.certTypeNm + ' / ' + goodsCompose.goodsSafeNo.certOrganName}">어린이제품 안전인증 / 한국건설생활시험연구원(KCL)</p>
+							<p class="tit normal" >
+								<th:block th:if="${goodsCompose.goodsSafeNo.certDiv}" th:text="${goodsCompose.goodsSafeNo.certDiv}"></th:block>
+								<th:block th:if="${goodsCompose.goodsSafeNo.certOrganName}" th:text="${' /' + goodsCompose.goodsSafeNo.certOrganName}"></th:block>
+							</p>
 							</th:block>
 							<th:block th:unless="${goodsCompose.goodsSafeNo.certFormGb != 'G084_4' and  goodsCompose.goodsSafeNo.certFormGb != 'G084_5' }">
-							<p class="tit normal" th:text="${goodsCompose.goodsSafeNo.certFormNm + ' '+goodsCompose.goodsSafeNo.certTypeNm}"></p>
+							<p class="tit normal">
+								<th:block th:if="${goodsCompose.goodsSafeNo.certFormNm}" th:text="${goodsCompose.goodsSafeNo.certFormNm}"></th:block>
+								<th:block th:if="${goodsCompose.goodsSafeNo.certTypeNm}" th:text="${' ' + goodsCompose.goodsSafeNo.certTypeNm}"></th:block>
+							</p>
 							</th:block>
-							<p class="normal" >
-								<th:block th:if="${goodsCompose.goodsSafeNo.certFormGb != 'G084_4' and  goodsCompose.goodsSafeNo.certFormGb != 'G084_5' }">
-								<span>인증번호:</span> <a class="num" th:href="@{http://www.safetykorea.kr/search/searchPop(certNum=${goodsCompose.goodsSafeNo.certNum})}" target="_blank" th:text="${goodsSafeNo.certNum}">CB123A123-1234</a>
-								</th:block>
-								<th:block th:uless="${goodsCompose.goodsSafeNo.certFormGb != 'G084_4' and  goodsCompose.goodsSafeNo.certFormGb != 'G084_5' }">
+							<p class="normal"  th:if="${goodsCompose.goodsSafeNo.certNum}">
+								<th:block th:if="${goodsCompose.goodsSafeNo.certFormGb == 'G084_4' or goodsCompose.goodsSafeNo.certFormGb == 'G084_5' }">
 								<span>인증번호:</span> <th:block th:text="${goodsCompose.goodsSafeNo.certNum}">CB123A123-1234</th:block>
 								</th:block>
+								<th:block th:unless="${goodsCompose.goodsSafeNo.certFormGb == 'G084_4' or goodsCompose.goodsSafeNo.certFormGb == 'G084_5' }">
+								<span>인증번호:</span> <a class="num" th:href="@{http://www.safetykorea.kr/search/searchPop(certNum=${goodsCompose.goodsSafeNo.certNum})}" 
+														target="_blank" th:text="${goodsCompose.goodsSafeNo.certNum}">CB123A123-1234</a>
+								</th:block>
 							</p>
 						</div>
 					</div>
@@ -690,7 +707,7 @@
 													<th:block th:if="${goodsInfo.minOrdAmt > 0}">(<th:block th:text="${#numbers.formatInteger(goodsInfo.minOrdAmt, 0,'COMMA')}" ></th:block>원 이상 무료배송)</th:block>
 							</span>
 							<span class="txt_shippingfee" th:if="${goodsInfo.delvFee <= 0}">무료배송</span>
-							<span class="txt_shippingfee" th:if="${goodsInfo.quikDelvYn = 'Y'}">총알배송(오전 10시까지 주문 시)</span>
+							<span class="txt_shippingfee" th:if="${goodsInfo.quikDelvYn == 'Y'}">총알배송(오전 10시까지 주문 시)</span>
 							<!-- //해당 배송정보 선택노출 -->
 						</div>
 					</li>
@@ -1115,7 +1132,7 @@
 		
 		let addPrice  = $target.attr("addPrice");
 		$(".selectOptCd1addPrice").html('');
-		if (Number(addPrice) > 0) $(".selectOptCd1addPrice").html("(+" + addPrice.addComma() + ")");
+		if (Number(addPrice) > 0) $(".selectOptCd1addPrice").html("(+" + addPrice.addComma() + ")");
 		
 		$("#cartForm  input[name=optCd]").val(optCd);
 		$("#cartForm  input[name=optCd1]").val(optCd1);
@@ -1145,7 +1162,7 @@
 				$("#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=cea]").attr("readonly",false);
 				$("#cartForm  input[name=stock]").val(itemCnt);
 
 				$('.price_box').show();
@@ -1227,7 +1244,7 @@
 			tag += '	</div>\n';
 			tag += '	<div class="number_count">\n';
 			tag += '		<span class="minus min_val" onclick="fnAdjustOrderEa(this);" adjust="-"><em class="sr-only">감소</em></span>\n';
-			tag += '		<input type="text" name="cea" optCd="'+optCd+'" maxlength="3" style="ime-mode:disabled" value="' +optQty+'" onblur="fnChangeOrderEa(this)" minOrdQty="'+minOrdQty+'" maxOrdQty="'+maxOrdQty+'" data-valid-type="numeric">\n';
+			tag += '		<input type="text" name="cea" optCd="'+optCd+'" maxlength="3" style="ime-mode:disabled" value="' +optQty+'" readonly>\n';
 			tag += '		<input type="hidden" name="coption" value="'+optCd+'"  goodsCd="'+goodsCd+'"  price="'+currPrice+'"  addPrice="'+addPrice+'">\n';
 			tag += '		<span class="plus" onclick="fnAdjustOrderEa(this);" adjust="+"><em class="sr-only">추가</em></span>\n';
 			tag += '	</div>\n';
@@ -1361,7 +1378,7 @@
 				tag += '	</div>\n';
 				tag += '	<div class="number_count">\n';
 				tag += '		<span class="minus min_val" onclick="fnAdjustOrderEa(this);" adjust="-"><em class="sr-only">감소</em></span>\n';
-				tag += '		<input type="text" name="cea" optCd="'+resultOptCd+'" maxlength="3" style="ime-mode:disabled" value="' +optQty+'" onblur="fnChangeOrderEa(this)" minOrdQty="'+minOrdQty+'" maxOrdQty="'+maxCnt+'" data-valid-type="numeric">\n';
+				tag += '		<input type="text" name="cea" optCd="'+resultOptCd+'" maxlength="3" style="ime-mode:disabled" value="' +optQty+'" readonly>\n';
 				tag += '		<input type="hidden" name="coption" value="'+resultOptCd+'"  goodsCd="'+goodsCd+'"  price="'+currPrice+'"  addPrice="'+addPrice+'">\n';
 				tag += '		<span class="plus" onclick="fnAdjustOrderEa(this);" adjust="+"><em class="sr-only">추가</em></span>\n';
 				tag += '	</div>\n';
@@ -1553,6 +1570,7 @@
 				}else{
 					$obj = $('.pop_option_select .select_custom.item_opt2.item_opt2_1');
 					qty = $obj.attr('qty'); // 구성수량
+					ridx = 1;  // 입점은 1로 고정
 				}	
 				
 				$.each(result.dataList, function(idx, item) {

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

@@ -452,7 +452,7 @@
 		<h6>포토/영상 리뷰</h6>
 		<div class="photo_list">
 			<ul>
-				<li  th:each="photoReview, status : ${photoReviewList}" th:if="${status.count<=7}">
+				<li  th:each="photoReview, status : ${photoReviewList}" th:if="${status.count<=8}">
 					<th:block th:if="${photoReview.reviewAttachList != null and !photoReview.reviewAttachList.empty}">
 					<th:block th:each="reviewAttach, attachStatus : ${photoReview.reviewAttachList}" th:if="${attachStatus.first}">
 					<a href="javascript:void(0);" th:onclick="cfGoodsReviewDetail([[${goodsInfo.goodsCd}]], '', 'Y', [[${photoReview.reviewSq}]])">
@@ -469,8 +469,8 @@
 					</th:block>
 				</li>
 			</ul>
-			<!-- 포토영상 게시글 최대 7개 & 버튼노출 -->
-			<div th:if="${#lists.size(photoReviewList) >= 8}">
+			<!-- 포토영상 게시글 최대 8개 & 버튼노출 -->
+			<div th:if="${#lists.size(photoReviewList) >= 9}">
 				<div>
 					<button type="button" id="btn_more_photoreview" th:onclick="cfGoodsReviewPhoto([[${goodsInfo.goodsCd}]])"><span>더 보기</span></button>
 				</div>	
@@ -478,7 +478,7 @@
 			<!-- //포토영상 게시글 최대 7개 & 버튼노출 -->
 		</div>
 	</div>
-	<div class="area_rv_all">
+	<div class="area_rv_all" style="display:block;">
 	<form id="goodsReviewForm" name="goodsReviewForm" action="#" th:action="@{'/goods/review/list'}">
 	<input type="hidden" name="pageNo" value ="1"/>
 	<input type="hidden" name="pageSize" value ="20"/>
@@ -590,6 +590,7 @@
 	
 	var fnDrawInfiniteScrollData = function(result, pageNum){
 		if (result.dataList != null && result.dataList.length > 0) {
+			$('.area_rv_all').show();
 			var htm = fnCreateGoodsReviewList(result);
 			gagaInfiniteScroll.draw(htm);
 		}else {
@@ -650,6 +651,7 @@
 	var fnCreateGoodsReviewList = function(result) {
 
 		let tag = '';
+		
 		$.each(result.dataList, function(idx, item) {
 			$('#goodsReviewForm').find('.nodata').hide();
 			tag += '<li>\n';
@@ -785,19 +787,23 @@
 	}
 	
 	// 상품평 초기화
-	var fnReviewSearchInit = function(){
+	var fnReviewSearchInit = function(){debugger;
 		
-		$('#goodsReviewForm').find('.select_custom.sort_opt1').find('.list li').eq(0).trigger('click')
-		$('#goodsReviewForm').find('.select_custom.sort_opt2').find('.list li').eq(0).trigger('click')
-		$('#goodsReviewForm').find('.select_custom.sort_opt3').find('.list li').eq(0).trigger('click')
-		$('#goodsReviewForm').find('.select_custom.sort_opt4').find('.list li').eq(0).trigger('click')
+		$('#goodsReviewForm').find('#grade').find('ul li').eq(0).trigger('click');
+		$('#goodsReviewForm').find('#size').find('ul li').eq(0).trigger('click');
+		$('#goodsReviewForm').find('#height').find('ul li').eq(0).trigger('click');
+		$('#goodsReviewForm').find('#weight').find('ul li').eq(0).trigger('click');
 		
 		$('#goodsReviewForm input[name=reviewScore]').val('');
 		$('#goodsReviewForm input[name=reviewOption]').val('');
 		$('#goodsReviewForm input[name=reviewHeight]').val('');
 		$('#goodsReviewForm input[name=reviewWeight]').val('');
 		
-		fnGetList();
+		//fnGetList();
+		
+		fnReviewCateClose();
+		fnGoodsReviewInfiniteScrollInit();
+		fnGoodsReviewListSearch();
 	}
 	
 	var fnReviewCateClose = function(){

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

@@ -65,8 +65,8 @@
 				if (item.reviewAttachList != null && item.reviewAttachList.length > 0){
 					var fileGbClass = '';
 					$.each(item.reviewAttachList, function(aIdx, reviewAttach){
-						fileGbClass = '';
-						if (reviewAttach == "M") fileGbClass = "mov";
+					//	fileGbClass = '';
+					//	if (reviewAttach == "M") fileGbClass = "mov";
 				tag += '				<li>\n';
 				tag += '					<a href="javascript:void();" onclick="fnGoodsReviewDetail(\''+item.reviewSq+'\');">\n';
 				tag += '						<div class="pic">\n';
@@ -78,6 +78,7 @@
 				tag += '						</div>\n';
 				tag += '					</a>\n';
 				tag += '				</li>\n';		
+				return false;
 					});	
 				}
 				

+ 2 - 1
src/main/webapp/WEB-INF/views/mob/mypage/MypageCustConfirmFormMob.html

@@ -94,13 +94,14 @@
 	var fnConfirmCallback = function (result) {
 		let confirmYn = 'Y';
 		let $passwd = $('#confirmForm input[name=passwd]');
+		let $custId = $('#confirmForm input[name=custId]');
 		if (result.isMatch) {
 			confirmYn = 'Y';
 			cfnGoToPage(_PAGE_MYPAGE_CUSTOMER_MODIFY+'?confirmYn='+ confirmYn);
 		} else {
 			mcxDialog.alert('비밀번호가 일치하지 않습니다.');
 			$passwd.val('');
-			$passwd.focus();
+			$custId.focus();
 			return;
 		}
 	};

+ 6 - 3
src/main/webapp/WEB-INF/views/mob/mypage/MypageCustModifyFormMob.html

@@ -248,6 +248,9 @@
 		fnDisplayEmailAgree(custInfo.emailAgreeYn);
 		fnDisplaySmsAgree(custInfo.smsAgreeYn);
 
+		// 회원(고객) 계좌 조회
+		fnGetCustAccountInfo();
+
 	}
 
 	// 이메일 수신동의
@@ -517,6 +520,7 @@
 	});
 
 	$(document).ready(function(){
+
 		if (!gagajf.isNull(sEncData)) {
 			fnNiceCallBack(sEncData, authMethod);
 		}
@@ -526,9 +530,6 @@
 		// 회원(고객) 조회
 		fnGetCustInfo();
 
-		// 회원(고객) 계좌 조회
-		fnGetCustAccountInfo();
-
 		//버튼 색
 		$(document).on('click','.popup_box .button_list button',function(){
 			$('.popup_box .button_list button').removeClass('on');
@@ -549,6 +550,8 @@
 			$("body").css({"overflow":"visible"});
 		});
 
+
+
 	})
 	/*]]>*/
 </script>

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

@@ -147,7 +147,7 @@
 								<td>
 									<div class="select_custom select_exchange">
 										<div class="combo">
-											<div class="select">사이즈 변경</div>
+											<div class="select">교환 사유를 선택하세요.</div>
 										</div>
 									</div>
 								</td>
@@ -373,9 +373,6 @@ $(document).ready(function() {
 		$('#withdraw').click();
 		$('.wdGb').css('display','none');
 	}
-
-	// 교환사유 선택 처리
-	$('#exchangeReasonPop .lap .popup_con .button_list button').eq(0).click();
 });
 
 // 교환수량버튼기능

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

@@ -121,7 +121,7 @@
 								<td>
 									<div class="select_custom select_return">
 										<div class="combo">
-											<div class="select">단순 변심</div>
+											<div class="select">반품 사유를 선택하세요.</div>
 										</div>
 									</div>
 								</td>
@@ -470,9 +470,6 @@ $(document).ready(function() {
 
 	// 타이틀명
 	$('#htopTitle').text('반품 신청');
-
-	// 반품사유 선택 처리
-	$('#returnReasonPop .lap .popup_con .button_list button').eq(0).click();
 });
 
 // 반품수량버튼기능

+ 1 - 2
src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewCreateFormMob.html

@@ -298,7 +298,6 @@
 let reviewList = [[${reviewInfo}]];
 let reviewStat = [[${reviewStat}]];
 let reviewAttach = [[${alreadyReviewAttach}]];
-let reviewUrl =[[${@environment.getProperty('upload.image.view')}]];
 
 //별점 class="on"
 var $starEls = $('#star_grade button#starBtn');
@@ -550,7 +549,7 @@ $(function(){
 				if(reviewAttach[i].reviewSq == reviewList.reviewSq){
 					if(reviewAttach[i].fileGb == "I"){
 						$("<span class=\"pics\">" +
-								"<img class=\"picsThumbs\" src=\"" + reviewUrl + '/' + reviewAttach[i].sysFileNm + "\" />" +
+								"<img class=\"picsThumbs\" src=\"" + _uploadImageUrl + '/' + reviewAttach[i].sysFileNm + "\" />" +
 								"<input type='hidden' name='orgFileNmArr' value='"+reviewAttach[i].orgFileNm+"'>" +
 								"<input type='hidden' name='sysFileNmArr' value='"+reviewAttach[i].sysFileNm+"'>" +
 								"<br/><span class=\"removes\">Removes image</span>" +

+ 1 - 3
src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewDetailFormMob.html

@@ -38,9 +38,7 @@
 								<div class="swiper-slide">
 									<div class="thumb " th:classAppend="${(reviewAttach.fileGb == 'M') ? 'mov' :''}">
 										<th:block th:if="${reviewAttach.fileGb == 'M'}">
-											<video poster="http://cdn.011st.com/11dims/resize/1999x1999/quality/75/11src/review/10201202/3121412332/2e66698576d64c5c9977a6fe6606008d.jpg" muted="muted" preload="metadata" controls="controls">
-												<source src="http://snsvideo.11st.co.kr/movie/item/www/675/67518524_06_1_C1.mp4" type="video/mp4">
-											</video>
+											<iframe class="pd_mov" width="100%" height="100%" th:src="${kollusMediaUrl+'/'+reviewAttach.kmcKey +'?enable_initialize_focus=false&autoplay&mute&controls_activation=none'}" frameborder="0" allowfullscreen></iframe>
 										</th:block>
 										<th:block th:unless="${reviewAttach.fileGb == 'M'}">
 											<img th:src="${imgUrl+'/'+reviewAttach.sysFileNm}" alt="">

+ 9 - 11
src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewFormMob.html

@@ -83,15 +83,13 @@
 	<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/jquery/jquery.history.min.js"></script>
 <script th:inline="javascript">
 /*<![CDATA[*/
-	let imageUrl = [[${@environment.getProperty('upload.goods.view')}]];
-	let reviewUrl =[[${@environment.getProperty('upload.image.view')}]];
 	let attachList = [[${alreadyReviewAttach}]];
 	// 작성가능한 리뷰 클릭 시 
 	
@@ -105,7 +103,7 @@
 	
 	var fnGetAlreadyCallback = function (result) {
 			if (result.dataList2 != null && result.dataList2.length > 0) {
-				if (result.paging2.pageable2.pageNo == 1){
+				if (result.paging2.pageable.pageNo == 1){
 					$('#reviewList').html('');
 				}	
 				var html = '';
@@ -115,7 +113,7 @@
 					html += '			<div class="goods_detail">';
 					html += '				<a href="javascript:void(0)" onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')" >';
 					html += '					<div class="thumb_box">';
-					html += '						<img src="' + imageUrl + '/' + item.sysImgNm + '?RS=405" alt="tmp_pdClickother1">';
+					html += '						<img src="' + _uploadGoodsUrl + '/' + item.sysImgNm + '?RS=405" alt="tmp_pdClickother1">';
 					html += '					</div>';
 					html += '					<div class="info_box">';
 					html += '						<div class="od_name">';
@@ -176,9 +174,9 @@
 								html += '						<a>';
 								html += '							<div class="pic">';
 								if (attachList[i].fileGb == 'M') {
-									html += '								<span class="thumb mov" onclick="cfMypageReviewDetail(\''+item.goodsCd+'\', \'Y\',\''+item.reviewSq+'\');"  style="background-image:url(' + _kollusMediaUrl + '/' + attachList[i].kmcKey + '?player_version=html5);"></span>';
+									html += '								<span class="thumb mov" onclick="cfMypageReviewDetail(\''+item.goodsCd+'\', \'Y\',\''+item.reviewSq+'\',\''+attachList[i].rvAtcSq+'\');"  style="background-image:url(' + _kollusMediaUrl + '/poster/' + attachList[i].kmcKey + '?player_version=html5);"></span>';
 								}else{
-									html += '								<span class="thumb" onclick="cfMypageReviewDetail(\''+item.goodsCd+'\', \'Y\',\''+item.reviewSq+'\');" style="background-image:url(' + reviewUrl + '/' + attachList[i].sysFileNm + ');"></span>';
+									html += '								<span class="thumb" onclick="cfMypageReviewDetail(\''+item.goodsCd+'\', \'Y\',\''+item.reviewSq+'\',\''+attachList[i].rvAtcSq+'\');" style="background-image:url(' + _uploadImageUrl + '/' + attachList[i].sysFileNm + ');"></span>';
 								}
 								
 								html += '							</div>';
@@ -252,10 +250,10 @@
 				});
 				
 				$('#reviewList').append(html);
-				if (result.paging2.pageable2.totalPage > result.paging2.pageable2.pageNo) {
+				if (result.paging2.pageable.totalPage > result.paging2.pageable.pageNo) {
 					$('#btnMore').parent().hide();
 					$('#btnMore2').parent().show();
-					$('#searchForm2 input[name=pageNo2]').val(result.paging2.pageable2.pageNo + 1);
+					$('#searchForm2 input[name=pageNo]').val(result.paging2.pageable.pageNo + 1);
 				}else{
 					$('#btnMore2').parent().hide();
 					$('#btnMore').parent().hide();
@@ -288,7 +286,7 @@
 				html += '			<div class="goods_detail">';
 				html += '				<a href="javascript:void(0)" onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')">';
 				html += '					<div class="thumb_box">';
-				html += '						<img src="' + imageUrl + '/' + item.sysImgNm + '" alt="tmp_pdClickother1">';
+				html += '						<img src="' + _uploadGoodsUrl + '/' + item.sysImgNm + '" alt="tmp_pdClickother1">';
 				html += '					</div>';
 				html += '					<div class="info_box">';
 				html += '						<div class="od_name">';

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

@@ -146,7 +146,7 @@
 								<td>
 									<div class="select_custom select_exchange">
 										<div class="combo">
-											<div class="select">사이즈 변경</div>
+											<div class="select">교환 사유를 선택하세요.</div>
 										</div>
 									</div>
 								</td>
@@ -372,9 +372,6 @@ $(document).ready(function() {
 
 	// 타이틀명
 	$('#htopTitle').text('교환 신청');
-
-	// 교환사유 선택 처리
-	$('#exchangeReasonPop .lap .popup_con .button_list button').eq(0).click();
 });
 
 // 교환수량버튼기능

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

@@ -120,7 +120,7 @@
 								<td>
 									<div class="select_custom select_return">
 										<div class="combo">
-											<div class="select">단순 변심</div>
+											<div class="select">반품 사유를 선택하세요.</div>
 										</div>
 									</div>
 								</td>
@@ -469,9 +469,6 @@ $(document).ready(function() {
 
 	// 타이틀명
 	$('#htopTitle').text('반품 신청');
-
-	// 반품사유 선택 처리
-	$('#returnReasonPop .lap .popup_con .button_list button').eq(0).click();
 });
 
 // 반품수량버튼기능

+ 1 - 34
src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html

@@ -1260,6 +1260,7 @@ 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();
 
@@ -1268,41 +1269,7 @@ var paymentInfoSet = function() {
 							} else if (pgGb == "KAKAO") {
 								fnKakaoPaymentReady();
 							} else if (pgGb == "KCP" || pgGb == "PAYCO") {
-								//kcp_AJAX();
-								//jsf__pay(document.order_info);
-								//$("#order_info").attr("action", "/kcp/approval");
-								//$("#order_info").submit();
-								//alert(JSON.stringify($("#order_info").serialize()));
-
 								kcp_AJAX();
-
-								//ajax_flag = false;
-
-								/*let data = {
-									  siteCd : $("#order_info input[name=site_cd]").val()
-									, ordrIdxx : $("#order_info input[name=ordr_idxx]").val()
-									, goodMny : $("#order_info input[name=good_mny]").val()
-									, payMethod : $("#order_info input[name=pay_method]").val()
-									, goodName : $("#order_info input[name=good_name]").val()
-									, responseType : $("#order_info input[name=response_type]").val()
-									, retUrl : $("#order_info input[name=Ret_URL]").val()
-									, escwUsed : $("#order_info input[name=escw_used]").val()
-								}
-
-								$.ajax( {
-									type		: "POST",
-									url 		: '/pg/kcp/approval',
-									data		: JSON.stringify(data),
-									dataType 	: 'json',
-									beforeSend : function(xhr, settings) {
-										xhr.setRequestHeader("AJAX"			, "true");
-										xhr.setRequestHeader('Accept'		, 'application/json');
-										xhr.setRequestHeader('Content-Type'	, 'application/json');
-									},
-									success 	: function(result) {
-										alert("된건가");
-									}
-								});*/
 							}
 						}
 					});

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

@@ -27,9 +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="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"			value="http://ldfront.style24.com/order/form" />
+	<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 지원 -->

+ 140 - 138
src/main/webapp/WEB-INF/views/mob/planning/PlanningDetailFormMob.html

@@ -127,11 +127,11 @@
 									</ul>
 								</div> -->
 								<!-- 임시 -->
-								<div class="paging_wrap">
+								<!-- <div class="paging_wrap">
 									<ul class="pageNav" id="paging">
 
 									</ul>
-								</div>
+								</div> -->
 								<!-- 임시 -->
 							</div>
 						</div>
@@ -224,7 +224,7 @@
 	<input type="hidden" name="planSq" th:value="${planInfo.planSq}" />
 	<input type="hidden" name="pageSize" value="10" />
 </form>
-<script src="/ux/plugins/gaga/gaga.paging.js"></script>
+<script src="/ux/plugins/gaga/gaga.singlePaging.js"></script>
 <script th:inline="javascript">
 let review = [[${reviewInfo}]];
 let coupon = [[${couponInfo}]];
@@ -239,9 +239,6 @@ let replyCount = [[${replyCount}]];
 let replyAttachList = [[${replyAttachList}]];
 let planCornerGoodsList = [[${planCornerGoodsList}]];
 let planCornerList = [[${planCornerList}]];
-let _mall = [[${@environment.getProperty('domain.front')}]];
-let goodsView =[[${@environment.getProperty('upload.goods.view')}]]
-let imgUrl=[[${@environment.getProperty('upload.image.view')}]];
 
 var ajaxReplyList = function () {
 	gagaPaging.init('searchForm', fnSearchCallback, 'paging', 10);
@@ -272,7 +269,7 @@ var fnSearchCallback = function (result) {
 						html += '			<div class="img_wrap clear">';
 						for (var i = 0; i < result.replyAttachList.length; i++) {
 							if(result.replyAttachList[i].planEntrySq == item.planEntrySq){
-								html += '				<div class="pics"><img class="picsThumbs" src="'+ imgUrl +'/'+result.replyAttachList[i].sysFileNm +'" onclick="cfPlanReplyDetail(\''+item.planSq+'\',\''+item.planEntrySq+'\',\''+result.replyAttachList[i].planEntryAtSq+'\');"></div>';
+								html += '				<div class="pics"><img class="picsThumbs" src="'+ _uploadImageUrl +'/'+result.replyAttachList[i].sysFileNm +'" onclick="cfPlanReplyDetail(\''+item.planSq+'\',\''+item.planEntrySq+'\',\''+result.replyAttachList[i].planEntryAtSq+'\');"></div>';
 							}
 						}
 						html += '			</div>';
@@ -282,6 +279,11 @@ var fnSearchCallback = function (result) {
 					html += '	</li>';
 			 });
 				html += '</ul>';
+				html += '<div class="paging_wrap">';
+				html += '	<ul class="pageNav" id="paging">';
+				html += '	</ul>';
+				html += '</div>';
+				
 		 }else{
 			 html += '<div class="nodata"> ';
 				html += '	<div class="txt_box">             ';
@@ -413,37 +415,37 @@ if(planCornerList.length>0){
 	
 	var html = '';
 	$.each(planCornerList, function(idx, item)  {
-		html += '<div class="inner" >';
-		html += '	<div class="dp_listItems_wrap type'+(idx+1)+'">											';
-		html += '		<h2 class="dp_subtitle">'+item.cornerNm+'</h2>';
-		html += '		<div class="list_content">';
-		html += '			<div class="itemsGrp">';
+		html += '<div class="inner" >\n';
+		html += '	<div class="dp_listItems_wrap type'+(idx+1)+'">\n											';
+		html += '		<h2 class="dp_subtitle">'+item.cornerNm+'</h2>\n';
+		html += '		<div class="list_content">\n';
+		html += '			<div class="itemsGrp">\n';
 		$.each(planCornerGoodsList, function(idx2, item2)  {
 			if (item2.cornerNm == item.cornerNm) {
-				html += '				<div class="item_prod">';
-				html += '					<div class="item_state">';
+				html += '				<div class="item_prod">\n';
+				html += '					<div class="item_state">\n';
 				html += '						<button type="button" class="itemLike';
 				if(item2.likeIt == 'likeit'){
 					html += ' likeit';
 				}
 				html += ' "';
-				html += 'onClick="cfnPutWishList(this);" goodsCd=\''+item2.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>';
-				html += '						<a href="javascript:void(0);" onclick="cfnGoToGoodsDetail(\'' + item2.goodsCd + '\')"  class="itemLink">';
-				html += '							<div class="itemPic">';
-				html += '								<img class="vLHTC pd_img" src="'+ goodsView +'/'+item2.sysImgNm +'">';
-				html += '							</div>';
-				html += '							<p class="itemBrand">'+item2.brandGroupNm+'</p>';
-				html += '							<div class="itemName">'+item2.goodsNm+'</div>';
-				html += '							<p class="itemPrice">';
+				html += 'onClick="cfnPutWishList(this);" goodsCd=\''+item2.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>\n';
+				html += '						<a href="javascript:void(0);" onclick="cfnGoToGoodsDetail(\'' + item2.goodsCd + '\')"  class="itemLink">\n';
+				html += '							<div class="itemPic">\n';
+				html += '								<img class="vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item2.sysImgNm +'">\n';
+				html += '							</div>\n';
+				html += '							<p class="itemBrand">'+item2.brandGroupNm+'</p>\n';
+				html += '							<div class="itemName">'+item2.goodsNm+'</div>\n';
+				html += '							<p class="itemPrice">\n';
 				if (item2.currPrice != item2.listPrice) {
-					html += '								<span class="itemPrice_original">'+item2.listPrice.addComma()+'</span>';
+					html += '								<span class="itemPrice_original">'+item2.listPrice.addComma()+'</span>\n';
 				}
 				html += item2.currPrice.addComma();
 				if (item2.dcRate != 0) {
-					html += '								<span class="itemPercent">'+item2.dcRate.addComma()+'%</span>';
+					html += '								<span class="itemPercent">'+item2.dcRate.addComma()+'%</span>\n';
 				}
-				html += '							</p>';
-				html += '							<div class="itemcolorchip">';
+				html += '							</p>\n';
+				html += '							<div class="itemcolorchip">\n';
 				if(!gagajf.isNull(item2.colorChips)){
 					var colorArr = item2.colorChips.split(",");
 					var colorCd = '';
@@ -453,38 +455,38 @@ if(planCornerList.length>0){
 						colorCd = colorInfo[0];
 						rgbColor = colorInfo[1];
 						if(rgbColor=='#FFFFFF'){
-							html += '	<span class="chip_color" style="background-color: '+rgbColor+';border:1px solid #aaa;" value="'+colorCd+'">'+colorCd+'</span>';
+							html += '	<span class="chip_color" style="background-color: '+rgbColor+';border:1px solid #aaa;" value="'+colorCd+'">'+colorCd+'</span>\n';
 						}else{
-							html += '	<span class="chip_color" style="background-color: '+rgbColor+'" value="'+colorCd+'">'+colorCd+'</span>';
+							html += '	<span class="chip_color" style="background-color: '+rgbColor+'" value="'+colorCd+'">'+colorCd+'</span>\n';
 						}
 					}
 				}
-				html += '							</div>';
+				html += '							</div>\n';
 				if(!gagajf.isNull(item2.icon)){
 					var iconArr = item2.icon.split(",");
 					var iconGb = '';
 					var iconNm = '';
-					html += '	<p class="itemBadge">';
+					html += '	<p class="itemBadge">\n';
 					for(let i=0; i<iconArr.length; i++){
 						var iconInfo = iconArr[i].split(":");
 						iconGb = iconInfo[0];
 						iconNm = iconInfo[1];
-						html += '	<span class="badge13" value="'+iconGb+'">'+iconNm+' </span>';
+						html += '	<span class="badge13" value="'+iconGb+'">'+iconNm+' </span>\n';
 					}
-					html += '	</p>';
+					html += '	</p>\n';
 				}
 				if(item2.goodsTnm != null){
-					html += '							<div class="itemComment">'+item2.goodsTnm+'</div>';
+					html += '							<div class="itemComment">'+item2.goodsTnm+'</div>\n';
 				}
-				html += '						</a>';
-				html += '					</div>';
-				html += '				</div>';
+				html += '						</a>\n';
+				html += '					</div>\n';
+				html += '				</div>\n';
 			}
 		});
-		html += '			</div>';
-		html += '		</div>';
-		html += '	</div>';
-		html += '</div>';
+		html += '			</div>\n';
+		html += '		</div>\n';
+		html += '	</div>\n';
+		html += '</div>\n';
 		
 	});
 	
@@ -524,7 +526,7 @@ if(goods1.length>0){
 					html += '					<div class="item_state">\n';
 					html += '						<a href="#none" class="itemLink">\n';
 					html += '							<div class="itemPic">\n';
-					html += '								<img class="vLHTC pd_img" src="'+ goodsView +'/'+item.sysImgNm +'?RS=780" alt="">\n';
+					html += '								<img class="vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item.sysImgNm +'?RS=780" alt="">\n';
 					html += '							</div>\n';
 					html += '							<p class="itemBrand">'+item.brandGroupNm+'</p>\n';
 					html += '							<div class="itemName">'+item.goodsNm+'</div>\n';
@@ -574,29 +576,29 @@ var fnGetCompleteCallback = function (result) {
 	if (result.dataList != null && result.dataList.length > 0) {
 		var html = '';
 		$.each(result.dataList, function(idx, item) {
-			html += '		<div class="item_prod">';
-			html += '			<div class="item_state">';
-			html += '				<a onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')" class="itemLink">';
-			html += '					<div class="itemPic">';
-			html += '						<img class="vLHTC pd_img" src="'+ goodsView +'/'+item.sysImgNm +'">';
-			html += '					</div>';
-			html += '					<p class="itemBrand">'+item.brandGroupNm+'</p>';
-			html += '					<div class="itemName">'+item.goodsNm+'</div>';
-			html += '					<p class="itemPrice">';
+			html += '		<div class="item_prod">\n';
+			html += '			<div class="item_state">\n';
+			html += '				<a onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')" class="itemLink">\n';
+			html += '					<div class="itemPic">\n';
+			html += '						<img class="vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item.sysImgNm +'">\n';
+			html += '					</div>\n';
+			html += '					<p class="itemBrand">'+item.brandGroupNm+'</p>\n';
+			html += '					<div class="itemName">'+item.goodsNm+'</div>\n';
+			html += '					<p class="itemPrice">\n';
 			if (item.currPrice != item.listPrice) {
-				html += '						<span class="itemPrice_original">'+item.listPrice.addComma()+'</span>';
+				html += '						<span class="itemPrice_original">'+item.listPrice.addComma()+'</span>\n';
 			}
 			html += 						item.currPrice.addComma();
 			if (item.currPrice != item.listPrice) {
-				html += '						<span class="itemPercent">'+Math.floor(item.dcRate)+'%</span>';
+				html += '						<span class="itemPercent">'+Math.floor(item.dcRate)+'%</span>\n';
 			}
-			html += '					</p>';
+			html += '					</p>\n';
 			if(item.goodsTnm != null){
-				html += '					<div class="itemComment">'+item.goodsTnm+'</div>';
+				html += '					<div class="itemComment">'+item.goodsTnm+'</div>\n';
 			}
-			html += '				</a>';
-			html += '			</div>';
-			html += '		</div>';
+			html += '				</a>\n';
+			html += '			</div>\n';
+			html += '		</div>\n';
 	});
 		$('#group_'+result.dataList[0].planContSq).append(html);
 		if (result.paging1.pageable2.totalPage > result.paging1.pageable2.pageNo) {
@@ -628,53 +630,53 @@ if(goods4.length>0){
 	
 	for (var i = 0; i < template.length; i++) {
 		if(template[i].tmplType == 'G082_52' && array[0] == template[i].planContSq && typeof array[0] != 'undefined'){
-			html += '<div class="dp_listItems_cont type2">';
+			html += '<div class="dp_listItems_cont type2">\n';
 			if (template[i].linkUrl != null && template[i].linkUrl != '') { /* 링크 변경 예정 */
 				if (template[i].linkOpenGb == "M") { //본창
-					html += '	<h2 class="dp_subtitle"><a href="'+template[i].linkUrl+'" target="_self">'+template[i].title+' </a></h2>';
+					html += '	<h2 class="dp_subtitle"><a href="'+template[i].linkUrl+'" target="_self">'+template[i].title+' </a></h2>\n';
 				}else{
-					html += '	<h2 class="dp_subtitle"><a href="'+template[i].linkUrl+'" target="_blank">'+template[i].title+' </a></h2>';
+					html += '	<h2 class="dp_subtitle"><a href="'+template[i].linkUrl+'" target="_blank">'+template[i].title+' </a></h2>\n';
 				}
 			}else{
-				html += '	<h2 class="dp_subtitle"><a href="javascript:void(0)">'+template[i].title+' </a></h2>';
+				html += '	<h2 class="dp_subtitle"><a href="javascript:void(0)">'+template[i].title+' </a></h2>\n';
 			}
 			
-			html += '	<div class="swiper-container item02">';
-			html += '		<div class="swiper-wrapper">';
+			html += '	<div class="swiper-container item02">\n';
+			html += '		<div class="swiper-wrapper">\n';
 			$.each(goods4, function(idx, item) {
-				html += '			<div class="swiper-slide">';
-				html += '				<div class="item_prod">';
-				html += '					<div class="item_state">';
-				html += '						<a onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')" class="itemLink">';
-				html += '							<div class="itemPic">';
-				html += '								<img class="vLHTC pd_img" src="'+ goodsView +'/'+item.sysImgNm +'">';
-				html += '							</div>';
-				html += '							<p class="itemBrand">'+item.brandGroupNm+'</p>';
-				html += '							<div class="itemName">'+item.goodsNm+'</div>';
-				html += '							<p class="itemPrice">';
+				html += '			<div class="swiper-slide">\n';
+				html += '				<div class="item_prod">\n';
+				html += '					<div class="item_state">\n';
+				html += '						<a onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')" class="itemLink">\n';
+				html += '							<div class="itemPic">\n';
+				html += '								<img class="vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item.sysImgNm +'">\n';
+				html += '							</div>\n';
+				html += '							<p class="itemBrand">'+item.brandGroupNm+'</p>\n';
+				html += '							<div class="itemName">'+item.goodsNm+'</div>\n';
+				html += '							<p class="itemPrice">\n';
 				if (item.currPrice != item.listPrice) {
-					html += '								<span class="itemPrice_original">'+item.listPrice.addComma()+'</span>';
+					html += '								<span class="itemPrice_original">'+item.listPrice.addComma()+'</span>\n';
 				}
 				
 				html += 								item.currPrice.addComma();
 				if (item.currPrice != item.listPrice) {
-					html += '								<span class="itemPercent">'+Math.floor(item.dcRate)+'%</span>';
+					html += '								<span class="itemPercent">'+Math.floor(item.dcRate)+'%</span>\n';
 				}
-				html += '							</p>';
+				html += '							</p>\n';
 				if(item.goodsTnm != null){
-					html += '							<div class="itemComment">'+item.goodsTnm+'</div>';
+					html += '							<div class="itemComment">'+item.goodsTnm+'</div>\n';
 				}
 				
-				html += '						</a>';
-				html += '					</div>';
-				html += '				</div>';
-				html += '			</div>';
+				html += '						</a>\n';
+				html += '					</div>\n';
+				html += '				</div>\n';
+				html += '			</div>\n';
 			})
 			
-			html += '		</div>';
-			html += '		<div class="swiper-pagination"></div>';
-			html += '	</div>';
-			html += '</div>';
+			html += '		</div>\n';
+			html += '		<div class="swiper-pagination"></div>\n';
+			html += '	</div>\n';
+			html += '</div>\n';
 			$("#G082_52" +array[0]).append(html);
 		}
 		if($("#G082_52" +template[i].planContSq).length){
@@ -706,12 +708,12 @@ if(review.length>0){
 		html += '										<div class="pic">\n';
 		if(item.reviewSysImg!= null){
 			if (item.fileGb == 'M') { 
-				html += '											<span class="thumb mov" style="background-image:url('+ imgUrl+item.reviewSysImg +');"></span>\n';
+				html += '											<span class="thumb mov" style="background-image:url('+ _uploadImageUrl+item.reviewSysImg +');"></span>\n';
 			}else{
-				html += '											<span class="thumb" style="background-image:url('+ imgUrl +item.reviewSysImg +');"></span>\n';
+				html += '											<span class="thumb" style="background-image:url('+ _uploadImageUrl +item.reviewSysImg +');"></span>\n';
 			}
 		}else{
-			html += '											<span class="thumb" style="background-image:url('+ goodsView+'/'+item.sysImgNm +');"></span>\n';
+			html += '											<span class="thumb" style="background-image:url('+ _uploadGoodsUrl+'/'+item.sysImgNm +');"></span>\n';
 		}
 		html += '										</div>\n';
 		html += '										<div class="info">\n';
@@ -741,7 +743,7 @@ if(review.length>0){
 		html += '									<div class="item_state">\n';
 		html += '										<a href="javascript:void(0)" onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')" class="itemLink">\n';
 		html += '											<div class="itemPic">\n';
-		html += '												<img alt="" class="vLHTC pd_img" src="'+ goodsView +'/'+item.sysImgNm +'">\n';
+		html += '												<img alt="" class="vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item.sysImgNm +'">\n';
 		html += '											</div>\n';
 		html += '											<div class="itemName">'+item.goodsNm+'</div>\n';
 		html += '											<p class="itemPrice">\n';
@@ -768,25 +770,25 @@ if(review.length>0){
 if(image.length>0){
 	var html = '';
 	
-	html += '<div class="promotion_visual type2">';
-	html += '	<div class="big_banner_slide">';
-	html += '		<div class="swiper-container">';
-	html += '			<div class="swiper-wrapper">';
+	html += '<div class="promotion_visual type2">\n';
+	html += '	<div class="big_banner_slide">\n';
+	html += '		<div class="swiper-container">\n';
+	html += '			<div class="swiper-wrapper">\n';
 	$.each(image, function(idx, item)  {
-		html += '				<div class="swiper-slide">';
+		html += '				<div class="swiper-slide">\n';
 		if (item.linkOpenGb == 'M') {
-			html += '					<a href="'+item.linkUrl+'" target="_self"><img src="'+ imgUrl + item.itemVal +'?RS=1206" ></a>';
+			html += '					<a href="'+item.linkUrl+'" target="_self"><img src="'+ _uploadImageUrl + item.itemVal +'?RS=1206" ></a>\n';
 		}else{
-			html += '					<a href="'+item.linkUrl+'" target="_blank"><img src="'+ imgUrl + item.itemVal +'?RS=1206" ></a>';
+			html += '					<a href="'+item.linkUrl+'" target="_blank"><img src="'+ _uploadImageUrl + item.itemVal +'?RS=1206" ></a>\n';
 		}
-		html += '				</div>';
+		html += '				</div>\n';
 	});
 	
-	html += '			</div>';
-	html += '			<div class="swiper-pagination"></div>';
-	html += '		</div>';
-	html += '	</div>';
-	html += '</div>';
+	html += '			</div>\n';
+	html += '			<div class="swiper-pagination"></div>\n';
+	html += '		</div>\n';
+	html += '	</div>\n';
+	html += '</div>\n';
 	
 	$("#G082_30").append(html);
 }
@@ -794,52 +796,52 @@ if(image.length>0){
 if(coupon.length>0){
 	var html = '';
 	 
-	html += '<div class="dp_coupon">';
-	html += '	<h2 class="dp_subtitle">'+coupon[0].title+'</h2>';
-	html += '	<div class="coupon_list">';
-	html += '		<ul class="clear">';
+	html += '<div class="dp_coupon">\n';
+	html += '	<h2 class="dp_subtitle">'+coupon[0].title+'</h2>\n';
+	html += '	<div class="coupon_list">\n';
+	html += '		<ul class="clear">\n';
 	$.each(coupon, function(idx, item) {
 		if (item.couponStat == '쿠폰받기') {
-			html += '			<li> ';
+			html += '			<li>\n';
 		}else{
-			html += '			<li class="off"> ';
+			html += '			<li class="off">\n';
 		}
 		
-		html += '				<div class="cp_top">';
-		html += '					<div class="cp_detail">';
-		html += '						<p class="tit">'+item.cpnNm+'</p>';
-		html += '						<strong class="sale_t won_t"><span>'+item.dcVal.addComma()+'</span>'+item.dcWay+'</strong>';
-		html += '						<p class="cp_cont">'+item.useCondition+'</p>';
-		html += '						<span class="cp_cnt">'+item.issueCondition+'</span>';
-		html += '					</div>';
-		html += '					<span class="cp_shape"></span>';
-		html += '				</div>';
-		html += '				<div class="cp_date" id="dp_coupon1">';
+		html += '				<div class="cp_top">\n';
+		html += '					<div class="cp_detail">\n';
+		html += '						<p class="tit">'+item.cpnNm+'</p>\n';
+		html += '						<strong class="sale_t won_t"><span>'+item.dcVal.addComma()+'</span>'+item.dcWay+'</strong>\n';
+		html += '						<p class="cp_cont">'+item.useCondition+'</p>\n';
+		html += '						<span class="cp_cnt">'+item.issueCondition+'</span>\n';
+		html += '					</div>\n';
+		html += '					<span class="cp_shape"></span>\n';
+		html += '				</div>\n';
+		html += '				<div class="cp_date" id="dp_coupon1">\n';
 		if (item.couponStat == '쿠폰받기') {
-			html += '					<button type="button" id="coupon_'+item.cpnId+'" onclick="fnPlanCouponDown('+item.cpnId+')"><span>쿠폰 받기</span></button>';
+			html += '					<button type="button" id="coupon_'+item.cpnId+'" onclick="fnPlanCouponDown('+item.cpnId+')"><span>쿠폰 받기</span></button>\n';
 		}else{
-			html += '					<button type="button" id="coupon_'+item.cpnId+'" onclick="fnPlanCouponDown('+item.cpnId+')"><span>받기 완료</span></button>';
+			html += '					<button type="button" id="coupon_'+item.cpnId+'" onclick="fnPlanCouponDown('+item.cpnId+')"><span>받기 완료</span></button>\n';
 		}
-		html += '				</div>';
-		html += '				<div class="cp_info">';
-		html += '					<button type="button" id="modalBasic" class="btn_couponInfo_pop" onclick="usePlanInfoCoupon('+item.cpnId+')"><span>사용안내</span></button>';
-		html += '				</div>';
-		html += '			</li>';
+		html += '				</div>\n';
+		html += '				<div class="cp_info">\n';
+		html += '					<button type="button" id="modalBasic" class="btn_couponInfo_pop" onclick="usePlanInfoCoupon('+item.cpnId+')"><span>사용안내</span></button>\n';
+		html += '				</div>\n';
+		html += '			</li>\n';
 	});
-	html += '		</ul>';
-	html += '	</div>';
-	html += '	<div class="announce_txt">';
-	html += '		<div class="note_txt">';
-	html += '			<img src="/images/mo/ico_content_find.png" alt="유의사항">';
-	html += '			<p>유의사항</p>';
-	html += '		</div>';
-	html += '		<div class="announce_list">';
-	html += '			<ul>';
+	html += '		</ul>\n';
+	html += '	</div>\n';
+	html += '	<div class="announce_txt">\n';
+	html += '		<div class="note_txt">\n';
+	html += '			<img src="/images/mo/ico_content_find.png" alt="유의사항">\n';
+	html += '			<p>유의사항</p>\n';
+	html += '		</div>\n';
+	html += '		<div class="announce_list">\n';
+	html += '			<ul>\n';
 	html += coupon[0].note;
-	html += '			</ul>';
-	html += '		</div>';
-	html += '	</div>';
-	html += '</div>';
+	html += '			</ul>\n';
+	html += '		</div>\n';
+	html += '	</div>\n';
+	html += '</div>\n';
 		
 	$("#G082_20").append(html);
 }

+ 3 - 1
src/main/webapp/WEB-INF/views/mob/planning/PlanningMainFormMob.html

@@ -26,7 +26,9 @@
 				<div class="category_nav">
 					<ul>
 						<li><button type="button" th:class="${cateNo == null ? 'active' : ''}" onclick="cfnGoToPage(_PAGE_PLANNING_MAIN);">전체</button></li>
-						<li><button type="button" th:each="oneData, stat : ${cateList}" th:class="${oneData.cateNo == cateNo ? 'active' : '' }" th:onclick="|cfnGoToPage(_PAGE_PLANNING_MAIN + '?cateNo=${oneData.cateNo}');|">[[${oneData.cateNm}]]</button></li>
+						<th:block th:each="oneData, stat : ${cateList}">
+						<li><button type="button" th:class="${oneData.cateNo == cateNo ? 'active' : '' }" th:onclick="|cfnGoToPage(_PAGE_PLANNING_MAIN + '?cateNo=${oneData.cateNo}');|">[[${oneData.cateNm}]]</button></li>
+						</th:block>
 					</ul>
 				</div>
 			</div>

+ 1 - 2
src/main/webapp/WEB-INF/views/mob/planning/PlanningShotGuideFormMob.html

@@ -167,7 +167,6 @@
 <script th:inline="javascript">
 let custAddr = [[${custAddr}]];
 let customerInfo = [[${customerInfo}]];
-let goodsView =[[${@environment.getProperty('upload.goods.view')}]]
 let planCornerList = [[${planCornerList}]];
 let planCornerGoodsList = [[${planCornerGoodsList}]];
 if(planCornerList.length>0){
@@ -189,7 +188,7 @@ if(planCornerList.length>0){
 			
 			html += '						<a href="javascript:void(0);" onclick="cfnGoToGoodsDetail(\'' + item2.goodsCd + '\')" class="itemLink">';
 			html += '							<div class="itemPic">';
-			html += '								<img class="vLHTC pd_img" src="'+ goodsView +'/'+item2.sysImgNm +'">';
+			html += '								<img class="vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item2.sysImgNm +'">';
 			html += '							</div>';
 			html += '							<p class="itemBrand">'+item2.brandGroupNm+'</p>';
 			html += '							<div class="itemName">'+item2.goodsNm+'</div>';

+ 10 - 14
src/main/webapp/WEB-INF/views/mob/social/SocialMainFormMob.html

@@ -61,10 +61,8 @@
 </form>
 <script src="/ux/plugins/gaga/gaga.infinite.scrollSession.js"></script>
 <script src="/ux/plugins/jquery/jquery.history.min.js"></script>
-<!-- <script src="/ux/plugins/gaga/gaga.infinite.scrollLayer.js"></script> -->
 <script th:inline="javascript">
 let socialInfo = [[${socialInfo}]];
-let goodsView =[[${@environment.getProperty('upload.goods.view')}]]
 
 
 var socialAddCart = function (obj) {
@@ -93,12 +91,12 @@ var socialAddCart = function (obj) {
 let fnGetSocialList = function(result) {
 	var html = '';
 	$.each(result.dataList, function(idx, item) {
-		html += '<div class="item_prod">';
 		if (item.stockQtySum == 0) {
-			html += '    <div class="item_state sold_out"> ';
+		html += '<div class="item_prod sold_out">';
 		}else{
-			html += '    <div class="item_state"> ';
+			html += '<div class="item_prod">';
 		}
+		html += '    <div class="item_state"> ';
 		if (item.likeIt == 'likeit') {
 			html += '        <button type="button" class="itemLike likeit " onclick="cfnMoPutWishList(this);" goodsCd=\''+item.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>';
 		}else{
@@ -107,7 +105,7 @@ let fnGetSocialList = function(result) {
 		html += '		<a href="javascript:void(0);" class="itemLink" onclick="cfnGoToGoodsDetail(\''+item.goodsCd+'\')" >';
 		html += '			<div class="shape ranker"><span>특가</span></div>';
 		html += '			<div class="itemPic">';
-		html += '				<img class="vLHTC pd_img" src="'+ goodsView +'/'+item.sysImgNm +'">';
+		html += '				<img class="vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item.sysImgNm +'">';
 		html += '			</div>';
 		html += '			<p class="itemBrand">'+item.brandGroupNm+'</p>';
 		html += '			<div class="itemName">'+item.goodsNm+'</div>';
@@ -195,20 +193,17 @@ $(function(){
 	fnSocialListSearch();
     /* 핫딜 countDown */
     function hotdealTimer() {
-        var endTime = new Date(socialInfo.socialEddt); // 남은시간 지정
-
-            endTime = (Date.parse(endTime) / 1000);
-
+    		var endTime = socialInfo.socialEddt.toDate("YYYYMMDD");
+   
+            endTime = (Date.parse(endTime) / 1000); // nan
             var now = new Date();
             now = (Date.parse(now) / 1000);
-
             var timeLeft = endTime - now;
-
-            var days = Math.floor(timeLeft / 86400); 
+            var days = Math.floor(timeLeft / 86400);
             var hours = Math.floor((timeLeft - (days * 86400)) / 3600);
             var minutes = Math.floor((timeLeft - (days * 86400) - (hours * 3600 )) / 60);
             var seconds = Math.floor((timeLeft - (days * 86400) - (hours * 3600) - (minutes * 60)));
-
+	
             if (hours < '10') { hours = '0' + hours; }
             if (minutes < '10') { minutes = '0' + minutes; }
             if (seconds < '10') { seconds = '0' + seconds; }
@@ -219,6 +214,7 @@ $(function(){
             $('#h-seconds').html(seconds);		
     }
     setInterval(function() { hotdealTimer(); }, 1000);
+    
     /* countDown */
 });
 </script>

+ 7 - 6
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_done"  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>
@@ -87,17 +87,19 @@
 			let list = result.goodsCouponList;
 
 			list.forEach(function(coupon){
-				if (coupon.cpnId == cpnId){
+				if (coupon.cpnId == cpnId){debugger;
 					if (Number(coupon.custPubLimitQty) > 0){
 						if (Number(coupon.custPubLimitQty) <= Number(coupon.custCouponCnt)){
 							$('#coupon_'+ coupon.cpnId).html('<span>받기완료</span>');
 							$('#coupon_'+ coupon.cpnId).attr('disabled', true);
+							$('#coupon_'+ coupon.cpnId).removeClass('btn_coupon_down').addClass('btn_coupon_done');
 						}
 					}
 					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).removeClass('btn_coupon_down').addClass('btn_coupon_done');
 						}
 					}
 				}
@@ -143,14 +145,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','');
+									$('#coupon_'+ coupon.cpnId).removeClass('btn_coupon_down').addClass('btn_coupon_done');
 								}
 							}
 							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','');
+									$('#coupon_'+ coupon.cpnId).removeClass('btn_coupon_down').addClass('btn_coupon_done');
 								}
 							}
 						}
@@ -172,8 +174,7 @@
 		
 		if(couponDownAbleYn == "N"){
 			
-			$('#btn_all_coupon').removeClass('btn_primary');
-			$('#btn_all_coupon').addClass('btn_coupon_done');
+			$('#btn_all_coupon').removeClass('btn_primary').addClass('btn_coupon_done');
 			$('#btn_all_coupon').attr('disabled', true);
 			$('#btn_all_coupon').find('span').text('쿠폰 모두 받기 완료');
 		}

+ 13 - 5
src/main/webapp/WEB-INF/views/web/goods/GoodsDealDescFormWeb.html

@@ -200,7 +200,8 @@
 		<th:block th:if="${goodsSafeNo != null}" >
 			<th:block th:if="${goodsSafeNo.certTargetGb == 'G083_3'}" >  <!-- 상세별도표시 -->
 		<div class="area_kcl no-mark">
-			<p class="tit normal"><th:block th:if="${goodsSafeNo.certFormNm}" th:text="${goodsSafeNo.certFormNm + '/'}"></th:block> 제품 상세정보 내 별도 표기</p>
+			<p class="tit normal"><th:block th:if="${goodsSafeNo.certFormNm}" th:text="${goodsSafeNo.certFormNm}"></th:block>
+								<th:block th:if="${goodsSafeNo.certTypeNm}" th:text="${' ' + goodsSafeNo.certTypeNm}"></th:block> / 제품 상세정보 내 별도 표기</p>
 			<p class="normal">제품 상세정보 내 표기되어 있습니다. 상품 정보를 확인해주세요.</p>
 			<p class="t_info dot_info">해당 인증정보는 판매자가 등록한 것으로 등록정보에 대한 일체의 책임은 판매자에게 있습니다.</p>
 		</div>	
@@ -209,7 +210,8 @@
 				<th:block th:if="${goodsSafeNo.certType == 'G081_3'}" > <!-- 공급자적합성 -->
 		<div class="area_kcl">
 			<i class="ico ico_kcl"></i>
-			<p class="tit normal"><th:block th:text="${goodsSafeNo.certFormNm}"></th:block> / 공급자적합성확인</p>
+			<p class="tit normal"><th:block th:if="${goodsSafeNo.certFormNm}" th:text="${goodsSafeNo.certFormNm}"></th:block>
+									<th:block th:if="${goodsSafeNo.certTypeNm}" th:text="${' ' + goodsSafeNo.certTypeNm}"></th:block> / 공급자적합성확인</p>
 			<p class="normal">공급자 적합성 확인 품목으로 국가통합인증을 필함</p>
 			<p class="t_info dot_info">해당 인증정보는 판매자가 등록한 것으로 등록정보에 대한 일체의 책임은 판매자에게 있습니다.</p>
 		</div>
@@ -218,10 +220,16 @@
 		<div class="area_kcl" >
 			<i class="ico ico_kcl"></i>
 			<th:block th:if="${goodsSafeNo.certFormGb != 'G084_4' and  goodsSafeNo.certFormGb != 'G084_5' }">
-			<p class="tit normal" th:text="${goodsSafeNo.certDiv +' '+goodsSafeNo.certTypeNm + ' / ' + goodsSafeNo.certOrganName}">어린이제품 안전인증 / 한국건설생활시험연구원(KCL)</p>
+			<p class="tit normal" >
+				<th:block th:if="${goodsSafeNo.certDiv}" th:text="${goodsSafeNo.certDiv}"></th:block>
+				<th:block th:if="${goodsSafeNo.certOrganName}" th:text="${' /' + goodsSafeNo.certOrganName}"></th:block>
+			</p>
 			</th:block>
-			<th:block th:unless="${goodsSafeNo.certFormGb != 'G084_4' and goodsSafeNo.certFormGb != 'G084_5' }">
-			<p class="tit normal" th:text="${goodsSafeNo.certFormNm + ' '+ goodsSafeNo.certTypeNm}"></p>
+			<th:block th:unless="${goodsSafeNo.certFormGb != 'G084_4' and  goodsSafeNo.certFormGb != 'G084_5' }">
+			<p class="tit normal">
+				<th:block th:if="${goodsSafeNo.certFormNm}" th:text="${goodsSafeNo.certFormNm}"></th:block>
+				<th:block th:if="${goodsSafeNo.certTypeNm}" th:text="${' ' + goodsSafeNo.certTypeNm}"></th:block>
+			</p>
 			</th:block>
 			<p class="normal" >
 				<th:block th:if="${goodsSafeNo.certNum}" th:text="${'인증번호: ' + goodsSafeNo.certNum}"></th:block>

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

@@ -610,7 +610,7 @@
 			tag += '	</div>\n';
 			tag += '	<div class="number_count">\n';
 			tag += '		<span class="minus min_val" onclick="fnAdjustOrderEa(this);" adjust="-"><em class="sr-only">감소</em></span>\n';
-			tag += '		<input type="text" name="cea" optCd="'+optCd+'" maxlength="3" style="ime-mode:disabled" value="' +optQty+'" onblur="fnChangeOrderEa(this)" minOrdQty="'+minOrdQty+'" maxOrdQty="'+maxOrdQty+'" data-valid-type="numeric">\n';
+			tag += '		<input type="text" name="cea" optCd="'+optCd+'" maxlength="3" style="ime-mode:disabled" value="' +optQty+'" readonly>\n';
 			tag += '		<input type="hidden" name="coption" value="'+optCd+'"  goodsCd="'+goodsCd+'"  price="'+currPrice+'"  addPrice="'+addPrice+'">\n';
 			tag += '		<span class="plus" onclick="fnAdjustOrderEa(this);" adjust="+"><em class="sr-only">추가</em></span>\n';
 			tag += '	</div>\n';

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

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

+ 27 - 12
src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html

@@ -609,7 +609,7 @@
 																		<th:block th:if="${goodsInfo.minOrdAmt > 0}">(<th:block th:text="${#numbers.formatInteger(goodsInfo.minOrdAmt, 0,'COMMA')}" ></th:block>원 이상 무료배송)</th:block>
 												</span>
 												<span class="txt_shippingfee" th:if="${goodsInfo.delvFee <= 0}">무료배송</span>
-												<span class="txt_shippingfee" th:if="${goodsInfo.quikDelvYn = 'Y'}">총알배송(오전 10시까지 주문 시)</span>
+												<span class="txt_shippingfee" th:if="${goodsInfo.quikDelvYn == 'Y'}">총알배송(오전 10시까지 주문 시)</span>
 												<!-- //해당 배송정보 선택노출 -->
 											</a>
 										</div>
@@ -818,7 +818,8 @@
 					<th:block th:if="${goodsInfo.goodsType == 'G056_N' and goodsSafeNo != null}" >
 						<th:block th:if="${goodsSafeNo.certTargetGb == 'G083_3'}" >  <!-- 상세별도표시 -->
 					<div class="area_kcl no-mark">
-						<p class="tit normal"><th:block th:if="${goodsSafeNo.certFormNm}" th:text="${goodsSafeNo.certFormNm + '/'}"></th:block> 제품 상세정보 내 별도 표기</p>
+						<p class="tit normal"><th:block th:if="${goodsSafeNo.certFormNm}" th:text="${goodsSafeNo.certFormNm}"></th:block>
+											<th:block th:if="${goodsSafeNo.certTypeNm}" th:text="${' ' + goodsSafeNo.certTypeNm}"></th:block> / 제품 상세정보 내 별도 표기</p>
 						<p class="normal">제품 상세정보 내 표기되어 있습니다. 상품 정보를 확인해주세요.</p>
 						<p class="t_info dot_info">해당 인증정보는 판매자가 등록한 것으로 등록정보에 대한 일체의 책임은 판매자에게 있습니다.</p>
 					</div>	
@@ -827,7 +828,8 @@
 							<th:block th:if="${goodsSafeNo.certType == 'G081_3'}" > <!-- 공급자적합성 -->
 					<div class="area_kcl">
 						<i class="ico ico_kcl"></i>
-						<p class="tit normal"><th:block th:text="${goodsSafeNo.certFormNm}"></th:block> / 공급자적합성확인</p>
+						<p class="tit normal"><th:block th:if="${goodsSafeNo.certFormNm}" th:text="${goodsSafeNo.certFormNm}"></th:block>
+												<th:block th:if="${goodsSafeNo.certTypeNm}" th:text="${' ' + goodsSafeNo.certTypeNm}"></th:block> / 공급자적합성확인</p>
 						<p class="normal">공급자 적합성 확인 품목으로 국가통합인증을 필함</p>
 						<p class="t_info dot_info">해당 인증정보는 판매자가 등록한 것으로 등록정보에 대한 일체의 책임은 판매자에게 있습니다.</p>
 					</div>
@@ -836,10 +838,16 @@
 					<div class="area_kcl" >
 						<i class="ico ico_kcl"></i>
 						<th:block th:if="${goodsSafeNo.certFormGb != 'G084_4' and  goodsSafeNo.certFormGb != 'G084_5' }">
-						<p class="tit normal" th:text="${goodsSafeNo.certDiv +' '+goodsSafeNo.certTypeNm + ' / ' + goodsSafeNo.certOrganName}">어린이제품 안전인증 / 한국건설생활시험연구원(KCL)</p>
+						<p class="tit normal" >
+							<th:block th:if="${goodsSafeNo.certDiv}" th:text="${goodsSafeNo.certDiv}"></th:block>
+							<th:block th:if="${goodsSafeNo.certOrganName}" th:text="${' /' + goodsSafeNo.certOrganName}"></th:block>
+						</p>
 						</th:block>
 						<th:block th:unless="${goodsSafeNo.certFormGb != 'G084_4' and  goodsSafeNo.certFormGb != 'G084_5' }">
-						<p class="tit normal" th:text="${goodsSafeNo.certFormNm + ' '+goodsSafeNo.certTypeNm}"></p>
+						<p class="tit normal">
+							<th:block th:if="${goodsSafeNo.certFormNm}" th:text="${goodsSafeNo.certFormNm}"></th:block>
+							<th:block th:if="${goodsSafeNo.certTypeNm}" th:text="${' ' + goodsSafeNo.certTypeNm}"></th:block>
+						</p>
 						</th:block>
 						<p class="normal" >
 							<th:block th:if="${goodsSafeNo.certNum}" th:text="${'인증번호: ' + goodsSafeNo.certNum}"></th:block>
@@ -860,7 +868,8 @@
 						<th:block th:if="${goodsCompose.goodsSafeNo != null}">
 							<th:block th:if="${goodsCompose.goodsSafeNo.certTargetGb == 'G083_3'}" >  <!-- 상세별도표시 -->
 						<div class="area_kcl no-mark">
-							<p class="tit normal"><th:block th:if="${goodsCompose.goodsSafeNo.certFormNm}" th:text="${goodsCompose.goodsSafeNo.certFormNm + '/'}"></th:block> 제품 상세정보 내 별도 표기</p>
+							<p class="tit normal"><th:block th:if="${goodsCompose.goodsSafeNo.certFormNm}" th:text="${goodsCompose.goodsSafeNo.certFormNm}"></th:block>
+											<th:block th:if="${goodsCompose.goodsSafeNo.certTypeNm}" th:text="${' ' + goodsCompose.goodsSafeNo.certTypeNm}"></th:block> / 제품 상세정보 내 별도 표기</p>
 							<p class="normal">제품 상세정보 내 표기되어 있습니다. 상품 정보를 확인해주세요.</p>
 							<p class="t_info dot_info">해당 인증정보는 판매자가 등록한 것으로 등록정보에 대한 일체의 책임은 판매자에게 있습니다.</p>
 						</div>	
@@ -869,7 +878,8 @@
 								<th:block th:if="${goodsCompose.goodsSafeNo.certType == 'G081_3'}" > <!-- 공급자적합성 -->
 						<div class="area_kcl">
 							<i class="ico ico_kcl"></i>
-							<p class="tit normal"><th:block th:text="${goodsCompose.goodsSafeNo.certFormNm}"></th:block> / 공급자적합성확인</p>
+							<p class="tit normal"><th:block th:if="${goodsCompose.goodsSafeNo.certFormNm}" th:text="${goodsCompose.goodsSafeNo.certFormNm}"></th:block>
+												<th:block th:if="${goodsCompose.goodsSafeNo.certTypeNm}" th:text="${' ' + goodsCompose.goodsSafeNo.certTypeNm}"></th:block> / 공급자적합성확인</p>
 							<p class="normal">공급자 적합성 확인 품목으로 국가통합인증을 필함</p>
 							<p class="t_info dot_info">해당 인증정보는 판매자가 등록한 것으로 등록정보에 대한 일체의 책임은 판매자에게 있습니다.</p>
 						</div>
@@ -878,10 +888,15 @@
 						<div class="area_kcl" >
 							<i class="ico ico_kcl"></i>
 							<th:block th:if="${goodsCompose.goodsSafeNo.certFormGb != 'G084_4' and  goodsCompose.goodsSafeNo.certFormGb != 'G084_5' }">
-							<p class="tit normal" th:text="${goodsCompose.goodsSafeNo.certDiv +' '+goodsCompose.goodsSafeNo.certTypeNm + ' / ' + goodsCompose.goodsSafeNo.certOrganName}">어린이제품 안전인증 / 한국건설생활시험연구원(KCL)</p>
+							<p class="tit normal">
+								<th:block th:if="${goodsCompose.goodsSafeNo.certDiv}" th:text="${goodsCompose.goodsSafeNo.certDiv}"></th:block>
+								<th:block th:if="${goodsCompose.goodsSafeNo.certOrganName}" th:text="${' / ' + goodsCompose.goodsSafeNo.certOrganName}"></th:block>
 							</th:block>
 							<th:block th:unless="${goodsCompose.goodsSafeNo.certFormGb != 'G084_4' and  goodsCompose.goodsSafeNo.certFormGb != 'G084_5' }">
-							<p class="tit normal" th:text="${goodsCompose.goodsSafeNo.certFormNm + ' '+ goodsCompose.goodsSafeNo.certTypeNm}"></p>
+							<p class="tit normal">
+								<th:block th:if="${goodsCompose.goodsSafeNo.certFormNm}" th:text="${goodsCompose.goodsSafeNo.certFormNm}"></th:block>
+								<th:block th:if="${goodsCompose.goodsSafeNo.certTypeNm}" th:text="${' ' + goodsCompose.goodsSafeNo.certTypeNm}"></th:block>
+							</p>
 							</th:block>
 							<p class="normal" >
 								<th:block th:if="${goodsCompose.goodsSafeNo.certNum}" th:text="${'인증번호: ' + goodsCompose.goodsSafeNo.certNum}"></th:block>
@@ -1130,7 +1145,7 @@
 		
 		let addPrice  = $target.attr("addPrice");
 		$(".selectOptCd1addPrice").html('');
-		if (Number(addPrice) > 0) $(".selectOptCd1addPrice").html("(+" + addPrice.addComma() + ")");
+		if (Number(addPrice) > 0) $(".selectOptCd1addPrice").html("(+" + addPrice.addComma() + ")");
 		
 		$("#cartForm  input[name=optCd]").val(optCd);
 		$("#cartForm  input[name=optCd1]").val(optCd1);
@@ -1160,7 +1175,7 @@
 				$("#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=cea]").attr("readonly",false);
 				$("#cartForm  input[name=stock]").val(itemCnt);
 
 				$('.price_box').show();
@@ -1241,7 +1256,7 @@
 				$("#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=cea]").attr("readonly",false);
 				$("#cartForm  input[name=stock]").val(itemCnt);
 	
 				

+ 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);

+ 0 - 3
src/main/webapp/WEB-INF/views/web/mypage/MypageExchangeFormWeb.html

@@ -321,9 +321,6 @@
 			$('#withdraw').click();
 			$('.wdGb').css('display','none');
 		}
-
-		// 교환사유 선택 처리
-		$('.select_reason .combo .list li').eq(0).click();
 	});
 
 	// 교환 옵션 변경 팝업

+ 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);

+ 0 - 3
src/main/webapp/WEB-INF/views/web/mypage/MypageReturnFormWeb.html

@@ -364,9 +364,6 @@
 			$('#withdraw').click();
 			$('.wdGb').css('display','none');
 		}
-
-		// 반품사유 선택 처리
-		$('.select_reason .combo .list li').eq(0).click();
 	});
 
 	// 반품 처리

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

@@ -382,7 +382,6 @@
 let reviewList = [[${reviewInfo}]];
 let reviewStat = [[${reviewStat}]];
 let reviewAttach = [[${alreadyReviewAttach}]];
-let reviewUrl =[[${@environment.getProperty('upload.image.view')}]];
 
 // 별점 class="on"
 var $starEls = $('#star button#starBtn');
@@ -698,7 +697,7 @@ $(document).ready(function() {
 				if(reviewAttach[i].reviewSq == reviewList.reviewSq){
 					if(reviewAttach[i].fileGb == "I"){
 						$("<span class=\"pics\">" +
-								"<img class=\"picsThumbs\" src=\"" + reviewUrl + '/' + reviewAttach[i].sysFileNm + "\" />" +
+								"<img class=\"picsThumbs\" src=\"" + _uploadImageUrl + '/' + reviewAttach[i].sysFileNm + "\" />" +
 								"<input type='hidden' name='orgFileNmArr' value='"+reviewAttach[i].orgFileNm+"'>" +
 								"<input type='hidden' name='sysFileNmArr' value='"+reviewAttach[i].sysFileNm+"'>" +
 								"<br/><span class=\"removes\">Removes image</span>" +

+ 3 - 9
src/main/webapp/WEB-INF/views/web/mypage/MypageReviewDetailFormWeb.html

@@ -28,6 +28,7 @@
 <!-- <input type="hidden" name="bestYn" th:value="${review.bestYn}" /> -->
 <input type="hidden" name="photoYn" th:value="${review.photoYn}" />
 <input type="hidden" name="reviewSq" th:value="${review.reviewSq}" />
+<input type="hidden" name="rvAtcSq" th:value="${review.rvAtcSq}" />
 </form>
 <a href="javascript:void(0);" rel="modal:close" onclick="cfCloseLayer('layer_review_best')" class="close-modal">Close</a> 
 <script th:inline="javascript">
@@ -40,8 +41,8 @@
 		params.reviewSq = $('#reviewDetailForm input[name=reviewSq]').val();
 		//params.bestYn =$('#reviewDetailForm input[name=bestYn]').val();
 		params.photoYn = $('#reviewDetailForm input[name=photoYn]').val();
-		
-		gagajf.ajaxSubmit("/goods/review/detail/list", "json", fnReviewDetailCallback, params);
+		params.rvAtcSq = $('#reviewDetailForm input[name=rvAtcSq]').val();
+		gagajf.ajaxSubmit("/mypage/review/detail/list", "json", fnReviewDetailCallback, params);
 	}
 
 	var fnReviewDetailCallback = function(result) {
@@ -233,13 +234,6 @@
 		
 	}
 	
-	// 다른 상품평 보기
-	var fnReviewNext = function(reviewSq){
-		if (gagajf.isNull(reviewSq)) return false;
-		
-		$('#reviewDetailForm input[name=reviewSq]').val(reviewSq);
-		fnReviewDetail();
-	}
 	
 	$(document).ready( function() {
 		

+ 4 - 6
src/main/webapp/WEB-INF/views/web/mypage/MypageReviewFormWeb.html

@@ -109,8 +109,6 @@
 
 	<script src="/ux/plugins/gaga/gaga.paging.js"></script>
 	<script th:inline="javascript">
-	let imageUrl = [[${@environment.getProperty('upload.goods.view')}]];
-	let reviewUrl =[[${@environment.getProperty('upload.image.view')}]];
 	let attachList = [[${alreadyReviewAttach}]];
 	// 작성가능한 리뷰 클릭 시 
 	$("#completeReview").click(function() {
@@ -152,7 +150,7 @@
 				html += '					<div class="gd_item">	                                                                              ';
 				html += '						<a href="javascript:void(0)" onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')">                                                                                       ';
 				html += '							<span class="thumb">                                                                          ';
-				html += '								<img src="' + imageUrl + '/' + item.sysImgNm + '?RS=550"  width="100%" alt="">  ';
+				html += '								<img src="' + _uploadGoodsUrl + '/' + item.sysImgNm + '?RS=550"  width="100%" alt="">  ';
 				html += '							</span>                                                                                       ';
 				html += '							<p>                                                                                           ';
 				html += '								<span class="buy_date"><em>'+item.payDt+'</em>&nbsp;구매</span>             ';
@@ -215,7 +213,7 @@
 				html+='						<div class="gd_item">	';
 				html+='							<a href="javascript:void(0)" onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')" >';
 				html+='								<span class="thumb">';
-				html+='									<img src="' + imageUrl + '/' + item.sysImgNm + '?RS=550" width="100%" alt="">';
+				html+='									<img src="' + _uploadGoodsUrl + '/' + item.sysImgNm + '?RS=550" width="100%" alt="">';
 				html+='								</span>';
 				html+='								<p>';
 				html+='									<span class="buy_date"><em>'+item.payDt+'</em>&nbsp;구매</span>';
@@ -318,9 +316,9 @@
 						html+='										<a>';
 						html+='											<div class="pic">';
 						if (attachList[i].fileGb == 'M') {
-							html+='												<span onclick="cfMypageReviewDetail(\''+item.goodsCd+'\', \'Y\',\''+item.reviewSq+'\');" class="thumb mov" style="background-image:url(' + _kollusMediaUrl + '/poster/' + attachList[i].kmcKey + '?player_version=html5);"></span>';
+							html+='												<span onclick="cfMypageReviewDetail(\''+item.goodsCd+'\', \'Y\',\''+item.reviewSq+'\',\''+attachList[i].rvAtcSq+'\');" class="thumb mov" style="background-image:url(' + _kollusMediaUrl + '/poster/' + attachList[i].kmcKey + '?player_version=html5);"></span>';
 						}else{
-							html+='												<span onclick="cfMypageReviewDetail(\''+item.goodsCd+'\', \'Y\',\''+item.reviewSq+'\');" class="thumb" style="background-image:url(' + reviewUrl + '/' + attachList[i].sysFileNm + ');"></span>';
+							html+='												<span onclick="cfMypageReviewDetail(\''+item.goodsCd+'\', \'Y\',\''+item.reviewSq+'\',\''+attachList[i].rvAtcSq+'\');" class="thumb" style="background-image:url(' + _uploadImageUrl + '/' + attachList[i].sysFileNm + ');"></span>';
 						}
 						html+='											</div>';
 						html+='										</a>';

+ 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);

+ 0 - 3
src/main/webapp/WEB-INF/views/web/mypage/NoMemberExchangeFormWeb.html

@@ -320,9 +320,6 @@
 			$('#withdraw').click();
 			$('.wdGb').css('display','none');
 		}
-
-		// 교환사유 선택 처리
-		$('.select_reason .combo .list li').eq(0).click();
 	});
 
 	// 교환 옵션 변경 팝업

+ 1 - 1
src/main/webapp/WEB-INF/views/web/mypage/NoMemberOrderDetailFormWeb.html

@@ -95,7 +95,7 @@
 												</div>
 												<div class="button_box">
 													<!-- 주문취소 버튼(입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중) -->
-													<th:block th:if="${ordDtl.payStat != 'G016_00' && (ordDtl.ordDtlStat == 'G013_10' or ordDtl.ordDtlStat == 'G013_20' or ordDtl.ordDtlStat == 'G013_30' or ordDtl.ordDtlStat == 'G013_35' or ordDtl.ordDtlStat == 'G013_40')}">
+													<th:block th:if="${ordDtl.payStat != 'G016_10' && (ordDtl.ordDtlStat == 'G013_10' or ordDtl.ordDtlStat == 'G013_20' or ordDtl.ordDtlStat == 'G013_30' or ordDtl.ordDtlStat == 'G013_35' or ordDtl.ordDtlStat == 'G013_40')}">
 														<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'cancel', 'noMember');"><span>주문 취소</span></button></p>
 													</th:block>
 													

+ 3 - 3
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);
@@ -390,7 +390,7 @@
 
 					// 버튼 처리
 					// 주문취소 버튼(입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중)
-					if (ordDtl.payStat != 'G016_00' && (ordDtl.ordDtlStat == 'G013_10' || ordDtl.ordDtlStat == 'G013_20' || ordDtl.ordDtlStat == 'G013_30' || ordDtl.ordDtlStat == 'G013_35' || ordDtl.ordDtlStat == 'G013_40')) {
+					if (ordDtl.payStat != 'G016_10' && (ordDtl.ordDtlStat == 'G013_10' || ordDtl.ordDtlStat == 'G013_20' || ordDtl.ordDtlStat == 'G013_30' || ordDtl.ordDtlStat == 'G013_35' || ordDtl.ordDtlStat == 'G013_40')) {
 						tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" ordCanChgQty="' + ordDtl.ordCanChgQty + '" delvFeeCd="' + ordDtl.delvFeeCd + '" onclick="fnCreateChange(this, \'cancel\', \'noMember\');"><span>주문 취소</span></button></p>\n';
 					}
 

+ 0 - 3
src/main/webapp/WEB-INF/views/web/mypage/NoMemberReturnFormWeb.html

@@ -362,9 +362,6 @@
 			$('#withdraw').click();
 			$('.wdGb').css('display','none');
 		}
-
-		// 반품사유 선택 처리
-		$('.select_reason .combo .list li').eq(0).click();
 	});
 
 	// 반품 처리

+ 12 - 15
src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html

@@ -253,9 +253,6 @@ let replyCount = [[${replyCount}]];
 let replyAttachList = [[${replyAttachList}]];
 let planCornerGoodsList = [[${planCornerGoodsList}]];
 let planCornerList = [[${planCornerList}]];
-let _mall = [[${@environment.getProperty('domain.front')}]];
-let goodsView =[[${@environment.getProperty('upload.goods.view')}]]
-let imgUrl=[[${@environment.getProperty('upload.image.view')}]];
 if(planCornerList.length>0){
 	var html = '';
 	
@@ -302,7 +299,7 @@ if(planCornerList.length>0){
 				
 				html += '                         <a href="javascript:void(0);" onclick="cfnGoToGoodsDetail(\'' + item2.goodsCd + '\')" class="itemLink">';
 				html += '                             <div class="itemPic">';
-				html += '                                 <img alt="BLUE-a" class=" vLHTC pd_img" src="'+ goodsView +'/'+item2.sysImgNm +'">';
+				html += '                                 <img alt="BLUE-a" class=" vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item2.sysImgNm +'">';
 				html += '                             </div>';
 				html += '                             <p class="itemBrand">'+item2.brandGroupNm+'</p>';
 				html += '                             <div class="itemName">'+item2.goodsNm+'</div>';
@@ -383,18 +380,18 @@ if(review.length>0){
 		if(item.reviewSysImg!= null){
 			html += '				<a href="javascript:void();" id="btn_pdBestReview_pop" onclick="cfGoodsReviewDetail(\''+item.goodsCd+'\',\'\', \'Y\',\''+item.reviewSq+'\');">';
 		}else{
-			html += '				<a href="javascript:void();" id="btn_pdBestReview_pop">';
+			html += '				<a href="javascript:void();" id="btn_pdBestReview_pop" onclick="cfGoodsReviewDetail(\''+item.goodsCd+'\',\'\', \'N\',\''+item.reviewSq+'\');">';
 		}
 		
 		html += '					<div class="pic">';
 		if(item.reviewSysImg!= null){
 			if (item.fileGb == 'M') { 
-				html += '								<span class="thumb mov" style="background-image: url('+ imgUrl+item.reviewSysImg +');"></span>';	
+				html += '								<span class="thumb mov" style="background-image: url('+ _uploadImageUrl+item.reviewSysImg +');"></span>';	
 			}else{
-				html += '								<span class="thumb" style="background-image: url('+ imgUrl +item.reviewSysImg +');"></span>';			
+				html += '								<span class="thumb" style="background-image: url('+ _uploadImageUrl +item.reviewSysImg +');"></span>';			
 			}
 		}else{
-			html += '								<span class="thumb" style="background-image: url('+ goodsView+'/'+item.sysImgNm +');"></span>';	
+			html += '								<span class="thumb" style="background-image: url('+ _uploadGoodsUrl+'/'+item.sysImgNm +');"></span>';	
 		}
 		
 		html += '                   </div>';
@@ -420,7 +417,7 @@ if(review.length>0){
 		html += '                  <div class="item_state">';
 		html += '                      <a href="javascript:void(0)" onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')" class="itemLink">';
 		html += '                          <div class="itemPic">';
-		html += '                            	<img alt="" class="vLHTC pd_img" src="'+ goodsView +'/'+item.sysImgNm +'">';
+		html += '                            	<img alt="" class="vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item.sysImgNm +'">';
 		html += '                          </div>';
 		html += '                          <div class="itemName">'+item.goodsNm+'</div>';
 		html += '                          <p class="itemPrice">'+item.currPrice.addComma()+'</p>';
@@ -447,9 +444,9 @@ if(image.length>0){
 	for (var i = 0; i < image.length; i++) {
 		html += '                	<div class="swiper-slide">';
 		if (image[i].linkOpenGb == 'M') {
-			html += '                    	<a href="'+image[i].linkUrl+'" target="_self">><img alt="" src="'+ imgUrl + image[i].itemVal +'"></a>';
+			html += '                    	<a href="'+image[i].linkUrl+'" target="_self">><img alt="" src="'+ _uploadImageUrl + image[i].itemVal +'"></a>';
 		}else{
-			html += '                    	<a href="'+image[i].linkUrl+'" target="_blank">><img alt="" src="'+ imgUrl + image[i].itemVal +'"></a>';
+			html += '                    	<a href="'+image[i].linkUrl+'" target="_blank">><img alt="" src="'+ _uploadImageUrl + image[i].itemVal +'"></a>';
 		}
 		
 		html += '                	</div>';
@@ -503,7 +500,7 @@ if(goods1.length>0){
 				html += '            <li>';
 				html += '                <div class="dp_listItems">';
 				html += '                    <div class="dp_listItems_img">';
-				html += '                        <img src="'+ goodsView +'/'+item.sysImgNm +'" alt="">';
+				html += '                        <img src="'+ _uploadGoodsUrl +'/'+item.sysImgNm +'" alt="">';
 				html += '                    </div>';
 				html += '                    <div class="dp_listItems_info">';
 				html += '                        <div class="dp_listItems_brand">'+item.brandGroupNm+'</div>';
@@ -575,7 +572,7 @@ if(goods2.length>0){
 					html += '                        <div class="item_state">';
 					html += '                            <a onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')" class="itemLink">';
 					html += '                                <div class="itemPic">';
-					html += '                                    <img alt="BLUE-a" class=" vLHTC pd_img" src="'+ goodsView +'/'+item.sysImgNm +'">';
+					html += '                                    <img alt="BLUE-a" class=" vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item.sysImgNm +'">';
 					html += '                                </div>';
 					html += '                                <p class="itemBrand">'+item.brandGroupNm+'</p>';
 					html += '                                <div class="itemName">'+item.goodsNm+'</div>';
@@ -648,7 +645,7 @@ if(goods4.length>0){
 					html += '                        <div class="item_state">';
 					html += '                            <a onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')" class="itemLink">';
 					html += '                                <div class="itemPic">';
-					html += '                                    <img alt="BLUE-a" class=" vLHTC pd_img" src="'+ goodsView +'/'+item.sysImgNm +'">';
+					html += '                                    <img alt="BLUE-a" class=" vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item.sysImgNm +'">';
 					html += '                                </div>';
 					html += '                                <p class="itemBrand">'+item.brandGroupNm+'</p>';
 					html += '                                <div class="itemName">'+item.goodsNm+'</div>';
@@ -838,7 +835,7 @@ var fnSearchCallback = function (result) {
 				 if (result.replyAttachList.length>0) {
 					for (var i = 0; i < result.replyAttachList.length; i++) {
 						if(result.replyAttachList[i].planEntrySq == item.planEntrySq){
-							html += '				<span class="pics"><img class="picsThumbs" src="'+ imgUrl +'/'+result.replyAttachList[i].sysFileNm +'"></span>';
+							html += '				<span class="pics"><img class="picsThumbs" src="'+ _uploadImageUrl +'/'+result.replyAttachList[i].sysFileNm +'"></span>';
 						}
 					}	
 				 }

+ 63 - 0
src/main/webapp/WEB-INF/views/web/planning/PlanningReplyPhotoFormWeb.html

@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<html lang="ko" xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : GoodsReviewPhotoFormMob.html
+ * @desc	: 상품평 - 포토/영상 리스트 팝업
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE		 AUTHOR	  DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.008   eskim		최초 작성
+ *******************************************************************************
+ -->
+<!-- 댓글 이미지 팝업 -->
+<!-- <div class="modal fade thumb_img_pop" id="thumbImgPop" tabindex="-1" role="dialog" aria-labelledby="thumbImgLabel" aria-hidden="true"> -->
+        <div class="modal-dialog" role="document">
+            <div class="modal-content" th:with="frontUrl=${@environment.getProperty('domain.front')}, goodsView=${@environment.getProperty('upload.goods.view')}, planView=${@environment.getProperty('upload.image.view')}">
+				<div class="modal-header sr-only">
+                    <h5 class="modal-title" id="thumbImgLabel">이미지 상세보기</h5>
+                </div>
+                <div class="modal-body">
+                    <div class="pop_cont">
+ 						<div class="swiper-container">
+							<div class="swiper-wrapper">
+								<!-- 이미지 슬라이드 영역 -->
+							<th:block th:each="a, stat : ${replyAttachList}">
+								<div class="swiper-slide">
+									<div class="pop_img" th:style="${'background-image:url('+planView+'/'+a.sysFileNm+');'}">
+									</div>
+								</div>
+							</th:block>
+							</div>
+						</div>
+						<div class="swiper-button-next"></div>
+						<div class="swiper-button-prev"></div>						
+						<div class="swiper-pagination"></div>
+                    </div>
+                </div>
+            </div>
+        </div>        
+<!--     </div> -->
+	<!-- //댓글 이미지 팝업 -->	
+<a href="javascript:void(0);" rel="modal:close"	onclick="cfCloseLayer('layer_review_photo')" class="close-modal">Close</a>
+<script th:inline="javascript">
+/*<![CDATA[*/
+	var contactPopSwiper = new Swiper('.thumb_img_pop .swiper-container', {
+	navigation: {
+		nextEl: '.thumb_img_pop .swiper-button-next',
+		prevEl: '.thumb_img_pop .swiper-button-prev',
+	},
+	pagination: {
+		el: '.thumb_img_pop .swiper-pagination',
+		clickable: true,
+	},
+	observer:true,
+	observeParents: true,
+});		
+
+/*]]>*/
+</script>
+</html>

+ 1 - 2
src/main/webapp/WEB-INF/views/web/planning/PlanningShotGuideFormWeb.html

@@ -148,7 +148,6 @@
 /*<![CDATA[*/
 let custAddr = [[${custAddr}]];
 let customerInfo = [[${customerInfo}]];
-let goodsView =[[${@environment.getProperty('upload.goods.view')}]]
 let planCornerList = [[${planCornerList}]];
 let planCornerGoodsList = [[${planCornerGoodsList}]];
 // 로그인 확인
@@ -197,7 +196,7 @@ if(planCornerList.length>0){
 				
 				html += '                         <a href="javascript:void(0);" onclick="cfnGoToGoodsDetail(\'' + item2.goodsCd + '\')" class="itemLink">';
 				html += '                             <div class="itemPic">';
-				html += '                                 <img alt="BLUE-a" class=" vLHTC pd_img" src="'+ goodsView +'/'+item2.sysImgNm +'">';
+				html += '                                 <img alt="BLUE-a" class=" vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item2.sysImgNm +'">';
 				html += '                             </div>';
 				html += '                             <p class="itemBrand">'+item2.brandGroupNm+'</p>';
 				html += '                             <div class="itemName">'+item2.goodsNm+'</div>';

+ 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('계좌인증이 필요합니다.');
 		}

+ 3 - 3
src/main/webapp/WEB-INF/views/web/social/SocialMainFormWeb.html

@@ -77,7 +77,6 @@
 <script src="/ux/plugins/jquery/jquery.history.min.js"></script>
 <script th:inline="javascript">
 let socialInfo = [[${socialInfo}]];
-let goodsView =[[${@environment.getProperty('upload.goods.view')}]]
 
 
 var socialAddCart = function (obj) {
@@ -122,7 +121,7 @@ let fnGetSocialList = function(result) {
 		
 		html += '        <a href="javascript:void(0);" class="itemLink" onclick="cfnGoToGoodsDetail(\''+item.goodsCd+'\')" >';
 		html += '            <div class="itemPic">';
-		html += '                <img alt="BLUE-a" class=" vLHTC pd_img" src="'+ goodsView +'/'+item.sysImgNm +'?RS=550">';
+		html += '                <img alt="BLUE-a" class=" vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item.sysImgNm +'?RS=550">';
 		html += '            </div>';
 		html += '            <div class="itemSpecialPrice"><span>특가</span></div>';
 		html += '            <p class="itemBrand">'+item.brandGroupNm+'</p>';
@@ -198,7 +197,8 @@ $(function(){
        /* 핫딜 countDown */
     
        function hotdealTimer() {
-           var endTime = new Date(socialInfo.socialEddt); // 남은시간 지정
+    	   		var endTime = socialInfo.socialEddt.toDate("YYYYMMDD");
+           //var endTime = new Date(socialInfo.socialEddt); // 남은시간 지정
 
                endTime = (Date.parse(endTime) / 1000);
 

+ 26 - 7
src/main/webapp/biz/payment.js

@@ -39,17 +39,36 @@ function jsf__pay( form ) {
 function call_pay_form()
 {
 	var v_frm = document.order_info;
+	// 인코딩 방식에 따른 변경 Start
+	if(v_frm.encoding_trans == undefined) {
+		v_frm.action = PayUrl;
+	} else if(v_frm.encoding_trans.value == "UTF 8") {
+		v_frm.action = PayUrl.substring(0, PayUrl.lastIndexOf("/")) + "/jsp/encodingFilter/encodingFilter.jsp";
+		v_frm.PayUrl.value = PayUrl;
+	} else {
+		v_frm.action = PayUrl;
+	}
 
-	v_frm.action = PayUrl;
-
-	if (v_frm.Ret_URL.value == "")
-	{
+	if (v_frm.Ret_URL.value == "") {
 		/* Ret_URL값은 현 페이지의 URL 입니다. */
 		alert("연동시 Ret_URL을 반드시 설정하셔야 됩니다.");
 		return false;
-	}
-	else
-	{
+	} else {
 		v_frm.submit();
 	}
+}
+
+/* kcp 통신을 통해 받은 암호화 정보 체크 후 결제 요청 (변경불가) */
+function chk_pay() {
+	self.name = "tar_opener";
+	var pay_form = document.pay_form;
+
+	if (pay_form.res_cd.value == "3001" ) {
+		alert("사용자가 취소하였습니다.");
+		pay_form.res_cd.value = "";
+	}
+
+	if (pay_form.enc_info.value) {
+		pay_form.submit();
+	}
 }

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

@@ -28,14 +28,14 @@
 
     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    = "http://ldfront.style24.com/pg/kcp/approval";
+            var url    = "http:" + _frontUrl + "/pg/kcp/approval";
             var form = document.order_info;
             var params = "?site_cd=" + form.site_cd.value
                        + "&ordr_idxx=" + form.ordr_idxx.value
@@ -44,14 +44,14 @@
                        + "&escw_used=" + form.escw_used.value
                        + "&good_name=" + form.good_name.value
                        + "&response_type=" + form.response_type.value
-                       + "&Ret_URL=" + form.Ret_URL.value;
+                       + "&Ret_URL=" + form.Ret_URL.value
             sendRequest( url + params );
             
             ajax_flag = false;
         }
         else
         {
-            alert("占쏙옙占� 占쏙옙占쌉니댐옙. 占쏙옙첩占� 占쏙옙慕占� 占쌍쇽옙占쏙옙.");
+            alert("통신 중입니다. 잠시만 기다려 주세요.");
         }
             
     }
@@ -64,31 +64,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 +107,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 +123,7 @@
             var res_msg = txt[2].replace(/^\s*/,'').replace(/\s*$/,'');
             
             ajax_flag=true;
-            alert("占쏙옙占쏙옙 占실억옙占쏙옙占싹댐옙.[" + res_msg + "]");
+            alert("실패 되었습니다.[" + res_msg + "]");
         }
     }
     
@@ -136,8 +136,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 +152,7 @@
         {
             ajax_flag=true;
             
-            alert("占쏙옙占쏙옙 占실억옙占쏙옙占싹댐옙.[" + x[0].getElementsByTagName( "Message" )[0].childNodes[0].nodeValue + "]");
+            alert("실패 되었습니다.[" + x[0].getElementsByTagName( "Message" )[0].childNodes[0].nodeValue + "]");
         }
     }
     
@@ -164,8 +164,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 +177,6 @@
         {
             ajax_flag=true;
             
-            alert("占쏙옙占쏙옙 占실억옙占쏙옙占싹댐옙.[" + json.Message + "]");
+            alert("실패 되었습니다.[" + json.Message + "]");
         }
     }

+ 220 - 0
src/main/webapp/ux/plugins/gaga/gaga.singlePaging.js

@@ -0,0 +1,220 @@
+/*
+ * Pagination Common Java Script written by gagamel.
+ *
+ * Copyright (c) 2019 gagamel
+ * Dual licensed under GPL (GPL-LICENSE.txt) licenses.
+ *
+ * $Date: 2019-07-21 $
+ * 
+ * 사용 예)
+ * 		// HTML 태그는 다음과 같은 구조로 되어 있어야 한다.
+ * 		<div class="tablePaging" id="pagination">
+ * 			<li class="prev"><a href="#"><span class="sr-only">이전</span></a></li>
+ *			<li class="active">01</li>
+ *			<li>/</li>
+ *			<li>10</li>
+ *			<li class="next"><a href="#"><span class="sr-only">다음</span></a></li>
+ * 			...
+ * 		</div>
+ * 
+ * 		// Import할 자바스크립트 파일
+ * 		<script type="text/javascript" src="/ux/plugins/gaga/gaga.singlePaging"></script>
+ * 
+ * 		<script type="text/javascript">
+ * 			// Initialize a pagination
+ * 			gagaPaging.init('searchForm', fnSearchGoodsQnaCallback, 'pagination');
+ * 			
+ *			// Load data
+ * 			gagaPaging.load($('#searchForm input[name=pageNo]').val(), $('#searchForm select[name=pageSize]').val());
+ * 
+ * 			var fnSearchGoodsQnaCallback = function(result) {
+ * 				// Handle Data
+ * 				...
+ * 				
+ * 				// Create pagination
+ * 				gagaPaging.createPagination(result.goodsAsk.pageable);
+ * 			}
+ *		</script>
+ */
+
+var gagaPaging = {
+
+	oFormId : '',
+	oCallbackFn : '',
+	oPaginationId : '',
+	nPageSize : 50,
+	nPageUnit : 10,
+	
+	/**
+	 * Initialize a pagination
+	 * @param formId - Form ID. 검색조건 폼 ID
+	 * @param callbackFn - Callback function. 데이터 조회 후 처리하는 콜백함수
+	 * @param paginationId - Pagination ID. 페이징을 구성하는 div 태그 ID
+	 * @param pageSize - 조회할 데이터 row수. 옵션
+	 * @param pageUnit - 그룹핑 페이지 단위. 옵션
+	 * 사용 예)
+	 * 		// Initialize a pagination
+	 * 		gagaPaging.init('searchForm', fnSearchGoodsQnaCallback, 'pagination');
+	 * 		or
+	 * 		gagaPaging.init('searchForm', fnSearchGoodsQnaCallback, 'pagination', 50);
+	 * 		or
+	 * 		gagaPaging.init('searchForm', fnSearchGoodsQnaCallback, 'pagination', 50, 10);
+	 */
+	init : function(formId, callbackFn, paginationId, pageSize, pageUnit) {
+		oFormId = formId;
+		oCallbackFn = callbackFn;
+		oPaginationId = paginationId;
+		if (typeof(pageSize) != 'undefined') nPageSize = pageSize;
+		if (typeof(pageUnit) != 'undefined') nPageUnit = pageUnit;
+	},
+	
+	/**
+	 * Create a pagination
+	 * @param pageable - page 정보
+	 */
+	createPagination : function(pageable) {
+		// Generate pagination
+		var html;
+		if (gagajf.isNull(pageable.generatedPagination)) {
+			html = gagaPaging.generatedPagination(pageable);
+		} else {
+			html = pageable.generatedPagination;
+		}
+		$('#' + oPaginationId).html(html);
+		// Bind event
+		gagaPaging.bind();
+	},
+	
+	/**
+	 * Bind the pagination's event
+	 * Paging 처리 시 다음과 같이 지정
+	 * 사용 예)
+	 * 		// HTML 태그는 다음과 같은 구조로 되어 있어야 한다.
+	 * 		<div class="tablePaging" id="pagination">
+	 * 			<a href="#pageNo=1">1</a>
+	 * 			<a href="#pageNo=2">2</a>
+	 * 			...
+	 * 		</div>
+	 */
+	bind : function() {
+		$('#' + oPaginationId + ' a').on('click', function(e) {
+			var params = $(this).attr('href');
+			params = params.replace(/^.*#/, '');
+			
+			var pageNo = 1;
+			
+			if (!gagajf.isNull(params)) {
+				pageNo = params.split("=")[1];
+			}
+			
+			gagaPaging.load(pageNo);
+			
+			return false;
+		});
+	},
+	
+	/**
+	 * Load data and call a callback function
+	 * JSON 형태로 보내고 받는 후 콜백함수에서 데이터를 처리한다.
+	 * @param pageNo - 조회할 페이지번호
+	 */
+	load : function(pageNo) {
+		$('#' + oFormId + ' input[name=pageNo]').val(pageNo);
+		$('#' + oFormId + ' input[name=pageSize]').val(nPageSize);
+		
+		// comma(,) 제거
+		gagajf.removeCommaAtNumberFormattedInput('#' + oFormId);
+		var jsonData = JSON.stringify($('#' + oFormId).serializeObject());
+		
+		$.ajax({
+			type : 'POST',
+			url : $('#' + oFormId).prop('action'),
+			data : jsonData,
+			dataType : 'JSON',
+			beforeSend : function(xhr, settings) {
+				// dataType: "json"일 때
+				xhr.setRequestHeader('Accept', 'application/json');
+				xhr.setRequestHeader('Content-Type', 'application/json');
+				
+				// Button disabled & progressBar creation
+				//gagajf.showProgressbar(true);
+			},
+			complete : function() {
+				// Button abled & progressBar remove
+				//gagajf.showProgressbar(false);
+			},
+			success : function(result) {
+				try {
+					if (!gagajf.isNull(result.error.message)) {
+						mcxDialog.alert(result.error.message);
+						return;
+					}
+				} catch(e) {
+					// Do nothing
+				}
+				
+				if (typeof(oCallbackFn) == 'function') {
+					oCallbackFn.call(this, result);
+				}
+			},
+			error : function(result) {
+				mcxDialog.alert('오류로 인해 처리되지 않았습니다.');
+			}
+		});
+	},
+	
+	generatedPagination : function (pageable) {
+		let pageNo = pageable.pageNo;
+		let pageSize = pageable.pageSize;
+		let pageUnit = pageable.pageUnit;
+		let totalCount = pageable.totalCount;
+		let firstCount = (getPageGroup() - 1) * pageable.pageUnit + 1;
+		let loopCount = firstCount + pageUnit;
+		
+		
+		if (loopCount > getTotalPage()) {
+			loopCount = Number(getTotalPage() + 1);
+		}
+		
+		let pageTag = '';
+		if (!(firstCount == 1 && loopCount == 1)) {
+			
+			if (getPageGroup() == 1) {
+				if (pageNo == 1) {
+					pageTag += '<li class="prev disabled"><a href="#"><span class="sr-only">이전</span></a></li>\n';
+				} else {
+					pageTag += '<li class="prev"><a href="#pageNo='+ (pageNo-1) +'"><span class="sr-only">이전</span></a></li>\n';
+				}
+			} else {
+				pageTag += '<li class="prev"><a href="#pageNo='+ (pageNo-1) +'"><span class="sr-only">이전</span></a></li>\n';
+			}
+			
+			pageTag += '<li class="active">' + pageNo + '</li>\n';
+			pageTag += '<li>/</li>\n';
+			pageTag += '<li>' + getTotalPage() + '</li>\n';
+			
+			if(pageNo == Number(getTotalPage())) {
+				pageTag += '<li class="next disabled"><a href="#pageNo=' + getTotalPage() + '" alt="다음페이지"><span class="sr-only">다음</span></a></li>\n';
+			}else {
+				pageTag += '<li class="next"><a href="#pageNo='+ (pageNo+1) +'" alt="다음페이지"><span class="sr-only">다음</span></a></li>\n';
+			}
+			
+		}
+
+		function getPageGroup() {
+			return parseInt((pageNo-1) / pageUnit + 1 );
+		}
+
+		function getTotalPage() {
+			let totalPage = parseInt(totalCount / pageSize);
+			if (totalCount % pageSize > 0) {
+				totalPage++;
+			}
+			return totalPage;
+		}
+
+		return pageTag;
+	}
+
+}
+

+ 6 - 3
src/main/webapp/ux/style24_link.js

@@ -12,6 +12,8 @@ const _PAGE_BRAND_MAIN = _frontUrl + "/display/brand/main/form";		// 브랜드
 const _PAGE_CATE_GOODS_LIST = _frontUrl + "/display/category/goods/list/form";	// 카테고리 상품목록
 const _PAGE_BEST_MAIN = _frontUrl + "/display/best/main/form";		// 베스트메인
 const _PAGE_OUTLET_MAIN = _frontUrl + "/display/outlet/main/form";		// 아울렛메인
+const _PAGE_VIEW_NORMAL = _frontUrl + "/display/view/normal/form";		// PC보기
+const _PAGE_VIEW_MOBILE = _frontUrl + "/display/view/mobile/form";		// 모바일보기
 
 //== 고객 ==/
 const _PAGE_CUSTOMER_JOIN_TYPE = _frontUrl + "/customer/join/type/form";							// 고객 > 회원가입 유형
@@ -298,6 +300,7 @@ function cfnAddCart(cartList) {
 									}
 
 									$("header #htopSub .button_wrap .store>span").text(cartCnt);
+									$("#htopMain>.button_wrap>.store>span").text(cartCnt);
 								});
 							}
 						}
@@ -1293,10 +1296,10 @@ var cfnGoToMypageReview = function (ordNo,ordDtlNo,goodsCd) {
 * @access : public
 * @desc   : 상품평- 베스트 리뷰 보기
 * <pre>
-*		cfMypageReviewDetail(goodsCd, photoYn, reviewSq, attachSq);
+*		cfMypageReviewDetail(goodsCd, photoYn, reviewSq, rvAtcSq);
 * </pre>
 */
-function cfMypageReviewDetail(goodsCd, photoYn, reviewSq, attachSq) {
+function cfMypageReviewDetail(goodsCd, photoYn, reviewSq, rvAtcSq) {
 	var str = '<div class="modal fade pd_pop pd_photoreviewdetail_pop" id="layer_review_best" tabindex="-1" role="dialog" aria-labelledby="pdBestReviewLabel" aria-hidden="true"></div>';
 	if ("P" != _frontGb){
 		str = '<div class="modal pop_full fade pd_pop pd_photoreviewdetail_pop" id="layer_review_best" tabindex="-1" role="dialog" aria-labelledby="exampleFullLabel" aria-hidden="true"></div>';
@@ -1309,7 +1312,7 @@ function cfMypageReviewDetail(goodsCd, photoYn, reviewSq, attachSq) {
 	var params = '?goodsCd=' + goodsCd;
 	params += '&reviewSq=' + reviewSq;
 	params += '&photoYn=' + photoYn;
-	if (typeof (attachSq) != 'undefined') params += "&attachSq=" + attachSq;
+	if (typeof (rvAtcSq) != 'undefined') params += "&rvAtcSq=" + rvAtcSq;
 	
 	cfnOpenLayer(_PAGE_MYPAGE_REVIEW_DETAIL_LAYER+params, 'layer_review_best');
 }