fix : 쇼핑몰 구독서비스 - 구독서비스 정보 조건부 숨김처리
fix : 관리자 구독서비스 수정 - 기본&판매정보 입력값 0 허용, 재고정책 변경 시 판매가능 재고수량 초기화
This commit is contained in:
@@ -42,6 +42,8 @@ private static final long serialVersionUID = 1L;
|
|||||||
private String invntryQy;
|
private String invntryQy;
|
||||||
/** 판매재고수량 */
|
/** 판매재고수량 */
|
||||||
private String usefulInvntryQy;
|
private String usefulInvntryQy;
|
||||||
|
/** 판매수량 초기화여부*/
|
||||||
|
private String usefulInvntryQyInit;
|
||||||
/** 재고정책 */
|
/** 재고정책 */
|
||||||
private String invntryPolicyCd;
|
private String invntryPolicyCd;
|
||||||
/** 가용재고제한수량 */
|
/** 가용재고제한수량 */
|
||||||
|
|||||||
@@ -201,6 +201,9 @@
|
|||||||
, CNSMRPRIC = REPLACE(#{cnsmrpric},',','')
|
, CNSMRPRIC = REPLACE(#{cnsmrpric},',','')
|
||||||
, INVNTRY_QY = REPLACE(#{invntryQy},',','')
|
, INVNTRY_QY = REPLACE(#{invntryQy},',','')
|
||||||
, INVNTRY_POLICY_CD = #{invntryPolicyCd}
|
, INVNTRY_POLICY_CD = #{invntryPolicyCd}
|
||||||
|
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(usefulInvntryQyInit, 'Y')">
|
||||||
|
, USEFUL_INVNTRY_QY = 0
|
||||||
|
</if>
|
||||||
, AVLINV_LMTT_QY = #{avlinvLmttQy}
|
, AVLINV_LMTT_QY = #{avlinvLmttQy}
|
||||||
, SUBSVC_STTUS_CD = #{subsvcSttusCd}
|
, SUBSVC_STTUS_CD = #{subsvcSttusCd}
|
||||||
, EXPSR_DV_CD = #{expsrDvCd}
|
, EXPSR_DV_CD = #{expsrDvCd}
|
||||||
|
|||||||
@@ -194,6 +194,10 @@
|
|||||||
tgtForm.appendChild(input);
|
tgtForm.appendChild(input);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const fn_remove_input = function (name, tftForm) {
|
||||||
|
$(tftForm).find('input[name="' + name + '"]').remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ********************************************************
|
/* ********************************************************
|
||||||
* 리스트 바로가기
|
* 리스트 바로가기
|
||||||
@@ -309,15 +313,16 @@
|
|||||||
|
|
||||||
// 텍스트 입력 내용중 필수 항목 체크
|
// 텍스트 입력 내용중 필수 항목 체크
|
||||||
$(':text[required]').each(function () {
|
$(':text[required]').each(function () {
|
||||||
|
const inputVal = $(this).val().trim();
|
||||||
if($(this).hasClass('number')){
|
if($(this).hasClass('number')){
|
||||||
if ($(this).val().trim() == '' || $(this).val().trim() == '0') {
|
if (inputVal == '' || inputVal == '0' && !$(this).hasClass('allow-zero')) {
|
||||||
alert($(this).prop('title')+"은(는) 필수입니다");
|
alert($(this).prop('title')+"은(는) 필수입니다");
|
||||||
$(this).focus();
|
$(this).focus();
|
||||||
retVal = false;
|
retVal = false;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
if ($(this).val().trim() == '') {
|
if (inputVal == '') {
|
||||||
alert($(this).prop('title')+"은(는) 필수입니다");
|
alert($(this).prop('title')+"은(는) 필수입니다");
|
||||||
$(this).focus();
|
$(this).focus();
|
||||||
retVal = false;
|
retVal = false;
|
||||||
@@ -362,8 +367,12 @@
|
|||||||
$('#expsrEndDt').val('');
|
$('#expsrEndDt').val('');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//선택한 재고정책
|
||||||
|
const choiceInvntryPolicyCd = $('input[name="invntryPolicyCd"]:checked').val()
|
||||||
|
const prevInvntryPolicyCd = $('#invntryPolicyCdAsIs').val()
|
||||||
|
|
||||||
//재고가 있으면 판매인 경우 개수 품절처리 필수
|
//재고가 있으면 판매인 경우 개수 품절처리 필수
|
||||||
if($('input[name="invntryPolicyCd"]:checked').val() == '01'){
|
if(choiceInvntryPolicyCd == '01'){
|
||||||
if($('#avlinvLmttQy').val() == ''){
|
if($('#avlinvLmttQy').val() == ''){
|
||||||
alert($('#avlinvLmttQy').prop('title')+"은(는) 노출여부가 노출예약인 경우 필수입니다");
|
alert($('#avlinvLmttQy').prop('title')+"은(는) 노출여부가 노출예약인 경우 필수입니다");
|
||||||
$('#avlinvLmttQy').focus();
|
$('#avlinvLmttQy').focus();
|
||||||
@@ -371,6 +380,13 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//재고에 따른 판매(재고정책)가 수정되었을 경우
|
||||||
|
fn_remove_input('usefulInvntryQyInit', $("#subsvcForm")[0]);
|
||||||
|
if(choiceInvntryPolicyCd !== prevInvntryPolicyCd){
|
||||||
|
alert('재고정책 변경에 따라 판매가능재고수량을 초기화합니다.');
|
||||||
|
fn_create_input('hidden', 'usefulInvntryQyInit','Y', $("#subsvcForm")[0]);
|
||||||
|
}
|
||||||
|
|
||||||
//이미지 필수 체크
|
//이미지 필수 체크
|
||||||
if((($('#delImg').val() != '' || $('#img').val() == '') && imgDropzone.files.length != 1)){
|
if((($('#delImg').val() != '' || $('#img').val() == '') && imgDropzone.files.length != 1)){
|
||||||
if(imgDropzone.files.length == 0){
|
if(imgDropzone.files.length == 0){
|
||||||
@@ -487,6 +503,7 @@
|
|||||||
<input type="hidden" id="delImg" name="delImg" value="">
|
<input type="hidden" id="delImg" name="delImg" value="">
|
||||||
<input type="hidden" id="expsrBgnDt" name="expsrBgnDt" value="${resultMap.subsvcDtl.expsrBgnDt}">
|
<input type="hidden" id="expsrBgnDt" name="expsrBgnDt" value="${resultMap.subsvcDtl.expsrBgnDt}">
|
||||||
<input type="hidden" id="expsrEndDt" name="expsrEndDt" value="${resultMap.subsvcDtl.expsrEndDt}">
|
<input type="hidden" id="expsrEndDt" name="expsrEndDt" value="${resultMap.subsvcDtl.expsrEndDt}">
|
||||||
|
<input type="hidden" id="invntryPolicyCdAsIs" value="${resultMap.subsvcDtl.invntryPolicyCd}">
|
||||||
<input type="hidden" id="usefulInvntryQy" name="usefulInvntryQy" value="${resultMap.subsvcDtl.usefulInvntryQy}">
|
<input type="hidden" id="usefulInvntryQy" name="usefulInvntryQy" value="${resultMap.subsvcDtl.usefulInvntryQy}">
|
||||||
<spring:eval expression="@environment.getProperty('spring.servlet.multipart.max-file-size')" var="maxFileSize"/>
|
<spring:eval expression="@environment.getProperty('spring.servlet.multipart.max-file-size')" var="maxFileSize"/>
|
||||||
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.extensions.images')" var="acceptFileExtensions"/>
|
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.extensions.images')" var="acceptFileExtensions"/>
|
||||||
@@ -519,7 +536,7 @@
|
|||||||
<th>구독기간<span class="red-7">*</span></th>
|
<th>구독기간<span class="red-7">*</span></th>
|
||||||
<td>
|
<td>
|
||||||
<div class="td-inner">
|
<div class="td-inner">
|
||||||
<input class="input-text xsm number text-right" type="text" title="구독기간" id="subPd" name="subPd" maxlength="3" value="${resultMap.subsvcDtl.subPd}" required> 개월
|
<input class="input-text xsm number text-right allow-zero" type="text" title="구독기간" id="subPd" name="subPd" maxlength="3" value="${resultMap.subsvcDtl.subPd}" required> 개월
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -541,7 +558,7 @@
|
|||||||
<th>배송횟수<span class="red-7">*</span></th>
|
<th>배송횟수<span class="red-7">*</span></th>
|
||||||
<td>
|
<td>
|
||||||
<div class="td-inner">
|
<div class="td-inner">
|
||||||
<input class="input-text xsm number text-right" type="text" title="배송횟수" id="dlvyCnt" name="dlvyCnt" maxlength="3" value="${resultMap.subsvcDtl.dlvyCnt}" required> 회
|
<input class="input-text xsm number text-right allow-zero" type="text" title="배송횟수" id="dlvyCnt" name="dlvyCnt" maxlength="3" value="${resultMap.subsvcDtl.dlvyCnt}" required> 회
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<th>배송주기<span class="red-7">*</span></th>
|
<th>배송주기<span class="red-7">*</span></th>
|
||||||
@@ -576,13 +593,13 @@
|
|||||||
<th>구독료<span class="red-7">*</span></th>
|
<th>구독료<span class="red-7">*</span></th>
|
||||||
<td>
|
<td>
|
||||||
<div class="td-inner">
|
<div class="td-inner">
|
||||||
<input class="input-text sm number text-right" type="text" title="구독료" id="subsvcCt" name="subsvcCt" maxlength="11" value="${resultMap.subsvcDtl.subsvcCt}" required> 円(엔)
|
<input class="input-text sm number text-right allow-zero" type="text" title="구독료" id="subsvcCt" name="subsvcCt" maxlength="11" value="${resultMap.subsvcDtl.subsvcCt}" required> 円(엔)
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<th>1회 배송비<span class="red-7">*</span></th>
|
<th>1회 배송비<span class="red-7">*</span></th>
|
||||||
<td>
|
<td>
|
||||||
<div class="td-inner">
|
<div class="td-inner">
|
||||||
<input class="input-text sm number text-right" type="text" title="1회 배송비" id="tmeDlvyAmt" name="tmeDlvyAmt" maxlength="11" value="${resultMap.subsvcDtl.tmeDlvyAmt}" required> 円(엔)
|
<input class="input-text sm number text-right allow-zero" type="text" title="1회 배송비" id="tmeDlvyAmt" name="tmeDlvyAmt" maxlength="11" value="${resultMap.subsvcDtl.tmeDlvyAmt}" required> 円(엔)
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -596,7 +613,7 @@
|
|||||||
<th>실판매가<span class="red-7">*</span></th>
|
<th>실판매가<span class="red-7">*</span></th>
|
||||||
<td>
|
<td>
|
||||||
<div class="td-inner">
|
<div class="td-inner">
|
||||||
<input class="input-text sm number text-right" type="text" title="실판매가" id="selpric" name="selpric" maxlength="11" value="${resultMap.subsvcDtl.selpric}" readonly> 円(엔)
|
<input class="input-text sm number text-right allow-zero" type="text" title="실판매가" id="selpric" name="selpric" maxlength="11" value="${resultMap.subsvcDtl.selpric}" required readonly> 円(엔)
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -631,7 +648,7 @@
|
|||||||
<th>가용재고</th>
|
<th>가용재고</th>
|
||||||
<td>
|
<td>
|
||||||
<div class="td-inner">
|
<div class="td-inner">
|
||||||
<input class="input-text sm number text-right" type="text" title="가용재고" id="availQt" maxlength="11" value="${resultMap.subsvcDtl.availQt}" readonly>
|
<input class="input-text sm text-right" type="text" title="가용재고" id="availQt" maxlength="11" value="${resultMap.subsvcDtl.availQt}" readonly>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
@@ -57,6 +57,7 @@
|
|||||||
$('#selpric').text(fn_format_number(data.selpric) + curUnit);
|
$('#selpric').text(fn_format_number(data.selpric) + curUnit);
|
||||||
$('#dscntRaito').text(data.dscntRaito + '%');
|
$('#dscntRaito').text(data.dscntRaito + '%');
|
||||||
$('#subsvcDc').html(data.subsvcDc);
|
$('#subsvcDc').html(data.subsvcDc);
|
||||||
|
fn_hide_subsvcDetail(data.subPd, data.dlvyCnt, data.selpric);
|
||||||
|
|
||||||
$("#fixedImg").attr("src", cdnurl + data.img);
|
$("#fixedImg").attr("src", cdnurl + data.img);
|
||||||
$('#fixedTitle').text(data.subsvcConcatNm);
|
$('#fixedTitle').text(data.subsvcConcatNm);
|
||||||
@@ -83,6 +84,25 @@
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/******************************************************
|
||||||
|
* 구독서비스 상세 숨기기
|
||||||
|
* ****************************************************/
|
||||||
|
const fn_hide_subsvcDetail = function(subPd, dlvyCnt, selpric) {
|
||||||
|
function isEmpty(val) {
|
||||||
|
return !val || val === 0;
|
||||||
|
}
|
||||||
|
function hideIf(condition, find, base) {
|
||||||
|
let target = base ? $(base).closest(find) : $(find);
|
||||||
|
$(target).toggle(!condition);
|
||||||
|
}
|
||||||
|
|
||||||
|
hideIf(isEmpty(subPd), 'li', '#subPd');
|
||||||
|
hideIf(isEmpty(dlvyCnt), 'li', '#dlvyCnt');
|
||||||
|
hideIf(isEmpty(subPd) && isEmpty(dlvyCnt), '.box', '#subPd');
|
||||||
|
hideIf(isEmpty(selpric), '.box', '#selpric');
|
||||||
|
hideIf(isEmpty(selpric), '#fixedButton');
|
||||||
|
}
|
||||||
|
|
||||||
/*************************************************************
|
/*************************************************************
|
||||||
구매하기 버튼
|
구매하기 버튼
|
||||||
**************************************************************/
|
**************************************************************/
|
||||||
|
|||||||
@@ -51,6 +51,7 @@
|
|||||||
$('#subsvcDc').html(
|
$('#subsvcDc').html(
|
||||||
data.mblSubsvcDcPcSameAt === "N" ? data.mblSubsvcDc : data.subsvcDc
|
data.mblSubsvcDcPcSameAt === "N" ? data.mblSubsvcDc : data.subsvcDc
|
||||||
);
|
);
|
||||||
|
fn_hide_subsvcDetail(data.subPd, data.dlvyCnt, data.selpric);
|
||||||
|
|
||||||
switch (data.subsvcSttusCd) {
|
switch (data.subsvcSttusCd) {
|
||||||
case '01':
|
case '01':
|
||||||
@@ -72,6 +73,25 @@
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/******************************************************
|
||||||
|
* 구독서비스 상세 숨기기
|
||||||
|
* ****************************************************/
|
||||||
|
const fn_hide_subsvcDetail = function(subPd, dlvyCnt, selpric) {
|
||||||
|
function isEmpty(val) {
|
||||||
|
return !val || val === 0;
|
||||||
|
}
|
||||||
|
function hideIf(condition, find, base) {
|
||||||
|
let target = base ? $(base).closest(find) : $(find);
|
||||||
|
$(target).toggle(!condition);
|
||||||
|
}
|
||||||
|
|
||||||
|
hideIf(isEmpty(subPd), 'dl', '#subPd');
|
||||||
|
hideIf(isEmpty(dlvyCnt), 'dl', '#dlvyCnt');
|
||||||
|
hideIf(isEmpty(subPd) && isEmpty(dlvyCnt), '.productDetailInfo__info');
|
||||||
|
hideIf(isEmpty(selpric), '.productDetailInfo__price');
|
||||||
|
hideIf(isEmpty(selpric), '#subscribeBtn');
|
||||||
|
}
|
||||||
|
|
||||||
/*************************************************************
|
/*************************************************************
|
||||||
구매하기 버튼
|
구매하기 버튼
|
||||||
**************************************************************/
|
**************************************************************/
|
||||||
@@ -105,6 +125,11 @@
|
|||||||
padding: 16px;
|
padding: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.productDetailInfo__info > dl > dt,
|
||||||
|
.productDetailInfo__info > dl > dd {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
#subsvcDc {
|
#subsvcDc {
|
||||||
padding: clamp(12px, 3%, 18px);
|
padding: clamp(12px, 3%, 18px);
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
@@ -147,9 +172,6 @@
|
|||||||
<span id="dscntRaito" class="percent" style="color: red">%</span>
|
<span id="dscntRaito" class="percent" style="color: red">%</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="subsvcDc" class="ck-content">
|
|
||||||
구독 서비스 상품 설명
|
|
||||||
</div>
|
|
||||||
<div class="productDetailInfo__info">
|
<div class="productDetailInfo__info">
|
||||||
<dl>
|
<dl>
|
||||||
<dt>구독기간</dt>
|
<dt>구독기간</dt>
|
||||||
@@ -170,6 +192,9 @@
|
|||||||
</dd>
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
</div>
|
</div>
|
||||||
|
<div id="subsvcDc" class="ck-content">
|
||||||
|
구독 서비스 상품 설명
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="bottomFixedControls">
|
<div class="bottomFixedControls">
|
||||||
|
|||||||
Reference in New Issue
Block a user