Merge remote-tracking branch 'origin/master'

This commit is contained in:
이경숙
2026-04-01 17:02:58 +09:00
5 changed files with 83 additions and 16 deletions

View File

@@ -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;
/** 가용재고제한수량 */ /** 가용재고제한수량 */

View File

@@ -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}

View File

@@ -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>

View File

@@ -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');
}
/************************************************************* /*************************************************************
구매하기 버튼 구매하기 버튼
**************************************************************/ **************************************************************/

View File

@@ -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">