|
|
@@ -0,0 +1,1121 @@
|
|
|
+<!DOCTYPE html>
|
|
|
+<html lang="ko"
|
|
|
+ xmlns:th="http://www.thymeleaf.org" >
|
|
|
+<!--
|
|
|
+ *******************************************************************************
|
|
|
+ * @source : GoodsRegisterForm.html
|
|
|
+ * @desc : 입점 상품등록
|
|
|
+ *============================================================================
|
|
|
+ * STYLE24
|
|
|
+ * Copyright(C) 2020 TSIT, All rights reserved.
|
|
|
+ *============================================================================
|
|
|
+ * VER DATE AUTHOR DESCRIPTION
|
|
|
+ * === =========== ========== =============================================
|
|
|
+ * 1.0 2021.04.21 eskim 최초 작성
|
|
|
+ *******************************************************************************
|
|
|
+ -->
|
|
|
+ <div id="main">
|
|
|
+ <!-- 메인타이틀 영역 -->
|
|
|
+ <div class="main-title">
|
|
|
+ </div>
|
|
|
+ <!-- //메인타이틀 영역 -->
|
|
|
+ <!-- 메뉴 설명 -->
|
|
|
+ <div class="infoBox menu-desc">
|
|
|
+ </div>
|
|
|
+ <form id="goodsDetailForm" name="goodsDetailForm" action="#" th:method="post">
|
|
|
+ <input type="hidden" id="mode" name="mode" value="C"/>
|
|
|
+ <input type="hidden" id="notiList" name="notiList" />
|
|
|
+ <input type="hidden" id="erpStockLinkYn" name="erpStockLinkYn" value="N"/>
|
|
|
+ <input type="hidden" id="goodsStat" name="goodsStat" value="G008_20"/>
|
|
|
+ <input type="hidden" id="newCustOrdYn" name="newCustOrdYn" value="N"/>
|
|
|
+ <input type="hidden" id="mainColorCd" name="mainColorCd" value="XX"/>
|
|
|
+ <input type="hidden" id="selfGoodsYn" name="selfGoodsYn" value="N"/>
|
|
|
+ <input type="hidden" id="goodsType" name="goodsType" value="G056_N"/>
|
|
|
+ <input type="hidden" id="pntPrate10" name="pntPrate10" />
|
|
|
+ <input type="hidden" id="pntPrate20" name="pntPrate20" />
|
|
|
+ <input type="hidden" id="pntMrate10" name="pntMrate10" />
|
|
|
+ <input type="hidden" id="pntMrate20" name="pntMrate20" />
|
|
|
+ <div class="panelStyle">
|
|
|
+ <div class="panelContent">
|
|
|
+ <table class="frmStyle">
|
|
|
+ <colgroup>
|
|
|
+ <col width="15%"/>
|
|
|
+ <col width="50%"/>
|
|
|
+ <col width="15%"/>
|
|
|
+ <col/>
|
|
|
+ </colgroup>
|
|
|
+ <tr>
|
|
|
+ <th>브랜드<em class="required" title="필수"></em></th>
|
|
|
+ <td colspan="3">
|
|
|
+ <select name="selSupplyCompCd" id="selSupplyCompCd" disabled="disabled" class="w40p">
|
|
|
+ <option value="">[선택]</option>
|
|
|
+ <option th:if="${supplyCompList}" th:each="oneData, status : ${supplyCompList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}" th:selected="${sessionInfo.supplyCompCd == oneData.cd}"></option>
|
|
|
+ </select>
|
|
|
+ <select name="selBrandCd" id="selBrandCd" class="w40p" required="required" data-valid-name="브랜드">
|
|
|
+ <option value="">[선택]</option>
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <input type="hidden" name="supplyCompCd" id="supplyCompCd" th:value="${sessionInfo.supplyCompCd}"/>
|
|
|
+ <input type="hidden" name="brandCd" id="brandCd" />
|
|
|
+ </td>
|
|
|
+ <th>업체상품코드<em class="required" title="필수"></em></th>
|
|
|
+ <td><input type="text" class="w200" name="supplyGoodsCd" required="required" data-valid-name="업체상품코드" data-valid-type="alphaNumeric" onkeyup="$(this).val($(this).val().toUpperCase());"/></td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+ <!-- TABS BUTTON AREA -->
|
|
|
+ <ul class="panelBar">
|
|
|
+ <li>
|
|
|
+ <h3 class="marL10 cRed"><i class="fa fa-info-circle" aria-hidden="true"></i>상품이미지는 상품 등록 후 상품목록에서 오늘로 등록일을 설정, 조회 후 상품상세에서 등록하세요.</h3>
|
|
|
+ </li>
|
|
|
+ <li class="right">
|
|
|
+ <th:block th:if="${sessionInfo.roleCd == 'G001_B000'}">
|
|
|
+ <button type="button" class="btn btnRight btn-success btn-lg" id="btnGoodsDetailSave">저장</button>
|
|
|
+ </th:block>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ <!-- //TABS BUTTON AREA -->
|
|
|
+ <!-- TABS SPACE -->
|
|
|
+ <div class="tabs">
|
|
|
+ <!-- TABS NAVI -->
|
|
|
+ <div class="tabsNav">
|
|
|
+ <ul>
|
|
|
+ <li class="on"><a href="#goodstab1">기본정보</a></li>
|
|
|
+ <li><a href="#goodstab2">옵션/재고정보</a></li>
|
|
|
+ <li><a href="#goodstab3">상품상세정보</a></li>
|
|
|
+ <li><a href="#goodstab4">고시정보</a></li>
|
|
|
+ </ul>
|
|
|
+ </div>
|
|
|
+ <!-- //TABS NAVI -->
|
|
|
+ <!-- TABS CONTENTS -->
|
|
|
+ <ul class="tabsCont">
|
|
|
+ <!-- TAB1 : 기본정보 -->
|
|
|
+ <li class="tab on" id="goodstab1">
|
|
|
+ <!-- TAB1 CONTENTS AREA -->
|
|
|
+ <div class="panelStyle">
|
|
|
+ <table class="frmStyle">
|
|
|
+ <colgroup>
|
|
|
+ <col width="15%"/>
|
|
|
+ <col width="18%"/>
|
|
|
+ <col width="15%"/>
|
|
|
+ <col width="18%"/>
|
|
|
+ <col width="15%"/>
|
|
|
+ <col/>
|
|
|
+ </colgroup>
|
|
|
+ <tbody>
|
|
|
+ <tr>
|
|
|
+ <th>상품타이틀</th>
|
|
|
+ <td colspan="5">
|
|
|
+ <input type="text" class="w80p" id="goodsTnm" name="goodsTnm" maxlength=""></input>
|
|
|
+ <span class="byteChk"><em class="cBlue" id="goodsTnmLen">0</em>/100 bytes</span>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th>상품명<em class="required" title="필수"></em></th>
|
|
|
+ <td colspan="5">
|
|
|
+ <input type="text" class="w80p" id="goodsNm" name="goodsNm" required="required" data-valid-name="상품명" ></input>
|
|
|
+ <span class="byteChk"><em class="cBlue" id="goodsNmLen">0</em>/200 bytes</span>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th>사용자검색어</th>
|
|
|
+ <td colspan="5">
|
|
|
+ <input type="text" class="w60p" id="goodsSnm1" name="goodsSnm1"></input>
|
|
|
+ <span class="byteChk"><em class="cBlue" id="goodsSnm1Len">0</em>/200 bytes</span><font class="cBlue padL10"><b>* 여러개설정할경우 ; 구분자 사용 / 공백은 자동삭제처리</b></font>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th>정상/이월 구분<em class="required" title="필수"></em></th>
|
|
|
+ <td >
|
|
|
+ <label class="rdoBtn" th:if="${formalGbList}" th:each="oneData, status : ${formalGbList}" ><input type="radio" id="formalGb" name="formalGb" th:value="${oneData.cd}" th:text="${oneData.cdNm}" th:checked="${oneData.cd == 'G009_10'}"/></label>
|
|
|
+ </td>
|
|
|
+ <th>자사몰 노출여부<em class="required" title="필수"></em></th>
|
|
|
+ <td>
|
|
|
+ <label class="rdoBtn"><input type="radio" name="selfMallYn" id="selfMallYnY" value="Y" checked="checked"/>Y</label>
|
|
|
+ <label class="rdoBtn"><input type="radio" name="selfMallYn" id="selfMallYnN" value="N"/>N</label>
|
|
|
+ </td>
|
|
|
+ <th>시즌</th>
|
|
|
+ <td >
|
|
|
+ <select name="seasonCd" id="seasonCd">
|
|
|
+ <option value="">[선택]</option>
|
|
|
+ <option th:if="${seasonList}" th:each="oneData, status : ${seasonList}" th:value="${oneData.cd}" th:text="${oneData.cdNm}"></option>
|
|
|
+ </select>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th>성별<em class="required" title="필수"></em></th>
|
|
|
+ <td>
|
|
|
+ <select name="sexGb" id="sexGb" required="required" data-valid-name="성별">
|
|
|
+ <option value="">[선택]</option>
|
|
|
+ <option th:if="${sexGbList}" th:each="oneData, status : ${sexGbList}" th:value="${oneData.cd}" th:text="${oneData.cdNm}"></option>
|
|
|
+ </select>
|
|
|
+ </td>
|
|
|
+ <th>상품연령대</th>
|
|
|
+ <td>
|
|
|
+ <select name="ageGrpCd" id="ageGrpCd">
|
|
|
+ <option value="">[선택]</option>
|
|
|
+ <option th:if="${ageGrpCdList}" th:each="oneData, status : ${ageGrpCdList}" th:value="${oneData.cd}" th:text="${oneData.cdNm}"></option>
|
|
|
+ </select>
|
|
|
+ </td>
|
|
|
+ <th>선물 주문가능여부<em class="required" title="필수"></em></th>
|
|
|
+ <td>
|
|
|
+ <label class="rdoBtn"><input type="radio" name="giftPackYn" id="giftPackYnY" value="Y" />Y</label>
|
|
|
+ <label class="rdoBtn"><input type="radio" name="giftPackYn" id="giftPackYnN" value="N" checked="checked"/>N</label>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th>원산지<em class="required" title="필수"></em></th>
|
|
|
+ <td><select name="originCd" id="originCd" required="required" data-valid-name="원산지" >
|
|
|
+ <option value="">[선택]</option>
|
|
|
+ <option th:if="${originCdList}" th:each="oneData, status : ${originCdList}" th:value="${oneData.cd}" th:text="${oneData.cdNm}" ></option>
|
|
|
+ </select>
|
|
|
+ </td>
|
|
|
+ <th>유통구분<em class="required" title="필수"></em></th>
|
|
|
+ <td><select name="distributionGb" id="distributionGb" required="required" data-valid-name="유통구분">
|
|
|
+ <option value="">[선택]</option>
|
|
|
+ <option th:if="${distributionGbList}" th:each="oneData, status : ${distributionGbList}" th:value="${oneData.cd}" th:text="${oneData.cdNm}" th:selected="${oneData.cd == 'G065_20'}"></option>
|
|
|
+ </select>
|
|
|
+ </td>
|
|
|
+ <th>상품구분<em class="required" title="필수"></em></th>
|
|
|
+ <td>
|
|
|
+ <select name="goodsGb" id="goodsGb" required="required" data-valid-name="상품구분">
|
|
|
+ <option value="">[선택]</option>
|
|
|
+ <option th:if="${goodsGbList}" th:each="oneData, status : ${goodsGbList}" th:value="${oneData.cd}" th:text="${oneData.cdNm}"></option>
|
|
|
+ </select>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th>해외구매대행여부<em class="required" title="필수"></em></th>
|
|
|
+ <td><label class="rdoBtn"><input type="radio" name="foreignBuyYn" id="foreignBuyYnY" value="Y" />Y</label>
|
|
|
+ <label class="rdoBtn"><input type="radio" name="foreignBuyYn" id="foreignBuyYnN" value="N" checked="checked"/>N</label>
|
|
|
+ </td>
|
|
|
+ <th>병행수입여부<em class="required" title="필수"></em></th>
|
|
|
+ <td><label class="rdoBtn"><input type="radio" name="parallelImportYn" id="parallelImportYnY" value="Y" />Y</label>
|
|
|
+ <label class="rdoBtn"><input type="radio" name="parallelImportYn" id="parallelImportYnN" value="N" checked="checked"/>N</label>
|
|
|
+ </td>
|
|
|
+ <th>주문제작여부<em class="required" title="필수"></em></th>
|
|
|
+ <td>
|
|
|
+ <label class="rdoBtn"><input type="radio" name="orderMadeYn" id="orderMadeYnY" value="Y" />Y</label>
|
|
|
+ <label class="rdoBtn"><input type="radio" name="orderMadeYn" id="orderMadeYnN" value="N" checked="checked"/>N</label>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th>정상가<em class="required" title="필수"></em></th>
|
|
|
+ <td><input type="text" class="w80p aR" id="listPrice" name="listPrice" maxlength="10" data-valid-type="numeric" required="required" data-valid-name="정상가"/> 원
|
|
|
+ </td>
|
|
|
+ <th>판매가<em class="required" title="필수"></em></th>
|
|
|
+ <td><input type="text" class="w80p aR" id="currPrice" name="currPrice" maxlength="10" data-valid-type="numeric" required="required" data-valid-name="판매가"/> 원
|
|
|
+ </td>
|
|
|
+ <th>할인율</th>
|
|
|
+ <td class="aR" ><span id="dcRateTxt"></span> % <input type="hidden" id="dcRate" name="dcRate"/></td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th>판매수수료율<em class="required" title="필수"></em></th>
|
|
|
+ <td><input type="text" class="w80p aR" id="sellFeeRate" name="sellFeeRate" maxlength="10" th:value="${supplyCompanyInfo.sellFeeRate}" disabled="disabled"/> %
|
|
|
+ </td>
|
|
|
+ <th>과세구분<em class="required" title="필수"></em></th>
|
|
|
+ <td>
|
|
|
+ <select name="taxGb" required="required" data-valid-name="과세구분">
|
|
|
+ <option value="">[선택]</option>
|
|
|
+ <option value="10">과세</option>
|
|
|
+ <option value="20">비과세</option>
|
|
|
+ </select>
|
|
|
+ </td>
|
|
|
+ <th>성인용품여부<em class="required" title="필수"></em></th>
|
|
|
+ <td>
|
|
|
+ <label class="rdoBtn"><input type="radio" name="adultYn" id="adultYnY" value="Y" />Y</label>
|
|
|
+ <label class="rdoBtn"><input type="radio" name="adultYn" id="adultYnN" value="N" checked="checked"/>N</label>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th>품목코드<em class="required" title="필수"></em></th>
|
|
|
+ <td colspan="5">
|
|
|
+ <select name="itemkindCd" id="itemkindCd" required="required" data-valid-name="품목코드">
|
|
|
+ <option value="">[선택]</option>
|
|
|
+ <option th:if="${itemkindList}" th:each="oneData, status : ${itemkindList}" th:value="${oneData.cd}" th:text="${oneData.cdNm}"></option>
|
|
|
+ </select>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th>반품여부<em class="required" title="필수"></em></th>
|
|
|
+ <td>
|
|
|
+ <label class="rdoBtn"><input type="radio" name="returnableYn" id="returnableYnY" value="Y" checked="checked"/>Y</label>
|
|
|
+ <label class="rdoBtn"><input type="radio" name="returnableYn" id="returnableYnN" value="N"/>N</label>
|
|
|
+ </td>
|
|
|
+ <th>교환여부<em class="required" title="필수"></em></th>
|
|
|
+ <td colspan="3">
|
|
|
+ <label class="rdoBtn"><input type="radio" name="changeableYn" id="changeableYnY" value="Y" checked="checked"/>Y</label>
|
|
|
+ <label class="rdoBtn"><input type="radio" name="changeableYn" id="changeableYnN" value="N"/>N</label>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th>배송비정책<em class="required" title="필수"></em></th>
|
|
|
+ <td>
|
|
|
+ <select name="delvFeeCd" id="delvFeeCd" required="required" data-valid-name="배송지정책">
|
|
|
+ <option value="">[선택]</option>
|
|
|
+ <option th:if="${delvFeeCdList}" th:each="oneData, status : ${delvFeeCdList}" th:value="${oneData.cd}" th:text="${oneData.cdNm}"></option>
|
|
|
+ </select>
|
|
|
+ </td>
|
|
|
+ <th>기본배송비</th>
|
|
|
+ <td>
|
|
|
+ <input type="text" class="w100 aR" id="delvFee" name="delvFee" disabled="disabled"/> 원
|
|
|
+ </td>
|
|
|
+ <th>무료배송비기준</th>
|
|
|
+ <td>
|
|
|
+ <input type="text" class="w100 aR" id="minOrdAmt" name="minOrdAmt" disabled="disabled"/> 원
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th>PC포인트/즉시사용여부<em class="required" title="필수"></em></th>
|
|
|
+ <td>
|
|
|
+ <input type="text" class="w50 aR" id="pntPrate" name="pntPrate" data-valid-type="numeric" maxlength="3" required="required" data-valid-name="PC포인트"/> % /
|
|
|
+ <label class="rdoBtn"><input type="radio" name="prePpntUsableYn" id="prePpntUsableYnY" value="Y"/>Y</label>
|
|
|
+ <label class="rdoBtn"><input type="radio" name="prePpntUsableYn" id="prePpntUsableYnN" value="N" checked="checked"/>N</label>
|
|
|
+ </td>
|
|
|
+ <th>모바일포인트/즉시사용여부<em class="required" title="필수"></em></th>
|
|
|
+ <td colspan="3">
|
|
|
+ <input type="text" class="w50 aR" id="pntMrate" name="pntMrate" data-valid-type="numeric" maxlength="3" required="required" data-valid-name="모바일포인트"/> % /
|
|
|
+ <label class="rdoBtn"><input type="radio" name="preMpntUsableYn" id="preMpntUsableYnY" value="Y"/>Y</label>
|
|
|
+ <label class="rdoBtn"><input type="radio" name="preMpntUsableYn" id="preMpntUsableYnN" value="N" checked="checked"/>N</label>
|
|
|
+ </td>
|
|
|
+
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th>최소주문수량<em class="required" title="필수"></em></th>
|
|
|
+ <td>
|
|
|
+ <input type="text" class="w100 aR" id="minOrdQty" name="minOrdQty" data-valid-type="integer" maxlength="5" value="1" required="required" data-valid-name="최소주문수량"/>
|
|
|
+ </td>
|
|
|
+ <th>최대주문수량<em class="required" title="필수"></em></th>
|
|
|
+ <td>
|
|
|
+ <input type="text" class="w100 aR" id="maxOrdQty" name="maxOrdQty" data-valid-type="integer" maxlength="5" value="20" required="required" data-valid-name="최대주문수량"/>
|
|
|
+ </td>
|
|
|
+ <th>ID당1일최대구매수량<em class="required" title="필수"></em></th>
|
|
|
+ <td>
|
|
|
+ <input type="text" class="w100 aR" id="dayMaxOrdQty" name="dayMaxOrdQty" data-valid-type="integer" maxlength="5" value="20" required="required" data-valid-name="ID당1일최대구매수량"/>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th>안전인증번호</th>
|
|
|
+ <td>
|
|
|
+ <input type="text" class="w150" id="certNum" name="certNum" maxlength="20"/>
|
|
|
+ </td>
|
|
|
+ <th>판매기간<em class="required" title="필수"></em></th>
|
|
|
+ <td colspan="3">
|
|
|
+ <input name="sellStYMD" id="sellStYMD" type="text" class="w80 schDate" maxlength="10" required="required" data-valid-name="판매시작일" />
|
|
|
+ <select name="sellStHH" id="sellStHH" required="required" data-valid-name="판매 시작시간">
|
|
|
+ <th:block th:each="num, index : ${#numbers.sequence(0,23)}">
|
|
|
+ <option th:value="${#numbers.formatInteger(num,2)}" th:text="|${#numbers.formatInteger(num,2)}시|" >시간</option>
|
|
|
+ </th:block>
|
|
|
+ </select>
|
|
|
+ ~
|
|
|
+ <input name="sellEdYMD" id="sellEdYMD" type="text" class="w80 schDate" maxlength="10" required="required" data-valid-name="판매 종료일" />
|
|
|
+ <select name="sellEdHH" id="sellEdHH" required="required" data-valid-name="판매 종료시간">
|
|
|
+ <th:block th:each="num: ${#numbers.sequence(0,23)}">
|
|
|
+ <option th:value="${#numbers.formatInteger(num,2)}" th:text="|${#numbers.formatInteger(num,2)}시|" th:selected="${#numbers.formatInteger(num,2)}==23 ? 'true'">시간</option>
|
|
|
+ </th:block>
|
|
|
+ </select>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </tbody>
|
|
|
+ </table>
|
|
|
+ </div>
|
|
|
+ <!-- //TAB1 CONTENTS AREA -->
|
|
|
+ </li>
|
|
|
+ <!-- //TAB1 -->
|
|
|
+ <!-- TAB2 : 옵셥/재고 -->
|
|
|
+ <li class="tab" id="goodstab2">
|
|
|
+ <!-- TAB2 CONTENTS AREA -->
|
|
|
+ <div class="panelStyle">
|
|
|
+ <ul class="panelBar">
|
|
|
+ <li>
|
|
|
+ <h3 class="marL10 cRed"><i class="fa fa-info-circle" aria-hidden="true"></i>옵션추가시 옵션1, 옵션2를 정확히 입력해주세요. 저장 후 수정할수 없습니다.</h3>
|
|
|
+ </li>
|
|
|
+ <li class="right">
|
|
|
+ <button type="button" class="btn btn-info btn-lg" id="btnOptionAdd" >옵션추가</button>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ <table class="frmStyle">
|
|
|
+ <colgroup>
|
|
|
+ <col width="25%"/>
|
|
|
+ <col/>
|
|
|
+ <col width="8%"/>
|
|
|
+ <col width="8%"/>
|
|
|
+ <col width="7%"/>
|
|
|
+ <col width="8%"/>
|
|
|
+ <col width="8%"/>
|
|
|
+ <col width="7%"/>
|
|
|
+ <col width="5%"/>
|
|
|
+ </colgroup>
|
|
|
+ <tr>
|
|
|
+ <th>옵션1</th>
|
|
|
+ <th>옵션2</th>
|
|
|
+ <th>추가가격</th>
|
|
|
+ <th>노출순서</th>
|
|
|
+ <th>노출여부</th>
|
|
|
+ <th>가용재고</th>
|
|
|
+ <th>안전재고</th>
|
|
|
+ <th>품절여부</th>
|
|
|
+ <th></th>
|
|
|
+ </tr>
|
|
|
+ <tbody id="optionList" >
|
|
|
+ </tbody>
|
|
|
+ </table>
|
|
|
+ </div>
|
|
|
+ <!-- //TAB2 CONTENTS AREA -->
|
|
|
+ </li>
|
|
|
+ <!-- //TAB2 : 이미지/옵셥/재고 -->
|
|
|
+ <!-- TAB3 : 상품상세 -->
|
|
|
+ <li class="tab" id="goodstab3">
|
|
|
+ <!-- TAB3 CONTENTS AREA -->
|
|
|
+ <div class="panelStyle">
|
|
|
+ <!-- TABS SPACE -->
|
|
|
+ <div class="tabsJr">
|
|
|
+ <!-- TABS NAVI -->
|
|
|
+ <ul class="tabsJrNav">
|
|
|
+ <li class="on"><a href="#goodstab11">타이틀/내용/특징</a></li>
|
|
|
+ <li><a href="#goodstab12">상세html</a></li>
|
|
|
+ </ul>
|
|
|
+ <!-- //TABS NAVI -->
|
|
|
+ <!-- TABS CONTENT -->
|
|
|
+ <ul class="tabsJrCont">
|
|
|
+ <!-- TAB11 CONTENTS AREA -->
|
|
|
+ <!-- TAB -->
|
|
|
+ <li class="tabJr on" id="goodstab11">
|
|
|
+ <div class="panelStyle">
|
|
|
+ <!-- TAB11 CONTENTS AREA -->
|
|
|
+ <table class="frmStyle">
|
|
|
+ <colgroup>
|
|
|
+ <col width="15%"/>
|
|
|
+ <col/>
|
|
|
+ </colgroup>
|
|
|
+ <tr>
|
|
|
+ <th>타이틀</th>
|
|
|
+ <td><input type="text" class= "w100p" id="goodsTitlesDesc" name="goodsTitlesDesc" maxlength="100" />
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th>내용</th>
|
|
|
+ <td><div class="tabJrContArea">
|
|
|
+ <textarea class="textareaR3 summernote" name="goodsContentsDesc" id="goodsContentsDesc"></textarea>
|
|
|
+ </div>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th>상품 특징</th>
|
|
|
+ <td><div class="tabJrContArea">
|
|
|
+ <textarea class="textareaR3 summernote" name="goodsCharacterDesc" id="goodsCharacterDesc"></textarea>
|
|
|
+ </div>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+ </div>
|
|
|
+ </li>
|
|
|
+ <li class="tabJr" id="goodstab12">
|
|
|
+ <div class="panelStyle">
|
|
|
+ <!-- TAB11 CONTENTS AREA -->
|
|
|
+ <table class="frmStyle">
|
|
|
+ <colgroup>
|
|
|
+ <col width="15%"/>
|
|
|
+ <col/>
|
|
|
+ </colgroup>
|
|
|
+ <tr>
|
|
|
+ <th>상품상세</th>
|
|
|
+ <td><div class="tabJrContArea">
|
|
|
+ <textarea class="textareaR4 summernote" name="goodsDesc" id="goodsDesc"></textarea>
|
|
|
+ </div>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th>상위(PC)</th>
|
|
|
+ <td><div class="tabJrContArea">
|
|
|
+ <textarea class="textareaR4 summernote" name="goodsPcTopDesc" id="goodsPcTopDesc"></textarea>
|
|
|
+ </div>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th>상위(MOBILE)</th>
|
|
|
+ <td><div class="tabJrContArea">
|
|
|
+ <textarea class="textareaR4 summernote" name="goodsMobileTopDesc" id="goodsMobileTopDesc"></textarea>
|
|
|
+ </div>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th>하위(PC)</th>
|
|
|
+ <td><div class="tabJrContArea">
|
|
|
+ <textarea class="textareaR4 summernote" name="goodsPcDownDesc" id="goodsPcDownDesc"></textarea>
|
|
|
+ </div>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th>하위(MOBILE)</th>
|
|
|
+ <td><div class="tabJrContArea">
|
|
|
+ <textarea class="textareaR4 summernote" name="goodsMobileDownDesc" id="goodsMobileDownDesc"></textarea>
|
|
|
+ </div>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+ </div>
|
|
|
+ </li>
|
|
|
+ <!-- //TAB -->
|
|
|
+ </ul>
|
|
|
+ <!-- //TAB CONTENT -->
|
|
|
+ </div>
|
|
|
+ <!-- //TABS SPACE -->
|
|
|
+ </div>
|
|
|
+ <!-- //TAB3 CONTENTS AREA -->
|
|
|
+ </li>
|
|
|
+ <!-- //TAB3 : 상품상세 -->
|
|
|
+ <!-- TAB4 : 고시정보 -->
|
|
|
+ <li class="tab" id="goodstab4">
|
|
|
+ <!-- TAB5 CONTENTS AREA -->
|
|
|
+ <div class="panelStyle">
|
|
|
+ <!-- TABS SPACE -->
|
|
|
+ <table class="frmStyle">
|
|
|
+ <colgroup>
|
|
|
+ <col style="width:15%"/>
|
|
|
+ <col/>
|
|
|
+ </colgroup>
|
|
|
+ <tr>
|
|
|
+ <th>고시분류<em class="required" title="필수"></em></th>
|
|
|
+ <td>
|
|
|
+ <select id="niClsfCd" name="niClsfCd" class="w40p">
|
|
|
+ <option value="">[선택]</option>
|
|
|
+ <option th:if="${niClsfCdList}" th:each="oneData, status : ${niClsfCdList}" th:value="${oneData.cd}" th:text="${oneData.cdNm}"></option>
|
|
|
+ </select>
|
|
|
+ <button type="button" class="btn btn-dark btn-lg" id="btnNotinfo">선택</button>
|
|
|
+ <span class="padL10" id='itemkindNoti'></span>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+ <hr/>
|
|
|
+ <div id="notiArea"></div>
|
|
|
+ <!-- //TABS SPACE -->
|
|
|
+ </div>
|
|
|
+ <!-- //TAB4 CONTENTS AREA -->
|
|
|
+ </li>
|
|
|
+ <!-- //TAB4 : 고시정보 -->
|
|
|
+ </ul>
|
|
|
+ <!-- //TABS CONTENTS -->
|
|
|
+
|
|
|
+ </div>
|
|
|
+ <!-- //TABS SPACE -->
|
|
|
+ </div> <!-- class=panelContent -->
|
|
|
+ </div> <!-- class=panelStyle -->
|
|
|
+ </form>
|
|
|
+
|
|
|
+ </div>
|
|
|
+<script type="text/javascript" src="/ux/plugins/summernote/summernote.js?v=2020103001"></script>
|
|
|
+<script type="text/javascript" src="/ux/plugins/gaga/gaga.summernote.js?v=2020103001"></script>
|
|
|
+<script th:inline="javascript">
|
|
|
+/*<![CDATA[*/
|
|
|
+
|
|
|
+ //상품명 길이표시
|
|
|
+ $("#goodsDetailForm input[name=goodsNm]").bind('focus focusout input keyup keydown paste change', function () {
|
|
|
+ fnDataLengthCheck('goodsNm',200);
|
|
|
+ });
|
|
|
+
|
|
|
+ //상품타이틀 길이표시
|
|
|
+ $("#goodsDetailForm input[name=goodsTnm]").bind('focus focusout input keyup keydown paste change', function () {
|
|
|
+ fnDataLengthCheck('goodsTnm',100);
|
|
|
+ });
|
|
|
+
|
|
|
+ //사용자검색어 길이표시
|
|
|
+ $("#goodsDetailForm input[name=goodsSnm1]").bind('focus focusout input keyup keydown paste change', function () {
|
|
|
+ fnDataLengthCheck('goodsSnm1',200);
|
|
|
+ });
|
|
|
+
|
|
|
+ //데이터 길이 확인
|
|
|
+ var fnDataLengthCheck = function(id , maxByte){
|
|
|
+ var maximumByte = maxByte;
|
|
|
+ var strLenEng = $('#goodsDetailForm').find('#'+id).val().length;
|
|
|
+ var cbyteStr = 0;
|
|
|
+ var liLenStr = 0;
|
|
|
+ for (i = 0; i < strLenEng; i++) {
|
|
|
+ var lsOneChar = $('#goodsDetailForm').find('#'+id).val().charAt(i);
|
|
|
+ if (lsOneChar == "\n" || lsOneChar == "\'") {
|
|
|
+ cbyteStr += 5; //엔터면 5를 더한다
|
|
|
+ } else if (lsOneChar == "\"") {
|
|
|
+ cbyteStr += 6; //쌍따옴표면 6를 더한다
|
|
|
+ } else if (escape(lsOneChar).length > 4) {
|
|
|
+ cbyteStr += 3; //한글이면 3를 더한다
|
|
|
+ } else {
|
|
|
+ cbyteStr++; //한글아니면 1을 다한다
|
|
|
+ }
|
|
|
+ if (cbyteStr <= maximumByte) {
|
|
|
+ liLenStr = i + 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 사용자가 입력한 값이 제한 값을 초과하는지를 검사한다.
|
|
|
+ if (parseInt(cbyteStr) > parseInt(maximumByte)) {
|
|
|
+ mcxDialog.alertC('허용된 글자수가 초과되었습니다.\n초과된 부분은 자동으로 삭제됩니다.', {
|
|
|
+ sureBtnText: "확인",
|
|
|
+ sureBtnClick: function() {
|
|
|
+ $('#goodsDetailForm').find('#'+id).focus();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ var str = $('#goodsDetailForm').find('#'+id).val().substr(0, liLenStr);
|
|
|
+ $('#goodsDetailForm').find('#'+id).val(str);
|
|
|
+ var cbyteStr = 0;
|
|
|
+ for (i = 0; i < $('#goodsDetailForm').find('#'+id).val().length; i++) {
|
|
|
+ var lsOneChar = $('#goodsDetailForm').find('#'+id).val().charAt(i);
|
|
|
+ if (lsOneChar == "\n" || lsOneChar == "\'") {
|
|
|
+ cbyteStr += 5; //엔터면 5를 더한다
|
|
|
+ } else if (lsOneChar == "\"") {
|
|
|
+ cbyteStr += 6; //쌍따옴표면 6를 더한다
|
|
|
+ } else if (escape(lsOneChar).length > 4) {
|
|
|
+ cbyteStr += 3; //한글이면 3를 더한다
|
|
|
+ } else {
|
|
|
+ cbyteStr++; //한글아니면 1을 다한다
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $('#goodsDetailForm').find('#'+id+'Len').text(cbyteStr);
|
|
|
+ }
|
|
|
+
|
|
|
+ //정상가 변경시 할인율 계산
|
|
|
+ $("#goodsDetailForm input[name=listPrice]").bind('focusout paste', function () {
|
|
|
+ fnCurrPriceCheck();
|
|
|
+ });
|
|
|
+
|
|
|
+ //판매가 변경시 할인율 계산
|
|
|
+ $("#goodsDetailForm input[name=currPrice]").bind('focusout paste', function () {
|
|
|
+ fnCurrPriceCheck();
|
|
|
+ });
|
|
|
+
|
|
|
+ //판매가의 할인율 확인
|
|
|
+ var fnCurrPriceCheck = function(){
|
|
|
+ var dcRate = 0;
|
|
|
+
|
|
|
+ if (gagajf.isNull($("#goodsDetailForm input[name=listPrice]").val()) || gagajf.isNull($("#goodsDetailForm input[name=currPrice]").val())){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ var listPrice = $("#goodsDetailForm input[name=listPrice]").val().removeComma();
|
|
|
+ var currPrice = $("#goodsDetailForm input[name=currPrice]").val().removeComma();
|
|
|
+ dcRate = 100 - Math.floor(Number(currPrice) / Number(listPrice) * 100); //절사
|
|
|
+
|
|
|
+ if (dcRate < 0){
|
|
|
+ mcxDialog.alertC('판매가를 확인해 주세요.', {
|
|
|
+ sureBtnText: "확인",
|
|
|
+ sureBtnClick: function() {
|
|
|
+ $("#goodsDetailForm input[name=currPrice]").focus();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }else{
|
|
|
+ $("#goodsDetailForm").find("#dcRateTxt").html(dcRate);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 브랜드 조회
|
|
|
+ var fnBrand = function(supplyCompCd, brandCd) {
|
|
|
+ var actionUrl = '/renderer/brand/AuthBrandlist';
|
|
|
+ $("#goodsDetailForm select[name=selBrandCd] option:gt(0)").remove();
|
|
|
+
|
|
|
+ cfnCreateCombo(actionUrl, $('#goodsDetailForm select[name=selBrandCd]'), "[선택]", brandCd);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //브랜드변경시
|
|
|
+ $('#goodsDetailForm select[name=selBrandCd]').on('change', function() {
|
|
|
+ var brandCd = $("#goodsDetailForm select[name=selBrandCd]").val();
|
|
|
+ $('#goodsDetailForm input[name=brandCd]').val(brandCd); //선택 브랜드코드 설정
|
|
|
+ if (gagajf.isNull(brandCd)){
|
|
|
+ $('#goodsDetailForm input[name=pntPrate]').val('');
|
|
|
+ $('#goodsDetailForm input[name=pntMrate]').val('');
|
|
|
+
|
|
|
+ }else{
|
|
|
+
|
|
|
+ //포인트 적용
|
|
|
+ var params = new Object();
|
|
|
+ params.brandCd = brandCd;
|
|
|
+ cfnAjaxSubmit("/business/brand/list", "json", fnBrandCallback, params);
|
|
|
+
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ // 브랜드별 포인트 처리
|
|
|
+ var fnBrandCallback = function(result){
|
|
|
+ if (result != null){
|
|
|
+ $('#goodsDetailForm input[name=pntPrate10]').val(result[0].pntPrate10);
|
|
|
+ $('#goodsDetailForm input[name=pntPrate20]').val(result[0].pntPrate20);
|
|
|
+ $('#goodsDetailForm input[name=pntMrate10]').val(result[0].pntMrate10);
|
|
|
+ $('#goodsDetailForm input[name=pntMrate20]').val(result[0].pntMrate20);
|
|
|
+ if ("G009_10" == $('#goodsDetailForm input[name=formalGb]').val()){
|
|
|
+ $('#goodsDetailForm input[name=pntPrate]').val(result[0].pntPrate10);
|
|
|
+ $('#goodsDetailForm input[name=pntMrate]').val(result[0].pntMrate10);
|
|
|
+ }else{
|
|
|
+ $('#goodsDetailForm input[name=pntPrate]').val(result[0].pntPrate20);
|
|
|
+ $('#goodsDetailForm input[name=pntMrate]').val(result[0].pntMrate20);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ $('#goodsDetailForm input[name=pntPrate10]').val('');
|
|
|
+ $('#goodsDetailForm input[name=pntPrate20]').val('');
|
|
|
+ $('#goodsDetailForm input[name=pntMrate10]').val('');
|
|
|
+ $('#goodsDetailForm input[name=pntMrate20]').val('');
|
|
|
+ $('#goodsDetailForm input[name=pntPrate]').val('');
|
|
|
+ $('#goodsDetailForm input[name=pntMrate]').val('');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //배송비정책변경시
|
|
|
+ $('#goodsDetailForm select[name=delvFeeCd]').on('change', function() {
|
|
|
+ var delvFeeCd = $("#goodsDetailForm select[name=delvFeeCd]").val();
|
|
|
+
|
|
|
+ if (gagajf.isNull(delvFeeCd)){
|
|
|
+ $("#goodsDetailForm input[name=delvFee]").val('');
|
|
|
+ $("#goodsDetailForm input[name=minOrdAmt]").val('');
|
|
|
+ }else{
|
|
|
+ var arrDelvFeeed = $('#goodsDetailForm select[name=delvFeeCd] option:selected').text().split('/');
|
|
|
+ $("#goodsDetailForm input[name=delvFee]").val(arrDelvFeeed[1].addComma());
|
|
|
+ $("#goodsDetailForm input[name=minOrdAmt]").val(arrDelvFeeed[0].addComma());
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ // 상품 고시 선택 버튼 클릭 시
|
|
|
+ $('#btnNotinfo').click(function(e) {
|
|
|
+
|
|
|
+ if(gagajf.isNull($("#goodsDetailForm select[name=niClsfCd]").val())) {
|
|
|
+ mcxDialog.alertC("상품정보제공 고시를 선택해주세요.", {
|
|
|
+ sureBtnText: "확인",
|
|
|
+ sureBtnClick: function() {
|
|
|
+ $("#goodsDetailForm select[name=niClsfCd]").focus();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ var params = new Object();
|
|
|
+ params.supplyCompCd = $("#goodsDetailForm input[name=supplyCompCd]").val();
|
|
|
+ params.niClsfCd = $("#goodsDetailForm select[name=niClsfCd]").val();
|
|
|
+ cfnAjaxSubmit("/goods/notiInfo/list", "json", fnGoodsDetailNotiInfoSearchCallback, params);
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+ //정보고시 콜백
|
|
|
+ var fnGoodsDetailNotiInfoSearchCallback = function(result) {
|
|
|
+ if (result == null) return;
|
|
|
+
|
|
|
+ var notiHtml = "";
|
|
|
+ var idx = 0;
|
|
|
+ $('#goodsDetailForm').find('#notiArea').html('');
|
|
|
+ notiHtml += '<table class="frmStyle">';
|
|
|
+ notiHtml += '<colgroup><col style="width:20%"/><col/></colgroup>';
|
|
|
+ notiHtml += '<tbody id="infoContents">\n';
|
|
|
+ notiHtml += '<tr><th>고시항목</th><th>고시내용</th></tr>';
|
|
|
+ result.forEach(function(info){
|
|
|
+ notiHtml += '<tr><th>'+ gagajf.convNull(info.niItemNm, '') +'<input type="hidden" name="niItemCd" value="'+ gagajf.convNull(info.niItemCd, '') +'" />\n<input type="hidden" name="dispOrd" value="'+ gagajf.convNull(info.dispOrd, '') +'" /></th>';
|
|
|
+ notiHtml += '<td><input type="text" name="niContent" value="'+ gagajf.convNull(info.niContent, '') +'"/></td>\n';
|
|
|
+ notiHtml += '</tr>\n';
|
|
|
+ });
|
|
|
+ notiHtml += '</tbody></table>';
|
|
|
+
|
|
|
+ $('#goodsDetailForm').find('#notiArea').append(notiHtml);
|
|
|
+ }
|
|
|
+
|
|
|
+ //옵션추가버튼 클릭 시
|
|
|
+ $('#btnOptionAdd').click(function() {
|
|
|
+
|
|
|
+ var len = $('#goodsDetailForm').find('#optionList tr').length;
|
|
|
+ var goodsCd = $('#goodsDetailForm input[name=goodsCd]').val();
|
|
|
+
|
|
|
+ var addOptionHtml = "";
|
|
|
+ addOptionHtml += '<tr>\n';
|
|
|
+ addOptionHtml += ' <td><input type="text" name="optCd1" class="W100" maxlength="30"/>\n';
|
|
|
+ addOptionHtml += ' </td>\n';
|
|
|
+ addOptionHtml += ' <td><input type="text" name="optCd2" class="W100" maxlength="30"/>\n';
|
|
|
+ addOptionHtml += ' </td>\n';
|
|
|
+ addOptionHtml += ' <td><input type="text" class="w100p aR" name="addPrice" maxlength="7" data-valid-type="numeric" value="0"/>\n';
|
|
|
+ addOptionHtml += ' </td>\n';
|
|
|
+ addOptionHtml += ' <td><input type="text" class="w100p aC" name="dispOrd" maxlength="7" data-valid-type="numeric" value="'+ (len+1)+'"/>\n';
|
|
|
+ addOptionHtml += ' </td>\n';
|
|
|
+ addOptionHtml += ' <td><select name="dispYn" class="w100p aC">\n';
|
|
|
+ addOptionHtml += ' <option value="Y" selected>Yes</option>\n';
|
|
|
+ addOptionHtml += ' <option value="N">No</option>\n';
|
|
|
+ addOptionHtml += ' </select>\n';
|
|
|
+ addOptionHtml += ' </td>\n';
|
|
|
+ addOptionHtml += ' <td><input type="text" class="w100p aC" name="editCurrStockQty" maxlength="7" data-valid-type="numeric" value="0"/>\n';
|
|
|
+ addOptionHtml += ' </td>\n';
|
|
|
+ addOptionHtml += ' <td><input type="text" class="w100p aC" name="baseStockQty" maxlength="7" data-valid-type="integer" value="0">\n';
|
|
|
+ addOptionHtml += ' </td>\n';
|
|
|
+ addOptionHtml += ' <td><select name="soldoutYn" class="w100p aC" >\n';
|
|
|
+ addOptionHtml += ' <option value="Y">Yes</option>\n';
|
|
|
+ addOptionHtml += ' <option value="N" selected>No</option>\n';
|
|
|
+ addOptionHtml += ' </select>\n';
|
|
|
+ addOptionHtml += ' <input type="hidden" name="hidSoldoutYn"/>\n';
|
|
|
+ addOptionHtml += ' </td>\n';
|
|
|
+ addOptionHtml += ' <td><button type="button" class="btn icn" onclick="$(this).parent().parent().remove();return false;"><i class="fa fa-times" aria-hidden="true" ></i></button></td>\n';
|
|
|
+ addOptionHtml += '</tr>\n';
|
|
|
+
|
|
|
+ $('#optionList').append(addOptionHtml);
|
|
|
+ });
|
|
|
+
|
|
|
+ //상품저장 버튼 클릭 시
|
|
|
+ $('#btnGoodsDetailSave').click(function() {
|
|
|
+
|
|
|
+ var optCheck = false;
|
|
|
+ var idx = 0;
|
|
|
+ var formId = '#goodsDetailForm';
|
|
|
+
|
|
|
+ // 입력 값 체크
|
|
|
+ if (!gagajf.validation(formId))
|
|
|
+ return false;
|
|
|
+
|
|
|
+
|
|
|
+ //list가 등록되지 않은 상품은 상태변경 불가
|
|
|
+ if(Number($("#goodsDetailForm input[name=listPrice]").val()) == 0){
|
|
|
+ mcxDialog.alertC("정상가를 바르게 입력해 주세요.", {
|
|
|
+ sureBtnText: "확인",
|
|
|
+ sureBtnClick: function() {
|
|
|
+ $("#goodsDetailForm input[name=listPrice]").focus();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ //판매가가 0인 상품은 상태변경 불가
|
|
|
+ if(Number($("#goodsDetailForm input[name=currPrice]").val()) == 0){
|
|
|
+ mcxDialog.alertC("판매가가를 바르게 입력해 주세요.", {
|
|
|
+ sureBtnText: "확인",
|
|
|
+ sureBtnClick: function() {
|
|
|
+ $("#goodsDetailForm input[name=currPrice]").focus();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ //정상가와 판매가 비교
|
|
|
+ if(Number($("#goodsDetailForm input[name=listPrice]").val().removeComma()) < Number($("#goodsDetailForm input[name=currPrice]").val().removeComma())) {
|
|
|
+ mcxDialog.alertC("판매가를 올바르게 입력해주세요.", {
|
|
|
+ sureBtnText: "확인",
|
|
|
+ sureBtnClick: function() {
|
|
|
+ $("#goodsDetailForm input[name=currPrice]").focus();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(Number($("#goodsDetailForm input[name=sellFeeRate]").val()) < 0 || Number($("#goodsDetailForm input[name=sellFeeRate]").val()) > 100) {
|
|
|
+ mcxDialog.alertC("판매수수료를 올바르게 입력해주세요.", {
|
|
|
+ sureBtnText: "확인",
|
|
|
+ sureBtnClick: function() {
|
|
|
+ $("#goodsDetailForm input[name=sellFeeRate]").focus();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if(Number($("#goodsDetailForm input[name=pntPrate]").val()) < 0 || Number($("#goodsDetailForm input[name=pntPrate]").val()) > 100) {
|
|
|
+ mcxDialog.alertC("PC 포인트를 올바르게 입력해주세요.", {
|
|
|
+ sureBtnText: "확인",
|
|
|
+ sureBtnClick: function() {
|
|
|
+ $("#goodsDetailForm input[name=pntPrate]").focus();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if(Number($("#goodsDetailForm input[name=pntMrate]").val()) < 0 || Number($("#goodsDetailForm input[name=pntMrate]").val()) > 100) {
|
|
|
+ mcxDialog.alertC("MOBILE 포인트를 올바르게 입력해주세요.", {
|
|
|
+ sureBtnText: "확인",
|
|
|
+ sureBtnClick: function() {
|
|
|
+ $("#goodsDetailForm input[name=pntMrate]").focus();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 주문수량
|
|
|
+ if (Number($("#goodsDetailForm input[name=minOrdQty]").val()) <= 0) {
|
|
|
+ mcxDialog.alertC("최소주문 수량을 입력해 주세요.", {
|
|
|
+ sureBtnText: "확인",
|
|
|
+ sureBtnClick: function() {
|
|
|
+ $("#goodsDetailForm input[name=minOrdQty]").focus();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (Number($("#goodsDetailForm input[name=maxOrdQty]").val()) <= 0) {
|
|
|
+ mcxDialog.alertC("최대주문 수량을 입력해 주세요.", {
|
|
|
+ sureBtnText: "확인",
|
|
|
+ sureBtnClick: function() {
|
|
|
+ $("#goodsDetailForm input[name=maxOrdQty]").focus();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (Number($("#goodsDetailForm input[name=dayMaxOrdQty]").val()) <= 0) {
|
|
|
+ mcxDialog.alertC("ID당1일최대구매 수량을 입력해 주세요.", {
|
|
|
+ sureBtnText: "확인",
|
|
|
+ sureBtnClick: function() {
|
|
|
+ $("#goodsDetailForm input[name=dayMaxOrdQty]").focus();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(Number($("#goodsDetailForm input[name=minOrdQty]").val()) > Number($("#goodsDetailForm input[name=maxOrdQty]").val())){
|
|
|
+ mcxDialog.alertC("최소주문수량은 최대주문수량보다 클 수 없습니다.", {
|
|
|
+ sureBtnText: "확인",
|
|
|
+ sureBtnClick: function() {
|
|
|
+ $("#goodsDetailForm input[name=minOrdQty]").focus();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(Number($("#goodsDetailForm input[name=maxOrdQty]").val()) > Number($("#goodsDetailForm input[name=dayMaxOrdQty]").val())){
|
|
|
+ mcxDialog.alertC("최대주문수량이 ID당1일최대구매수량보다 클 수 없습니다.", {
|
|
|
+ sureBtnText: "확인",
|
|
|
+ sureBtnClick: function() {
|
|
|
+ $("#goodsDetailForm input[name=maxOrdQty]").focus();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(isNaN(Date.parse($("#goodsDetailForm input[name=sellStYMD]").val()))){
|
|
|
+ mcxDialog.alertC('날짜형식이 아닙니다.', {
|
|
|
+ sureBtnText: "확인",
|
|
|
+ sureBtnClick: function() {
|
|
|
+ $("#goodsDealForm input[name=sellStYMD]").focus();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(isNaN(Date.parse($("#goodsDetailForm input[name=sellEdYMD]").val()))){
|
|
|
+ mcxDialog.alertC('날짜형식이 아닙니다.', {
|
|
|
+ sureBtnText: "확인",
|
|
|
+ sureBtnClick: function() {
|
|
|
+ $("#goodsDealForm input[name=sellEdYMD]").focus();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ idx = 0;
|
|
|
+
|
|
|
+ if($("#goodsDetailForm").find("#optionList tr").length == 0){
|
|
|
+ mcxDialog.alert("옵션정보를 입력해 주세요");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ $("#optionList tr").each(function() {
|
|
|
+ var optCd1 = $(this).find("input[name=optCd1]").val();
|
|
|
+ var optCd2 = $(this).find("input[name=optCd2]").val();
|
|
|
+ var baseStockQty = $(this).find("input[name=baseStockQty]").val();
|
|
|
+ var dispOrd = $(this).find("input[name=dispOrd]").val();
|
|
|
+ var dispYn = $(this).find("select[name=dispYn]").val();
|
|
|
+ var soldoutYn = $(this).find("select[name=soldoutYn]").val();
|
|
|
+ var addPrice = $(this).find("input[name=addPrice]").val();
|
|
|
+ var editCurrStockQty = $(this).find("input[name=editCurrStockQty]").val();
|
|
|
+
|
|
|
+ //입점용 추가조건 S
|
|
|
+ if (gagajf.isNull(optCd1)){
|
|
|
+ optCheck = true;
|
|
|
+ mcxDialog.alertC("옵션1를 입력해주세요", {
|
|
|
+ sureBtnText: "확인",
|
|
|
+ sureBtnClick: function() {
|
|
|
+ $("#optionList tr").find("input[name=optCd1]").eq(idx).focus();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (gagajf.isNull(optCd2)){
|
|
|
+ optCheck = true;
|
|
|
+ mcxDialog.alertC("옵션2를 입력해주세요", {
|
|
|
+ sureBtnText: "확인",
|
|
|
+ sureBtnClick: function() {
|
|
|
+ $("#optionList tr").find("input[name=optCd2]").eq(idx).focus();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 첫번째 옵션2의 정보를 확인하여 동일 한지 체크--- ?
|
|
|
+ /* var firstOptCd2 = $("#optionList tr").find("input[name=optCd2]").eq(idx).val();
|
|
|
+ if ((gagajf.isNull(firstOptCd2) == !gagajf.isNull(optCd2)) || (!gagajf.isNull(firstOptCd2) == gagajf.isNull(optCd2))){
|
|
|
+ optCheck = true;
|
|
|
+ mcxDialog.alertC("옵션2를 확인해주세요", {
|
|
|
+ sureBtnText: "확인",
|
|
|
+ sureBtnClick: function() {
|
|
|
+ $("#optionList tr").find("input[name=optCd2]").eq(idx).focus();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return false;
|
|
|
+ } */
|
|
|
+ //입점용 추가조건 E
|
|
|
+
|
|
|
+ if(gagajf.isNull(addPrice)){
|
|
|
+ optCheck = true;
|
|
|
+ mcxDialog.alertC("추가가격을 입력해주세요", {
|
|
|
+ sureBtnText: "확인",
|
|
|
+ sureBtnClick: function() {
|
|
|
+ $("#optionList tr").find("input[name=addPrice]").eq(idx).focus();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(gagajf.isNull(dispOrd)){
|
|
|
+ optCheck = true;
|
|
|
+ mcxDialog.alertC("노출순서를 입력해주세요", {
|
|
|
+ sureBtnText: "확인",
|
|
|
+ sureBtnClick: function() {
|
|
|
+ $("#optionList tr").find("input[name=dispOrd]").eq(idx).focus();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(gagajf.isNull(editCurrStockQty)){
|
|
|
+ optCheck = true;
|
|
|
+ mcxDialog.alertC("가용재고를 입력해주세요", {
|
|
|
+ sureBtnText: "확인",
|
|
|
+ sureBtnClick: function() {
|
|
|
+ $("#optionList tr").find("input[name=editCurrStockQty]").eq(idx).focus();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if(gagajf.isNull(baseStockQty)){
|
|
|
+ optCheck = true;
|
|
|
+ mcxDialog.alertC("안전재고를 입력해주세요", {
|
|
|
+ sureBtnText: "확인",
|
|
|
+ sureBtnClick: function() {
|
|
|
+ $("#optionList tr").find("input[name=baseStockQty]").eq(idx).focus();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ idx++;
|
|
|
+ });
|
|
|
+
|
|
|
+ if(optCheck) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ //고시정보가 등록되지 않은 상품 체크
|
|
|
+ if($("#goodsDetailForm #notiArea").find("#infoContents tr").length == 0){
|
|
|
+ mcxDialog.alert("고시정보를 입력해 주세요");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ idx = 0;
|
|
|
+ //고시정보 필수나 전시표시값 입력여부 확인
|
|
|
+ $("#goodsDetailForm #notiArea").find("#infoContents tr").each(function() {
|
|
|
+ if (typeof($(this).find("td input[name=niContent]").val()) != 'undefined' && gagajf.isNull($(this).find("td input[name=niContent]").val())){
|
|
|
+ optCheck = true;
|
|
|
+ mcxDialog.alertC("고시정보를 입력해주세요.");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ idx++;
|
|
|
+ });
|
|
|
+
|
|
|
+ if(optCheck) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ var dcRate = 0;
|
|
|
+ var listPrice = $("#goodsDetailForm input[name=listPrice]").val().removeComma();
|
|
|
+ var currPrice = $("#goodsDetailForm input[name=currPrice]").val().removeComma();
|
|
|
+ dcRate = 100 - Math.floor(Number(currPrice) / Number(listPrice) * 100); //절사
|
|
|
+
|
|
|
+ if (dcRate < 0){
|
|
|
+ mcxDialog.alertC('할인율이 0보다 작습니다.\n판매가를 확인해주세요.', {
|
|
|
+ sureBtnText: "확인",
|
|
|
+ sureBtnClick: function() {
|
|
|
+ $("#goodsDetailForm input[name=currPrice]").focus();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return false;
|
|
|
+ }else if (dcRate >= 90){
|
|
|
+ mcxDialog.confirmC("할인율이 90%이상입니다. 계속하시겠습니까?", {
|
|
|
+ btn: ["아니요","예"],
|
|
|
+ btnClick: function(index){
|
|
|
+ if (index == 1){
|
|
|
+ optCheck = true;
|
|
|
+ } else {
|
|
|
+ fnGoodsSave();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ }else{
|
|
|
+ $("#goodsDetailForm").find("#dcRateTxt").html(dcRate);
|
|
|
+ $("#goodsDetailForm input[name=dcRate]").val(dcRate);
|
|
|
+ fnGoodsSave();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (optCheck) return false;
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+ //고시정보 저장을 위한 데이터 처리
|
|
|
+ var fnGoodsDeailNotiSave = function(){
|
|
|
+
|
|
|
+ var goodsCd = $('#goodsDetailForm input[name=goodsCd]').val();
|
|
|
+ var goodsInfoList = [];
|
|
|
+
|
|
|
+ var index = 0;
|
|
|
+ $("#goodsDetailForm").find("#infoContents tr").each(function() {
|
|
|
+ if (index > 0){
|
|
|
+ var goodsInfo = {goodsCd: goodsCd
|
|
|
+ , niClsfCd : $('#goodsDetailForm select[name=niClsfCd]').val()
|
|
|
+ , niItemCd : $(this).find("input[name=niItemCd]").val()
|
|
|
+ , niContent : $(this).find("input[name=niContent]").val()
|
|
|
+ , dispOrd : $(this).find("input[name=dispOrd]").val()
|
|
|
+ };
|
|
|
+ goodsInfoList.push(goodsInfo);
|
|
|
+ }
|
|
|
+ index++;
|
|
|
+ });
|
|
|
+
|
|
|
+ $("#goodsDetailForm input[name=notiList]").val(JSON.stringify(goodsInfoList));
|
|
|
+ }
|
|
|
+
|
|
|
+ //저장처리
|
|
|
+ var fnGoodsSave = function(){
|
|
|
+ mcxDialog.confirm('저장하시겠습니까?', {
|
|
|
+ cancelBtnText: "취소",
|
|
|
+ sureBtnText: "확인",
|
|
|
+ sureBtnClick: function(){
|
|
|
+
|
|
|
+ fnGoodsDeailNotiSave();
|
|
|
+
|
|
|
+ $('#goodsDetailForm input[name=goodsNm]').val($('#goodsDetailForm input[name=goodsNm]').val().trim().replace(/\n|\r/g, "<br/>").replace(/\"/gi, """).replace(/\'/gi, "'"));
|
|
|
+ $('#goodsDetailForm input[name=goodsTnm]').val($('#goodsDetailForm input[name=goodsTnm]').val().trim().replace(/\n|\r/g, "<br/>").replace(/\"/gi, """).replace(/\'/gi, "'"));
|
|
|
+ $('#goodsDetailForm input[name=goodsSnm1]').val($('#goodsDetailForm input[name=goodsSnm1]').val().trim().replace(/\n|\r/g, "<br/>").replace(/\"/gi, """).replace(/\'/gi, "'"));
|
|
|
+
|
|
|
+ gagajf.ajaxFormSubmit("/goods/detail/create", "#goodsDetailForm", fnGoodsSaveCallBack);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ //저장후 callback
|
|
|
+ var fnGoodsSaveCallBack = function(){
|
|
|
+ fnClickLnb('A2019'); // -- 메뉴 클릭
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ $(document).ready(function() {
|
|
|
+
|
|
|
+ // 업체 브랜드 조회
|
|
|
+ fnBrand([[${sessionInfo.supplyCompCd}]], '');
|
|
|
+
|
|
|
+ // 판매일자 설정
|
|
|
+ var date = new Date();
|
|
|
+ $('#goodsDetailForm input[name=sellStYMD]').val(date.format("YYYY-MM-DD"));
|
|
|
+ $('#goodsDetailForm input[name=sellEdYMD]').val("2030-12-31");
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+/*]]>*/
|
|
|
+</script>
|
|
|
+</html>
|