|
|
@@ -25,168 +25,147 @@
|
|
|
|
|
|
<!-- CONTENT -->
|
|
|
<div class="panelContent">
|
|
|
- <form id="reviewDetailForm" name="reviewDetailForm" action="#" th:action="@{'/marketing/review/save'}" th:method="post" th:object="${reviewInfo}">
|
|
|
+ <form id="reviewDetailForm" name="reviewDetailForm" action="#" th:action="@{'/marketing/review/user/reply/save'}" th:method="post" th:object="${reviewInfo}">
|
|
|
<input type="hidden" name="reviewSq" th:value="*{reviewSq}"/>
|
|
|
|
|
|
- <h4>리뷰 정보</h4>
|
|
|
- <table class="tableStyle" aria-describedby="상담정보">
|
|
|
- <colgroup>
|
|
|
- <col style="width:10%;"/>
|
|
|
- <col style="width:10%;"/>
|
|
|
- <col style="width:12%;"/>
|
|
|
- <col style="width:15%;"/>
|
|
|
- <col/>
|
|
|
-<!-- <col style="width:10%;"/> -->
|
|
|
-<!-- <col style="width:15%;"/> -->
|
|
|
- <col style="width:25%;"/>
|
|
|
- </colgroup>
|
|
|
- <thead>
|
|
|
- <tr>
|
|
|
- <th>상담일련번호</th>
|
|
|
- <th>사이트</th>
|
|
|
- <th>상담분류</th>
|
|
|
- <th>문의일시</th>
|
|
|
- <th>고객정보</th>
|
|
|
-<!-- <th>주문번호</th> -->
|
|
|
-<!-- <th>답변의뢰</th> -->
|
|
|
- <th>답변상태</th>
|
|
|
- </tr>
|
|
|
- </thead>
|
|
|
- <tbody>
|
|
|
- <tr>
|
|
|
- <td th:text="*{counselSq}"></td>
|
|
|
- <td th:text="*{siteNm}"></td>
|
|
|
- <td th:utext="*{counselClsfNm}"></td>
|
|
|
- <td th:text="*{questDt}"></td>
|
|
|
- <td th:utext="*{custNm + ' / ' + cellPhnno + ' / ' + email}"></td>
|
|
|
-<!-- <td th:text="*{relOrdNo}"></td> -->
|
|
|
-<!-- <td th:utext="*{ansTransYn == 'Y' ? ansTransDt + '<br/>' + ansCompNm : ''}"></td> -->
|
|
|
- <td th:utext="*{ansStat == 'G060_20' ? ansStatNm + ' / ' + ansDt + ' / ' + ansNm : ansStatNm}"></td>
|
|
|
- </tr>
|
|
|
- </tbody>
|
|
|
- </table>
|
|
|
-
|
|
|
- <h4>고객문의</h4>
|
|
|
- <table class="frmStyle" aria-describedby="고객문의">
|
|
|
- <colgroup>
|
|
|
- <col style="width:10%;"/>
|
|
|
- <col style="width:50%;"/>
|
|
|
- <col style="width:10%;"/>
|
|
|
- <col/>
|
|
|
- </colgroup>
|
|
|
- <tbody>
|
|
|
- <tr>
|
|
|
- <th>문의 제목</th>
|
|
|
- <td th:text="*{questTitle}"></td>
|
|
|
- <th>SMS답변요청</th>
|
|
|
- <td th:text="*{smsReqYn == 'Y' ? '수신' : '미수신'}"></td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <th>문의 내용</th>
|
|
|
- <td>
|
|
|
- <textarea class="textareaR4" style="resize: none;" name="questContent" th:text="*{questContent}" disabled="disabled"></textarea>
|
|
|
- </td>
|
|
|
- <th>첨부 이미지</th>
|
|
|
- <td class="userImg">
|
|
|
- <img th:if="${counselInfo.sysFileNm1 != null}" style="height: 100px;" th:src="${@environment.getProperty('domain.image') + '/counsel/' + counselInfo.sysFileNm1}" alt="" onerror='this.src="/image/no.gif"'/>
|
|
|
- <img th:if="${counselInfo.sysFileNm2 != null}" style="height: 100px;" th:src="${@environment.getProperty('domain.image') + '/counsel/' + counselInfo.sysFileNm2}" alt="" onerror='this.src="/image/no.gif"'/>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- </tbody>
|
|
|
- </table>
|
|
|
-
|
|
|
- <h4>답변등록</h4>
|
|
|
- <table class="frmStyle" aria-describedby="답변등록">
|
|
|
- <colgroup>
|
|
|
- <col style="width:10%;"/>
|
|
|
- <col style="width:90%;"/>
|
|
|
- </colgroup>
|
|
|
- <tbody>
|
|
|
- <tr>
|
|
|
- <th>답변 템플릿</th>
|
|
|
- <td>
|
|
|
- <select name="ansSq">
|
|
|
- <option value="">[선택]</option>
|
|
|
- <option th:if="${ansPhaseList}" th:each="oneData, statue : ${ansPhaseList}" th:value="${oneData.cd}" th:text="${oneData.cdNm}"></option>
|
|
|
- </select>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <th>답변 제목<i class="required" title="필수" aria-hidden="true"></i></th>
|
|
|
- <td>
|
|
|
- <input type="text" class="" name="ansTitle" th:value="*{ansTitle}" required="required" data-valid-name="답변 제목"/>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <th>
|
|
|
- 답변 내용<i class="required" title="필수" aria-hidden="true"></i>
|
|
|
- <br/>
|
|
|
- <span id="dpLocAnsContent">0</span>/4,000Byte
|
|
|
- </th>
|
|
|
- <td>
|
|
|
- <textarea class="textareaR4" style="resize: none;" name="ansContent" th:text="*{ansContent}" onkeyup="cfnGetTextLength(this, 4000, $('#dpLocAnsContent'));" required="required" data-valid-name="답변 내용"></textarea>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- </tbody>
|
|
|
- </table>
|
|
|
+ <div class="reviewWrap">
|
|
|
+ <div class="user_review">
|
|
|
+ <!-- 상품정보 -->
|
|
|
+ <div class="prodInfo">
|
|
|
+ <div class="prodImg">
|
|
|
+ <img th:src="${@environment.getProperty('upload.goods.view') + '/' + reviewInfo.goodsImg}" onerror="this.src=\'/image/no.gif\';"/>
|
|
|
+ </div>
|
|
|
+ <dl>
|
|
|
+ <dt>상품코드</dt>
|
|
|
+ <dd class="cBk" style="width: 100px;"><strong th:text="*{goodsCd}">ABC123456</strong></dd>
|
|
|
+ <dt>상품명</dt>
|
|
|
+ <dd class="cBk" th:text="*{goodsNm}"></dd>
|
|
|
+ </dl>
|
|
|
+ <dl>
|
|
|
+ <dt>주문번호</dt>
|
|
|
+ <dd class="cBk" style="width: 100px;"><strong th:text="*{ordNo}"></strong></dd>
|
|
|
+ <dt>고객명</dt>
|
|
|
+ <dd class="cBk" style="width: 100px;"><span th:text="*{custNm}"></span> <strong th:text="*{'(' + custNo + ')'}"></strong></dd>
|
|
|
+ <dt>구매옵션</dt>
|
|
|
+ <dd style="width: 100px;">베이지 / 100</dd>
|
|
|
+ </dl>
|
|
|
+ <dl>
|
|
|
+ <dt>고객별점</dt>
|
|
|
+ <dd>
|
|
|
+ <div class="star_score">
|
|
|
+ <span class="star">
|
|
|
+ <em class="progbar" style="width:70%;"></em>
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ </dd>
|
|
|
+ <dt>키/몸무게</dt><dd th:text="*{height + '/' + weight}">178cm/71kg</dd>
|
|
|
+ <dt th:if="*{scoreSize != null}">사이즈</dt><dd th:text="*{scoreSize}">작음</dd>
|
|
|
+ <dt th:if="*{scoreColor != null}">컬러</dt><dd th:text="*{scoreColor}">밝음</dd>
|
|
|
+ <dt th:if="*{scoreFit != null}">핏</dt><dd th:text="*{scoreFit}">레귤러</dd>
|
|
|
+ <dt th:if="*{scoreThick != null}">두께감</dt><dd th:text="*{scoreThick}">적당함</dd>
|
|
|
+ <dt th:if="*{scoreWeight != null}">무게감</dt><dd th:text="*{scoreWeight}"></dd>
|
|
|
+ <dt th:if="*{scoreBall != null}">볼넓이</dt><dd th:text="*{scoreBall}"></dd>
|
|
|
+ </dl>
|
|
|
+ </div>
|
|
|
+ <!-- //상품정보 -->
|
|
|
+
|
|
|
+ <!-- 고객 등록 -->
|
|
|
+ <ul class="rvCont">
|
|
|
+ <!-- 동영상 및 썸네일 이미지 -->
|
|
|
+ <li class="rvPic">
|
|
|
+ <th:block th:if="*{attachList != null}" th:each="oneData, status : *{attachList}">
|
|
|
+ <a href="javascript:void(0);" onclick="vdoOpen()" th:if="${oneData.fileGb == 'M'}">
|
|
|
+ <span class="pic">
|
|
|
+ <iframe th:src="${kollusMediaUrl + '/' + oneData.kmcKey}" width="90px" height="90px"></iframe>
|
|
|
+<!-- <iframe th:src="${kollusMediaUrl + '/' + oneData.kmcKey + '?autoplay&mute'}" width="90px" height="90px"></iframe> -->
|
|
|
+<!-- <i th:style="${'background-image: url(' + kollusMediaUrl + '/' + oneData.kmcKey + ');'}"></i> -->
|
|
|
+ </span>
|
|
|
+ </a>
|
|
|
+ <a href="javascript:void(0);" th:if="${oneData.fileGb == 'I'}">
|
|
|
+ <span class="pic">
|
|
|
+ <i th:style="${'background-image: url(' + @environment.getProperty('upload.default.view') + oneData.sysFileNm + ');'}"></i>
|
|
|
+ </span>
|
|
|
+ </a>
|
|
|
+ </th:block>
|
|
|
+<!-- <a href="javascript:void(0);" onclick="vdoOpen()"><span class="pic mov"><i style="background-image:url(image/@item01.jpg);">업로드 파일</i></span></a> -->
|
|
|
+<!-- <a href="javascript:void(0);"><span class="pic mov"><i style="background-image:url(image/@item01.jpg);">업로드 파일</i></span></a> -->
|
|
|
+<!-- <a href="javascript:void(0);"><span class="pic"><i style="background-image:url(image/@item01.jpg);">업로드 파일</i></span></a> -->
|
|
|
+<!-- <a href="javascript:void(0);"><span class="pic"><i style="background-image:url(image/@item01.jpg);">업로드 파일</i></span></a> -->
|
|
|
+ </li>
|
|
|
+ <!-- //동영상 및 썸네일 -->
|
|
|
+ <li class="rvTxt" th:utext="*{reviewContent}"></li>
|
|
|
+ </ul>
|
|
|
+ <!-- //고객 등록 -->
|
|
|
+
|
|
|
+ <!-- 포인트 지급 정보 -->
|
|
|
+<!-- <dl class="orderInfo"> -->
|
|
|
+<!-- <dt>포인트</dt> -->
|
|
|
+<!-- <dd class="cBk"><strong th:text="*{giveDuePnt}"></strong> <span th:text="*{pntGiveStat}"></span></dd> -->
|
|
|
+<!-- <dt th:if="*{bestYn != null}">베스트포인트</dt> -->
|
|
|
+<!-- <dd class="cBk" th:if="*{bestYn != null}"><strong th:text="*{giveDueBpnt}"></strong> <span th:text="*{bpntGiveYn}"></span></dd> -->
|
|
|
+<!-- </dl> -->
|
|
|
+ <!-- //포인트 지급 정보 -->
|
|
|
+
|
|
|
+ <!-- 관리자 답변 등록 -->
|
|
|
+ <div class="admArea">
|
|
|
+ <i class="fa fa-smile-o" aria-hidden="true"></i> 관리자
|
|
|
+ <strong th:if="*{admRplRegNm != null}" th:text="*{admRplRegNm}"></strong>
|
|
|
+ <span th:if="*{admRplDt != null}" class="date" th:text="*{admRplDt}"></span>
|
|
|
+ </div>
|
|
|
+ <table class="frmStyle">
|
|
|
+ <colgroup>
|
|
|
+ <col width="110px"/>
|
|
|
+ <col/>
|
|
|
+ </colgroup>
|
|
|
+ <tbody>
|
|
|
+ <tr>
|
|
|
+ <th>관리자 답변<br/><span id="dpLocAdmRpt">0</span>/4,000</th>
|
|
|
+ <td>
|
|
|
+ <textarea th:if="*{rplCfmYn != null and rplCfmYn == 'Y'}" class="textareaR3" name="admRpl" th:text="*{admRpl}" disabled="disabled"></textarea>
|
|
|
+ <textarea th:if="*{rplCfmYn == null or rplCfmYn == 'N'}" class="textareaR3" name="admRpl" th:text="*{admRpl}" onkeyup="cfnGetTextLength(this, 4000, $('#dpLocAdmRpt'));"></textarea>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </tbody>
|
|
|
+ </table>
|
|
|
+ <!-- //관리자 답변 등록 -->
|
|
|
+
|
|
|
+ <!-- 버튼 배치 영역 -->
|
|
|
+ <ul class="panelBar" th:if="${reviewInfo.rplCfmYn == 'N'}">
|
|
|
+ <li class="center">
|
|
|
+ <button type="button" class="btn btn-base btn-lg" id="btnSaveReply">저장</button>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ <!-- //버튼 배치 영역 -->
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</form>
|
|
|
</div>
|
|
|
- <!-- //CONTENT -->
|
|
|
-
|
|
|
- <!-- 버튼 배치 영역 -->
|
|
|
- <ul class="panelBar">
|
|
|
- <li class="right">
|
|
|
- <button type="button" class="btn btn-info btn-lg" id="btnSaveAnswer" th:if="${counselInfo.ansStat == 'G060_10'}">답변저장</button>
|
|
|
- </li>
|
|
|
- </ul>
|
|
|
- <!-- //버튼 배치 영역 -->
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<script th:inline="javascript">
|
|
|
/*<![CDATA[*/
|
|
|
- // 답변 저장
|
|
|
- $('#btnSaveAnswer').on('click', function() {
|
|
|
- // 입력 값 체크
|
|
|
- if (!gagajf.validation('#reviewDetailForm'))
|
|
|
+ // 관리자 댓글 저장
|
|
|
+ $('#btnSaveReply').on('click', function() {
|
|
|
+ if (gagajf.isNull($('textarea[name=admRpl]').val())) {
|
|
|
+ mcxDialog.alert("관리자 답변 내용을 입력해 주세요.");
|
|
|
return false;
|
|
|
+ }
|
|
|
|
|
|
mcxDialog.confirm("저장하시겠습니까?", {
|
|
|
cancelBtnText: "취소",
|
|
|
sureBtnText: "확인",
|
|
|
sureBtnClick: function() {
|
|
|
gagajf.ajaxFormSubmit($('#reviewDetailForm').prop('action'), '#reviewDetailForm', function() {
|
|
|
- uifnPopupClose('popupOneToOneQnaDetail');
|
|
|
+ uifnPopupClose('popupReviewDetail');
|
|
|
$('#btnSearch').trigger('click');
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
});
|
|
|
|
|
|
- // 답변템플릿 선택 시
|
|
|
- $('select[name=ansSq]').on('change', function() {
|
|
|
- var ansSq = $(this).val();
|
|
|
-
|
|
|
- if (!gagajf.isNull(ansSq)) {
|
|
|
- var actionUrl = '/customer/qna/answerphase/' + ansSq + '/20';
|
|
|
- $.get(actionUrl
|
|
|
- , function(data) {
|
|
|
- if (!gagajf.isNull(data.ansSq)) {
|
|
|
- $('input[name=ansTitle]').val(data.ansTitle);
|
|
|
- $('textarea[name=ansContent]').val(data.ansContent);
|
|
|
- cfnGetTextLength($('textarea[name=ansContent]'), 4000, $('#dpLocAnsContent'));
|
|
|
- }
|
|
|
- });
|
|
|
- } else {
|
|
|
- // 답변 내용 초기화
|
|
|
- $('input[name=ansTitle]').val('');
|
|
|
- $('textarea[name=ansContent]').val('');
|
|
|
- cfnGetTextLength($('textarea[name=ansContent]'), 4000, $('#dpLocAnsContent'));
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
$(document).ready(function() {
|
|
|
- cfnGetTextLength($('textarea[name=ansContent]'), 4000, $('#dpLocAnsContent'));
|
|
|
+ cfnGetTextLength($('textarea[name=admRpl]'), 4000, $('#dpLocAdmRpt'));
|
|
|
});
|
|
|
/*]]>*/
|
|
|
</script>
|