334 lines
17 KiB
Plaintext
334 lines
17 KiB
Plaintext
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
|
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
|
|
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
|
|
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
|
|
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
|
|
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
|
|
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
|
|
<!DOCTYPE html>
|
|
<script>
|
|
$(document).ready(function(){
|
|
let placeholder = $("#cn").attr("placeholder");
|
|
placeholder = placeholder.replace(/<br\s*\/?>/gi, '\n');
|
|
$("#cn").attr("placeholder",placeholder);
|
|
$("#cn").val($("#cn").val().trimStart());
|
|
});
|
|
</script>
|
|
<html>
|
|
<c:set value = "${resultMap.regusrInfo}" var = "regusrInfo"/>
|
|
<c:set value = "${resultMap.bbsInfo}" var = "bbsInfo"/>
|
|
<c:set value = "${resultMap.mlgInfo}" var = "mlgInfo"/>
|
|
<c:set value = "${resultMap.qesitmList.qesitmList}" var = "qesitmList"/>
|
|
<c:set value = "${resultMap.qesitmList.itmCnList}" var = "itmCnList"/>
|
|
<c:set value = "${resultMap.rvwQesitmList.starQesitmList}" var = "starQesitmList"/>
|
|
<c:set value = "${resultMap.rvwQesitmList.starItmCnList}" var = "starItmCnList"/>
|
|
<c:set value = "${resultMap.itmList}" var = "itmList"/>
|
|
<c:set value = "${resultMap.rvwGoodsInfo}" var = "rvwGoodsInfo"/>
|
|
<!-- 리뷰작성 -->
|
|
<div id="orderReview-pop" class="modal default" style="max-width: 640px;">
|
|
<div class="modal-header">
|
|
<div class="modal-header__title">리뷰 작성</div>
|
|
</div>
|
|
<div class="modal-content">
|
|
<form id="bbsRegForm">
|
|
<div class="orderReviewPop">
|
|
<c:if test = "${mlgInfo.goodsRvwMlgPymntAt eq 'Y'}">
|
|
<div class="infoBox">
|
|
<p class="textInfo">
|
|
<%--마일리지 안내--%>
|
|
<i class="icon icon_textInfo--sm"></i>
|
|
텍스트 리뷰 <fmt:formatNumber value="${mlgInfo.gnrlRvwMlgAccmlmnyAmt}" pattern="#,###"/>원/
|
|
포토 리뷰 <fmt:formatNumber value="${mlgInfo.photoRvwMlgAccmlmnyAmt}" pattern="#,###"/>원
|
|
<c:if test="${mlgInfo.monthBbsExpsrAt eq 'Y' || mlgInfo.goodsRvwMlgPymntMtAt eq 'Y'}"><%--한달리뷰 사용여부에 따른 분기처리--%>
|
|
/한달 리뷰 <fmt:formatNumber value="${mlgInfo.monthPhotoRvwMlgAccmlmnyAmt}" pattern="#,###"/>원
|
|
</c:if>
|
|
적립<br>
|
|
<c:if test="${mlgInfo.aditPymntMlgAccmlmnyAmt > 0}">
|
|
텍스트 리뷰 / 포토 리뷰 작성시 추가 마일리지 <fmt:formatNumber value="${mlgInfo.aditPymntMlgAccmlmnyAmt}" pattern="#,###"/>
|
|
(<c:out value="${mlgInfo.aditMlgPymntBgnDe}"/>~<c:out value="${mlgInfo.aditMlgPymntEndDe}"/>)<br>
|
|
</c:if>
|
|
<c:if test="${mlgInfo.monthAditPymntMlgAccmlmnyAmt > 0}">
|
|
한달 리뷰 작성시 추가 마일리지 <fmt:formatNumber value="${mlgInfo.monthAditPymntMlgAccmlmnyAmt}" pattern="#,###"/><br>
|
|
(<c:out value="${mlgInfo.monthAditMlgPymntBgnDe}"/>~<c:out value="${mlgInfo.monthAditMlgPymntEndDe}"/>)
|
|
</c:if>
|
|
</p>
|
|
</div>
|
|
</c:if>
|
|
<div class="orderReviewPop__product">
|
|
<div class="cartItem">
|
|
<div class="cartItem__image">
|
|
<div><spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.cdnurl')" var="cdnurl"/>
|
|
<img src="<c:out value = '${cdnurl}${rvwGoodsInfo.img}'/>" alt="상품이미지" id = "goodsImg" onerror="this.src='/pc/images/image_placeholder.png'">
|
|
</div>
|
|
</div>
|
|
<div class="cartItem__productInfo">
|
|
<div class="cartItem__productTitle"><c:out value = '${rvwGoodsInfo.goodsNm}'/></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<input type = "hidden" name = "bbsId" value = "${bbsInfo.bbsId}" id = "bbsId"/>
|
|
<input type = "hidden" name = "bbsTyCd" value = "${bbsInfo.bbsTyCd}" id = "bbsTyCd"/>
|
|
<input type = "hidden" name = "sopmalCd" value = "${bbsInfo.sopmalCd}" id = "sopmalCd"/>
|
|
<input type = "hidden" name = "regusrDvCd" value = "01"/>
|
|
<input type = "hidden" name = "ordrGoodsOptnInnb" value = "<c:out value = '${rvwGoodsInfo.ordrGoodsOptnInnb}'/>"/>
|
|
<input type = "hidden" name = "filExtAt" id = "filExtAt"/>
|
|
<input type = "hidden" name = "ordrInnb" id = "ordrInnb" value = "<c:out value = '${rvwGoodsInfo.ordrInnb}'/>"/>
|
|
<input type = "hidden" name = "goodsInnb" value = "<c:out value = '${rvwGoodsInfo.goodsInnb}'/>"/>
|
|
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.extensions.images')" var="acceptFileExtensions"/>
|
|
<input type = "hidden" name = "acceptFileExtensions" id = "acceptFileExtensions" value = "${acceptFileExtensions}"/>
|
|
<input type = "hidden" name = "goodsInnbArr[]" value = "<c:out value = '${rvwGoodsInfo.goodsInnb}'/>"/>
|
|
<c:if test = "${not empty starQesitmList}">
|
|
<c:forEach items="${starQesitmList}" var="starQesitm" varStatus="status">
|
|
<c:choose>
|
|
<c:when test="${starQesitm.scoreIndictMthCd eq '01'}">
|
|
<div class="reviewRating">
|
|
<span class="reviewRating__title"><c:out value="${starQesitm.qesitmNm}"/></span>
|
|
<div class="reviewRating__inner">
|
|
<input type="hidden" name="rvwQesitmEssntlAtArr[]" value="${starQesitm.qesitmEssntlAt}"
|
|
class="essntlChk">
|
|
<input type="hidden" name="rvwQesitmNmArr[]" value="${starQesitm.qesitmNm}">
|
|
<input type="hidden" name="rvwQesitmAtArr[]" class="rvwAnswRadioAt qesitmAtChk" value="N">
|
|
<input type="hidden" name="rvwQesitmInnbArr[]" class="rvwAnswRadio"
|
|
value="${starQesitm.qesitmInnb}" disabled>
|
|
<input type="hidden" name="evlScoreArr[]" class="rvwAnswRadio" disabled>
|
|
<input type="hidden" name="rvwItmInnbArr[]" class="rvwAnswRadio" disabled>
|
|
<c:forEach items="${resultMap.starItmList}" var="starItmCn" varStatus="status">
|
|
<c:if test="${starItmCn.qesitmInnb eq starQesitm.qesitmInnb}">
|
|
<input type="radio"
|
|
name="itmInnbArr<c:out value = '${starItmCn.qesitmInnb}'/>[]"
|
|
id="rvwCn<c:out value = '${status.index}'/>"
|
|
class="rvwAnswRadioC"
|
|
value="<c:out value='${starItmCn.itmInnb}'/>"
|
|
qesitm-innb='<c:out value = '${starItmCn.qesitmInnb}'/>'
|
|
itm-cn="<c:out value='${starItmCn.itmCn}'/>">
|
|
<label for="rvwCn${status.index}"></label>
|
|
</c:if>
|
|
</c:forEach>
|
|
</div>
|
|
</div>
|
|
</c:when>
|
|
<c:when test="${starQesitm.scoreIndictMthCd eq '02'}">
|
|
<div class="reviewRating">
|
|
<div class="reviewRating__title"><c:out value="${starQesitm.qesitmNm}"/></div>
|
|
<div class="custom-radio-container custom-radio-container--reviewRating">
|
|
<div class="custom-radio is-medium">
|
|
<input type="hidden" name="rvwQesitmEssntlAtArr[]" value="${starQesitm.qesitmEssntlAt}"
|
|
class="essntlChk">
|
|
<input type="hidden" name="rvwQesitmNmArr[]" value="${starQesitm.qesitmNm}">
|
|
<input type="hidden" name="rvwQesitmAtArr[]" class="rvwAnswRadioAt qesitmAtChk" value="N">
|
|
<input type="hidden" name="rvwQesitmInnbArr[]" class="rvwAnswRadio"
|
|
value="${starQesitm.qesitmInnb}" disabled>
|
|
<input type="hidden" name="evlScoreArr[]" class="rvwAnswRadio" disabled>
|
|
<input type="hidden" name="rvwItmInnbArr[]" class="rvwAnswRadio" disabled>
|
|
<c:forEach items="${starItmCnList}" var="starItmCn" varStatus="status">
|
|
<c:if test="${starItmCn.qesitmInnb eq starQesitm.qesitmInnb}">
|
|
<input type="radio"
|
|
name="itmInnbArr<c:out value = '${starItmCn.qesitmInnb}'/>[]"
|
|
id="rvwCn<c:out value = '${starItmCn.itmInnb}'/>"
|
|
class="rvwAnswRadioC"
|
|
value="<c:out value='${starItmCn.itmInnb}'/>"
|
|
qesitm-innb='<c:out value = '${starItmCn.qesitmInnb}'/>'
|
|
itm-cn="<c:out value='${starItmCn.itmCn}'/>">
|
|
<label for="rvwCn${starItmCn.itmInnb}"><c:out
|
|
value='${starItmCn.itmCn}'/>점 </label>
|
|
</c:if>
|
|
</c:forEach>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</c:when>
|
|
</c:choose>
|
|
</c:forEach>
|
|
</c:if>
|
|
<c:if test = "${not empty qesitmList}">
|
|
<div class="reviewRadio">
|
|
<c:forEach items="${ qesitmList }" var="qesitmList" varStatus="status">
|
|
<c:if test="${ qesitmList.itmTyCd eq '01'}">
|
|
<div class="reviewRadio__item">
|
|
<div class="reviewRadio__title"><c:out value="${ qesitmList.qesitmNm }"/></div>
|
|
<div class="custom-radio-container">
|
|
<input type="hidden" name="qesitmEssntlAtArr[]" value="${ qesitmList.qesitmEssntlAt}" class = "essntlChk">
|
|
<input type="hidden" name="qesitmNmArr[]" value = "${ qesitmList.qesitmNm}">
|
|
<input type="hidden" name="qesitmAtArr[]" class = "answRadioAt qesitmAtChk" value = "N">
|
|
<input type="hidden" name="qesitmInnbArr[]" class="answRadio" value="${ qesitmList.qesitmInnb }" disabled>
|
|
<input type="hidden" name="answCnArr[]" class="answRadio" disabled>
|
|
<input type="hidden" name="itmInnbArr[]" class="answRadio" disabled>
|
|
<c:forEach items="${itmCnList}" var = "itmCnList1" varStatus = "status">
|
|
<c:if test ="${itmCnList1.qesitmInnb eq qesitmList.qesitmInnb}">
|
|
<div class="custom-radio is-medium">
|
|
<input type="radio"
|
|
name="itmInnbArr<c:out value="${ qesitmList.qesitmInnb }"/>[]"
|
|
id="answCn<c:out value="${ status.index }"/>"
|
|
class = "answRadioC"
|
|
value="<c:out value="${ itmCnList1.itmInnb}"/>"
|
|
qesitm-innb = '<c:out value="${itmCnList1.qesitmInnb}"/>'
|
|
itm-cn="<c:out value="${ itmCnList1.itmCn }"/>">
|
|
<label for="answCn<c:out value="${ status.index }"/>">
|
|
<c:out value="${ itmCnList1.itmCn }"/>
|
|
</label>
|
|
</div>
|
|
</c:if>
|
|
</c:forEach>
|
|
</div>
|
|
</div>
|
|
</c:if>
|
|
<c:if test="${ qesitmList.itmTyCd eq '02'}">
|
|
<div class="reviewRadio__item">
|
|
<div class="reviewRadio__title"><c:out value="${ qesitmList.qesitmNm }"/></div>
|
|
<input type="hidden" name="qesitmEssntlAtArr[]" value="${ qesitmList.qesitmEssntlAt }" class = "essntlChk">
|
|
<input type="hidden" name="qesitmNmArr[]" value = "${ qesitmList.qesitmNm }">
|
|
<input type="hidden" name="qesitmAtArr[]" class = "answSelectAt qesitmAtChk" value = "N">
|
|
<input type="hidden" name="qesitmInnbArr[]" class="answSelect" value="${ qesitmList.qesitmInnb }" disabled>
|
|
<input type="hidden" name="answCnArr[]" class="answSelect" disabled>
|
|
<div class="select-box">
|
|
<select class="md answSelectC" name="itmInnbArr[]">
|
|
<option value="" >전체</option>
|
|
<c:forEach items="${itmCnList}" var = "itmCnList2">
|
|
<c:if test ="${itmCnList2.qesitmInnb eq qesitmList.qesitmInnb}">
|
|
<option value="${ itmCnList2.itmInnb }" itm-cn="${ itmCnList2.itmCn}" qesitm-innb = '${itmCnList2.qesitmInnb}'>${ itmCnList2.itmCn }</option>
|
|
</c:if>
|
|
</c:forEach>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
</c:if>
|
|
<c:if test="${ qesitmList.itmTyCd eq '03' }">
|
|
<div class="reviewRadio__item">
|
|
<div class="reviewRadio__title"><c:out value="${ qesitmList.qesitmNm }"/></div>
|
|
<input type="hidden" name="qesitmEssntlAtArr[]" value="${ qesitmList.qesitmEssntlAt }" class = "essntlChk">
|
|
<input type="hidden" name="qesitmNmArr[]" value = "${ qesitmList.qesitmNm }">
|
|
<input type="hidden" name="qesitmAtArr[]" class = "answChkAt qesitmAtChk" value = "N">
|
|
<c:forEach items="${itmCnList}" var = "itmCnList3">
|
|
<c:if test ="${itmCnList3.qesitmInnb eq qesitmList.qesitmInnb}">
|
|
<div class="b-checkbox-container">
|
|
<label class="b-checkbox checkbox">
|
|
<input type="hidden" class="answChk" name="qesitmInnbArr[]" value="${ qesitmList.qesitmInnb }" disabled>
|
|
<input type="hidden" class="answChk" name="answCnArr[]" value="${ itmCnList3.itmCn }" disabled>
|
|
<input type="checkbox" class="answChkC" name="itmInnbArr[]" value="${ itmCnList3.itmInnb }">
|
|
<span class="check"></span>
|
|
<span class="control-label">${ itmCnList3.itmCn }</span>
|
|
</label>
|
|
</div>
|
|
</c:if>
|
|
</c:forEach>
|
|
</div>
|
|
</c:if>
|
|
<c:if test="${ qesitmList.itmTyCd eq '04' }">
|
|
<div class="reviewRadio__item">
|
|
<div class="reviewRadio__title"><c:out value="${ qesitmList.qesitmNm }"/></div>
|
|
<div class="reviewRadio__inputRow">
|
|
<c:forEach items="${itmCnList}" var = "itmCnList4">
|
|
<c:if test ="${itmCnList4.qesitmInnb eq qesitmList.qesitmInnb}">
|
|
<input type="hidden" name="qesitmEssntlAtArr[]" value="${ qesitmList.qesitmEssntlAt }" class = "essntlChk">
|
|
<input type="hidden" name="qesitmNmArr[]" value = "${ qesitmList.qesitmNm }">
|
|
<input type="hidden" name="qesitmAtArr[]" class = "answTxtAt qesitmAtChk" value = "N">
|
|
<input type="hidden" class="answTxt" name="qesitmInnbArr[]" value="${ qesitmList.qesitmInnb }" disabled>
|
|
<input type="text" class="answTxtC input-text full" name="answCnArr[]" title="추가문항답변" placeholder="${ itmCnList4.itmCn }" maxlength="666">
|
|
<input type="hidden" class="answTxt" name="itmInnbArr[]" value="${ itmCnList4.itmInnb }" disabled>
|
|
</c:if>
|
|
</c:forEach>
|
|
</div>
|
|
</div>
|
|
</c:if>
|
|
</c:forEach>
|
|
</div>
|
|
</c:if>
|
|
<div class="orderRefundReason">
|
|
<div class="orderRefundReason__item">
|
|
<div class="orderRefundReason__itemTitle">상품 리뷰를 작성해주세요.</div>
|
|
<textarea class="textarea" rows="6" title="상품 리뷰" name = "cn" id = "cn"
|
|
<c:choose>
|
|
<c:when test="${bbsInfo.dftCnUseAt eq 'Y'}">
|
|
placeholder= "<c:out value='${bbsInfo.dftCn}'/>"
|
|
</c:when>
|
|
<c:otherwise>
|
|
<c:if test="${not empty bbsInfo.writngChrCnt}">
|
|
placeholder="최소 <c:out value="${bbsInfo.writngChrCnt}"/>자 이상으로 입력해 주세요."
|
|
</c:if>
|
|
</c:otherwise>
|
|
</c:choose>>
|
|
</textarea>
|
|
<c:if test = "${not empty bbsInfo.writngChrCnt}">
|
|
<input type="hidden" id = "writngChrCntAt" value ="Y">
|
|
</c:if>
|
|
<input type="hidden" id = "writngChrCnt" value ="<c:out value = "${bbsInfo.writngChrCnt}"/>">
|
|
</div>
|
|
</div>
|
|
<c:if test="${bbsInfo.filAtch eq 'Y'}">
|
|
<div class="reviewImageUpload">
|
|
<div class="reviewImageUpload__title">이미지 등록(3장) <c:if test = "${bbsInfo.bbsTyCd eq '07'}"><span style="color:red">*</span></c:if></div>
|
|
<div class="dropzone-wrapper">
|
|
<div class="dropzone" id="contact-dropzone">
|
|
</div>
|
|
</div>
|
|
<ul class="contact-upload-info">
|
|
<li>사진 첨부는 최대 10MB 이하이며 3개까지 등록할 수 있습니다.</li>
|
|
<li>등록 가능 파일은 ${acceptFileExtensions} 파일만 가능합니다.</li>
|
|
<li>상품과 무관한 내용이거나 음란 불법적인 내용은 통보없이 삭제할 수 있습니다.</li>
|
|
</ul>
|
|
<input type="hidden" name="filAtch" id="filAtch" value="Y"/>
|
|
</div>
|
|
</c:if>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<a href="#" rel="modal:close" class="btn large outline">닫기</a>
|
|
<button type = "button" class="btn large theme" id = "regBtn" disabled>리뷰 등록</button>
|
|
<input type = "hidden" id = "regProccess" value = "N"/>
|
|
</div>
|
|
</div>
|
|
<script>
|
|
// Dropzone 파일업로드
|
|
if ($("#contact-dropzone").length > 0) {
|
|
const maxFiles = 3;
|
|
Dropzone.autoDiscover = false;
|
|
var myDropzone = new Dropzone("#contact-dropzone", {
|
|
url: "/file-upload",
|
|
maxFilesize: 10,
|
|
maxFiles: maxFiles,
|
|
acceptedFiles: "${acceptFileExtensions}",
|
|
autoProcessQueue: false,
|
|
addRemoveLinks: true,
|
|
dictDefaultMessage: "",
|
|
dictRemoveFile: "삭제",
|
|
dictCancelUpload: "취소",
|
|
dictCancelUploadConfirmation: "업로드를 취소하시겠습니까?",
|
|
dictInvalidFileType: "이 파일은 업로드할 수 없습니다.",
|
|
dictFileTooBig: "파일이 너무 큽니다. ({{filesize}}MB). 최대 파일 크기: {{maxFilesize}}MB.",
|
|
dictMaxFilesExceeded: "파일을 더 이상 추가할 수 없습니다.",
|
|
dictResponseError: "서버에서 응답을 받지 못했습니다.",
|
|
});
|
|
var inputElement = $('input[type="file"].dz-hidden-input');
|
|
// name 부여
|
|
inputElement.attr('name', 'file');
|
|
|
|
// id 부여
|
|
inputElement.attr('id', 'fileUpload');
|
|
// 파일 추가 이벤트
|
|
myDropzone.on("addedfile", function(file) {
|
|
if (myDropzone.files.length >= maxFiles) {
|
|
$(".dz-message").hide();
|
|
}
|
|
$("#filExtAt").val("Y");
|
|
fn_validation_rvw();
|
|
});
|
|
myDropzone.on("removedfile", function(file) {
|
|
if (myDropzone.files.length < maxFiles) {
|
|
$(".dz-message").show();
|
|
}
|
|
if(myDropzone.files.length == 0){
|
|
$("#filExtAt").val("N");
|
|
fn_validation_rvw();
|
|
}
|
|
});
|
|
myDropzone.on("maxfilesexceeded", function(file) {
|
|
const dictMaxFilesExceeded = myDropzone.options.dictMaxFilesExceeded;
|
|
alert(dictMaxFilesExceeded);
|
|
this.removeFile(file);
|
|
$(file.previewElement).find(".dz-remove").attr("disabled", true);
|
|
});
|
|
}
|
|
|
|
</script>
|
|
</html> |