Kaynağa Gözat

리뷰등록 임시커밋

sowon4187 5 yıl önce
ebeveyn
işleme
d387e15fb1

+ 9 - 0
src/main/java/com/style24/front/biz/dao/TsfReviewDao.java

@@ -78,6 +78,15 @@ public interface TsfReviewDao {
 	 * @since 2021. 3. 25
 	 */
 	Collection<Review> getCompleteReviewList(Review review);
+	
+	/**
+	 * 마이페이지 리뷰 등록
+	 * @param review
+	 * @return 
+	 * @author sowon
+	 * @since 2021. 3. 25
+	 */
+	void saveMypageReview(Review review);
 
 
 }

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

@@ -88,4 +88,19 @@ public class TsfReviewService {
 		return reviewDao.getCompleteReviewList(review);
 	}
 	
+	/**
+	 * 마이페이지 리뷰 등록
+	 * @param review
+	 * @return 
+	 * @author sowon
+	 * @since 2021. 3. 25
+	 */
+	public void saveMypageReview(Review review) {
+		review.setDispYn("Y");
+		review.setDelYn("N");
+		review.setRegNo(review.getCustNo());
+		review.setUpdNo(review.getCustNo());
+		reviewDao.saveMypageReview(review);
+	}
+	
 }

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

@@ -908,6 +908,24 @@ public class TsfMypageController extends TsfBaseController {
 
 		return mav;
 	}
+	
+	/**
+	 * 마이페이지 리뷰 저장
+	 * @param review
+	 * @return
+	 * @author sowon
+	 * @since 2021. 03. 25
+	 */
+	@PostMapping("/review/save")
+	@ResponseBody
+	public GagaMap mypageReviewSave(@RequestBody Review review) {
+
+		GagaMap result = new GagaMap();
+		reviewService.saveMypageReview(review);
+		result.set("status", "200");
+
+		return result;
+	}
 
 	/*신주승 시작*/
 

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

@@ -278,6 +278,7 @@
 
 	<!-- 마이페이지 작성가능한 리뷰 -->
 	<select id="getCompleteReviewList" parameterType="Review" resultType="Goods">
+		/* TsfReivew.getCompleteReviewList */
 		SELECT F.*
 			  , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG  WHERE GOODS_CD = F.GOODS_CD AND COLOR_CD = F.MAIN_COLOR_CD AND DEFAULT_IMG_YN = 'Y' ) AS SYS_IMG_NM
 		FROM
@@ -302,18 +303,22 @@
 			      ,G.GOODS_NM 
 			      ,G.MAIN_COLOR_CD
 			      ,B.BRAND_ENM 
+			      ,I.ITEMKIND_NM 
+			      ,I.ITEMKIND_CD 
+			      ,I.SIZE_GB 
 			      ,DATEDIFF( DATE_ADD(O.PAY_DT,INTERVAL 90 DAY),NOW()) AS REMAIN_DT -- 남은시간
 			FROM TB_ORDER O INNER JOIN TB_ORDER_DETAIL OD ON O.ORD_NO = OD.ORD_NO 
-								 			<!--  AND OD.ORD_DTL_STAT = 'G013_70' 구매 확정인것만 -->
+								 			 	AND OD.ORD_DTL_STAT = 'G013_70' -- 구매 확정인것만
 			                INNER JOIN TB_ORDER_DETAIL_ITEM ODI ON OD.ORD_DTL_NO = ODI.ORD_DTL_NO 
 			                  					 AND OD.ORD_DTL_NO = ODI.ORD_DTL_NO
-			                  	              <!--    AND ODI.ORD_DTL_STAT = 'G013_70' -->
+			                  	                 AND ODI.ORD_DTL_STAT = 'G013_70'
 			                INNER JOIN TB_GOODS G ON G.GOODS_CD = OD.GOODS_CD 
 			                INNER JOIN TB_BRAND B ON B.BRAND_CD = G.BRAND_CD
+			                LEFT JOIN TB_ITEMKIND I ON G.ITEMKIND_CD = I.ITEMKIND_CD 
 			WHERE 1=1
 				AND O.PAY_DT <![CDATA[>]]>  DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL -90 DAY), '%Y%M%D%H%I%S') <!--  60 일이내것만 -->
 				AND O.ORD_NO NOT IN (SELECT R.ORD_NO FROM TB_REVIEW R WHERE R.DEL_YN = 'N')
