Files
sake/src/main/webapp/WEB-INF/views/sopmal/mpage/act/RvwWritngPopupC.jsp
2025-10-29 17:08:05 +09:00

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}'/>점&nbsp;</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>