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

Merge branch 'develop' into eskim

Conflicts:
	src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml
eskim 5 лет назад
Родитель
Сommit
1efed88869
26 измененных файлов с 1036 добавлено и 542 удалено
  1. 665 451
      src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml
  2. 3 5
      src/main/java/com/style24/persistence/mybatis/shop/TsfReview.xml
  3. 4 2
      src/main/webapp/WEB-INF/views/mob/app/NoticeFormMob.html
  4. 1 1
      src/main/webapp/WEB-INF/views/mob/callcenter/NoticeFormMob.html
  5. 1 1
      src/main/webapp/WEB-INF/views/mob/callcenter/OneToOneQnaFormMob.html
  6. 5 1
      src/main/webapp/WEB-INF/views/mob/callcenter/OneToOneQnaRegisterFormMob.html
  7. 5 7
      src/main/webapp/WEB-INF/views/mob/customer/JoinCompleteFormMob.html
  8. 14 0
      src/main/webapp/WEB-INF/views/mob/customer/JoinFormMob.html
  9. 15 0
      src/main/webapp/WEB-INF/views/mob/customer/PasswordChangeFormMob.html
  10. 4 0
      src/main/webapp/WEB-INF/views/mob/goods/GoodsQnaDetailFormMob.html
  11. 1 2
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCustDeliveryAddrFormMob.html
  12. 24 20
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCustModifyFormMob.html
  13. 15 0
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCustPwdModifyFormMob.html
  14. 6 0
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCustSecedeCompleteFormMob.html
  15. 10 4
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCustSecedeFormMob.html
  16. 15 0
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCustSnsJoinInitPwdFormMob.html
  17. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewDetailFormMob.html
  18. 14 6
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewFormMob.html
  19. 12 32
      src/main/webapp/WEB-INF/views/mob/planning/PlanningEventMainFormMob.html
  20. 1 1
      src/main/webapp/WEB-INF/views/web/callcenter/NoticeFormWeb.html
  21. 2 2
      src/main/webapp/WEB-INF/views/web/callcenter/OneToOneQnaFormWeb.html
  22. 5 2
      src/main/webapp/WEB-INF/views/web/callcenter/OneToOneQnaRegisterFormWeb.html
  23. 18 1
      src/main/webapp/WEB-INF/views/web/display/SearchGoodsListFormWeb.html
  24. 5 1
      src/main/webapp/WEB-INF/views/web/goods/GoodsQnaDetailFormWeb.html
  25. 6 2
      src/main/webapp/biz/goods.js
  26. 184 0
      src/main/webapp/biz/search.js

Разница между файлами не показана из-за своего большого размера
+ 665 - 451
src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml


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

@@ -368,7 +368,7 @@
 		<include refid="selectForPagingHeader"/>
 		<include refid="selectForPagingHeader"/>
 		SELECT GROUP_CONCAT(Z.ITEM_NM ORDER BY Z.ORD_DTL_ITEM_SQ SEPARATOR '!@!') AS ITEM_NM
 		SELECT GROUP_CONCAT(Z.ITEM_NM ORDER BY Z.ORD_DTL_ITEM_SQ SEPARATOR '!@!') AS ITEM_NM
 		     -- , GROUP_CONCAT(Z.COLOR_NM ORDER BY Z.ORD_DTL_ITEM_SQ) AS COLOR_NM
 		     -- , GROUP_CONCAT(Z.COLOR_NM ORDER BY Z.ORD_DTL_ITEM_SQ) AS COLOR_NM