-				AND O.CUST_NO = 100011
+				AND O.CUST_NO = #{custNo}
 				AND O.DISP_YN = 'Y'
 				AND O.SITE_CD = #{siteCd}
 				<if test="ordNo!=null and ordNo != ''">
@@ -351,6 +356,7 @@
 	
 	<!-- 마이페이지 작성가능한 리뷰 -->
 	<select id="getCompleteReviewCount" parameterType="Review" resultType="int">
+		/* TsfReivew.getCompleteReviewCount */
 		SELECT  COUNT(*) AS CNT 
 		FROM
 		(
@@ -376,16 +382,16 @@
 			      ,B.BRAND_ENM 
 			      ,DATEDIFF( DATE_ADD(O.PAY_DT,INTERVAL 90 DAY),NOW()) AS DT -- 남은시간
 			FROM TB_ORDER O INNER JOIN TB_ORDER_DETAIL OD ON O.ORD_NO = OD.ORD_NO 
-								 			<!--  AND OD.ORD_DTL_STAT = 'G013_70' 구매 확정인것만 -->
+								 			 AND OD.ORD_DTL_STAT = 'G013_70'--  구매 확정인것만
 			                INNER JOIN TB_ORDER_DETAIL_ITEM ODI ON OD.ORD_DTL_NO = ODI.ORD_DTL_NO 
 			                  					 AND OD.ORD_DTL_NO = ODI.ORD_DTL_NO
-			                  	              <!--    AND ODI.ORD_DTL_STAT = 'G013_70' -->
+			                  	                 AND ODI.ORD_DTL_STAT = 'G013_70'
 			                INNER JOIN TB_GOODS G ON G.GOODS_CD = OD.GOODS_CD 
 			                INNER JOIN TB_BRAND B ON B.BRAND_CD = G.BRAND_CD
 			WHERE 1=1
 				AND O.PAY_DT <![CDATA[>]]>  DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL -90 DAY), '%Y%M%D%H%I%S') <!--  60 일이내것만 -->
 				AND O.ORD_NO NOT IN (SELECT R.ORD_NO FROM TB_REVIEW R WHERE R.DEL_YN = 'N')
-				AND O.CUST_NO = 100011
+				AND O.CUST_NO = #{custNo}
 				AND O.DISP_YN = 'Y'
 				AND O.SITE_CD = #{siteCd}
 			GROUP BY O.ORD_NO 
@@ -411,4 +417,69 @@
 		)F
 		ORDER BY F.PAY_DT DESC
 	</select>
+	
+	<select id="saveMypageReview" parameterType="Review" resultType="Review">
+		/* TsfReivew.saveMypageReview */
+		INSERT INTO TB_REVIEW (
+						GOODS_CD
+					  , CUST_NO
+					  , ORD_NO
+					  , ORD_DTL_NO
+					  , REVIEW_TITLE
+					  , REVIEW_CONTENT
+					  , SCORE
+					  , HEIGHT
+					  , WEIGHT
+					  , SCORE_SIZE
+					  , SCORE_COLOR
+					  , SCORE_FIT
+					  , SCORE_THICK
+					  , SCORE_WEIGHT
+					  , SCORE_BALL
+					  , DISP_YN
+					  , DEL_YN
+					  , REG_NO
+					  , REG_DT
+					  , UPD_NO
+					  , UPD_DT
+					)
+					VALUES (
+					     	#{goodsCd}
+						  , #{custNo}
+						  , #{ordNo}
+						  , #{ordDtlNo}
+						  , #{reviewTitle}
+						  , #{reviewContent}
+						  , #{score}
+						  , #{height}
+						  , #{weight}
+						  , #{scoreSize}
+						  , #{scoreColor}
+						  , #{scoreFit}
+						  , #{scoreThick}
+						  , #{scoreWeight}
+						  , #{scoreBall}
+						  , #{dispYn}
+						  , #{delYn}
+						  , #{regNo}
+						  , now()
+						  , #{updNo}
+						  , now()
+					)
+					ON DUPLICATE KEY UPDATE
+					
+			                REVIEW_TITLE   =  #{reviewTitle}
+			               ,REVIEW_CONTENT =  #{reviewContent} 
+			               ,SCORE          =  #{score}           
+			               ,HEIGHT         =  #{height}          
+			               ,WEIGHT         =  #{weight}          
+			               ,SCORE_SIZE     =  #{scoreSize}       
+			               ,SCORE_COLOR    =  #{scoreColor}      
+			               ,SCORE_FIT      =  #{scoreFit}        
+			               ,SCORE_THICK    =  #{scoreThick}      
+			               ,SCORE_WEIGHT   =  #{scoreWeight}     
+			               ,SCORE_BALL     =  #{scoreBall}       
+			               ,UPD_DT         =  now()     
+			                           
+	</select>
 </mapper>

