초기소스

This commit is contained in:
jazz
2025-10-29 17:08:05 +09:00
parent e531aa9540
commit 439a379a02
7551 changed files with 1234427 additions and 3 deletions

View File

@@ -0,0 +1,338 @@
<%@ 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"%>
<%--
Class Name : MyGoodsQaR.jsp
Description : 마이페이지 상품Q&A
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-04-11 김혜인 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<%-- 공통 include --%>
<jsp:include page="/WEB-INF/views/comm/Include.jsp"/>
</head>
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.cdnurl')" var="cdnurl"/>
<script>
$(document).ready(function() {
//아코디언 클릭 시 폼 제출 방지
$(".tr-foldable-trigger").click(function(event) {
if($(this).next().hasClass("active")){
const bbscttInnb = $(this).attr("bbsctt-innb");
const idx = $(this).index();
fn_select_fileInfo(bbscttInnb,idx);
}
event.preventDefault(); // 폼 제출 방지
});
//삭제 모달 버튼
$(document).on('click','.deleteBtn',function(){
const bbscttInnb = $(this).closest('div').find("[name='bbscttInnb']").val();
const goodsInnb = $(this).closest('div').find("[name='goodsInnb']").val();
$('#qna-delete').modal();
$('#alertDelBtn').attr('bbscttInnb', bbscttInnb);
$('#alertDelBtn').attr('goodsInnb', goodsInnb);
});
//삭제 버튼
$(document).on('click','#alertDelBtn',function(){
const bbscttInnb = $(this).attr("bbscttInnb");
const goodsInnb = $(this).attr("goodsInnb");
const bbsId = $("#bbsId").val();
const bbsTyCd = $("#bbsTyCd").val();
fn_delete_bbsctt(bbscttInnb,bbsId,bbsTyCd,goodsInnb);
});
//수정 폼 이동 버튼
$(document).on('click','.updateBtn',function(){
const answAt = $(this).closest('div').find("[name='answAt']").val();
const bbscttInnb = $(this).closest('div').find("[name='bbscttInnb']").val();
const bbsId = $("#bbsId").val();
fn_move_qaUpdt(bbscttInnb,answAt,bbsId);
});
});
//해당 게시물 파일정보 get
const fn_select_fileInfo = (bbscttInnb, idx) => {
$.ajax({
type: "post",
url: "/sopmal/mpage/act/selectFileInfo",
data: {"bbscttInnb": bbscttInnb},
success: function (data) {
const resultData = JSON.parse(data.resBody.result);
const fileInfo = resultData.fileInfo;
let img = '';
fileInfo.forEach(function (file) {
img += `<img src="${cdnurl}\${file.filCours}\${file.sysFilNm}\" alt="\${file.orginlFilNm}\"
onerror="this.src='/pc/images/image_placeholder.png'; this.style.width='150px'; this.style.height='150px';"/>`;
});
$(".tr-foldable").eq(idx).find(".file").html(img);
}
});
}
//게시글 삭제
const fn_delete_bbsctt =(bbscttInnb,bbsId,bbsTyCd,goodsInnb)=>{
$.ajax({
type: "post",
url: "/sopmal/csc/deleteBbscttDel",
data: {
"delBbscttInnbArr": bbscttInnb,
"bbsId": bbsId,
"bbsTyCd": bbsTyCd,
"goodsInnbArr": goodsInnb
},
success: function () {
alert('<spring:message code="success.common.delete"/>');
fn_close_modal('qna-delete');
location.reload();
}
});
}
//페이징 목록 조회
const fn_select_List = (pageIndex) => {
const form = $('<form>', {
'action': '/sopmal/mpage/act/selectGoodsQnaInqire',
'method': 'post'
}).append(
$('<input>', {
'type': 'hidden',
'name': 'bbsId',
'value': $("#bbsId").val()
})
).append(
$('<input>', {
'type': 'hidden',
'name': 'pageIndex',
'value': pageIndex
})
);
$('body').append(form);
form.submit();
}
//게시글 수정
const fn_move_qaUpdt =(bbscttInnb,answAt,bbsId)=>{
/* if(answAt == 'Y'){
//1.1 답변이 있는지 확인 있으면 수정 불가 모달 호출
$('#qna-edit').modal();
}else{*/
//1.2답변이 없는 경우 폼을 생성하고 전송
const form = $('<form>', {
'action': '/sopmal/mpage/act/selectGoodsQnaDtlUpdtForm',
'method': 'post'
}).append(
$('<input>', {
'type': 'hidden',
'name': 'bbscttInnb',
'value': bbscttInnb
})
).append(
$('<input>', {
'type': 'hidden',
'name': 'bbsId',
'value': bbsId
})
).append(
$('<input>', {
'type': 'hidden',
'name': 'pageIndex',
'value': $("#pageIndex").val()
})
);
$('body').append(form);
form.submit();
}
/*}*/
</script>
<body>
<%-- 공통 Header --%>
<jsp:include page="/WEB-INF/views/comm/Header.jsp"/>
<!-- 메인 컨텐츠 영역 -->
<main>
<div class="sub-wrapper">
<div class="sub-content">
<div class="sub-rl">
<%-- 마이페이지 Left 영역 --%>
<jsp:include page="/WEB-INF/views/comm/mpage/MypageLeft.jsp"/>
<div class="sub-right-content">
<%-- 마이페이지 Right 영역 --%>
<jsp:include page="/WEB-INF/views/comm/mpage/MypageRight.jsp"/>
<c:set value="${resultMap.bbsInfo}" var = "bbsInfo"/>
<input type = "hidden" value = "<c:out value="${bbsInfo.bbsId}"/>" id = "bbsId">
<input type = "hidden" value = "<c:out value="${bbsInfo.bbsTyCd}"/>" id = "bbsTyCd">
<input type="hidden" name="slangFlterUseAt" id = "slangFlterUseAt" value = "<c:out value="${bbsInfo.slangFlterUseAt}"/>">
<div class="sub-right-content__section">
<h3 class="sub-right-content__title"><c:out value="${bbsInfo.bbsNm}"/></h3>
<div class="table-wrapper">
<table class="table vertical">
<caption>해당 테이블에 대한 설명</caption>
<!-- 각 열 width 설정 -->
<colgroup>
<col style="width: 10%;">
<col style="width: 18%;">
<col style="width: auto;">
<col style="width: 15%;">
<col style="width: 10%">
</colgroup>
<thead>
<tr>
<th>번호</th>
<th>상품정보</th>
<th>문의내용</th>
<th>작성일</th>
<th>답변유무</th>
</tr>
</thead>
<tbody>
<c:choose>
<c:when test = "${ not empty resultMap.resultList.resultList }">
<c:forEach var="resultList" items="${ resultMap.resultList.resultList}">
<tr class="tr-foldable-trigger" bbsctt-innb = "<c:out value = '${resultList.bbscttInnb}'/>">
<td><span class="board-number"><c:out value="${resultMap.paginationInfo.totalRecordCount - resultList.rnum+1 }" /></span></td>
<td class="text-left">
<div class="board-inner-product">
<div class="board-inner-product__right">
<a class="board-inner-product__name" href="" onclick = "fn_move_goods_dtl(<c:out value='${resultList.goodsInnb}'/>); return false;">
<c:out value="${resultList.goodsNm}"/>
</a>
</div>
</div>
</td>
<td class="text-left">
<div class="board-inner-product">
<div class="board-inner-product__right">
<p class="board-inner-product__title">
<span class="category"><c:if test = "${not empty resultList.answCn}">[<c:out value="${resultList.answCn}"/>]</c:if></span>
<c:out value="${resultList.sj}"/>
</p>
</div>
</div>
</td>
<td><span class="board-date"><c:out value="${resultList.sumRegistDt}"/></span></td>
<td>
<c:choose>
<c:when test = "${not empty resultList.answBbscttInnb}">
<span class="text-complete">답변완료</span>
</c:when>
<c:otherwise>
<span class="text-waiting">답변대기</span>
</c:otherwise>
</c:choose>
</td>
</tr>
<tr class="tr-foldable">
<td colspan="5">
<div class="tr-foldable__content">
<div class="tr-foldable__qna">
<i class="icon icon_qna-q"></i>
<div class="tr-foldable__qna-content">
<p class="tr-foldable__qna-title"><c:out value="${resultList.sj}"/></p>
<div class = "cn" style="white-space: pre-wrap;"><c:out value="${resultList.cn}" /></div>
<br>
<div class = "file"></div>
</div>
</div>
<div class="tr-foldable__qna">
<i class="icon icon_qna-a"></i>
<div class="tr-foldable__qna-content">
<p class="tr-foldable__qna-title answSj"><c:out value="${resultList.answSj}"/></p>
<c:choose>
<c:when test = "${not empty resultList.answBbscttInnb}">
<div class = "cn ck-content"><c:out value="${resultList.answBbscttCn}" escapeXml="false"/></div>
</c:when>
<c:otherwise>
답변 등록 중 입니다.
</c:otherwise>
</c:choose>
</div>
</div>
<div class="tr-foldable__btn-container">
<input type = "hidden" name = "answAt"
value = <c:choose>
<c:when test = "${not empty resultList.answBbscttInnb}">
'Y'
</c:when>
<c:otherwise>
'N'
</c:otherwise>
</c:choose>>
<input type = "hidden" name = "bbscttInnb" value = <c:out value="${resultList.bbscttInnb}"/>>
<input type = "hidden" name = "goodsInnb" value = <c:out value="${resultList.goodsInnb}"/>>
<button type = "button" class="btn outline deleteBtn"><spring:message code="button.delete"/></button>
<c:if test = "${empty resultList.answBbscttInnb}">
<button type = "button" class="btn theme outline updateBtn"><spring:message code="button.update"/></button>
</c:if>
</div>
</div>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="4">
<div class="table__no-result">
<img src="/pc/images/icon__no-result.png" alt="조회 내역 없음">
<p class="table__no-result-text">
<spring:message code="common.nodata"/>
</p>
</div>
</td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value = '${resultMap.bbsctt.pageIndex}'/>" />
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_List" />
</div>
</div>
</div>
</div>
</div>
</div>
</main>
<%-- 공통 Footer --%>
<jsp:include page="/WEB-INF/views/comm/Footer.jsp"/>
<!-- 질문 삭제 모달 -->
<div id="qna-delete" class="modal alert">
<div class="alert-content">
<p class="alert-content__text--sm">
삭제된 게시글은 복구할 수 없습니다.
<br>
정말로 삭제 하시겠습니까?
</p>
</div>
<div class="alert-btn-container">
<a href="#" rel="modal:close" class="alert-btn alert-btn--cancel">취소</a>
<button type="button" class="alert-btn alert-btn--confirm" id = "alertDelBtn">확인</button>
</div>
</div>
<!-- 질문 수정 모달 -->
<%--<div id="qna-edit" class="modal alert">
<div class="alert-content">
<p class="alert-content__text--sm">
답변이 등록된 상태입니다.
<br>
수정하실 수 없습니다.
</p>
</div>
<div class="alert-btn-container">
<a href="#" rel="modal:close" class="alert-btn alert-btn--confirm">확인</a>
</div>
</div>--%>
</body>
</html>

View File

@@ -0,0 +1,936 @@
<%@ 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"%>
<%--
Class Name : MyGoodsQaR.jsp
Description : 마이페이지 상품Q&A
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-04-11 김혜인 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<%-- 공통 include --%>
<jsp:include page="/WEB-INF/views/comm/Include.jsp"/>
</head>
<script>
$(document).ready(function() {
fn_collect_evt();
});
/*********************************************************
* 이벤트 함수
*********************************************************/
const fn_collect_evt = () =>{
//내용 set
fn_select_cn();
//분류 change시 hidden value값 set
$(document).on('change', '#qesitmNmC', function () {
$("#qesitmInnb").val("");
$("#qesitmNm").val("");
$("#answCn").val("");
const option = $('option:selected', this);
const qesitmInnb = $(option).attr('qesitm-innb');
const answCn = $(option).attr('answ-Cn');
const qesitmNm = $(option).attr('qesitm-nm');
if ($(this).val() !== "") {
$("#qesitmInnb").val(qesitmInnb);
$("#answCn").val(answCn);
$("#qesitmNm").val(qesitmNm);
$("#qesitmAt").val("Y");
$(this).closest("td").find("input[name='qesitmAtArr[]']").val("Y");
} else {
$("#qesitmInnb").val("");
$("#answCn").val("");
$("#qesitmNm").val("");
$("#qesitmAt").val("N");
$(this).closest("td").find("input[name='qesitmAtArr[]']").val("N");
}
});
//추가입력 항목 라디오 'click' 이벤트
$(document).on('click', '.answRadioC', function () {
const radio = $(this);
//추가입력 항목 내용 요소 get
const answ = radio.closest(".custom-radio-container").find('[name="answCnArr[]"]');
//추가입력 항목 내용 요소 get
const qesitmInnb = radio.closest(".custom-radio-container").find('[name="qesitmInnbArr[]"]');
//라디오 클릭으로 인한 제어 요소 get
const contrlTarget = radio.closest(".custom-radio-container").find('.answRadio');
//항목 고유번호 내용 요소 get
const itmInnb = radio.closest(".custom-radio-container").find('[name="itmInnbArr[]"]');
//라디오 클릭 시 disabled 비활성
if (radio.is(":checked")) {
//답변 내용 초기화
answ.val("");
const radioVal = $(radio).attr('itm-cn');
answ.val(radioVal);
//항목 내용 set
qesitmInnb.val("");
const qesitmInnbVal = $(radio).attr('qesitm-innb');
qesitmInnb.val(qesitmInnbVal);
//항목고유번호 내용 set
itmInnb.val("");
const itmInnbVal = $(radio).val();
itmInnb.val(itmInnbVal);
//라디오 주위 input값 disable false처리
contrlTarget.each(function () {
contrlTarget.prop("disabled", false);
radio.closest(".custom-radio-container").find(".answRadioAt").val("Y");
});
} else {
contrlTarget.each(function () {
contrlTarget.prop("disabled", true);
radio.closest(".custom-radio-container").find(".answRadioAt").val("N");
});
}
});
//추가입력 항목 셀렉트 'change'이벤트
$(document).on('change', '.answSelectC', function () {
const select = $(this);
const answ = select.closest("td").find('[name="answCnArr[]"]');
const qesitmInnb = select.closest("td").find('[name="qesitmInnbArr[]"]');
const contrlTarget = select.closest("td").find('.answSelect');
const option = $('option:selected', this);
if (select.val() != "") {
//답변 내용 초기화
answ.val("");
const selectVal = $(option).attr('itm-cn');
answ.val(selectVal);
//항목 내용 set
qesitmInnb.val("");
const qesitmInnbVal = $(option).attr('qesitm-innb');
qesitmInnb.val(qesitmInnbVal);
//셀렉트 주위 input값 disable false처리
contrlTarget.each(function () {
contrlTarget.prop("disabled", false);
select.closest("td").find(".answSelectAt").val("Y");
});
} else {
contrlTarget.each(function () {
contrlTarget.prop("disabled", true);
select.closest("td").find(".answSelectAt").val("N");
});
}
});
//추가입력 항목 체크박스 'click'이벤트
$(document).on('click', '.answChkC', function () {
const check = $(this);
const contrlTarget = check.closest("div").find('.answChk');
var isChecked = $(this).is(":checked");
//클릭한 체크박스 주위 input값 disable false처리
contrlTarget.each(function () {
if (isChecked) {
$(this).prop("disabled", false);
} else {
$(this).prop("disabled", true);
}
});
// 체크된 체크박스가 하나라도 있는지 확인
let anyChecked = $('.answChkC:checked').length > 0;
contrlTarget.each(function () {
if (anyChecked) {
check.closest("td").find(".answChkAt").val("Y");
check.closest("td").find(".answChkAt").prop("disabled", false);
} else {
check.closest("td").find(".answChkAt").val("N");
check.closest("td").find(".answChkAt").prop("disabled", true);
}
});
});
//추가입력 항목 텍스트 'input'이벤트
$(document).on('input', '.answTxtC', function () {
const txt = $(this);
const contrlTarget = txt.closest("div").find('.answTxt');
const contrlAt = txt.closest("div").find('.answTxtAt');
//클릭한 체크박스 주위 input값 disable false처리
if (txt.val() != "") {
contrlTarget.each(function () {
contrlTarget.prop("disabled", false);
contrlAt.val("Y");
});
} else {
contrlTarget.each(function () {
contrlTarget.prop("disabled", true);
contrlAt.val("N");
});
}
});
//파일 업로드
$(document).on("change", "#fileUpload", function () {
addFiles(event, 0);
});
//수정 이벤트
$("#updtBtn").on("click",function (){
fn_update_bbsctt();
});
//취소시 목록 이동
$("#canclBtn").on("click",function (){
const pageIndex = $("#pageIndex").val();
fn_select_List(pageIndex);
});
$("#updtComptBtn").on("click",function(){
const updtAt = $("#updtAt").val();
if(updtAt === 'Y'){
$("#pageIndex").val("1");
}
const form = $("#bbsUpdtForm");
form.attr("action","/sopmal/mpage/act/selectGoodsQnaDtlUpdtForm");
form.attr("method","post");
form.submit();
});
}
/*********************************************************
* 게시글 내용 조회
*********************************************************/
const fn_select_cn = function () {
let bbscttInnb = $("#bbscttInnb").val();
let bbsId = $("#bbsId").val();
let sopmalCd = $("#sopmalCd").val();
$.ajax({
type: "post",
url: "<c:url value ='/ajax/bbscttAjax/selectBOBbscttCnAjax'/>",
contentType: 'application/json',
data: JSON.stringify({
bbsId: bbsId,
bbscttInnb: bbscttInnb,
sopmalCd: sopmalCd
}),
success: function (data) {
let cn = data.result.cn;
$("#cnBbsUpdt").val(cn);
}
});
}
/*********************************************************
* 게시글 수정
*********************************************************/
const fn_update_bbsctt = () => {
let url = '<c:url value="/sopmal/csc/updateBbscttupdt"/>';
let saveForm = $('#bbsUpdtForm');
let formData = new FormData();
//파일 업로드
if ($("#contact-dropzone").length > 0) {
let myDropzone = Dropzone.forElement("#contact-dropzone");
myDropzone.files.forEach(function (file) {
formData.append("files", file);
});
}
//사용자 등록 시 노출 여부 Y
formData.append("expsrAt", "Y");
//입력항목 체크박스 disabled처리
$('.checkbox input[type="checkbox"]').each(function () {
if (!$(this).prop('checked')) {
fn_ctrl_disable([".checkbox"],);
}
});
//폼 내 input값 append
saveForm.serializeArray().forEach(function (item) {
formData.append(item.name, item.value);
});
//사용자 등록 시 노출 여부 Y
if (confirm('게시글을 <spring:message code="confirm.common.update"/>')) {
$.ajax({
type: 'post',
url: url,
enctype:"multipart/form-data",
data: formData,
processData: false,
contentType: false,
success: function (result) {
$("#result-alert").modal();
}
});
}else{
fn_ctrl_disable("", [".checkbox"]);
}
}
/*********************************************************
* 목록 이동
*********************************************************/
const fn_select_List = (pageIndex) => {
if(!pageIndex){
pageIndex = 1;
}
const form = $('<form>', {
'action': '/sopmal/mpage/act/selectGoodsQnaInqire',
'method': 'post'
}).append(
$('<input>', {
'type': 'hidden',
'name': 'bbsId',
'value': $("#bbsId").val()
})
).append(
$('<input>', {
'type': 'hidden',
'name': 'pageIndex',
'value': pageIndex
})
);
$('body').append(form);
form.submit();
}
function fn_update_hidden_value () {
//분류 항목
const option = $('option:selected', $("#qesitmNmC"));
const qesitmInnb = $(option).attr('qesitm-innb');
const answCn = $(option).attr('answ-Cn');
const qesitmNm = $(option).attr('qesitm-nm');
if($("#qesitmNmC").val()!= ""){
$("#qesitmInnb").val(qesitmInnb);
$("#answCn").val(answCn);
$("#qesitmAt").val("Y");
}else{
$("#qesitmInnb").val("");
$("#answCn").val("");
$("#qesitmAt").val("N");
}
// 추가평가항목 라디오
const radio = $(".answRadioC:checked");
radio.each(function(idx) {
if (radio.eq(idx).val()) {
let radioAnsw = radio.eq(idx).closest("td").find('[name="answCnArr[]"]');
let radioQesitmInnb = radio.eq(idx).closest("td").find('[name="qesitmInnbArr[]"]');
let radioItmInnb = radio.eq(idx).closest("td").find('[name="itmInnbArr[]"]');
let radioQesitmAt = radio.eq(idx).closest("td").find('[name="qesitmAtArr[]"]');
let radioContrlTarget = radio.eq(idx).closest("td").find('.answRadio');
// 답변 내용 set
radioAnsw.val(radio.eq(idx).attr('itm-cn'));
// 항목 내용 set
radioQesitmInnb.val(radio.eq(idx).attr('qesitm-innb'));
// 항목고유번호 내용 set
radioItmInnb.val(radio.eq(idx).val());
// 답변 여부
radioQesitmAt.val("Y");
// 라디오 주위 input값 disable false처리
radioContrlTarget.each(function(idx){
radioContrlTarget.eq(idx).prop("disabled", false);
});
} else {
let radioAnsw = radio.eq(idx).closest("td").find('[name="answCnArr[]"]');
let radioQesitmInnb = radio.eq(idx).closest("td").find('[name="qesitmInnbArr[]"]');
let radioItmInnb = radio.eq(idx).closest("td").find('[name="itmInnbArr[]"]');
let radioQesitmAt = radio.eq(idx).closest("td").find('[name="qesitmAtArr[]"]');
let radioContrlTarget = radio.eq(idx).closest("div").find('.answRadio');
// 답변 내용 set
radioAnsw.val("");
// 항목 내용 set
radioQesitmInnb.val("");
// 항목고유번호 내용 set
radioItmInnb.val("");
// 답변 여부
radioQesitmAt.val("N");
// 라디오 주위 input값 disable false처리
radioContrlTarget.each(function(idx){
radioContrlTarget.eq(idx).prop("disabled", true);
});
}
});
//추가입력 항목 셀렉트 'change'이벤트
const select =$('select.answSelectC[name="itmInnbArr[]"]');
select.each(function(idx) {
let selectIndex = select.eq(idx).find('option:selected').index();
if (selectIndex > 0) {
let selectQesitmAt = select.eq(idx).closest("td").find('[name="qesitmAtArr[]"]');
let selectQesitmInnb = select.eq(idx).closest("td").find('[name="qesitmInnbArr[]"]');
let selectAnsw = select.eq(idx).closest("td").find('[name="answCnArr[]"]');
let selectOption = $('option:selected', select.eq(idx));
let selectContrlTarget = select.eq(idx).closest("td").find('.answSelect');
// 답변 여부
selectQesitmAt.val("Y");
// 항목 내용 set
selectQesitmInnb.val(selectOption.attr('qesitm-innb'));
// 답변 내용 set
selectAnsw.val(selectOption.attr('itm-cn'));
// 라디오 주위 input값 disable false처리
selectContrlTarget.each(function(idx){
selectContrlTarget.eq(idx).prop("disabled", false);
});
} else {
let selectQesitmAt = select.eq(idx).closest("td").find('[name="qesitmAtArr[]"]');
let selectQesitmInnb = select.eq(idx).closest("td").find('[name="qesitmInnbArr[]"]');
let selectAnsw = select.eq(idx).closest("td").find('[name="answCnArr[]"]');
let selectContrlTarget = select.eq(idx).closest("td").find('.answSelect');
// 답변 여부
selectQesitmAt.val("N");
// 항목 내용 set
selectQesitmInnb.val("");
// 답변 내용 set
selectAnsw.val("");
// 라디오 주위 input값 disable false처리
selectContrlTarget.each(function(idx){
selectContrlTarget.eq(idx).prop("disabled", true);
});
}
});
const check = $(".answChkC");
//클릭한 체크박스 주위 input값 disable false처리
check.each(function(idx){
let checkContrlTarget = check.eq(idx).closest(".checkbox").find('.answChk');
let isChecked = check.eq(idx).is(":checked");
checkContrlTarget.each(function (index) {
if (isChecked) {
checkContrlTarget.eq(index).prop("disabled", false);
} else {
checkContrlTarget.eq(index).prop("disabled", true);
}
});
// 체크된 체크박스가 하나라도 있는지 확인
let anyChecked = check.eq(idx).closest("td").find(".answChkC:checked").length > 0;
if (anyChecked) {
check.eq(idx).closest("td").find(".answChkAt").val("Y");
} else {
check.eq(idx).closest("td").find(".answChkAt").val("N");
}
});
//추가입력 항목 텍스트 'input'이벤트
const txt = $('.answTxtC');
txt.each(function (idx) {
let contrlTarget = txt.eq(idx).closest("div").find('.answTxt');
let contrlAt = txt.eq(idx).closest("div").find('.answTxtAt');
//클릭한 체크박스 주위 input값 disable false처리
if (txt.val() != "") {
contrlTarget.each(function () {
contrlTarget.prop("disabled", false);
contrlAt.val("Y");
});
} else {
contrlTarget.each(function () {
contrlTarget.prop("disabled", true);
contrlAt.val("N");
});
}
});
}
/*상품qna 버튼 클릭 제어*/
function fn_prevent_click(event) {
event.preventDefault(); // 체크박스 상태 변경 방지
}
</script>
<body>
<c:set value="${resultMap.bbscttInfo.bbscttInfo}" var="bbscttInfo"/>
<c:set value="${resultMap.bbscttVO}" var="bbscttVO"/>
<c:set value="${resultMap.bbscttInfo.qesitmAnswList}" var="qesitmAnswList"/>
<c:set value="${resultMap.bbscttInfo.fileInfoGson}" var="fileInfoGson"/>
<c:set value="${resultMap.bbscttInfo.goods}" var="goods"/>
<c:set value="${resultMap.bbscttInfo.wrter}" var="wrter"/>
<c:set value="${resultMap.bbsInfo}" var="bbsInfo"/>
<c:set value="${resultMap.qesitmList.qesitmList}" var="qesitmList"/>
<c:set value="${resultMap.qesitmList.itmCnList}" var="itmCnList"/>
<c:set value="${resultMap.itmList}" var="itmList"/>
<%-- 공통 Header --%>
<jsp:include page="/WEB-INF/views/comm/Header.jsp"/>
<!-- 메인 컨텐츠 영역 -->
<main>
<form id = "bbsUpdtForm">
<input type="hidden" name="dftCnUseAt" value="<c:out value = '${bbsInfo.dftCnUseAt}'/>" id="dftCnUseAt">
<input type="hidden" name="dftCn" value="<c:out value = '${bbsInfo.dftCn}'/>" id="dftCn">
<input type="hidden" name="slangFlter" value="<c:out value = '${bbsInfo.slangFlter}'/>">
<input type="hidden" name="password" value="<c:out value = '${bbscttInfo.password}'/>">
<input type="hidden" name="cmUseAt" value="<c:out value = '${bbscttInfo.cmUseAt}'/>">
<input type="hidden" name="sortOrdr" value="<c:out value = '${bbscttInfo.sortOrdr}'/>">
<input type="hidden" name="bbscttInnb" value="<c:out value = '${bbscttInfo.bbscttInnb}'/>" id="bbscttInnb">
<input type="hidden" name="bbsId" value="<c:out value = '${bbscttInfo.bbsId}'/>" id="bbsId">
<input type="hidden" name="pageIndex" value="<c:out value = '${bbsctt.pageIndex}'/>" id="pageIndex">
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.extensions.images')" var="acceptFileExtensions"/> <%--허용 확장자--%>
<input type="hidden" name="acceptFileExtensions" value="<c:out value = '${acceptFileExtensions}'/>" id="acceptFileExtensions">
<input type="hidden" name="filAtch" value="${bbsInfo.filAtch }"/>
<input type="hidden" id="updtAt">
<input type="hidden" id="sopmalCd" value="<c:out value="${bbsInfo.sopmalCd}"/>" name="sopmalCd"/>
<input type="hidden" id="updtAt">
<%--존재 파일 여부 체크--%>
<c:choose>
<c:when test = "${not empty fileInfo}"><c:set var="filExtAt" value="Y"/></c:when>
<c:otherwise><c:set var="filExtAt" value="N"/></c:otherwise>
</c:choose>
<input type="hidden" id="filExtAt" name="filExtAt" value="${filExtAt}"/>
<input type="hidden" id="extFiles" name="extFiles" value=""/>
<input type="hidden" id="filesInfo" name="filesInfo"/>
<input type="hidden" id="extFilChangeAt" name="extFilChangeAt" value="N"/>
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.cdnurl')" var="cdnurl"/>
<div class="sub-wrapper">
<div class="sub-content">
<div class="sub-rl">
<%-- 마이페이지 Left 영역 --%>
<jsp:include page="/WEB-INF/views/comm/mpage/MypageLeft.jsp"/>
<div class="sub-right-content">
<%-- 마이페이지 Right 영역 --%>
<jsp:include page="/WEB-INF/views/comm/mpage/MypageRight.jsp"/>
<div class="sub-right-content__section">
<h3 class="sub-right-content__title">상품 Q&A</h3>
<div class="table-wrapper">
<table class="table write">
<caption>해당 테이블에 대한 설명</caption>
<!-- 각 열 width 설정 -->
<colgroup>
<col style="width: 140px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th>작성자</th>
<td>
<div class="td-inner"><c:out value="${bbscttInfo.regusrNm}"/></div>
</td>
</tr>
<c:if test="${bbsInfo.answRegist eq 'Y'&& bbsInfo.bbscttSndngMthCd ne '03'}"><%--답변사용여부와 게시글 문자사용여부 체크--%>
<tr>
<th>답변받기</th>
<td>
<div class="td-inner">
<input class="input-text" type="text" title="해당 인풋에 대한 설명" name="answMbtlnb"
id="answMbtlnb" maxlength="13" value = "<c:out value = '${bbscttInfo.answMbtlnb}'/>"
placeholder="휴대폰번호'-'없이 입력">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox">
<input type="checkbox" value="Y" name="answSmsRecptn" class="chkAt"
<c:if test="${bbscttInfo.answSmsRecptn eq 'Y'}">checked</c:if>>
<span class="check"></span>
<span class="control-label">SMS 알림요청</span>
</label>
</div>
</div>
</td>
</tr>
</c:if>
<tr>
<th>상품</th>
<c:forEach var="goods" items="${goods}">
<td class="text-left">
<div class="board-inner-product">
<img src="${cdnurl}${goods.img}" width="64" alt="상품이미지" onerror="this.src='/pc/images/image_placeholder.png'">
<div class="board-inner-product__right">
<p class="board-inner-product__name">
<c:out value="${goods.goodsNm}"/>
<input type="hidden" name="goodsInnbArr[]" value="${goods.goodsInnb}"/>
</p>
</div>
</div>
</td>
</c:forEach>
</tr>
<tr>
<th>문의유형<span class="required-asterisk">*</span></th>
<td>
<div class="td-inner">
<div class="select-box">
<%--문항답변필수여부 --%>
<input type="hidden" name="qesitmEssntlAtArr[]" value="Y">
<%--문항명 --%>
<input type="hidden" name="qesitmNmArr[]" id="qesitmNm"
value="분류"/>
<%--문항고유번호 --%>
<input type="hidden" name="qesitmInnbArr[]" id="qesitmInnb"
<c:forEach var="itmAnswList" items="${qesitmAnswList}">
<c:if test="${itmAnswList.aditItmDvCd eq '03'}">
value = <c:out
value="${itmAnswList.qesitmInnb}"/>
</c:if>
</c:forEach>/>
<%--답변내용 --%>
<input type="hidden" name="answCnArr[]" id="answCn"
<c:forEach var="itmAnswList" items="${qesitmAnswList}">
<c:if test="${itmAnswList.aditItmDvCd eq '03'}">
value = <c:out value="${itmAnswList.answCn}"/>
</c:if>
</c:forEach>/>
<%--답변여부 --%>
<input type="hidden" name="qesitmAtArr[]" id="qesitmAt"
<c:forEach var="itmAnswList" items="${qesitmAnswList}">
<c:if test="${itmAnswList.aditItmDvCd eq '03'}">
<c:choose>
<c:when test="${empty itmAnswList.answCn}">value="N"</c:when>
<c:otherwise>value="Y"</c:otherwise>
</c:choose>
</c:if>
</c:forEach>>
<select class="md" id="qesitmNmC" name="itmInnbArr[]">
<option value="">분류 선택</option>
<c:forEach var="itm" items="${itmList}" varStatus="status">
<option value="<c:out value="${itm.itmInnb}"/>"
qesitm-innb="${itm.qesitmInnb}"
answ-Cn="${itm.itmCn}"
qesitm-nm="${itm.qesitmNm}"
<%--분류 답변 값 유지--%>
<c:forEach var="itmAnswList"
items="${qesitmAnswList}">
<c:if test="${itmAnswList.aditItmDvCd eq '03'}">
<c:if test="${itm.itmInnb eq itmAnswList.itmInnb }">selected</c:if>
</c:if>
</c:forEach>>
<c:out value="${itm.itmCn}"/>
</option>
</c:forEach>
</select>
</div>
</div>
</td>
</tr>
<c:if test="${not empty qesitmList}">
<c:forEach var="qesitmList" items="${qesitmList}">
<tr>
<c:if test="${ qesitmList.itmTyCd eq '01'}">
<th><c:out value="${ qesitmList.qesitmNm }"/><c:if
test="${qesitmList.qesitmEssntlAt eq 'Y'}"><span
class="required-asterisk">*</span></c:if></th>
<td>
<div class="td-inner">
<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" id="answCn${ status.index }"
class="answRadioC"
qesitm-innb='${itmCnList1.qesitmInnb}'
name="itmInnbArr${ qesitmList.qesitmInnb}[]"
value="${ itmCnList1.itmInnb}"
itm-cn="${ itmCnList1.itmCn }"
<c:forEach var="qesitmAnswList1" items="${qesitmAnswList}">
<c:if test="${qesitmAnswList1.itmTyCd eq '01'}">
<c:if test="${qesitmAnswList1.itmInnb eq itmCnList1.itmInnb}">checked</c:if>
</c:if>
</c:forEach>>
<label for="answCn${ status.index }">${ itmCnList1.itmCn }</label>
</div>
</c:if>
</c:forEach>
</div>
</div>
</td>
</c:if>
<c:if test="${ qesitmList.itmTyCd eq '02'}">
<th><c:out value="${ qesitmList.qesitmNm }"/><c:if
test="${qesitmList.qesitmEssntlAt eq 'Y'}"><span
class="required-asterisk">*</span></c:if></th>
<td>
<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}">
<c:set var="selected" value=""/>
<c:forEach var="qesitmAnswList2" items="${qesitmAnswList}">
<c:if test="${qesitmAnswList2.itmInnb eq itmCnList2.itmInnb}">
<c:set var="selected" value="selected"/>
</c:if>
</c:forEach>
<option value="${itmCnList2.itmInnb}"
itm-cn="${itmCnList2.itmCn}"
qesitm-innb="${itmCnList2.qesitmInnb}" ${selected}>
${itmCnList2.itmCn}
</option>
</c:if>
</c:forEach>
</select>
</div>
</td>
</c:if>
<c:if test="${ qesitmList.itmTyCd eq '03'}">
<th><c:out value="${ qesitmList.qesitmNm }"/><c:if
test="${qesitmList.qesitmEssntlAt eq 'Y'}"><span
class="required-asterisk">*</span></c:if></th>
<td>
<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="input-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 }"
itm-cn="${ itmCnList3.itmCn }"
qesitm-innb="${itmCnList3.qesitmInnb}"
<c:forEach var="qesitmAnswList3" items="${qesitmAnswList}">
<c:if test="${qesitmAnswList3.itmInnb eq itmCnList3.itmInnb}">checked</c:if>
</c:forEach>>
<span class="check"></span>
<span class="control-label">${ itmCnList3.itmCn }</span>
</label>
</div>
</c:if>
</c:forEach>
</td>
</c:if>
<c:if test="${ qesitmList.itmTyCd eq '04'}">
<th><c:out value="${ qesitmList.qesitmNm }"/><c:if
test="${qesitmList.qesitmEssntlAt eq 'Y'}"><span
class="required-asterisk">*</span></c:if></th>
<td>
<div class="td-inner">
<div class="input-grow-container">
<c:forEach items="${itmCnList}" var="itmCnList4">
<c:if test="${itmCnList4.qesitmInnb eq qesitmList.qesitmInnb}">
<div class="input-container">
<input type="hidden" name="qesitmEssntlAtArr[]"
value="${ qesitmList.qesitmEssntlAt }">
<input type="hidden" name="qesitmNmArr[]"
value="${ qesitmList.qesitmNm }">
<input type="hidden" name="qesitmAtArr[]"
class="answTxtAt" value="N">
<input type="hidden" class="answTxt"
name="qesitmInnbArr[]"
value="${ qesitmList.qesitmInnb }" disabled>
<input type="text" class="input-text mm answTxtC"
name="answCnArr[]" title="추가문항답변"
placeholder="${ itmCnList4.itmCn }"
maxlength="666"
itm-cn="${ itmCnList4.itmCn }"
qesitm-innb="${itmCnList4.qesitmInnb}"
itm-innb="${itmCnList4.itmInnb}"
<c:forEach var="qesitmAnswList4"
items="${qesitmAnswList}">
<c:if test="${qesitmAnswList4.itmInnb eq itmCnList4.itmInnb}">
value="<c:out value = '${qesitmAnswList4.answCn}'/>"
</c:if>
</c:forEach>>
<input type="hidden" class="answTxt" name="itmInnbArr[]"
value="${ itmCnList4.itmInnb }" disabled>
</div>
<br>
</c:if>
</c:forEach>
</div>
</div>
</td>
</c:if>
</tr>
</c:forEach>
</c:if>
<tr>
<th>제목</th>
<td>
<div class="td-inner">
<input class="input-text xl" type="text" title="해당 인풋에 대한 설명"
name="sj"
placeholder="제목을 입력하세요." maxlength="100"
value="<c:out value = "${bbscttInfo.sj}"/>">
<c:if test="${bbsInfo.secretBbsctt eq 'Y'}">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox">
<input type="checkbox" value="Y" name="secretBbscttAt"
<c:if test="${bbscttInfo.secretBbscttAt eq 'Y'}">checked</c:if>
onclick="fn_prevent_click(event);">
<span class="check"></span>
<span class="control-label">비밀글</span>
</label>
</div>
</c:if>
</div>
</td>
</tr>
<tr>
<th>내용</th>
<td>
<textarea class="textarea" rows="12" title="내용 입력란" name="cn"
id="cnBbsUpdt"><c:out value="${bbscttInfo.cn}"/></textarea>
</td>
</tr>
<%--게시판설정(파일첨부사용여부)--%>
<c:if test="${bbsInfo.filAtch eq 'Y'}">
<tr>
<th>이미지 등록</th>
<td>
<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>
</td>
</tr>
</c:if>
</tbody>
</table>
</div>
<div class="sub-bottom-btn-container">
<button type="button" class="btn xl outline" id="canclBtn"><spring:message code="button.close"/></button>
<button type="button" class="btn xl theme" id="updtBtn"><spring:message code="button.update"/></button>
</div>
</div>
</div>
</div>
</div>
</div>
</form>
</main>
<%-- 공통 Footer --%>
<jsp:include page="/WEB-INF/views/comm/Footer.jsp"/>
<!-- 수정/등록 알림 -->
<div id="result-alert" class="modal alert">
<div class="alert-content">
<p class="alert-content__text--sm">
게시글을 수정하였습니다.
</p>
</div>
<div class="alert-btn-container">
<a href="#" rel="modal:close" class="alert-btn alert-btn--confirm" id = "updtComptBtn">확인</a>
</div>
</div>
</body>
<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: "서버에서 응답을 받지 못했습니다.",
init: function () {
let dropzoneInstance = this;
let imageData = ${fileInfoGson};
// 각 이미지를 Dropzone에 추가
$.each(imageData, function (index, image) {
// Dropzone 파일 객체 생성
let mockFile = {name: image.orginlFilNm, size: image.filMg};
dropzoneInstance.emit("addedfile", mockFile);
const cdnurl = '<c:out value="${cdnurl}"/>';
const imagePath =cdnurl+image.filCours + image.sysFilNm;
dropzoneInstance.emit("thumbnail", mockFile, imagePath);
// 이미지 오류 처리
$(mockFile.previewElement).find("img").on("error", function () {
this.src = '/pc/images/image_placeholder.png'; // 대체 이미지 경로로 설정
});
// Dropzone에 파일 추가
mockFile.customId = image.bbscttAtchmnfilInnb;
dropzoneInstance.files.push(mockFile);
});
// 파일이 삭제될 때마다 호출되는 이벤트 핸들러
this.on("removedfile", function (file) {
const customId = file.customId;
const result = dropzoneDeleteFiles(customId, '<c:out value="${bbscttVO.sopmalCd}"/>', "BDFL", 1);
if (result === "N") {//파일 삭제 안할 시 복원
file.customData = {restored: true, customId: file.customId}; //삭제 취소에 의한 구분자 부여
myDropzone.emit("addedfile", file); // 파일을 다시 추가하여 삭제 취소
myDropzone.emit("thumbnail", file, file.dataURL); // 파일의 썸네일을 복원
}
if (myDropzone.files.length < maxFiles) {
$(".dz-message").show();
}
});
//파일 추가
this.on("addedfile", function (file) {
let restoreAt = '';
if (file.customData) { //파일 삭제 복구시
restoreAt = true;
} else {//새파일 추가시
restoreAt = false;
}
if (restoreAt) {// 파일 삭제 복구시 해당 id 재부여
file.customId = file.customData.customId;
} else {//새파일 추가시 임시 id 부여
let fileLength = myDropzone.files.length;
file.customId = "temp" + fileLength;
if (fileLength > maxFiles) {
const dictMaxFilesExceeded = myDropzone.options.dictMaxFilesExceeded;
alert(dictMaxFilesExceeded);
this.removeFile(file);
$(file.previewElement).find(".dz-remove").attr("disabled", true);
}
}
});
// maxFiles 제한 관련 이벤트 핸들러
this.on("maxfilesexceeded", function (file) {
const dictMaxFilesExceeded = myDropzone.options.dictMaxFilesExceeded;
alert(dictMaxFilesExceeded);
this.removeFile(file);
});
}
});
var inputElement = $('input[type="file"].dz-hidden-input');
// name 부여
inputElement.attr('name', 'file');
// id 부여
inputElement.attr('id', 'fileUpload');
if (myDropzone.files.length < maxFiles) {
$(".dz-message").show();
} else {
$(".dz-message").hide();
}
}
</script>
</html>

View File

@@ -0,0 +1,97 @@
<%@ 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" %>
<%--
Class Name : MyRvwR.jsp
Description : 마이페이지 나의리뷰
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-04-11 김혜인 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<c:choose>
<c:when test="${not empty resultMap.resultList.resultList}">
<div class="myReview">
<c:forEach var="resultList" items="${resultMap.resultList.resultList}">
<div class="myReview__item">
<div class="myReview__top">
<div class="cartItem">
<div class="cartItem__image">
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.cdnurl')"
var="cdnurl"/>
<img onclick="fn_move_goods_dtl(<c:out value="${resultList.goodsInnb}"/>)"
style="cursor:pointer;"
src="<c:out value="${cdnurl}${resultList.img}"/>"
onerror="this.src='/pc/images/image_placeholder.png'" alt="리뷰 상품 사진">
</div>
<div class="cartItem__productInfo">
<span class="myReview__date"><c:out value="${resultList.registDt}"/></span>
<a onclick="fn_move_goods_dtl(<c:out value="${resultList.goodsInnb}"/>)"
style="cursor:pointer;"
class="cartItem__productTitle"><c:out value="${resultList.goodsNm}"/></a>
</div>
</div>
<c:if test="${not empty resultMap.resultList.fileList}">
<div class="myReview__thumbs">
<c:forEach var="fileList" items="${resultMap.resultList.fileList}">
<c:if test="${fileList.bbscttInnb eq resultList.bbscttInnb}">
<img src="<c:out value = '${cdnurl}${fileList.filCours}${fileList.sysFilNm}'/>"
onerror="this.src='/pc/images/image_placeholder.png'" alt="리뷰사진">
</c:if>
</c:forEach>
</div>
</c:if>
</div>
<div class="myReview__body">
<c:if test="${not empty resultList.evlScore}">
<div class="reviewStars__wrapper">
<div class="reviewStars star-<fmt:formatNumber value="${resultList.evlScore}" pattern="##"/>"></div>
<span class="reviewStars__num"><fmt:formatNumber value="${resultList.evlScore}"
pattern="##"/></span>
</div>
</c:if>
<div class="myReview__content" style="white-space: pre-wrap;"><c:out value="${resultList.cn}"/></div>
<div class="myReview__btnWrapper">
<c:if test="${fn:length(resultList.cn) gt 500}">
<button class="myReview__moreBtn btn lg outline">더보기</button>
</c:if>
</div>
<div class="myReview__btnControls">
<button type="button" class="btn sm outline deleteBtn"
bbsctt-innb="<c:out value = '${resultList.bbscttInnb}'/>"
bbs-id="<c:out value = '${resultList.bbsId}'/>"
bbs-ty-cd="<c:out value = '${resultList.bbsTyCd}'/>"
goods-innb="<c:out value = '${resultList.goodsInnb}'/>">
<spring:message code="button.delete"/>
</button>
</div>
</div>
</div>
</c:forEach>
</div>
<input type="hidden" id="myRvwpageIndex" name="pageIndex"
value="<c:out value='${resultMap.bbscttVO.pageIndex}'/>"/>
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_move_myRvw"/>
</div>
</c:when>
<c:otherwise>
<div class="myReview">
<div class="myReview__no-result">
<img src="/pc/images/icon__no-result.png" alt="">
<p class="myReview__no-result-text">
<spring:message code="common.nodata"/>
</p>
</div>
</div>
</c:otherwise>
</c:choose>
</html>

View File

@@ -0,0 +1,639 @@
<%@ 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"%>
<%--
Class Name : MyRvwR.jsp
Description : 마이페이지 나의리뷰
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-04-11 김혜인 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<%-- 공통 include --%>
<jsp:include page="/WEB-INF/views/comm/Include.jsp"/>
</head>
<script>
$(document).ready(function() {
// /pc/script.js에 변수 선언됨
let boxTabs = $(".boxTab__tabBtn");
boxTabs.each(function (index) {
$(this).on("click", function () {
const divDv = $(this).attr('div-dv');
if(divDv == 'posblRvw'){
fn_move_writngPosblRvw(1);
}else if(divDv == 'myRvw'){
fn_move_myRvw(1);
}
});
});
const divDv = '<c:out value="${vo.divDv}"/>';
if (divDv === 'myRvw') {
$(".boxTab__tabBtn").eq(1).click();
} else {
$(".boxTab__tabBtn").eq(0).click();
}
// 작성 가능한 리뷰 이벤트 함수
fn_bind_writngPosblRvw();
// 리뷰 이벤트 함수
fn_bind_myRvwEvent();
$(document).on("click",".moveGoodsDtl",function(){
const goodsInnb = $(this).val();
fn_move_goods_dtl(goodsInnb);
});
});
//작성가능리뷰 조회
const fn_move_writngPosblRvw = (pageIndex) => {
//작성 가능 리뷰 조회 div
let posblRvwDiv = $("#posblRvwDiv");
if (!pageIndex) {
$('#wringPosblpageIndex').val(1);
} else {
$('#wringPosblpageIndex').val(pageIndex);
}
$.ajax({
type: "post",
url: "/sopmal/mpage/act/selectWritngPosblRvwInqire",
data:{"pageIndex":pageIndex},
success: function (data) {
if(posblRvwDiv.html()){
posblRvwDiv.empty();
}
posblRvwDiv.html(data);
}
});
}
//나의리뷰 조회
const fn_move_myRvw = (pageIndex) => {
//나의 리뷰 조회 div
let posblRvwDiv = $("#myRvwDiv");
if (!pageIndex) {
$('#myRvwpageIndex').val(1);
} else {
$('#myRvwpageIndex').val(pageIndex);
}
$.ajax({
type: "post",
url: "/sopmal/mpage/act/selectMyRvwInqire",
data:{"pageIndex":pageIndex},
success: function (data) {
if(posblRvwDiv.html()){
posblRvwDiv.empty();
}
posblRvwDiv.html(data);
//내용 html로 전환
$(".myReview__content").each(function(){
let cn = $('<div>').html($(this).text());
$(this).text(cn.text().trim());
});
}
});
}
//리뷰작성
const fn_move_writeRvw = (ordrGoodsOptnInnb,bbsTyCd,goodsInnb) => {
$.ajax({
type: "post",
url: "/sopmal/mpage/act/selectRvwWritngPopupForm",
data : {"ordrGoodsOptnInnb" : ordrGoodsOptnInnb,
"bbsTyCd" : bbsTyCd,
"goodsInnb" :goodsInnb},
success: function (data) {
if($("#modalDiv").html()){
fn_close_modal("orderReview-pop");
$(".dz-hidden-input").remove();
}
$("#modalDiv").html(data);
$("#orderReview-pop").modal();
$(".answSelectC").niceSelect();
}
});
}
/*********************************************************
* 작성 가능한 리뷰 이벤트 함수
*********************************************************/
const fn_bind_writngPosblRvw = () => {
//리뷰작성 클릭 시 모달 호출
$(document).on("click",".rvwBtn",function(){
/*주문 상품 옵션 고유번호*/
const ordrGoodsOptnInnb = $(this).attr("ordr-goods-optn-innb");
/*게시판 타입*/
const bbsTyCd = $(this).attr("bbs-ty-cd");
/*주문 상품 옵션 고유번호*/
const goodsInnb = $(this).val();
fn_move_writeRvw(ordrGoodsOptnInnb,bbsTyCd,goodsInnb);
});
/*리뷰 답변 항목 이벤트 제어*/
$(document).on('click','.rvwAnswRadioC',function(){
const radio = $(this);
//리뷰 항목 내용 요소 get
const score = radio.closest("div").find('[name="evlScoreArr[]"]');
//추가입력 항목 내용 요소 get
const qesitmInnb = radio.closest("div").find('[name="rvwQesitmInnbArr[]"]');
//항목 고유번호 내용 요소 get
const itmInnb = radio.closest("div").find('[name="rvwItmInnbArr[]"]');
//라디오 클릭으로 인한 제어 요소 get
const contrlTarget = radio.closest("div").find('.rvwAnswRadio');
//라디오 클릭 시 disabled 비활성
if(radio.is(":checked")){
const radioVal = $(radio).attr('itm-cn');
//평가 내용 set
score.val("");
score.val(radioVal);
//항목 내용 set
qesitmInnb.val("");
const qesitmInnbVal = $(radio).attr('qesitm-innb');
qesitmInnb.val(qesitmInnbVal);
//항목고유번호 내용 set
itmInnb.val("");
const itmInnbVal = $(radio).val();
itmInnb.val(itmInnbVal);
//라디오 주위 input값 disable false처리
contrlTarget.each(function() {
contrlTarget.prop("disabled",false);
radio.closest("div").find(".rvwAnswRadioAt").val("Y");
});
}else{
contrlTarget.each(function() {
contrlTarget.prop("disabled",true);
radio.closest("div").find(".rvwAnswRadioAt").val("N");
});
}
});
//추가입력 항목 라디오 'click' 이벤트
$(document).on('click','.answRadioC',function(){
const radio = $(this);
//추가입력 항목 내용 요소 get
const answ = radio.closest(".custom-radio-container").find('[name="answCnArr[]"]');
//추가입력 항목 내용 요소 get
const qesitmInnb = radio.closest(".custom-radio-container").find('[name="qesitmInnbArr[]"]');
//라디오 클릭으로 인한 제어 요소 get
const contrlTarget = radio.closest(".custom-radio-container").find('.answRadio');
//항목 고유번호 내용 요소 get
const itmInnb = radio.closest(".custom-radio-container").find('[name="itmInnbArr[]"]');
//라디오 클릭 시 disabled 비활성
if(radio.is(":checked")){
//답변 내용 초기화
answ.val("");
const radioVal = $(radio).attr('itm-cn');
answ.val(radioVal);
//항목 내용 set
qesitmInnb.val("");
const qesitmInnbVal = $(radio).attr('qesitm-innb');
qesitmInnb.val(qesitmInnbVal);
//항목고유번호 내용 set
itmInnb.val("");
const itmInnbVal = $(radio).val();
itmInnb.val(itmInnbVal);
//라디오 주위 input값 disable false처리
contrlTarget.each(function() {
contrlTarget.prop("disabled",false);
radio.closest(".custom-radio-container").find(".answRadioAt").val("Y");
});
}else{
contrlTarget.each(function() {
contrlTarget.prop("disabled",true);
radio.closest(".custom-radio-container").find(".answRadioAt").val("N");
});
}
});
//추가입력 항목 셀렉트 'change'이벤트
$(document).on('change','.answSelectC',function(){
const select = $(this);
const answ = select.closest(".reviewRadio__item").find('[name="answCnArr[]"]');
const qesitmInnb = select.closest(".reviewRadio__item").find('[name="qesitmInnbArr[]"]');
const contrlTarget = select.closest(".reviewRadio__item").find('.answSelect');
const option = $('option:selected', this);
if(select.val()!= ""){
//답변 내용 초기화
answ.val("");
const selectVal = $(option).attr('itm-cn');
answ.val(selectVal);
//항목 내용 set
qesitmInnb.val("");
const qesitmInnbVal = $(option).attr('qesitm-innb');
qesitmInnb.val(qesitmInnbVal);
//셀렉트 주위 input값 disable false처리
contrlTarget.each(function() {
contrlTarget.prop("disabled",false);
select.closest(".reviewRadio__item").find(".answSelectAt").val("Y");
});
}else{
contrlTarget.each(function() {
contrlTarget.prop("disabled",true);
select.closest(".reviewRadio__item").find(".answSelectAt").val("N");
});
}
});
//추가입력 항목 체크박스 'click'이벤트
$(document).on('click','.answChkC',function(){
const check = $(this);
const contrlTarget = check.closest(".reviewRadio__item").find('.answChk');
var isChecked = $(this).is(":checked");
//클릭한 체크박스 주위 input값 disable false처리
contrlTarget.each(function() {
if (isChecked) {
$(this).prop("disabled", false);
} else {
$(this).prop("disabled", true);
}
});
// 체크된 체크박스가 하나라도 있는지 확인
let anyChecked = $('.answChkC:checked').length > 0;
contrlTarget.each(function() {
if (anyChecked) {
check.closest(".reviewRadio__item").find(".answChkAt").val("Y");
} else {
check.closest(".reviewRadio__item").find(".answChkAt").val("N");
}
});
});
//추가입력 항목 텍스트 'input'이벤트
$(document).on('input','.answTxtC',function(){
const txt = $(this);
const contrlTarget = txt.closest("div").find('.answTxt');
const contrlAt = txt.closest("div").find('.answTxtAt');
//클릭한 체크박스 주위 input값 disable false처리
if(txt.val() != ""){
contrlTarget.each(function() {
contrlTarget.prop("disabled",false);
contrlAt.val("Y");
});
}else{
contrlTarget.each(function() {
contrlTarget.prop("disabled",true);
contrlAt.val("N");
});
}
});
$(document).on("change","#fileUpload",function (){
addFiles(event,0);
});
$(document).on('change keyup', "#bbsRegForm" ,function(){
fn_validation_rvw();
});
//리뷰 등록 버튼 이벤트
$(document).on("click","#regBtn",function(){
const bbsId = $("#bbsId").val();
fn_regist_bbsctt(bbsId);
});
}
/*********************************************************
* 나의 리뷰 이벤트 함수
*********************************************************/
/*validation 체크*/
function fn_validation_rvw() {
//등록 조건 충족시 버튼 활성화
const essntlChkCnt = $(".essntlChk[value='Y']").length;
const qesitmAtChkCnt = $(".qesitmAtChk[value='Y']").length;
let writngChrCnt = '';
let writngChrAt = false;
const cnLength = $("#cn").val().length;
if ($("#writngChrCntAt").val() === "Y") {
writngChrCnt = parseInt($("#writngChrCnt").val(), 0);
if (writngChrCnt > cnLength) {
writngChrAt = false;
} else {
writngChrAt = true;
}
} else {
if (cnLength >= 1) {
writngChrAt = true;
}
}
//한달리뷰는 포토리뷰만 허용
let photoAt = false;
if ($("#bbsTyCd").val() === '06' || ($("#bbsTyCd").val() === '07' && $("#filExtAt").val() === 'Y')) {
photoAt = true;
}
if (essntlChkCnt === qesitmAtChkCnt && writngChrAt && photoAt && $("#regProccess").val() === 'N') {
$("#regBtn").prop("disabled", false);
} else {
$("#regBtn").prop("disabled", true);
}
}
const fn_bind_myRvwEvent = () => {
// 리뷰 상세보기
$(document).on('click','.myReview__moreBtn', function () {
if ($(this).hasClass('opened')) {
$(this).closest('.myReview__body').find('.myReview__content').removeClass('opened');
$(this).removeClass('opened');
$(this).text('더보기');
return;
}
$(this).closest('.myReview__body').find('.myReview__content').addClass('opened');
$(this).addClass('opened');
$(this).text('닫기');
})
// 리뷰 이미지 상세보기
$(document).on('click','.myReview__thumbs > img', function () {
// 클릭한 이미지의 인덱스
var index = $(this).index();
// 모달 생성 후, 이미지 슬라이더 초기화
$('#reviewImage-pop').modal();
$(document).on($.modal.BEFORE_OPEN, '#reviewImage-pop',function (event, modal) {
if ($('.slider-for').hasClass('slick-initialized')) {
//slick 이미지 중복 제거
let targetSlick = $('.slider-for, .slider-nav');
targetSlick.slick('slickRemove', null, null, true);
targetSlick.slick('unslick');
}
return false;
});
const div = $(this).closest('.myReview__item');
const img = $(div).find('.myReview__thumbs').html();
// const img = $(div).find('.myReview__thumbs').html();
$('.slider-for, .slider-nav').append(img);
$(document).off($.modal.OPEN).on($.modal.OPEN,'#reviewImage-pop',function (event, modal) {
// 메인 리뷰 이미지
$('.slider-for').slick({
slidesToShow: 1,
slidesToScroll: 1,
arrows: true,
fade: true,
infinite: false,
speed: 0,
asNavFor: '.slider-nav',
initialSlide: index // 클릭한 이미지의 인덱스
});
// 썸네일 리뷰 이미지
$('.slider-nav').slick({
slidesToShow: 3,
slidesToScroll: 3,
dots: false,
infinite: false,
asNavFor: '.slider-for',
focusOnSelect: true,
initialSlide: index, // 클릭한 이미지의 인덱스
useTransform: false
});
});
});
$(document).on("click",".deleteBtn", function(){
const bbscttInnb = $(this).attr("bbsctt-innb");
const bbsId = $(this).attr("bbs-id");
const bbsTyCd = $(this).attr("bbs-ty-cd");
const goodsInnb = $(this).attr("goods-innb");
$("#qna-delete").modal();
$("#modalBbsctt").val(bbscttInnb);
$("#modalBbsId").val(bbsId);
$("#modalBbsTyCd").val(bbsTyCd);
$("#modalGoodsInnb").val(goodsInnb);
});
$("#alertDelBtn").on("click",function(){
const bbscttInnb = $("#modalBbsctt").val();
const bbsId = $("#modalBbsId").val();
const bbsTyCd = $("#modalBbsTyCd").val();
const goodsInnb = $("#modalGoodsInnb").val();
fn_delete_bbsctt(bbscttInnb,bbsId, bbsTyCd, goodsInnb);
});
}
//게시글 삭제
const fn_delete_bbsctt = (bbscttInnb, bbsId, bbsTyCd, goodsInnb) => {
let delBbscttInnbArr = [];
let delInfoArr = [];
const delInfo = {
"bbscttInnb": bbscttInnb,
"goodsInnb": goodsInnb,
"regusrDvCd": '01'
}
delBbscttInnbArr.push(bbscttInnb);
delInfoArr.push(delInfo);
const data = {
"delBbscttInnbArr": delBbscttInnbArr,
"bbsId": bbsId,
"bbsTyCd": bbsTyCd,
"delInfoArr": delInfoArr, /*선택 삭제시 각 게시글 정보*/
};
$.ajax({
type: 'post',
url: "/sopmal/mpage/act/deleteRvwBbscttDel",
data: JSON.stringify(data),
dataType: "json",
contentType: 'application/json',
success: function () {
alert('<spring:message code="success.common.delete"/>');
fn_close_modal('qna-delete');
fn_move_myRvw(1);
}
});
}
/*********************************************************
* 게시글 등록
*********************************************************/
const fn_regist_bbsctt = function(bbsId) {
$('#regBtn').unbind('click');
let url = '<c:url value="/sopmal/csc/insertBbscttRegist"/>';
let saveForm = $('#bbsRegForm');
let formData = new FormData();
//파일 업로드
let myDropzone = Dropzone.forElement("#contact-dropzone");
myDropzone.files.forEach(function(file){
formData.append("files",file);
/*한달리뷰시 파일존재여부 체크(validation)*/
});
if(formData.get("files") == null){
$("#filExtAt").val("N");
}
//내용 get해서 sj
$("[name='sj']").val("");
const cn = $("#cn").val();
const removeTag = cn.replace(/<[^>]+>/g, ''); // HTML 태그 제거
let truncatedSj = removeTag.slice(0, 28); // 28글자로 제한
if (truncatedSj.length > 28) {
truncatedSj += "..."; // 28글자가 넘으면 뒤에 ... 추가
}
//제목
formData.append('sj',truncatedSj);
//체크박스
$('.checkbox input[type="checkbox"]').each(function() {
if (!$(this).prop('checked')) {
fn_ctrl_disable([".checkbox"],);
}
});
//설정정보
formData.append('setupInfoInnb',$("setupInfoInnb").val());
//폼 내 input값 append
saveForm.serializeArray().forEach(function(item) {
formData.append(item.name, item.value);
});
disableButton('#regBtn');
$("#regProccess").val("Y");
$.ajax({
type: 'post',
url: url,
data: formData,
processData: false,
contentType: false,
success: function (result) {
result = JSON.parse(result.resBody.result);
if(result.denyRvw === '0'){
alert("해당 주문건은\n리뷰가 모두 작성되었습니다.");
}else{
if (result.result == '1') {
alert('<spring:message code="success.common.insert"/>');
} else {
alert('<spring:message code="fail.common.insert"/>');
}
}
$('#boardFormItmC').empty();
fn_close_modal("orderReview-pop");
fn_move_writngPosblRvw();
fn_mpage_info_refresh();
$("#regProccess").val("N");
},
error: function (data, status, error) {
fn_ajax_error(data, status, error); /*공통 처리 함수*/
$("#regProccess").val("N");
}
});
}
//마이페이지 리프레쉬
const fn_mpage_info_refresh = function () {
$.ajax({
type: 'post',
url: '<c:url value="/sopmal/mpage/ordr/selectMpageInfoRefreshInqire"/>',
success: function (data) {
$('#mypageRightContainer').empty();
$('#mypageRightContainer').html(data);
}
});
}
</script>
<body>
<%-- 공통 Header --%>
<jsp:include page="/WEB-INF/views/comm/Header.jsp"/>
<!-- 메인 컨텐츠 영역 -->
<main>
<div class="sub-wrapper">
<div class="sub-content">
<div class="sub-rl">
<%-- 마이페이지 Left 영역 --%>
<jsp:include page="/WEB-INF/views/comm/mpage/MypageLeft.jsp"/>
<div class="sub-right-content">
<%-- 마이페이지 Right 영역 --%>
<div id="mypageRightContainer">
<jsp:include page="/WEB-INF/views/comm/mpage/MypageRight.jsp"/>
</div>
<div class="sub-right-content__section">
<h3 class="sub-right-content__title">나의 리뷰</h3>
<div class="infoBox">
<h6 class="infoBox__title">안내사항</h6>
<ol class="infoBox__list">
<li>리뷰는 구매 확정 후 6개월 이내 작성 하실 수 있습니다.</li>
<li>한달리뷰는 포토리뷰이므로 사진첨부는 필수 입니다.</li>
<c:if test = "${mlgAccmlNtc.goodsRvwMlgPymntAt eq 'Y'}">
<li>텍스트 리뷰는 <fmt:formatNumber value="${mlgAccmlNtc.gnrlRvwMlgAccmlmnyAmt}" pattern="#,###"/>원/
포토 리뷰는 <fmt:formatNumber value="${mlgAccmlNtc.photoRvwMlgAccmlmnyAmt}" pattern="#,###"/>
<c:if test = "${mlgAccmlNtc.monthBbsExpsrAt eq 'Y' && mlgAccmlNtc.goodsRvwMlgPymntMtAt eq 'Y'}"><%--한달리뷰 사용여부에 따른 분기처리--%>
/ 한달 리뷰는 <fmt:formatNumber value="${mlgAccmlNtc.monthPhotoRvwMlgAccmlmnyAmt}" pattern="#,###"/>원
</c:if>
적립금이 적립되며
리뷰 작성 후 수정이 불가하니 참고 부탁드립니다.</li>
<c:if test ="${mlgAccmlNtc.aditPymntMlgAccmlmnyAmt > 0}">
<li>
텍스트 리뷰 / 포토 리뷰 작성시 추가 마일리지 <fmt:formatNumber value="${mlgAccmlNtc.aditPymntMlgAccmlmnyAmt}" pattern="#,###"/> 적립됩니다.
(<c:out value = "${mlgAccmlNtc.aditMlgPymntBgnDe}"/>~<c:out value = "${mlgAccmlNtc.aditMlgPymntEndDe}"/>)
</li>
</c:if>
<c:if test = "${mlgAccmlNtc.monthAditPymntMlgAccmlmnyAmt > 0 && mlgAccmlNtc.goodsRvwMlgPymntMtAt eq 'Y'}">
<li>
한달 리뷰 작성시 추가 마일리지 <fmt:formatNumber value="${mlgAccmlNtc.monthAditPymntMlgAccmlmnyAmt}" pattern="#,###"/> 적립됩니다.
(<c:out value = "${mlgAccmlNtc.monthAditMlgPymntBgnDe}"/>~<c:out value = "${mlgAccmlNtc.monthAditMlgPymntEndDe}"/>)
</li>
</c:if>
</c:if>
</ol>
</div>
<div class="boxTab">
<button class="boxTab__tabBtn current" div-dv = 'posblRvw'>작성 가능한 리뷰</button>
<button class="boxTab__tabBtn" div-dv = 'myRvw'>나의 리뷰</button>
</div>
<div class="boxTab__content current">
<div id = "posblRvwDiv"></div>
</div>
<div class="boxTab__content" >
<div id = "myRvwDiv"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</main>
<%-- 공통 Footer --%>
<jsp:include page="/WEB-INF/views/comm/Footer.jsp"/>
<div id = "modalDiv"></div>
<!-- 질문 삭제 모달 -->
<div id="qna-delete" class="modal alert">
<input type = "hidden" id="modalBbsctt">
<input type = "hidden" id="modalBbsId">
<input type = "hidden" id="modalBbsTyCd">
<input type = "hidden" id="modalGoodsInnb">
<div class="alert-content">
<p class="alert-content__text--sm">
삭제된 리뷰는 복구할 수 없으며
<br>
재작성은 불가합니다.
<br>
정말로 삭제 하시겠습니까?
</p>
</div>
<div class="alert-btn-container">
<a href="#" rel="modal:close" class="alert-btn alert-btn--cancel">취소</a>
<button type="button" class="alert-btn alert-btn--confirm" id = "alertDelBtn">확인</button>
</div>
</div>
<!-- 리뷰이미지 상세보기 -->
<div id="reviewImage-pop" class="modal modal--reviewImage" style="max-width: 1000px;">
<div class="modal-content">
<div class="reviewImage">
<div class="reviewImage__current">
<div class="slider-for"></div>
</div>
<div class="reviewImage__thumbs">
<div class="slider-nav"></div>
</div>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,334 @@
<%@ 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>

View File

@@ -0,0 +1,79 @@
<%@ 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>
<html lang="ko">
<c:choose>
<c:when test="${not empty resultMap.resultList}">
<div class="orderList">
<c:forEach var = "resultList" items="${resultMap.resultList}">
<div class="orderList__item">
<div class="orderList__item__inner">
<button type="button" class="orderList__image moveGoodsDtl" value="<c:out value ='${resultList.goodsInnb}'/>">
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.cdnurl')" var="cdnurl"/>
<img src="<c:out value ='${cdnurl}${resultList.img}'/>" alt="" onerror="this.src='/pc/images/image_placeholder.png'">
</button>
<div class="orderList__description">
<div class="orderList__description__first">
<div class="orderList__item__top">
<a onclick="" style="cursor:pointer;" class="orderList__orderNum"><c:out value='${resultList.ordrInnb}'/>
</a>
</div>
<a href="" class="orderList__productTitle"><c:out value='${resultList.goodsNm}'/></a>
<c:if test = "${not empty resultList.optnNm}">
<span class="orderList__option">옵션: <c:out value='${resultList.optnNm}'/></span>
</c:if>
</div>
<div class="orderList__description__second">
</div>
<div class="orderList__description__third">
<span class="orderList__orderQuantity">
작성리뷰수:
<span class="comma rvwCnt"><c:out value ='${resultList.rvwCnt}'/></span><br>/
구매확정수량:
<span class="comma ordrGoodsQy"><c:out value ='${resultList.purchsDcsnQy}'/></span>
</span>
</div>
<div class="orderList__btnControls">
<%--구매확정수량이 리뷰 작성 수 보다 클 때만 노출--%>
<c:if test = "${resultList.purchsDcsnQy > resultList.rvwCnt}">
<button type = "button" class="btn outline sm full rvwBtn"
ordr-goods-optn-innb = "<c:out value ='${resultList.ordrGoodsOptnInnb}'/>"
bbs-ty-cd = "06"
value='<c:out value ='${resultList.goodsInnb}'/>'>리뷰작성</button>
</c:if>
<c:if test = "${resultList.mtRvwAt eq 'Y'}">
<button type = "button" class="btn theme sm full rvwBtn"
ordr-goods-optn-innb = "<c:out value ='${resultList.ordrGoodsOptnInnb}'/>"
bbs-ty-cd = "07"
value='<c:out value ='${resultList.goodsInnb}'/>'>한달리뷰작성</button>
</c:if>
</div>
</div>
</div>
</div>
</c:forEach>
</div>
<input type="hidden" id="setupInfoInnb" name="setupInfoInnb" value="<c:out value='${resultMap.bbsInfo.setupInfoInnb}'/>" />
<input type="hidden" id="wringPosblpageIndex" name="pageIndex" value="<c:out value='${resultMap.bbscttVO.pageIndex}'/>" />
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_move_writngPosblRvw" />
</div>
</c:when>
<c:otherwise>
<div class="orderList">
<div class="orderList__no-result">
<img src="/pc/images/icon__no-result.png" alt="">
<p class="orderList__no-result-text">
작성 가능한 리뷰가 없습니다.
</p>
</div>
</div>
</c:otherwise>
</c:choose>
</html>

View File

@@ -0,0 +1,80 @@
<%@ 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"%>
<%--
Class Name : CouponDtlsR.jsp
Description : 마이페이지 쿠폰 내역
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-02-27 추지훈 최초 생성
--%>
<script>
$(document).ready(function() {
});
</script>
<div class="sub-tab__content current">
<div class="mileageList">
<c:choose>
<c:when test="${ not empty resultMap.cashList}">
<c:forEach var="list" items="${ resultMap.cashList}" varStatus="status">
<c:choose>
<c:when test = "${list.mlgAccmlDvCd eq 'add'}">
<c:set var="upAt" value="mileageList__item--saveUp"/>
</c:when>
<c:otherwise>
<c:set var="upAt" value=""/>
</c:otherwise>
</c:choose>
<div class="mileageList__item ${upAt}">
<div class="mileageList__itemHeader">
<div class="mileageList__itemHeaderMisc">
<span class="mileageList__itemDate"><c:out value="${ list.mpageRegistDt }"/></span>
<span class="mileageList__itemDot">·</span>
<span class="mileageList__itemBrand"><c:out value="${ list.sopmalNm }"/></span>
</div>
<span class="mileageList__itemTitle"><c:out value="${ list.mlgAccmlDvNm }"/> (잔여: <fmt:formatNumber value="${list.blce}" pattern="#,###"/>)</span>
</div>
<div class="mileageList__itemBody">
<span class="mileageList__itemDescription"><c:out value="${ list.mlgApplcDvNm }"/></span>
<span class="mileageList__itemNumber"><span class="comma"><fmt:formatNumber value="${list.accmlmnyAmt}" pattern="#,###"/></span></span>
</div>
<div class="mileageList__orderNum">
<c:if test="${ not empty list.ordrInnb && list.ordrInnb ne 0 }">
주문번호 <em><c:out value="${ list.ordrInnb }"/></em>
</c:if>
</div>
</div>
</c:forEach>
</c:when>
<c:otherwise>
<div class="orderList__no-result">
<img src="<c:url value="/pc/images/icon__no-result.png"/>" alt="">
<p class="orderList__no-result-text">마일리지내역이 없습니다.</p>
</div>
</c:otherwise>
</c:choose>
</div>
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_mlg_list" />
</div>
</div>
<div class="sub-tab__content">2</div>
<div class="sub-tab__content">3</div>
<div class="sub-tab__content">4</div>

View File

@@ -0,0 +1,397 @@
<%@ 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"%>
<%--
Class Name : CashDtlsRForm.jsp
Description : 마이페이지 GC 머니 내역
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<%-- 공통 include --%>
<jsp:include page="/WEB-INF/views/comm/Include.jsp"/>
</head>
<script>
$(document).ready(function() {
let pageIndex = '<c:out value="${ resultMap.paramVO.pageIndex }"/>';
let pageUnit = '<c:out value="${ resultMap.paramVO.pageUnit }"/>';
fn_select_mlg_list(pageIndex, pageUnit);
fn_start_display();
});
/******************************************************************
* 시작 화면 제어
******************************************************************/
const fn_start_display = function() {
/* 검색조건 > 날짜 구간 버튼 클릭 이벤트 */
$('.dateRange-btn').on('click', function() {
const date = $(this).attr('id');
$(this).closest('div').find('#dateRange').val(date);
if ('allDays' === date) {
$('#bgnDt, #endDt').val('');
return false;
}
fn_set_date('bgnDt', 'endDt', 'endDt', date);
});
/* 검색 버튼 클릭 이벤트 */
$('#btnSearch').on('click', function() {
fn_select_mlg_list(1);
});
/*pin 번호 등록*/
$(document).on("click","#pinAlertBtn",function(){
if ($("#pinAlertBtn").text() === "등록") {
fn_add_cash();
} else {
$("#closeBtn").click();
}
});
}
/* 검색조건 세팅 */
const fn_set_param = function() {
const params = ${paramVO};
const keys = Object.keys(params);
for (let i = 0; i < keys.length; i++) {
let key = keys[i];
let data = params[key];
if ('bgnDt' == key || 'endDt' == key) {
if (!fn_is_empty(data)) {
for (let i = 0; i < data.length; i++) {
$('#' + key).val(data);
}
}
}
if ('dateRange' == key) {
$('#'+ data).trigger('click');
}
if ('srchwrd' == key) {
$('#' + key).val(data);
}
}
}
/******************************************************************
* 마일리지 목록 조회
******************************************************************/
const fn_select_mlg_list = function(pageIndex, pageUnit) {
const currentTabTxt = $(".sub-tab__btn.current").text();
if(currentTabTxt === '적립') {
$("#srchMlgAccmlDvCd").val("add");
} else if (currentTabTxt === 'use') {
$("#srchMlgAccmlDvCd").val("use");
} else if (currentTabTxt === 'exp') {
$("#srchMlgAccmlDvCd").val("exp");
}
let dataStr;
if(!pageIndex) {
$('#pageIndex').val(1);
} else {
$('#pageIndex').val(pageIndex);
}
if(!pageUnit) {
dataStr = $('#listForm').serialize();
} else {
if($('#pageUnit').length){
$('#pageUnit').val(pageUnit);
dataStr = $('#listForm').serialize();
} else {
dataStr = $('#listForm').serialize()+'&pageUnit='+pageUnit;
}
}
$('#pageIndex').val(pageIndex);
$.ajax({
type: "post",
url : '<c:url value="/sopmal/mpage/bnef/selectCashDtlsInqire"/>',
data : dataStr,
success:function(resultHtml) {
$('#pageDiv').empty();
$('#pageDiv').html(resultHtml);
}
});
}
/******************************************************************
* 마일리지 목록 조회 지급구분
******************************************************************/
const fn_select_mlg_list_dv = function(srchMlgAccmlDvCd) {
$.ajax({
type: "post",
url : '<c:url value="/sopmal/mpage/bnef/selectCashDtlsInqire"/>',
data : {
srchMlgAccmlDvCd : srchMlgAccmlDvCd
},
success:function(resultHtml) {
$('#pageDiv').empty();
$('#pageDiv').html(resultHtml);
}
});
}
/****************************************************************
상품권 충전 서비스 시작
****************************************************************/
const fn_select_crtnb = () => {
$.ajax({
type: "post",
url: '<c:url value="/sopmal/mpage/bnef/selectGiftCardCrtfcNb"/>',
data: {crtfcNb: $('#crtfcNb').val()},
success: function (result) {
result = JSON.parse(result.resBody.result);
$("#pinMsg").text(result.message);
const at = result.at;
if(at.possibleAt === 'Y'){
$("#pinAlertBtn").text("등록");
$('#pinNb').show();
$('#pinNb').val('');
$('#pinNb').focus();
$("#alertCrtnb").val(result.crtfcNb)
}else{
$("#pinAlertBtn").text("닫기");
$('#pinNb').hide();
}
$('#pinBtn').click();
}
});
}
/****************************************************************
상품권 충전
****************************************************************/
const fn_add_cash = () => {
$.ajax({
type: "post",
url: '<c:url value="/sopmal/mpage/bnef/insertGiftCard"/>',
data: {pinNb: $('#pinNb').val(),
crtfcNb: $('#alertCrtnb').val()},
success: function (result) {
result = JSON.parse(result.resBody.result);
alert(result.message);
$("#crtfcNb").val("");
$("#closeBtn").click();
$("#calBlce").text(fn_format_comma(result.blce));
fn_select_mlg_list(1); // 목록 새로고침
}
});
}
</script>
<body>
<%-- 공통 Header --%>
<jsp:include page="/WEB-INF/views/comm/Header.jsp"/>
<!-- 메인 컨텐츠 영역 -->
<main>
<div class="sub-wrapper">
<div class="sub-content">
<div class="sub-rl">
<%-- 마이페이지 Left 영역 --%>
<jsp:include page="/WEB-INF/views/comm/mpage/MypageLeft.jsp"/>
<div class="sub-right-content">
<%-- 마이페이지 Right 영역 --%>
<jsp:include page="/WEB-INF/views/comm/mpage/MypageRight.jsp"/>
<div class="sub-right-content__section">
<h3 class="sub-right-content__title">GC 머니 내역</h3>
<div class="mileageStatus">
<div class="mileageStatusCurrent">
<svg xmlns="http://www.w3.org/2000/svg" width="67" height="63" viewBox="0 0 67 63"
fill="none">
<g clip-path="url(#clip0_872_54192)">
<g style="mix-blend-mode:darken">
<path
d="M43.7905 51.5702C56.5262 51.5702 66.8505 41.2459 66.8505 28.5102C66.8505 15.7745 56.5262 5.4502 43.7905 5.4502C31.0548 5.4502 20.7305 15.7745 20.7305 28.5102C20.7305 41.2459 31.0548 51.5702 43.7905 51.5702Z"
fill="#DADBE1"></path>
</g>
<path d="M4.93945 15.2997V13.7197" stroke="#3B3B3D" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M2.58 17.6494H1" stroke="#3B3B3D" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M4.93945 20.0098V21.5898" stroke="#3B3B3D" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M7.28906 17.6494H8.86906" stroke="#3B3B3D" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M26.1895 2.42V1" stroke="#3B3B3D" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M24.0704 4.54004H22.6504" stroke="#3B3B3D" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M26.1895 6.66016V8.08016" stroke="#3B3B3D" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M28.3105 4.54004H29.7305" stroke="#3B3B3D" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M55.8999 13.9805H18.9199V21.8905H55.8999V13.9805Z" fill="white"
stroke="#3B3B3D" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"></path>
<path d="M60.1909 21.8896H23.2109V29.8096H60.1909V21.8896Z" fill="white"
stroke="#3B3B3D" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"></path>
<path d="M54.3804 29.8096H17.4004V37.7196H54.3804V29.8096Z" fill="white"
stroke="#3B3B3D" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"></path>
<path d="M57.6909 37.7197H20.7109V45.6397H57.6909V37.7197Z" fill="white"
stroke="#3B3B3D" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"></path>
<path d="M61.8804 45.6396H24.9004V53.5496H61.8804V45.6396Z" fill="white"
stroke="#3B3B3D" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"></path>
<path d="M57.6909 53.5498H20.7109V61.4698H57.6909V53.5498Z" fill="white"
stroke="#3B3B3D" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"></path>
<g style="mix-blend-mode:darken">
<path
d="M50.6004 42.0604C50.6004 43.2804 50.5104 44.4704 50.3404 45.6404C49.9204 48.4604 49.0204 51.1304 47.7204 53.5504C46.0604 56.6504 43.7504 59.3604 40.9604 61.4704H20.7104V53.5504H24.9004V45.6404H20.7104V37.7204H17.4004V29.8104H23.2104V21.8904H18.9204V18.7604C21.2204 18.0404 23.6604 17.6504 26.1904 17.6504C31.2704 17.6504 36.0004 19.2104 39.9104 21.8904C42.9204 23.9304 45.4504 26.6504 47.2904 29.8104C48.7004 32.2104 49.7004 34.8804 50.2004 37.7204C50.4704 39.1304 50.6004 40.5804 50.6004 42.0604Z"
fill="#DADBE1"></path>
</g>
<path
d="M2.54078 48.8405H38.8708C39.6608 46.7305 40.1108 44.4505 40.1108 42.0605H1.30078C1.30078 44.4505 1.75078 46.7305 2.54078 48.8405Z"
fill="white" stroke="#3B3B3D" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"></path>
<path
d="M20.7098 61.4709C26.1498 61.4709 31.0498 59.2309 34.5798 55.6309H6.83984C10.3598 59.2309 15.2698 61.4709 20.7098 61.4709Z"
fill="white" stroke="#3B3B3D" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"></path>
<path
d="M6.84102 55.6306H34.581C36.461 53.7106 37.921 51.4106 38.881 48.8506H2.54102C3.50102 51.4106 4.96102 53.7206 6.84102 55.6306Z"
fill="white" stroke="#3B3B3D" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"></path>
<path
d="M6.84102 28.4902C4.96102 30.4102 3.50102 32.7102 2.54102 35.2702H38.871C37.911 32.7102 36.451 30.4002 34.571 28.4902H6.84102Z"
fill="white" stroke="#3B3B3D" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"></path>
<path
d="M1.30078 42.0603H40.1208C40.1208 39.6703 39.6708 37.3903 38.8808 35.2803H2.54078C1.75078 37.3903 1.30078 39.6703 1.30078 42.0603Z"
fill="white" stroke="#3B3B3D" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"></path>
<path
d="M20.7098 22.6504C15.2698 22.6504 10.3698 24.8904 6.83984 28.4904H34.5798C31.0598 24.8904 26.1498 22.6504 20.7098 22.6504Z"
fill="white" stroke="#3B3B3D" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"></path>
<path
d="M26.1893 61.4704C36.9091 61.4704 45.5993 52.7802 45.5993 42.0604C45.5993 31.3405 36.9091 22.6504 26.1893 22.6504C15.4694 22.6504 6.7793 31.3405 6.7793 42.0604C6.7793 52.7802 15.4694 61.4704 26.1893 61.4704Z"
fill="white" stroke="#3B3B3D" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"></path>
<path class="svg-themeColor"
d="M19.3923 35.9873C19.5007 35.229 20.3132 34.3623 21.4507 34.3623C22.4798 34.3623 23.2923 35.1206 23.5632 35.879L26.0548 44.1665H26.109L28.6007 35.879C28.8173 35.1206 29.6298 34.3623 30.7132 34.3623C31.8507 34.3623 32.6632 35.229 32.7715 35.9873L34.6673 47.6873V48.0665C34.6673 48.9873 34.0173 49.5831 33.1507 49.5831C32.0673 49.5831 31.634 49.0956 31.5257 48.1206L30.334 39.5623H30.2798L27.7882 48.3373C27.6257 48.8248 27.2465 49.529 26.109 49.529C24.9715 49.529 24.5923 48.8248 24.4298 48.3373L21.8298 39.5081H21.7757L20.5298 48.0665C20.3673 49.0415 19.9882 49.529 18.9048 49.529C17.984 49.5831 17.334 48.9873 17.334 48.0665C17.334 47.9581 17.334 47.8498 17.334 47.6873L19.3923 35.9873Z"
fill="#3B3B3D"></path>
</g>
<defs>
<clipPath id="clip0_872_54192">
<rect width="66.86" height="62.47" fill="white"></rect>
</clipPath>
</defs>
</svg>
<span class="mileageStatusCurrent__title">잔여 GC 머니</span>
<span class="mileageStatusCurrent__number"><span class="comma" id="calBlce"><fmt:formatNumber value="${not empty resultMap.blce ? resultMap.blce : 0}" pattern="#,###"/></span></span>
<span class="mileageStatusCurrent__unit">점</span>
</div>
<div class="mileageStatusCurrent">
<input class="input-text full" type="search" title="검색어 입력" style="width : 300px; margin-right: 10px"
id="crtfcNb" name="crtfcNb" maxlength="50"
placeholder="등록하실 상품권 번호를 입력해 주세요.">
<button type="button" class="btn md dark" onclick="fn_select_crtnb();">
조회
</button>
</div>
</div>
<form id="listForm">
<input type="hidden" id="mlgInnb" name="mlgInnb" value=""/>
<input type="hidden" id="pageIndex" name="pageIndex" value="${paramVO.pageIndex}}"/>
<input type="hidden" id="pageUnit" name="pageUnit" value="${paramVO.pageUnit}"/>
<input type="hidden" id="srchMlgAccmlDvCd" name="srchMlgAccmlDvCd" value=""/>
<div class="customer-search">
<div class="customer-search__row justify-start">
<div class="customer-search__controls">
<div class="dateRange-btnContainer">
<input type="hidden" name="dateRange" id="dateRange" value="allDays">
<button type="button" class="dateRange-btn" id="7D">일주일</button>
<button type="button" class="dateRange-btn" id="1M">1개월</button>
<button type="button" class="dateRange-btn" id="3M">3개월</button>
<button type="button" class="dateRange-btn selected" id="allDays">전체</button>
</div>
<div class="input-container">
<input type="text" name="srchStartDate" id="bgnDt" class="datepicker" title="시작 날짜 선택" autocomplete="off">
<span class="tilde">~</span>
<input type="text" name="srchEndDate" id="endDt" class="datepicker" title="종료 날짜 선택" autocomplete="off">
</div>
</div>
<button type="button" id="btnSearch" class="btn md dark">검색</button>
</div>
</div>
<div class="sub-tab">
<div class="sub-tab__trigger">
<button class="sub-tab__btn current" type="button" onclick="fn_select_mlg_list(1);">전체</button>
<c:if test = "${not empty resultMap.mlgAccmlDv}">
<c:forEach var = "mlgAccmlDv" items = "${resultMap.mlgAccmlDv}">
<c:if test="${mlgAccmlDv.cd eq 'add' || mlgAccmlDv.cd eq 'dn'}">
<button class="sub-tab__btn" type="button"
onclick="fn_select_mlg_list_dv('<c:out value="${mlgAccmlDv.cd}"/>');"><c:out value="${mlgAccmlDv.cdNm}"/>
</button>
</c:if>
</c:forEach>
</c:if>
</div>
<div id="pageDiv">
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</main>
<%-- pin 번호 인증 모달--%>
<a href="#alert-01" rel="modal:open" id="pinBtn"></a>
<div id="alert-01" class="modal alert">
<div class="alert-content">
<p class="alert-content__text--sm" id="pinMsg"></p>
<br>
<input type="text" name="pinNb" id="pinNb" class="input-text full" placeholder="상품권 PIN 번호를 입력해 주세요." maxlength="50">
<input type = "hidden" name = "crtfcNb" id = "alertCrtnb"/>
</div>
<div class="alert-btn-container">
<button class="alert-btn alert-btn--confirm" id="pinAlertBtn">확인</button>
<a href="#" rel="modal:close" id="closeBtn"></a>
</div>
</div>
<%-- 공통 Footer --%>
<jsp:include page="/WEB-INF/views/comm/Footer.jsp"/>
</body>
</html>

View File

@@ -0,0 +1,322 @@
<%@ 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"%>
<%--
Class Name : CouponDtlsR.jsp
Description : 마이페이지 쿠폰 내역
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-02-27 추지훈 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<%-- 공통 include --%>
<jsp:include page="/WEB-INF/views/comm/Include.jsp"/>
</head>
<script>
$(document).ready(function() {
let pageIndex = '<c:out value="${ resultMap.paramVO.pageIndex }"/>';
let pageUnit = '<c:out value="${ resultMap.paramVO.pageUnit }"/>';
let pageIndexDwld = '<c:out value="${ resultMapDwld.paramVO.pageIndex }"/>';
let pageUnitDwld = '<c:out value="${ resultMapDwld.paramVO.pageUnit }"/>';
fn_select_useposbl_coupon(pageIndex, pageUnit);
});
let alldwldCnt = '${ not empty resultMap.dwldPosblCouponCnt ? resultMap.dwldPosblCouponCnt : '0' }';
/************************************************
* 사용 가능 쿠폰 목록 조회
*************************************************/
const fn_select_useposbl_coupon = function(pageIndex, pageUnit) {
let dataStr;
if(!pageIndex) {
$('#pageIndex').val(1);
} else {
$('#pageIndex').val(pageIndex);
}
if(!pageUnit) {
dataStr = $('#holdListForm').serialize();
} else {
if($('#pageUnit').length){
$('#pageUnit').val(pageUnit);
dataStr = $('#holdListForm').serialize();
} else {
dataStr = $('#holdListForm').serialize()+'&pageUnit='+pageUnit;
}
}
$('#pageIndex').val(pageIndex);
$.ajax({
type: "post",
url : '<c:url value="/sopmal/mpage/bnef/selectCouponUsePosblDtlsInqire"/>',
data : dataStr,
success:function(resultHtml) {
$('#usePosblCouponDiv').empty();
$('#usePosblCouponDiv').html(resultHtml);
}
});
}
/************************************************
* 다운로드 가능 쿠폰 목록 조회
*************************************************/
const fn_select_dwld_coupon = function(pageIndexDwld, pageUnitDwld) {
let dataStr;
if(!pageIndexDwld) {
$('#pageIndexDwld').val(1);
} else {
$('#pageIndexDwld').val(pageIndexDwld);
}
if(!pageUnitDwld) {
dataStr = $('#dwldListForm').serialize();
} else {
if($('#pageUnitDwld').length){
$('#pageUnitDwld').val(pageUnitDwld);
dataStr = $('#dwldListForm').serialize();
} else {
dataStr = $('#dwldListForm').serialize()+'&pageUnitDwld='+pageUnitDwld;
}
}
$('#pageIndexDwld').val(pageIndexDwld);
$.ajax({
type: "post",
url : '<c:url value="/sopmal/mpage/bnef/selectDwldCouponDtlsInqire"/>',
data : dataStr,
success:function(resultHtml) {
$('#dwldCouponDiv').empty();
$('#dwldCouponDiv').html(resultHtml);
}
});
}
/************************************************
* 쿠폰 상세 정보 조회 팝업 : 다운로드 가능 쿠폰
*************************************************/
const fn_open_modal_coupon_dtl = function(modalDivSltr, modalSlrt, url, param, sopmalCd, couponSndngInnb){
var couponInnb = param
$.ajax({
type: 'post',
url: url,
data: {
couponInnb : couponInnb,
sopmalCd : sopmalCd,
couopnSndngInnb : couponSndngInnb
},
success: function (data) {
$(modalSlrt).remove();
$(modalDivSltr).html(data);
$(modalSlrt).modal();
}
});
};
/************************************************
* 쿠폰 상세 정보 조회 팝업 : 사용가능 쿠폰
*************************************************/
const fn_open_modal_dwldcoupon_dtl = function(modalDivSltr, modalSlrt, url, param, sopmalCd){
var dwldCouponInnb = param
$.ajax({
type: 'post',
url: url,
data: {
dwldCouponInnb : dwldCouponInnb,
sopmalCd : sopmalCd
},
success: function (data) {
$(modalSlrt).remove();
$(modalDivSltr).html(data);
$(modalSlrt).modal();
}
});
};
/************************************************
* 인증번호 입력 쿠폰 등록
*************************************************/
const fn_regist_offline_coupon = function() {
if (fn_is_empty($('#oflneCouponCrtnb').val())) {
alert("등록하실 쿠폰 번호를 입력해 주세요.");
return false;
}
const data = $('#couponCodeRegistForm').serialize();
if (confirm('인증번호 쿠폰을 <spring:message code="confirm.common.insert"/>')) {
$.ajax({
type: "post",
url: '<c:url value="/sopmal/mpage/bnef/insertCouponRegist"/>',
data: data,
success: function (result) {
const parseResult = JSON.parse(result.resBody.result);
if (parseResult.status === '0') {
alert('<spring:message code="success.common.insert"/>');
// $('#useCouponListBtn').click();
location.reload();
$('#oflneCouponCrtnb').val('');
} else {
alert(parseResult.message);
}
}
});
}
}
/************************************************
* 쿠폰 다운로드 단건
*************************************************/
const fn_regist_dwld_coupon = function(couponInnb, sopmalCd, couponSndngInnb, cupnpkInnb, cupnpkNm, cupnpkDc) {
$.ajax({
type: "post",
url: '<c:url value="/sopmal/mpage/bnef/insertDwldCouponAllRegist"/>',
data: {
couponInnb: couponInnb,
sopmalCd: sopmalCd,
couponSndngInnb : couponSndngInnb,
cupnpkInnb : cupnpkInnb,
cupnpkNm : cupnpkNm,
cupnpkDc : cupnpkDc
},
success: function (resultHtml) {
alert('<spring:message code="success.common.save"/>');
// $('#useCouponListBtn').click();
location.reload();
}
});
}
/************************************************
* (모든) 쿠폰 다운로드 다건
*************************************************/
const fn_regist_dwld_coupon_all = function() {
const data = $('#dwldListForm').serialize();
if (alldwldCnt > 0) {
$.ajax({
type: "post",
url: '<c:url value="/sopmal/mpage/bnef/insertDwldCouponAllRegist"/>',
data: data,
success: function (resultHtml) {
alert('<spring:message code="success.common.save"/>');
// $('#useCouponListBtn').click();
location.reload();
}
});
} else {
alert('다운로드 받을 쿠폰이 없습니다.');
}
}
</script>
<body>
<%-- 공통 Header --%>
<jsp:include page="/WEB-INF/views/comm/Header.jsp"/>
<!-- 메인 컨텐츠 영역 -->
<main>
<div class="sub-wrapper">
<div class="sub-content">
<div class="sub-rl">
<%-- 마이페이지 Left 영역 --%>
<jsp:include page="/WEB-INF/views/comm/mpage/MypageLeft.jsp"/>
<div class="sub-right-content">
<%-- 마이페이지 Right 영역 --%>
<jsp:include page="/WEB-INF/views/comm/mpage/MypageRight.jsp"/>
<div class="sub-right-content__section">
<h3 class="sub-right-content__title">쿠폰 내역</h3>
<form id="couponCodeRegistForm">
<div class="customer-search">
<div class="customer-search__row justify-start">
<input class="input-text customer-search__search" type="search" title="검색어 입력" id="oflneCouponCrtnb" name="oflneCouponCrtnb"
placeholder="등록하실 쿠폰 번호를 입력해 주세요.">
<button type="button" class="btn md dark" onclick="fn_regist_offline_coupon();">쿠폰등록</button>
</div>
</div>
</form>
<div class="boxTab">
<button class="boxTab__tabBtn current" id="useCouponListBtn" onclick="fn_select_useposbl_coupon(); return false;">사용가능 쿠폰 (<c:out value="${ not empty resultMap.usePosblCouponCnt ? resultMap.usePosblCouponCnt : '0' }"/>)</button>
<button class="boxTab__tabBtn" onclick="fn_select_dwld_coupon(); return false;">쿠폰 다운로드 (<c:out value="${ not empty resultMap.dwldPosblCouponCnt ? resultMap.dwldPosblCouponCnt : '0' }"/>)</button>
</div>
<%-- 사용가능 쿠폰 내역 --%>
<div class="boxTab__content current" id="usePosblCouponDiv">
</div>
<%-- 다운로드 가능 쿠폰 내역--%>
<div class="boxTab__content" id="dwldCouponDiv">
</div>
</div>
</div>
</div>
</div>
</div>
</main>
<!-- 쿠폰정보 모달 -->
<div id="modalDiv">
</div>
<%-- 공통 Footer --%>
<jsp:include page="/WEB-INF/views/comm/Footer.jsp"/>
</body>
</html>

View File

@@ -0,0 +1,128 @@
<%@ 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"%>
<%--
Class Name : CouponDtlsR.jsp
Description : 마이페이지 쿠폰 내역
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-02-27 추지훈 최초 생성
--%>
<form id="dwldListForm">
<input type="hidden" id="pageIndexDwld" name="pageIndex" value="<c:out value="${ resultMapDwld.paramVO.pageIndex }"/>"/>
<input type="hidden" id="recordCountPerPageDwld" name="recordCountPerPage" value="<c:out value="${ resultMapDwld.paramVO.recordCountPerPage }"/> "/>
<input type="hidden" id="sopmalCdDwld" name="sopmalCd" value=""/>
<input type="hidden" id="mbrInnbDwld" name="mbrInnb" value=""/>
<input type="hidden" id="mbrDvCdDwld" name="mbrDvCd" value=""/>
<c:if test="${ fn:length(resultMapDwld.resultList) > 0 }">
<div class="couponList__btnContainer">
<button type="button" class="btn theme" onclick="fn_regist_dwld_coupon_all();">모든 쿠폰 다운로드</button>
</div>
</c:if>
<c:choose>
<c:when test="${ not empty resultMapDwld.resultList && fn:length(resultMapDwld.resultList) > 0 }">
<div class="couponList">
<c:forEach items="${ resultMapDwld.resultList }" var="couponList" varStatus="status">
<div class="couponList__item">
<div class="couponList__left">
<input type="hidden" name="couponArray" value="<c:out value="${ couponList.couponInnb }"/>" />
<p class="couponList__subTitle">
<c:out value="${ couponList.cupnpkNm }"/>
</p>
<p class="couponList__title">
<c:out value="${ couponList.couponSndngNm }"/><br>
<span class="couponList__date"><c:out value="${ couponList.coupNm }"/></span>
</p>
<p class="couponList__date">
<c:choose>
<c:when test="${ 'Y' eq couponList.dwldPdLmttAt }">
<c:out value="${couponList.dwldBgnDt}" /> ~
<c:out value="${couponList.dwldEndDt}" />
<c:if test="${ 0 lt couponList.validpdDay }"><span class="couponList__dayLeft">(<c:out value="${ couponList.validpdDay }"/>일 남음)</span></c:if>
</c:when>
<c:otherwise>
제한없음
</c:otherwise>
</c:choose>
</p>
<button type="button"
class="btn sm gray2 couponList__checkBtn"
onclick="fn_open_modal_coupon_dtl('#modalDiv', '#coupon-info-pop', '<c:out value="/sopmal/mpage/bnef/selectDwldYCouponDtlInfoInqirePopup"/>', '<c:out value="${ couponList.couponInnb }"/>', '<c:out value="${ couponList.sopmalCd }"/>', '<c:out value="${ couponList.couponSndngInnb }"/>'); return false;"
>
조회
</button>
</div>
<div class="couponList__right">
<div class="couponList__image">
<c:choose>
<c:when test="${ couponList.sopmalCd eq 'NC' }">
<img src="/pc/images/쿠폰이미지01.png" onerror="this.src='/pc/images/image_placeholder.png'" alt="">
</c:when>
<c:when test="${ couponList.sopmalCd eq 'CH' }">
<img src="/pc/images/쿠폰이미지02.png" onerror="this.src='/pc/images/image_placeholder.png'" alt="">
</c:when>
<c:when test="${ couponList.sopmalCd eq 'TZ' }">
<img src="/pc/images/쿠폰이미지03.png" onerror="this.src='/pc/images/image_placeholder.png'" alt="">
</c:when>
<c:when test="${ couponList.sopmalCd eq 'DT' }">
<img src="/pc/images/쿠폰이미지04.png" onerror="this.src='/pc/images/image_placeholder.png'" alt="">
</c:when>
<c:when test="${ couponList.sopmalCd eq 'PL' }">
<img src="/pc/images/쿠폰이미지05.png" onerror="this.src='/pc/images/image_placeholder.png'" alt="">
</c:when>
<c:when test="${ couponList.sopmalCd eq 'LF' }">
<img src="/pc/images/쿠폰이미지06.png" onerror="this.src='/pc/images/image_placeholder.png'" alt="">
</c:when>
<c:when test="${ couponList.sopmalCd eq 'AF' }">
<img src="/pc/images/쿠폰이미지07.png" onerror="this.src='/pc/images/image_placeholder.png'" alt="">
</c:when>
<c:when test="${ couponList.sopmalCd eq 'DL' }">
<img src="/pc/images/쿠폰이미지08.png" onerror="this.src='/pc/images/image_placeholder.png'" alt="">
</c:when>
<c:when test="${ couponList.sopmalCd eq 'JM' }">
<img src="/pc/images/쿠폰이미지09.png" onerror="this.src='/pc/images/image_placeholder.png'" alt="">
</c:when>
<c:when test="${ couponList.sopmalCd eq 'NB' }">
<img src="/pc/images/쿠폰이미지10.png" onerror="this.src='/pc/images/image_placeholder.png'" alt="">
</c:when>
<c:when test="${ couponList.sopmalCd eq 'BD' }">
<img src="/pc/images/쿠폰이미지11.png" onerror="this.src='/pc/images/image_placeholder.png'" alt="">
</c:when>
</c:choose>
</div>
<button type="button" class="btn sm theme outline"
onclick="fn_regist_dwld_coupon(<c:out value="${ couponList.couponInnb }"/>,
'<c:out value="${ couponList.sopmalCd }"/>',
'<c:out value="${ couponList.couponSndngInnb }"/>',
'<c:out value="${ couponList.cupnpkInnb }"/>',
'<c:out value="${ couponList.cupnpkNm }"/>',
'<c:out value="${ couponList.cupnpkDc }"/>' );">
쿠폰 다운로드
</button>
</div>
</div>
</c:forEach>
</div>
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMapDwld.paginationInfo}" type="image" jsFunction="fn_select_dwld_coupon" />
</div>
</c:when>
<c:otherwise>
<div class="couponList">
<div class="couponList__no-result">
<img src="<c:url value="/pc/images/icon__no-result.png"/>" alt="">
<p class="orderList__no-result-text">다운로드 가능한 쿠폰이 없습니다.</p>
</div>
</div>
</c:otherwise>
</c:choose>
</form>

View File

@@ -0,0 +1,132 @@
<%@ 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"%>
<%--
Class Name : CouponDtlsR.jsp
Description : 마이페이지 쿠폰 내역
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-02-27 추지훈 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<%-- 공통 include --%>
<jsp:include page="/WEB-INF/views/comm/Include.jsp"/>
</head>
<script>
$(document).ready(function() {
});
</script>
<body>
<%-- 공통 Header --%>
<jsp:include page="/WEB-INF/views/comm/Header.jsp"/>
<!-- 메인 컨텐츠 영역 -->
<main>
<div class="sub-wrapper">
<div class="sub-content">
<div class="sub-rl">
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.cdnurl')" var="cdnurl"/>
<%-- 마이페이지 Left 영역 --%>
<jsp:include page="/WEB-INF/views/comm/mpage/MypageLeft.jsp"/>
<div class="sub-right-content">
<%-- 마이페이지 Right 영역 --%>
<jsp:include page="/WEB-INF/views/comm/mpage/MypageRight.jsp"/>
<div class="sub-right-content__section">
<div class="myMemberRank">
<div class="myMemberRank__inner">
<h3 class="myMemberRank__title">회원등급</h3>
<p class="myMemberRank__text">고객님의 주문실적에 따라 다채로운 혜택을 받아보세요!</p>
</div>
<img src="/pc/images/회원등급이미지.png" alt="">
</div>
<div class="myMemberRankInfo">
<ul class="myMemberRankInfo__list">
<c:choose>
<c:when test="${ not empty resultMap.resultList && fn:length(resultMap.resultList) > 0 }">
<c:forEach var="gradList" items="${ resultMap.resultList }" varStatus="status">
<li class="myMemberRankInfo__item">
<div class="myMemberRankInfo__top">
<input type = "hidden" name = "" value = "<c:out value="${cdnurl}${gradList.mbrGradIconCours}"/>"/>
<c:if test = "${not empty gradList.mbrGradIconCours}">
<img src="<c:out value="${ cdnurl }${gradList.mbrGradIconCours}"/>" onerror="this.src='/pc/images/image_placeholder.png'" width="112" height="112" alt="${ gradList.mbrGradNm }">
</c:if>
<div class="myMemberRankInfo__topDescription">
<span class="myMemberRankInfo__topName"><c:out value="${ gradList.mbrGradNm }"/></span>
<p class="myMemberRankInfo__topText">
<c:choose>
<c:when test="${ gradList.mbrGradCndCd eq '01'}">
<c:out value="${ gradList.mbrGradCndCdNm }"/>
</c:when>
<c:when test="${ gradList.mbrGradCndCd eq '02'}">
<%-- 구매 횟수 1년에 <c:out value="${ gradList.mbrGradPurchsCnt }"/>회 이상,<br> --%>
구매금액 <c:out value="${ gradList.mbrGradAmtSop }"/> 이상인 경우
</c:when>
</c:choose>
</p>
</div>
</div>
<div class="myMemberRankInfo__body">
<c:if test="${ gradList.mbrGradCndCd eq '02' && not empty gradList.mlgAccmlAmt }">
<div class="myMemberRankInfo__box">
<img src="/pc/images/icon_member-mileage.png" alt="">
<span class="myMemberRankInfo__boxText">구매금액의 <em><c:out value="${ gradList.mlgAccmlAmt }"/><c:out value="${ gradList.mlgAccmlUnitDvCdNm }"/></em> 적립</span>
</div>
</c:if>
<c:if test="${ gradList.couponAt > 0 }">
<div class="myMemberRankInfo__box">
<img src="/pc/images/icon_member-coupon.png" alt="">
<span class="myMemberRankInfo__boxText"><em><c:out value="${ gradList.cupnpkNm }"/></em> 쿠폰팩 지급</span>
</div>
</c:if>
</div>
</li>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="100%" ><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</ul>
</div>
<div class="infoBox">
<h6 class="infoBox__title">안내사항</h6>
<ol class="infoBox__list">
<li><c:out value="${resultMap.gradGroup.mbrGradInfo.calcPdMtCnt}"/>개월 동안 주문한 금액 기준이며, 혜택은 등업시 제공 합니다.</li>
</ol>
</div>
</div>
</div>
</div>
</div>
</div>
</main>
<%-- 공통 Footer --%>
<jsp:include page="/WEB-INF/views/comm/Footer.jsp"/>
</body>
</html>

View File

@@ -0,0 +1,83 @@
<%@ 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"%>
<%--
Class Name : CouponDtlsR.jsp
Description : 마이페이지 쿠폰 내역
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-02-27 추지훈 최초 생성
--%>
<script>
$(document).ready(function() {
});
</script>
<div class="sub-tab__content current">
<div class="mileageList">
<c:choose>
<c:when test="${ not empty resultMap.resultList && fn:length(resultMap.resultList) > 0 }">
<c:forEach var="list" items="${ resultMap.resultList }" varStatus="status">
<div class="mileageList__item
<c:if test="${ list.mlgAccmlDvCd eq 'add' || list.mlgAccmlDvCd eq 'up' }">
mileageList__item--saveUp
</c:if>"
>
<div class="mileageList__itemHeader">
<div class="mileageList__itemHeaderMisc">
<span class="mileageList__itemDate"><c:out value="${ list.mpageRegistDt }"/></span>
<span class="mileageList__itemDot">·</span>
<span class="mileageList__itemBrand"><c:out value="${ list.sopmalNm }"/></span>
<c:if test = "${list.mlgAccmlDvCd eq 'add' || list.mlgAccmlDvCd eq 'up'}"><%--적립 혹은 지급 일 때만 유효기간 노출--%>
<span class="mileageList__itemDot">·</span>
<span class="mileageList__itemDate"><c:out value="${ list.bgnDt }"/></span>
<span class="mileageList__itemDot">~</span>
<span class="mileageList__itemDate"><c:out value="${ list.endDt }"/></span>
</c:if>
</div>
<span class="mileageList__itemTitle"><c:out value="${ list.mlgAccmlDvNm }"/></span>
</div>
<div class="mileageList__itemBody">
<span class="mileageList__itemDescription"><c:out value="${ list.mlgApplcDvNm }"/></span>
<span class="mileageList__itemNumber"><span
class="comma"><fmt:formatNumber value="${list.accmlmnyAmt}" pattern="#,###"/></span></span>
</div>
<div class="mileageList__orderNum">
<c:if test="${ not empty list.ordrInnb && list.ordrInnb ne 0 }">
주문번호 <em><c:out value="${ list.ordrInnb }"/></em>
</c:if>
</div>
</div>
</c:forEach>
</c:when>
<c:otherwise>
<div class="orderList__no-result">
<img src="<c:url value="/pc/images/icon__no-result.png"/>" alt="">
<p class="orderList__no-result-text">마일리지내역이 없습니다.</p>
</div>
</c:otherwise>
</c:choose>
</div>
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_mlg_list" />
</div>
</div>
<div class="sub-tab__content">2</div>
<div class="sub-tab__content">3</div>
<div class="sub-tab__content">4</div>

View File

@@ -0,0 +1,341 @@
<%@ 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"%>
<%--
Class Name : CouponDtlsR.jsp
Description : 마이페이지 쿠폰 내역
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-02-27 추지훈 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<%-- 공통 include --%>
<jsp:include page="/WEB-INF/views/comm/Include.jsp"/>
</head>
<script>
$(document).ready(function() {
let pageIndex = '<c:out value="${ resultMap.paramVO.pageIndex }"/>';
let pageUnit = '<c:out value="${ resultMap.paramVO.pageUnit }"/>';
fn_select_mlg_list(pageIndex, pageUnit);
fn_start_display();
});
/******************************************************************
* 시작 화면 제어
******************************************************************/
const fn_start_display = function() {
/* 검색조건 > 날짜 구간 버튼 클릭 이벤트 */
$('.dateRange-btn').on('click', function() {
const date = $(this).attr('id');
$(this).closest('div').find('#dateRange').val(date);
if ('allDays' === date) {
$('#bgnDt, #endDt').val('');
return false;
}
fn_set_date('bgnDt', 'endDt', 'endDt', date);
});
/* 검색 버튼 클릭 이벤트 */
$('#btnSearch').on('click', function() {
fn_select_mlg_list(1);
});
}
/* 검색조건 세팅 */
const fn_set_param = function() {
const params = ${paramVO};
const keys = Object.keys(params);
for (let i = 0; i < keys.length; i++) {
let key = keys[i];
let data = params[key];
if ('bgnDt' == key || 'endDt' == key) {
if (!fn_is_empty(data)) {
for (let i = 0; i < data.length; i++) {
$('#' + key).val(data);
}
}
}
if ('dateRange' == key) {
$('#'+ data).trigger('click');
}
if ('srchwrd' == key) {
$('#' + key).val(data);
}
}
}
/******************************************************************
* 마일리지 목록 조회
******************************************************************/
const fn_select_mlg_list = function(pageIndex, pageUnit) {
const currentTabTxt = $(".sub-tab__btn.current").text();
if(currentTabTxt === '적립') {
$("#srchMlgAccmlDvCd").val("add");
} else if (currentTabTxt === 'use') {
$("#srchMlgAccmlDvCd").val("use");
} else if (currentTabTxt === 'exp') {
$("#srchMlgAccmlDvCd").val("exp");
}
let dataStr;
if(!pageIndex) {
$('#pageIndex').val(1);
} else {
$('#pageIndex').val(pageIndex);
}
if(!pageUnit) {
dataStr = $('#listForm').serialize();
} else {
if($('#pageUnit').length){
$('#pageUnit').val(pageUnit);
dataStr = $('#listForm').serialize();
} else {
dataStr = $('#listForm').serialize()+'&pageUnit='+pageUnit;
}
}
$('#pageIndex').val(pageIndex);
$.ajax({
type: "post",
url : '<c:url value="/sopmal/mpage/bnef/selectMlgDtlsInqire"/>',
data : dataStr,
success:function(resultHtml) {
$('#pageDiv').empty();
$('#pageDiv').html(resultHtml);
}
});
}
/******************************************************************
* 마일리지 목록 조회 지급구분
******************************************************************/
const fn_select_mlg_list_dv = function(srchMlgAccmlDvCd) {
$.ajax({
type: "post",
url : '<c:url value="/sopmal/mpage/bnef/selectMlgDtlsInqire"/>',
data : {
srchMlgAccmlDvCd : srchMlgAccmlDvCd
},
success:function(resultHtml) {
$('#pageDiv').empty();
$('#pageDiv').html(resultHtml);
}
});
}
</script>
<body>
<%-- 공통 Header --%>
<jsp:include page="/WEB-INF/views/comm/Header.jsp"/>
<!-- 메인 컨텐츠 영역 -->
<main>
<div class="sub-wrapper">
<div class="sub-content">
<div class="sub-rl">
<%-- 마이페이지 Left 영역 --%>
<jsp:include page="/WEB-INF/views/comm/mpage/MypageLeft.jsp"/>
<div class="sub-right-content">
<%-- 마이페이지 Right 영역 --%>
<jsp:include page="/WEB-INF/views/comm/mpage/MypageRight.jsp"/>
<div class="sub-right-content__section">
<h3 class="sub-right-content__title">마일리지 내역</h3>
<div class="mileageStatus">
<div class="mileageStatusCurrent">
<svg xmlns="http://www.w3.org/2000/svg" width="67" height="63" viewBox="0 0 67 63"
fill="none">
<g clip-path="url(#clip0_872_54192)">
<g style="mix-blend-mode:darken">
<path
d="M43.7905 51.5702C56.5262 51.5702 66.8505 41.2459 66.8505 28.5102C66.8505 15.7745 56.5262 5.4502 43.7905 5.4502C31.0548 5.4502 20.7305 15.7745 20.7305 28.5102C20.7305 41.2459 31.0548 51.5702 43.7905 51.5702Z"
fill="#DADBE1"></path>
</g>
<path d="M4.93945 15.2997V13.7197" stroke="#3B3B3D" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M2.58 17.6494H1" stroke="#3B3B3D" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M4.93945 20.0098V21.5898" stroke="#3B3B3D" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M7.28906 17.6494H8.86906" stroke="#3B3B3D" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M26.1895 2.42V1" stroke="#3B3B3D" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M24.0704 4.54004H22.6504" stroke="#3B3B3D" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M26.1895 6.66016V8.08016" stroke="#3B3B3D" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M28.3105 4.54004H29.7305" stroke="#3B3B3D" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M55.8999 13.9805H18.9199V21.8905H55.8999V13.9805Z" fill="white"
stroke="#3B3B3D" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"></path>
<path d="M60.1909 21.8896H23.2109V29.8096H60.1909V21.8896Z" fill="white"
stroke="#3B3B3D" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"></path>
<path d="M54.3804 29.8096H17.4004V37.7196H54.3804V29.8096Z" fill="white"
stroke="#3B3B3D" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"></path>
<path d="M57.6909 37.7197H20.7109V45.6397H57.6909V37.7197Z" fill="white"
stroke="#3B3B3D" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"></path>
<path d="M61.8804 45.6396H24.9004V53.5496H61.8804V45.6396Z" fill="white"
stroke="#3B3B3D" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"></path>
<path d="M57.6909 53.5498H20.7109V61.4698H57.6909V53.5498Z" fill="white"
stroke="#3B3B3D" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"></path>
<g style="mix-blend-mode:darken">
<path
d="M50.6004 42.0604C50.6004 43.2804 50.5104 44.4704 50.3404 45.6404C49.9204 48.4604 49.0204 51.1304 47.7204 53.5504C46.0604 56.6504 43.7504 59.3604 40.9604 61.4704H20.7104V53.5504H24.9004V45.6404H20.7104V37.7204H17.4004V29.8104H23.2104V21.8904H18.9204V18.7604C21.2204 18.0404 23.6604 17.6504 26.1904 17.6504C31.2704 17.6504 36.0004 19.2104 39.9104 21.8904C42.9204 23.9304 45.4504 26.6504 47.2904 29.8104C48.7004 32.2104 49.7004 34.8804 50.2004 37.7204C50.4704 39.1304 50.6004 40.5804 50.6004 42.0604Z"
fill="#DADBE1"></path>
</g>
<path
d="M2.54078 48.8405H38.8708C39.6608 46.7305 40.1108 44.4505 40.1108 42.0605H1.30078C1.30078 44.4505 1.75078 46.7305 2.54078 48.8405Z"
fill="white" stroke="#3B3B3D" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"></path>
<path
d="M20.7098 61.4709C26.1498 61.4709 31.0498 59.2309 34.5798 55.6309H6.83984C10.3598 59.2309 15.2698 61.4709 20.7098 61.4709Z"
fill="white" stroke="#3B3B3D" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"></path>
<path
d="M6.84102 55.6306H34.581C36.461 53.7106 37.921 51.4106 38.881 48.8506H2.54102C3.50102 51.4106 4.96102 53.7206 6.84102 55.6306Z"
fill="white" stroke="#3B3B3D" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"></path>
<path
d="M6.84102 28.4902C4.96102 30.4102 3.50102 32.7102 2.54102 35.2702H38.871C37.911 32.7102 36.451 30.4002 34.571 28.4902H6.84102Z"
fill="white" stroke="#3B3B3D" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"></path>
<path
d="M1.30078 42.0603H40.1208C40.1208 39.6703 39.6708 37.3903 38.8808 35.2803H2.54078C1.75078 37.3903 1.30078 39.6703 1.30078 42.0603Z"
fill="white" stroke="#3B3B3D" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"></path>
<path
d="M20.7098 22.6504C15.2698 22.6504 10.3698 24.8904 6.83984 28.4904H34.5798C31.0598 24.8904 26.1498 22.6504 20.7098 22.6504Z"
fill="white" stroke="#3B3B3D" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"></path>
<path
d="M26.1893 61.4704C36.9091 61.4704 45.5993 52.7802 45.5993 42.0604C45.5993 31.3405 36.9091 22.6504 26.1893 22.6504C15.4694 22.6504 6.7793 31.3405 6.7793 42.0604C6.7793 52.7802 15.4694 61.4704 26.1893 61.4704Z"
fill="white" stroke="#3B3B3D" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"></path>
<path class="svg-themeColor"
d="M19.3923 35.9873C19.5007 35.229 20.3132 34.3623 21.4507 34.3623C22.4798 34.3623 23.2923 35.1206 23.5632 35.879L26.0548 44.1665H26.109L28.6007 35.879C28.8173 35.1206 29.6298 34.3623 30.7132 34.3623C31.8507 34.3623 32.6632 35.229 32.7715 35.9873L34.6673 47.6873V48.0665C34.6673 48.9873 34.0173 49.5831 33.1507 49.5831C32.0673 49.5831 31.634 49.0956 31.5257 48.1206L30.334 39.5623H30.2798L27.7882 48.3373C27.6257 48.8248 27.2465 49.529 26.109 49.529C24.9715 49.529 24.5923 48.8248 24.4298 48.3373L21.8298 39.5081H21.7757L20.5298 48.0665C20.3673 49.0415 19.9882 49.529 18.9048 49.529C17.984 49.5831 17.334 48.9873 17.334 48.0665C17.334 47.9581 17.334 47.8498 17.334 47.6873L19.3923 35.9873Z"
fill="#3B3B3D"></path>
</g>
<defs>
<clipPath id="clip0_872_54192">
<rect width="66.86" height="62.47" fill="white"></rect>
</clipPath>
</defs>
</svg>
<span class="mileageStatusCurrent__title">사용가능 마일리지</span>
<span class="mileageStatusCurrent__number"><span class="comma"><c:out value="${ resultMap.blceSum }"/></span></span>
<span class="mileageStatusCurrent__unit">점</span>
</div>
<div class="mileageStatusMisc">
<div class="mileageStatusMisc__item mileageStatusMisc__item--scheduled">
<span class="mileageStatusMisc__title">적립예정 마일리지</span>
<span class="mileageStatusMisc__number"><span class="comma"><c:out value="${ resultMap.accmlPrearngeSum }"/></span></span>
<span class="mileageStatusMisc__unit">점</span>
</div>
<div class="mileageStatusMisc__item">
<span class="mileageStatusMisc__title">소멸예정 마일리지</span>
<span class="mileageStatusMisc__number"><span class="comma"><c:out value="${ resultMap.endInMnthBlceSum }"/></span></span>
<span class="mileageStatusMisc__unit">점</span>
</div>
</div>
</div>
<form id="listForm">
<input type="hidden" id="mlgInnb" name="mlgInnb" value=""/>
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultMap.paramVO.pageIndex} }"/>
<input type="hidden" id="pageUnit" name="pageUnit" value="${ resultMap.paramVO.pageUnit} }"/>
<input type="hidden" id="srchMlgAccmlDvCd" name="srchMlgAccmlDvCd" value=""/>
<div class="customer-search">
<div class="customer-search__row justify-start">
<div class="customer-search__controls">
<div class="dateRange-btnContainer">
<input type="hidden" name="dateRange" id="dateRange" value="allDays">
<button type="button" class="dateRange-btn" id="7D">일주일</button>
<button type="button" class="dateRange-btn" id="1M">1개월</button>
<button type="button" class="dateRange-btn" id="3M">3개월</button>
<button type="button" class="dateRange-btn selected" id="allDays">전체</button>
</div>
<div class="input-container">
<input type="text" name="bgnDt" id="bgnDt" class="datepicker" title="시작 날짜 선택" autocomplete="off">
<span class="tilde">~</span>
<input type="text" name="endDt" id="endDt" class="datepicker" title="종료 날짜 선택" autocomplete="off">
</div>
</div>
<button type="button" id="btnSearch" class="btn md dark">검색</button>
</div>
</div>
<div class="sub-tab">
<div class="sub-tab__trigger">
<button class="sub-tab__btn current" type="button" onclick="fn_select_mlg_list(1);">전체</button>
<button class="sub-tab__btn" type="button" onclick="fn_select_mlg_list_dv('add');">적립</button>
<button class="sub-tab__btn" type="button" onclick="fn_select_mlg_list_dv('use');">사용</button>
<button class="sub-tab__btn" type="button" onclick="fn_select_mlg_list_dv('exp');">소멸</button>
</div>
<div id="pageDiv">
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</main>
<%-- 공통 Footer --%>
<jsp:include page="/WEB-INF/views/comm/Footer.jsp"/>
</body>
</html>

View File

@@ -0,0 +1,179 @@
<%@ 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"%>
<%--
Class Name : CouponDtlsR.jsp
Description : 마이페이지 쿠폰 내역
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-02-27 추지훈 최초 생성
--%>
<!-- 쿠폰정보 -->
<div id="coupon-info-pop" class="modal default" style="max-width: 560px;">
<div class="modal-header">
<div class="modal-header__title">쿠폰정보</div>
</div>
<div class="modal-content">
<div class="table-wrapper">
<table class="table tight">
<caption>해당 테이블에 대한 설명</caption>
<!-- 각 열 width 설정 -->
<colgroup>
<col style="width: 25%;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th>
쿠폰명
</th>
<td><c:out value="${ resultMap.dwldCouponVO.coupNm }"/></td>
</tr>
<tr>
<th>
혜택
</th>
<td>
<c:choose>
<c:when test="${ resultMap.dwldCouponVO.bnefDv eq '01' || resultMap.dwldCouponVO.bnefDv eq '03' }">
<span class="fw-500">
<c:out value="${ resultMap.dwldCouponVO.aditDscntAmt }"/> <c:out value="${ resultMap.dwldCouponVO.goodsDscntDvNm }"/> 할인
</span><br/>
<c:if test="${ '01' eq resultMap.dwldCouponVO.goodsDscntDv }">
<span class="gray-8">최대 <c:out value="${ resultMap.dwldCouponVO.dscntMxmmAmt }"/>원 할인</span>
</c:if>
</c:when>
<c:when test="${ resultMap.dwldCouponVO.bnefDv eq '02' }">
<span class="fw-500">
<c:if test="${ '01' eq resultMap.dwldCouponVO.dlvyAmtDscntDv }">기본배송비 무료,
</span>
<br>
<span class="gray-8">
최대 <c:out value="${ resultMap.dwldCouponVO.dlvyAmtMxmmDscntAmt }"/>원 할인</c:if>
</span>
<span class="fw-500">
<c:if test="${ '02' eq resultMap.dwldCouponVO.dlvyAmtDscntDv }">배송비 <c:out value="${ resultMap.dwldCouponVO.dlvyAmtDscntAmt }"/>원 할인</c:if>
</span>
</c:when>
<c:otherwise>
</c:otherwise>
</c:choose>
</td>
</tr>
<tr>
<th>
유효기간
</th>
<td>
<c:choose>
<c:when test="${ resultMap.dwldCouponVO.validpdKndCd eq '01' }">
<c:out value="${ resultMap.dwldCouponVO.validpdBgnDt }"/> ~ <c:out value="${ resultMap.dwldCouponVO.validpdEndDt }"/><c:if test="${ 0 lt resultMap.dwldCouponVO.validpdDay }">(<c:out value="${ resultMap.dwldCouponVO.validpdDay }"/>일 남음)</c:if>
</c:when>
<c:when test="${ resultMap.dwldCouponVO.validpdKndCd eq '02' }">
<c:out value="${ resultMap.dwldCouponVO.validpdKndCdNm }"/> <c:out value="${ resultMap.dwldCouponVO.validpdDeCnt }"/> 일
</c:when>
<c:otherwise>
<c:out value="${ resultMap.dwldCouponVO.validpdBgnDt }"/> ~ <c:out value="${ resultMap.dwldCouponVO.validpdEndDt }"/><c:if test="${ 0 lt resultMap.dwldCouponVO.validpdDay }">(<c:out value="${ resultMap.dwldCouponVO.validpdDay }"/>일 남음)</c:if>
</c:otherwise>
</c:choose>
</td>
</tr>
</tbody>
</table>
</div>
<div class="infoBox">
<ul class="infoBox__list">
<%-- 사용환경 --%>
<c:if test="${ not empty resultMap.dwldCouponVO.useEnvrnCd }">
<c:choose>
<c:when test="${resultMap.dwldCouponVO.useEnvrnCd eq '01' }">
<li class="fyi gray-7">온라인 쿠폰</li>
</c:when>
<c:when test="${ resultMap.dwldCouponVO.useEnvrnCd eq '02' }">
<li class="fyi gray-7">오프라인 쿠폰</li>
</c:when>
<c:when test="${ resultMap.dwldCouponVO.useEnvrnCd eq '03' }">
<li class="fyi gray-7">온/오프라인 쿠폰</li>
</c:when>
</c:choose>
</c:if>
<%-- 타 쿠폰 동시사용여부 --%>
<c:if test="${ not empty resultMap.dwldCouponVO.otrCouponSmtmUseAt }">
<c:choose>
<c:when test="${resultMap.dwldCouponVO.otrCouponSmtmUseAt eq 'Y' }">
<li class="fyi gray-7">다른 쿠폰과 동시 사용 불가</li>
</c:when>
<c:when test="${ resultMap.dwldCouponVO.otrCouponSmtmUseAt eq 'N' }">
<li class="fyi gray-7">다른 쿠폰과 동시 사용 가능</li>
</c:when>
</c:choose>
</c:if>
<%-- 사용가능금액(제품) --%>
<c:if test="${ not empty resultMap.dwldCouponVO.usePosblAmt && 0 ne fn:replace(resultMap.dwldCouponVO.usePosblAmt, ',', '') }">
<li class="fyi gray-7"><c:out value="${ resultMap.dwldCouponVO.usePosblAmt }"/>원 이상 구매 시</li>
</c:if>
<%-- 사용가능금액(대상제품 포함 구매제품 총합) --%>
<c:if test="${ not empty resultMap.dwldCouponVO.usePosblAllAmt && 0 ne fn:replace(resultMap.dwldCouponVO.usePosblAllAmt, ',', '') && resultMap.dwldCouponVO.usePosblAllAmtUseAt eq 'Y' }">
<li class="fyi gray-7"><c:out value="${ resultMap.dwldCouponVO.usePosblAllAmt }"/>원 이상 구매 시</li>
</c:if>
<%-- 중복다운로드 여부 --%>
<c:if test="${ not empty resultMap.dwldCouponVO.dplctDwldAt}">
<c:choose>
<c:when test="${resultMap.dwldCouponVO.dplctDwldAt eq 'N' }">
<li class="fyi gray-7">중복 다운로드 불가</li>
</c:when>
<c:when test="${ resultMap.dwldCouponVO.dplctDwldAt eq 'Y' }">
<li class="fyi gray-7">중복 다운로드 가능</li>
</c:when>
</c:choose>
</c:if>
<%-- 중복할인여부 --%>
<c:if test="${ not empty resultMap.dwldCouponVO.dplctDscntAt}">
<c:choose>
<c:when test="${resultMap.dwldCouponVO.dplctDscntAt eq 'N' }">
<li class="fyi gray-7">중복 할인 불가</li>
</c:when>
<c:when test="${ resultMap.dwldCouponVO.dplctDscntAt eq 'Y' }">
<li class="fyi gray-7">중복 할인 가능</li>
</c:when>
</c:choose>
</c:if>
<%-- 적용상품선정기준 --%>
<c:if test="${ not empty resultMap.dwldCouponVO.goodsApplcDvCd }">
<c:choose>
<c:when test="${resultMap.dwldCouponVO.goodsApplcDvCd eq '01' }">
<li class="fyi gray-7">모든 상품에 사용가능</li>
</c:when>
<c:when test="${ resultMap.dwldCouponVO.goodsApplcDvCd eq '02' }">
<li class="fyi gray-7">특정 카테고리에 사용가능</li>
</c:when>
<c:when test="${ resultMap.dwldCouponVO.goodsApplcDvCd eq '03' }">
<li class="fyi gray-7">특정 상품에 사용가능</li>
</c:when>
<c:when test="${ resultMap.dwldCouponVO.goodsApplcDvCd eq '04' }">
<li class="fyi gray-7">특정 카테고리 외 사용가능</li>
</c:when>
<c:when test="${ resultMap.dwldCouponVO.goodsApplcDvCd eq '05' }">
<li class="fyi gray-7">특정 상품 외 사용가능</li>
</c:when>
</c:choose>
</c:if>
</ul>
</div>
</div>
<div class="modal-footer">
<a href="#" rel="modal:close" class="btn large outline">닫기</a>
<!-- <a href="#" rel="" class="btn large gray2">결제취소</a> -->
</div>
</div>

View File

@@ -0,0 +1,128 @@
<%@ 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"%>
<%--
Class Name : CouponDtlsR.jsp
Description : 마이페이지 쿠폰 내역
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-02-27 추지훈 최초 생성
--%>
<form id="holdListForm">
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value="${ resultMap.paramVO.pageIndex }"/>"/>
<input type="hidden" id="recordCountPerPage" name="recordCountPerPage" value="<c:out value="${ resultMap.paramVO.recordCountPerPage }"/> "/>
<input type="hidden" id="sopmalCd" name="sopmalCd"/>
<input type="hidden" id="mbrInnb" name="mbrInnb" />
<c:choose>
<c:when test="${ not empty resultMap.resultList && fn:length(resultMap.resultList) > 0 }">
<div class="couponList">
<c:forEach items="${ resultMap.resultList }" var="couponList" varStatus="status">
<div class="couponList__item">
<div class="couponList__left">
<p class="couponList__subTitle"><c:out value="${ couponList.cupnpkNm }"/></p>
<p class="couponList__title">
<c:out value="${ couponList.couponSndngNm }"/><br>
<span class="couponList__date"><c:out value="${ couponList.coupNm }"/></span>
</p>
<p class="couponList__date">
<c:out value="${ couponList.validpdBgnDt }"/> <br/> ~ <c:out value="${ couponList.validpdEndDt }"/>
<span class="couponList__dayLeft">
<c:set var="today" value="<%=new java.util.Date()%>" />
<c:set var="date"><fmt:formatDate value="${today}" pattern="yyyy-MM-dd" /></c:set>
<c:choose>
<c:when test="${ couponList.validpdEndDt gt date }">
(<c:out value="${ couponList.validpdDay }"/>일 남음)
</c:when>
<c:when test="${ couponList.validpdEndDt lt date}">
(<c:out value="${ couponList.validpdDay }"/>일 지남)
</c:when>
<c:when test="${ couponList.validpdEndDt eq date}">
(오늘까지)
</c:when>
</c:choose>
</span>
</p>
<button type="button"
class="btn sm gray2 couponList__checkBtn"
onclick="fn_open_modal_dwldcoupon_dtl('#modalDiv', '#coupon-info-pop', '<c:out value="/sopmal/mpage/bnef/selectCouponDtlInfoInqirePopup"/>', '<c:out value="${ couponList.dwldCouponInnb }"/>', '<c:out value="${ couponList.sopmalCd }"/>'); return false;"
>
조회
</button>
</div>
<div class="couponList__right">
<div class="couponList__image">
<c:choose>
<c:when test="${ couponList.sopmalCd eq 'NC' }">
<img src="/pc/images/쿠폰이미지01.png" onerror="this.src='/pc/images/image_placeholder.png'" alt="">
</c:when>
<c:when test="${ couponList.sopmalCd eq 'CH' }">
<img src="/pc/images/쿠폰이미지02.png" onerror="this.src='/pc/images/image_placeholder.png'" alt="">
</c:when>
<c:when test="${ couponList.sopmalCd eq 'TZ' }">
<img src="/pc/images/쿠폰이미지03.png" onerror="this.src='/pc/images/image_placeholder.png'" alt="">
</c:when>
<c:when test="${ couponList.sopmalCd eq 'DT' }">
<img src="/pc/images/쿠폰이미지04.png" onerror="this.src='/pc/images/image_placeholder.png'" alt="">
</c:when>
<c:when test="${ couponList.sopmalCd eq 'PL' }">
<img src="/pc/images/쿠폰이미지05.png" onerror="this.src='/pc/images/image_placeholder.png'" alt="">
</c:when>
<c:when test="${ couponList.sopmalCd eq 'LF' }">
<img src="/pc/images/쿠폰이미지06.png" onerror="this.src='/pc/images/image_placeholder.png'" alt="">
</c:when>
<c:when test="${ couponList.sopmalCd eq 'AF' }">
<img src="/pc/images/쿠폰이미지07.png" onerror="this.src='/pc/images/image_placeholder.png'" alt="">
</c:when>
<c:when test="${ couponList.sopmalCd eq 'DL' }">
<img src="/pc/images/쿠폰이미지08.png" onerror="this.src='/pc/images/image_placeholder.png'" alt="">
</c:when>
<c:when test="${ couponList.sopmalCd eq 'JM' }">
<img src="/pc/images/쿠폰이미지09.png" onerror="this.src='/pc/images/image_placeholder.png'" alt="">
</c:when>
<c:when test="${ couponList.sopmalCd eq 'NB' }">
<img src="/pc/images/쿠폰이미지10.png" onerror="this.src='/pc/images/image_placeholder.png'" alt="">
</c:when>
<c:when test="${ couponList.sopmalCd eq 'BD' }">
<img src="/pc/images/쿠폰이미지11.png" onerror="this.src='/pc/images/image_placeholder.png'" alt="">
</c:when>
</c:choose>
</div>
<c:set var="today" value="<%=new java.util.Date()%>" />
<c:set var="date"><fmt:formatDate value="${today}" pattern="yyyy-MM-dd HH:mm" /></c:set>
<c:choose>
<c:when test="${ couponList.couponSttusCd eq '03' }">
<span class="couponList__date" style="color: blue"><strong>사용함</strong></span>
</c:when>
<c:when test="${ couponList.couponSttusCd eq '02' && couponList.validpdEndDt ge date }">
<span class="couponList__date" style="color: red"><strong>미사용</strong></span>
</c:when>
<c:when test="${ couponList.couponSttusCd eq '02' && couponList.validpdEndDt lt date }">
<span class="couponList__date" style="color: gray"><strong>소멸함</strong></span>
</c:when>
</c:choose>
</div>
</div>
</c:forEach>
</div>
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_useposbl_coupon" />
</div>
</c:when>
<c:otherwise>
<div class="couponList">
<div class="couponList__no-result">
<img src="<c:url value="/pc/images/icon__no-result.png"/>" alt="">
<p class="orderList__no-result-text">사용 가능한 쿠폰이 없습니다.</p>
</div>
</div>
</c:otherwise>
</c:choose>
</form>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,115 @@
<%@ 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>
<%--
Class Name : DlvylcManagePopupR.jsp
Description : 배송지 관리 팝업.jsp
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-04-15 김혜인 최초 생성
--%>
<html>
<div id="dlvylcManage" class="modal" style="max-width: 520px;">
<div class="modal-header">
<div class="modal-header__title">배송지 관리</div>
</div>
<div class="modal-content">
<div class="modal-content__btn-controller">
<button type = "button" class="shipping-register-btn"
onclick="fn_move_dlvylc_regpage_pop('Y',<c:if test = "${empty resultMap.resultList}">'Y'</c:if>); return false;">
신규 배송지 등록
<svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="15" height="15" viewBox="0 0 24 24">
<path
d="M 11 3 L 11 11 L 3 11 L 3 13 L 11 13 L 11 21 L 13 21 L 13 13 L 21 13 L 21 11 L 13 11 L 13 3 L 11 3 z">
</path>
</svg>
</button>
</div>
<form id="mbrDlvylcList" name="mbrDlvylcList">
<c:choose>
<c:when test="${not empty resultMap.resultList}">
<c:forEach var="resultMap" items="${resultMap.resultList}" varStatus="status">
<div class="shipping-list">
<div class="shipping-list__item">
<div class="shipping-list__item-top">
<div class="custom-radio-container">
<div class="custom-radio" onclick = "fn_select_mngrOrdr_postcode(${callbackNm},${status.index}, '${formId}')">
<label for="${status.index}">
<span><c:out value="${resultMap.dlvylcDcCn }" /></span>
</label>
</div>
<c:if test="${resultMap.dftDlvylcAt eq 'Y'}">
<span class="default-address">기본배송지</span>
</c:if>
</div>
<button type = "button" class="shipping-modify-btn" id="upt<c:out value="${resultMap.adbkInnb}" />"
onclick="fn_move_dlvylc_uptpage_pop('<c:out value='${pageIndex}'/>',
'<c:out value='${resultMap.adbkInnb}'/>',
'Y');">
<spring:message code="button.update" />
</button>
<c:if test="${resultMap.dftDlvylcAt eq 'N'}">
<button type = "button" class="shipping-remove-btn" id="del<c:out value="${resultMap.adbkInnb}" />"
onclick="fn_delete_dlvylc('<spring:message code="success.common.delete"/>'
,'<c:out value="${resultMap.adbkInnb}" />'
,'Y',false); return false;">
<spring:message code="button.delete" />
</button>
</c:if>
</div>
<label for="${status.index}" onclick = "fn_select_mngrOrdr_postcode(${callbackNm},${status.index}, '${formId}')">
<div class="shipping-list__item-inner">
<p class="name"><c:out value="${resultMap.recpntNm }" /></p>
<p>(<c:out value="${resultMap.zip }" />)
<c:choose>
<c:when test="${resultMap.adresDv eq '01'}">
<c:out value="${resultMap.rnmAdres }" />
</c:when>
<c:when test="${resultMap.adresDv eq '02'}">
<c:out value="${resultMap.lnbAdres}"/>
</c:when>
</c:choose>
<c:out value="${resultMap.dtlAdres }" />
</p>
<p class="number mbtlnbPop"><c:out value="${resultMap.mbtlnb}" /></p>
</div>
</label>
</div>
</div>
<input type="hidden" name="zip" class = "zip" value="<c:out value='${resultMap.zip}'/>" />
<input type="hidden" name="adresDv" class = "adresDv" value="<c:out value='${resultMap.adresDv}'/>" />
<input type="hidden" name="rnmAdres" class = "rnmAdres" value="<c:out value='${resultMap.rnmAdres}'/>" />
<input type="hidden" name="lnbAdres" class = "lnbAdres"value="<c:out value='${resultMap.lnbAdres}'/>" />
<input type="hidden" name="recpntNm" class = "recpntNmR" value="<c:out value='${resultMap.recpntNm}'/>" />
<input type="hidden" name="dtlAdres" class = "dtlAdres" value="<c:out value='${resultMap.dtlAdres}'/>" />
<input type="hidden" name="mbtlnb" class = "mbtlnb" value="<c:out value='${resultMap.mbtlnb}' />" />
</c:forEach>
</c:when>
<c:otherwise>
<div class="table__no-result">
<img src="/pc/images/icon__no-result.png" alt="배송지 없음">
<p class="table__no-result-text">
조회된 배송지가 없습니다.
</p>
</div>
</c:otherwise>
</c:choose>
<br>
<c:if test = "${not empty resultMap.resultList}">
<input type="hidden" id="pageIndex" name="pageIndex" value="${pageIndex}" />
<input type="hidden" id="isPop" name="isPop" value="Y" />
<div class="pagination__container mt-30">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_move_dlvylc_manage_pop" />
</div>
</c:if>
</form>
</div>
</div>
</html>

View File

@@ -0,0 +1,108 @@
<%@ 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" %>
<%--
Class Name : DlvylcManageR.jsp
Description : 배송지 관리.jsp
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-04-15 김혜인 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<div class="addressManage__header">
<h5 class="addressManage__title">배송지 목록</h5>
<div class="addressManage__btnContainer">
<button type = "button" class="btn outline" id="insertDlvylcBtn" onclick="fn_move_dlvylc_regpage_pop('N',<c:if test="${empty resultMap.resultList}">'Y'</c:if>); return false;">배송지 추가
</button>
</div>
</div>
<form id="dlvylcList">
<div class="addressManage__list">
<c:choose>
<c:when test = "${not empty resultMap.resultList}">
<c:forEach var="dlvylc" items="${resultMap.resultList}">
<div class="addressManage__item">
<div class="addressManage__itemRadio">
<div class="custom-radio no-text is-medium">
<input type="radio" value="<c:out value = "${dlvylc.adbkInnb}"/>" id="<c:out value = "${dlvylc.adbkInnb}"/>" name="abdkInnb" <c:if test = "${dlvylc.dftDlvylcAt eq 'Y'}">checked</c:if>
onclick="fn_save_dftDlvylcAt('<spring:message code="success.common.update"/>','<c:out value="${dlvylc.adbkInnb}" />')">
<label for="<c:out value = "${dlvylc.adbkInnb}"/>"></label>
</div>
</div>
<div class="addressManage__itemBody">
<div class="addressManage__itemName">
<div class="addressManage__itemPerson <c:if test = "${dlvylc.dftDlvylcAt eq 'Y'}">current</c:if>"><c:out value = "${dlvylc.dlvylcDcCn}"/>
<c:if test = "${dlvylc.dftDlvylcAt eq 'Y'}">
<div class="addressManage__itemCheck">
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14"
viewBox="0 0 14 14" fill="none">
<g clip-path="url(#clip0_121_29551)">
<path d="M5.36085 12.2297C5.22721 12.3641 5.04489 12.4391 4.85549 12.4391C4.66609 12.4391 4.48376 12.3641 4.35012 12.2297L0.314136 8.19308C-0.104712 7.77424 -0.104712 7.09505 0.314136 6.67699L0.819501 6.17149C1.23848 5.75264 1.91688 5.75264 2.33573 6.17149L4.85549 8.69138L11.6642 1.88249C12.0832 1.46365 12.7623 1.46365 13.1805 1.88249L13.6858 2.38799C14.1047 2.80684 14.1047 3.48589 13.6858 3.90409L5.36085 12.2297Z" fill="black" />
</g>
<defs>
<clipPath id="clip0_121_29551">
<rect width="14" height="14" fill="white" />
</clipPath>
</defs>
</svg>
</div>
</c:if>
</div>
<c:if test = "${dlvylc.dftDlvylcAt eq 'Y'}"><span class="addressManage__itemBadge">기본배송지</span></c:if>
</div>
<span class="addressManage__itemPhone"><c:out value = "${dlvylc.recpntNm}"/></span>
<span class="addressManage__itemPhone mbtlnb"><c:out value = "${dlvylc.mbtlnb}"/></span>
<p class="addressManage__itemAddress">(<c:out value = "${dlvylc.zip}"/>)
<c:if test = "${dlvylc.adresDv eq '01'}">
<c:out value = "${dlvylc.rnmAdres}"/>
</c:if>
<c:if test = "${dlvylc.adresDv eq '02'}">
<c:out value = "${dlvylc.lnbAdres}"/>
</c:if>
<c:out value = "${dlvylc.dtlAdres}"/></p>
</div>
<div class="addressManage__itemControls">
<c:if test = "${dlvylc.dftDlvylcAt eq 'N'}">
<button type="button" class="btn outline sm" id="deleteDlvylcDel"
onclick="fn_delete_dlvylc('<spring:message code="success.common.delete"/>',
'<c:out value=" ${dlvylc.adbkInnb}"/>','N')">
<spring:message code="button.delete" />
</button>
</c:if>
<button type="button" class="btn outline theme sm" id="selectDlvylcUpdtPopupForm"
onclick="fn_move_dlvylc_uptpage_pop('<c:out value="${pageIndex}"/>',
'<c:out value="${dlvylc.adbkInnb}"/>',
'N')">
<spring:message code="button.update" />
</button>
</div>
</div>
</c:forEach>
</div>
<br>
<input type="hidden" id="pageIndex" name="pageIndex" value="${pageIndex}" />
<div class="pagination__container mt-30">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_dlvylcList" />
</div>
</c:when>
<c:otherwise>
<div class="addressManage__list">
<div class="addressManage__no-result">
<img src="/pc/images/icon__no-result.png" alt="배송지 없음">
<p class="addressManage__no-result-text">
등록된 배송지가 없습니다.
</p>
</div>
</div>
</c:otherwise>
</c:choose>
</form>
</html>

View File

@@ -0,0 +1,58 @@
<%@ 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"%>
<%--
Class Name : DlvylcManageRForm.jsp
Description : 배송지 관리.jsp
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-04-15 김혜인 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<%-- 공통 include --%>
<jsp:include page="/WEB-INF/views/comm/Include.jsp"/>
<%-- 배송지 관리js --%>
<script src="<c:url value='/js/dlvylc/dlvylc.js'/>"></script>
<script>
$(document).ready(function(){
fn_select_dlvylcList(1);
});
</script>
</head>
<body>
<%-- 공통 Header --%>
<jsp:include page="/WEB-INF/views/comm/Header.jsp"/>
<!-- 메인 컨텐츠 영역 -->
<main>
<div class="sub-wrapper">
<div class="sub-content" id = "top">
<div class="sub-rl">
<%-- 마이페이지 Left 영역 --%>
<jsp:include page="/WEB-INF/views/comm/mpage/MypageLeft.jsp"/>
<div class="sub-right-content">
<div class="sub-right-content__section">
<h3 class="sub-right-content__title">배송지 관리</h3>
<div class="addressManage">
<div id = "content"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</main>
<%-- 공통 Footer --%>
<jsp:include page="/WEB-INF/views/comm/Footer.jsp"/>
<div id="modalDiv">
</div>
</body>
</html>

View File

@@ -0,0 +1,79 @@
<%@ 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>
<%--
Class Name : DlvylcRegistPopupC.jsp
Description : 배송지 등록 팝업.jsp
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-04-15 김혜인 최초 생성
--%>
<html>
<!-- 배송지 등록-->
<div id="dlvylcRegist" class="modal default" style="max-width: 600px;">
<div class="modal-header">
<div class="modal-header__title">배송지 등록</div>
</div>
<form id = "dlvylcRegistForm">
<div class="modal-content">
<table class="table-address">
<caption>해당 테이블에 대한 내용</caption>
<colgroup>
<col style="width:116px;">
<col style="width:auto;">
</colgroup>
<tbody>
<tr>
<th>배송지명<span class="required-asterisk">*</span></th>
<td>
<input type="text" class="m-input" name="dlvylcDcCn" title="배송지명" maxlength="67">
</td>
</tr>
<tr>
<th>받으시는 분<span class="required-asterisk">*</span></th>
<td>
<input type="text" class="m-input" title="받으시는 분" name="recpntNm" title="받으시는 분" maxlength="13">
</td>
</tr>
<tr>
<th>배송지 주소<span class="required-asterisk">*</span></th>
<td>
<input type="text" class="m-input short" id="zip" name="zip" title="우편번호" maxlength="5" readonly>
<button class="find-address-btn" onclick="fn_select_postcode(fn_select_dlvylc_postcode); return false;">우편번호 찾기</button>
<input type="text" class="m-input long my" id="adres" name="adres" maxlength="66" readonly title="주소">
<input type="text" class="m-input long" id="dtlAdres" name="dtlAdres" title="상세주소" maxlength="66" placeholder="나머지 주소를 입력해 주세요">
</td>
</tr>
<tr>
<th>휴대전화번호<span class="required-asterisk">*</span></th>
<td>
<input name="mbtlnb" type="text" class="m-input telno" title="휴대전화번호" maxlength="13" placeholder="휴대폰번호'-'없이 입력하세요">
</td>
</tr>
</tbody>
</table>
<div class="shipping-register-bottom">
<label class="b-checkbox checkbox is-medium">
<input type="checkbox" id="dftDlvylcAt" name="dftDlvylcAt" value="Y">
<span class="check"></span>
<span class="control-label">기본 배송지</span>
</label>
</div>
<div class="shipping-btn-container">
<a href="#" rel="modal:close" class="btn large outline">취소</a>
<button type="button" id="DlvylcRegistBtn" class="btn theme large"
onclick="fn_insert_dlvylc('<spring:message code='success.common.insert'/>'); return false;">등록하기</button>
</div>
</div>
<input type="hidden" id="adresDv" name="adresDv">
<input type="hidden" id="isPop">
</form>
</div>
</html>

View File

@@ -0,0 +1,99 @@
<%@ 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>
<%--
Class Name : DlvylcUpdtPopupU.jsp
Description : 배송지 수정.jsp
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-04-15 김혜인 최초 생성
--%>
<html>
<script>
$(document).ready(function (){
$(".telno").val(fn_format_mbtlnb($(".telno").val()));
});
</script>
<div id="dlvylcUpdate" class="modal default" style="max-width: 600px;">
<form id="dlvylcUpdtForm" name="dlvylcUpdtForm" action="<c:url value="/crm/dlvylc/updateDlvylcUpdt"/>" method="post">
<div class="modal-header">
<div class="modal-header__title">배송지 수정</div>
</div>
<div class="modal-content">
<table class="table-address">
<caption>해당 테이블에 대한 내용</caption>
<colgroup>
<col style="width:116px;">
<col style="width:auto;">
</colgroup>
<tbody>
<tr>
<th>배송지명<span class="required-asterisk">*</span></th>
<td>
<input type="text" class="m-input" name="dlvylcDcCn" title="배송지명" value="<c:out value = "${dtlDlvylc.resultVO.dlvylcDcCn}" />" maxlength="67">
</td>
</tr>
<tr>
<th>받으시는 분<span class="required-asterisk">*</span></th>
<td>
<input type="text" class="m-input" title="받으시는 분" name="recpntNm" title="받으시는 분" value="<c:out value="${dtlDlvylc.resultVO.recpntNm}" />" maxlength="13">
</td>
</tr>
<tr>
<th>배송지 주소<span class="required-asterisk">*</span></th>
<td>
<input type="text" class="m-input short" id="zip" name="zip" title="우편번호" value="<c:out value = "${dtlDlvylc.resultVO.zip}"/>" maxlength="5" readonly>
<button class="find-address-btn" onclick="fn_select_postcode(fn_select_dlvylc_postcode); return false;">우편번호 찾기</button>
<input type="text" class="m-input long my" id="adres" name="adres" title="주소" maxlength="66"
value=<c:choose>
<c:when test = "${dtlDlvylc.resultVO.adresDv eq '01'}">'<c:out value = "${dtlDlvylc.resultVO.rnmAdres}"/>'</c:when>
<c:when test = "${dtlDlvylc.resultVO.adresDv eq '02'}">'<c:out value = "${dtlDlvylc.resultVO.lnbAdres}"/>'</c:when>
</c:choose> readonly >
<input type="text" class="m-input long" id="dtlAdres" name="dtlAdres" title="상세주소" value="<c:out value = '${dtlDlvylc.resultVO.dtlAdres}'/>"
maxlength="66" placeholder="나머지 주소를 입력해 주세요">
</td>
</tr>
<tr>
<th>휴대전화번호<span class="required-asterisk">*</span></th>
<td>
<input name="mbtlnb" type="text" class="m-input telno" title="휴대전화번호" value="<c:out value = "${dtlDlvylc.resultVO.mbtlnb}"/>"
maxlength="13" placeholder="휴대폰번호'-'없이 입력하세요">
</td>
</tr>
</tbody>
</table>
<div class="shipping-register-bottom">
<label class="b-checkbox checkbox is-medium" id = "dftDlvylcAtLabel">
<c:choose>
<c:when test="${dtlDlvylc.resultVO.dftDlvylcAt eq 'Y'}">
<input type="checkbox" id="dftDlvylcAt" name="dftDlvylcAt" value="Y" checked>
</c:when>
<c:otherwise>
<input type="checkbox" id="dftDlvylcAt" name="dftDlvylcAt" value="Y">
</c:otherwise>
</c:choose>
<span class="check"></span>
<span class="control-label">기본 배송지</span>
</label>
</div>
<div class="shipping-btn-container">
<a href="#" rel="modal:close" class="btn large outline">취소</a>
<button id="DlvylcUpdateBtn" class="btn theme large outline"
onclick="fn_update_dlvylc('1','<spring:message code="success.common.update"/>','');return false;">
<spring:message code="button.update"/>하기
</button>
</div>
</div>
<input type="hidden" id="adbkInnb" name="adbkInnb" value="<c:out value = "${dtlDlvylc.resultVO.adbkInnb}" />">
<input type="hidden" id="adresDv" name="adresDv" value="<c:out value = "${dtlDlvylc.resultVO.adresDv}"/>">
<input type="hidden" id="isPop">
</form>
</div>
</html>

View File

@@ -0,0 +1,110 @@
<%@ 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"%>
<%--
Class Name : MbrInfoUpdtPasswordCnfirmR.jsp
Description : 회원 정보 수정 비밀번호 확인 .jsp
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-02-27 추지훈 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<%-- 공통 include --%>
<jsp:include page="/WEB-INF/views/comm/Include.jsp"/>
</head>
<script>
$(document).ready(function() {
$("#mbrPassword").on("keydown",function(e){
if (e.keyCode === 13) {
e.preventDefault();
}
});
});
/******************************************************
* 회원 비밀번호 확인
*******************************************************/
const fn_select_password = function() {
const data = $('#listForm').serialize();
$.ajax({
type: "post",
url : '<c:url value="/sopmal/mpage/mbr/selectMbrInfoUpdtPasswordCnfirm"/>',
data : data,
success:function(data) {
const resBody = data.resBody;
const parsedResult = JSON.parse(resBody.result);
let result = parsedResult.result;
if (result === 1) {
fn_move_target(); // 클릭한 메뉴로 이동
} else {
alert("비밀번호가 일치하지 않습니다.");
}
}
});
}
/******************************************************
* CRM 회원 검색 조회
*******************************************************/
const fn_move_target = function(goUrl) {
$('#listForm').attr('action', '<c:url value="/sopmal/mpage/mbr/selectMbrInfoUpdtForm"/>');
$('#listForm').attr('method', 'post');
$('#listForm').submit();
}
</script>
<body>
<%-- 공통 Header --%>
<jsp:include page="/WEB-INF/views/comm/Header.jsp"/>
<!-- 메인 컨텐츠 영역 -->
<main>
<div class="sub-wrapper">
<div class="sub-content">
<div class="sub-rl">
<%-- 마이페이지 Left 영역 --%>
<jsp:include page="/WEB-INF/views/comm/mpage/MypageLeft.jsp"/>
<div class="sub-right-content">
<div class="sub-right-content__section">
<h3 class="sub-right-content__title">회원정보수정</h3>
<form id="listForm" name="listForm" action="">
<div class="passwordCheck">
<h5 class="passwordCheck__title">비밀번호 확인</h5>
<p class="passwordCheck__text">고객님의 소중한 개인 정보 보호를 위해
<br>
비밀번호를 다시 한번 입력해 주시기 바랍니다.
</p>
<input class="input-text" type="password" title="해당 인풋에 대한 설명" name="mbrPassword" id="mbrPassword" value=""
placeholder="비밀번호 입력">
<button class="btn xl theme passwordCheck__btn" type="button" onclick="fn_select_password(); return false;">확인</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</main>
<%-- 공통 Footer --%>
<jsp:include page="/WEB-INF/views/comm/Footer.jsp"/>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,183 @@
<%@ 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"%>
<%--
Class Name : MbrSecsnU.jsp
Description : 회원 탈퇴.jsp
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-02-27 추지훈 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<%-- 공통 include --%>
<jsp:include page="/WEB-INF/views/comm/Include.jsp"/>
</head>
<script>
$(document).ready(function() {
fn_display_ctrl();
});
/* ********************************************************
* 회원 탈퇴 함수
******************************************************** */
const fn_display_ctrl = function() {
$('.termCheck').on('change', function() {
const isChecked = $('.termCheck').is(':checked');
});
$("select[name='secsnResn']").niceSelect();
};
/* ********************************************************
* 회원 탈퇴 함수
******************************************************** */
const fn_regist_mbr_secsn = function () {
let secsnResn = $("select[name='secsnResn']").val();
const isChecked = $('.termCheck').is(':checked');
if (isChecked) {
if (confirm('회원 탈퇴하시겠습니까?')) {
$.ajax({
type: "post",
url: '<c:url value="/sopmal/mpage/mbr/updateMbrSecsn"/>',
data: {secsnResn: secsnResn},
success: function (data) {
alert('정상적으로 탈퇴 되었습니다.');
location.href ="/logout";
}
});
}
}else{
alert("정보 삭제 동의에 체크해야합니다.");
$('.termCheck').focus();
}
};
</script>
<body>
<%-- 공통 Header --%>
<jsp:include page="/WEB-INF/views/comm/Header.jsp"/>
<!-- 메인 컨텐츠 영역 -->
<main>
<div class="sub-wrapper">
<div class="sub-content">
<div class="sub-rl">
<%-- 마이페이지 Left 영역 --%>
<jsp:include page="/WEB-INF/views/comm/mpage/MypageLeft.jsp"/>
<div class="sub-right-content">
<form id="registForm">
<div class="sub-right-content__section">
<h3 class="sub-right-content__title">회원탈퇴</h3>
<h3 class="sub-right-content__title" style="text-align: center;">탈퇴하시면 혜택이 모두 사라져요</h3>
<div class="deleteAccount__image signUp-promotion__col-3 ck-content">
<c:out value='${resultMap.sopmalInfo.joinBnef}' escapeXml='false'/>
</div>
<p class="deleteAccount__title">탈퇴 신청</p>
<div class="deleteAccount">
<div class="deleteAccount__item">
<div class="deleteAccount__itemTitle">탈퇴 사유</div>
<div class="select-box">
<select class="lg" title="해당 셀렉트에 대한 설명" name="secsnResn">
<option value="" disabled selected>탈퇴 사유를 선택해 주세요.</option>
<option value="배송 주문 불만족">배송 주문 불만족</option>
<option value="사이트 이용 불편">사이트 이용 불편</option>
<option value="상품품질 불만족">상품품질 불만족</option>
<option value="서비스 불만족">서비스 불만족</option>
<option value="기타">기타</option>
</select>
</div>
</div>
<div class="deleteAccount__item">
<div class="deleteAccount__itemTitle">내용</div>
<textarea class="textarea" rows="9" title="해당 텍스트 에어리어에 대한 설명" placeholder="" id="memo" name="memo"></textarea>
</div>
<div class="infoBox">
<p class="textInfo"><i class="icon icon_textInfo--sm"></i>회원탈퇴 시 회원님의 개인정보, 주문내역,
마일리지, 쿠폰 등 모든 정보가 바로 삭제됩니다. 회원님의 모든 SNS계정 정보가 쇼핑몰에서 삭제 됩니다.
</p>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox is-medium checkbox">
<input class="termCheck" type="checkbox" value="">
<span class="check"></span>
<span class="control-label">예, 정보 삭제에 동의합니다.</span>
</label>
</div>
</div>
<div class="sub-bottom-btn-container">
<button class="btn xl outline">취소</button>
<button type="button" class="btn xl theme" onclick="fn_regist_mbr_secsn();">탈퇴하기</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</main>
<%-- 공통 Footer --%>
<jsp:include page="/WEB-INF/views/comm/Footer.jsp"/>
<script>
//변경 버튼 클릭시, 변경할 내용 노출
var editBtn = $('.editAccount__editBtn');
var editContent = $('.editAccount__editContent');
editContent.hide();
editBtn.on('click', function () {
var $this = $(this);
var $thisContent = $this.closest('td').find('.editAccount__editContent');
if ($thisContent.is(':visible')) {
$thisContent.hide();
} else {
editContent.hide();
$thisContent.show();
}
});
//휴대폰 인증 버튼 클릭시, 휴대폰 인증 박스 노출
var phoneAuthBtn = $('#phoneAuthBtn');
var phoneAuthContent = $('#phoneAuthContent');
phoneAuthContent.hide();
phoneAuthBtn.click(function () {
phoneAuthContent.show();
});
</script>
<!-- 모달 -->
</body>
</html>

View File

@@ -0,0 +1,131 @@
<%@ 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"%>
<%--
Class Name : WslistInqireR.jsp
Description : 마이페이지 위시리스트
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-03-27 추지훈 최초 생성
--%>
<!-- 모달 -->
<!-- 배송 조회 -->
<div id="delivery-check-pop" class="modal default" style="max-width: 640px;">
<div class="modal-header">
<div class="modal-header__title">배송 조회</div>
</div>
<c:choose>
<c:when test="${ not empty resultMap.resultList && fn:length(resultMap.resultList) > 0 }">
<c:forEach var="list" items="${ resultMap.resultList }" varStatus="status">
<div class="modal-content">
<div class="table-wrapper">
<table class="table deliveryInfo">
<caption>해당 테이블에 대한 설명</caption>
<!-- 각 열 width 설정 -->
<colgroup>
<col style="width: 20%;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th>
주문자
</th>
<td>
<c:out value="${ resultMap.result.ordrrNm }"/>
</td>
</tr>
<tr>
<th>
수령인
</th>
<td>
<c:out value="${ list.recpntNm }"/>
</td>
</tr>
<tr>
<th>
배송지
</th>
<td><c:if test="${ not empty list.dlvylcZip }">(<c:out value="${ list.dlvylcZip }"/>)</c:if>
<c:choose>
<c:when test="${ list.dlvylcAdresDvCd eq '01'}">
<c:out value="${ list.dlvylcRnmAdres }"/>
</c:when>
<c:when test="${ list.dlvylcAdresDvCd eq '02'}">
<c:out value="${ list.dlvylcLnbAdres }"/>
</c:when>
</c:choose>
<c:out value="${ list.dlvylcAdresDtl }"/>
</td>
</tr>
<tr>
<th>
택배사
</th>
<td>
<c:out value="${ list.hdrycpnNm }"/>
</td>
</tr>
<tr>
<th>
송장번호
</th>
<td><c:out value="${ list.invcnb }"/></td><!-- TODO : 주문 목록에 붙여서 파라미터로 받은 송장번호 출력 -->
</tr>
</tbody>
</table>
</div>
<div class="table-wrapper">
<table class="table deliveryStatus">
<caption>해당 테이블에 대한 설명</caption>
<!-- 각 열 width 설정 -->
<colgroup>
<col style="width: 30%;">
<col style="width: 30%;">
<col style="width: auto;">
</colgroup>
<thead>
<tr>
<th>처리일시</th>
<th>상품위치</th>
<th>배송상태</th>
</tr>
</thead>
<tbody>
<c:forEach var="trackingList" items="${ list.trackingDetails }" varStatus="status">
<tr>
<td><c:out value="${ trackingList.time }"/></td>
<td>
<c:out value="${ trackingList.where }"/>
</td>
<td><c:out value="${ trackingList.kind }"/></td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</div>
</c:forEach>
</c:when>
<c:otherwise>
<div class="couponList">
<div class="couponList__no-result">
<img src="<c:url value="/pc/images/icon__no-result.png"/>" alt="">
<p class="orderList__no-result-text">배송 조회 내역이 없습니다.</p>
</div>
</div>
</c:otherwise>
</c:choose>
<div class="modal-footer">
<a href="#" rel="modal:close" class="btn large outline">닫기</a>
</div>
</div>

View File

@@ -0,0 +1,56 @@
<%@ 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"%>
<%--
Class Name : FdrmDlvyCycleChngU.jsp
Description : 마이페이지 배송 주기 변경 팝업
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-03-27 추지훈 최초 생성
--%>
<!-- 모달 -->
<!-- 배송주기 변경 -->
<form id="dlvyCycleUpdtForm">
<div id="delivery-cycle-pop" class="modal default" style="max-width: 640px;">
<div class="modal-header">
<div class="modal-header__title">배송주기 변경</div>
</div>
<div class="modal-content">
<div class="deliveryCyclePop">
<h4 class="modalSectionTitle">배송주기를 선택해 주세요.</h4>
<div class="deliveryCyclePop__checkWrapper">
<div class="custom-radio-container">
<c:forEach var="cdList" items="${ resultMap.dlvyCycleCdList }" varStatus="status">
<div class="custom-radio">
<input type="radio" id="<c:out value="${ cdList.cdNm }"/><c:out value="${ cdList.cd }"/>" name="dlvyCycleCd"
<c:choose>
<c:when test="${ not empty resultMap.paramVO.dlvyCycleCd }">
<c:if test="${ resultMap.paramVO.dlvyCycleCd eq cdList.cd }">checked="checked"</c:if>
</c:when>
<c:otherwise>
<c:if test="${ cdList.cd eq '01' }">checked="checked"</c:if>
</c:otherwise>
</c:choose>
>
<label for="<c:out value="${ cdList.cdNm }"/><c:out value="${ cdList.cd }"/>"><c:out value="${ cdList.cdNm }"/></label>
</div>
</c:forEach>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<input type="hidden" name="ordrInnb" value="<c:out value="${ resultMap.paramVO.ordrInnb }"/>" />
<a href="#" rel="modal:close" class="btn large outline">닫기</a>
<button type="button" class="btn large theme" onclick="fn_update_dlvy_cycle();">배송주기 변경</button>
</div>
</div>
</form>

View File

@@ -0,0 +1,264 @@
<%@ 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"%>
<%--
Class Name : WslistInqireRForm.jsp
Description : 마이페이지 위시리스트
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-02-27 추지훈 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<%-- 공통 include --%>
<jsp:include page="/WEB-INF/views/comm/Include.jsp"/>
<script>
$(document).ready(function() {
let pageIndex = '<c:out value="${ resultMap.paramVO.pageIndex }"/>';
let pageUnit = '<c:out value="${ resultMap.paramVO.pageUnit }"/>';
fn_select_fdrm_dlvy_list(pageIndex, pageUnit);
fn_start_display();
});
/******************************************************************
* 시작 화면 제어
******************************************************************/
const fn_start_display = function() {
/* 검색조건 > 날짜 구간 버튼 클릭 이벤트 */
$('.dateRange-btn').on('click', function() {
const date = $(this).attr('id');
$(this).closest('div').find('#dateRange').val(date);
if ('allDays' === date) {
$('#bgnDt, #endDt').val('');
return false;
}
fn_set_date('bgnDt', 'endDt', 'endDt', date);
});
/* 검색 버튼 클릭 이벤트 */
$('#btnSearch').on('click', function() {
fn_select_fdrm_dlvy_list(1);
});
}
/******************************************************************
* 정기배송 목록 조회
******************************************************************/
const fn_select_fdrm_dlvy_list = function(pageIndex, pageUnit) {
let dataStr;
if(!pageIndex) {
$('#pageIndex').val(1);
} else {
$('#pageIndex').val(pageIndex);
}
if(!pageUnit) {
dataStr = $('#listForm').serialize();
} else {
if($('#pageUnit').length){
$('#pageUnit').val(pageUnit);
dataStr = $('#listForm').serialize();
} else {
dataStr = $('#listForm').serialize()+'&pageUnit='+pageUnit;
}
}
$('#pageIndex').val(pageIndex);
$.ajax({
type: "post",
url : '<c:url value="/sopmal/mpage/ordr/selectFdrmDlvyInqire"/>',
data : dataStr,
success:function(resultHtml) {
$('#pageDiv').empty();
$('#pageDiv').html(resultHtml);
}
});
}
/*********************************************************************
* 정기배송 > 배송주기 변경 팝업
* *******************************************************************/
const fn_dlvy_cycle_change_modal = function (modalDivSltr, modalSlrt, ordrInnb) {
// const data = $(formId).serialize();
const data = null;
$.ajax({
type: 'POST',
url: '<c:url value="/sopmal/mpage/ordr/selectFdrmDlvyCycleChngForm"/>',
data: {
ordrInnb : ordrInnb
},
success: function (data) {
$(modalSlrt).remove();
$(modalDivSltr).html(data);
$(modalSlrt).modal();
}
});
}
/*********************************************************************
* 정기배송 > 배송주기 변경 팝업 > 배송주기 변경
* *******************************************************************/
const fn_update_dlvy_cycle = function () {
const data = $('#dlvyCycleUpdtForm').serialize();
$.ajax({
type: 'POST',
url: '<c:url value="/sopmal/mpage/ordr/selectFdrmDlvyCycleChngForm"/>',
data: data,
success: function (result) {
}
});
}
/*********************************************************************
* 정기배송 > 배송 혜지
* *******************************************************************/
const fn_delete_fdrm_dlvy = function () {
const data = $('#dlvyCycleUpdtForm').serialize();
$.ajax({
type: 'POST',
url: '<c:url value="/sopmal/mpage/ordr/selectFdrmDlvyCycleChngForm"/>',
data: data,
success: function (result) {
}
});
}
/* 검색조건 세팅 */
const fn_set_param = function() {
const params = ${paramVO};
const keys = Object.keys(params);
for (let i = 0; i < keys.length; i++) {
let key = keys[i];
let data = params[key];
if ('bgnDt' == key || 'endDt' == key) {
if (!fn_is_empty(data)) {
for (let i = 0; i < data.length; i++) {
$('#' + key).val(data);
}
}
}
if ('dateRange' == key) {
$('#'+ data).trigger('click');
}
if ('srchwrd' == key) {
$('#' + key).val(data);
}
}
}
</script>
</head>
<body>
<%-- 공통 Header --%>
<jsp:include page="/WEB-INF/views/comm/Header.jsp"/>
<!-- 메인 컨텐츠 영역 -->
<main>
<div class="sub-wrapper">
<div class="sub-content">
<div class="sub-rl">
<%-- 마이페이지 Left 영역 --%>
<jsp:include page="/WEB-INF/views/comm/mpage/MypageLeft.jsp"/>
<div class="sub-right-content">
<%-- 마이페이지 Right 영역 --%>
<jsp:include page="/WEB-INF/views/comm/mpage/MypageRight.jsp"/>
<div class="sub-right-content__section">
<h3 class="sub-right-content__title">정기배송 관리</h3>
<form id="listForm">
<input type="hidden" name="pageIndex" id="pageIndex" value="1">
<div class="customer-search">
<div class="customer-search__row justify-start">
<input class="input-text customer-search__search" type="text" name="srchwrd" title="검색어 입력" placeholder="주문번호, 상품명 검색">
</div>
<div class="customer-search__row justify-start">
<div class="customer-search__controls">
<div class="dateRange-btnContainer">
<input type="hidden" name="dateRange" id="dateRange" value="allDays">
<button type="button" class="dateRange-btn" id="7D">일주일</button>
<button type="button" class="dateRange-btn" id="1M">1개월</button>
<button type="button" class="dateRange-btn" id="3M">3개월</button>
<button type="button" class="dateRange-btn selected" id="allDays">전체</button>
</div>
<div class="input-container">
<input type="text" readonly id="bgnDt" class="datepicker" name="bgnDt" title="시작 날짜 선택" autocomplete="off">
<span class="tilde">~</span>
<input type="text" readonly id="endDt" class="datepicker" name="endDt" title="종료 날짜 선택" autocomplete="off">
</div>
</div>
<button class="btn md dark" type="button" id="btnSearch" onclick="fn_select_fdrm_dlvy_list(1);" >검색</button>
</div>
</div>
</form>
<div class="sub-tab__content current" id="pageDiv">
</div>
</div>
</div>
</div>
</div>
</div>
</main>
<%-- 공통 Footer --%>
<jsp:include page="/WEB-INF/views/comm/Footer.jsp"/>
<!-- 모달 영역 -->
<div id="modalDiv">
</div>
</body>
</html>

View File

@@ -0,0 +1,71 @@
<%@ 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"%>
<%--
Class Name : RtngudCanclRefndListR.jsp
Description : 마이페이지 반품/환불 내역
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-03-27 추지훈 최초 생성
--%>
<!--<div class="sub-tab__content current">-->
<div class="orderList">
<c:choose>
<c:when test="${ not empty resultMap.allOrdrList && fn:length(resultMap.allOrdrList) > 0 }">
<c:forEach var="list" items="${ resultMap.allOrdrList }" varStatus="status">
<div class="orderList__item">
<div class="orderList__item__inner">
<a href="" class="orderList__image">
<img src="<c:out value="${ list.goodsImageUrl }"/>" alt="상품 이미지">
</a>
<div class="orderList__description">
<div class="orderList__description__first">
<div class="orderList__item__top">
<a href="" class="orderList__orderNum"><c:out value="${ list.ordrInnb }"/>
</a>
<span class="orderList__dot">·</span>
<span class="orderList__date"><c:out value="${ list.ordrDt }"/> 주문</span>
</div>
<a href="" class="orderList__productTitle"><c:out value="${ list.goodsNm }"/></a>
<span class="orderList__option"><c:out value="${ not empty list.optnNm ? '옵션 : ' += list.optnNm : '' }"/></span>
</div>
<div class="orderList__description__second">
<span class="orderList__price"><span class="comma"><c:out value="${ list.setleAmt }"/></span>원</span>
</div>
<div class="orderList__description__third">
<span class="orderList__regularDelivery">
매월 15일
<span class="misc">(3회차)</span>
</span>
</div>
<div class="orderList__btnControls">
<button type="button" class="btn gray sm full" onclick="fn_delete_fdrm_dlvy();">배송해지</button>
<button type="button" class="btn outline sm full" onclick="fn_dlvy_cycle_change_modal( '#modalDiv', '#delivery-cycle-pop', '<c:out value="${ list.ordrInnb }"/>' );" >배송주기 변경</button>
</div>
</div>
</div>
</div>
</c:forEach>
</c:when>
<c:otherwise>
<div class="orderList__no-result">
<img src="/pc/images/icon__no-result.png" alt="">
<p class="orderList__no-result-text">
주문내역이 없습니다.
</p>
</div>
</c:otherwise>
</c:choose>
</div>
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_fdrm_dlvy_list" />
</div>
<!--</div>-->

View File

@@ -0,0 +1,241 @@
<%@ 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"%>
<%--
Class Name : WslistInqireRForm.jsp
Description : 마이페이지 위시리스트
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-02-27 추지훈 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<%-- 공통 include --%>
<jsp:include page="/WEB-INF/views/comm/Include.jsp"/>
<script src="<c:url value='/js/dlvylc/dlvylc.js'/>"></script>
<script>
$(document).ready(function() {
let pageIndex = '<c:out value="${ resultMap.paramVO.pageIndex }"/>';
let pageUnit = '<c:out value="${ resultMap.paramVO.pageUnit }"/>';
fn_select_gift_list(pageIndex, pageUnit);
fn_start_display();
});
/******************************************************************
* 시작 화면 제어
******************************************************************/
const fn_start_display = function() {
/* 검색조건 > 날짜 구간 버튼 클릭 이벤트 */
$('.dateRange-btn').on('click', function() {
const date = $(this).attr('id');
$(this).closest('div').find('#dateRange').val(date);
if ('allDays' === date) {
$('#bgnDt, #endDt').val('');
return false;
}
fn_set_date('bgnDt', 'endDt', 'endDt', date);
});
/* 검색 버튼 클릭 이벤트 */
$('#btnSearch').on('click', function() {
fn_select_gift_list(1);
});
}
/* 주문상세 이동 */
const fn_go_ordr_dtl = function (sopmalCd, ordrInnb) {
var form = $('#listForm');
$(form).append($('<input/>', {type: 'hidden', name: 'ordrInnb', id: 'ordrInnb', value: ordrInnb}));
$(form).attr('method', 'get');
$(form).attr('action', '<c:url value="/sopmal/mpage/ordr/selectMbrOrdrDtlInqire"/>');
$(form).submit();
}
/******************************************************************
* 선물함 목록 조회
******************************************************************/
const fn_select_gift_list = function(pageIndex, pageUnit) {
let dataStr;
if(!pageIndex) {
$('#pageIndex').val(1);
} else {
$('#pageIndex').val(pageIndex);
}
if(!pageUnit) {
dataStr = $('#listForm').serialize();
} else {
if($('#pageUnit').length){
$('#pageUnit').val(pageUnit);
dataStr = $('#listForm').serialize();
} else {
dataStr = $('#listForm').serialize()+'&pageUnit='+pageUnit;
}
}
$('#pageIndex').val(pageIndex);
$.ajax({
type: "post",
url : '<c:url value="/sopmal/mpage/ordr/selectGiftListInqire"/>',
data : dataStr,
success:function(resultHtml) {
$('#pageDiv').empty();
$('#pageDiv').html(resultHtml);
}
});
}
/*********************************************************************
* 성물함 > 선물현황 조회
* *******************************************************************/
const fn_select_gift_current_situation = function (modalDivSltr, modalSlrt, ordrInnb) {
const data = null;
$.ajax({
type: 'POST',
url: '<c:url value="/sopmal/mpage/ordr/selectGiftOrdrSittnPopupForm"/>',
data: {
ordrInnb : ordrInnb
},
success: function (result) {
$(modalSlrt).remove();
$(modalDivSltr).html(result);
$(modalSlrt).modal();
}
});
}
/* 검색조건 세팅 */
const fn_set_param = function() {
const params = ${paramVO};
const keys = Object.keys(params);
for (let i = 0; i < keys.length; i++) {
let key = keys[i];
let data = params[key];
if ('bgnDt' == key || 'endDt' == key) {
if (!fn_is_empty(data)) {
for (let i = 0; i < data.length; i++) {
$('#' + key).val(data);
}
}
}
if ('dateRange' == key) {
$('#'+ data).trigger('click');
}
if ('srchwrd' == key) {
$('#' + key).val(data);
}
}
}
</script>
</head>
<body>
<%-- 공통 Header --%>
<jsp:include page="/WEB-INF/views/comm/Header.jsp"/>
<!-- 메인 컨텐츠 영역 -->
<main>
<div class="sub-wrapper">
<div class="sub-content">
<div class="sub-rl">
<%-- 마이페이지 Left 영역 --%>
<jsp:include page="/WEB-INF/views/comm/mpage/MypageLeft.jsp"/>
<div class="sub-right-content">
<%-- 마이페이지 Right 영역 --%>
<jsp:include page="/WEB-INF/views/comm/mpage/MypageRight.jsp"/>
<div class="sub-right-content__section">
<h3 class="sub-right-content__title">선물함</h3>
<form id="listForm">
<input type="hidden" name="pageIndex" id="pageIndex" value="1">
<div class="customer-search">
<div class="customer-search__row justify-start">
<input class="input-text customer-search__search" type="text" name="srchwrd" title="검색어 입력" placeholder="주문번호, 상품명 검색">
</div>
<div class="customer-search__row justify-start">
<div class="customer-search__controls">
<div class="dateRange-btnContainer">
<input type="hidden" name="dateRange" id="dateRange" value="allDays">
<button type="button" class="dateRange-btn" id="7D">일주일</button>
<button type="button" class="dateRange-btn" id="1M">1개월</button>
<button type="button" class="dateRange-btn" id="3M">3개월</button>
<button type="button" class="dateRange-btn selected" id="allDays">전체</button>
</div>
<div class="input-container">
<input type="text" readonly id="bgnDt" class="datepicker" name="bgnDt" title="시작 날짜 선택" autocomplete="off">
<span class="tilde">~</span>
<input type="text" readonly id="endDt" class="datepicker" name="endDt" title="종료 날짜 선택" autocomplete="off">
</div>
</div>
<button class="btn md dark" type="button" id="btnSearch" onclick="fn_select_fdrm_dlvy_list(1);" >검색</button>
</div>
</div>
</form>
<div class="sub-tab__content current" id="pageDiv">
</div>
</div>
</div>
</div>
</div>
</div>
</main>
<%-- 공통 Footer --%>
<jsp:include page="/WEB-INF/views/comm/Footer.jsp"/>
<!-- 모달 영역 -->
<div id="modalDiv">
</div>
</body>
</html>

View File

@@ -0,0 +1,68 @@
<%@ 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"%>
<%--
Class Name : RtngudCanclRefndListR.jsp
Description : 마이페이지 반품/환불 내역
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-03-27 추지훈 최초 생성
--%>
<!--<div class="sub-tab__content current">-->
<div class="orderList">
<c:choose>
<c:when test="${ not empty resultMap.allOrdrList && fn:length(resultMap.allOrdrList) > 0 }">
<c:forEach var="list" items="${ resultMap.allOrdrList }" varStatus="status">
<div class="orderList__item">
<div class="orderList__item__inner">
<a href="" class="orderList__image">
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.cdnurl')" var="cdnurl"/>
<img src="<c:out value="${ cdnurl }${list.goodsImageUrl}"/>" onerror="this.src='/pc/images/image_placeholder.png'" alt="<c:out value="${list.goodsNm}"/>">
</a>
<div class="orderList__description">
<div class="orderList__description__first">
<div class="orderList__item__top">
<a href="" class="orderList__orderNum"><c:out value="${ list.ordrInnb }"/>
</a>
<span class="orderList__dot">·</span>
<span class="orderList__date"><c:out value="${ list.ordrDt }"/> 주문</span>
</div>
<a href="javascript:void(0);" onclick="fn_go_ordr_dtl('<c:out value="${list.sopmalCd}"/>', '<c:out value="${list.ordrInnb}"/>');" class="orderList__productTitle"><c:out value="${list.goodsNm}"/></a>
<span class="orderList__option"><c:out value="${ not empty list.optnNm ? '옵션 : ' += list.optnNm : '' }"/></span>
</div>
<div class="orderList__description__second">
<span class="orderList__price"><span class="comma"><c:out value="${ list.setleAmt }"/></span>원</span>
</div>
<div class="orderList__description__third">
<span class="orderList__mileage"><span class="comma">예상적립 <fmt:formatNumber value="${ list.mlgAmt }" pattern="#,###"/></span>원</span>
</div>
<div class="orderList__btnControls">
<button type="button" class="btn outline sm full" onclick="fn_select_gift_current_situation( '#modalDiv', '#gift-sittn-pop', '<c:out value="${ list.ordrInnb }"/>' );" >선물 조회</button>
</div>
</div>
</div>
</div>
</c:forEach>
</c:when>
<c:otherwise>
<div class="orderList__no-result">
<img src="/pc/images/icon__no-result.png" alt="">
<p class="orderList__no-result-text">
선물내역이 없습니다.
</p>
</div>
</c:otherwise>
</c:choose>
</div>
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_gift_list" />
</div>
<!--</div>-->

View File

@@ -0,0 +1,77 @@
<%@ 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"%>
<%--
Class Name : GiftOrdrSittnPopupR.jsp
Description : 마이페이지 선물함 선물현황 조회 팝업
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-03-27 추지훈 최초 생성
--%>
<!-- 모달 -->
<!-- 선물 조회 -->
<div id="gift-sittn-pop" class="modal default" style="max-width: 640px;">
<div class="modal-header">
<div class="modal-header__title">선물 조회</div>
</div>
<div class="modal-content">
<c:forEach var="list" items="${ resultMap.resultList }" varStatus="status">
<div class="table-wrapper">
<table class="table deliveryInfo">
<caption>해당 테이블에 대한 설명</caption>
<!-- 각 열 width 설정 -->
<colgroup>
<col style="width: 20%;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th>
수령인
</th>
<td><c:out value="${ list.recpntNm }"/></td>
</tr>
<tr>
<th>
선물상태
</th>
<td>
<c:out value="${ list.giftSttusCdNm }"/>
</td>
</tr>
<tr>
<th>
배송지
</th>
<td>
<c:if test="${ not empty list.dlvylcZip }">(<c:out value="${ list.dlvylcZip }"/>)</c:if>
<c:choose>
<c:when test="${ list.dlvylcAdresDvCd eq '01'}">
<c:out value="${ list.dlvylcRnmAdres }"/>
</c:when>
<c:when test="${ list.dlvylcAdresDvCd eq '02'}">
<c:out value="${ list.dlvylcLnbAdres }"/>
</c:when>
</c:choose>
<c:out value="${ list. dlvylcAdresDtl }"/>
</td>
</tr>
</tbody>
</table>
</div>
<hr>
<br>
</c:forEach>
</div>
<div class="modal-footer">
<a href="#" rel="modal:close" class="btn large outline">닫기</a>
</div>
</div>

View File

@@ -0,0 +1,475 @@
<%@ 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"%>
<%--
Class Name : WslistInqireRForm.jsp
Description : 마이페이지 위시리스트
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-02-27 추지훈 최초 생성
--%>
<script defer>
//상품 타이틀, 수량, 가격 저장하는 배열
// 배열 순서 -> [상품명, 수량, 1개당 가격, 상품 총가격(=수량x개당가격), 추가정보(색상, 사이즈등)]
fn_set_niceSelect_datePicker('.select-box-addCart')
//
// /*************************************************************
// 함께하면 좋은상품 이벤트 (모달)
// **************************************************************/
//
// //일반옵션
// // 라디오 버튼 클릭시, 상품 정보 배열에 추가 및 화면에 추가
$(".productDetailInfo__option__item").each(function () {
$(this).find("input[type=radio]").on("change", function () { // 라디오 버튼 클릭 시
if ($(this).prop('checked') == false) return; // 체크 해제시 리턴
const $title = $(this).closest(".productDetailInfo__option__item").find("label").text();
const $price = $(this).closest(".productDetailInfo__option__item").find(".productDetailInfo__option__price").text();
const $goodsOptnInnb = $(this).closest(".productDetailInfo__option__item").find('input[name="goodsOptnInnb"]').val()
const $goodsOptnTy = $(this).closest(".productDetailInfo__option__item").find('input[name="goodsOptnTy"]').val()
const $optnInfo = $(this).closest(".productDetailInfo__option__item").find('.productDetailInfo__option__monthly-payment').text();
const $priceNum = parseInt($price.replace(/,/g, ""));
//이미 추가된 상품인지 확인
var isItemAlreadyAdded = productArr.some(function (item) {
return item[0] === $title;
});
if (isItemAlreadyAdded){
fn_goods_duplicate_select_modal()
return;
}
productArr.push([$title, 1, $priceNum, $priceNum * 1, $goodsOptnInnb, $goodsOptnTy]); // 배열에 상품 정보 추가
$('#cartCountContainer').append( // 화면에 상품 정보 추가
'<div class="productDetailInfo__count">' +
'<div class="productDetailInfo__count__amountTop">' +
'<span class="productDetailInfo__count__amountTitle">' + $title + '</span>' +
'<button class="productDetailInfo__count__amountDelete"><span class="visually-hidden">삭제</span></button>' +
'</div>' +
'<div class="productDetailInfo__count__amountBottom">' +
'<div class="productDetailInfo__count__amountCounter">' +
'<button class="productDetailInfo__count__amountBtn minus"><span class="visually-hidden">감소</span></button>' +
'<span class="productDetailInfo__count__amountNumber">1</span>' +
'<button class="productDetailInfo__count__amountBtn plus"><span class="visually-hidden">추가</span></button>' +
'</div>' +
'<div class="productDetailInfo__count__amountPriceBox">' +
'<span class="productDetailInfo__count__amountMonthlyPrice">'+$optnInfo+'</span>' +
'<span class="productDetailInfo__count__amountPrice"><span class="comma productDetailInfo__count__priceNum">' + $price +
'</div>' +
'</div>' +
'</div>'
);
updateCartCounters(); // 화면에 상품 정보 업데이트
});
});
// 총 상품금액
var $cartTotalPrice = $(".modal .product-total__price__totalPriceNum");
// 수량 "-", "+" 버튼 클릭 시, 수량 증감 및 가격 변경 및 총 상품금액 변경
$("#cartCountContainer").on("click", ".productDetailInfo__count__amountBtn", function () { // 수량 버튼 클릭 시
var $counter = $(this);
var $index = $counter.closest(".productDetailInfo__count").index(); // 해당 상품의 인덱스
if ($(this).hasClass("minus")) { // "-" 버튼 클릭 시
if (productArr[$index][1] <= 1) return;
productArr[$index][1]--; // 배열에서 해당 상품의 수량 감소
productArr[$index][3] = productArr[$index][1] * productArr[$index][2]; // 배열에서 해당 상품의 총 가격 변경
} else { // "+" 버튼 클릭 시
productArr[$index][1]++; // 배열에서 해당 상품의 수량 증가
productArr[$index][3] = productArr[$index][1] * productArr[$index][2]; // 배열에서 해당 상품의 총 가격 변경
}
updateCartCounters(); // 화면에 상품 정보 업데이트
})
//
// //배열 내용을 바탕으로 각 아이템 텍스트 변경
function updateCartCounters() {
$(".modal .productDetailInfo__count").each(function () {
var $counter = $(this);
var $index = $counter.index();
var $number = $counter.find(".productDetailInfo__count__amountNumber");
var $price = $counter.find(".productDetailInfo__count__priceNum");
$number.text(productArr[$index][1]);
$price.text(addComma(productArr[$index][3]) + "원");
});
updateCartTotalPrice(); // 총 상품금액 업데이트
}
// 3자리마다 "," 추가
function addComma(num) {
return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
// 총 상품금액 업데이트
function updateCartTotalPrice() {
var totalPrice = 0; // 총 상품금액
for (var i = 0; i < productArr.length; i++) {
totalPrice += productArr[i][3]; // 배열의 총 가격을 더함
}
$cartTotalPrice.text(addComma(totalPrice)); // 총 상품금액 텍스트 변경
}
// x버튼 클릭 시 삭제
$("#cartCountContainer").on("click", ".productDetailInfo__count__amountDelete", function () { // x 버튼 클릭 시
var $index = $(this).closest(".productDetailInfo__count").index();
productArr.splice($index, 1); // 배열에서 해당 상품 삭제
$(this).closest(".productDetailInfo__count").remove(); // 화면에서 해당 상품 삭제
updateCartCounters(); // 화면에 상품 정보 업데이트
//일반옵션이 하나일 경우 라디오 체크 해제
if($('#option-change-popUp .custom-radio:not(:has(span))').length ===1
|| productArr.filter(item => item[5] === '01'&& $('#goodsInnb').val() ===item[6]).length === 0){
$("input[name='r-group01']").prop('checked', false)
}
});
// // // 마지막으로 생성된 상품에 각인 정보 추가
// // $('#cartAddTextBtn').on('click', function () {
// // var $index = $(".modal .productDetailInfo__count").length - 1;
// // var $text = $('#cartAddTextInput').val();
// // console.log(productArr[$index]); // 인덱스 확인
// // $(".modal .productDetailInfo__count").eq($index).find(".productDetailInfo__count__amountTop").append('<div class="productDetailInfo__count__additionalSelect">각인문구 : ' + $text + '</div>');
// //
// // console.log(productArr); // 배열 정보확인
// // });
//
//재고옵션
$('#cartAdditionalSelect').on("change", "select", function () { // 셀렉트 선택 시
if ($('#cartAdditionalSelect').find('.option.selected.disabled').length > 0) return;
if ($('#cartAdditionalSelect').find('.option.selected').length == $('#cartAdditionalSelect').find('.nice-select').length) { // 모든 셀렉트가 선택되면
var $title = $('#addCartGoodsNm').val();
var $optInfo = $(this).closest(".productDetailInfo__additionalSelect__item").find(".option.selected").attr("data-value").split('|');
var $priceNum = $optInfo[0];
var $goodsOptnInnb = $optInfo[1];
var $goodsOptnInfo = $optInfo[2];
var $goodsOptnTy = $optInfo[3];
var arr = [];
for (var i = 0; i < $('#cartAdditionalSelect').find('.nice-select').length; i++) {
arr.push($('#cartAdditionalSelect').find('.nice-select').eq(i).find('.option.selected').text());
}
//이미 추가된 상품인지 확인
var isItemAlreadyAdded = productArr.some(function (item) {
return item[0] === $title && item[6].join('') === arr.join('') || item[4] === $goodsOptnInnb;
});
if (isItemAlreadyAdded) {
fn_goods_duplicate_select_modal()
return;
}
productArr.push([$title, 1, $priceNum, $priceNum * 1, $goodsOptnInnb, $goodsOptnTy, arr]); // 배열에 상품 정보 추가
let cartAdditionalSelectText = '옵션 : ' + arr.join(' / ').replace(/\(\+.*?\)/g, ''); // 추가정보 텍스트로 변환
$('#cartCountContainer').append( // 화면에 상품 정보 추가
'<div class="productDetailInfo__count">' +
'<div class="productDetailInfo__count__amountTop">' +
'<span class="productDetailInfo__count__amountTitle">' + $title + '</span>' +
'<div class="productDetailInfo__count__additionalSelect">' + cartAdditionalSelectText + '</div>' +
'<button class="productDetailInfo__count__amountDelete"><span class="visually-hidden">삭제</span></button>' +
'</div>' +
'<div class="productDetailInfo__count__amountBottom">' +
'<div class="productDetailInfo__count__amountCounter">' +
'<button class="productDetailInfo__count__amountBtn minus"><span class="visually-hidden">감소</span></button>' +
'<span class="productDetailInfo__count__amountNumber">1</span>' +
'<button class="productDetailInfo__count__amountBtn plus"><span class="visually-hidden">추가</span></button>' +
'</div>' +
'<div class="productDetailInfo__count__amountPriceBox">' +
'<span class="productDetailInfo__count__amountMonthlyPrice">' + $goodsOptnInfo + '</span>' +
'<span class="productDetailInfo__count__amountPrice"><span class="comma productDetailInfo__count__priceNum">' + $priceNum +
'</div>' +
'</div>' +
'</div>'
);
}
updateCartCounters(); // 화면에 상품 정보 업데이트
});
// 추가구성옵션
$("#cartMoreItemsSelect").on("change",'select', function () {
var $moreItems = $('#cartMoreItemsSelect').find(".productDetailInfo__additionalSelect__item");
const $optInfoOptn3 = $(this).closest(".productDetailInfo__additionalSelect__item").find(".option.selected").attr("data-value").split('|');
const $priceNumOptn3 = $optInfoOptn3[0];
const $goodsOptnInnbOptn3 = $optInfoOptn3[1];
const $goodsOptnInfoOptn3 = $optInfoOptn3[2];
const $goodsOptnTyOptn3 = $optInfoOptn3[3];
const $optnEssnlAtOptn3 = $(this).closest(".productDetailInfo__additionalSelect__item").find('input[name="productDetailInfo__additionalSelect__otpnEssntlAt__relate__added"]').val();
// $moreItems.each(function () {
// if ($(this).find('.option.selected.disabled').length > 0) return;
var $title = $moreItems.find(".option.selected").text().replace(' ','').trim().replace('선택', ' ').replace(/\(\+.*?\)/g, '');
var $priceNum = $(this).find(".option.selected").attr("data-value");
//이미 추가된 상품인지 확인
var isItemAlreadyAdded = productArr.some(function (item) {
return item[4] === $goodsOptnInnbOptn3;
});
if (isItemAlreadyAdded){
fn_goods_duplicate_select_modal()
return;
}
productArr.push([$title, 1, $priceNumOptn3, $priceNumOptn3 * 1, $goodsOptnInnbOptn3, $goodsOptnTyOptn3, $optnEssnlAtOptn3]); // 배열에 상품 정보 추가
$('#cartCountContainer').append( // 화면에 상품 정보 추가
'<div class="productDetailInfo__count">' +
'<div class="productDetailInfo__count__amountTop">' +
'<span class="productDetailInfo__count__amountTitle">' + $title + '</span>' +
'<button class="productDetailInfo__count__amountDelete"><span class="visually-hidden">삭제</span></button>' +
'</div>' +
'<div class="productDetailInfo__count__amountBottom">' +
'<div class="productDetailInfo__count__amountCounter">' +
'<button class="productDetailInfo__count__amountBtn minus"><span class="visually-hidden">감소</span></button>' +
'<span class="productDetailInfo__count__amountNumber">1</span>' +
'<button class="productDetailInfo__count__amountBtn plus"><span class="visually-hidden">추가</span></button>' +
'</div>' +
'<div class="productDetailInfo__count__amountPriceBox">' +
'<span class="productDetailInfo__count__amountMonthlyPrice">'+$goodsOptnInfoOptn3+'</span>' +
'<span class="productDetailInfo__count__amountPrice"><span class="comma productDetailInfo__count__priceNum">' + $priceNum +
'</div>' +
'</div>' +
'</div>'
);
$(this).val('').niceSelect('update')
updateCartCounters(); // 화면에 상품 정보 업데이트
// });
});
</script>
<div id="option-change-popUp" class="modal option">
<div class="option-header">
<div class="option-header__title">옵션 선택</div>
<input type="hidden" id="addCartGoodsInnb" value="${resultMap.goodsDtl.goodsInnb}"/>
<input type="hidden" id="sopmalCd" value="${resultMap.goodsDtl.sopmalCd}"/>
<input type="hidden" id="addCartGoodsNm" value="${resultMap.goodsDtl.goodsNm}"/>
<input type="hidden" id="slepricDscntAmt" value="${resultMap.goodsDtl.slepric}"/>
<c:forEach var="cardDv" items="${resultMap.cartDvList}">
<input type="hidden" value="${cardDv.cd}" id="cartDv-${cardDv.cdNm}"/>
</c:forEach>
</div>
<div class="option-content">
<div class="product-unit product-unit--relatedProduct">
<div class="product-unit-image">
<a href="javascript:void(0);" onclick="fn_move_goods_dtl('<c:out value="${resultMap.goodsDtl.goodsInnb}"/>');">
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.cdnurl')" var="cdnurl"/>
<img src="<c:out value="${cdnurl}${fn:split(resultMap.goodsDtl.img, '|')[0]}"/> " onerror="this.src='/pc/images/image_placeholder.png'" alt="상품 이미지">
</a>
</div>
<div class="product-unit-info">
<div class="product-unit-info__inner">
<div class="product-unit-title">
<a href="javascript:void(0);" onclick="fn_move_goods_dtl('<c:out value="${resultMap.goodsDtl.goodsInnb}"/>');"><c:out value="${resultMap.goodsDtl.goodsNm}"/></a>
</div>
<div class="product-unit-price">
<div class="product-unit-price__price">
<span class="product-unit-price__original">
<span class="comma">
<fmt:formatNumber value="${resultMap.goodsDtl.cnsmrpric}"/></span>
<span class="priceUnit"></span>
</span>
<span class="product-unit-price__current">
<span class="comma"> <fmt:formatNumber value="${resultMap.goodsDtl.slepric - resultMap.goodsDtl.evtAditDscntAmt}"/></span>
<span class="priceUnit">원</span></span>
</div>
<div class="product-unit-price__sale">
<span class="percent">
<c:choose>
<c:when test="${resultMap.goodsDtl.eventAt eq 'Y'}">
<c:out value="${resultMap.goodsDtl.evtSlePercent}"/>
</c:when>
<c:otherwise>
<c:out value="${resultMap.goodsDtl.slePercent}"/>
</c:otherwise>
</c:choose>
%</span>
</div>
</div>
</div>
</div>
</div>
<c:if test="${resultMap.goodsDtl.goodsSttusCd ne '02' or resultMap.goodsDtl.goodsSttusCd ne '03'}">
<c:choose>
<c:when test="${not empty resultMap.optnList}">
<c:if test="${not empty resultMap.optnList.normalOptnList}">
<div class="productDetailInfo__option">
<div class="productDetailInfo__option__box">
<c:forEach var="goodsOpt01" items="${resultMap.optnList.normalOptnList}" varStatus="optList01">
<c:if test="${goodsOpt01.optnExpsrAt eq 'Y'}">
<c:if test="${goodsOpt01.invntrySldoutExpsrAt eq 'Y'}">
<div class="productDetailInfo__option__item">
<c:if test="${not empty goodsOpt01.optnVal1}">
<div class="custom-radio is-medium">
<input type="radio" id="r-${goodsOpt01.optnOrdr}" value="${goodsOpt01.optnVal1}" name="r-group01" <c:if test="${goodsOpt01.disableAt eq 'Y'}"> disabled</c:if>>
<label for="r-${goodsOpt01.optnOrdr}">${goodsOpt01.optnVal1}</label>
<input type="hidden" name="optnCd" value="${goodsOpt01.optnCd1}">
<input type="hidden" name="goodsOptnInnb" value="${goodsOpt01.goodsOptnInnb}"/>
<input type="hidden" name="goodsOptnTy" value="${goodsOpt01.optnTy}"/>
<input type="hidden" name="goodsSopmalCd" value="${goodsOpt01.sopmalCd}"/>
<c:if test="${goodsOpt01.disableAt eq 'Y'}"> <span>(품절)</span></c:if>
</div>
<div class="productDetailInfo__option__right">
<span class="productDetailInfo__option__price"><span class="comma"><fmt:formatNumber value="${goodsOpt01.slepric}"/></span> <span class="priceUnit"> 원</span></span>
<span class="productDetailInfo__option__monthly-payment"><c:out value="${goodsOpt01.optnInfo}"/></span>
</div>
</c:if>
</div>
</c:if>
</c:if>
</c:forEach>
</div>
</div>
</c:if>
<c:if test="${not empty resultMap.optnList.invntryOptnList}">
<div class="productDetailInfo__additionalSelect" id="cartAdditionalSelect">
<span class="productDetailInfo__option__title">옵션선택(필수)</span>
<div class="productDetailInfo__additionalSelect__inner">
<div class="productDetailInfo__additionalSelect__item">
<c:if test="${not empty resultMap.optnList.invntryOptnList[0].optnNm1}">
<span class="productDetailInfo__additionalSelect__category"><c:out value="${resultMap.optnList.invntryOptnList[0].optnNm1}"/> </span>
<div class="select-box-addCart">
<select id="selectAddCartInvntryOptn1" name="selectAddCartInvntryOptn">
<option value="" disabled selected><c:out value="선택"/></option>
<c:forEach var="goodsOpt02" items="${resultMap.optnList.invntryOptnList}" varStatus="optList02">
<c:if test="${goodsOpt02.optnExpsrAt eq 'Y'}">
<c:if test="${goodsOpt02.invntrySldoutExpsrAt eq 'Y'}">
<c:if test="${goodsOpt02.optnVal1 ne resultMap.optnList.invntryOptnList[optList02.index-1].optnVal1}">
<option value="${goodsOpt02.slepric}|${goodsOpt02.goodsOptnInnb}|${goodsOpt02.optnInfo}|${goodsOpt02.optnTy}" <c:if test="${goodsOpt02.disableAt eq 'Y'}"> disabled </c:if> >
<c:out value="${goodsOpt02.optnVal1}"/>
</option>
</c:if>
</c:if>
</c:if>
</c:forEach>
</select>
</div>
</c:if>
</div>
<div class="productDetailInfo__additionalSelect__item">
<c:if test="${not empty resultMap.optnList.invntryOptnList[0].optnNm2}">
<span class="productDetailInfo__additionalSelect__category"><c:out value="${resultMap.optnList.invntryOptnList[0].optnNm2}"/> </span>
<div class="select-box-addCart">
<select id="selectAddCartInvntryOptn2" name="selectAddCartInvntryOptn">
<option value="" disabled selected><c:out value="선택"/></option>
</select>
</div>
</c:if>
</div>
<div class="productDetailInfo__additionalSelect__item">
<c:if test="${not empty resultMap.optnList.invntryOptnList[0].optnNm3}">
<span class="productDetailInfo__additionalSelect__category"><c:out value="${resultMap.optnList.invntryOptnList[0].optnNm3}"/> </span>
<div class="select-box-addCart">
<select id="selectAddCartInvntryOptn3" name="selectAddCartInvntryOptn">
<option value="" disabled selected><c:out value="선택"/></option>
</select>
</div>
</c:if>
</div>
<div class="productDetailInfo__additionalSelect__item">
<c:if test="${not empty resultMap.optnList.invntryOptnList[0].optnNm4}">
<span class="productDetailInfo__additionalSelect__category"><c:out value="${resultMap.optnList.invntryOptnList[0].optnNm4}"/> </span>
<div class="select-box-addCart">
<select id="selectAddCartInvntryOptn4" name="selectAddCartInvntryOptn">
<option value="" disabled selected><c:out value="선택"/></option>
</select>
</div>
</c:if>
</div>
</div>
</div>
</c:if>
<c:if test="${not empty resultMap.optnList.addedOptnList}">
<div class="productDetailInfo__additionalSelect" id="cartMoreItemsSelect">
<span class="productDetailInfo__additionalSelect__title">추가구성</span>
<div class="productDetailInfo__additionalSelect__inner">
<c:forEach var="goodsOpt03" items="${resultMap.optnList.addedOptnList}" varStatus="optList03">
<c:if test="${not empty goodsOpt03.optnNm1}">
<c:if test="${resultMap.optnList.addedOptnList[optList03.index-1].optnNm1 ne goodsOpt03.optnNm1}">
<div class="productDetailInfo__additionalSelect__item">
<span class="productDetailInfo__additionalSelect__category"><c:out value="${goodsOpt03.optnNm1}"/> </span>
<input type="hidden" name="productDetailInfo__additionalSelect__otpnEssntlAt__relate__added" <c:if test="${goodsOpt03.optnEssntlAt eq 'Y'}"> value="Y"</c:if>/>
</c:if>
<c:if test="${resultMap.optnList.addedOptnList[optList03.index-1].optnNm1 ne goodsOpt03.optnNm1}">
<div class="select-box-addCart">
<select title="${goodsOpt03.OptnInfo}" name="selectRelateAddedOptn">
<option value="" disabled selected><c:out value="선택"/></option>
<c:forEach var="goodsOptVal03" items="${resultMap.optnList.addedOptnList}" varStatus="optVal03">
<c:if test="${goodsOptVal03.optnNm1 eq goodsOpt03.optnNm1}">
<c:if test="${goodsOptVal03.optnExpsrAt eq 'Y'}">
<c:if test="${goodsOptVal03.invntrySldoutExpsrAt eq 'Y'}">
<option value="${goodsOptVal03.slepric}|${goodsOptVal03.goodsOptnInnb}|${goodsOptVal03.optnInfo}|${goodsOptVal03.optnTy} " <c:if test="${goodsOptVal03.disableAt eq 'Y'}"> disabled</c:if> ><c:out value="${goodsOptVal03.optnVal1}"/> (+ <fmt:formatNumber value="${goodsOptVal03.slepric}"/>) <c:if test="${goodsOptVal03.disableAt eq 'Y'}"> <c:out value="(품절)"/> </c:if> </option>
</c:if>
</c:if>
</c:if>
</c:forEach>
</select>
</div>
</div>
</c:if>
</c:if>
</c:forEach>
</div>
</div>
</c:if>
<%-- <div class="productDetailInfo__confirmOption">--%>
<%-- <button class="btn md outline" id="cartMoreItemsButton">입력한 정보 선택</button>--%>
<%-- </div>--%>
<%--TODO :: 입력옵션 --%>
<%-- <div class="productDetailInfo__option">--%>
<%-- <span class="productDetailInfo__option__title">상품정보 입력</span>--%>
<%-- <div class="productDetailInfo__additionalSelect__inner">--%>
<%-- <div class="productDetailInfo__additionalSelect__item">--%>
<%-- <span class="productDetailInfo__additionalSelect__category">각인 옵션</span>--%>
<%-- <input id="cartAddTextInput" class="input-text full" type="text" title="해당 인풋에 대한 설명"--%>
<%-- placeholder="각인 문구를 입력해주세요" value="">--%>
<%-- <button id="cartAddTextBtn" class="btn outline">저장</button>--%>
<%-- </div>--%>
<%-- </div>--%>
<%-- </div>--%>
<div id="cartCountContainer">
</div>
</div>
</c:when>
<c:otherwise>
<%--옵션 없을 경우 빈값--%>
</c:otherwise>
</c:choose>
</c:if>
<div class="product-total__container">
<span class="product-total__text">총 상품금액</span>
<span class="product-total__price">
<span class="product-total__price__totalPriceNum">0</span>
<span class="won">원</span>
</span>
</div>
<c:choose>
<c:when test="${resultMap.goodsDtl.buttonRplcWordsUseAt ne 'Y'}">
<div class="product-btn-container">
<button class="btn theme large addCart">장바구니 담기</button>
</div>
</c:when>
<c:otherwise>
<div class="product-btn-container">
<a href="${resultMap.goodsDtl.pcButtonRplcLink}"
<c:if test="${resultMap.goodsDtl.buttonRplcLinkBrwsrDvCd eq '01'}"> target="_blank" </c:if> >
<span> <c:out value="${resultMap.goodsDtl.buttonRplcWords}"/> </span>
</a>
</div>
</c:otherwise>
</c:choose>
</div>

View File

@@ -0,0 +1,125 @@
<%@ 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"%>
<%--
Class Name : IndvdlSetleR.jsp
Description : 마이페이지 개인결제
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-04-11 김혜인 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<%-- 공통 include --%>
<jsp:include page="/WEB-INF/views/comm/Include.jsp"/>
<script>
$(document).ready(function() {
fn_init();
fn_event();
});
/* ********************************************************
* 초기 설정
**********************************************************/
const fn_init = function() {
fn_get_indvdi_setle_list(1);
}
/* ********************************************************
* 이벤트 설정
**********************************************************/
const fn_event = function() {
}
/* ********************************************************
* function
**********************************************************/
/* 개인결제 목록 조회 */
const fn_get_indvdi_setle_list = function(index) {
if (!fn_is_empty(index)) {
$('#pageIndex').val(index);
}
let data = $('#condForm').serialize();
$.ajax({
type : 'post',
url : '<c:url value="/sopmal/mpage/ordr/selectIndvdlSetleInqireAjax"/>',
data : data,
success : function(html) {
$('#pageDiv').html(html);
},
error: function(data) {
let message = JSON.parse(JSON.parse(request.responseText).resBody.message);
alert(message.errorMsg);
}
});
}
/* 개인결제 등록 화면 이동 */
const fn_go_indvdl_setle_form = function(sopmalCd, ordrInnb, mbrInnb, mbrId, mbrDvCd) {
const form = $('<form></form>');
$(form).append($('<input/>', {type:'hidden', name:'sopmalCd', value:sopmalCd}));
$(form).append($('<input/>', {type:'hidden', name:'ordrInnb', value:ordrInnb}));
$(form).append($('<input/>', {type:'hidden', name:'mbrInnb', value:mbrInnb}));
$(form).append($('<input/>', {type:'hidden', name:'mbrId', value:mbrId}));
$(form).append($('<input/>', {type:'hidden', name:'mbrDvCd', value:mbrDvCd}));
$(form).attr('method', 'post');
$(form).attr('action', '<c:url value="/sopmal/ordr/selectIndvdlSetleForm"/>');
$(form).appendTo('body');
$(form).submit();
}
</script>
</head>
<body>
<%-- 공통 Header --%>
<jsp:include page="/WEB-INF/views/comm/Header.jsp"/>
<!-- 메인 컨텐츠 영역 -->
<main>
<div class="sub-wrapper">
<div class="sub-content">
<div class="sub-rl">
<%-- 마이페이지 Left 영역 --%>
<jsp:include page="/WEB-INF/views/comm/mpage/MypageLeft.jsp"/>
<div class="sub-right-content">
<%-- 마이페이지 Right 영역 --%>
<jsp:include page="/WEB-INF/views/comm/mpage/MypageRight.jsp"/>
<div class="sub-right-content__section">
<h3 class="sub-right-content__title">개인결제</h3>
<form id="condForm">
<input type="hidden" name="pageIndex" id="pageIndex" value="1">
<input type="hidden" name="pageUnit" id="pageUnit" value="4"/>
</form>
<div id="pageDiv"></div>
</div>
</div>
</div>
</div>
</div>
</main>
<%-- 공통 Footer --%>
<jsp:include page="/WEB-INF/views/comm/Footer.jsp"/>
</body>
</html>

View File

@@ -0,0 +1,43 @@
<%@ 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"%>
<div class="personalPayment">
<c:choose>
<c:when test="${not empty data.resultList}">
<c:forEach var="setle" items="${data.resultList}">
<div class="product-unit">
<div class="product-unit-image">
<a href="javascript:void(0);" onclick="fn_go_indvdl_setle_form('<c:out value="${setle.sopmalCd}"/>', '<c:out value="${setle.ordrInnb}"/>', '<c:out value="${setle.mbrInnb}"/>', '<c:out value="${setle.mbrId}"/>', '<c:out value="${setle.mbrDvCd}"/>');">
<img src="<c:url value="/pc/images/개인결제이미지.png"/>" alt="개인결제">
</a>
</div>
<div class="product-unit-info">
<div class="product-unit-info__inner">
<span class="product-unit-price__current"><c:out value="${setle.indvdlSetleSj}"/></span>
<div class="product-unit-price">
<div class="product-unit-price__price">
<span class="product-unit-price__current"><c:out value="${setle.setleAmt}"/>원</span>
</div>
</div>
<div class="personalPayment__period"><c:out value="${setle.indvdlSetleValidDe}"/>까지</div>
</div>
</div>
</div>
</c:forEach>
</c:when>
<c:otherwise>
<div class="personalPayment__no-result">
<img src="/pc/images/icon__no-result.png" alt="">
<p class="personalPayment__no-result-text">개인결제내역이 없습니다.</p>
</div>
</c:otherwise>
</c:choose>
</div>
<div class="pagination__container" style="margin-top: 20px">
<ui:pagination paginationInfo="${data.paginationInfo}" type="image" jsFunction="fn_get_indvdi_setle_list"/>
</div>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,794 @@
<%@ 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"%>
<%--
Class Name : WslistInqireRForm.jsp
Description : 마이페이지 위시리스트
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-02-27 추지훈 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<%-- 공통 include --%>
<jsp:include page="/WEB-INF/views/comm/Include.jsp"/>
</head>
<script>
$(document).ready(function() {
fn_start_display();
});
/******************************************************************
* 시작 화면 제어
******************************************************************/
const fn_start_display = function() {
}
/*********************************************************************
* 반품 주소 변경
* *******************************************************************/
const fn_update_dlvy_info = function () {
const data = $('#returnDlvyUpdtForm').serializeArray();
if (confirm('반품 배송지 정보를 <spring:message code="confirm.common.update"/>')) {
$.ajax({
type: 'POST',
url: '<c:url value="/sopmal/nmbr/ordr/updateRtngudCanclRefndUpdt"/>',
data: data,
success: function (result) {
alert('<spring:message code="success.common.update"/>');
location.reload();
}
});
}
}
/*********************************************************************
* 환불 계좌 정보 변경
* *******************************************************************/
const fn_update_acnt_info = function () {
const data = $('#refundAcntUpdtForm').serialize();
if (confirm('환불 계좌 정보를 <spring:message code="confirm.common.update"/>')) {
$.ajax({
type: 'POST',
url: '<c:url value="/sopmal/nmbr/ordr/updateRtngudCanclRefndUpdt"/>',
data: data,
success: function (result) {
alert('<spring:message code="success.common.update"/>');
location.reload();
}
});
}
}
/* ********************************************************
* 우편번호 찾기
******************************************************** */
const fn_set_postcode = function(data) {
$('#postcode').val(data.postcode);
$('#adresDvCd').val(data.addressType);
if (data.addressType == '02') {
$('#address').val(data.jibunAddress);
} else if (data.addressType == '01') {
$('#address').val(data.roadAddress);
}
}
/**
* 반품 상품 QNA 문의 팝업
* @param goodsInnb
*/
const fn_goods_qna_pop_regist = (goodsInnb) => {
$.ajax({
type: "post",
data: {
authDv: "REGIST",
reqUrl: "modal",
bbsId: "goods_qna",
goodsInnb: goodsInnb,
listAt: "list",
},
url: "/sopmal/csc/selectBbscttAuth",
success: function (data) {
/*모달중복제거*/
fn_close_modal("qna-pop-regist");
fn_close_modal("qna-update-pop");
$("#modalDiv").html(data);
$("#qna-pop-regist").modal();
}
});
}
</script>
<body>
<%-- 공통 Header --%>
<jsp:include page="/WEB-INF/views/comm/Header.jsp"/>
<!-- 메인 컨텐츠 영역 -->
<main>
<div class="sub-wrapper">
<div class="sub-content">
<div class="sub-rl">
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.cdnurl')" var="cdnurl"/>
<%-- 마이페이지 Left 영역 --%>
<div class="sub-right-content">
<div class="sub-right-content__section">
<h3 class="sub-right-content__title"><c:if test = "${not empty resultMap.result.refnd.returnProcsSttusCd}">반품/</c:if>환불 내역</h3>
<div class="sub-right-content__section">
<h3 class="orderDetail__title"><c:out value="${ resultMap.result.refnd.registDt }"/>
<span class="orderDetail__titleNum">
<c:choose>
<c:when test = "${not empty resultMap.result.refnd.returnProcsSttusCd}">
반품번호
</c:when>
<c:otherwise>
환불번호
</c:otherwise>
</c:choose>
<c:out value="${ resultMap.result.refnd.orderRefundInnb }"/>
</span>
</h3>
<div class="cartOrder__list">
<div class="table-wrapper">
<table class="table vertical">
<caption>해당 테이블에 대한 설명</caption>
<!-- 각 열 width 설정 -->
<colgroup>
<col style="width: auto;">
<col style="width: 40px;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 7%;">
</colgroup>
<thead>
<tr>
<th>상품명</th>
<th>수량</th>
<th>상품금액</th>
<th>할인금액</th>
<th>할인적용금액</th>
<th>환불신청수량</th>
<th>배송비</th>
<th>문의</th>
</tr>
</thead>
<tbody>
<c:set var="rePreOrdrDlvyInnb" value="0"/>
<c:set var="reDlvyCnt" value="1"/>
<c:choose>
<c:when test="${ not empty resultMap.result.itemsList }">
<c:forEach var="refundList" items="${ resultMap.result.itemsList }" varStatus="status">
<tr>
<td>
<div class="cartItem">
<div class="cartItem__image">
<%--
<a href="">
<img src="<c:out value="${ refundList.img }"/>" alt="상품이미지">
</a>
--%>
<a class="orderList__image">
<img src="<c:out value="${ cdnurl }"/><c:out value="${ refundList.img }"/>" onerror="this.src='/pc/images/image_placeholder.png'" alt="<c:out value="${refundList.goodsNm}"/>">
</a>
</div>
<div class="cartItem__productInfo">
<a class="cartItem__productTitle">
<c:out value="${ refundList.goodsNm }"/>
</a>
<c:if test="${ not empty refundList.optnNm }">
<span class="cartItem__productOption">
<span class="option-badge">옵션</span>
<c:out value="${ refundList.optnNm }"/>
</span>
</c:if>
(<c:out value="${ refundList.dlvylcZip }"/>)
<c:choose>
<c:when test="${ refundList.dlvylcAdresDvCd eq '01' }">
<c:out value="${ refundList.dlvylcRnmAdres }"/>
</c:when>
<c:when test="${ refundList.dlvylcAdresDvCd eq '02' }">
<c:out value="${ refundList.dlvylcLnbAdres }"/>
</c:when>
</c:choose>
<c:out value="${ refundList.dlvylAdresDtl }"/>
</div>
</div>
</td>
<td>
<span><c:out value="${ refundList.ordrQy }"/></span>
</td>
<td>
<span class="cartItem__normalPrice"><span
class=" comma"><c:out value="${ refundList.slepric }"/></span><span
class="priceUnit">원</span>
</span>
</td>
<td>
<span class="cartItem__discountPrice"><span
class="cartItem__discountMinus">(-)</span><span
class="comma"><c:out value="${ refundList.dscntAmt }"/></span><span
class="priceUnit">원</span>
</span>
</td>
<td>
<span class="cartItem__afterPrice"><span
class="comma"><c:out value="${ refundList.applyDscntAmt }"/></span>
<span class="priceUnit">원</span>
</span>
</td>
<td>
<span><c:out value="${ refundList.refundQy }"/></span>
</td>
<c:choose>
<c:when test="${ refundList.ordrTyCd eq '04' || refundList.ordrTyCd eq '05' }">
<c:set var="reRowspanCnt" value="0"/>
<c:forEach var="tmpGoods" items="${resultMap.result.itemsList}">
<c:set var="reRowspanCnt" value="${refundList.ordrDlvyInnb == tmpGoods.ordrDlvyInnb ? reRowspanCnt + 1 : reRowspanCnt}"/>
</c:forEach>
<c:if test="${rePreOrdrDlvyInnb != refundList.ordrDlvyInnb}">
<td class="center" rowspan="${reRowspanCnt}">
<span class="fs-13 fw-400">${reDlvyCnt += ' 번째 배송지'}</span><br>
<span class="fs-13 fw-400">${refundList.dlvyMthNm}</span><br>
<c:choose>
<c:when test="${0 == refundList.dlvyAmt}">
<span class="fs-13 fw-400">무료</span>
</c:when>
<c:otherwise>
<span class="fs-13 fw-400"><fmt:formatNumber value="${refundList.dlvyAmt}" pattern="#,###"/></span>
</c:otherwise>
</c:choose>
</td>
<c:set var="rePreOrdrDlvyInnb" value="${refundList.ordrDlvyInnb}"/>
<c:set var="reDlvyCnt" value="${reDlvyCnt + 1}"/>
</c:if>
</c:when>
<c:otherwise>
<td class="center">
<span class="fs-13 fw-400">${refundList.dlvyMthNm}</span><br>
<c:choose>
<c:when test="${0 == refundList.dlvyAmt}">
<span class="fs-13 fw-400">무료</span>
</c:when>
<c:otherwise>
<span class="fs-13 fw-400"><fmt:formatNumber value="${refundList.dlvyAmt}" pattern="#,###"/></span>
</c:otherwise>
</c:choose>
</td>
</c:otherwise>
</c:choose>
<td>
<button type="button" class="btn sm gray2 sub-right-content__innerTitleBtn" onclick="fn_goods_qna_pop_regist('<c:out value="${ refundList.goodsInnb }"/>')">문의</button>
</td>
<%---
<td>
<span class="cartItem__shippingFee"><span
class=" comma">3,000</span><span
class="priceUnit">원</span>
</span>
</td>
--%>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr class="row-no-data">
<td colspan="100%" class="text-center">조회된 데이터가 없습니다.</td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
<tfoot class="refundSum">
</tfoot>
</table>
</div>
</div>
</div>
</div>
<div class="sub-right-content__section">
<h3 class="sub-right-content__innerTitle"><c:if test = "${not empty resultMap.result.refnd.returnProcsSttusCd}">반품/</c:if>환불 처리</h3>
<div class="table-wrapper orderDetail__table">
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<!-- 각 열 width 설정 -->
<colgroup>
<col style="width: 220px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th><c:if test = "${not empty resultMap.result.refnd.returnProcsSttusCd}">반품/</c:if>환불 상태</th>
<td>
<c:choose>
<c:when test="${ not empty resultMap.result.refnd.returnProcsSttusCd }">
<c:out value="${ resultMap.result.refnd.returnProcsSttusCdNm }"/>
</c:when>
<c:otherwise>
<c:out value="${ resultMap.result.refnd.refundProcsSttusCdNm }"/>
</c:otherwise>
</c:choose>
</td>
</tr>
<tr>
<th><c:if test = "${not empty resultMap.result.refnd.returnProcsSttusCd}">반품/</c:if>환불 번호</th>
<td><c:out value="${ resultMap.result.refnd.orderRefundInnb }"/></td>
</tr>
<tr>
<th>환불 종류</th>
<td><c:out value="${ resultMap.result.refnd.refundTyCdNm }"/></td>
</tr>
<c:if test = "${not empty resultMap.result.refnd.returnProcsSttusCd}">
<tr>
<th>반품 접수일</th>
<td><c:out value="${ resultMap.result.refnd.returnRceptDt }"/></td>
</tr>
</c:if>
<tr>
<th>환불 접수일</th>
<td><c:out value="${ resultMap.result.refnd.refundReqstDt }"/></td>
</tr>
<c:if test = "${not empty resultMap.result.refnd.returnComptDt}">
<tr>
<th>반품 완료일</th>
<td><c:out value="${ resultMap.result.refnd.returnComptDt }"/></td>
</tr>
</c:if>
<c:if test = "${not empty resultMap.result.refnd.refundComptDt}">
<tr>
<th>환불 완료일</th>
<td><c:out value="${ resultMap.result.refnd.refundComptDt }"/></td>
</tr>
</c:if>
</tbody>
</table>
</div>
</div>
<c:if test="${ not empty resultMap.result.refnd.returnRceptDt }">
<div class="sub-right-content__section">
<h3 class="sub-right-content__innerTitle">반품정보
<c:if test="${ resultMap.result.refnd.returnProcsSttusCd eq '01' }">
<button id="returnInfoTrigger" class="btn sm gray2 sub-right-content__innerTitleBtn" onclick="fn_update_dlvy_info();">변경</button>
</c:if>
</h3>
<form id="returnDlvyUpdtForm">
<input type="hidden" name="orderReInnb" value="<c:out value="${ resultMap.result.refnd.orderRefundInnb }"/>"/>
<div id="returnInfoContent01" class="table-wrapper orderDetail__table">
<c:choose>
<c:when test="${ resultMap.result.refnd.returnProcsSttusCd eq '01' }">
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<!-- 각 열 width 설정 -->
<colgroup>
<col style="width: 220px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th>
<span class="orderDetail__thText">회수방법</span>
</th>
<td>
<div class="select-box">
<select class="lg" title="해당 셀렉트에 대한 설명" name="returnMthCd">
<option value="" disabled selected>선택</option>
<c:forEach var="cdList" items="${ resultMap.returnMthCdList }" varStatus="status">
<c:choose>
<c:when test="${ resultMap.result.refnd.returnMthCd eq cdList.cd }">
<option value="<c:out value="${ cdList.cd }"/>" selected="selected"><c:out value="${ cdList.cdNm }"/></option>
</c:when>
<c:otherwise>
<option value="<c:out value="${ cdList.cd }"/>"><c:out value="${ cdList.cdNm }"/></option>
</c:otherwise>
</c:choose>
</c:forEach>
</select>
</div>
</td>
</tr>
<tr>
<th>
<span class="editAccount__title">주소</span>
</th>
<td>
<div class="inputAddress">
<div class="inputAddress__postalCode">
<input class="input-text" type="text" id="postcode" name="zip" title="우편번호" value="<c:out value="${ resultMap.result.refnd.senderZip }"/>" placeholder="우편번호" readonly>
<button type="button" onclick="fn_select_postcode(fn_set_postcode); return false;" class="btn md theme outline">
우편번호 찾기
</button>
</div>
<input type="hidden" id="adresDvCd" name="adresDvCd" value="<c:out value="${ resultMap.result.refnd.senderAdresDvCd }"/>"/>
<input class="input-text full" type="text" id="address" name="lnbOrRnmAdres"
<c:choose>
<c:when test="${ resultMap.result.refnd.senderAdresDvCd eq '01' }">
value="<c:out value="${ resultMap.result.refnd.senderRnmAdres }"/>"
</c:when>
<c:when test="${ resultMap.result.refnd.senderAdresDvCd eq '02' }">
value="<c:out value="${ resultMap.result.refnd.senderLnbAdres }"/>"
</c:when>
</c:choose>
readonly title="지번 주소" placeholder="지번 주소">
<input class="input-text full" type="text" id="detailAddress" name="dtlAdres" value="<c:out value="${ resultMap.result.refnd.senderAdresDtl }"/>" title="상세 주소" placeholder="상세 주소">
</div>
</td>
</tr>
<tr>
<th>
<span class="orderDetail__thText">휴대폰 번호</span>
</th>
<td>
<input class="input-text" type="text" title="해당 인풋에 대한 설명" value="<c:out value="${ resultMap.result.refnd.returnCstmrMbtlnb }"/>" name="returnCstmrMbtlnb" oninput="fn_fmt_telno($(this));" maxlength="13"
placeholder="">
</td>
</tr>
<tr>
<th>
<span class="orderDetail__thText">반품 사유</span>
</th>
<td>
<div class="select-box">
<select class="lg" title="해당 셀렉트에 대한 설명" name="returnResnCd">
<c:forEach var="returnResn" items="${resultMap.returnResnList}">
<c:choose>
<c:when test="${ returnResn.cd eq resultMap.result.refnd.returnResnCd }">
<option value="<c:out value="${returnResn.cd}"/>" selected="selected"><c:out value="${returnResn.cdNm}"/></option>
</c:when>
<c:otherwise>
<option value="<c:out value="${returnResn.cd}"/>"><c:out value="${returnResn.cdNm}"/></option>
</c:otherwise>
</c:choose>
</c:forEach>
</select>
</div>
</td>
</tr>
<tr>
<th>
<span class="orderDetail__thText">상세 사유</span>
</th>
<td>
<textarea class="textarea" rows="6" title="해당 텍스트 에어리어에 대한 설명" name="returnResnCn"
placeholder="최소 10자 이상으로 입력해 주세요."><c:out value="${ resultMap.result.refnd.returnResnCn }"/></textarea>
</td>
</tr>
</tbody>
</table>
</c:when>
<c:otherwise>
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<!-- 각 열 width 설정 -->
<colgroup>
<col style="width: 220px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th>
<span class="orderDetail__thText">회수방법</span>
</th>
<td>
<c:out value="${ resultMap.result.refnd.returnMthCdNm }"/>
</td>
</tr>
<tr>
<th>
<span class="orderDetail__thText">주소</span>
</th>
<td>
<c:if test="${ not empty resultMap.result.refnd.senderZip }">
(<c:out value="${ resultMap.result.refnd.senderZip }"/>)
</c:if>
<c:choose>
<c:when test="${ resultMap.result.refnd.senderAdresDvCd eq '01'}">
<c:out value="${ resultMap.result.refnd.senderRnmAdres }"/>
</c:when>
<c:when test="${ resultMap.result.refnd.senderAdresDvCd eq '02'}">
<c:out value="${ resultMap.result.refnd.senderLnbAdres }"/>
</c:when>
</c:choose>
<c:out value="${ resultMap.result.refnd.senderAdresDtl }"/>
</td>
</tr>
<tr>
<th>
<span class="orderDetail__thText">휴대폰 번호</span>
</th>
<td>
<c:out value="${ resultMap.result.refnd.returnCstmrMbtlnb }"/>
</td>
</tr>
<tr>
<th>
<span class="orderDetail__thText">반품 사유</span>
</th>
<td>
<c:out value="${ resultMap.result.refnd.returnResnCdNm }"/>
</td>
</tr>
<tr>
<th>
<span class="orderDetail__thText">상세 사유</span>
</th>
<td>
<c:out value="${ resultMap.result.refnd.returnResnCn }"/>
</td>
</tr>
<tr>
<th>
<span class="orderDetail__thText">배송비 입금</span>
</th>
<td>
<%--우리은행 1005-102-768159<br>(예금주: ㈜에스엘바이오텍)--%>
<c:if test="${ not empty resultMap.result.refnd.returnDlvyRcpmnyAcntnb }">
<c:out value="${ resultMap.result.refnd.returnDlvyRcpmnyAcntnb }"/><br>(예금주: <c:out value="${ resultMap.result.refnd.returnDlvyRcpmnyNm }"/>)
</c:if>
</td>
</tr>
</tbody>
</table>
</c:otherwise>
</c:choose>
</div>
</form>
</div>
</c:if>
<div class="sub-right-content__section">
<h3 class="sub-right-content__innerTitle">환불정보
<c:if test="${ resultMap.result.refnd.refundProcsSttusCd ne '03' }">
<button id="refundInfoTrigger" class="btn sm gray2 sub-right-content__innerTitleBtn" onclick="fn_update_acnt_info();">변경</button>
</c:if>
</h3>
<form id="refundAcntUpdtForm">
<input type="hidden" name="orderReInnb" value="<c:out value="${ resultMap.result.refnd.orderRefundInnb }"/>"/>
<div id="refundInfoContent01" class="table-wrapper orderDetail__table">
<c:choose>
<c:when test="${ resultMap.result.refnd.refundProcsSttusCd eq '03' }">
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<!-- 각 열 width 설정 -->
<colgroup>
<col style="width: 220px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th>
<span class="orderDetail__thText">환불은행</span>
</th>
<td>
<c:out value="${ resultMap.result.refnd.refundAcntBnnkNm }"/>
</td>
</tr>
<tr>
<th>
<span class="orderDetail__thText">예금주</span>
</th>
<td>
<c:out value="${ resultMap.result.refnd.refundAcntDpstrNm }"/>
</td>
</tr>
<tr>
<th>
<span class="orderDetail__thText">계좌번호</span>
</th>
<td>
<c:out value="${ resultMap.result.refnd.refundAcntnb }"/>
</td>
</tr>
<tr>
<th>
<span class="orderDetail__thText">취소 사유</span>
</th>
<td>
<c:out value="${ resultMap.result.refnd.returnResnCdNm }"/>
</td>
</tr>
<tr>
<th>
<span class="orderDetail__thText">상세 사유</span>
</th>
<td>
<c:out value="${ resultMap.result.refnd.returnResnCn }"/>
</td>
</tr>
</tbody>
</table>
</c:when>
<c:otherwise>
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<!-- 각 열 width 설정 -->
<colgroup>
<col style="width: 220px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th>
<span class="orderDetail__thText">환불은행</span>
</th>
<td>
<%--
<input class="input-text" type="text" title="환불은행" value="<c:out value="${ resultMap.result.refnd.refundAcntBnnkNm }"/>" name="refundAcntBnnkNm"
placeholder="환불은행">
--%>
<div class="select-box">
<select class="sm" title="해당 셀렉트에 대한 설명" name="refundAcntBnnkNm" id="refundAcntBnnkNm">
<c:forEach var="cdList" items="${ resultMap.bankCdList }" varStatus="status">
<c:choose>
<c:when test="${ cdList.cd eq resultMap.result.refnd.refundAcntBnnkCd }">
<option value="<c:out value="${ cdList.cd }"/>,<c:out value="${ cdList.cdNm }"/>" selected="selected" ><c:out value="${ cdList.cdNm }"/></option>
</c:when>
<c:otherwise>
<option value="<c:out value="${ cdList.cd }"/>,<c:out value="${ cdList.cdNm }"/>" ><c:out value="${ cdList.cdNm }"/></option>
</c:otherwise>
</c:choose>
</c:forEach>
</select>
</div>
</td>
</tr>
<tr>
<th>
<span class="orderDetail__thText">예금주</span>
</th>
<td>
<input class="input-text" type="text" title="예금주명" value="<c:out value="${ resultMap.result.refnd.refundAcntDpstrNm }"/>" name="refundAcntDpstrNm"
placeholder="예금주명">
</td>
</tr>
<tr>
<th>
<span class="orderDetail__thText">계좌번호</span>
</th>
<td><!-- TODO : 암호화 되어있어서 풀어줘야함 -->
<input class="input-text" type="text" title="계좌번호" value="<c:out value="${ resultMap.result.refnd.refundAcntnb }"/>" name="refundAcntnb"
placeholder="계좌번호 TODO : 암호화되어있는데 '-' 포함 or 숫자만 확인 필요">
</td>
</tr>
<tr>
<th>
<span class="orderDetail__thText">환불사유내용</span>
</th>
<td>
<c:out value="${ resultMap.result.refnd.refundResnCn }"/>
</td>
</tr>
<%--
<tr>
<th>
<span class="orderDetail__thText">취소 사유</span>
</th>
<td>
<div class="select-box">
<select class="lg" title="해당 셀렉트에 대한 설명">
<option value="" disabled selected>선택</option>
<option value="">고객 단순 변심</option>
</select>
</div>
</td>
</tr>
<tr>
<th>
<span class="orderDetail__thText">상세 사유</span>
</th>
<td>
<textarea class="textarea" rows="6" title="해당 텍스트 에어리어에 대한 설명" name="refundResnCn"
placeholder="최소 10자 이상으로 입력해 주세요."><c:out value="${ resultMap.result.refnd.refundResnCn }"/></textarea>
</td>
</tr>
--%>
</tbody>
</table>
</c:otherwise>
</c:choose>
</div>
</form>
</div>
<div class="sub-right-content__section">
<h3 class="sub-right-content__innerTitle">환불 금액
</h3>
<div class="priceSum">
<c:set var="reTotAmt" value="${ resultMap.result.totRefundDscntAmt }"/>
<div class="priceSum__inner">
<div class="priceSum__item">
<span class="priceSum__itemTitle"><c:out value="${ reTotAmt.setleTyCdNm }"/></span>
<span class="priceSum__itemPrice">
<span class="comma priceSum__itemNum"><c:out value="${ reTotAmt.refundAmtQySum }"/></span>
<span class="priceUnit">원</span>
</span>
</div>
<div class="priceSum__equals">
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28"
viewBox="0 0 28 28" fill="none">
<path d="M3.5 17.5H24.5V19.8333H3.5V17.5Z" fill="black" />
<path d="M3.5 8.16699H24.5V10.5003H3.5V8.16699Z" fill="black" />
</svg>
</div>
<div class="priceSum__total">
<span class="priceSum__totalTitle">환불 금액</span>
<div class="priceSum__totalPrice">
<span class="comma"><c:out value="${ reTotAmt.rlRefundAmt }"/></span>
<span class="priceUnit">원</span>
</div>
<div class="priceSum__totalDetail">
(상품금액 <span class="comma"><c:out value="${ reTotAmt.refundAmtQySum }"/></span>원 + 배송비 <span class="comma"><c:out value="${ reTotAmt.totReturnDlvyAmt }"/></span>원)
</div>
</div>
</div>
</div>
</div>
<!--
<div class="sub-bottom-btn-container">
<button type="button" class="btn xl outline theme" onclick="fn_order_refund_list();">반품 / 환불 목록</button>
</div>
-->
</div>
</div>
</div>
</div>
</main>
<form id="listForm">
<input type="hidden" id="orderRefundInnb" name ="orderRefundInnb"/>
<input type="hidden" id="pageIndex" name="pageIndex" value="${ paramVO.pageIndex }"/>
<input type="hidden" id="recordCountPerPage" name="recordCountPerPage" value="${ paramVO.recordCountPerPage }"/>
<input type="hidden" id="pageUnit" name="pageUnit" value="${ paramVO.pageUnit }"/>
</form>
<%-- 공통 Footer --%>
<jsp:include page="/WEB-INF/views/comm/Footer.jsp"/>
<!-- 모달 -->
<div id="modalDiv">
</div>
</body>
</html>

View File

@@ -0,0 +1,91 @@
<%@ 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"%>
<c:choose>
<c:when test="${not empty data.resultList}">
<c:forEach var="order" items="${data.resultList}" begin="0" end="4">
<div class="orderList__item">
<div class="orderList__item__inner">
<a href="<c:url value="/sopmal/goods/selectGoodsDtl?sopmalCd=${order.sopmalCd}&goodsInnb=${order.goodsInnb}"/>" class="orderList__image">
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.cdnurl')" var="cdnurl"/>
<img src="<c:out value="${ cdnurl }${order.goodsImageUrl}"/>" onerror="this.src='/pc/images/image_placeholder.png'" alt="<c:out value="${order.goodsNm}"/>">
</a>
<div class="orderList__description">
<div class="orderList__description__first">
<div class="orderList__item__top">
<a href="javascript:void(0);" onclick="fn_go_ordr_dtl('<c:out value="${order.sopmalCd}"/>', '<c:out value="${order.ordrInnb}"/>');" class="orderList__orderNum"><c:out value="${order.ordrInnb}"/></a>
<span class="orderList__dot">·</span>
<span class="orderList__date"><c:out value="${order.ordrDt}"/> 주문</span>
</div>
<a href="javascript:void(0);" onclick="fn_go_ordr_dtl('<c:out value="${order.sopmalCd}"/>', '<c:out value="${order.ordrInnb}"/>');" class="orderList__productTitle"><c:out value="${order.goodsNm}"/></a>
<%--<span class="orderList__option"><c:out value="${order.optnNm}"/></span>--%>
<span class="cartItem__productOption"><span class="option-badge">옵션</span> <c:out value="${order.optnNm}"/></span>
<c:if test="${not empty order.inputOptnText}">
<span class="orderList__option"><c:out value="${order.inputOptnText}"/></span>
</c:if>
</div>
<div class="orderList__description__second">
<span class="orderList__price"><span class="comma"><fmt:formatNumber value="${order.setleAmt}" pattern="#,###"/></span>원</span>
</div>
<div class="orderList__description__third">
<span class="orderList__mileage"><span class="comma">예상적립 <fmt:formatNumber value="${order.mlgAmt}" pattern="#,###"/></span>원</span>
</div>
<div class="orderList__description__fourth">
<c:choose>
<c:when test="${order.ordrSttusCd > 14 && order.ordrSttusCd < 36}">
<span class="orderList__status"><c:out value="${order.ordrSttusNm}"/></span>
</c:when>
<c:when test="${order.ordrSttusCd > 39 && order.ordrSttusCd < 71}">
<span class="orderList__status delivery"><c:out value="${order.ordrSttusNm}"/></span>
</c:when>
<c:when test="${order.ordrSttusCd == 75}">
<span class="orderList__status complete"><c:out value="${order.ordrSttusNm}"/></span>
</c:when>
<c:when test="${order.ordrSttusCd > 84 && order.ordrSttusCd < 100}">
<span class="orderList__status cancel"><c:out value="${order.ordrSttusNm}"/></span>
</c:when>
</c:choose>
</div>
<%--
<div class="orderList__btnControls">
<c:choose>
<c:when test="${order.ordrSttusCd == 15}">
<a href="javascript:void(0);" onclick="fn_post_cancl_ordr('<c:out value="${order.sopmalCd}"/>', '<c:out value="${order.ordrInnb}"/>');" class="btn-ordr-sttus btn gray sm full">주문무효</a>
<a href="javascript:void(0);" onclick="fn_dlvylc_manage_pop('<c:out value="${order.sopmalCd}"/>', '<c:out value="${order.ordrInnb}"/>', '<c:out value="${order.ordrDlvyInnb}"/>', '<c:out value="${order.mbrInnb}"/>', '<c:out value="${order.mbrDvCd}"/>');" class="btn-ordr-sttus btn outline sm full">배송지 변경</a>
</c:when>
<c:when test="${order.ordrSttusCd > 24 && order.ordrSttusCd < 36}">
<a href="javascript:void(0);" onclick="fn_call_setle_cancl_pop('<c:out value="${order.sopmalCd}"/>', '<c:out value="${order.ordrInnb}"/>', '');" class="btn-ordr-sttus btn gray sm full">결제취소</a>
<a href="javascript:void(0);" onclick="fn_dlvylc_manage_pop('<c:out value="${order.sopmalCd}"/>', '<c:out value="${order.ordrInnb}"/>', '<c:out value="${order.ordrDlvyInnb}"/>', '<c:out value="${order.mbrInnb}"/>', '<c:out value="${order.mbrDvCd}"/>');" class="btn-ordr-sttus btn outline sm full">배송지 변경</a>
</c:when>
<c:when test="${order.ordrSttusCd > 39 && order.ordrSttusCd < 66}">
<a href="javascript:void(0);" onclick="fn_call_dlvy_sweettracker_pop('<c:out value="${order.ordrInnb}"/>');" class="btn outline sm full">배송조회</a>
<a href="javascript:void(0);" onclick="fn_call_refund_pop('<c:out value="${order.ordrInnb}"/>');" class="btn-ordr-sttus btn gray sm full">반품신청</a>
</c:when>
<c:when test="${order.ordrSttusCd > 69 && order.ordrSttusCd < 76}">
<a href="javascript:void(0);" onclick="fn_call_dlvy_sweettracker_pop('<c:out value="${order.ordrInnb}"/>');" class="btn outline sm full">배송조회</a>
<a href="javascript:void(0);" onclick="fn_call_refund_pop('<c:out value="${order.ordrInnb}"/>');" class="btn-ordr-sttus btn gray sm full">반품신청</a>
<a href="<c:url value="/sopmal/mpage/act/selectMyRvwInqireForm"/>" class="btn-ordr-sttus btn outline sm full">리뷰작성</a>
<a href="javascript:void(0);" onclick="fn_post_purchs_dcsn_by_ordr('<c:out value="${order.sopmalCd}"/>', '<c:out value="${order.ordrInnb}"/>');" class="btn-ordr-sttus btn theme sm full">구매확정111</a>
</c:when>
</c:choose>
</div>
--%>
</div>
</div>
<a class="sub-right-content__more" href="/sopmal/mpage/ordr/selectMbrOrdrListInqire">전체보기</a>
</div>
</c:forEach>
</c:when>
<c:otherwise>
<div class="orderList__no-result">
<img src="<c:url value="/pc/images/icon__no-result.png"/>" alt="">
<p class="orderList__no-result-text">주문내역이 없습니다.</p>
</div>
</c:otherwise>
</c:choose>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,120 @@
<%@ 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"%>
<c:choose>
<c:when test="${not empty data.resultList}">
<c:forEach var="order" items="${data.resultList}">
<div class="orderList__item">
<div class="orderList__item__inner">
<a href="<c:url value="/sopmal/goods/selectGoodsDtl?sopmalCd=${order.sopmalCd}&goodsInnb=${order.goodsInnb}"/>" class="orderList__image">
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.cdnurl')" var="cdnurl"/>
<img src="<c:out value="${ cdnurl }${order.goodsImageUrl}"/>" onerror="this.src='/pc/images/image_placeholder.png'" alt="<c:out value="${order.goodsNm}"/>">
</a>
<div class="orderList__description">
<div class="orderList__description__first">
<div class="orderList__item__top">
<a href="javascript:void(0);" onclick="fn_go_ordr_dtl('<c:out value="${order.sopmalCd}"/>', '<c:out value="${order.ordrInnb}"/>');" class="orderList__orderNum"><c:out value="${order.ordrInnb}"/></a>
<span class="orderList__dot">·</span>
<span class="orderList__date"><c:out value="${order.ordrDt}"/> <span class="orderList__dot">·</span> ${order.ordrTyCdNm}</span>
</div>
<a href="javascript:void(0);" onclick="fn_go_ordr_dtl('<c:out value="${order.sopmalCd}"/>', '<c:out value="${order.ordrInnb}"/>');" class="orderList__productTitle"><c:out value="${order.goodsNm}"/></a>
<%--<span class="orderList__option"><c:out value="${order.optnNm}"/></span>--%>
<span class="cartItem__productOption"><span class="option-badge">옵션</span> <c:out value="${order.optnNm}"/></span>
<c:if test="${not empty order.inputOptnText}">
<span class="orderList__option"><c:out value="${order.inputOptnText}"/></span>
</c:if>
</div>
<div class="orderList__description__second">
<span class="orderList__price"><span class="comma"><fmt:formatNumber value="${order.setleAmt}" pattern="#,###"/></span>원</span>
</div>
<div class="orderList__description__third">
<c:if test = "${!(order.ordrSttusCd > 84 && order.ordrSttusCd < 100)}">
<span class="orderList__mileage"><span class="comma">예상적립 <fmt:formatNumber value="${order.mlgAmt}" pattern="#,###"/></span>원</span>
</c:if>
</div>
<div class="orderList__description__fourth">
<c:choose>
<c:when test="${order.ordrSttusCd > 14 && order.ordrSttusCd < 36}">
<span class="orderList__status"><c:out value="${order.ordrSttusNm}"/></span>
</c:when>
<c:when test="${order.ordrSttusCd > 39 && order.ordrSttusCd < 71}">
<span class="orderList__status delivery"><c:out value="${order.ordrSttusNm}"/></span>
</c:when>
<c:when test="${order.ordrSttusCd == 75}">
<span class="orderList__status complete"><c:out value="${order.ordrSttusNm}"/></span>
</c:when>
</c:choose>
<c:if test="${ order.ordrTyCd == '04'}">
<br/>
<c:choose>
<c:when test="${order.giftSttusCd == '01' }">
<span class="orderList__status">(<c:out value="${order.giftSttusCdNm}"/>)</span>
</c:when>
<c:when test="${order.giftSttusCd == '02' }">
<span class="orderList__status delivery">(<c:out value="${order.giftSttusCdNm}"/>)</span>
</c:when>
<c:when test="${order.giftSttusCd == '03' }">
<span class="orderList__status cancel">(<c:out value="${order.giftSttusCdNm}"/>)</span>
</c:when>
<c:when test="${order.giftSttusCd == '04' }">
<span class="orderList__status cancel">(<c:out value="${order.giftSttusCdNm}"/>)</span>
</c:when>
</c:choose>
</c:if>
</div>
<div class="orderList__btnControls">
<c:choose>
<c:when test="${order.ordrSttusCd == 15}">
<a href="javascript:void(0);" onclick="fn_post_cancl_ordr('<c:out value="${order.sopmalCd}"/>', '<c:out value="${order.ordrInnb}"/>', '<c:out value="${order.ordrSttusCd}"/>');" class="btn-ordr-sttus btn gray sm full">주문취소</a>
<c:if test="${ order.ordrTyCd != '05' }">
<a href="javascript:void(0);" onclick="fn_dlvylc_manage_pop('<c:out value="${order.sopmalCd}"/>', '<c:out value="${order.ordrInnb}"/>', '<c:out value="${order.ordrDlvyInnb}"/>', '<c:out value="${order.mbrInnb}"/>', '<c:out value="${order.mbrDvCd}"/>');" class="btn-ordr-sttus btn outline sm full">배송지 변경</a>
</c:if>
</c:when>
<c:when test="${order.ordrSttusCd > 24 && order.ordrSttusCd < 34}">
<a href="javascript:void(0);" onclick="fn_call_setle_cancl_pop('<c:out value="${order.sopmalCd}"/>', '<c:out value="${order.ordrInnb}"/>', '', '<c:out value="${order.ordrRceptDt}"/>', '<c:out value="${order.ordrSttusCd}"/>');" class="btn-ordr-sttus btn gray sm full">결제취소</a>
<c:if test="${ order.ordrTyCd != '05' }">
<a href="javascript:void(0);" onclick="fn_dlvylc_manage_pop('<c:out value="${order.sopmalCd}"/>', '<c:out value="${order.ordrInnb}"/>', '<c:out value="${order.ordrDlvyInnb}"/>', '<c:out value="${order.mbrInnb}"/>', '<c:out value="${order.mbrDvCd}"/>');" class="btn-ordr-sttus btn outline sm full">배송지 변경</a>
</c:if>
</c:when>
<c:when test="${order.ordrSttusCd > 34 && order.ordrSttusCd < 55}">
<a href="javascript:void(0);" onclick="fn_call_dlvy_sweettracker_pop('<c:out value="${order.ordrInnb}"/>');" class="btn outline sm full">배송조회</a>
<a href="javascript:void(0);" onclick="fn_call_setle_cancl_pop('<c:out value="${order.sopmalCd}"/>', '<c:out value="${order.ordrInnb}"/>', '', '<c:out value="${order.ordrRceptDt}"/>', '<c:out value="${order.ordrSttusCd}"/>');" class="btn-ordr-sttus btn gray sm full">결제취소</a>
</c:when>
<c:when test="${order.ordrSttusCd > 54 && order.ordrSttusCd < 76 && order.sknEnvrnCd ne 'POS'}">
<a href="javascript:void(0);" onclick="fn_call_dlvy_sweettracker_pop('<c:out value="${order.ordrInnb}"/>');" class="btn outline sm full">배송조회</a>
<c:if test="${ order.purchsDcsnAt eq 'Y' }">
<a href="javascript:void(0);" onclick="fn_call_refund_pop('<c:out value="${order.sopmalCd}"/>', '<c:out value="${order.ordrInnb}"/>','<c:out value="${order.ordrRceptDt}"/>', '<c:out value="${order.setleTyCd}"/>', '<c:out value="${order.ordrSttusCd}"/>');" class="btn-ordr-sttus btn gray sm full">반품신청</a>
</c:if>
<c:if test="${ order.reviewAt eq 'Y' }">
<a href="<c:url value="/sopmal/mpage/act/selectMyRvwInqireForm"/>" class="btn-ordr-sttus btn theme sm full">리뷰작성</a>
</c:if>
<c:if test="${ order.purchsDcsnAt eq 'Y' }">
<a href="javascript:void(0);" onclick="fn_post_purchs_dcsn_by_ordr('<c:out value="${order.sopmalCd}"/>', '<c:out value="${order.ordrInnb}"/>');" class="btn-ordr-sttus btn theme sm full">구매확정</a>
</c:if>
</c:when>
<c:when test="${order.ordrSttusCd > 84 && order.ordrSttusCd < 100}">
<a class="btn full orderList__status cancel" style="background-color:transparent;"><c:out value="${order.ordrSttusNm}"/></a>
</c:when>
</c:choose>
</div>
</div>
</div>
</div>
</c:forEach>
</c:when>
<c:otherwise>
<div class="orderList__no-result">
<img src="<c:url value="/pc/images/icon__no-result.png"/>" alt="">
<p class="orderList__no-result-text">주문내역이 없습니다.</p>
</div>
</c:otherwise>
</c:choose>
<div class="pagination__container" style="margin-top: 20px">
<ui:pagination paginationInfo="${data.paginationInfo}" type="image" jsFunction="fn_get_ordr_dlvy_list"/>
</div>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,269 @@
<%@ 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"%>
<!-- 결제취소/환불정보 -->
<div id="refund-pop" class="modal default" style="max-width: 900px;">
<div class="modal-header">
<div class="modal-header__title">결제취소/환불정보</div>
</div>
<c:set var="order" value="${data.order}"/>
<div class="modal-content">
<div class="orderRefundPop">
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.cdnurl')" var="cdnurl"/>
<p class="orderRefundPop__orderNum">주문번호 <c:out value="${order.ordrInnb}"/></p>
<input type="hidden" id="sopmalCd" value="${order.sopmalCd}"/>
<input type="hidden" id="ordrInnb" value="${order.ordrInnb}"/>
<input type="hidden" id="ordrTyCd" value="${order.ordrTyCd}"/>
<input type="hidden" id="ordrSttusCd" value="${order.ordrSttusCd}"/>
<input type="hidden" id="isBank" value="${not empty order.bnnkNm ? 'Y' : 'N'}"/>
<input type="hidden" id="setleTyCd" value="${order.setleTyCd}"/> <!-- 결제유형 -->
<c:choose>
<c:when test="${'04' == order.ordrTyCd || '05' == order.ordrTyCd}">
<c:choose>
<c:when test="${not empty data.shippingList}">
<c:forEach var="shipping" items="${data.shippingList}" varStatus="status">
<div class="multiDeliveryStatus">
<p class="multiDeliveryStatus__title"><span class="multiDeliveryStatus__numTitle"><c:out value="${status.count > 1 ? status.count += '. ': ''}"/>배송지</span>
<c:out value="${shipping.recpntNm}"/> <c:out value="${not empty shipping.dlvylcZip ? '(' += shipping.dlvylcZip += ')' : ''}"/>
<c:out value="${shipping.adres}"/>
<c:out value="${shipping.dlvylcAdresDtl}"/>
<%--<em>2곳</em>--%>
</p>
</div>
<div class="cartOrder__list">
<h4 class="modalSectionTitle">주문상품 중 결제취소 가능 상품<span class="modalSectionTitle__sub">- 결제취소 시 상품과 수량을 선택하세요!(*결제확인 상태에서는 전체 취소만 가능합니다.)</span></h4>
<div class="table-wrapper">
<table class="table vertical orderRefundPop__table">
<caption>결제취소/환불정보</caption>
<colgroup>
<col style="width: auto;">
<col style="width: 80px">
<col style="width: 80px">
<col style="width: 120px">
<col style="width: 80px">
</colgroup>
<thead>
<tr>
<th>상품명</th>
<th>주문수량</th>
<th>취소가능수량</th>
<th>취소수량</th>
<th>처리상태</th>
</tr>
</thead>
<tbody>
<c:choose>
<c:when test="${not empty shipping.goodsList}">
<c:forEach var="goods" items="${shipping.goodsList}" varStatus="status">
<tr class="cancl-goods">
<td>
<div class="cartItem">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox">
<input type="checkbox" name="goodsCheck" value="" checked onclick="return false;">
<span class="check"></span>
<span class="control-label"></span>
</label>
</div>
<div class="cartItem__image">
<img src="<c:out value="${ cdnurl }${goods.goodsImgCours}"/>" onerror="this.src='/pc/images/image_placeholder.png'" alt="<c:out value="${goods.goodsNm}"/>">
</div>
<div class="cartItem__productInfo">
<a href="javascript:void(0);" class="cartItem__productTitle"><c:out value="${goods.goodsNm}"/></a>
<span class="cartItem__productOption"> <span class="option-badge">옵션</span><c:out value="${goods.optnNm}"/></span>
</div>
</div>
</td>
<td><c:out value="${goods.ordrQy}"/></td>
<td><c:out value="${goods.ordrQy - goods.setleCanclQy}"/></td>
<td>
<input type="hidden" class="sopmalCd" value="${goods.sopmalCd}"/>
<input type="hidden" class="ordrInnb" value="${goods.ordrInnb}"/>
<input type="hidden" class="ordrDlvyInnb" value="${shipping.ordrDlvyInnb}"/>
<input type="hidden" class="ordrGoodsInnb" value="${goods.ordrGoodsInnb}"/>
<input type="hidden" class="ordrGoodsOptnInnb" value="${goods.ordrGoodsOptnInnb}"/>
<input type="hidden" class="setleCanclQy" value="${goods.setleCanclQy}"/>
<input type="hidden" class="ordrQy" value="${goods.ordrQy}"/>
<input type="hidden" class="subscrptWthdrawPosblAt" value="${goods.subscrptWthdrawPosblAt}"/>
<input type="hidden" class="indvdlzCanclPosblAt" value="${goods.indvdlzCanclPosblAt}"/>
<input type="hidden" class="indvdlzReturnExchngPosblAt" value="${goods.indvdlzReturnExchngPosblAt}"/>
<div class="select-box">
<select class="canclQy" title="취소 수량" disabled>
<c:forEach var="item" begin="1" end="${goods.ordrQy - goods.setleCanclQy}" step="1" varStatus="status">
<option value="<c:out value="${status.count}"/>" <c:if test="${status.last}">selected</c:if>><c:out value="${status.count}"/></option>
</c:forEach>
</select>
</div>
</td>
<td>
<span class="orderList__status"><c:out value="${goods.ordrSttusNm}"/></span>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr><td colspan="100%" ><spring:message code="common.nodata"/></td></tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</div>
</c:forEach>
</c:when>
<c:otherwise>
</c:otherwise>
</c:choose>
</c:when>
<c:otherwise>
<div class="cartOrder__list">
<h4 class="modalSectionTitle">주문상품 중 결제취소 가능 상품<span class="modalSectionTitle__sub">- 결제취소 시 상품과 수량을 선택하세요!(*결제확인 상태에서는 전체 취소만 가능합니다.)</span></h4>
<div class="table-wrapper">
<table class="table vertical orderRefundPop__table">
<caption>결제취소/환불정보</caption>
<colgroup>
<col style="width: auto;">
<col style="width: 80px">
<col style="width: 80px">
<col style="width: 120px">
<col style="width: 80px">
</colgroup>
<thead>
<tr>
<th>상품명</th>
<th>주문수량</th>
<th>취소가능수량</th>
<th>취소수량</th>
<th>처리상태</th>
</tr>
</thead>
<tbody>
<c:choose>
<c:when test="${not empty data.goodsList}">
<c:forEach var="goods" items="${data.goodsList}">
<tr class="cancl-goods">
<td>
<div class="cartItem">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox">
<input type="checkbox" name="goodsCheck" value="" checked onclick="return false;">
<span class="check"></span>
<span class="control-label"></span>
</label>
</div>
<div class="cartItem__image">
<img src="<c:out value="${ cdnurl }${goods.goodsImgCours}"/>" onerror="this.src='/pc/images/image_placeholder.png'" alt="<c:out value="${goods.goodsNm}"/>">
</div>
<div class="cartItem__productInfo">
<a href="javascript:void(0);" class="cartItem__productTitle"><c:out value="${goods.goodsNm}"/></a>
<span class="cartItem__productOption"> <span class="option-badge">옵션</span><c:out value="${goods.optnNm}"/></span>
</div>
</div>
</td>
<td><c:out value="${goods.ordrQy}"/></td>
<td><c:out value="${goods.ordrQy - goods.setleCanclQy}"/></td>
<td>
<input type="hidden" class="sopmalCd" value="${goods.sopmalCd}"/>
<input type="hidden" class="ordrInnb" value="${goods.ordrInnb}"/>
<input type="hidden" class="ordrDlvyInnb" value="${goods.ordrDlvyInnb}"/>
<input type="hidden" class="ordrGoodsInnb" value="${goods.ordrGoodsInnb}"/>
<input type="hidden" class="ordrGoodsOptnInnb" value="${goods.ordrGoodsOptnInnb}"/>
<input type="hidden" class="ordrQy" value="${goods.ordrQy}"/>
<input type="hidden" class="subscrptWthdrawPosblAt" value="${goods.subscrptWthdrawPosblAt}"/>
<input type="hidden" class="indvdlzCanclPosblAt" value="${goods.indvdlzCanclPosblAt}"/>
<input type="hidden" class="indvdlzReturnExchngPosblAt" value="${goods.indvdlzReturnExchngPosblAt}"/>
<input type="hidden" class="indvdlzReturnExchngPosblAt" value="${goods.indvdlzReturnExchngPosblAt}"/>
<div class="select-box">
<select class="canclQy" title="취소 수량" disabled>
<c:forEach var="item" begin="1" end="${goods.ordrQy - goods.setleCanclQy}" step="1" varStatus="status">
<option value="<c:out value="${status.count}"/>" <c:if test="${status.last}">selected</c:if>><c:out value="${status.count}"/></option>
</c:forEach>
</select>
</div>
</td>
<td>
<span class="orderList__status"><c:out value="${goods.ordrSttusNm}"/></span>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr><td colspan="100%" ><spring:message code="common.nodata"/></td></tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</div>
</c:otherwise>
</c:choose>
<p class="orderRefundReason__title">취소 사유를 선택해 주세요.</p>
<div class="orderRefundReason">
<div class="orderRefundReason__item">
<div class="orderRefundReason__itemTitle">취소사유</div>
<div class="select-box">
<select name="returnResnCd" id="returnResnCd" class="lg" title="취소사유">
<option value="" selected>취소사유를 선택해 주세요.</option>
<c:forEach var="returnResn" items="${data.returnResnList}">
<option value="<c:out value="${returnResn.cd}"/>"><c:out value="${returnResn.cdNm}"/></option>
</c:forEach>
</select>
</div>
</div>
<div class="orderRefundReason__item">
<div class="orderRefundReason__itemTitle">상세사유</div>
<textarea name="returnResnCn" id="returnResnCn" class="textarea" rows="6" title="상세사유" placeholder="최소 10자 이상으로 입력해 주세요."></textarea>
</div>
</div>
<c:if test="${not empty order.setleTyCd && ( order.setleTyCd eq '02' || order.setleTyCd eq '04' || order.setleTyCd eq '05' || order.setleTyCd eq '06' )}">
<p class="orderRefundReason__title">환불방법을 입력해 주세요</p>
<div class="orderRefundReason">
<div class="orderRefundReason__item">
<div class="orderRefundReason__itemTitle">은행</div>
<div class="select-box">
<select class="sm" title="해당 셀렉트에 대한 설명" name="refundAcntBnnkNm" id="refundAcntBnnkNm">
<c:forEach var="cdList" items="${ data.bankCdList }" varStatus="status">
<option value="<c:out value="${ cdList.cd }"/>,<c:out value="${ cdList.cdNm }"/>" ><c:out value="${ cdList.cdNm }"/></option>
</c:forEach>
</select>
</div>
<%--<input type="text" name="refundAcntBnnkNm" id="refundAcntBnnkNm" class="input-text lg" title="은행" placeholder="환불 은행을 입력해 주세요." maxlength="20">--%>
<div class="orderRefundReason__itemTitle">예금주</div>
<input type="text" name="refundAcntDpstrNm" id="refundAcntDpstrNm" class="input-text lg" title="예금주" placeholder="예금주 이름을 입력해 주세요." maxlength="20">
<div class="orderRefundReason__itemTitle">계좌번호</div>
<input type="text" name="refundAcntnb" id="refundAcntnb" class="input-text lg" value="" title="계좌번호" placeholder="계좌번호를 입력해 주세요." maxlength="50">
</div>
</div>
</c:if>
<div class="infoBox">
<h6 class="infoBox__title">최초 배송비</h6>
<p class="infoBox__paragraph">부분 결제 취소 시 추가 배송비가 발생할 수 있으며, 이 때 추가 배송비를 결제해 주셔야만 결제취소 처리완료가 가능합니다.
</p>
<h6 class="infoBox__title">[추가 배송비가 발생하는 경우]</h6>
<ol class="infoBox__list">
<li>① ‘묶음배송비’ 상품의 배송비 무료(금액별 차등) 조건을 충족하여 배송비 무료</li>
<li>② 부분 결제취소로 배송비 무료 조건을 불충족하는 경우 추가 배송비 부과</li>
<li>③ 추가 배송비는 카드 또는 마일리지로 결제 가능</li>
</ol>
<h6 class="infoBox__title">유의사항</h6>
<ol class="infoBox__list">
<li>① 결제확인 상태에서는 전체 취소만 가능합니다.</li>
</ol>
</div>
</div>
</div>
<div class="modal-footer">
<a href="javascript:void(0);" rel="modal:close" class="btn large outline">닫기</a>
<a href="javascript:void(0);" id="btnSetleCancl" class="btn large gray2">결제취소</a>
</div>
</div>

View File

@@ -0,0 +1,534 @@
<%@ 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"%>
<script>
$(document).ready(function() {
$('select').niceSelect();
fn_ctrl_refund_resn_cd();
fn_ctrl_retrun_mth();
fn_ctrl_return_dlvy_mth();
$('#returnResnCd').on('change', function() {
fn_ctrl_refund_resn_cd();
});
});
</script>
<!-- 반품/환불 -->
<div id="return-pop" class="modal default" style="max-width: 900px;">
<div class="modal-header">
<div class="modal-header__title">반품/환불정보</div>
</div>
<c:set var="order" value="${data.order}"/>
<div class="modal-content">
<div class="orderRefundPop">
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.cdnurl')" var="cdnurl"/>
<p class="orderRefundPop__orderNum">주문번호 <c:out value="${order.ordrInnb}"/></p>
<input type="hidden" id="sopmalCd" value="${order.sopmalCd}"/>
<input type="hidden" id="ordrInnb" value="${order.ordrInnb}"/>
<input type="hidden" id="ordrTyCd" value="${order.ordrTyCd}"/>
<input type="hidden" id="ordrSttusCd" value="${order.ordrSttusCd}"/>
<input type="hidden" id="isBank" value="${not empty order.bnnkNm ? 'Y' : 'N'}"/>
<input type="hidden" id="setleTyCd" value="${order.setleTyCd}"/> <!-- 결제유형 -->
<input type="hidden" id="totalRlDlvyAmt" value=""/>
<input type="hidden" id="dlvyDwldCouponInnbArr" value=""/>
<c:forEach var="shipping" items="${data.shippingList}" varStatus="status">
<c:if test="${ status.first }">
<c:set var="defaultReturnAdress" value="${ shipping }"/>
</c:if>
</c:forEach>
<c:set var="totalRlDlvyAmt" value="0" />
<c:choose>
<c:when test="${'04' == order.ordrTyCd || '05' == order.ordrTyCd}">
<c:choose>
<c:when test="${not empty data.shippingList}">
<c:forEach var="shipping" items="${data.shippingList}" varStatus="status">
<div class="multiDeliveryStatus">
<p class="multiDeliveryStatus__title"><span class="multiDeliveryStatus__numTitle"><c:out value="${status.count > 1 ? status.count += '. ': ''}"/>배송지</span>
<c:out value="${shipping.recpntNm}"/> <c:out value="${not empty shipping.dlvylcZip ? '(' += shipping.dlvylcZip += ')' : ''}"/>
<c:out value="${shipping.adres}"/>
<c:out value="${shipping.dlvylcAdresDtl}"/>
<c:set var="shippingIndex" value="${status.index}"/>
<%--<em>2곳</em>--%>
<c:set var="totalRlDlvyAmt" value="${totalRlDlvyAmt + shipping.rlDlvyAmt}" />
<input type="hidden" name="rlDlvyAmt${shippingIndex}" value="${shipping.rlDlvyAmt}"/>
<input type="hidden" name="dlvyDwldCouponInnb${shippingIndex}" value="${ shipping.dlvyDwldCouponInnb }"/>
<%--<input type="text" name="rlDlvyAmt" value="${ totalRlDlvyAmt }"/>--%>
</p>
</div>
<div class="cartOrder__list">
<h4 class="modalSectionTitle">주문상품 중 반품/환불신청 가능 상품<span class="modalSectionTitle__sub">- 반품/환불신청 시 상품과 수량을 선택하세요!</span></h4>
<div class="table-wrapper">
<table class="table vertical orderRefundPop__table">
<caption>결제취소/환불정보</caption>
<colgroup>
<col style="width: auto;">
<col style="width: 80px">
<col style="width: 80px">
<col style="width: 120px">
<col style="width: 80px">
</colgroup>
<thead>
<tr>
<th>
상품명
<input type="hidden" class="checkAll" id="checkAll${shippingIndex}" data-index="${shippingIndex}">
</th>
<th>주문수량</th>
<th>취소가능수량</th>
<th>취소수량</th>
<th>처리상태</th>
</tr>
</thead>
<tbody>
<c:choose>
<c:when test="${not empty shipping.goodsList}">
<c:forEach var="goods" items="${shipping.goodsList}" varStatus="status">
<tr class="cancl-goods">
<td>
<div class="cartItem">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox">
<input type="checkbox" name="goodsCheck" class="checkbox${shippingIndex} goodsCheck${shippingIndex}" value="" onclick="fn_ctr_pCheckbox('#checkAll${shippingIndex}', '.checkbox${shippingIndex}'); calculateTotal();">
<span class="check"></span>
<span class="control-label"></span>
</label>
</div>
<div class="cartItem__image">
<img src="<c:out value="${ cdnurl }${goods.goodsImgCours}"/>" onerror="this.src='<c:url value="/mngr/images/image_placeholder.png"/>" alt="<c:out value="${goods.goodsNm}"/>">
</div>
<div class="cartItem__productInfo">
<a href="javascript:void(0);" class="cartItem__productTitle"><c:out value="${goods.goodsNm}"/></a>
<span class="cartItem__productOption"> <span class="option-badge">옵션</span><c:out value="${goods.optnNm}"/></span>
</div>
</div>
</td>
<td><c:out value="${goods.ordrQy}"/></td>
<td><c:out value="${goods.ordrQy - goods.setleCanclQy}"/></td>
<td>
<input type="hidden" class="sopmalCd" value="${goods.sopmalCd}"/>
<input type="hidden" class="ordrInnb" value="${goods.ordrInnb}"/>
<input type="hidden" class="ordrDlvyInnb" value="${shipping.ordrDlvyInnb}"/>
<input type="hidden" class="ordrGoodsInnb" value="${goods.ordrGoodsInnb}"/>
<input type="hidden" class="ordrGoodsOptnInnb" value="${goods.ordrGoodsOptnInnb}"/>
<input type="hidden" class="setleCanclQy" value="${goods.setleCanclQy}"/>
<input type="hidden" class="ordrQy" value="${goods.ordrQy}"/>
<input type="hidden" class="subscrptWthdrawPosblAt" value="${goods.subscrptWthdrawPosblAt}"/>
<input type="hidden" class="indvdlzCanclPosblAt" value="${goods.indvdlzCanclPosblAt}"/>
<input type="hidden" class="indvdlzReturnExchngPosblAt" value="${goods.indvdlzReturnExchngPosblAt}"/>
<div class="select-box">
<select class="canclQy" title="취소 수량">
<option value="" selected>선택</option>
<c:forEach var="item" begin="1" end="${goods.ordrQy - goods.setleCanclQy}" step="1" varStatus="status">
<option value="<c:out value="${status.count}"/>"><c:out value="${status.count}"/></option>
</c:forEach>
</select>
</div>
</td>
<td>
<span class="orderList__status"><c:out value="${goods.ordrSttusNm}"/></span>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr><td colspan="100%" ><spring:message code="common.nodata"/></td></tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</div>
</c:forEach>
</c:when>
<c:otherwise>
</c:otherwise>
</c:choose>
</c:when>
<c:otherwise>
<div class="cartOrder__list">
<h4 class="modalSectionTitle">주문상품 중 반품/환불신청 가능 상품<span class="modalSectionTitle__sub">- 반품/환불신청 시 상품과 수량을 선택하세요!</span></h4>
<div class="table-wrapper">
<table class="table vertical orderRefundPop__table">
<caption>결제취소/환불정보</caption>
<colgroup>
<col style="width: auto;">
<col style="width: 80px">
<col style="width: 80px">
<col style="width: 120px">
<col style="width: 80px">
</colgroup>
<thead>
<tr>
<th>상품명</th>
<th>주문수량</th>
<th>취소가능수량</th>
<th>취소수량</th>
<th>처리상태</th>
</tr>
</thead>
<tbody>
<c:choose>
<c:when test="${not empty data.goodsList}">
<c:forEach var="goods" items="${data.goodsList}" varStatus="status">
<tr class="cancl-goods">
<td>
<div class="cartItem">
<c:if test="${ status.index eq 0 }">
<input type="hidden" id="singleReDlvyAmt" value="${ goods.rlDlvyAmt }"/>
<input type="hidden" id="dlvyDwldCouponInnb" value="${ goods.dlvyDwldCouponInnb }"/>
</c:if>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox">
<input type="checkbox" name="goodsCheck" value="">
<span class="check"></span>
<span class="control-label"></span>
</label>
</div>
<div class="cartItem__image">
<img src="<c:out value="${ cdnurl }${goods.goodsImgCours}"/>" onerror="this.src='<c:url value="/mngr/images/image_placeholder.png"/>" alt="<c:out value="${goods.goodsNm}"/>">
</div>
<div class="cartItem__productInfo">
<a href="javascript:void(0);" class="cartItem__productTitle"><c:out value="${goods.goodsNm}"/></a>
<span class="cartItem__productOption"> <span class="option-badge">옵션</span><c:out value="${goods.optnNm}"/></span>
</div>
</div>
</td>
<td><c:out value="${goods.ordrQy}"/></td>
<td><c:out value="${goods.ordrQy - goods.setleCanclQy}"/></td>
<td>
<input type="hidden" class="goodsDwldCouponInnb" value="${ goods.goodsDwldCouponInnb }"/>
<input type="hidden" class="sopmalCd" value="${goods.sopmalCd}"/>
<input type="hidden" class="ordrInnb" value="${goods.ordrInnb}"/>
<input type="hidden" class="ordrDlvyInnb" value="${goods.ordrDlvyInnb}"/>
<input type="hidden" class="ordrGoodsInnb" value="${goods.ordrGoodsInnb}"/>
<input type="hidden" class="ordrGoodsOptnInnb" value="${goods.ordrGoodsOptnInnb}"/>
<input type="hidden" class="ordrQy" value="${goods.ordrQy}"/>
<input type="hidden" class="subscrptWthdrawPosblAt" value="${goods.subscrptWthdrawPosblAt}"/>
<input type="hidden" class="indvdlzCanclPosblAt" value="${goods.indvdlzCanclPosblAt}"/>
<input type="hidden" class="indvdlzReturnExchngPosblAt" value="${goods.indvdlzReturnExchngPosblAt}"/>
<input type="hidden" class="indvdlzReturnExchngPosblAt" value="${goods.indvdlzReturnExchngPosblAt}"/>
<div class="select-box">
<select class="canclQy" title="취소 수량">
<option value="" selected>선택</option>
<c:forEach var="item" begin="1" end="${goods.ordrQy - goods.setleCanclQy}" step="1" varStatus="status">
<option value="<c:out value="${status.count}"/>"><c:out value="${status.count}"/></option>
</c:forEach>
</select>
</div>
</td>
<td>
<span class="orderList__status"><c:out value="${goods.ordrSttusNm}"/></span>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr><td colspan="100%" ><spring:message code="common.nodata"/></td></tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</div>
</c:otherwise>
</c:choose>
<p class="orderRefundReason__title">취소 사유를 선택해 주세요.</p>
<div class="orderRefundReason">
<div class="orderRefundReason__item">
<div class="orderRefundReason__itemTitle">취소사유</div>
<div class="select-box">
<select name="returnResnCd" id="returnResnCd" class="lg" title="취소사유">
<option value="" selected>취소사유를 선택해 주세요.</option>
<c:forEach var="returnResn" items="${data.returnResnList}">
<option value="<c:out value="${returnResn.cd}"/>" data-cddv="<c:out value="${ returnResn.cdDv }"/>" ><c:out value="${returnResn.cdNm}"/></option>
</c:forEach>
</select>
</div>
</div>
<div class="orderRefundReason__item">
<div class="orderRefundReason__itemTitle">상세사유</div>
<textarea name="returnResnCn" id="returnResnCn" class="textarea" rows="6" title="상세사유" placeholder="최소 10자 이상으로 입력해 주세요."></textarea>
</div>
</div>
<p class="orderRefundReason__title">연락처</p>
<div class="cartOrder__list">
<div class="table-wrapper">
<table class="table vertical orderRefundPop__table">
<caption>해당 테이블에 대한 설명</caption>
<!-- 각 열 width 설정 -->
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<thead>
<tr>
<th>구매자</th>
<th>휴대폰
<c:set var="firstPart" value="${ fn:substring(order.ordrrMbtlnb, 0, 2)}" />
<c:set var="middlePart" value="${ fn:substring(order.ordrrMbtlnb, 4, 8)}" />
<c:set var="lastPart" value="${ fn:substring(order.ordrrMbtlnb, 9, 13)}" />
</th>
<%--
<th>연락처 ${order.ordrrTelnb}
<c:set var="firstPartTel" value="${ fn:substring(order.ordrrTelnb, 0, 2)}" />
<c:set var="middlePartTel" value="${ fn:substring(order.ordrrTelnb, 4, 8)}" />
<c:set var="lastPartTel" value="${ fn:substring(order.ordrrTelnb, 9, 12)}" />
</th>
--%>
</tr>
</thead>
<tbody>
<tr>
<td>
${order.mbrNm}
<input type="hidden" name="" value="${ order.mbrNm }"/>
</td>
<td>
<div class="inputEmail">
<div class="select-box">
<select class="short2" title="해당 셀렉트에 대한 설명" name="returnCstmrMbtlnb">
<option value="010" <c:if test="${firstPart eq '010'}">selected</c:if>>010</option>
<option value="011" <c:if test="${firstPart eq '011'}">selected</c:if>>011</option>
</select>
</div>
<span class="mx-3 fs-16">-</span>
<input type="text" class="input-text xsm" value="${middlePart}" title="해당 인풋에 대한 설명" name="returnCstmrMbtlnb" maxlength="4">
<span class="mx-3 fs-16">-</span>
<input type="text" class="input-text xsm" value="${lastPart}" title="해당 인풋에 대한 설명" name="returnCstmrMbtlnb" maxlength="4">
</div>
</td>
<%--
<td>
<div class="inputEmail">
<div class="select-box">
<select class="short2" title="해당 셀렉트에 대한 설명">
<option value="02" <c:if test="${firstPartTel eq '02'}">selected</c:if>>서울 02</option>
<option value="031" <c:if test="${firstPartTel eq '031'}">selected</c:if>>경기도 031</option>
</select>
</div>
<span class="mx-3 fs-16">-</span>
<input type="text" class="input-text xsm" value="${middlePartTel}" title="해당 인풋에 대한 설명">
<span class="mx-3 fs-16">-</span>
<input type="text" class="input-text xsm" value="${lastPartTel}" title="해당 인풋에 대한 설명">
</div>
</td>
--%>
</tr>
</tbody>
</table>
</div>
</div>
<%--
<p class="orderRefundReason__title">연락처</p>
<div class="signUp__inputBox__item">
<div class="inputEmail">
<div class="select-box">
<select name="domain" title="이메일 자동발송 발신주소" onchange="fn_set_domain(this.value);">
<option value="naver.com" >naver.com</option>
<option value="hanmail.net" >hanmail.net</option>
</select>
</div>
<span class="mx-3 fs-16">-</span>
<input class="input-text xsm" type="text" id="id" title="이메일 id" placeholder="이메일" maxlength="25">
<span class="mx-3 fs-16">-</span>
<input class="input-text xsm" type="text" id="domain" title="이메일 domain" maxlength="25">
</div>
</div>
<p class="orderRefundReason__title">연락처</p>
<div class="orderRefundReason">
<div class="orderRefundReason__item">
<div class="orderRefundReason__itemTitle">구매자<br/></div>
<div class="orderRefundReason__itemTitle">
<input class="input-text" type="text" title="구매자" placeholder="구매자" id="" name="" value="${order.mbrNm}" readonly>
</div>
<div class="orderRefundReason__itemTitle">휴대폰<br/></div>
<div class="orderRefundReason__itemTitle">
<div class="select-box">
<select class="short2" title="해당 셀렉트에 대한 설명" name="returnCstmrMbtlnb">
<option value="010" <c:if test="${firstPart eq '010'}">selected</c:if>>010</option>
<option value="011" <c:if test="${firstPart eq '011'}">selected</c:if>>011</option>
</select>
</div>
<span class="mx-3 fs-16">-</span>
<input type="text" class="input-text xsm" value="${middlePart}" title="해당 인풋에 대한 설명" name="returnCstmrMbtlnb">
<span class="mx-3 fs-16">-</span>
<input type="text" class="input-text xsm" value="${lastPart}" title="해당 인풋에 대한 설명" name="returnCstmrMbtlnb">
</div>
<div class="orderRefundReason__itemTitle">연락처<br/></div>
<div class="orderRefundReason__itemTitle">
<div class="select-box">
<select class="short2" title="해당 셀렉트에 대한 설명" name="returnCstmrMbtlnb">
<option value="010" <c:if test="${firstPart eq '010'}">selected</c:if>>010</option>
<option value="011" <c:if test="${firstPart eq '011'}">selected</c:if>>011</option>
</select>
</div>
<span class="mx-3 fs-16">-</span>
<input type="text" class="input-text xsm" value="${middlePart}" title="해당 인풋에 대한 설명" name="returnCstmrMbtlnb">
<span class="mx-3 fs-16">-</span>
<input type="text" class="input-text xsm" value="${lastPart}" title="해당 인풋에 대한 설명" name="returnCstmrMbtlnb">
</div>
</div>
</div>
--%>
<p class="orderRefundReason__title">반품 방법을 선택해 주세요.(반송주소 : <c:out value="${ data.returnAddress }"/> )</p>
<div class="orderRefundReason">
<div class="custom-radio-container">
<c:forEach var="cdList" items="${ data.returnMthCdList }" varStatus="status">
<div class="custom-radio is-medium">
<input type="radio" id="${ cdList.cdNm }${cdList.cd}" name="returnMthCd" value="${ cdList.cd }" <c:if test="${ cdList.cd eq '02' }">checked="checked"</c:if> onclick="fn_ctrl_retrun_mth();">
<label for="${ cdList.cdNm }${cdList.cd}">${ cdList.cdNm }</label>
</div>
</c:forEach>
</div>
<br/>
<div class="orderRefundReason__item addressSelectDiv">
<div class="orderRefundReason__itemTitle">배송지 주소<br/></div>
<div class="orderRefundReason__itemTitle">
<input class="input-text" type="text" title="해당 인풋에 대한 설명" placeholder="우편번호" id="senderZip" name="senderZip" readonly>
<input type="hidden" id="senderAdresDvCd" name="senderAdresDvCd" value=""/>
<button type="button" class="btn md theme outline" onclick="fn_select_postcode(fn_set_postcode_popup); return false;">우편번호 찾기</button><br>
</div>
<div class="orderRefundReason__itemTitle">
<input type="text" id="senderRnmAdres" name="senderRnmAdres" class="input-text lg" title="도로명 주소" placeholder="도로명 주소" maxlength="20" readonly>
</div>
<div class="orderRefundReason__itemTitle">
<input type="text" name="senderLnbAdres" id="senderLnbAdres" class="input-text lg" title="지번주소" placeholder="지번주소" maxlength="20" readonly>
</div>
<div class="orderRefundReason__itemTitle">상세 주소<br/></div>
<div class="orderRefundReason__itemTitle">
<input type="text" name="senderAdresDtl" id="senderAdresDtl" class="input-text lg" value="" title="상세 주소" placeholder="상세 주소" maxlength="50">
</div>
</div>
</div>
<c:if test="${not empty order.setleTyCd && ( order.setleTyCd eq '02' || order.setleTyCd eq '04' || order.setleTyCd eq '05' || order.setleTyCd eq '06' )}">
<p class="orderRefundReason__title">환불방법을 입력해 주세요</p>
<div class="orderRefundReason">
<div class="orderRefundReason__item">
<div class="orderRefundReason__itemTitle">은행</div>
<div class="select-box">
<select class="sm" title="해당 셀렉트에 대한 설명" name="refundAcntBnnkNm" id="refundAcntBnnkNm">
<c:forEach var="cdList" items="${ data.bankCdList }" varStatus="status">
<option value="<c:out value="${ cdList.cd }"/>,<c:out value="${ cdList.cdNm }"/>" ><c:out value="${ cdList.cdNm }"/></option>
</c:forEach>
</select>
</div>
<%--<input type="text" name="refundAcntBnnkNm" id="refundAcntBnnkNm" class="input-text lg" title="은행" placeholder="환불 은행을 입력해 주세요." maxlength="20">--%>
<div class="orderRefundReason__itemTitle">예금주</div>
<input type="text" name="refundAcntDpstrNm" id="refundAcntDpstrNm" class="input-text lg" title="예금주" placeholder="예금주 이름을 입력해 주세요." maxlength="20">
<div class="orderRefundReason__itemTitle">계좌번호</div>
<input type="text" name="refundAcntnb" id="refundAcntnb" class="input-text lg" value="" title="계좌번호" placeholder="계좌번호를 입력해 주세요." maxlength="50">
</div>
</div>
</c:if>
<p class="orderRefundReason__title returnDlvyAcntnbArea">배송비 결제방법을 선택해주세요.</p>
<div class="cartOrder__list returnDlvyAcntnbArea">
<div class="form-control-container mb-20">
<div class="left">
<div class="select-box">
<select class="lg" title="반품 배송비 결제방법" id="returnDlvyPymntTyCd" name="returnDlvyPymntTyCd" onchange="fn_ctrl_return_dlvy_mth();">
<option value="" disabled selected>반품 배송비 결제방법을 선택해 주세요.</option>
<c:forEach var="cdList" items="${data.returnMtcCdList}">
<option value="<c:out value="${cdList.cd}"/>" ><c:out value="${cdList.cdNm}"/></option>
</c:forEach>
</select>
</div>
</div>
<div class="center">
</div>
<div class="right">
</div>
</div>
<div class="table-wrapper" id="returnMtcDiv">
<table class="table vertical tight">
<caption>해당 테이블에 대한 설명</caption>
<!-- 각 열 width 설정 -->
<colgroup>
<col style="width: 50%;">
<col style="width: auto;">
</colgroup>
<thead>
<tr>
<th>은행</th>
<th>입금자명</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="select-box">
<select class="full" title="해당 셀렉트에 대한 설명" name="returnAcntBnnkNm" id="returnAcntBnnkNm">
<option value="" selected disabled>선택</option>
<c:forEach items="${ data.bankAccount }" var="bankAccount" varStatus="status">
<option value="<c:out value="${ bankAccount.acntnb }"/>"><c:out value="${ bankAccount.dpstrNm }"/> <c:out value="${ bankAccount.acntnb }"/></option>
</c:forEach>
</select>
</div>
</td>
<td>
<input type="text" class="input-text full" value="" name="returnAcntDpstrNm" id="returnAcntDpstrNm" title="입금자명">
</td>
</tr>
</tbody>
</table>
<%--<p class="fyi fs-13 mt-5 gray-7">환불 금액을 입력할 환불 계좌 정보입니다. 결제 수단이 무통장, 가상 계좌인 경우 결제 금액은 관리자가 수동으로 입금해주세요.--%>
</p>
</div>
</div>
<div class="infoBox">
<h6 class="infoBox__title">최초 배송비</h6>
<p class="infoBox__paragraph">부분 결제 취소 시 추가 배송비가 발생할 수 있으며, 이 때 추가 배송비를 결제해 주셔야만 결제취소 처리완료가 가능합니다.
</p>
<h6 class="infoBox__title">[추가 배송비가 발생하는 경우]</h6>
<ol class="infoBox__list">
<li>① ‘묶음배송비’ 상품의 배송비 무료(금액별 차등) 조건을 충족하여 배송비 무료</li>
<li>② 부분 결제취소로 배송비 무료 조건을 불충족하는 경우 추가 배송비 부과</li>
<li>③ 추가 배송비는 카드 또는 마일리지로 결제 가능</li>
</ol>
<h6 class="infoBox__title">유의사항</h6>
<ol class="infoBox__list">
<li>① 결제확인 상태에서는 전체 취소만 가능합니다.</li>
</ol>
</div>
</div>
</div>
<div class="modal-footer">
<a href="javascript:void(0);" rel="modal:close" class="btn large outline">닫기</a>
<a href="javascript:void(0);" id="btnReturnRegist" class="btn large gray2">반품/환불 신청</a>
</div>
</div>
<script>
let dlvylcZip = '${ defaultReturnAdress.dlvylcZip }';
let dlvylcAdresDvCd = '${ defaultReturnAdress.dlvylcAdresDvCd }';
let dlvylcRnmAdres = '${ defaultReturnAdress.dlvylcRnmAdres }';
let dlvylcLnbAdres = '${ defaultReturnAdress.dlvylcLnbAdres }';
let dlvylcAdresDtl = '${ defaultReturnAdress.dlvylcAdresDtl }';
$(document).ready(function() {
$('input[name="senderZip"]').val(dlvylcZip);
$('input[name="senderAdresDvCd"]').val(dlvylcAdresDvCd);
$('input[name="senderRnmAdres"]').val(dlvylcRnmAdres);
$('input[name="senderLnbAdres"]').val(dlvylcLnbAdres);
$('input[name="senderAdresDtl"]').val(dlvylcAdresDtl);
});
</script>

View File

@@ -0,0 +1,916 @@
<%@ 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"%>
<%--
Class Name : WslistInqireRForm.jsp
Description : 마이페이지 위시리스트
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-02-27 추지훈 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<%-- 공통 include --%>
<jsp:include page="/WEB-INF/views/comm/Include.jsp"/>
</head>
<script>
$(document).ready(function() {
fn_start_display();
});
/******************************************************************
* 시작 화면 제어
******************************************************************/
const fn_start_display = function() {
}
/*********************************************************************
* 반품/환불 목록 이동
* *******************************************************************/
const fn_order_refund_list = function() {
$('#listForm').attr('action', '<c:url value="/sopmal/mpage/ordr/selectRtngudCanclRefndForm"/>');
$('#listForm').attr('method', 'post');
$('#listForm').submit();
}
/*********************************************************************
* 반품 주소 변경
* *******************************************************************/
const fn_update_dlvy_info = function () {
const data = $('#returnDlvyUpdtForm').serializeArray();
if (confirm('반품 배송지 정보를 <spring:message code="confirm.common.update"/>')) {
$.ajax({
type: 'POST',
url: '<c:url value="/sopmal/mpage/ordr/updateRtngudCanclRefndUpdt"/>',
data: data,
success: function (result) {
alert('<spring:message code="success.common.update"/>');
location.reload();
}
});
}
}
/*********************************************************************
* 환불 계좌 정보 변경
* *******************************************************************/
const fn_update_acnt_info = function () {
const data = $('#refundAcntUpdtForm').serialize();
if (confirm('환불 계좌 정보를 <spring:message code="confirm.common.update"/>')) {
$.ajax({
type: 'POST',
url: '<c:url value="/sopmal/mpage/ordr/updateRtngudCanclRefndUpdt"/>',
data: data,
success: function (result) {
alert('<spring:message code="success.common.update"/>');
location.reload();
}
});
}
}
/* ********************************************************
* 우편번호 찾기
******************************************************** */
const fn_set_postcode = function(data) {
$('#postcode').val(data.postcode);
$('#adresDvCd').val(data.addressType);
if (data.addressType == '02') {
$('#address').val(data.jibunAddress);
} else if (data.addressType == '01') {
$('#address').val(data.roadAddress);
}
}
/**
* 반품 상품 QNA 문의 팝업
* @param goodsInnb
*/
const fn_goods_qna_pop_regist = (goodsInnb) => {
$.ajax({
type: "post",
data: {
authDv: "REGIST",
reqUrl: "modal",
bbsId: "goods_qna",
goodsInnb: goodsInnb,
listAt: "list",
},
url: "/sopmal/csc/selectBbscttAuth",
success: function (data) {
/*모달중복제거*/
fn_close_modal("qna-pop-regist");
fn_close_modal("qna-update-pop");
$("#modalDiv").html(data);
$("#qna-pop-regist").modal();
}
});
}
</script>
<body>
<%-- 공통 Header --%>
<jsp:include page="/WEB-INF/views/comm/Header.jsp"/>
<!-- 메인 컨텐츠 영역 -->
<main>
<div class="sub-wrapper">
<div class="sub-content">
<div class="sub-rl">
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.cdnurl')" var="cdnurl"/>
<%-- 마이페이지 Left 영역 --%>
<jsp:include page="/WEB-INF/views/comm/mpage/MypageLeft.jsp"/>
<div class="sub-right-content">
<%-- 마이페이지 Right 영역 --%>
<jsp:include page="/WEB-INF/views/comm/mpage/MypageRight.jsp"/>
<div class="sub-right-content__section">
<h3 class="sub-right-content__title"><c:if test = "${not empty resultMap.result.refnd.returnProcsSttusCd}">반품/</c:if>환불 내역</h3>
<div class="sub-right-content__section">
<h3 class="orderDetail__title"><c:out value="${ resultMap.result.refnd.registDt }"/>
<span class="orderDetail__titleNum">
<c:choose>
<c:when test = "${not empty resultMap.result.refnd.returnProcsSttusCd}">
반품번호
</c:when>
<c:otherwise>
환불번호
</c:otherwise>
</c:choose>
<c:out value="${ resultMap.result.refnd.orderRefundInnb }"/>
</span>
</h3>
<div class="cartOrder__list">
<div class="table-wrapper">
<table class="table vertical">
<caption>해당 테이블에 대한 설명</caption>
<!-- 각 열 width 설정 -->
<colgroup>
<col style="width: auto;">
<col style="width: 40px;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 7%;">
</colgroup>
<thead>
<tr>
<th>상품명</th>
<th>수량</th>
<th>상품금액</th>
<th>할인금액</th>
<th>할인적용금액</th>
<th>환불신청수량</th>
<th>배송비</th>
<th>문의</th>
</tr>
</thead>
<tbody>
<c:set var="rePreOrdrDlvyInnb" value="0"/>
<c:set var="reDlvyCnt" value="1"/>
<c:choose>
<c:when test="${ not empty resultMap.result.itemsList }">
<c:forEach var="refundList" items="${ resultMap.result.itemsList }" varStatus="status">
<tr>
<td>
<div class="cartItem">
<div class="cartItem__image">
<a href="<c:url value="/sopmal/goods/selectGoodsDtl?sopmalCd=${refundList.sopmalCd}&goodsInnb=${refundList.goodsInnb}"/>" class="orderList__image">
<img src="<c:out value="${ cdnurl }"/><c:out value="${ refundList.img }"/>" onerror="this.src='/pc/images/image_placeholder.png'" alt="<c:out value="${refundList.goodsNm}"/>">
</a>
</div>
<div class="cartItem__productInfo">
<a href="" class="cartItem__productTitle">
<c:out value="${ refundList.goodsNm }"/>
</a>
<c:if test="${ not empty refundList.optnNm }">
<span class="cartItem__productOption">
<span class="option-badge">옵션</span>
<c:out value="${ refundList.optnNm }"/>
</span>
</c:if>
(<c:out value="${ refundList.dlvylcZip }"/>)
<c:choose>
<c:when test="${ refundList.dlvylcAdresDvCd eq '01' }">
<c:out value="${ refundList.dlvylcRnmAdres }"/>
</c:when>
<c:when test="${ refundList.dlvylcAdresDvCd eq '02' }">
<c:out value="${ refundList.dlvylcLnbAdres }"/>
</c:when>
</c:choose>
<c:out value="${ refundList.dlvylAdresDtl }"/>
</div>
</div>
</td>
<td>
<span><c:out value="${ refundList.ordrQy }"/></span>
</td>
<td>
<span class="cartItem__normalPrice"><span
class=" comma"><c:out value="${ refundList.slepric }"/></span><span
class="priceUnit">원</span>
</span>
</td>
<td>
<span class="cartItem__discountPrice"><span
class="cartItem__discountMinus">(-)</span><span
class="comma"><c:out value="${ refundList.dscntAmt }"/></span><span
class="priceUnit">원</span>
</span>
</td>
<td>
<span class="cartItem__afterPrice"><span
class="comma"><c:out value="${ refundList.applyDscntAmt }"/></span>
<span class="priceUnit">원</span>
</span>
</td>
<td>
<span><c:out value="${ refundList.refundQy }"/></span>
</td>
<c:choose>
<c:when test="${ refundList.ordrTyCd eq '04' || refundList.ordrTyCd eq '05' }">
<c:set var="reRowspanCnt" value="0"/>
<c:forEach var="tmpGoods" items="${resultMap.result.itemsList}">
<c:set var="reRowspanCnt" value="${refundList.ordrDlvyInnb == tmpGoods.ordrDlvyInnb ? reRowspanCnt + 1 : reRowspanCnt}"/>
</c:forEach>
<c:if test="${rePreOrdrDlvyInnb != refundList.ordrDlvyInnb}">
<td class="center" rowspan="${reRowspanCnt}">
<span class="fs-13 fw-400">${reDlvyCnt += ' 번째 배송지'}</span><br>
<span class="fs-13 fw-400">${refundList.dlvyMthNm}</span><br>
<c:choose>
<c:when test="${0 == refundList.dlvyAmt}">
<span class="fs-13 fw-400">무료</span>
</c:when>
<c:otherwise>
<span class="fs-13 fw-400"><fmt:formatNumber value="${refundList.dlvyAmt}" pattern="#,###"/></span>
</c:otherwise>
</c:choose>
</td>
<c:set var="rePreOrdrDlvyInnb" value="${refundList.ordrDlvyInnb}"/>
<c:set var="reDlvyCnt" value="${reDlvyCnt + 1}"/>
</c:if>
</c:when>
<c:otherwise>
<c:if test="${status.index == 0}">
<td class="center" ${fn:length(resultMap.result.itemsList) > 1 ? 'rowspan="' += fn:length(resultMap.result.itemsList) += '"' : ''}>
<span class="fs-13 fw-400">${refundList.dlvyMthNm}</span><br>
<c:choose>
<c:when test="${0 == refundList.dlvyAmt}">
<span class="fs-13 fw-400">무료</span>
</c:when>
<c:otherwise>
<span class="fs-13 fw-400"><fmt:formatNumber value="${refundList.dlvyAmt}" pattern="#,###"/></span>
</c:otherwise>
</c:choose>
</td>
</c:if>
</c:otherwise>
</c:choose>
<td>
<button type="button" class="btn sm gray2 sub-right-content__innerTitleBtn" onclick="fn_goods_qna_pop_regist('<c:out value="${ refundList.goodsInnb }"/>')">문의</button>
</td>
<%---
<td>
<span class="cartItem__shippingFee"><span
class=" comma">3,000</span><span
class="priceUnit">원</span>
</span>
</td>
--%>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr class="row-no-data">
<td colspan="100%" class="text-center">조회된 데이터가 없습니다.</td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
<tfoot class="refundSum">
</tfoot>
</table>
</div>
</div>
</div>
</div>
<div class="sub-right-content__section">
<h3 class="sub-right-content__innerTitle"><c:if test = "${not empty resultMap.result.refnd.returnProcsSttusCd}">반품/</c:if>환불 처리</h3>
<div class="table-wrapper orderDetail__table">
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<!-- 각 열 width 설정 -->
<colgroup>
<col style="width: 220px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th><c:if test = "${not empty resultMap.result.refnd.returnProcsSttusCd}">반품/</c:if>환불 상태</th>
<td>
<c:choose>
<c:when test="${ not empty resultMap.result.refnd.returnProcsSttusCd }">
<c:out value="${ resultMap.result.refnd.returnProcsSttusCdNm }"/>
</c:when>
<c:otherwise>
<c:out value="${ resultMap.result.refnd.refundProcsSttusCdNm }"/>
</c:otherwise>
</c:choose>
</td>
</tr>
<tr>
<th><c:if test = "${not empty resultMap.result.refnd.returnProcsSttusCd}">반품/</c:if>환불 번호</th>
<td><c:out value="${ resultMap.result.refnd.orderRefundInnb }"/></td>
</tr>
<tr>
<th>환불 종류</th>
<td><c:out value="${ resultMap.result.refnd.refundTyCdNm }"/></td>
</tr>
<c:if test = "${not empty resultMap.result.refnd.returnProcsSttusCd}">
<tr>
<th>반품 접수일</th>
<td><c:out value="${ resultMap.result.refnd.returnRceptDt }"/></td>
</tr>
</c:if>
<tr>
<th>환불 접수일</th>
<td><c:out value="${ resultMap.result.refnd.refundReqstDt }"/></td>
</tr>
<c:if test = "${not empty resultMap.result.refnd.returnComptDt}">
<tr>
<th>반품 완료일</th>
<td><c:out value="${ resultMap.result.refnd.returnComptDt }"/></td>
</tr>
</c:if>
<c:if test = "${not empty resultMap.result.refnd.refundComptDt}">
<tr>
<th>환불 완료일</th>
<td><c:out value="${ resultMap.result.refnd.refundComptDt }"/></td>
</tr>
</c:if>
</tbody>
</table>
</div>
</div>
<c:if test="${ not empty resultMap.result.refnd.returnRceptDt }">
<div class="sub-right-content__section">
<h3 class="sub-right-content__innerTitle">반품정보
<c:if test="${ resultMap.result.refnd.returnProcsSttusCd eq '01' }">
<button id="returnInfoTrigger" class="btn sm gray2 sub-right-content__innerTitleBtn" onclick="fn_update_dlvy_info();">변경</button>
</c:if>
</h3>
<form id="returnDlvyUpdtForm">
<input type="hidden" name="orderReInnb" value="<c:out value="${ resultMap.result.refnd.orderRefundInnb }"/>"/>
<div id="returnInfoContent01" class="table-wrapper orderDetail__table">
<c:choose>
<c:when test="${ resultMap.result.refnd.returnProcsSttusCd eq '01' }">
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<!-- 각 열 width 설정 -->
<colgroup>
<col style="width: 220px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th>
<span class="orderDetail__thText">회수방법</span>
</th>
<td>
<div class="select-box">
<select class="lg" title="해당 셀렉트에 대한 설명" name="returnMthCd">
<option value="" disabled selected>선택</option>
<c:forEach var="cdList" items="${ resultMap.returnMthCdList }" varStatus="status">
<c:choose>
<c:when test="${ resultMap.result.refnd.returnMthCd eq cdList.cd }">
<option value="<c:out value="${ cdList.cd }"/>" selected="selected"><c:out value="${ cdList.cdNm }"/></option>
</c:when>
<c:otherwise>
<option value="<c:out value="${ cdList.cd }"/>"><c:out value="${ cdList.cdNm }"/></option>
</c:otherwise>
</c:choose>
</c:forEach>
</select>
</div>
</td>
</tr>
<tr>
<th>
<span class="editAccount__title">주소</span>
</th>
<td>
<div class="inputAddress">
<div class="inputAddress__postalCode">
<input class="input-text" type="text" id="postcode" name="zip" title="우편번호" value="<c:out value="${ resultMap.result.refnd.senderZip }"/>" placeholder="우편번호" readonly>
<button type="button" onclick="fn_select_postcode(fn_set_postcode); return false;" class="btn md theme outline">
우편번호 찾기
</button>
</div>
<input type="hidden" id="adresDvCd" name="adresDvCd" value="<c:out value="${ resultMap.result.refnd.senderAdresDvCd }"/>"/>
<input class="input-text full" type="text" id="address" name="lnbOrRnmAdres"
<c:choose>
<c:when test="${ resultMap.result.refnd.senderAdresDvCd eq '01' }">
value="<c:out value="${ resultMap.result.refnd.senderRnmAdres }"/>"
</c:when>
<c:when test="${ resultMap.result.refnd.senderAdresDvCd eq '02' }">
value="<c:out value="${ resultMap.result.refnd.senderLnbAdres }"/>"
</c:when>
</c:choose>
readonly title="지번 주소" placeholder="지번 주소">
<input class="input-text full" type="text" id="detailAddress" name="dtlAdres" value="<c:out value="${ resultMap.result.refnd.senderAdresDtl }"/>" title="상세 주소" placeholder="상세 주소">
</div>
</td>
</tr>
<tr>
<th>
<span class="orderDetail__thText">휴대폰 번호</span>
</th>
<td>
<input class="input-text" type="text" title="해당 인풋에 대한 설명" value="<c:out value="${ resultMap.result.refnd.returnCstmrMbtlnb }"/>" name="returnCstmrMbtlnb" oninput="fn_fmt_telno($(this));" maxlength="13"
placeholder="">
</td>
</tr>
<tr>
<th>
<span class="orderDetail__thText">반품 사유</span>
</th>
<td>
<div class="select-box">
<select class="lg" title="해당 셀렉트에 대한 설명" name="returnResnCd">
<c:forEach var="returnResn" items="${resultMap.returnResnList}">
<c:choose>
<c:when test="${ returnResn.cd eq resultMap.result.refnd.returnResnCd }">
<option value="<c:out value="${returnResn.cd}"/>" selected="selected"><c:out value="${returnResn.cdNm}"/></option>
</c:when>
<c:otherwise>
<option value="<c:out value="${returnResn.cd}"/>"><c:out value="${returnResn.cdNm}"/></option>
</c:otherwise>
</c:choose>
</c:forEach>
</select>
</div>
</td>
</tr>
<tr>
<th>
<span class="orderDetail__thText">상세 사유</span>
</th>
<td>
<textarea class="textarea" rows="6" title="해당 텍스트 에어리어에 대한 설명" name="returnResnCn"
placeholder="최소 10자 이상으로 입력해 주세요."><c:out value="${ resultMap.result.refnd.returnResnCn }"/></textarea>
</td>
</tr>
</tbody>
</table>
</c:when>
<c:otherwise>
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<!-- 각 열 width 설정 -->
<colgroup>
<col style="width: 220px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th>
<span class="orderDetail__thText">회수방법</span>
</th>
<td>
<c:out value="${ resultMap.result.refnd.returnMthCdNm }"/>
</td>
</tr>
<tr>
<th>
<span class="orderDetail__thText">주소</span>
</th>
<td>
<c:if test="${ not empty resultMap.result.refnd.senderZip }">
(<c:out value="${ resultMap.result.refnd.senderZip }"/>)
</c:if>
<c:choose>
<c:when test="${ resultMap.result.refnd.senderAdresDvCd eq '01'}">
<c:out value="${ resultMap.result.refnd.senderRnmAdres }"/>
</c:when>
<c:when test="${ resultMap.result.refnd.senderAdresDvCd eq '02'}">
<c:out value="${ resultMap.result.refnd.senderLnbAdres }"/>
</c:when>
</c:choose>
<c:out value="${ resultMap.result.refnd.senderAdresDtl }"/>
</td>
</tr>
<tr>
<th>
<span class="orderDetail__thText">휴대폰 번호</span>
</th>
<td>
<c:out value="${ resultMap.result.refnd.returnCstmrMbtlnb }"/>
</td>
</tr>
<tr>
<th>
<span class="orderDetail__thText">반품 사유</span>
</th>
<td>
<c:out value="${ resultMap.result.refnd.returnResnCdNm }"/>
</td>
</tr>
<tr>
<th>
<span class="orderDetail__thText">상세 사유</span>
</th>
<td>
<c:out value="${ resultMap.result.refnd.returnResnCn }"/>
</td>
</tr>
<tr>
<th>
<span class="orderDetail__thText">배송비 입금</span>
</th>
<td>
<%--우리은행 1005-102-768159<br>(예금주: ㈜에스엘바이오텍)--%>
<c:if test="${ not empty resultMap.result.refnd.returnDlvyRcpmnyAcntnb }">
<c:out value="${ resultMap.result.refnd.returnDlvyRcpmnyAcntnb }"/><br>(예금주: <c:out value="${ resultMap.result.refnd.returnDlvyRcpmnyNm }"/>)
</c:if>
</td>
</tr>
</tbody>
</table>
</c:otherwise>
</c:choose>
</div>
</form>
</div>
</c:if>
<div class="sub-right-content__section">
<h3 class="sub-right-content__innerTitle">환불정보
<c:if test="${ resultMap.result.refnd.refundProcsSttusCd ne '03' }">
<button id="refundInfoTrigger" class="btn sm gray2 sub-right-content__innerTitleBtn" onclick="fn_update_acnt_info();">변경</button>
</c:if>
</h3>
<form id="refundAcntUpdtForm">
<input type="hidden" name="orderReInnb" value="<c:out value="${ resultMap.result.refnd.orderRefundInnb }"/>"/>
<div id="refundInfoContent01" class="table-wrapper orderDetail__table">
<c:choose>
<c:when test="${ resultMap.result.refnd.refundProcsSttusCd eq '03' }">
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<!-- 각 열 width 설정 -->
<colgroup>
<col style="width: 220px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th>
<span class="orderDetail__thText">환불은행</span>
</th>
<td>
<c:out value="${ resultMap.result.refnd.refundAcntBnnkNm }"/>
</td>
</tr>
<tr>
<th>
<span class="orderDetail__thText">예금주</span>
</th>
<td>
<c:out value="${ resultMap.result.refnd.refundAcntDpstrNm }"/>
</td>
</tr>
<tr>
<th>
<span class="orderDetail__thText">계좌번호</span>
</th>
<td>
<c:out value="${ resultMap.result.refnd.refundAcntnb }"/>
</td>
</tr>
<tr>
<th>
<span class="orderDetail__thText">취소 사유</span>
</th>
<td>
<c:out value="${ resultMap.result.refnd.returnResnCdNm }"/>
</td>
</tr>
<tr>
<th>
<span class="orderDetail__thText">상세 사유</span>
</th>
<td>
<c:out value="${ resultMap.result.refnd.returnResnCn }"/>
</td>
</tr>
</tbody>
</table>
</c:when>
<c:otherwise>
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<!-- 각 열 width 설정 -->
<colgroup>
<col style="width: 220px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th>
<span class="orderDetail__thText">환불은행</span>
</th>
<td>
<%--
<input class="input-text" type="text" title="환불은행" value="<c:out value="${ resultMap.result.refnd.refundAcntBnnkNm }"/>" name="refundAcntBnnkNm"
placeholder="환불은행">
--%>
<div class="select-box">
<select class="sm" title="해당 셀렉트에 대한 설명" name="refundAcntBnnkNm" id="refundAcntBnnkNm">
<c:forEach var="cdList" items="${ resultMap.bankCdList }" varStatus="status">
<c:choose>
<c:when test="${ cdList.cd eq resultMap.result.refnd.refundAcntBnnkCd }">
<option value="<c:out value="${ cdList.cd }"/>,<c:out value="${ cdList.cdNm }"/>" selected="selected" ><c:out value="${ cdList.cdNm }"/></option>
</c:when>
<c:otherwise>
<option value="<c:out value="${ cdList.cd }"/>,<c:out value="${ cdList.cdNm }"/>" ><c:out value="${ cdList.cdNm }"/></option>
</c:otherwise>
</c:choose>
</c:forEach>
</select>
</div>
</td>
</tr>
<tr>
<th>
<span class="orderDetail__thText">예금주</span>
</th>
<td>
<input class="input-text" type="text" title="예금주명" value="<c:out value="${ resultMap.result.refnd.refundAcntDpstrNm }"/>" name="refundAcntDpstrNm"
placeholder="예금주명">
</td>
</tr>
<tr>
<th>
<span class="orderDetail__thText">계좌번호</span>
</th>
<td>
<input class="input-text" type="text" title="계좌번호" value="<c:out value="${ resultMap.result.refnd.refundAcntnb }"/>" name="refundAcntnb"
placeholder="계좌번호 '-' 포함 or 숫자만 확인 필요">
</td>
</tr>
<tr>
<th>
<span class="orderDetail__thText">환불사유내용</span>
</th>
<td>
<c:out value="${ resultMap.result.refnd.refundResnCn }"/>
</td>
</tr>
<%--
<tr>
<th>
<span class="orderDetail__thText">취소 사유</span>
</th>
<td>
<div class="select-box">
<select class="lg" title="해당 셀렉트에 대한 설명">
<option value="" disabled selected>선택</option>
<option value="">고객 단순 변심</option>
</select>
</div>
</td>
</tr>
<tr>
<th>
<span class="orderDetail__thText">상세 사유</span>
</th>
<td>
<textarea class="textarea" rows="6" title="해당 텍스트 에어리어에 대한 설명" name="refundResnCn"
placeholder="최소 10자 이상으로 입력해 주세요."><c:out value="${ resultMap.result.refnd.refundResnCn }"/></textarea>
</td>
</tr>
--%>
</tbody>
</table>
</c:otherwise>
</c:choose>
</div>
</form>
</div>
<div class="sub-right-content__section">
<h3 class="sub-right-content__innerTitle">
환불 금액
</h3>
<div class="priceSum">
<c:set var="reTotAmt" value="${ resultMap.result.totRefundDscntAmt }"/>
<div class="priceSum__inner">
<div class="priceSum__item">
<span class="priceSum__itemTitle"><c:out value="${ reTotAmt.setleTyCdNm }"/></span>
<span class="priceSum__itemPrice">
<span class="comma priceSum__itemNum"><c:out value="${ reTotAmt.refundAmtQySum }"/></span>
<span class="priceUnit">원</span>
</span>
</div>
<div class="priceSum__operator">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"
viewBox="0 0 16 16" fill="none">
<g clip-path="url(#clip0_160_29539)">
<path
d="M8.99824 7.00176V0H7.00176V7.00176H0V8.99824H7.00176V16H8.99824V8.99824H16V7.00176H8.99824Z"
fill="black" />
</g>
<defs>
<clipPath id="clip0_160_29539">
<rect width="16" height="16" fill="white" />
</clipPath>
</defs>
</svg>
</div>
<div class="priceSum__item priceSum__item--misc">
<span class="priceSum__itemTitle">마일리지</span>
<span class="priceSum__itemPrice">
<span class="comma priceSum__itemNum"><c:out value="${ reTotAmt.totRefundMlgAmt }"/></span>
<span class="priceUnit">원</span>
</span>
</div>
<!-- 마이너스 -->
<!-- <div class="priceSum__operator">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"
fill="none">
<path d="M16 7H0V9.00002H16V7Z" fill="black" />
</svg>
</div> -->
<div class="priceSum__operator">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"
viewBox="0 0 16 16" fill="none">
<g clip-path="url(#clip0_160_29539)">
<path
d="M8.99824 7.00176V0H7.00176V7.00176H0V8.99824H7.00176V16H8.99824V8.99824H16V7.00176H8.99824Z"
fill="black" />
</g>
<defs>
<clipPath id="clip0_160_29539">
<rect width="16" height="16" fill="white" />
</clipPath>
</defs>
</svg>
</div>
<div class="priceSum__item priceSum__item--misc">
<span class="priceSum__itemTitle">쿠폰</span>
<span class="priceSum__itemPrice">
<span class="comma priceSum__itemNum"><c:out value="${ reTotAmt.totRefundCouponAmt }"/></span>
<span class="priceUnit">원</span>
</span>
</div>
<c:if test="${ reTotAmt.rlDlvyAmtRefundAmt > 0}">
<div class="priceSum__operator">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"
fill="none">
<path d="M16 7H0V9.00002H16V7Z" fill="black" />
</svg>
</div>
<div class="priceSum__item priceSum__item--misc">
<span class="priceSum__itemTitle">반품배송비</span>
<span class="priceSum__itemPrice">
<span class="comma priceSum__itemNum"><c:out value="${ reTotAmt.rlDlvyAmtRefundAmt }"/></span>
<span class="priceUnit">원</span>
</span>
</div>
</c:if>
<c:if test="${ reTotAmt.totReturnDlvyAmt > 0}">
<div class="priceSum__operator">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"
viewBox="0 0 16 16" fill="none">
<g clip-path="url(#clip0_160_29539)">
<path
d="M8.99824 7.00176V0H7.00176V7.00176H0V8.99824H7.00176V16H8.99824V8.99824H16V7.00176H8.99824Z"
fill="black" />
</g>
<defs>
<clipPath id="clip0_160_29539">
<rect width="16" height="16" fill="white" />
</clipPath>
</defs>
</svg>
</div>
<div class="priceSum__item priceSum__item--misc">
<span class="priceSum__itemTitle">환불배송비</span>
<span class="priceSum__itemPrice">
<span class="comma priceSum__itemNum"><c:out value="${ reTotAmt.totReturnDlvyAmt }"/></span>
<span class="priceUnit">원</span>
</span>
</div>
</c:if>
<div class="priceSum__equals">
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28"
viewBox="0 0 28 28" fill="none">
<path d="M3.5 17.5H24.5V19.8333H3.5V17.5Z" fill="black" />
<path d="M3.5 8.16699H24.5V10.5003H3.5V8.16699Z" fill="black" />
</svg>
</div>
<div class="priceSum__total">
<span class="priceSum__totalTitle">환불 금액</span>
<div class="priceSum__totalPrice">
<span class="comma"><c:out value="${ reTotAmt.rlRefundAmt }"/></span>
<span class="priceUnit">원</span>
</div>
<div class="priceSum__totalDetail">
(상품금액 <span class="comma"><c:out value="${ reTotAmt.refundAmtQySum }"/></span>원 + 배송비 <span class="comma"><c:out value="${ reTotAmt.rlDlvyAmt }"/></span>원)
</div>
</div>
</div>
</div>
</div>
<!--
<div class="refundProcess">
<ol class="refundProcess__list">
<li class="refundProcess__item">
<span class="refundProcess__num">1</span>
<span class="refundProcess__title">반품/교환 신청</span>
<p class="refundProcess__text">고객님의 반품/교환 신청이<br>접수되었습니다.</p>
</li>
<li class="refundProcess__item">
<span class="refundProcess__num">2</span>
<span class="refundProcess__title">반품/교환 처리중</span>
<p class="refundProcess__text">고객님의 반품을<br>처리중입니다.</p>
</li>
<li class="refundProcess__item">
<span class="refundProcess__num">3</span>
<span class="refundProcess__title">반품/교환 완료</span>
<p class="refundProcess__text">고객님<br>반품이 완료되었습니다.</p>
</li>
</ol>
</div>
-->
<div class="sub-bottom-btn-container">
<button type="button" class="btn xl outline theme" onclick="fn_order_refund_list();">반품 / 환불 목록</button>
</div>
</div>
</div>
</div>
</div>
</main>
<form id="listForm">
<input type="hidden" id="orderRefundInnb" name ="orderRefundInnb"/>
<input type="hidden" id="pageIndex" name="pageIndex" value="${ paramVO.pageIndex }"/>
<input type="hidden" id="recordCountPerPage" name="recordCountPerPage" value="${ paramVO.recordCountPerPage }"/>
<input type="hidden" id="pageUnit" name="pageUnit" value="${ paramVO.pageUnit }"/>
</form>
<%-- 공통 Footer --%>
<jsp:include page="/WEB-INF/views/comm/Footer.jsp"/>
<!-- 모달 -->
<div id="modalDiv">
</div>
</body>
</html>

View File

@@ -0,0 +1,275 @@
<%@ 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"%>
<%--
Class Name : WslistInqireRForm.jsp
Description : 마이페이지 위시리스트
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-02-27 추지훈 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<%-- 공통 include --%>
<jsp:include page="/WEB-INF/views/comm/Include.jsp"/>
</head>
<script>
$(document).ready(function() {
// fn_set_param();
let pageIndex = '<c:out value="${ resultMap.paramVO.pageIndex }"/>';
let pageUnit = '<c:out value="${ resultMap.paramVO.pageUnit }"/>';
fn_select_refund_list(pageIndex, pageUnit);
fn_start_display();
});
/******************************************************************
* 시작 화면 제어
******************************************************************/
const fn_start_display = function() {
/* 검색조건 > 날짜 구간 버튼 클릭 이벤트 */
$('.dateRange-btn').on('click', function() {
const date = $(this).attr('id');
$(this).closest('div').find('#dateRange').val(date);
if ('allDays' === date) {
$('#bgnDt, #endDt').val('');
return false;
}
fn_set_date('bgnDt', 'endDt', 'endDt', date);
});
/* 검색 버튼 클릭 이벤트 */
$('#btnSearch').on('click', function() {
fn_select_refund_list(1);
});
}
/* 검색조건 세팅 */
const fn_set_param = function() {
const params = ${paramVO};
const keys = Object.keys(params);
for (let i = 0; i < keys.length; i++) {
let key = keys[i];
let data = params[key];
if ('bgnDt' == key || 'endDt' == key) {
if (!fn_is_empty(data)) {
for (let i = 0; i < data.length; i++) {
$('#' + key).val(data);
}
}
}
if ('dateRange' == key) {
$('#'+ data).trigger('click');
}
if ('srchwrd' == key) {
$('#' + key).val(data);
}
}
}
/******************************************************************
* 반품/환불 목록 조회
******************************************************************/
const fn_select_refund_list = function(pageIndex, pageUnit) {
let dataStr;
if(!pageIndex) {
$('#pageIndex').val(1);
} else {
$('#pageIndex').val(pageIndex);
}
if(!pageUnit) {
dataStr = $('#listForm').serialize();
} else {
if($('#pageUnit').length){
$('#pageUnit').val(pageUnit);
dataStr = $('#listForm').serialize();
} else {
dataStr = $('#listForm').serialize()+'&pageUnit='+pageUnit;
}
}
$('#pageIndex').val(pageIndex);
$.ajax({
type: "post",
url : '<c:url value="/sopmal/mpage/ordr/selectRtngudCanclRefndInqire"/>',
data : dataStr,
success:function(resultHtml) {
$('#pageDiv').empty();
$('#pageDiv').html(resultHtml);
}
});
}
/****************************************************
* 반품환불 상세 수정폼 이동
*****************************************************/
const fn_move_dtlupdt = function(orderReInnb, ordrInnb) {
$('#listForm').attr('action', '<c:url value="/sopmal/mpage/ordr/selectRtngudCanclRefndDtlInqire"/>');
$('#listForm').attr('method', 'get');
$('#orderReInnb').val(orderReInnb);
$('#ordrInnb').val(ordrInnb);
$('#listForm').submit();
}
/* 주문상세 이동 */
const fn_go_ordr_dtl = function (sopmalCd, ordrInnb) {
var form = $('#listForm');
$(form).append($('<input/>', {type: 'hidden', name: 'sopmalCd', id: 'sopmalCd', value: sopmalCd}));
$('#ordrInnb').val(ordrInnb);
$(form).attr('method', 'get');
$(form).attr('action', '<c:url value="/sopmal/mpage/ordr/selectMbrOrdrDtlInqire"/>');
$(form).submit();
}
</script>
<body>
<%-- 공통 Header --%>
<jsp:include page="/WEB-INF/views/comm/Header.jsp"/>
<!-- 메인 컨텐츠 영역 -->
<main>
<div class="sub-wrapper">
<div class="sub-content">
<div class="sub-rl">
<%-- 마이페이지 Left 영역 --%>
<jsp:include page="/WEB-INF/views/comm/mpage/MypageLeft.jsp"/>
<div class="sub-right-content">
<%-- 마이페이지 Right 영역 --%>
<jsp:include page="/WEB-INF/views/comm/mpage/MypageRight.jsp"/>
<div class="sub-right-content__section">
<h3 class="sub-right-content__title">반품 / 교환 / 취소·환불 </h3>
<form id="listForm">
<input type="hidden" id="orderReInnb" name="orderReInnb" value=""/>
<input type="hidden" id="ordrInnb" name="ordrInnb" value=""/>
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultMap.paramVO.pageIndex}"/>
<input type="hidden" id="pageUnit" name="pageUnit" value="${ resultMap.paramVO.pageUnit}"/>
<div class="customer-search">
<div class="customer-search__row justify-start">
<input type="text" name="srchwrd" id="srchwrd" class="input-text customer-search__search" title="검색어 입력" placeholder="주문번호, 상품명 검색">
</div>
<div class="customer-search__row justify-start">
<div class="customer-search__controls">
<div class="dateRange-btnContainer">
<input type="hidden" name="dateRange" id="dateRange" value="allDays">
<button type="button" class="dateRange-btn" id="7D">일주일</button>
<button type="button" class="dateRange-btn" id="1M">1개월</button>
<button type="button" class="dateRange-btn" id="3M">3개월</button>
<button type="button" class="dateRange-btn selected" id="allDays">전체</button>
</div>
<div class="input-container">
<input type="text" name="bgnDt" id="bgnDt" class="datepicker" title="시작 날짜 선택" autocomplete="off">
<span class="tilde">~</span>
<input type="text" name="endDt" id="endDt" class="datepicker" title="종료 날짜 선택" autocomplete="off">
</div>
</div>
<button type="button" id="btnSearch" class="btn md dark">검색</button>
</div>
</div>
<div class="sub-tab">
<%--
<div class="sub-tab__trigger">
<button class="sub-tab__btn current">전체</button>
<button class="sub-tab__btn">환불</button>
<button class="sub-tab__btn">교환/반품</button>
</div>
--%>
<div id="pageDiv">
</div>
<%--
<div class="sub-tab__content">
2
</div>
<div class="sub-tab__content">
3
</div>
--%>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</main>
<%-- 공통 Footer --%>
<jsp:include page="/WEB-INF/views/comm/Footer.jsp"/>
<!-- 상품 옵션 변경 모달 -->
<div id="goodsOptionDiv">
</div>
<script>
//장바구니 전체선택
$('#cartCheckAll').click(function () {
if ($('#cartCheckAll').is(':checked')) {
$('.cartCheck').prop('checked', true);
} else {
$('.cartCheck').prop('checked', false);
}
});
$('.cartCheck').click(function () {
if ($('.cartCheck').length == $('.cartCheck:checked').length) {
$('#cartCheckAll').prop('checked', true);
} else {
$('#cartCheckAll').prop('checked', false);
}
});
</script>
<!-- 모달 -->
</body>
</html>

View File

@@ -0,0 +1,89 @@
<%@ 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"%>
<%--
Class Name : RtngudCanclRefndListR.jsp
Description : 마이페이지 반품/환불 내역
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-03-27 추지훈 최초 생성
--%>
<div class="sub-tab__content current">
<div class="orderList">
<c:choose>
<c:when test="${ not empty resultMap.resultList && fn:length(resultMap.resultList) > 0 }">
<c:forEach var="refundList" items="${ resultMap.resultList }" varStatus="status">
<div class="orderList__item">
<div class="orderList__item__inner">
<%--
<a href="" class="orderList__image">
<img src="<c:out value="${ refundList.img }"/>" alt="상품 이미지">
</a>
--%>
<a href="<c:url value="/sopmal/goods/selectGoodsDtl?sopmalCd=${refundList.sopmalCd}&goodsInnb=${refundList.goodsInnb}"/>" class="orderList__image">
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.cdnurl')" var="cdnurl"/>
<img src="<c:out value="${ cdnurl }${ refundList.img }"/>" onerror="this.src='/pc/images/image_placeholder.png'" alt="<c:out value="${refundList.goodsNm}"/>">
</a>
<div class="orderList__description">
<div class="orderList__description__first">
<div class="orderList__item__top">
<button class="orderList__orderNum" onclick="fn_go_ordr_dtl('<c:out value="${ refundList.sopmalCd }"/>', '<c:out value="${ refundList.ordrInnb }"/>');">
<c:out value="${ refundList.ordrInnb }"/>
</button>
<c:if test = "${refundList.refundProcsSttusCd eq '03'}">
<span class="orderList__dot">·</span>
<span class="orderList__date">
<c:out value="${ refundList.refundComptDt }"/> 환불완료
</span>
</c:if>
</div>
<button type="button" onclick="fn_move_dtlupdt('<c:out value="${ refundList.orderRefundInnb }"/>', '<c:out value="${ refundList.ordrInnb }"/>');" class="orderList__productTitle"><c:out value="${ refundList.goodsNm }"/></button>
</div>
<div class="orderList__description__second">
<span class="orderList__price">
<span class="comma"><c:out value="${ refundList.refundAmt }"/></span>원
</span>
</div>
<div class="orderList__description__third">
<span class="orderList__refundCategory"><c:out value="${ refundList.refundTyCdNm }"/></span>
</div>
<div class="orderList__description__fourth">
<button type="button" class="orderList__status cancel">
<c:choose>
<c:when test="${ not empty refundList.returnRceptDt }">
<c:out value="${ refundList.returnProcsSttusCdNm }"/>
</c:when>
<c:otherwise>
<c:out value="${ refundList.refundProcsSttusCdNm }"/>
</c:otherwise>
</c:choose>
</button>
</div>
<div class="orderList__btnControls">
<span class="orderList__refundCategory"><c:out value="${ refundList.refundReqstDt }"/></span>
</div>
</div>
</div>
</div>
</c:forEach>
</c:when>
<c:otherwise>
<div class="orderList__no-result">
<img src="<c:url value="/pc/images/icon__no-result.png"/>" alt="">
<p class="orderList__no-result-text">반품/환불내역이 없습니다.</p>
</div>
</c:otherwise>
</c:choose>
</div>
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_refund_list" />
</div>
</div>

View File

@@ -0,0 +1,139 @@
<%@ 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"%>
<%--
Class Name : WslistInqireR.jsp
Description : 마이페이지 위시리스트
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-03-27 추지훈 최초 생성
--%>
<script>
$(document).ready(function() {
//해당 클래스를 가진 요소 3자리 마다 콤마
$(".comma").each(function () {
var text = $(this).text();
$(this).text(text.replace(/(\d)(?=(?:\d{3})+(?!\d))/g, "$1,"));
});
});
</script>
<div class="cartOrder__list">
<div class="table-wrapper">
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.cdnurl')" var="cdnurl"/>
<table class="table vertical">
<caption>해당 테이블에 대한 설명</caption>
<!-- 각 열 width 설정 -->
<colgroup>
<col style="width: auto;">
<col style="width: 140px;">
<col style="width: 20px;">
<col style="width: 200px">
</colgroup>
<tbody id="wishListTbody">
<c:choose>
<c:when test="${ not empty resultMap.resultList && fn:length(resultMap.resultList) > 0 }">
<c:forEach items="${ resultMap.resultList }" var="list" varStatus="status">
<tr>
<td>
<input type="hidden" name="wslistInnb" value="<c:out value="${ list.wslistInnb }"/>"/>
<input type="hidden" name="goodsInnb" value="<c:out value="${ list.goodsInnb }"/>"/>
<div class="cartItem">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox">
<input class="cartCheck" type="checkbox" value="" onclick="fn_ctr_pCheckbox('#cartCheckAll', '.cartCheck');">
<span class="check"></span>
<span class="control-label"></span>
</label>
</div>
<div class="cartItem__image">
<a href="<c:url value="/sopmal/goods/selectGoodsDtl?sopmalCd=${list.sopmalCd}&goodsInnb=${list.goodsInnb}"/>">
<img src="<c:out value="${ cdnurl }${ list.img }"/>" onerror="this.src='/pc/images/image_placeholder.png'" alt="${ list.goodsNm }">
</a>
</div>
<div class="cartItem__productInfo">
<a href="" class="cartItem__productTitle"><c:out value="${ list.goodsNm }"/></a>
<%--
<button type="button" onclick="fn_open_modal('#goodsOptionDiv', '#option-change-popUp', '/sopmal/mpage/ordr/selectGoodsOptnSlcPopup', JSON.stringify({'goodsInnb':${list.goodsInnb}}));"
class="btn xsm outline">옵션선택</button>
--%>
</div>
<%-- <span class="">
판매가 : ${list.orgSlepric }<br>
이벤트 할인 금액 : ${list.evtAditDscntAmt }<br>
상품쿠폰할인 금액 : ${list.gdAditDscntAmt }<br>
상품쿠폰 적용 후 판매금액 : ${list.gdSlepric }<br>
(CT_ADIT_DSCNT_CD) : ${list.ctAditDscntCd }<br>
(CT_ADIT_DSCNT_AMT) : ${list.ctAditDscntAmt }<br>
(CT_DSCNT_MXMM_AMT) : ${list.ctDscntMxmmAmt }<br>
장바구니 할인 금액(RL_CT_ADIT_DSCNT_AMT) : ${list.rlCtAditDscntAmt }<br>
장바구니 후 최종 판매가 : ${list.slepric }<br>
할인율 : ${list.slePercent }
</span>--%>
</div>
</td>
<td>
<span class="cartItem__beforePrice"><span
class="comma"><fmt:parseNumber value="${ list.cnsmrpric }"/></span> 원</span>
<span class="cartItem__afterPrice"><span
class="comma"><fmt:parseNumber value="${ list.slepric }"/></span><span
class="priceUnit"> 원</span></span>
</td>
<td>
</td>
<td>
<c:choose>
<c:when test="${list.goodsSttusCd eq '01'}">
<button class="btn theme md" type="button" onclick="fn_open_addCart_modal('#goodsOptionDiv', '#option-change-popUp', '/sopmal/mpage/ordr/selectGoodsOptnSlcPopup', JSON.stringify({'goodsInnb':${list.goodsInnb}}));">장바구니 담기</button>
</c:when>
<c:otherwise>
<button class="btn theme md" type="button" disabled>${list.goodsSttusNm}</button>
</c:otherwise>
</c:choose>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="4">
<div class="table__no-result">
<img src="/pc/images/icon__no-result.png" alt="">
<p class="table__no-result-text">
위시리스트에 담긴 상품이 없습니다.
</p>
</div>
</td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
<%--
<div class="myWishlist__bottomBtnWrapper">
<button class="btn theme md" type="button" onclick="fn_delete_selectTr();">선택상품 장바구니</button>
</div>
--%>
</div>
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_wish_list" />
</div>

View File

@@ -0,0 +1,925 @@
<%@ 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"%>
<%--
Class Name : WslistInqireRForm.jsp
Description : 마이페이지 위시리스트
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-02-27 추지훈 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<%-- 공통 include --%>
<jsp:include page="/WEB-INF/views/comm/Include.jsp"/>
</head>
<script>
$(document).ready(function() {
let pageIndex = '<c:out value="${ resultMap.paramVO.pageIndex }"/>';
let pageUnit = '<c:out value="${ resultMap.paramVO.pageUnit }"/>';
fn_select_wish_list(pageIndex, pageUnit);
});
//위시리스트 옵션선택 배열
let productArr = [];
/********************************************
* 위시리스트 선택 삭제
********************************************/
const fn_delete_wishlist = function (tbodySltr, pageIndex, pageUnit) {
var $tbody = $(tbodySltr);
let arr = [];
// 체크된 input 찾기
$tbody.find('input[type="checkbox"]:checked').each(function () {
let closestInput = $(this).closest('tr').find('input[name="wslistInnb"]');
let value = closestInput.val();
arr.push(value);
});
if (arr.length > 0) {
if (confirm('상품을 <spring:message code="confirm.common.delete"/>')) {
$.ajax({
type: "post",
url: '<c:url value="/sopmal/mpage/ordr/deleteWslistGoodsDel"/>',
data: {
wslistInnbArr: arr
},
success: function (result) {
alert('<spring:message code="success.common.delete"/>');
fn_select_wish_list(pageIndex, pageUnit);
}
});
}
} else {
alert("삭제할 상품을 선택해 주세요.");
}
};
/************************************************
* 위시리스트 목록 조회
*************************************************/
const fn_select_wish_list = function(pageIndex, pageUnit) {
let dataStr;
if(!pageIndex) {
$('#pageIndex').val(1);
} else {
$('#pageIndex').val(pageIndex);
}
if(!pageUnit) {
dataStr = $('#listForm').serialize();
} else {
if($('#pageUnit').length){
$('#pageUnit').val(pageUnit);
dataStr = $('#listForm').serialize();
} else {
dataStr = $('#listForm').serialize()+'&pageUnit='+pageUnit;
}
}
$('#pageIndex').val(pageIndex);
$.ajax({
type: "post",
url : '<c:url value="/sopmal/mpage/ordr/selectWslistInqire"/>',
data : dataStr,
success:function(resultHtml) {
$('#pageDiv').html(resultHtml);
}
});
}
//인풋 생성함수
const fn_create_input = function (type, name, value, tgtForm) {
const input = document.createElement('input');
input.setAttribute("type", type);
input.setAttribute("name", name);
input.setAttribute("value", value);
tgtForm.appendChild(input);
}
//장바구니 담기 처리
const fn_add_cart = (gubun, data, goodsInnb) => {
const url = "<c:url value="/sopmal/ordr/insertSpbk"/>";
$.ajax({
type: 'post',
enctype: 'multipart/form-data',
url: url,
data: data,
contentType: false,
processData: false,
success: function (data) {
if (data.resBody != null) {
const result = JSON.parse(data.resBody.result);
if (result.result === 'success') {
if (gubun === 'cart') {
fn_cart_modal()
fn_reflesh_cart_cnt();
$('.addCart').prop("disabled", false);
}
if (gubun === 'direct') {
//구매화면 이동
fn_move_purchs_order(goodsInnb);
$('.purchsOrdr').prop('disabled', false);
}
} else {
alert('구매정보 <spring:message code="fail.common.insert"/>');
$('.addCart').prop("disabled", false);
$('.purchsOrdr').prop('disabled', false);
}
}
}
});
}
/*************************************************************
장바구니 목록 이동
**************************************************************/
const fn_move_cart_list = () => {
const form = $('<form></form>');
$(form).append($('<input/>', {type: 'hidden', name: 'cartDvCd', value: $('#cartDv-cart').val()}));
$(form).attr('target', '_self');
$(form).attr('method', 'post');
$(form).attr('action', '<c:url value="/sopmal/ordr/selectSpbk"/>');
$(form).appendTo('body');
//일반옵션 체크 해제
$('input[type="radio"]').prop('checked', false)
$(form).submit();
$(form).remove();
}
//구매하기 클릭 후 구매목록 이동
const fn_move_purchs_order = (goodsInnb) => {
<%--/* 구매하기 버튼 선택 이벤트 */--%>
const form = $('<form></form>');
$(form).append($('<input/>', {type: 'hidden', name: 'goodsInnb', value: goodsInnb}));
$(form).append($('<input/>', {type: 'hidden', name: 'cartDvCd', value: $('#cartDv-direct').val()}));
$(form).attr('method', 'post');
$(form).attr('action', '<c:url value="/sopmal/ordr/selectMbrPurchsForm"/>');
$(form).appendTo('body');
//일반옵션 체크 해제
$('input[type="radio"]').prop('checked', false)
$(form).submit();
$(form).remove();
}
//장바구니 담기 후 모달
const fn_cart_modal = () => {
const modal = `<div id="addCartModalDiv" class="modal alert">
<div class="alert-content">
<p class="alert-content__text--sm">
상품이 장바구니에 담겼습니다.
<br>
지금 확인하시겠습니까?
</p>
</div>
<div class="alert-btn-container">
<a href="javascript:void(0);" onclick="fn_move_cart_list();" rel="modal:close" class="alert-btn alert-btn--confirm">예</a>
<a href="javascript:void(0);" onclick="fn_close_modal('option-change-popUp');" rel="modal:close" class="alert-btn alert-btn--confirm">아니오</a>
</div>
</div>`;
//장바구니 담은 후 페이지 이동 여부 모달
$('#addCartModalDiv').remove()
$('#addCartDiv').html(modal)
$('#addCartModalDiv').modal()
}
//장바구니 버튼 팝업 모달
const fn_open_addCart_modal = function (modalDivSltr, modalSlrt, url, param, callback) {
const submitType = 'POST';
$.ajax({
type: submitType,
contentType: 'application/json',
url: url,
data: param,
success: function (data) {
//callback함수가 없을 경우 default로 지정된 영역에 모달팝업 화면을 교체하고 화면 로딩
if (!callback) {
//이전에 선택한 상품 초기화
productArr = [];
$(modalSlrt).remove();
$(modalDivSltr).html(data);
$(modalSlrt).modal();
} else {
callback(data);
}
}
});
}
//상품 중복 선택 모달
const fn_goods_duplicate_select_modal = () => {
const modal = `<div id="goodsDuplicateModalDiv" class="modal alert">
<div class="alert-content">
<p class="alert-content__text--sm">
중복된 상품입니다.
</p>
</div>
<div class="alert-btn-container">
<a href="javascript:void(0);" rel="modal:close" class="alert-btn alert-btn--confirm">확인</a>
</div>
</div>`;
//재고옵션 옵션 값 초기화
$('select[name="selectInvntryOptn"]').not(':first').each(function() {
$(this).find('option').each(function () {
// value가 빈 문자열이 아닌 경우에만 삭제
if ($(this).val() !== '') {
$(this).remove().niceSelect('update');
}
});
});
$('select[name="selectInvntryOptn"]').val('').niceSelect('update')
//함께하면 좋은상품 옵션 값 초기화
$('select[name="selectRelateInvntryOptn"]').not(':first').each(function() {
$(this).find('option').each(function () {
// value가 빈 문자열이 아닌 경우에만 삭제
if ($(this).val() !== '') {
$(this).remove().niceSelect('update');
}
});
});
//추가구성옵션 옵션 값 초기화
$('select[name="selectAddedOptn"]').val('').niceSelect('update')
$('select[name="selectRelateInvntryOptn"]').val('').niceSelect('update')
$('select[name="selectRelateAddedOptn"]').val('').niceSelect('update')
//모달 처리
$('#goodsDuplicateModalDiv').remove()
$('#goodsDuplicateDiv').html(modal)
$('#goodsDuplicateModalDiv').modal()
}
/*************************************************************
장바구니 버튼
**************************************************************/
$(document).on('click', '.addCart', function () {
$('.addCart').prop("disabled", true);
if($('#hiddenForm') != null){
$('#hiddenForm').remove()
}
//상품 선택 확인
if(productArr.length <= 0){
alert('상품옵션을 선택해 주세요');
$('.addCart').prop("disabled", false);
return;
}
//추가구성옵션 - 필수추가구성옵션 있는지 확인
var values = $('input[name="productDetailInfo__additionalSelect__otpnEssntlAt__relate__added"]').map(function() {
return $(this).val();
}).get();
if(values.includes('Y')){
var isAddedOptnEssntlAt = productArr.some(function (item) {
return item[6] === 'Y'
});
if(!isAddedOptnEssntlAt){
alert('필수추가옵션을 선택해 주세요');
$('.addCart').prop("disabled", false);
return;
}
}
const hiddenForm = document.createElement('form');
hiddenForm.name = 'hiddenForm';
hiddenForm.id = 'hiddenForm';
hiddenForm.method = 'post';
hiddenForm.action = '';
const goodsInnb = $('#addCartGoodsInnb').val();
const cartDvCdCart = $('#cartDv-cart').val();
/**
* 장바구니 담기 전 옵션조회해서 같은 물품 있을 경우 confirm후
* DELETE-INSERT 수행
* */
// 1. 해당 사용자의 모든 장바구니 정보 조회(상품옵션고유번호, 갯수 조회)
$.ajax({
type: 'post',
contentType: 'application/json',
url: '<c:out value="/sopmal/ordr/selectCartList"/>',
data: JSON.stringify({}),
success: async function (data) {
const result = JSON.parse(data.resBody.result)
if(result.message === 'success'){
const resultCartList = result.cartList;
let cartDuplicateOptnAt ='N';
let duplicatedOptn = [];
for(let i = productArr.length - 1; i >= 0; i--){
for(let j = resultCartList.length - 1; j >= 0; j--){
if(parseInt(resultCartList[j].goodsOptnInnb) === parseInt(productArr[i][4])){
//중복된 상품옵션의 기존 수량 + 선택한 수량
let newCartItem = {
...resultCartList[j],
cnt: resultCartList[j].cnt + productArr[i][1]
};
duplicatedOptn.push(newCartItem);
// resultCartList에서 해당 객체 삭제
resultCartList.splice(j, 1);
// productArr에서 해당 배열 삭제
productArr.splice(i, 1);
cartDuplicateOptnAt = 'Y'
break;
}
}
}
//2. 장바구니 중복 확인 결과
if(cartDuplicateOptnAt ==='Y'){
const dupliModal = await showConfirmModal();
if(dupliModal){
//선택한 상품옵션 장바구니 저장
const formData = new FormData();
let idx = 0;
if(productArr.length > 0 ){
for (let product of productArr) {
fn_create_input('hidden', "addCartList[" + idx + "].cartDvCd", cartDvCdCart, hiddenForm);
fn_create_input('hidden', "addCartList[" + idx + "].goodsInnb", goodsInnb, hiddenForm);
fn_create_input('hidden', "addCartList[" + idx + "].qy", product[1], hiddenForm);
fn_create_input('hidden', "addCartList[" + idx + "].goodsOptnInnb", product[4], hiddenForm);
fn_create_input('hidden', "addCartList[" + idx + "].optnTy", product[5], hiddenForm);
idx++;
}
}
let dupliIndex = 0;
//기존 장바구니에 담은 상품 저장
if(resultCartList.length > 0){
for(let resultCartItem of resultCartList){
fn_create_input('hidden', "addCartList[" + idx + "].cartDvCd", resultCartItem.cartDvCd, hiddenForm);
fn_create_input('hidden', "addCartList[" + idx + "].goodsInnb", resultCartItem.goodsInnb, hiddenForm);
fn_create_input('hidden', "addCartList[" + idx + "].qy", resultCartItem.cnt, hiddenForm);
fn_create_input('hidden', "addCartList[" + idx + "].goodsOptnInnb", resultCartItem.goodsOptnInnb, hiddenForm);
fn_create_input('hidden', "addCartList[" + idx + "].optnTy", resultCartItem.optnTy, hiddenForm);
idx++;
}
}
//중복된 상품 옵션 저장
for(let dupliItem of duplicatedOptn){
fn_create_input('hidden', "addCartList[" + idx + "].cartDvCd", dupliItem.cartDvCd, hiddenForm);
fn_create_input('hidden', "addCartList[" + idx + "].goodsInnb", dupliItem.goodsInnb, hiddenForm);
fn_create_input('hidden', "addCartList[" + idx + "].qy", dupliItem.cnt, hiddenForm);
fn_create_input('hidden', "addCartList[" + idx + "].goodsOptnInnb", dupliItem.goodsOptnInnb, hiddenForm);
fn_create_input('hidden', "addCartList[" + idx + "].optnTy", dupliItem.optnTy, hiddenForm);
idx++;
}
//장바구니 중복으로 인한 수정 여부
fn_create_input('hidden', "addCartUptAt", 'Y', hiddenForm);
fn_create_input('hidden', "cartDvCd", $('#cartDv-cart').val(), hiddenForm);
document.body.appendChild(hiddenForm);
$('#hiddenForm').serializeArray().forEach(function (item) {
formData.append(item.name, item.value);
});
fn_add_cart('cart', formData, goodsInnb)
}else{
//장바구니 중복 상품 추가 안할 경우 전체 초기화
productArr = []
$('input[type="radio"]').prop("checked", false)
fn_close_modal('option-change-popUp')
$('.addCart').prop("disabled", false);
}
}else{
//상품 중복옵션 없을 경우 장바구니 저장 진행
const formData = new FormData();
for (let idx in productArr) {
fn_create_input('hidden', "addCartList[" + idx + "].cartDvCd", cartDvCdCart, hiddenForm);
fn_create_input('hidden', "addCartList[" + idx + "].goodsInnb", goodsInnb, hiddenForm);
fn_create_input('hidden', "addCartList[" + idx + "].qy", productArr[idx][1], hiddenForm);
fn_create_input('hidden', "addCartList[" + idx + "].goodsOptnInnb", productArr[idx][4], hiddenForm);
fn_create_input('hidden', "addCartList[" + idx + "].optnTy", productArr[idx][5], hiddenForm);
}
//장바구니 중복으로 인한 수정 여부
fn_create_input('hidden', "addCartUptAt", 'N', hiddenForm);
fn_create_input('hidden', "cartDvCd", $('#cartDv-cart').val(), hiddenForm);
document.body.appendChild(hiddenForm);
$('#hiddenForm').serializeArray().forEach(function (item) {
formData.append(item.name, item.value);
});
fn_add_cart('cart', formData, goodsInnb)
}
}//result success END
}//ajax success END
});//ajax END
})
//장바구니 중복 상품 추가 confirm 모달 버튼 true/false 반환
function showConfirmModal() {
return new Promise(function(resolve, reject) {
<%--상품 중복담기 모달--%>
const modal =`
<div id="modal-error-confirm-add-cart-duplicate" class="modal alert">
<div class="alert-content">
<p class="alert-content__text--sm">
장바구니에 선택한 상품이 있습니다. <br/> 장바구니에 추가하시겠습니까?
</p>
</div>
<div class="alert-btn-container">
<a type="button" class="alert-btn alert-btn--confirm" id="modal-error-confirm-yesButton" rel="modal:close">예</a>
<a type="button" onclick="fn_close_modal('option-change-popUp');" class="alert-btn alert-btn--confirm" id="modal-error-confirm-noButton" rel="modal:close">아니오</a>
</div>
</div>`
$('#modal-error-confirm-add-cart-duplicate').remove()
$('#modal-error-confirm-add-cart-duplicate-div').html(modal)
$('#modal-error-confirm-add-cart-duplicate').modal()
$('#modal-error-confirm-yesButton').one('click', function() {
resolve(true); // 예를 클릭하면 true 반환
});
$('#modal-error-confirm-noButton').one('click', function() {
resolve(false); // 아니오를 클릭하면 false 반환
});
$('#modal-error-confirm-add-cart-duplicate').on('hidden.bs.modal', function () {
resolve(false); // 모달이 닫힐 때 기본적으로 false 반환
});
});
}
//재고옵션 다음 셀렉트 옵션 값 호출
$(document).on('change', 'select[name="selectAddCartInvntryOptn"]', function () {
const id = $(this).attr('id');
let sourceId = id.slice(-1); // 아이디로 셀렉트 옵션 순서 확인
let nextId = (parseInt(sourceId)+1).toString();
const lastId = $('select[name="selectAddCartInvntryOptn"]:last').attr('id')
if($(this).val() === '0'){
return false;
}
const selectOptnVal1 = fn_nvl($('#selectAddCartInvntryOptn1 option:selected').text(),'').replaceAll(' ','').trim()
const selectOptnVal2 = fn_nvl($('#selectAddCartInvntryOptn2 option:selected').text(),'').replaceAll(' ','').trim()
const selectOptnVal3 = fn_nvl($('#selectAddCartInvntryOptn3 option:selected').text(),'').replaceAll(' ','').trim()
const selectOptnVal4 = fn_nvl($('#selectAddCartInvntryOptn4 option:selected').text(),'').replaceAll(' ','').trim()
let optnVal1 = selectOptnVal1 === '선택'?'': selectOptnVal1
let optnVal2 = selectOptnVal2 === '선택'?'': selectOptnVal2
let optnVal3 = selectOptnVal3 === '선택'?'': selectOptnVal3
let optnVal4 = selectOptnVal4 === '선택'?'': selectOptnVal4
switch (sourceId) {
case '1':
optnVal2 = '';
optnVal3 = '';
optnVal4 = '';
$('select[name="selectAddCartInvntryOptn"]').not(':first').each(function() {
$(this).find('option').each(function () {
// value가 빈 문자열이 아닌 경우에만 삭제
if ($(this).val() !== '') {
$(this).remove().niceSelect('update');
}
});
});
$('select[name="selectAddCartInvntryOptn"]').not(':first').val('').niceSelect('update')
break;
case '2':
optnVal3 = '';
optnVal4 = '';
$('select[name="selectAddCartInvntryOptn"]').not(':lt(2)').each(function() {
$(this).find('option').each(function () {
// value가 빈 문자열이 아닌 경우에만 삭제
if ($(this).val() !== '') {
$(this).remove().niceSelect('update');
}
});
});
$('select[name="selectAddCartInvntryOptn"]').not(':lt(2)').val('')
$('select[name="selectAddCartInvntryOptn"]').niceSelect('update')
break;
case '3':
optnVal4 = '';
$('select[name="selectAddCartInvntryOptn"]').not(':lt(3)').each(function() {
$(this).find('option').each(function () {
// value가 빈 문자열이 아닌 경우에만 삭제
if ($(this).val() !== '') {
$(this).remove().niceSelect('update');
}
});
});
$('select[name="selectAddCartInvntryOptn"]').not(':lt(3)').val('')
$('select[name="selectAddCartInvntryOptn"]').niceSelect('update')
break;
}
$.ajax({
type: 'post',
contentType : 'application/json',
url: '/sopmal/goods/selectGoodsOptnInfo',
data: JSON.stringify(
{
'goodsInnb' : $('#addCartGoodsInnb').val()
,'optnTy' : '02'
,'optnVal1' : optnVal1
,'optnVal2' : optnVal2
,'optnVal3' : optnVal3
,'optnVal4' : optnVal4
}
),
success: function (data) {
let str = JSON.parse(data.resBody.result);
if (str.result === 'success') {
//판매가
const slepricDscntAmt = $('#slepricDscntAmt').val()
switch (sourceId){
case '1' :
//1선택하면 서버 요청해서 2번 옵션값 받아옴
//2번에 option에 옵션값 뿌리기
const uniqueData2 = [];
const seenOptnVal2 = new Set();
str.goodsOptnList.forEach(item => {
if (!seenOptnVal2.has(item.optnVal2)){
uniqueData2.push(item);
seenOptnVal2.add(item.optnVal2);
}
});
uniqueData2.forEach(function(option) {
if($('#selectAddCartInvntryOptn'+nextId).attr('id') === lastId){
//재고품절시 노출여부
if(option.invntrySldoutExpsrAt ==='N'){
//옵션 노출 안함
//품절표시
}else if(option.disableAt === 'Y'){
$('#selectAddCartInvntryOptn'+nextId).append($('<option>', {
value: option.slepric+'|'+option.goodsOptnInnb+'|'+option.optnInfo+'|'+option.optnTy,
text: option.optnVal2+ '(+' + addComma((parseInt(option.slepric) - parseInt(slepricDscntAmt))) +')' +'(품절)' ,
disabled: true
}));
}else{
$('#selectAddCartInvntryOptn'+nextId).append($('<option>', {
value: option.slepric+'|'+option.goodsOptnInnb+'|'+option.optnInfo+'|'+option.optnTy,
text: option.optnVal2 + '(+' + addComma((parseInt(option.slepric) - parseInt(slepricDscntAmt))) +')'
}));
}
}else{
//재고품절시 노출여부
if(option.invntrySldoutExpsrAt ==='N'){
//옵션 노출 안함
//품절표시
}else if(option.disableAt === 'Y'){
$('#selectAddCartInvntryOptn'+nextId).append($('<option>', {
value: option.slepric+'|'+option.goodsOptnInnb+'|'+option.optnInfo+'|'+option.optnTy,
text: option.optnVal2+'(품절)',
disabled: true
}));
}else{
$('#selectAddCartInvntryOptn'+nextId).append($('<option>', {
value: option.slepric+'|'+option.goodsOptnInnb+'|'+option.optnInfo+'|'+option.optnTy,
text: option.optnVal2
}));
}
}
});
$('#selectAddCartInvntryOptn'+nextId).niceSelect('update');
break;
case '2' :
const uniqueData3 = [];
const seenOptnVal3 = new Set();
str.goodsOptnList.forEach(item => {
if (!seenOptnVal3.has(item.optnVal3)){
uniqueData3.push(item);
seenOptnVal3.add(item.optnVal3);
}
});
uniqueData3.forEach(function(option) {
if($('#selectAddCartInvntryOptn'+nextId).attr('id') === lastId){
//재고품절시 노출여부
if(option.invntrySldoutExpsrAt ==='N'){
//옵션 노출 안함
//품절표시
}else if(option.disableAt === 'Y'){
$('#selectAddCartInvntryOptn'+nextId).append($('<option>', {
value: option.slepric+'|'+option.goodsOptnInnb+'|'+option.optnInfo+'|'+option.optnTy,
text: option.optnVal3 + '(+' + addComma((parseInt(option.slepric) - parseInt(slepricDscntAmt))) +')' + '(품절)',
disabled: true
}));
}else{
$('#selectAddCartInvntryOptn'+nextId).append($('<option>', {
value: option.slepric+'|'+option.goodsOptnInnb+'|'+option.optnInfo+'|'+option.optnTy,
text: option.optnVal3 + '(+' + addComma((parseInt(option.slepric) - parseInt(slepricDscntAmt))) +')'
}));
}
}else{
//재고품절시 노출여부
if(option.invntrySldoutExpsrAt ==='N'){
//옵션 노출 안함
//품절표시
}else if(option.disableAt === 'Y'){
$('#selectAddCartInvntryOptn'+nextId).append($('<option>', {
value: option.slepric+'|'+option.goodsOptnInnb+'|'+option.optnInfo+'|'+option.optnTy,
text: option.optnVal3+'(품절)',
disabled: true
}));
}else{
$('#selectAddCartInvntryOptn'+nextId).append($('<option>', {
value: option.slepric+'|'+option.goodsOptnInnb+'|'+option.optnInfo+'|'+option.optnTy,
text: option.optnVal3
}));
}
}
});
$('#selectAddCartInvntryOptn'+nextId).niceSelect('update');
break;
case '3' :
const uniqueData4 = [];
const seenOptnVal4 = new Set();
str.goodsOptnList.forEach(item => {
if (!seenOptnVal4.has(item.optnVal4)){
uniqueData4.push(item);
seenOptnVal4.add(item.optnVal4);
}
});
uniqueData4.forEach(function(option) {
if($('#selectAddCartInvntryOptn'+nextId).attr('id') === lastId){
//재고품절시 노출여부
if(option.invntrySldoutExpsrAt ==='N'){
//옵션 노출 안함
//품절표시
}else if(option.disableAt === 'Y'){
$('#selectAddCartInvntryOptn'+nextId).append($('<option>', {
value: option.slepric+'|'+option.goodsOptnInnb+'|'+option.optnInfo+'|'+option.optnTy,
text: option.optnVal4 + '(+' + addComma((parseInt(option.slepric) - parseInt(slepricDscntAmt))) +')' + '(품절)',
disabled: true
}));
}else{
$('#selectAddCartInvntryOptn'+nextId).append($('<option>', {
value: option.slepric+'|'+option.goodsOptnInnb+'|'+option.optnInfo+'|'+option.optnTy,
text: option.optnVal4 + '(+' + addComma((parseInt(option.slepric) - parseInt(slepricDscntAmt))) +')'
}));
}
}else{
//재고품절시 노출여부
if(option.invntrySldoutExpsrAt ==='N'){
//옵션 노출 안함
//품절표시
}else if(option.disableAt === 'Y'){
$('#selectAddCartInvntryOptn'+nextId).append($('<option>', {
value: option.slepric+'|'+option.goodsOptnInnb+'|'+option.optnInfo+'|'+option.optnTy,
text: option.optnVal4 + '(품절)',
disabled: true
}));
}else{
$('#selectAddCartInvntryOptn'+nextId).append($('<option>', {
value: option.slepric+'|'+option.goodsOptnInnb+'|'+option.optnInfo+'|'+option.optnTy,
text: option.optnVal4
}));
}
}
});
$('#selectAddCartInvntryOptn'+nextId).niceSelect('update');
break;
}
//마지막 선택일 경우 셀렉트 기본값으로 되돌림
if(id === lastId){
$('select[name="selectAddCartInvntryOptn"]').not(':first').each(function() {
$(this).find('option').each(function () {
// value가 빈 문자열이 아닌 경우에만 삭제
if ($(this).val() !== '') {
$(this).remove().niceSelect('update');
}
});
});
$('select[name="selectAddCartInvntryOptn"]').val('').niceSelect('update')
}
}
}
});
})
</script>
<body>
<%-- 공통 Header --%>
<jsp:include page="/WEB-INF/views/comm/Header.jsp"/>
<!-- 메인 컨텐츠 영역 -->
<main>
<div class="sub-wrapper">
<div class="sub-content">
<div class="sub-rl">
<%-- 마이페이지 Left 영역 --%>
<jsp:include page="/WEB-INF/views/comm/mpage/MypageLeft.jsp"/>
<div class="sub-right-content">
<%-- 마이페이지 Right 영역 --%>
<jsp:include page="/WEB-INF/views/comm/mpage/MypageRight.jsp"/>
<form id="listForm">
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultMap.paramVO.pageIndex} }"/>
<div class="sub-right-content__section">
<h3 class="sub-right-content__title">위시리스트</h3>
<div class="myWishlist">
<div class="cartOrder__control">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox">
<input type="checkbox" id="cartCheckAll" value="">
<span class="check"></span>
<span class="control-label">전체선택</span>
</label>
</div>
<div class="cartOrder__control__btnContainer">
<button class="btn sm outline" type="button" onclick="fn_delete_wishlist('#wishListTbody', '<c:out value="${ resultMap.paramVO.pageIndex }"/>', '<c:out value="${ resultMap.paramVO.pageUnit }"/>');">선택삭제</button>
</div>
</div>
<div id="pageDiv">
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</main>
<%-- 공통 Footer --%>
<jsp:include page="/WEB-INF/views/comm/Footer.jsp"/>
<!-- 상품 옵션 변경 모달 -->
<div id="goodsOptionDiv">
</div>
<%--장바구니에 선택한 상품 존재시 모달 --%>
<div id="modal-error-confirm-add-cart-duplicate-div"></div>
<script>
//장바구니 전체선택
$('#cartCheckAll').click(function () {
if ($('#cartCheckAll').is(':checked')) {
$('.cartCheck').prop('checked', true);
} else {
$('.cartCheck').prop('checked', false);
}
});
$('.cartCheck').click(function () {
if ($('.cartCheck').length == $('.cartCheck:checked').length) {
$('#cartCheckAll').prop('checked', true);
} else {
$('#cartCheckAll').prop('checked', false);
}
});
</script>
<!-- 모달 -->
<!-- 장바구니 담기-->
<div id = "addCartDiv"></div>
<%--상품 중복선택 모달--%>
<div id = "goodsDuplicateDiv"></div>
</body>
</html>