-		     , GROUP_CONCAT(' ',CONCAT(OPT_CD1_NM,'/', OPT_CD2) ORDER BY Z.ORD_DTL_ITEM_SQ) AS COLOR_NM
+		     , GROUP_CONCAT(' ',CONCAT(OPT_CD1_NM,' / ', OPT_CD2) ORDER BY Z.ORD_DTL_ITEM_SQ) AS COLOR_NM
 		     , GROUP_CONCAT(Z.OPT_CD1 ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD1
 		     , GROUP_CONCAT(Z.OPT_CD1 ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD1
 		     , GROUP_CONCAT(Z.OPT_CD2 ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD2
 		     , GROUP_CONCAT(Z.OPT_CD2 ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD2
 		     , GROUP_CONCAT(Z.OPT_CD1_NM ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD1_NM
 		     , GROUP_CONCAT(Z.OPT_CD1_NM ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD1_NM
@@ -570,7 +570,6 @@
 			 , Z.CONFIRM_UNO      
 			 , Z.CONFIRM_UNO      
 			 , Z.CONFIRM_DT       
 			 , Z.CONFIRM_DT       
 			 , Z.REG_NO           
 			 , Z.REG_NO           
-			 , Z.REG_DT           
 			 , Z.UPD_NO           
 			 , Z.UPD_NO           
 			 , Z.UPD_DT           
 			 , Z.UPD_DT           
 			 , Z.ADM_RPL          
 			 , Z.ADM_RPL          
@@ -647,7 +646,6 @@
 				     , R.CONFIRM_UNO      
 				     , R.CONFIRM_UNO      
 				     , R.CONFIRM_DT       
 				     , R.CONFIRM_DT       
 				     , R.REG_NO           
 				     , R.REG_NO           
-				     , R.REG_DT           
 				     , R.UPD_NO           
 				     , R.UPD_NO           
 				     , R.UPD_DT           
 				     , R.UPD_DT           
 				     , R.ADM_RPL          
 				     , R.ADM_RPL          
@@ -715,7 +713,7 @@
 				 <if test="reviewStat == 'u'.toString()">
 				 <if test="reviewStat == 'u'.toString()">
 				, Z.REVIEW_SQ , Z.REVIEW_SQ , Z.REVIEW_GB , Z.REVIEW_TITLE , Z.REVIEW_CONTENT , Z.SCORE , Z.HEIGHT           
 				, Z.REVIEW_SQ , Z.REVIEW_SQ , Z.REVIEW_GB , Z.REVIEW_TITLE , Z.REVIEW_CONTENT , Z.SCORE , Z.HEIGHT           
 				, Z.WEIGHT  , Z.SCORE_SIZE , Z.SCORE_COLOR , Z.SCORE_FIT , Z.SCORE_THICK , Z.SCORE_WEIGHT , Z.SCORE_BALL , Z.GIVE_DUE_PNT , Z.PNT_GIVE_STAT    
 				, Z.WEIGHT  , Z.SCORE_SIZE , Z.SCORE_COLOR , Z.SCORE_FIT , Z.SCORE_THICK , Z.SCORE_WEIGHT , Z.SCORE_BALL , Z.GIVE_DUE_PNT , Z.PNT_GIVE_STAT    
-			    , Z.BEST_YN, Z.GIVE_DUE_BPNT , Z.BPNT_GIVE_YN , Z.DISP_YN , Z.DEL_YN, Z.CONFIRM_YN, Z.CONFIRM_UNO, Z.CONFIRM_DT, Z.REG_NO, Z.REG_DT      
+			    , Z.BEST_YN, Z.GIVE_DUE_BPNT , Z.BPNT_GIVE_YN , Z.DISP_YN , Z.DEL_YN, Z.CONFIRM_YN, Z.CONFIRM_UNO, Z.CONFIRM_DT, Z.REG_NO
 			    , Z.UPD_NO, Z.UPD_DT, Z.ADM_RPL, Z.ADM_RPL_REG_NO, Z.ADM_RPL_DT  
 			    , Z.UPD_NO, Z.UPD_DT, Z.ADM_RPL, Z.ADM_RPL_REG_NO, Z.ADM_RPL_DT  
 			    </if>          
 			    </if>          
 		ORDER BY Z.ORD_NO DESC, Z.ORD_DTL_STAT, Z.SELF_GOODS_YN DESC, Z.SHOT_DELV_YN DESC, Z.SUPPLY_COMP_CD
 		ORDER BY Z.ORD_NO DESC, Z.ORD_DTL_STAT, Z.SELF_GOODS_YN DESC, Z.SHOT_DELV_YN DESC, Z.SUPPLY_COMP_CD
@@ -950,7 +948,7 @@
 		<include refid="selectForPagingHeader"/>
 		<include refid="selectForPagingHeader"/>
 		        SELECT GROUP_CONCAT(Z.ITEM_NM ORDER BY Z.ORD_DTL_ITEM_SQ SEPARATOR '!@!') AS ITEM_NM
 		        SELECT GROUP_CONCAT(Z.ITEM_NM ORDER BY Z.ORD_DTL_ITEM_SQ SEPARATOR '!@!') AS ITEM_NM
 		          -- , GROUP_CONCAT(Z.COLOR_NM ORDER BY Z.ORD_DTL_ITEM_SQ) AS COLOR_NM
 		          -- , GROUP_CONCAT(Z.COLOR_NM ORDER BY Z.ORD_DTL_ITEM_SQ) AS COLOR_NM
-		             , GROUP_CONCAT(' ',CONCAT(OPT_CD1_NM,'/', OPT_CD2) ORDER BY Z.ORD_DTL_ITEM_SQ) AS COLOR_NM
+		             , GROUP_CONCAT(' ',CONCAT(OPT_CD1_NM,' / ', OPT_CD2) ORDER BY Z.ORD_DTL_ITEM_SQ) AS COLOR_NM
 		             , GROUP_CONCAT(Z.OPT_CD1 ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD1
 		             , GROUP_CONCAT(Z.OPT_CD1 ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD1
 		             , GROUP_CONCAT(Z.OPT_CD2 ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD2
 		             , GROUP_CONCAT(Z.OPT_CD2 ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD2
 		             , GROUP_CONCAT(Z.OPT_CD1_NM ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD1_NM
 		             , GROUP_CONCAT(Z.OPT_CD1_NM ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD1_NM

+ 4 - 2
src/main/webapp/WEB-INF/views/mob/app/NoticeFormMob.html

@@ -20,7 +20,7 @@
 <th:block layout:fragment="content">
 <th:block layout:fragment="content">
 <main class="container app-only">
 <main class="container app-only">
 	<!-- ★ 컨텐츠 시작 -->
 	<!-- ★ 컨텐츠 시작 -->
-	<section id="notice" class="notice">
+	<section id="notice" class="notice nodata">
 	</section>
 	</section>
 	<!-- ★ 컨텐츠 종료 -->
 	<!-- ★ 컨텐츠 종료 -->
 </main>
 </main>
@@ -35,13 +35,14 @@
 				} else if (_osType === 'I') {
 				} else if (_osType === 'I') {
 
 
 				}
 				}
+			} else {
+				$('#notice').addClass('nodata');
 			}
 			}
 	});
 	});
 
 
 	var pushListInfo = function (pushList) {
 	var pushListInfo = function (pushList) {
 		if (!gagajf.isNull(pushList)) {
 		if (!gagajf.isNull(pushList)) {
 			let pushListJosn = JSON.parse(pushList);
 			let pushListJosn = JSON.parse(pushList);
-
 			let html = '';
 			let html = '';
 			$.each(pushListJosn.pushList, function(idx, item) {
 			$.each(pushListJosn.pushList, function(idx, item) {
 				html += '<div class="inner">\n';
 				html += '<div class="inner">\n';
@@ -67,6 +68,7 @@
 				html += '    </a>';
 				html += '    </a>';
 				html += '</div>\n'
 				html += '</div>\n'
 			});
 			});
+			$('#notice').removeClass('nodata');
 			$('#notice').html(html);
 			$('#notice').html(html);
 		} else {
 		} else {
 			$('#notice').addClass('nodata');
 			$('#notice').addClass('nodata');

+ 1 - 1
src/main/webapp/WEB-INF/views/mob/callcenter/NoticeFormMob.html

@@ -87,7 +87,7 @@
 				
 				
 // 				tag += '						<span class="prod">공지</span>\n';
 // 				tag += '						<span class="prod">공지</span>\n';
 				tag += '					</div>\n';
 				tag += '					</div>\n';
-				tag += '					<div class="lap2"><span>' + item.noticeTitle + '</span></div>\n';
+				tag += '					<div class="lap2"><span>' + item.noticeTitle.escapeHtml() + '</span></div>\n';
 				tag += '				</div>\n';
 				tag += '				</div>\n';
 				tag += '				<span class="data">' + item.regDt.toDate("YYYYMMDD").format("YYYY.MM.DD") + '</span>\n';
 				tag += '				<span class="data">' + item.regDt.toDate("YYYYMMDD").format("YYYY.MM.DD") + '</span>\n';
 				tag += '			</div>\n';
 				tag += '			</div>\n';

+ 1 - 1
src/main/webapp/WEB-INF/views/mob/callcenter/OneToOneQnaFormMob.html

@@ -348,7 +348,7 @@
 				if (item.ansStat == 'G060_20') { // 답변완료 상태일 때
 				if (item.ansStat == 'G060_20') { // 답변완료 상태일 때
 					tag += '	<div class="fold_answer">\n';
 					tag += '	<div class="fold_answer">\n';
 					tag += '		<div>\n';
 					tag += '		<div>\n';
-					tag += '			<div class="answer_body">' + item.ansContent + '</div>\n';
+					tag += '			<div class="answer_body">' + item.ansContent.escapeHtml() + '</div>\n';
 					tag += '			<div class="answer_foot">\n';
 					tag += '			<div class="answer_foot">\n';
 					tag += '				<span class="data">' + item.ansDt + '</span>\n';
 					tag += '				<span class="data">' + item.ansDt + '</span>\n';
 					
 					

+ 5 - 1
src/main/webapp/WEB-INF/views/mob/callcenter/OneToOneQnaRegisterFormMob.html

@@ -61,7 +61,7 @@
 									<div class="form_field">
 									<div class="form_field">
 										<div class="ui_col_12 form_full">
 										<div class="ui_col_12 form_full">
 											<div class="input_wrap">
 											<div class="input_wrap">
-												<textarea class="doc_contactus" name="questContent" cols="30" rows="10" style="resize: none;" placeholder="내용을 입력해 주세요. (500자 이내)" required="required" data-valid-name="내용"></textarea>
+												<textarea class="doc_contactus" id="questContent" name="questContent" cols="30" rows="10" style="resize: none;" placeholder="내용을 입력해 주세요. (500자 이내)" required="required" data-valid-name="내용"></textarea>
 												<p class="txt_cnt">
 												<p class="txt_cnt">
 													<span id="contactus_cnt" class="contactus_cnt"><em class="c_primary">0</em>/500</span>
 													<span id="contactus_cnt" class="contactus_cnt"><em class="c_primary">0</em>/500</span>
 												</p>
 												</p>
@@ -196,6 +196,10 @@
 		// 입력 값 체크
 		// 입력 값 체크
 		if (!gagajf.validation('#qnaForm'))
 		if (!gagajf.validation('#qnaForm'))
 			return false;
 			return false;
+		if($('#questContent').val().length<20){
+			mcxDialog.alert("문의내용을 20자 이상 입력해주세요.");
+			return;
+		}
 
 
 		mcxDialog.confirm("저장하시겠습니까?", {
 		mcxDialog.confirm("저장하시겠습니까?", {
 			cancelBtnText: "취소",
 			cancelBtnText: "취소",

+ 5 - 7
src/main/webapp/WEB-INF/views/mob/customer/JoinCompleteFormMob.html

@@ -96,13 +96,11 @@
 	$(document).ready(function(){
 	$(document).ready(function(){
 		if (_isApp === 'true') {
 		if (_isApp === 'true') {
 			if (gagajf.isNull(maskingCustId)) {
 			if (gagajf.isNull(maskingCustId)) {
-				$.get("idsend://?id=" + [[${custNo}]] + "^link=", function () {
-					if (_osType === 'A') {
-						window.style24.pushEnable('ON');
-					} else if (_osType === 'I') {
-						window.webkit.messageHandlers.pushEnable.postMessage({"status":"ON"});
-					}
-				});
+				if (_osType === 'A') {
+					window.style24.setCustNo([[${custNo}]]);
+				} else if (_osType === 'I') {
+
+				}
 			}
 			}
 		}
 		}
 	});
 	});

+ 14 - 0
src/main/webapp/WEB-INF/views/mob/customer/JoinFormMob.html

@@ -244,6 +244,8 @@
 		const $avlPwd = $('#avlPwd');
 		const $avlPwd = $('#avlPwd');
 		const red = 'c_red2';
 		const red = 'c_red2';
 		const gray = 'c_gray';
 		const gray = 'c_gray';
+		const icoRed = 'red';
+		const icoGray = 'gray';
 
 
 		let custId = $('#joinForm input[name=custId]').val();
 		let custId = $('#joinForm input[name=custId]').val();
 		let password = $('#joinForm input[name=passwd]').val();
 		let password = $('#joinForm input[name=passwd]').val();
@@ -255,20 +257,28 @@
 		if (fnValidtaionPwdMixedWord(password) || fnValidationPwdLength(password)) {
 		if (fnValidtaionPwdMixedWord(password) || fnValidationPwdLength(password)) {
 			pwdCheck = false;
 			pwdCheck = false;
 			$firstFailed.removeClass(gray);
 			$firstFailed.removeClass(gray);
+			$firstFailed.find('.ico').removeClass(icoGray);
 			$firstFailed.addClass(red);
 			$firstFailed.addClass(red);
+			$firstFailed.find('.ico').addClass(icoRed);
 		} else {
 		} else {
 			$firstFailed.removeClass(red);
 			$firstFailed.removeClass(red);
+			$firstFailed.find('.ico').removeClass(icoRed);
 			$firstFailed.addClass(gray);
 			$firstFailed.addClass(gray);
+			$firstFailed.find('.ico').addClass(icoGray);
 		}
 		}
 
 
 		// 동일한 문자/숫자 4자이상 || 연속된 문자가 4자이상
 		// 동일한 문자/숫자 4자이상 || 연속된 문자가 4자이상
 		if (fnValidationPwdSameWord(password) || fnValidtaionPwdCntnsWord(password)) {
 		if (fnValidationPwdSameWord(password) || fnValidtaionPwdCntnsWord(password)) {
 			pwdCheck = false;
 			pwdCheck = false;
 			$secondFailed.removeClass(gray);
 			$secondFailed.removeClass(gray);
+			$secondFailed.find('.ico').removeClass(icoGray);
 			$secondFailed.addClass(red);
 			$secondFailed.addClass(red);
+			$secondFailed.find('.ico').addClass(icoRed);
 		} else {
 		} else {
 			$secondFailed.removeClass(red);
 			$secondFailed.removeClass(red);
+			$secondFailed.find('.ico').removeClass(icoRed);
 			$secondFailed.addClass(gray);
 			$secondFailed.addClass(gray);
+			$secondFailed.find('.ico').addClass(icoGray);
 		}
 		}
 
 
 		// 아이디 포함
 		// 아이디 포함
@@ -276,10 +286,14 @@
 			if (fnValidationPwdSameId(password, custId)) {
 			if (fnValidationPwdSameId(password, custId)) {
 				pwdCheck = false;
 				pwdCheck = false;
 				$thirdFailed.removeClass(gray);
 				$thirdFailed.removeClass(gray);
+				$thirdFailed.find('.ico').removeClass(icoGray);
 				$thirdFailed.addClass(red);
 				$thirdFailed.addClass(red);
+				$thirdFailed.find('.ico').addClass(icoRed);
 			} else {
 			} else {
 				$thirdFailed.removeClass(red);
 				$thirdFailed.removeClass(red);
+				$thirdFailed.find('.ico').removeClass(icoRed);
 				$thirdFailed.addClass(gray);
 				$thirdFailed.addClass(gray);
+				$thirdFailed.find('.ico').addClass(icoGray);
 			}
 			}
 		}
 		}
 
 

+ 15 - 0
src/main/webapp/WEB-INF/views/mob/customer/PasswordChangeFormMob.html

@@ -132,6 +132,9 @@
 		const $avlPwd = $('#avlPwd');
 		const $avlPwd = $('#avlPwd');
 		const red = 'c_red2';
 		const red = 'c_red2';
 		const gray = 'c_gray';
 		const gray = 'c_gray';
+		const icoRed = 'red';
+		const icoGray = 'gray';
+
 		let custId = $('#resetPasswordForm input[name=custId]').val();
 		let custId = $('#resetPasswordForm input[name=custId]').val();
 		let password = $('#resetPasswordForm input[name=passwd]').val();
 		let password = $('#resetPasswordForm input[name=passwd]').val();
 		let confirmPassword = $('#resetPasswordForm input[name=confirmPassword]').val();
 		let confirmPassword = $('#resetPasswordForm input[name=confirmPassword]').val();
@@ -141,30 +144,42 @@
 		if (fnValidtaionPwdMixedWord(password) || fnValidationPwdLength(password)) {
 		if (fnValidtaionPwdMixedWord(password) || fnValidationPwdLength(password)) {
 			pwdCheck = false;
 			pwdCheck = false;
 			$firstFailed.removeClass(gray);
 			$firstFailed.removeClass(gray);
+			$firstFailed.find('.ico').removeClass(icoGray);
 			$firstFailed.addClass(red);
 			$firstFailed.addClass(red);
+			$firstFailed.find('.ico').addClass(icoRed);
 		} else {
 		} else {
 			$firstFailed.removeClass(red);
 			$firstFailed.removeClass(red);
+			$firstFailed.find('.ico').removeClass(icoRed);
 			$firstFailed.addClass(gray);
 			$firstFailed.addClass(gray);
+			$firstFailed.find('.ico').addClass(icoGray);
 		}
 		}
 
 
 		// 동일한 문자/숫자 4자이상 || 연속된 문자가 4자이상
 		// 동일한 문자/숫자 4자이상 || 연속된 문자가 4자이상
 		if (fnValidationPwdSameWord(password) || fnValidtaionPwdCntnsWord(password)) {
 		if (fnValidationPwdSameWord(password) || fnValidtaionPwdCntnsWord(password)) {
 			pwdCheck = false;
 			pwdCheck = false;
 			$secondFailed.removeClass(gray);
 			$secondFailed.removeClass(gray);
+			$secondFailed.find('.ico').removeClass(icoGray);
 			$secondFailed.addClass(red);
 			$secondFailed.addClass(red);
+			$secondFailed.find('.ico').addClass(icoRed);
 		} else {
 		} else {
 			$secondFailed.removeClass(red);
 			$secondFailed.removeClass(red);
+			$secondFailed.find('.ico').removeClass(icoRed);
 			$secondFailed.addClass(gray);
 			$secondFailed.addClass(gray);
+			$secondFailed.find('.ico').addClass(icoGray);
 		}
 		}
 
 
 		// 아이디 포함
 		// 아이디 포함
 		if (fnValidationPwdSameId(password, custId)) {
 		if (fnValidationPwdSameId(password, custId)) {
 			pwdCheck = false;
 			pwdCheck = false;
 			$thirdFailed.removeClass(gray);
 			$thirdFailed.removeClass(gray);
+			$thirdFailed.find('.ico').removeClass(icoGray);
 			$thirdFailed.addClass(red);
 			$thirdFailed.addClass(red);
+			$thirdFailed.find('.ico').addClass(icoRed);
 		} else {
 		} else {
 			$thirdFailed.removeClass(red);
 			$thirdFailed.removeClass(red);
+			$thirdFailed.find('.ico').removeClass(icoRed);
 			$thirdFailed.addClass(gray);
 			$thirdFailed.addClass(gray);
+			$thirdFailed.find('.ico').addClass(icoGray);
 		}
 		}
 
 
 		if (pwdCheck) {
 		if (pwdCheck) {

+ 4 - 0
src/main/webapp/WEB-INF/views/mob/goods/GoodsQnaDetailFormMob.html

@@ -94,6 +94,10 @@
 			mcxDialog.alert("문의내용을 입력해주세요.");
 			mcxDialog.alert("문의내용을 입력해주세요.");
 			return false;
 			return false;
 		}
 		}
+		if($('#goodsQnaDetailForm textarea[name=questContent]').val().length<20){
+			mcxDialog.alert("문의내용을 20자 이상 입력해주세요.");
+			return;
+		}
 		
 		
 		gagajf.ajaxFormSubmit($('#goodsQnaDetailForm').prop('action') , $('#goodsQnaDetailForm'), btnGoodsQnaSaveCallBack());
 		gagajf.ajaxFormSubmit($('#goodsQnaDetailForm').prop('action') , $('#goodsQnaDetailForm'), btnGoodsQnaSaveCallBack());
 		
 		

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

@@ -175,9 +175,8 @@
 
 
 
 
 	$(document).ready(function() {
 	$(document).ready(function() {
-
+		$('footer').hide();
 		$('#htopTitle').text('배송지 관리');
 		$('#htopTitle').text('배송지 관리');
-
 		// 배송목록 조회
 		// 배송목록 조회
 		fnCustDeliveryAddList();
 		fnCustDeliveryAddList();
 
 

+ 24 - 20
src/main/webapp/WEB-INF/views/mob/mypage/MypageCustModifyFormMob.html

@@ -187,29 +187,29 @@
 					</div>
 					</div>
 				</div>
 				</div>
 			</div>
 			</div>
-			<!-- 210408_ 추가 : 은행 선택 팝업 -->
-			<div id="refundBankPop" class="popup_box refundBankPop">
-				<div class="lap">
-					<div class="popup_close">카테고리닫기</div>
-					<div class="popup_head sr-only">
-						<h2 class="">은행 선택 팝업</h2>
-					</div>
-					<div class="popup_con">
-						<div class="button_list clear">
-							<th:block th:if="${bankList}" th:each="oneData, status : ${bankList}">
-								<button type="button" th:id="|bankCd_${oneData.cd}|" th:with="cd = ${oneData.cd}">
-									<span th:text="${oneData.cdNm}"></span>
-									<input type="hidden" name="bankCd" th:value="${cd}"/>
-								</button>
-							</th:block>
-						</div>
-					</div>
-				</div>
-			</div>
-			<!-- //210408_ 추가 : 은행 선택 팝업 -->
 		</form>
 		</form>
 	</section>
 	</section>
 </main>
 </main>
+<!-- 210408_ 추가 : 은행 선택 팝업 -->
+<div id="refundBankPop" class="popup_box refundBankPop">
+	<div class="lap">
+		<div class="popup_close">카테고리닫기</div>
+		<div class="popup_head sr-only">
+			<h2 class="">은행 선택 팝업</h2>
+		</div>
+		<div class="popup_con">
+			<div class="button_list clear">
+				<th:block th:if="${bankList}" th:each="oneData, status : ${bankList}">
+					<button type="button" th:id="|bankCd_${oneData.cd}|" th:with="cd = ${oneData.cd}">
+						<span th:text="${oneData.cdNm}"></span>
+						<input type="hidden" name="bankCd" th:value="${cd}"/>
+					</button>
+				</th:block>
+			</div>
+		</div>
+	</div>
+</div>
+<!-- //210408_ 추가 : 은행 선택 팝업 -->
 <script th:src="@{'/biz/customer.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/biz/customer.js"></script>
 <script th:src="@{'/biz/customer.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/biz/customer.js"></script>
 <script th:inline="javascript">
 <script th:inline="javascript">
 	/*<![CDATA[*/
 	/*<![CDATA[*/
@@ -551,6 +551,10 @@
 			$("body").css({"overflow":"visible"});
 			$("body").css({"overflow":"visible"});
 		});
 		});
 
 
+		$(document).on('click','.popup_box.refundBankPop .button_list button',function(){
+			$(this).parents('.popup_box.refundBankPop').hide().removeClass('active');
+			$("body").css({"overflow":"visible"});
+		})
 
 
 
 
 	})
 	})

+ 15 - 0
src/main/webapp/WEB-INF/views/mob/mypage/MypageCustPwdModifyFormMob.html

@@ -129,6 +129,9 @@
 		const $avlPwd = $('#avlPwd');
 		const $avlPwd = $('#avlPwd');
 		const red = 'c_red2';
 		const red = 'c_red2';
 		const gray = 'c_gray';
 		const gray = 'c_gray';
+		const icoRed = 'red';
+		const icoGray = 'gray';
+
 		let custId = $('#pwdModifyForm input[name=custId]').val();
 		let custId = $('#pwdModifyForm input[name=custId]').val();
 		let password = $('#pwdModifyForm input[name=passwd]').val();
 		let password = $('#pwdModifyForm input[name=passwd]').val();
 		let confirmPassword = $('#pwdModifyForm input[name=confirmPassword]').val();
 		let confirmPassword = $('#pwdModifyForm input[name=confirmPassword]').val();
@@ -138,30 +141,42 @@
 		if (fnValidtaionPwdMixedWord(password) || fnValidationPwdLength(password)) {
 		if (fnValidtaionPwdMixedWord(password) || fnValidationPwdLength(password)) {
 			pwdCheck = false;
 			pwdCheck = false;
 			$firstFailed.removeClass(gray);
 			$firstFailed.removeClass(gray);
+			$firstFailed.find('.ico').removeClass(icoGray);
 			$firstFailed.addClass(red);
 			$firstFailed.addClass(red);
+			$firstFailed.find('.ico').addClass(icoRed);
 		} else {
 		} else {
 			$firstFailed.removeClass(red);
 			$firstFailed.removeClass(red);
+			$firstFailed.find('.ico').removeClass(icoRed);
 			$firstFailed.addClass(gray);
 			$firstFailed.addClass(gray);
+			$firstFailed.find('.ico').addClass(icoGray);
 		}
 		}
 
 
 		// 동일한 문자/숫자 4자이상 || 연속된 문자가 4자이상
 		// 동일한 문자/숫자 4자이상 || 연속된 문자가 4자이상
 		if (fnValidationPwdSameWord(password) || fnValidtaionPwdCntnsWord(password)) {
 		if (fnValidationPwdSameWord(password) || fnValidtaionPwdCntnsWord(password)) {
 			pwdCheck = false;
 			pwdCheck = false;
 			$secondFailed.removeClass(gray);
 			$secondFailed.removeClass(gray);
+			$secondFailed.find('.ico').removeClass(icoGray);
 			$secondFailed.addClass(red);
 			$secondFailed.addClass(red);
+			$secondFailed.find('.ico').addClass(icoRed);
 		} else {
 		} else {
 			$secondFailed.removeClass(red);
 			$secondFailed.removeClass(red);
+			$secondFailed.find('.ico').removeClass(icoRed);
 			$secondFailed.addClass(gray);
 			$secondFailed.addClass(gray);
+			$secondFailed.find('.ico').addClass(icoGray);
 		}
 		}
 
 
 		// 아이디 포함
 		// 아이디 포함
 		if (fnValidationPwdSameId(password, custId)) {
 		if (fnValidationPwdSameId(password, custId)) {
 			pwdCheck = false;
 			pwdCheck = false;
 			$thirdFailed.removeClass(gray);
 			$thirdFailed.removeClass(gray);
+			$thirdFailed.find('.ico').removeClass(icoGray);
 			$thirdFailed.addClass(red);
 			$thirdFailed.addClass(red);
+			$thirdFailed.find('.ico').addClass(icoRed);
 		} else {
 		} else {
 			$thirdFailed.removeClass(red);
 			$thirdFailed.removeClass(red);
+			$thirdFailed.find('.ico').removeClass(icoRed);
 			$thirdFailed.addClass(gray);
 			$thirdFailed.addClass(gray);
+			$thirdFailed.find('.ico').addClass(icoGray);
 		}
 		}
 
 
 		if (pwdCheck) {
 		if (pwdCheck) {

+ 6 - 0
src/main/webapp/WEB-INF/views/mob/mypage/MypageCustSecedeCompleteFormMob.html

@@ -55,6 +55,12 @@
 							</td>
 							</td>
 						</tr>
 						</tr>
 					</tbody>
 					</tbody>
+				</table>
+				<table>
+					<colgroup>
+						<col width="25%">
+						<col width="25%">
+					</colgroup>
 					<thead>
 					<thead>
 						<tr>
 						<tr>
 							<th scope="col">상품권 잔여금액</th>
 							<th scope="col">상품권 잔여금액</th>

+ 10 - 4
src/main/webapp/WEB-INF/views/mob/mypage/MypageCustSecedeFormMob.html

@@ -66,6 +66,12 @@
 							</td>
 							</td>
 						</tr>
 						</tr>
 					</tbody>
 					</tbody>
+				</table>
+				<table>
+					<colgroup>
+						<col width="25%">
+						<col width="25%">
+					</colgroup>
 					<thead>
 					<thead>
 						<tr>
 						<tr>
 							<th scope="col">상품권 잔여금액</th>
 							<th scope="col">상품권 잔여금액</th>
@@ -204,22 +210,22 @@
 		$('#secedeCustForm input[name=custId]').val(custIdText);
 		$('#secedeCustForm input[name=custId]').val(custIdText);
 
 
 		if (orderTotal > 0) {
 		if (orderTotal > 0) {
-			$('#ordCnt').addClass('on');
+			$('#ordCnt').addClass('t_req');
 			isPossible = false
 			isPossible = false
 		}
 		}
 
 
 		if (orderStatInfo.cancelCount > 0) {
 		if (orderStatInfo.cancelCount > 0) {
-			$('#cnclCnt').addClass('on');
+			$('#cnclCnt').addClass('t_req');
 			isPossible = false
 			isPossible = false
 		}
 		}
 
 
 		if (orderStatInfo.returnCount > 0) {
 		if (orderStatInfo.returnCount > 0) {
-			$('#rtnCnt').addClass('on');
+			$('#rtnCnt').addClass('t_req');
 			isPossible = false
 			isPossible = false
 		}
 		}
 
 
 		if (orderStatInfo.exchangeCount > 0) {
 		if (orderStatInfo.exchangeCount > 0) {
-			$('#exCnt').addClass('on');
+			$('#exCnt').addClass('t_req');
 			isPossible = false
 			isPossible = false
 		}
 		}
 
 

+ 15 - 0
src/main/webapp/WEB-INF/views/mob/mypage/MypageCustSnsJoinInitPwdFormMob.html

@@ -120,6 +120,9 @@
 		const $avlPwd = $('#avlPwd');
 		const $avlPwd = $('#avlPwd');
 		const red = 'c_red2';
 		const red = 'c_red2';
 		const gray = 'c_gray';
 		const gray = 'c_gray';
+		const icoRed = 'red';
+		const icoGray = 'gray';
+
 		let custId = $('#resetPasswordForm input[name=custId]').val();
 		let custId = $('#resetPasswordForm input[name=custId]').val();
 		let password = $('#resetPasswordForm input[name=passwd]').val();
 		let password = $('#resetPasswordForm input[name=passwd]').val();
 		let confirmPassword = $('#resetPasswordForm input[name=confirmPassword]').val();
 		let confirmPassword = $('#resetPasswordForm input[name=confirmPassword]').val();
@@ -129,30 +132,42 @@
 		if (fnValidtaionPwdMixedWord(password) || fnValidationPwdLength(password)) {
 		if (fnValidtaionPwdMixedWord(password) || fnValidationPwdLength(password)) {
 			pwdCheck = false;
 			pwdCheck = false;
 			$firstFailed.removeClass(gray);
 			$firstFailed.removeClass(gray);
+			$firstFailed.find('.ico').removeClass(icoGray);
 			$firstFailed.addClass(red);
 			$firstFailed.addClass(red);
+			$firstFailed.find('.ico').addClass(icoRed);
 		} else {
 		} else {
 			$firstFailed.removeClass(red);
 			$firstFailed.removeClass(red);
+			$firstFailed.find('.ico').removeClass(icoRed);
 			$firstFailed.addClass(gray);
 			$firstFailed.addClass(gray);
+			$firstFailed.find('.ico').addClass(icoGray);
 		}
 		}
 
 
 		// 동일한 문자/숫자 4자이상 || 연속된 문자가 4자이상
 		// 동일한 문자/숫자 4자이상 || 연속된 문자가 4자이상
 		if (fnValidationPwdSameWord(password) || fnValidtaionPwdCntnsWord(password)) {
 		if (fnValidationPwdSameWord(password) || fnValidtaionPwdCntnsWord(password)) {
 			pwdCheck = false;
 			pwdCheck = false;
 			$secondFailed.removeClass(gray);
 			$secondFailed.removeClass(gray);
+			$secondFailed.find('.ico').removeClass(icoGray);
 			$secondFailed.addClass(red);
 			$secondFailed.addClass(red);
+			$secondFailed.find('.ico').addClass(icoRed);
 		} else {
 		} else {
 			$secondFailed.removeClass(red);
 			$secondFailed.removeClass(red);
+			$secondFailed.find('.ico').removeClass(icoRed);
 			$secondFailed.addClass(gray);
 			$secondFailed.addClass(gray);
+			$secondFailed.find('.ico').addClass(icoGray);
 		}
 		}
 
 
 		// 아이디 포함
 		// 아이디 포함
 		if (fnValidationPwdSameId(password, custId)) {
 		if (fnValidationPwdSameId(password, custId)) {
 			pwdCheck = false;
 			pwdCheck = false;
 			$thirdFailed.removeClass(gray);
 			$thirdFailed.removeClass(gray);
+			$thirdFailed.find('.ico').removeClass(icoGray);
 			$thirdFailed.addClass(red);
 			$thirdFailed.addClass(red);
+			$thirdFailed.find('.ico').addClass(icoRed);
 		} else {
 		} else {
 			$thirdFailed.removeClass(red);
 			$thirdFailed.removeClass(red);
+			$thirdFailed.find('.ico').removeClass(icoRed);
 			$thirdFailed.addClass(gray);
 			$thirdFailed.addClass(gray);
+			$thirdFailed.find('.ico').addClass(icoGray);
 		}
 		}
 
 
 		if (pwdCheck) {
 		if (pwdCheck) {

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

@@ -22,7 +22,7 @@
 			</th:block>
 			</th:block>
 			<th:block th:unless="${review.bestYn == 'Y'}">
 			<th:block th:unless="${review.bestYn == 'Y'}">
 			<h5 class="modal-title" id="exampleFullLabel">
 			<h5 class="modal-title" id="exampleFullLabel">
-				<button type="button" id="btn_more_photoreview" th:onclick="cfGoodsReviewPhoto([[${params.goodsCd}]])" ></button>
+				<!-- <button type="button" id="btn_more_photoreview" th:onclick="cfGoodsReviewPhoto([[${params.goodsCd}]])" ></button> -->
 				포토/영상리뷰
 				포토/영상리뷰
 			</h5>
 			</h5>
 			</th:block>
 			</th:block>

+ 14 - 6
src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewFormMob.html

@@ -58,7 +58,7 @@
 									</div>
 									</div>
 								</div>
 								</div>
 								<!-- tab_cont Start -->
 								<!-- tab_cont Start -->
-								<div class="inner" id="reviewList">
+								<div id="reviewList">
 
 
 								</div>
 								</div>
 								<div class="ui_foot" style="display:none;">
 								<div class="ui_foot" style="display:none;">
@@ -105,6 +105,7 @@
 				}	
 				}	
 				var html = '';
 				var html = '';
 				$.each(result.dataList2, function(idx, item) {
 				$.each(result.dataList2, function(idx, item) {
+					html += '<div class="inner">\n'
 					html += '	<div class="part_goods">\n';
 					html += '	<div class="part_goods">\n';
 					html += '		<div class="goods_section">\n';
 					html += '		<div class="goods_section">\n';
 					html += '			<div class="goods_detail">\n';
 					html += '			<div class="goods_detail">\n';
@@ -114,7 +115,7 @@
 					html += '					</div>\n';
 					html += '					</div>\n';
 					html += '					<div class="info_box">\n';
 					html += '					<div class="info_box">\n';
 					html += '						<div class="od_name">\n';
 					html += '						<div class="od_name">\n';
-					html += '							<div class="goods_date"><span class="date">'+item.payDt+'</span> 구매</div>\n';
+					html += '							<div class="goods_date"><span class="date">'+item.ordDt+'</span> 구매</div>\n';
 					html += '							<div class="brand">\n';
 					html += '							<div class="brand">\n';
 					html += '								<span>'+item.brandNm+'</span>\n';
 					html += '								<span>'+item.brandNm+'</span>\n';
 					html += '							</div>\n';
 					html += '							</div>\n';
@@ -123,9 +124,11 @@
 					html += '						<div class="od_opt">\n';
 					html += '						<div class="od_opt">\n';
 					html += '							<div class="option">\n';
 					html += '							<div class="option">\n';
 					if (item.goodsType =='G056_S') {
 					if (item.goodsType =='G056_S') {
+						html += '<em>';
 						$.each(item.colorNmArr, function (index2, option) {
 						$.each(item.colorNmArr, function (index2, option) {
-							html += '							<em>' + item.itemNmArr[index2] + ' / ' + option +'</em>\n';
+							html +=  item.itemNmArr[index2] + ' / ' + option  + '<br>';
 						})
 						})
+						html += '</em>\n';
 					}else{
 					}else{
 						html += '							<em>'+item.colorNm+'</em>\n';
 						html += '							<em>'+item.colorNm+'</em>\n';
 					}
 					}
@@ -245,6 +248,7 @@
 					html += '			<div><button type="button" id="btn_review_delete" class="btn btn_default" onclick="fnDeleteReview('+item.reviewSq+')"><span>리뷰 삭제</span></button></div>\n';
 					html += '			<div><button type="button" id="btn_review_delete" class="btn btn_default" onclick="fnDeleteReview('+item.reviewSq+')"><span>리뷰 삭제</span></button></div>\n';
 					html += '		</div>\n';
 					html += '		</div>\n';
 					html += '	</div>\n';
 					html += '	</div>\n';
+					html += '</div>\n'
 				});
 				});
 				
 				
 				$('#reviewList').append(html);
 				$('#reviewList').append(html);
@@ -278,7 +282,8 @@
 			if (result.paging1.pageable.pageNo == 1){
 			if (result.paging1.pageable.pageNo == 1){
 				$('#reviewList').html('');
 				$('#reviewList').html('');
 			}	
 			}	
-			var html = '	<div class="part_goods">\n';
+			var html =  '<div class="inner">\n';
+			html += '	<div class="part_goods">\n';
 			$.each(result.dataList1, function(idx, item) {
 			$.each(result.dataList1, function(idx, item) {
 				html += '		<div class="goods_section">\n';
 				html += '		<div class="goods_section">\n';
 				html += '			<div class="goods_detail">\n';
 				html += '			<div class="goods_detail">\n';
@@ -288,7 +293,7 @@
 				html += '					</div>\n';
 				html += '					</div>\n';
 				html += '					<div class="info_box">\n';
 				html += '					<div class="info_box">\n';
 				html += '						<div class="od_name">\n';
 				html += '						<div class="od_name">\n';
-				html += '							<div class="goods_date"><span class="date">'+item.payDt+'</span> 구매</div>\n';
+				html += '							<div class="goods_date"><span class="date">'+item.ordDt+'</span> 구매</div>\n';
 				html += '							<div class="brand">\n';
 				html += '							<div class="brand">\n';
 				html += '								<span>'+item.brandNm+'</span>\n';
 				html += '								<span>'+item.brandNm+'</span>\n';
 				html += '							</div>\n';
 				html += '							</div>\n';
@@ -297,9 +302,11 @@
 				html += '						<div class="od_opt">\n';
 				html += '						<div class="od_opt">\n';
 				html += '							<div class="option">\n';
 				html += '							<div class="option">\n';
 				if (item.goodsType =='G056_S') {
 				if (item.goodsType =='G056_S') {
+					html += '<em>';
 					$.each(item.colorNmArr, function (index2, option) {
 					$.each(item.colorNmArr, function (index2, option) {
-						html += '							<em>' + item.itemNmArr[index2] + ' / ' + option + '</em><br>\n';
+						html +=  item.itemNmArr[index2] + ' / ' + option + '<br>';
 					})
 					})
+					html += '</em>\n';
 				}else{
 				}else{
 					html += '							<em>'+item.colorNm+'</em>\n';
 					html += '							<em>'+item.colorNm+'</em>\n';
 				}
 				}
@@ -314,6 +321,7 @@
 				html += '		</div>\n';
 				html += '		</div>\n';
 			});
 			});
 			html += '	</div>\n';
 			html += '	</div>\n';
+			html += '</div>\n';
 			$('#reviewList').append(html);
 			$('#reviewList').append(html);
 			if (result.paging1.pageable.totalPage > result.paging1.pageable.pageNo) {
 			if (result.paging1.pageable.totalPage > result.paging1.pageable.pageNo) {
 				$('#btnMore').parent().show();
 				$('#btnMore').parent().show();

+ 12 - 32
src/main/webapp/WEB-INF/views/mob/planning/PlanningEventMainFormMob.html

@@ -42,30 +42,7 @@
 							</div>
 							</div>
 						</div>
 						</div>
 						<div class="list" id="divEventList">
 						<div class="list" id="divEventList">
-							<!-- <ul class="event_con">
-								<li><a href="">
-										<div class="ev_img">
-											<div class="shape ranker">
-												<span>NEW</span>
-											</div>
-											<img src="/images/mo/thumb/ev_list_img01.jpg"
-												alt="ATTENTION! 20FW HOLIDAY TBJ 주목할 홀리데이 TBJ 컬렉션">
-										</div>
-										<div class="txt">
-											<p class="tit">ATTENTION! 20FW HOLIDAY TBJ 주목할 홀리데이 TBJ
-												컬렉션</p>
-											<div class="date">
-												<span>2020.12.17</span> - <span>2021.01.03</span>
-											</div>
-										</div>
-								</a></li>
-							</ul> -->
-							 <div class="nodata" id="divEventNoData" style="display:none;">
-								<p><img src="/images/mo/ico_content_find02.png" alt="등록된 이벤트가 없습니다."></p>
-								<span>등록된 이벤트가 없습니다.</span>
-								
-							</div> 
-
+							
 						</div>
 						</div>
 					</div>
 					</div>
 				</div>
 				</div>
@@ -81,10 +58,11 @@ let fnGetEventList = function() {
 	$.getJSON(actionUrl
 	$.getJSON(actionUrl
 		, function(result, status) {
 		, function(result, status) {
 			if (status == 'success') {
 			if (status == 'success') {
+				let tag = '';
 				if (result.length > 0) {
 				if (result.length > 0) {
 					$('#eventTotCnt').html('<span>' + result.length.addComma() + '</span>개의 이벤트');
 					$('#eventTotCnt').html('<span>' + result.length.addComma() + '</span>개의 이벤트');
 					$('#divEventList').html('');
 					$('#divEventList').html('');
-					let tag = '';
+					
 					tag += '<ul class="event_con">\n';
 					tag += '<ul class="event_con">\n';
 					$.each(result, function(idx, item) {
 					$.each(result, function(idx, item) {
 						tag += '	<li>\n';
 						tag += '	<li>\n';
@@ -109,16 +87,18 @@ let fnGetEventList = function() {
 					
 					
 					tag += '</ul>\n';
 					tag += '</ul>\n';
 					
 					
-					
-					$('#divEventList').html(tag);
-					
-					$('#divEventNoData').hide();
-					$('#divEventList').show();
 				} else {
 				} else {
 					$('#eventTotCnt').html('<span>0</span>개의 이벤트');
 					$('#eventTotCnt').html('<span>0</span>개의 이벤트');
-					$('#divEventNoData').show();
-					$('#divEventList').hide();
+					tag += '<div class="nodata">';
+					tag += '	<div class="txt_box">';
+					tag += '		<p>등록된 이벤트가 없습니다.</p>';
+					tag += '		<a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MAIN);">홈으로 가기</a>';
+					tag += '	</div>';
+					tag += '</div> ';
+					
 				}
 				}
+				
+				$('#divEventList').html(tag);
 			}
 			}
 		});
 		});
 }
 }

+ 1 - 1
src/main/webapp/WEB-INF/views/web/callcenter/NoticeFormWeb.html

@@ -112,7 +112,7 @@
 				
 				
 // 				tag += '				<span class="fold_category">공지</span>\n';
 // 				tag += '				<span class="fold_category">공지</span>\n';
 				tag += '				<div class="fold_tit">\n';
 				tag += '				<div class="fold_tit">\n';
-				tag += '					<span>' + item.noticeTitle + '</span>\n';
+				tag += '					<span>' + item.noticeTitle.escapeHtml() + '</span>\n';
 				tag += '				</div>\n';
 				tag += '				</div>\n';
 				tag += '				<span class="data">' + item.regDt.toDate("YYYYMMDD").format("YYYY.MM.DD") + '</span>\n';
 				tag += '				<span class="data">' + item.regDt.toDate("YYYYMMDD").format("YYYY.MM.DD") + '</span>\n';
 				tag += '			</div>\n';
 				tag += '			</div>\n';

+ 2 - 2
src/main/webapp/WEB-INF/views/web/callcenter/OneToOneQnaFormWeb.html

@@ -183,7 +183,7 @@
 				tag += '				<span class="fold_state ' + (item.ansStat == "G060_10" ? "doing" : "done") + '">' + item.ansStatNm + '</span>\n'; //답변완료 : done / 처리중 : doing
 				tag += '				<span class="fold_state ' + (item.ansStat == "G060_10" ? "doing" : "done") + '">' + item.ansStatNm + '</span>\n'; //답변완료 : done / 처리중 : doing
 				tag += '				<div class="fold_tit">\n';
 				tag += '				<div class="fold_tit">\n';
 				tag += '					<span class="prod">[' + item.counselClsfNm + ']</span>\n';
 				tag += '					<span class="prod">[' + item.counselClsfNm + ']</span>\n';
-				tag += '					<span>' + item.questTitle + '</span>\n';
+				tag += '					<span>' + item.questTitle.escapeHtml() + '</span>\n';
 				tag += '				</div>\n';
 				tag += '				</div>\n';
 				tag += '				<span class="data">' + item.questDt + '</span>\n';
 				tag += '				<span class="data">' + item.questDt + '</span>\n';
 				tag += '			</div>\n';
 				tag += '			</div>\n';
@@ -223,7 +223,7 @@
 				if (item.ansStat == 'G060_20') { // 답변완료 상태일 때
 				if (item.ansStat == 'G060_20') { // 답변완료 상태일 때
 					tag += '		<div class="fold_answer">\n'; //문의 답변
 					tag += '		<div class="fold_answer">\n'; //문의 답변
 					tag += '			<div class="answer_head">답변이 등록되었습니다.</div>\n';
 					tag += '			<div class="answer_head">답변이 등록되었습니다.</div>\n';
-					tag += '			<div class="answer_body">' + item.ansContent + '</div>\n';
+					tag += '			<div class="answer_body">' + item.ansContent.escapeHtml() + '</div>\n';
 					tag += '			<span class="data">' + item.ansDt + '</span>\n';
 					tag += '			<span class="data">' + item.ansDt + '</span>\n';
 					tag += '		</div>\n';
 					tag += '		</div>\n';
 				}
 				}

+ 5 - 2
src/main/webapp/WEB-INF/views/web/callcenter/OneToOneQnaRegisterFormWeb.html

@@ -67,7 +67,7 @@
 										<label class="ui_col_2 input_label">내용</label>
 										<label class="ui_col_2 input_label">내용</label>
 										<div class="ui_col_10 form_full">
 										<div class="ui_col_10 form_full">
 											<div class="input_wrap">
 											<div class="input_wrap">
-												<textarea class="doc_contactus" name="questContent" cols="30" rows="10" style="resize: none;" required="required" data-valid-name="내용"></textarea>
+												<textarea class="doc_contactus" name="questContent" id="questContent" cols="30" rows="10" style="resize: none;" required="required" data-valid-name="내용"></textarea>
 												<p class="txt_cnt">
 												<p class="txt_cnt">
 													<span id="contactus_cnt" class="contactus_cnt">(<em class="c_primary">0</em>/500자)</span>
 													<span id="contactus_cnt" class="contactus_cnt">(<em class="c_primary">0</em>/500자)</span>
 												</p>
 												</p>
@@ -196,7 +196,10 @@
 		// 입력 값 체크
 		// 입력 값 체크
 		if (!gagajf.validation('#qnaForm'))
 		if (!gagajf.validation('#qnaForm'))
 			return false;
 			return false;
-
+		if($('#questContent').val().length<20){
+			mcxDialog.alert("문의내용을 20자 이상 입력해주세요.");
+			return;
+		}
 		mcxDialog.confirm("저장하시겠습니까?", {
 		mcxDialog.confirm("저장하시겠습니까?", {
 			cancelBtnText: "취소",
 			cancelBtnText: "취소",
 			sureBtnText: "확인",
 			sureBtnText: "확인",

+ 18 - 1
src/main/webapp/WEB-INF/views/web/display/SearchGoodsListFormWeb.html

@@ -1683,7 +1683,10 @@
 
 
 	<script th:inline="javascript">
 	<script th:inline="javascript">
 		$(document).ready( function() {
 		$(document).ready( function() {
-//결과내 재 검색 - 검색어 입력 시
+			fnCreateSearchCategoryList();
+			// fnCreateSearchFilter();
+
+			//결과내 재 검색 - 검색어 입력 시
 			$(document).on('keyup','.sch_result .area_info .inner_search input',function(e){
 			$(document).on('keyup','.sch_result .area_info .inner_search input',function(e){
 				var reSearchValue = $(this).val();
 				var reSearchValue = $(this).val();
 				if(reSearchValue.length > 0) {
 				if(reSearchValue.length > 0) {
@@ -1746,6 +1749,20 @@
 				$(this).parent('li').children(".sub_cate").toggle();
 				$(this).parent('li').children(".sub_cate").toggle();
 			});
 			});
 		});
 		});
+
+		// 좌측 카테고리 생성
+		var fnCreateSearchCategoryList = function (){
+			let cateList = [[${cateList}]];
+			let tag = '';
+
+			if(cateList.length > 0){
+				$.each(cateList, function (idx,item){
+					console.log('idx::'+idx);
+					console.log(item);
+					console.log(item.cate1No);
+				});
+			}
+		}
 	</script>
 	</script>
 
 
 </th:block>
 </th:block>

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

@@ -32,7 +32,7 @@
 				</div>
 				</div>
 				<div class="form_field">
 				<div class="form_field">
 					<div class="input_box">
 					<div class="input_box">
-						<textarea class="doc_itemqna" name="questContent" id="" cols="30" rows="10" maxlength="500" placeholder="문의내용 입력(500자 이내)" style="resize: none;"></textarea>
+						<textarea class="doc_itemqna" name="questContent" id="questContent" cols="30" rows="10" maxlength="500" placeholder="문의내용 입력(500자 이내)" style="resize: none;"></textarea>
 						<p class="txt_cnt">
 						<p class="txt_cnt">
 							<span id="itemqna_cnt" class="itemqna_cnt">(<em class="c_primary">0</em>/500자)</span>
 							<span id="itemqna_cnt" class="itemqna_cnt">(<em class="c_primary">0</em>/500자)</span>
 						</p>			  
 						</p>			  
@@ -101,6 +101,10 @@
 			mcxDialog.alert("문의내용을 입력해주세요.");
 			mcxDialog.alert("문의내용을 입력해주세요.");
 			return false;
 			return false;
 		}
 		}
+		if($('#goodsQnaDetailForm textarea[name=questContent]').val().length<20){
+			mcxDialog.alert("문의내용을 20자 이상 입력해주세요.");
+			return;
+		}
 		
 		
 		gagajf.ajaxFormSubmit($('#goodsQnaDetailForm').prop('action') , $('#goodsQnaDetailForm'), btnGoodsQnaSaveCallBack());
 		gagajf.ajaxFormSubmit($('#goodsQnaDetailForm').prop('action') , $('#goodsQnaDetailForm'), btnGoodsQnaSaveCallBack());
 		
 		

+ 6 - 2
src/main/webapp/biz/goods.js

@@ -301,16 +301,20 @@ var fnCreateGoodsList = function(result, ithrCd, contentLoc, goodsUrl, lastPage,
 		tag += '			<div class="itemName">'+item.goodsFullNm+'</div>';
 		tag += '			<div class="itemName">'+item.goodsFullNm+'</div>';
 		if(appGb != 'Mob'){
 		if(appGb != 'Mob'){
 			tag += '			<p class="itemPrice">'+item.currPrice.addComma()
 			tag += '			<p class="itemPrice">'+item.currPrice.addComma()
-			tag += '				<span class="itemPrice_original">'+item.listPrice.addComma()+'</span>';
 			if(item.currPrice != item.listPrice){
 			if(item.currPrice != item.listPrice){
 				if(item.listPrice != 0){
 				if(item.listPrice != 0){
+					tag += '				<span class="itemPrice_original">'+item.listPrice.addComma()+'</span>';
 					tag += '				<span class="itemPercent">'+ Math.round((item.listPrice - item.currPrice) / (item.listPrice * 1.0) * 100) +'%</span>';
 					tag += '				<span class="itemPercent">'+ Math.round((item.listPrice - item.currPrice) / (item.listPrice * 1.0) * 100) +'%</span>';
 				}
 				}
 			}
 			}
 			tag += '			</p>';
 			tag += '			</p>';
 		}else{
 		}else{
 			tag += '			<p class="itemPrice">';
 			tag += '			<p class="itemPrice">';
-			tag += '				<span class="itemPrice_original">'+item.listPrice.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")+'</span>';
+			if(item.currPrice != item.listPrice){
+				if(item.listPrice != 0){
+					tag += '				<span class="itemPrice_original">'+item.listPrice.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")+'</span>';
+				}
+			}
 			tag += item.currPrice.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
 			tag += item.currPrice.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
 			if(item.currPrice != item.listPrice){
 			if(item.currPrice != item.listPrice){
 				if(item.listPrice != 0){
 				if(item.listPrice != 0){

+ 184 - 0
src/main/webapp/biz/search.js

@@ -0,0 +1,184 @@
+//**************** 검색 상품리스트  start **********************************
+var categoryGoodsList = [];
+var cnt = 1;
+var email = '';
+var fnCreateGoodsList = function(result, ithrCd, contentLoc, goodsUrl, lastPage, endRow, appGb) {
+	var tag = '';
+	var rank = 0;
+	if(lastPage!='1'){
+		rank = endRow;
+	}
+
+	$.each(result.dataList, function(idx, item) {
+		if (idx < 4) {
+			categoryGoodsList.push(item.goodsCd);
+		}
+
+		tag += '<div class="item_prod" id="'+item.goodsCd+item.mainColorCd+'">';
+		tag += '	<div class="item_state';
+		if(!gagajf.isNull(item.sizes)){
+			var sizeArr = item.sizes.split(",");
+			let soldOutCnt = 0;
+			for(let i=0; i<sizeArr.length; i++){
+				var sizeInfo = sizeArr[i].split(":");
+				var sizeVal = sizeInfo[0];
+				var soldOutYn = sizeInfo[1];
+				if(soldOutYn=='Y'){
+					soldOutCnt++;
+				}
+			}
+			if(sizeArr.length==soldOutCnt){
+				tag += ' soldout';
+			}
+		}
+		tag += '">';
+		tag += '		<button type="button" class="itemLike';
+		if(item.likeIt == 'likeit'){
+			tag += ' likeit';
+		}
+		tag += ' "';
+		if(appGb == 'Mob'){
+			tag += ' onClick="cfnMoPutWishList(this);" goodsCd=\''+item.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>';
+		}else{
+			tag += ' onClick="cfnPutWishList(this);" goodsCd=\''+item.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>';
+		}
+		tag += '<a href="javascript:void(0);" class="itemLink" onclick="fnClickGoodsCd(\''+item.goodsCd+'\',\''+item.mainColorCd+'\');">';
+		tag += '			<div class="itemPic">';
+		if(!gagajf.isNull(item.videos)){
+			var videoArr = item.videos.split(",");
+			var videoGb = '';
+			var videoUrl = '';
+			for(let i=0; i<videoArr.length; i++){
+				var videoInfo = videoArr[i].split(":");
+				videoGb = videoInfo[0];
+				videoUrl = videoInfo[1];
+			}
+			if(videoGb=='Y'){
+				tag += '<iframe id="pdThumbVideo" class="pd_mov" src="https://www.youtube.com/embed/'+videoUrl+'?autoplay=1&mute=1"></iframe>';
+				//tag += '<iframe id="pdThumbVideo" class="pd_mov" src="http://v.kr.kollus.com/164MyIiv?enable_initialize_focus=false&autoplay&mute&controls_activation=none" allow="fullscreen" allowFullScreen></iframe>';
+			}else{
+				tag += '<iframe id="pdThumbVideo" class="pd_mov" src="'+_kollusMediaUrl+'/'+videoUrl+'?enable_initialize_focus=false&autoplay&mute&controls_activation=none" allow="fullscreen" allowFullScreen></iframe>';
+			}
+		}
+		tag += '		<img class=" vLHTC pd_img" src="'+goodsUrl+'/'+item.sysImgNm+'" data-img="'+goodsUrl+'/'+item.sysImgNm2+'" onerror="noneImg(this)">';
+		if(!gagajf.isNull(item.sizes) && item.selfGoodsYn=='Y'){
+			var sizeArr = item.sizes.split(",");
+			var minSize;
+			var maxSize;
+			var sizeVal = '';
+			var soldOutYn = '';
+			tag +='<div class="itemOpt">';
+
+			if(sizeArr.length>5){
+				for(let i=0; i<sizeArr.length; i++){
+					var sizeInfo = sizeArr[i].split(":");
+					sizeVal = sizeInfo[0];
+					soldOutYn = sizeInfo[1];
+					if(i==0){
+						minSize = sizeVal;
+					}else if(i==sizeArr.length-1){
+						maxSize = sizeVal;
+					}
+				}
+				tag +='	<div class="exc">';
+				tag +='		<span>'+minSize+'</span> ~ <span>'+maxSize+'</span> 사이즈가 있습니다.';
+				tag +='	</div>';
+			}else{
+				tag += '<ul>';
+				for(let i=0; i<sizeArr.length; i++){
+					var sizeInfo = sizeArr[i].split(":");
+					sizeVal = sizeInfo[0];
+					soldOutYn = sizeInfo[1];
+					if(soldOutYn=='N'){
+						tag +='		<li>'+sizeVal+'</li>';
+					}else{
+						tag +='		<li class="none">'+sizeVal+'</li>';
+					}
+				}
+				tag += '</ul>';
+			}
+			tag += '			</div>';
+		}
+
+		tag += '			</div>';
+
+		tag += '			<p class="itemBrand">'+item.brandGroupNm+'</p>';
+		tag += '			<div class="itemName">'+item.goodsFullNm+'</div>';
+		if(appGb != 'Mob'){
+			tag += '			<p class="itemPrice">'+item.currPrice.addComma()
+			tag += '				<span class="itemPrice_original">'+item.listPrice.addComma()+'</span>';
+			if(item.currPrice != item.listPrice){
+				if(item.listPrice != 0){
+					tag += '				<span class="itemPercent">'+ Math.round((item.listPrice - item.currPrice) / (item.listPrice * 1.0) * 100) +'%</span>';
+				}
+			}
+			tag += '			</p>';
+		}else{
+			tag += '			<p class="itemPrice">';
+			tag += '				<span class="itemPrice_original">'+item.listPrice.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")+'</span>';
+			tag += item.currPrice.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
+			if(item.currPrice != item.listPrice){
+				if(item.listPrice != 0){
+					tag += '				<span class="itemPercent">'+ Math.round((item.listPrice - item.currPrice) / (item.listPrice * 1.0) * 100) +'%</span>';
+				}
+			}
+			tag += '			</p>';
+		}
+
+		tag += '			<div class="itemcolorchip">';
+		if(!gagajf.isNull(item.colorChips)){
+			var colorArr = item.colorChips.split(",");
+			var colorCd = '';
+			var rgbColor = '';
+			for(let i=0; i<colorArr.length; i++){
+				var colorInfo = colorArr[i].split(":");
+				colorCd = colorInfo[0];
+				rgbColor = colorInfo[1];
+				if(rgbColor=='#FFFFFF'){
+					tag += '	<span class="chip_color" style="background-color: '+rgbColor+';border:1px solid #aaa;" value="'+colorCd+'">'+colorCd+'</span>';
+				}else{
+					tag += '	<span class="chip_color" style="background-color: '+rgbColor+'" value="'+colorCd+'">'+colorCd+'</span>';
+				}
+			}
+		}
+		tag += '			</div>';
+
+		if(!gagajf.isNull(item.benefits)){
+			var iconArr = item.benefits.split(",");
+			var iconGb = '';
+			var iconNm = '';
+			tag += '	<p class="itemBadge">';
+			let arrCnt;
+			if(iconArr.length > 2){
+				arrCnt = 3;
+			}else{
+				arrCnt = iconArr.length;
+			}
+			for(let i=0; i<arrCnt; i++){
+				var iconInfo = iconArr[i].split(":");
+				iconGb = iconInfo[0];
+				iconNm = iconInfo[1];
+				tag += '	<span class="badge13" value="'+iconGb+'">'+iconNm+' </span>';
+			}
+			tag += '	</p>';
+		}
+
+		if(item.goodsTnm != null){
+			tag += '			<div class="itemComment">'+item.goodsTnm+'</div>';
+		}
+		tag += '		</a>';
+		tag += '	</div>';
+		tag += '</div>';
+	});
+
+	return tag;
+}
+
+// 인피니트 스크롤 초기화
+var fnCategoryGoodsInfiniteScrollInit = function(){
+	sessionStorage.removeItem(document.location.href);
+	//History 초기화
+	$("#listBox").html("");
+}
+
+//****************상품리스트  end **********************************

Некоторые файлы не были показаны из-за большого количества измененных файлов