+ 226 - 39
src/main/webapp/WEB-INF/views/web/mypage/MypageReviewCreateFormWeb.html

@@ -42,13 +42,17 @@
 									<li>리뷰 작성시 욕설, 비방, 선정적인 내용등이 있을 경우 통보 없이 관리자에 의해 삭제 될 수 있습니다.</li>
 								</ul>
 							</div>
-							
-							<form class="form_wrap">
+							<th:block th:each="review, status : ${completeReviewList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
+							<form class="form_wrap" id="reviewForm" th:action="@{'/mypage/review/save'}">
+								<input type="hidden" name="ordNo" th:value="${review.ordNo}">
+								<input type="hidden" name="ordDtlNo" th:value="${review.ordDtlNo}">
+								<input type="hidden" name="goodsCd" th:value="${review.goodsCd}">
+								<input type="hidden" name="custNo" th:value="${review.custNo}">
 								<h4 class="subH3">리뷰쓰기</h4>
 								<div class="part_goods">
 									<div class="goods_cont">
 										<!-- 주문상품 -->
-										<th:block th:each="review, status : ${completeReviewList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
+										
 										<div class="goods_info">
 											<div class="order_desc">
 												<div class="goods_box">
@@ -78,7 +82,7 @@
 												</div>
 											</div>
 										</div>
-										</th:block>
+										
 										<!-- //주문상품 -->
 									</div>
 								</div>			
@@ -95,12 +99,13 @@
 												별점
 											</th>
 											<td>
-												<div class="input_starscore">
-													<button type="button"></button>
-													<button type="button"></button>
-													<button type="button"></button>
-													<button type="button"></button>
-													<button type="button"></button>
+												<div class="input_starscore" id="star">
+													<input type="hidden" id="score" name="score">
+													<button type="button" id="starBtn"></button>
+													<button type="button" id="starBtn"></button>
+													<button type="button" id="starBtn"></button>
+													<button type="button" id="starBtn"></button>
+													<button type="button" id="starBtn"></button>
 												</div>
 											</td>
 										</tr>
@@ -122,7 +127,7 @@
 												<div class="input_my_physical">
 													<div class="form_field">
 														<div class="input_wrap">
-															<input type="text" class="form_control" placeholder="숫자만 입력해 주세요.">
+															<input type="text" class="form_control" placeholder="숫자만 입력해 주세요." data-valid-type="numeric" maxlength="3" id="height" name="height">
 															<span class="unit">cm</span>
 														</div>
 													</div>
@@ -137,8 +142,8 @@
 												<div class="input_my_physical">
 													<div class="form_field">
 														<div class="input_wrap">
-															<input type="text" class="form_control" placeholder="숫자만 입력해 주세요.">
-															<span class="unit">cm</span>
+															<input type="text" class="form_control" placeholder="숫자만 입력해 주세요." data-valid-type="numeric" maxlength="3" id="weight" name="weight">
+															<span class="unit">kg</span>
 														</div>
 													</div>
 												</div>
@@ -147,13 +152,15 @@
 									</table>
 								</div>
 								
+								<!-- <th:block th:if="${review.sizeGb == 'T' or review.sizeGb == 'B' or review.sizeGb == 'S'}"> --> 
 								<h4 class="subH3">상품 평가</h4>
 								<div class="tbl type1">
 									<table>
 										<colgroup>
 											<col width="170">
 											<col width="*">
-										</colgroup>   
+										</colgroup>  
+										<!-- <th:block th:if="${review.sizeGb == 'T' or review.sizeGb == 'B' or review.sizeGb == 'S'}"> --> 
 										<tr>
 											<th>
 												사이즈
