684 lines
37 KiB
Plaintext
684 lines
37 KiB
Plaintext
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
|
|
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
|
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
|
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
|
|
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
|
|
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui" %>
|
|
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld" %>
|
|
<%--
|
|
Class Name : BbscttRegistPopupC.jsp
|
|
Description : 게시글 등록 팝업 폼
|
|
Modification Information
|
|
|
|
수정일 수정자 수정내용
|
|
------- -------- ---------------------------
|
|
2024-05-09 김혜인 최초 생성
|
|
--%>
|
|
<!DOCTYPE html>
|
|
<html lang="ko">
|
|
<script>
|
|
$(document).ready(function () {
|
|
/*파일 temp 배열 초기화*/
|
|
filesTempArr = [];
|
|
|
|
/*sms 답변 여부에 따른 disabled처리*/
|
|
$("#answSmsRecptn").on("click", function () {
|
|
if ($(this).is(":checked")) {
|
|
$("#answMbtlnb").prop("disabled", false);
|
|
} else {
|
|
$("#answMbtlnb").prop("disabled", true);
|
|
}
|
|
});
|
|
|
|
//내용 텍스트 <br>태그 엔터값으로 replace
|
|
const textarea = $("textarea[name=cn]");
|
|
let cn = textarea.attr("placeholder");
|
|
if (cn) {
|
|
cn = fn_remove_tag(cn);
|
|
textarea.attr("placeholder", cn);
|
|
}
|
|
|
|
fn_set_niceSelect_datePicker("#qna-pop-regist");
|
|
/*휴대전화 포매팅*/
|
|
fn_set_event("#answMbtlnb", "keyup", fn_fmt_telno);
|
|
//분류 change시 hidden value값 set
|
|
$('#qesitmNmC').on('change', 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");
|
|
} else {
|
|
$("#qesitmInnb").val("");
|
|
$("#answCn").val("");
|
|
$("#qesitmNm").val("");
|
|
$("#qesitmAt").val("N");
|
|
}
|
|
});
|
|
|
|
//추가입력 항목 라디오 'click' 이벤트
|
|
$('.answRadioC').on('click', 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'이벤트
|
|
$('.answSelectC').on('change', 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'이벤트
|
|
$('.answChkC').on('click', 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");
|
|
} else {
|
|
check.closest("td").find(".answChkAt").val("N");
|
|
}
|
|
});
|
|
});
|
|
|
|
//추가입력 항목 텍스트 'input'이벤트
|
|
$('.answTxtC').on('input', function () {
|
|
const txt = $(this);
|
|
const contrlTarget = txt.closest(".input-grow-container").find('.answTxt');
|
|
const contrlAt = txt.closest(".input-grow-container").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");
|
|
});
|
|
}
|
|
});
|
|
|
|
//파일 업로드
|
|
$("#fileUpload").on("change", function () {
|
|
addFiles(event, 0);
|
|
});
|
|
|
|
//등록 버튼 이벤트
|
|
$("#regBtn").on("click", function () {
|
|
fn_regist_bbsctt();
|
|
});
|
|
|
|
//등록 완료 모달 > 확인 버튼 이벤트 (새로고침)
|
|
$("#alertBtn").on("click", function () {
|
|
$(".close").each(function () {
|
|
$(this).click();
|
|
});
|
|
/*상품 상세 등록시 qna 목록 재조회*/
|
|
if ($("#listAt").val() === 'list') {
|
|
fn_select_qna(1);
|
|
}else if ($("#listAt").val() === 'm2m') {
|
|
/*1:1 문의*/
|
|
setMenuCode('39','/sopmal/mpage/act/selectM2mQnaInqire?bbsId=mbrqna');
|
|
}
|
|
});
|
|
|
|
});
|
|
|
|
|
|
/*********************************************************
|
|
* 게시글 등록
|
|
*********************************************************/
|
|
if (typeof fn_regist_bbsctt === 'undefined') {
|
|
function fn_regist_bbsctt() {
|
|
let url = '<c:url value="/sopmal/csc/insertBbscttRegist"/>';
|
|
let saveForm = $('#bbsRegForm');
|
|
let formData = new FormData();
|
|
//파일 업로드
|
|
if ($("#contact-dropzone").length > 0) {
|
|
let myDropzone = Dropzone.forElement("#contact-dropzone");
|
|
myDropzone.files.forEach(function (file) {
|
|
formData.append("files", file);
|
|
});
|
|
}
|
|
/*문항 답변 체크박스 disabled*/
|
|
$('.answChk').each(function () {
|
|
if (!$(this).prop('checked')) {
|
|
fn_ctrl_disable([".answChk"],);
|
|
}
|
|
});
|
|
|
|
//여부 N처리
|
|
$('.chkAt').each(function () {
|
|
if (!$(this).prop('checked')) {
|
|
$(this).val("N");
|
|
}
|
|
});
|
|
|
|
//폼 내 input값 append
|
|
saveForm.serializeArray().forEach(function (item) {
|
|
formData.append(item.name, item.value);
|
|
});
|
|
|
|
//사용자 등록 시 노출 여부 Y
|
|
formData.append("expsrAt", "Y");
|
|
disableButton("#regBtn");
|
|
if (confirm('게시글을 <spring:message code="confirm.common.insert"/>')) {
|
|
$.ajax({
|
|
type: 'post',
|
|
url: url,
|
|
enctype: "multipart/form-data",
|
|
data: formData,
|
|
processData: false,
|
|
contentType: false,
|
|
success: function (result) {
|
|
console.log(result);
|
|
enableButton("#regBtn");
|
|
$("#resultAlert").text("<spring:message code="success.common.insert"/>");
|
|
$("#result-alert-regist").modal();
|
|
}
|
|
});
|
|
}
|
|
fn_ctrl_disable("", [".checkbox"]);
|
|
enableButton("#regBtn");
|
|
}
|
|
}
|
|
/*상품qna 버튼 클릭 제어*/
|
|
if (typeof fn_prevent_click === 'undefined') {
|
|
function fn_prevent_click(event){
|
|
event.preventDefault(); // 체크박스 상태 변경 방지
|
|
}
|
|
}
|
|
</script>
|
|
<style>
|
|
.refund-clause {
|
|
border: 1px solid #e9ecef;
|
|
padding: clamp(12px, 3%, 18px);
|
|
margin-bottom: 16px;
|
|
overflow: scroll;
|
|
max-height: 170px;
|
|
}
|
|
</style>
|
|
<body>
|
|
<c:set value="${resultMap.clauseList}" var="clauseList"/>
|
|
<c:set value="${resultMap.regusrInfo}" var="regusrInfo"/>
|
|
<c:set value="${resultMap.bbscttVO}" var="bbscttVO"/>
|
|
<c:set value="${resultMap.bbsInfo}" var="bbsInfo"/>
|
|
<c:set value="${resultMap.qnaGoodsInfo}" var="qnaGoodsInfo"/>
|
|
<c:set value="${resultMap.qesitmList.qesitmList}" var="qesitmList"/>
|
|
<c:set value="${resultMap.qesitmList.itmCnList}" var="itmCnList"/>
|
|
<c:set value="${resultMap.itmList}" var="itmList"/>
|
|
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.extensions.images')"
|
|
var="acceptFileExtensions"/><%--허용파일확장자--%>
|
|
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.cdnurl')" var="cdnurl"/><%--이미지경로--%>
|
|
<div id="qna-pop-regist" class="modal default" style="max-width: 720px;">
|
|
<div class="modal-header">
|
|
<div class="modal-header__title"><c:out value='${bbsInfo.bbsNm}'/></div>
|
|
</div>
|
|
<div class="modal-content">
|
|
<div class="table-wrapper">
|
|
<form id="bbsRegForm">
|
|
<input type='hidden' name='bbsTyCd' id='bbsTyCd' value='<c:out value="${bbsInfo.bbsTyCd}"/>'>
|
|
<c:if test="${bbsInfo.bbsTyCd eq '12'}">
|
|
<div class="refund-clause ck-content">
|
|
<c:out value="${clauseList[0].stplatNm}" escapeXml="false"/>
|
|
<br><br>
|
|
<c:out value="${clauseList[0].stplatCn}" escapeXml="false"/>
|
|
</div>
|
|
</c:if>
|
|
<table class="table write">
|
|
<caption>게시글 등록</caption>
|
|
<colgroup>
|
|
<col style="width: 200px;">
|
|
<col style="width: auto;">
|
|
</colgroup>
|
|
<tbody>
|
|
<tr>
|
|
<th>이름<span class="required-asterisk">*</span></th>
|
|
<td>
|
|
<c:choose>
|
|
<c:when test="${regusrInfo.regusrDvCd eq '99'}">
|
|
<input type="text" class="input-text lg" name="regusrNm" title="작성자명"
|
|
placeholder="이름">
|
|
</c:when>
|
|
<c:otherwise>
|
|
<div class="td-inner"><c:out value='${regusrInfo.regusrNm}'/></div>
|
|
<input type="hidden" name="regusrNm"
|
|
value="<c:out value='${regusrInfo.regusrNm}'/>">
|
|
</c:otherwise>
|
|
</c:choose>
|
|
</td>
|
|
</tr>
|
|
<%-- 1:1 문의--%>
|
|
<c:if test="${bbsInfo.bbsTyCd eq '12'}">
|
|
<tr>
|
|
<th>주문번호<span class="required-asterisk">*</span></th>
|
|
<td><c:out value="${bbscttVO.ordrInnb}"/><input type='hidden' name='ordrInnb' value='<c:out value="${bbscttVO.ordrInnb}"/>'></td>
|
|
</tr>
|
|
</c:if>
|
|
<c:if test="${bbsInfo.answRegist eq 'Y'&& bbsInfo.bbscttSndngMthCd ne '03'}"><%--답변사용여부와 게시글 문자사용여부 체크--%>
|
|
<tr>
|
|
<th>답변수신</th>
|
|
<td>
|
|
<div class="td-inner">
|
|
<c:if test="${empty regusrInfo.answMbtlnb}">
|
|
<input type="text" class="input-text" id="answMbtlnb" name="answMbtlnb"
|
|
placeholder="핸드폰번호'-'없이" title="답변핸드폰번호" maxlength="13">
|
|
</c:if>
|
|
<div class="input-container">
|
|
<label class="b-checkbox checkbox">
|
|
<input type="checkbox" name="answSmsRecptn" value="Y" id="answSmsRecptn"
|
|
checked>
|
|
<span class="check"></span>
|
|
<span class="control-label">SMS 알림요청</span>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</c:if>
|
|
<c:if test="${not empty itmList}">
|
|
<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"/>
|
|
<%--답변내용 --%>
|
|
<input type="hidden" name="answCnArr[]" id="answCn"/>
|
|
<%--답변여부 --%>
|
|
<input type="hidden" name="qesitmAtArr[]" id="qesitmAt" value="N">
|
|
<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:out value="${itm.itmCn}"/>
|
|
</option>
|
|
</c:forEach>
|
|
</select><br/><br/><span style="color: #f03e3e;">(반품문의 시 이미지를 반드시 첨부해 주세요)</span>
|
|
</div>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</c:if>
|
|
<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"
|
|
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>
|
|
</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}">
|
|
<option value="${ itmCnList2.itmInnb }"
|
|
itm-cn="${ itmCnList2.itmCn}"
|
|
qesitm-innb='${itmCnList2.qesitmInnb}'>${ 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 }">
|
|
<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}">
|
|
<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="input-text lg answTxtC"
|
|
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>
|
|
</td>
|
|
</c:if>
|
|
</tr>
|
|
</c:forEach>
|
|
</c:if>
|
|
<c:if test="${bbsInfo.bbsTyCd eq '05'}">
|
|
<tr>
|
|
<th>문의상품</th>
|
|
<td>
|
|
<img src="<c:out value = '${cdnurl}${qnaGoodsInfo.img}'/>" alt="qnaGoods">
|
|
<br>
|
|
<span><c:out value='${qnaGoodsInfo.goodsNm}'/></span>
|
|
<input type="hidden" name="goodsInnbArr[]" value="${qnaGoodsInfo.goodsInnb}"/>
|
|
</td>
|
|
</tr>
|
|
</c:if>
|
|
<tr>
|
|
<th>제목<span class="required-asterisk">*</span></th>
|
|
<td>
|
|
<div class="td-inner">
|
|
<div class="input-grow-container">
|
|
<input class="input-text xl" type="text" title="제목 입력란" name="sj"
|
|
placeholder="제목을 입력하세요." maxlength="100">
|
|
<%--게시판설정(비밀글사용여부)--%>
|
|
<c:if test="${bbsInfo.secretBbsctt eq 'Y'}">
|
|
<div class="b-checkbox-container">
|
|
<label class="b-checkbox checkbox">
|
|
<input type="checkbox" value="Y" name="secretBbscttAt" class="chkAt"
|
|
checked<c:if test="${bbsInfo.bbsTyCd eq '05' || bbsInfo.bbsTyCd eq '12'}"> onclick="fn_prevent_click(event);"</c:if>>
|
|
<span class="check"></span>
|
|
<span class="control-label">비밀글</span>
|
|
</label>
|
|
</div>
|
|
</c:if>
|
|
</div>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<c:if test="${regusrInfo.regusrDvCd eq '99'}">
|
|
<tr>
|
|
<th>비밀번호<span class="required-asterisk">*</span></th>
|
|
<td>
|
|
<div class="td-inner">
|
|
<input class="input-text lg" type="password"
|
|
title="비밀번호 입력란"
|
|
name="password" maxlength='20'
|
|
placeholder="비밀번호를 입력하세요." value="">
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</c:if>
|
|
<tr>
|
|
<th>내용</th>
|
|
<td>
|
|
<textarea class="textarea" rows="12" title="내용 입력란" name="cn"
|
|
placeholder="<c:out value = "${bbsInfo.dftCn}"/>"></textarea>
|
|
</td>
|
|
</tr>
|
|
<%--게시판설정(파일첨부사용여부)--%>
|
|
<input type="hidden" value="<c:out value = '${bbsInfo.filAtch}'/>" name="filAtch">
|
|
<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>등록 가능 파일은 <c:out value="${acceptFileExtensions}"/> 파일만 가능합니다.</li>
|
|
<li>상품과 무관한 내용이거나 음란 불법적인 내용은 통보없이 삭제할 수 있습니다.</li>
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
</c:if>
|
|
</tbody>
|
|
</table>
|
|
<input type="hidden" id="listAt" value="<c:out value = '${bbscttVO.listAt}'/>" name="listAt"/>
|
|
<input type="hidden" id="sopmalCd" value="<c:out value = '${bbscttVO.sopmalCd}'/>" name="sopmalCd"/>
|
|
<input type="hidden" id="bbsId" value="<c:out value = '${bbsInfo.bbsId}'/>" name="bbsId"/>
|
|
<input type="hidden" id="bbsNm" value="<c:out value = '${bbsInfo.bbsNm}'/>" name="bbsNm"/>
|
|
<input type="hidden" id="regusrDvCd" value="<c:out value = '${regusrInfo.regusrDvCd}'/>"
|
|
name="regusrDvCd"/>
|
|
<input type="hidden" id="bbscttSndngMthCd" value="<c:out value = '${bbsInfo.bbscttSndngMthCd}'/>"
|
|
name="bbscttSndngMthCd"/>
|
|
<input type="hidden" name="acceptFileExtensions" id="acceptFileExtensions"
|
|
value="${acceptFileExtensions}"/>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<a href="#" rel="modal:close" class="btn large outline close"><spring:message code="button.close"/></a>
|
|
<button class="btn large gray2" id="regBtn"><spring:message code="button.insert"/></button>
|
|
</div>
|
|
</div>
|
|
|
|
<!--등록결과모달-->
|
|
<div id="result-alert-regist" class="modal alert">
|
|
<div class="alert-content">
|
|
<p class="alert-content__text--sm">
|
|
<spring:message code="success.common.insert"/>
|
|
</p>
|
|
</div>
|
|
<div class="alert-btn-container">
|
|
<button class="alert-btn alert-btn--confirm" id="alertBtn"><spring:message code="button.ok"/></button>
|
|
</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: "서버에서 응답을 받지 못했습니다.",
|
|
});
|
|
|
|
var inputElement = $('input[type="file"].dz-hidden-input');
|
|
if(inputElement.length > 1){
|
|
inputElement.eq(0).remove();
|
|
}
|
|
// 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");
|
|
});
|
|
myDropzone.on("removedfile", function(file) {
|
|
if (myDropzone.files.length < maxFiles) {
|
|
$(".dz-message").show();
|
|
}
|
|
});
|
|
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> |