@@ -162,15 +169,15 @@
 												<div class="input_simple_review">
 													<div class="form_field">
 														<div>
-															<input type="radio" name="rdi_review_size" id="rdi_review_size1" value="" checked="">
+															<input type="radio" name="scoreSize" id="rdi_review_size1" value="1">
 															<label for="rdi_review_size1"><span>작음</span></label>
 														</div>
 														<div>
-															<input type="radio" name="rdi_review_size" id="rdi_review_size2" value="">
+															<input type="radio" name="scoreSize" id="rdi_review_size2" value="2">
 															<label for="rdi_review_size2"><span>딱맞음</span></label>
 														</div>
 														<div>
-															<input type="radio" name="rdi_review_size" id="rdi_review_size3" value="">
+															<input type="radio" name="scoreSize" id="rdi_review_size3" value="3">
 															<label for="rdi_review_size3"><span>큼</span></label>
 														</div>
 													</div>
@@ -185,21 +192,23 @@
 												<div class="input_simple_review">
 													<div class="form_field">
 														<div>
-															<input type="radio" name="rdi_review_color" id="rdi_review_color1" value="" checked="">
+															<input type="radio" name="scoreColor" id="rdi_review_color1" value="1">
 															<label for="rdi_review_color1"><span>밝음</span></label>
 														</div>
 														<div>
-															<input type="radio" name="rdi_review_color" id="rdi_review_color2" value="">
+															<input type="radio" name="scoreColor" id="rdi_review_color2" value="2">
 															<label for="rdi_review_color2"><span>똑같음</span></label>
 														</div>
 														<div>
-															<input type="radio" name="rdi_review_color" id="rdi_review_color3" value="">
-															<label for="rdi_review_color3"><span></span></label>
+															<input type="radio" name="scoreColor" id="rdi_review_color3" value="3">
+															<label for="rdi_review_color3"><span>어두움</span></label>
 														</div>
 													</div>
 												</div>
 											</td>
 										</tr>
+										<!-- </th:block>
+										<th:block th:if="${review.sizeGb == 'T' or review.sizeGb == 'B'}"> --> 
 										<tr>
 											<th>
@@ -208,15 +217,15 @@
 												<div class="input_simple_review">
 													<div class="form_field">
 														<div>
-															<input type="radio" name="rdi_review_fit" id="rdi_review_fit1" value="" checked="">
+															<input type="radio" name="scoreFit" id="rdi_review_fit1" value="1">
 															<label for="rdi_review_fit1"><span>슬림</span></label>
 														</div>
 														<div>
-															<input type="radio" name="rdi_review_fit" id="rdi_review_fit2" value="">
+															<input type="radio" name="scoreFit" id="rdi_review_fit2" value="2">
 															<label for="rdi_review_fit2"><span>레귤러</span></label>
 														</div>
 														<div>
-															<input type="radio" name="rdi_review_fit" id="rdi_review_fit3" value="">
+															<input type="radio" name="scoreFit" id="rdi_review_fit3" value="3">
 															<label for="rdi_review_fit3"><span>오버</span></label>
 														</div>
 													</div>
@@ -231,21 +240,23 @@
 												<div class="input_simple_review">
 													<div class="form_field">
 														<div>
-															<input type="radio" name="rdi_review_thick" id="rdi_review_thick1" value="" checked="">
+															<input type="radio" name="scoreThick" id="rdi_review_thick1" value="1">
 															<label for="rdi_review_thick1"><span>얇음</span></label>
 														</div>
 														<div>
-															<input type="radio" name="rdi_review_thick" id="rdi_review_thick2" value="">
+															<input type="radio" name="scoreThick" id="rdi_review_thick2" value="2">
 															<label for="rdi_review_thick2"><span>적당함</span></label>
 														</div>
 														<div>
-															<input type="radio" name="rdi_review_thick" id="rdi_review_thick3" value="">
+															<input type="radio" name="scoreThick" id="rdi_review_thick3" value="3">
 															<label for="rdi_review_thick3"><span>도톰함</span></label>
 														</div>
 													</div>
 												</div>
 											</td>
 										</tr>
+										<!-- </th:block>
+										<th:block th:if="${review.sizeGb == 'S'}">  -->
 										<tr>
 											<th>
 												무게감
@@ -254,15 +265,15 @@
 												<div class="input_simple_review">
 													<div class="form_field">
 														<div>
-															<input type="radio" name="rdi_review_weight" id="rdi_review_weight1" value="" checked="">
+															<input type="radio" name="scoreWeight" id="rdi_review_weight1" value="1">
 															<label for="rdi_review_weight1"><span>가벼움</span></label>
 														</div>
 														<div>
-															<input type="radio" name="rdi_review_weight" id="rdi_review_weight2" value="">
+															<input type="radio" name="scoreWeight" id="rdi_review_weight2" value="2">
 															<label for="rdi_review_weight2"><span>적당함</span></label>
 														</div>
 														<div>
-															<input type="radio" name="rdi_review_weight" id="rdi_review_weight3" value="">
+															<input type="radio" name="scoreWeight" id="rdi_review_weight3" value="3">
 															<label for="rdi_review_weight3"><span>무거움</span></label>
 														</div>
 													</div>
@@ -277,24 +288,25 @@
 												<div class="input_simple_review">
 													<div class="form_field">
 														<div>
-															<input type="radio" name="rdi_review_width" id="rdi_review_width1" value="" checked="">
+															<input type="radio" name="scoreBall" id="rdi_review_width1" value="1">
 															<label for="rdi_review_width1"><span>작음</span></label>
 														</div>
 														<div>
-															<input type="radio" name="rdi_review_width" id="rdi_review_width2" value="">
+															<input type="radio" name="scoreBall" id="rdi_review_width2" value="2">
 															<label for="rdi_review_width2"><span>딱맞음</span></label>
 														</div>
 														<div>
-															<input type="radio" name="rdi_review_width" id="rdi_review_width3" value="">
+															<input type="radio" name="scoreBall" id="rdi_review_width3" value="3">
 															<label for="rdi_review_width3"><span>큼</span></label>
 														</div>
 													</div>
 												</div>
 											</td>
 										</tr>
+										<!-- </th:block> -->
 									</table>
 								</div>
-
+								<!-- </th:block> -->
 								<h4 class="subH3">고객님의 리뷰가 다른 고객들에게 도움이 될 수 있어요!</h4>
 								<div class="tbl type1">
 									<table>
@@ -310,7 +322,7 @@
 												<div class="input_txt_review">
 													<div class="form_field">
 														<div class="input_wrap">
-															<textarea class="doc_review" name="" id="" cols="30" rows="10" placeholder="·&nbsp;리뷰 내용은 최소 10자 이상 입력해 주세요.&#13;&#10;·&nbsp;상품과 무관하거나 스팸, 음란, 불법적인 내용의 리뷰는 통보 없이 삭제되며, 지급한 포인트는 회수 될 수 있습니다.&#13;&#10;·&nbsp;리뷰 등록 후 관리자 승인이 필요한 경우 바로 노출이 되지 않을 수 있습니다." style="resize: none;"></textarea>
+															<textarea class="doc_review" name="reviewContent" id="reviewContent" cols="30" rows="10" placeholder="·&nbsp;리뷰 내용은 최소 10자 이상 입력해 주세요.&#13;&#10;·&nbsp;상품과 무관하거나 스팸, 음란, 불법적인 내용의 리뷰는 통보 없이 삭제되며, 지급한 포인트는 회수 될 수 있습니다.&#13;&#10;·&nbsp;리뷰 등록 후 관리자 승인이 필요한 경우 바로 노출이 되지 않을 수 있습니다." style="resize: none;"></textarea>
 															<p class="txt_cnt"><span id="review_cnt" class="c_primary">0</span>/500</p>			
 														</div> 
 													</div>
@@ -329,6 +341,27 @@
 															<div class="imgUpload">
 																<label for="fileAdd" class="fileAdd">첫번째업로드</label>
 																<input type="file" id="fileAdd" name="files[]">
+																<input type="hidden" name="file1OrgFileNm"/>
+																<input type="hidden" name="file1SysFileNm"/>
+																<input type="hidden" name="file2OrgFileNm"/>
+																<input type="hidden" name="file2SysFileNm"/>
+																<input type="hidden" name="file3OrgFileNm"/>
+																<input type="hidden" name="file3SysFileNm"/>
+																<input type="hidden" name="file4OrgFileNm"/>
+																<input type="hidden" name="file4SysFileNm"/>
+																<input type="hidden" name="file5OrgFileNm"/>
+																<input type="hidden" name="file5SysFileNm"/>
+																<input type="hidden" name="file6OrgFileNm"/>
+																<input type="hidden" name="file6SysFileNm"/>
+																<input type="hidden" name="file7OrgFileNm"/>
+																<input type="hidden" name="file7SysFileNm"/>
+																<input type="hidden" name="file8OrgFileNm"/>
+																<input type="hidden" name="file8SysFileNm"/>
+																<input type="hidden" name="file9OrgFileNm"/>
+																<input type="hidden" name="file9SysFileNm"/>
+																<input type="hidden" name="file10OrgFileNm"/>
+																<input type="hidden" name="file10SysFileNm"/>
+																
 															</div>
 														</div>
 														<!-- //이미지첨부 -->
@@ -347,10 +380,11 @@
 								</div>							
 
 								<div class="btn_footer_area">
-									<button type="button" class="btn btn_default btn_md"><span>취소</span></button>
-									<button type="button" id="btn_review_registration" class="btn btn_dark btn_md"><span>리뷰 등록</span></button>
+									<button type="button" class="btn btn_default btn_md" onclick="reviewCancel()"><span>취소</span></button>
+									<button type="button" id="btn_review_registration" class="btn btn_dark btn_md" onclick="reviewCreate()"><span>리뷰 등록</span></button>
 								</div>		
-							</form>							
+							</form>	
+							</th:block>						
 						</div>
 					</div>
 					<!-- // CONT-BODY -->					
@@ -359,8 +393,161 @@
 
 <script src="/ux/plugins/gaga/gaga.paging.js"></script>
 <script th:inline="javascript">
-$(document).ready(function() {
+let reviewList = [[${completeReviewList}]];
+// 별점 class="on"
+var $starEls = $('#star button#starBtn');
+var rate = 0;
+
+$starEls.each(function (index, el) {
+    $(el).on('click', function () {
+        rating(index);
+        $("#score").attr("value",index+1);
+    });
+});
+
+function rating(score) {
+    $starEls.each(function (i, el) {
+        if (i <= score) {
+            $(el).addClass('on');
+        } else {
+            $(el).removeClass('on');
+        }
+    });
+
+    rate = score + 1;
+}
 
+// 리뷰  취소
+var reviewCancel = function() {
+	
+	mcxDialog.confirm('취소하시겠습니까"?', {
+        cancelBtnText: "취소",
+        sureBtnText: "확인",
+        sureBtnClick: function(){
+        	cfnGoToPage(_PAGE_MYPAGE_REVIEW);
+        }
+    });
+}
+
+// 리뷰 등록
+var reviewCreate = function () {
+	
+	if($("#score").val()=='' || $("#score").val()==null){
+		mcxDialog.alert('별점을 선택하세요.');
+		return;
+	}
+	
+	if($("#reviewForm input[name=height]").val() == '' || $("#reviewForm input[name=height]").val() == null){
+		mcxDialog.alert('키를 입력하세요.');
+		return;
+	}
+	
+	if($("#reviewForm input[name=weight]").val() == '' || $("#reviewForm input[name=weight]").val() == null){
+		mcxDialog.alert('몸무게를 입력하세요.');
+		return;
+	}
+	
+	
+	if(reviewList[0].sizeGb == 'T' || reviewList[0].sizeGb == 'B' || reviewList[0].sizeGb == 'S'){
+		if($('#reviewForm input:radio[name=scoreSize]').prop('checked') == false){
+			mcxDialog.alert('상품 사이즈를 평가해주세요.');
+			return;
+		}
+		
+		if($('#reviewForm input:radio[name=scoreColor]').prop('checked') == false){
+			mcxDialog.alert('상품 컬러를 평가해주세요.');
+			return;
+		}
+	}
+	
+	if(reviewList[0].sizeGb == 'T' || reviewList[0].sizeGb == 'B'){
+		if($('#reviewForm input:radio[name=scoreFit]').prop('checked') == false){
+			mcxDialog.alert('상품 핏을 평가해주세요.');
+			return;
+		}
+		if($('#reviewForm input:radio[name=scoreThick]').prop('checked') == false){
+			mcxDialog.alert('상품 두께감을 평가해주세요.');
+			return;
+		}	
+	}
+	
+	if(reviewList[0].sizeGb == 'S' ){
+		if($('#reviewForm input:radio[name=scoreWeight]').prop('checked') == false){
+			mcxDialog.alert('상품 무게감을 평가해주세요.');
+			return;
+		}
+		
+		if($('#reviewForm input:radio[name=scoreBall]').prop('checked') == false){
+			mcxDialog.alert('상품 볼넓이를 평가해주세요.');
+			return;
+		}
+	}
+
+	if($('#reviewContent').val().length<10){
+		mcxDialog.alert("리뷰 내용을 10자 이상 입력해주세요.");
+		return;
+	}
+	
+	mcxDialog.confirm('리뷰를 등록하시겠습니까"?', {
+        cancelBtnText: "취소",
+        sureBtnText: "확인",
+        sureBtnClick: function(){
+        	gagajf.ajaxFormSubmit($('#reviewForm').prop('action'), '#reviewForm', fnSaveCallback);
+        }
+    });
+	
+}
+var fnSaveCallback = function (result) {
+	if(result.status == "200"){
+		mcxDialog.alert("상품 리뷰를 등록하였습니다.");
+		//포인트 예정금액 고지해야함
+		cfnGoToPage(_PAGE_MYPAGE_REVIEW);
+	}
+}
+
+
+// 글자 카운팅
+$('#reviewContent').keyup(function (e){
+    var content = $(this).val();
+    $('.txt_cnt').html('<span id="review_cnt" class="c_primary">'+content.length+'</span>/500');    //글자수 실시간 카운팅
+    
+
+    if (content.length > 500){
+    	mcxDialog.alert("최대 500자까지 입력 가능합니다.");
+        $(this).val(content.substring(0, 500));
+        $('.txt_cnt').html('<span id="review_cnt" class="c_primary">500</span>/500');
+    }
+});
+
+$('#fileAdd').on('change', function() { fnChooseFile(this); });
+
+var fnChooseFile = function(obj) {
+	// multiple 속성이 있으면 files에는 다수의 객체가 할당됨
+	var file = obj.files[0];
+	
+	if (!gagajf.isNull(file.size) && Number(file.size) > 10 * 1000000) {
+		mcxDialog.alertC('이미지는 최대 10MB 이하 파일만 가능합니다.', {
+			sureBtnText: "확인",
+			sureBtnClick: function() {
+				$(obj).parent('.imgUpload').find('.removes').trigger('click');
+			}
+		});
+		return false;
+	}
+	
+	// 파일 업로드
+	gagajf.ajaxFileUpload('/common/file/upload?subDir=/review'
+			, file
+			, function(result) {
+				// 업로드한 파일명 설정
+				$('input[name=' + obj.name + 'OrgFileNm]').val(result.oldFileName);
+				$('input[name=' + obj.name + 'SysFileNm]').val(result.newFileName);
+			}
+	);
+}
+
+$(document).ready(function() {
+	
 	// 마이페이지 LNB 설정
 	fnSetMypageLnbList(7);
 

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

@@ -57,15 +57,16 @@
 			
 								<!-- //주문번호 기준 상품 내역 -->	
 								<!-- 데이터 없을 시 -->
-								<div class="nodata" style="display:none;">
+																											
+							</div>
+									<div class="nodata">
 									<div class="txt_box">
 										<p>
 											작성 가능한 리뷰가 없습니다.<br>
 										</p>
 									</div>
 								</div>
-								<!-- //데이터 없을 시 -->																							
-							</div>
+								<!-- //데이터 없을 시 -->		
 						</div>
 						<div class="sec_foot">
 							<div class="ui_row">
@@ -120,7 +121,7 @@
 	
 	// 주문 목록 조회 콜백
 	var fnSearchCallback = function(result) {
-		$('.nodata').hide();
+		$('.nodata').css("display","none");
 		let imageUrl = [[${@environment.getProperty('upload.goods.view')}]];
 		$('#completeList').html('');
 		if (result.dataList != null && result.dataList.length > 0) {
@@ -167,7 +168,7 @@
 				$('#completeList').append(html);
 			})
 		}else{
-			$('.nodata').show();
+			$('.nodata').css("display","block");
 		}
 
 		// Create pagination