GoodsDetailForm.html 111 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727
  1. <!DOCTYPE html>
  2. <html lang="ko"
  3. xmlns:th="http://www.thymeleaf.org">
  4. <!--
  5. *******************************************************************************
  6. * @source : GoodsDetailForm.html
  7. * @desc : 상품 상세 팝업
  8. *============================================================================
  9. * STYLE24
  10. * Copyright(C) 2020 TSIT, All rights reserved.
  11. *============================================================================
  12. * VER DATE AUTHOR DESCRIPTION
  13. * === =========== ========== =============================================
  14. * 1.0 2020.10.23 eskim 최초 작성
  15. *******************************************************************************
  16. -->
  17. <div class="modalPopup" data-width="1700" data-height="870"> <!-- data-width="1500" data-height="870" -->
  18. <div class="panelStyle">
  19. <div class="panelTitle">
  20. <h2>상품상세</h2>
  21. <button type="button" class="close" onclick="fnGoodsDetailClose()"><i class="fa fa-times"></i></button>
  22. </div>
  23. <form id="goodsDetailForm" name="goodsDetailForm" action="#" th:method="post">
  24. <input type="hidden" id="mode" name="mode" th:value="${params.mode}"/>
  25. <input type="hidden" id="goodsCd" name="goodsCd" th:value="${params.goodsCd}"/>
  26. <input type="hidden" id="niClsfCd" name="niClsfCd"/>
  27. <input type="hidden" id="selfGoodsYn" name="selfGoodsYn"/>
  28. <input type="hidden" id="notiList" name="notiList" />
  29. <input type="hidden" id="chDataYn" name="chDataYn" />
  30. <input type="hidden" id="chStockDataYn" name="chStockDataYn" />
  31. <input type="hidden" id="chCfrmYn" name="chCfrmYn" />
  32. <input type="hidden" id="goodsImageYn" name="goodsImageYn" />
  33. <input type="hidden" id="niClsfNm" name="niClsfNm" />
  34. <input type="hidden" id="uploadGoodsUrl" name="uploadGoodsUrl" th:value="${@environment.getProperty('upload.goods.view')}"/>
  35. <input type="hidden" id="mainColorCd" name="mainColorCd" />
  36. <input type="hidden" id="goodsType" name="goodsType" />
  37. <input type="hidden" id="goodsComposeList" name="goodsComposeList" />
  38. <input type="hidden" id="costPrice" name="costPrice" />
  39. <input type="hidden" id="repGoodsCd" name="repGoodsCd" /> <!-- 대표상품(딜 가격) -->
  40. <input type="hidden" id="goodsStat90Cnt" name="goodsStat90Cnt" /> <!-- 승인완료이력 수(승인완료이력이 있을경우 scm에서도 승인완료로 변경가능) -->
  41. <div class="panelContent">
  42. <table class="frmStyle">
  43. <colgroup>
  44. <col width="11%"/>
  45. <col/>
  46. <col width="11%"/>
  47. <col width="14%"/>
  48. <col width="10%"/>
  49. <col width="14%"/>
  50. <col width="10%"/>
  51. <col width="14%"/>
  52. </colgroup>
  53. <tr>
  54. <th>브랜드명<em class="required" title="필수"></em></th>
  55. <td colspan="3">
  56. <select name="selSupplyCompCd" id="selSupplyCompCd" disabled="disabled" class="w40p">
  57. <option value="">[선택]</option>
  58. <option th:if="${supplyCompList}" th:each="oneData, status : ${supplyCompList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  59. </select>
  60. <select name="selBrandCd" id="selBrandCd" disabled="disabled" class="w40p">
  61. <option value="">[선택]</option>
  62. </select>
  63. <input type="hidden" name="supplyCompCd" id="supplyCompCd" />
  64. <input type="hidden" name="brandGrpNm" id="brandGrpNm" />
  65. <input type="hidden" name="brandCd" id="brandCd" />
  66. </td>
  67. <th>상품코드<em class="required" title="필수"></em></th>
  68. <td><div id="goodsCdTxt"></div></td>
  69. <th>원코드</th>
  70. <td><span id="supplyGoodsCdTxt"></span></td>
  71. </tr>
  72. </table>
  73. <!-- TABS SPACE -->
  74. <div class="tabs">
  75. <!-- TABS NAVI -->
  76. <div class="tabsNav">
  77. <ul>
  78. <li class="on"><a href="#goodstab1">기본정보</a></li>
  79. <li><a href="#goodstab2">옵션/재고정보</a></li>
  80. <li id="goodsDescTab"><a href="#goodstab3">상품상세정보</a></li>
  81. <li id="goodsNotiTab"><a href="#goodstab4">고시정보</a></li>
  82. <li id="goodsComposeTab" style="display:none;"><a href="#goodstab5">구성상품</a></li>
  83. <li id="goodsSafeTab"><a href="#goodstab6">안전인증</a></li>
  84. <li><a href="#goodstab7">변경이력</a></li>
  85. </ul>
  86. </div>
  87. <!-- //TABS NAVI -->
  88. <!-- TABS CONTENTS -->
  89. <ul class="tabsCont" th:with="uxImgUrl=${@environment.getProperty('domain.uximage')}">
  90. <!-- TAB1 : 기본정보 -->
  91. <li class="tab on" id="goodstab1">
  92. <!-- TAB1 CONTENTS AREA -->
  93. <div class="panelStyle">
  94. <table class="frmStyle">
  95. <colgroup>
  96. <col/>
  97. <col width="12%"/>
  98. <col width="17%"/>
  99. <col width="12%"/>
  100. <col width="17%"/>
  101. <col width="12%"/>
  102. <col width="17%"/>
  103. </colgroup>
  104. <tbody>
  105. <tr>
  106. <td rowspan="4" style="text-align:center" th:with="uploadGoodsUrl=${@environment.getProperty('upload.goods.view')}">
  107. <img id="goodsImgUrl" src="" width="130px"/>
  108. <input type="hidden" name="sysImgNm" id="sysImgNm" />
  109. </td>
  110. <th>상품타이틀</th>
  111. <td colspan="5">
  112. <input type="text" class="w80p" id="goodsTnm" name="goodsTnm" maxlength=""></input>
  113. <span class="byteChk"><em class="cBlue" id="goodsTnmLen">0</em>/100 bytes</span>
  114. <input type="hidden" id="goodsTnmOrg" name="goodsTnmOrg"/>
  115. </td>
  116. </tr>
  117. <tr>
  118. <th>상품명<em class="required" title="필수"></em></th>
  119. <td colspan="5">
  120. <input type="text" class="w80p" id="goodsNm" name="goodsNm"></input>
  121. <span class="byteChk"><em class="cBlue" id="goodsNmLen">0</em>/200 bytes</span>
  122. <input type="hidden" id="goodsNmOrg" name="goodsNmOrg"/>
  123. </td>
  124. </tr>
  125. <tr>
  126. <th>사용자검색어</th>
  127. <td colspan="5">
  128. <input type="text" class="w60p" id="goodsSnm1" name="goodsSnm1"></input>
  129. <span class="byteChk"><em class="cBlue" id="goodsSnm1Len">0</em>/200 bytes</span><font class="cBlue padL10"><b>* 여러개설정할경우 ; 구분자 사용 / 공백은 자동삭제처리</b></font>
  130. <input type="hidden" id="goodsSnm1Org" name="goodsSnm1Org"/>
  131. </td>
  132. </tr>
  133. <tr>
  134. <th>검색어</th>
  135. <td colspan="5">
  136. <textarea class="textareaR2 w100p" id="goodsSnmTxt" name="goodsSnmTxt" disabled="disabled"></textarea>
  137. <!-- <input type="text" class="w100p" id="goodsSnmTxt" name="goodsSnmTxt" disabled="disabled"></input> -->
  138. <input type="hidden" id="goodsSnm" name="goodsSnm"></input>
  139. </td>
  140. </tr>
  141. <tr>
  142. <td class="aC cRed" style="font-weight:bold;"><span id="goodsTypeNm"></span></td> <!-- 상품타입노출 -->
  143. <th>정상/이월 구분<em class="required" title="필수"></em></th>
  144. <td>
  145. <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}" /></label>
  146. <input type="hidden" id="formalGbOrg" name="formalGbOrg"/>
  147. </td>
  148. <th>상품상태<em class="required" title="필수"></em>
  149. <!-- 아이콘 툴팁 -->
  150. <div class="iconTooltip">
  151. <i class="fa fa-info" aria-hidden="true"></i>
  152. <span class="left aL" style="width:350px;">
  153. 상품승인완료 이력이 있을경우만 '승인완료' 상태로 변경가능
  154. </span>
  155. </div>
  156. <!-- //아이콘 툴팁 -->
  157. </th>
  158. <td>
  159. <select name="goodsStat" id="goodsStat">
  160. <option value="">[선택]</option>
  161. <option th:if="${goodsStatList}" th:each="oneData, status : ${goodsStatList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  162. </select>
  163. <input type="hidden" id="goodsStatOrg" name="goodsStatOrg"/>
  164. </td>
  165. <th>자사몰 노출여부<em class="required" title="필수"></em></th>
  166. <td>
  167. <label class="rdoBtn"><input type="radio" name="selfMallYn" id="selfMallYnY" value="Y" />Y</label>
  168. <label class="rdoBtn"><input type="radio" name="selfMallYn" id="selfMallYnN" value="N"/>N</label>
  169. <input type="hidden" id="selfMallYnOrg" name="selfMallYnOrg"/>
  170. </td>
  171. </tr>
  172. <tr>
  173. <td rowspan="13">&nbsp;</td>
  174. <th>시즌<em class="required" title="필수"></em></th>
  175. <td >
  176. <select name="seasonCd" id="seasonCd">
  177. <option value="">[선택]</option>
  178. <option th:if="${seasonList}" th:each="oneData, status : ${seasonList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  179. </select>
  180. <input type="hidden" id="seasonCdOrg" name="seasonCdOrg"/>
  181. </td>
  182. <th>성별<em class="required" title="필수"></em></th>
  183. <td>
  184. <select name="sexGb" id="sexGb">
  185. <option value="">[선택]</option>
  186. <option th:if="${sexGbList}" th:each="oneData, status : ${sexGbList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  187. </select>
  188. <input type="hidden" id="sexGbOrg" name="sexGbOrg"/>
  189. </td>
  190. <th>스타일년도</th>
  191. <td><span id="styleYearTxt"></span></td>
  192. </tr>
  193. <tr class="chk_deal">
  194. <th>원산지</th>
  195. <td><span id="makeNmTxt"></span></td>
  196. <th>유통구분<em class="required" title="필수"></em></th>
  197. <td><select name="distributionGb" id="distributionGb">
  198. <option value="">[선택]</option>
  199. <option th:if="${distributionGbList}" th:each="oneData, status : ${distributionGbList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  200. </select>
  201. <input type="hidden" id="distributionGbOrg" name="distributionGbOrg"/>
  202. </td>
  203. <th>상품구분<em class="required" title="필수"></em></th>
  204. <td>
  205. <select name="goodsGb" id="goodsGb">
  206. <option value="">[선택]</option>
  207. <option th:if="${goodsGbList}" th:each="oneData, status : ${goodsGbList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  208. </select>
  209. <input type="hidden" id="goodsGbOrg" name="goodsGbOrg"/>
  210. </td>
  211. </tr>
  212. <tr class="chk_deal">
  213. <th>해외구매대행여부</th>
  214. <td><label class="rdoBtn"><input type="radio" name="foreignBuyYn" id="foreignBuyYnY" value="Y" />Y</label>
  215. <label class="rdoBtn"><input type="radio" name="foreignBuyYn" id="foreignBuyYnN" value="N"/>N</label>
  216. <input type="hidden" id="foreignBuyYnOrg" name="foreignBuyYnOrg"/>
  217. </td>
  218. <th>병행수입여부</th>
  219. <td><label class="rdoBtn"><input type="radio" name="parallelImportYn" id="parallelImportYnY" value="Y" />Y</label>
  220. <label class="rdoBtn"><input type="radio" name="parallelImportYn" id="parallelImportYnN" value="N"/>N</label>
  221. <input type="hidden" id="parallelImportYnOrg" name="parallelImportYnOrg"/>
  222. </td>
  223. <th>주문제작여부</th>
  224. <td>
  225. <label class="rdoBtn"><input type="radio" name="orderMadeYn" id="orderMadeYnY" value="Y" />Y</label>
  226. <label class="rdoBtn"><input type="radio" name="orderMadeYn" id="orderMadeYnN" value="N"/>N</label>
  227. <input type="hidden" id="orderMadeYnOrg" name="orderMadeYnOrg"/>
  228. </td>
  229. </tr>
  230. <tr class="chk_deal">
  231. <th>상품연령대</th>
  232. <td>
  233. <select name="ageGrpCd" id="ageGrpCd">
  234. <option value="">[선택]</option>
  235. <option th:if="${ageGrpCdList}" th:each="oneData, status : ${ageGrpCdList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  236. </select>
  237. <input type="hidden" id="ageGrpCdOrg" name="ageGrpCdOrg"/>
  238. </td>
  239. <th>선물 주문가능여부<em class="required" title="필수"></em></th>
  240. <td>
  241. <label class="rdoBtn"><input type="radio" name="giftPackYn" id="giftPackYnY" value="Y" />Y</label>
  242. <label class="rdoBtn"><input type="radio" name="giftPackYn" id="giftPackYnN" value="N"/>N</label>
  243. <input type="hidden" id="giftPackYnOrg" name="giftPackYnOrg"/>
  244. </td>
  245. <th>가격변경일</th>
  246. <td><span id="priceUpdDtTxt"></span></td>
  247. </tr>
  248. <tr>
  249. <th>정상가</th>
  250. <td class="aR"><span id="listPriceTxt"></span> 원
  251. <input type="hidden" id="listPrice" name="listPrice"/>
  252. </td>
  253. <th>판매가<em class="required" title="필수"></em></th>
  254. <td><input type="text" class="w80p aR" id="currPrice" name="currPrice" maxlength="10" data-valid-type="numeric"/> 원
  255. <input type="hidden" id="currPriceOrg" name="currPriceOrg"/>
  256. </td>
  257. <th>할인율</th>
  258. <td class="aR" ><span id="dcRateTxt"></span> % <input type="hidden" id="dcRate" name="dcRate"/></td>
  259. </tr>
  260. <tr class="chk_deal" id="selfGoodsNSellFeeRate">
  261. <th>최초승인일</th>
  262. <td><span id="frstCfrmDtTxt"></span></td>
  263. <th>판매수수료율<em class="required" title="필수"></em></th>
  264. <td><input type="text" class="w80p aR" id="sellFeeRate" name="sellFeeRate" maxlength="10" data-valid-type="numeric"/> %
  265. <input type="hidden" id="sellFeeRateOrg" name="sellFeeRateOrg"/>
  266. </td>
  267. <th>과세구분</th>
  268. <td>
  269. <select name="taxGb" disabled="disabled">
  270. <option value="">[선택]</option>
  271. <option value="10">과세</option>
  272. <option value="20">비과세</option>
  273. <option value="30">면세</option>
  274. </select>
  275. </td>
  276. </tr>
  277. <tr class="chk_deal">
  278. <th>품목코드<em class="required" title="필수"></em></th>
  279. <td colspan="3">
  280. <select name="itemkindCd" id="itemkindCd" th:disabled="${sessionInfo.roleCd != 'G001_B000'}">
  281. <option th:if="${itemkindList}" th:each="oneData, status : ${itemkindList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  282. </select>
  283. <input type="hidden" id="orgItemkindCd" name="orgItemkindCd"/>
  284. <th:block th:if="${sessionInfo.roleCd == 'G001_B000'}">
  285. <button type="button" class="btn btn-success btn-lg" id="btnGoodsItemkindChange">품목변경</button>
  286. </th:block>
  287. </td>
  288. <th>출고처<em class="required" title="필수"></em></th>
  289. <td>
  290. <select name="delvLocCd" id="delvLocCd">
  291. </select>
  292. <input type="hidden" id="delvLocCdOrg" name="delvLocCdOrg"/>
  293. </td>
  294. </tr>
  295. <tr class="chk_deal">
  296. <th>반품여부<em class="required" title="필수"></em></th>
  297. <td>
  298. <label class="rdoBtn"><input type="radio" name="returnableYn" id="returnableYnY" value="Y" />Y</label>
  299. <label class="rdoBtn"><input type="radio" name="returnableYn" id="returnableYnN" value="N"/>N</label>
  300. <input type="hidden" id="returnableYnOrg" name="returnableYnOrg"/>
  301. </td>
  302. <th>교환여부<em class="required" title="필수"></em></th>
  303. <td colspan="3">
  304. <label class="rdoBtn"><input type="radio" name="changeableYn" id="changeableYnY" value="Y" />Y</label>
  305. <label class="rdoBtn"><input type="radio" name="changeableYn" id="changeableYnN" value="N"/>N</label>
  306. <input type="hidden" id="changeableYnOrg" name="changeableYnOrg"/>
  307. </td>
  308. </tr>
  309. <tr class="chk_deal">
  310. <th>신규가입구매가능여부<em class="required" title="필수"></em></th>
  311. <td colspan="5">
  312. <label class="rdoBtn"><input type="radio" name="newCustOrdYn" id="newCustOrdYnY" value="Y" />Y</label>
  313. <label class="rdoBtn"><input type="radio" name="newCustOrdYn" id="newCustOrdYnN" value="N"/>N</label>
  314. <input type="hidden" id="newCustOrdYnOrg" name="newCustOrdYnOrg"/>
  315. <input name="newCustOrdStdt" id="newCustOrdStdt" type="text" class="w80 schDate" maxlength="10" required="required" data-valid-name="판매시작일" />
  316. <input type="hidden" id="newCustOrdStdtOrg" name="newCustOrdStdtOrg"/>
  317. ~
  318. <input name="newCustOrdEddt" id="newCustOrdEddt" type="text" class="w80 schDate" maxlength="10" required="required" data-valid-name="판매 종료일" />
  319. <input type="hidden" id="newCustOrdEddtOrg" name="newCustOrdEddtOrg"/>
  320. </td>
  321. </tr>
  322. <tr class="chk_deal">
  323. <th>배송비정책<em class="required" title="필수"></em></th>
  324. <td>
  325. <select name="delvFeeCd">
  326. </select>
  327. <input type="hidden" id="delvFeeCdOrg" name="delvFeeCdOrg"/>
  328. </td>
  329. <th>기본배송비</th>
  330. <td>
  331. <input type="text" class="w100 aR" id="delvFee" name="delvFee" disabled="disabled"/> 원
  332. </td>
  333. <th>무료배송비기준</th>
  334. <td>
  335. <input type="text" class="w100 aR" id="minOrdAmt" name="minOrdAmt" disabled="disabled"/> 원
  336. </td>
  337. </tr>
  338. <tr class="chk_deal">
  339. <th>PC포인트<em class="required" title="필수"></em></th>
  340. <td>
  341. <input type="text" class="w50 aR" id="pntPrate" name="pntPrate" data-valid-type="preal" maxlength="3"/> % /&nbsp;
  342. <input type="hidden" id="pntPrateOrg" name="pntPrateOrg"/>
  343. <label class="rdoBtn"><input type="radio" name="prePpntUsableYn" id="prePpntUsableYnY" value="Y"/>Y</label>
  344. <label class="rdoBtn"><input type="radio" name="prePpntUsableYn" id="prePpntUsableYnN" value="N"/>N</label>
  345. <input type="hidden" id="prePpntUsableYnOrg" name="prePpntUsableYnOrg"/>
  346. </td>
  347. <th>모바일포인트<em class="required" title="필수"></em></th>
  348. <td>
  349. <input type="text" class="w50 aR" id="pntMrate" name="pntMrate" data-valid-type="preal" maxlength="3"/> % /&nbsp;
  350. <input type="hidden" id="pntMrateOrg" name="pntMrateOrg"/>
  351. <label class="rdoBtn"><input type="radio" name="preMpntUsableYn" id="preMpntUsableYnY" value="Y"/>Y</label>
  352. <label class="rdoBtn"><input type="radio" name="preMpntUsableYn" id="preMpntUsableYnN" value="N"/>N</label>
  353. <input type="hidden" id="preMpntUsableYnOrg" name="preMpntUsableYnOrg"/>
  354. </td>
  355. <th>성인용품여부<em class="required" title="필수"></em></th>
  356. <td>
  357. <label class="rdoBtn"><input type="radio" name="adultYn" id="adultYnY" value="Y" />Y</label>
  358. <label class="rdoBtn"><input type="radio" name="adultYn" id="adultYnN" value="N"/>N</label>
  359. <input type="hidden" id="adultYnOrg" name="adultYnOrg"/>
  360. </td>
  361. </tr>
  362. <tr class="chk_deal">
  363. <th>최소주문수량<em class="required" title="필수"></em></th>
  364. <td>
  365. <input type="text" class="w100 aR" id="minOrdQty" name="minOrdQty" data-valid-type="integer" maxlength="5"/>
  366. <input type="hidden" id="minOrdQtyOrg" name="minOrdQtyOrg"/>
  367. </td>
  368. <th>최대주문수량<em class="required" title="필수"></em></th>
  369. <td>
  370. <input type="text" class="w100 aR" id="maxOrdQty" name="maxOrdQty" data-valid-type="integer" maxlength="5"/>
  371. <input type="hidden" id="maxOrdQtyOrg" name="maxOrdQtyOrg"/>
  372. </td>
  373. <th>ID당1일최대구매수량<em class="required" title="필수"></em></th>
  374. <td>
  375. <input type="text" class="w100 aR" id="dayMaxOrdQty" name="dayMaxOrdQty" data-valid-type="integer" maxlength="5"/>
  376. <input type="hidden" id="dayMaxOrdQtyOrg" name="dayMaxOrdQtyOrg"/>
  377. </td>
  378. </tr>
  379. <tr>
  380. <!-- <th>안전인증번호</th>
  381. <td>
  382. <input type="text" class="w150" id="certNum" name="certNum" maxlength="20"/>
  383. <input type="hidden" id="certNumOrg" name="certNumOrg"/>
  384. <button type="button" class="btn btn-success btn-lg" id="btnGoodsSafetyCertNum">안전인증</button>
  385. </td> -->
  386. <th>판매기간<em class="required" title="필수"></em></th>
  387. <td colspan="3">
  388. <input name="sellStYMD" id="sellStYMD" type="text" class="w80 schDate" maxlength="10" required="required" data-valid-name="판매시작일" />
  389. <select name="sellStHH" id="sellStHH" required="required" data-valid-name="판매 시작시간">
  390. <th:block th:each="num, index : ${#numbers.sequence(0,23)}">
  391. <option th:value="${#numbers.formatInteger(num,2)}" th:text="|${#numbers.formatInteger(num,2)}시|" >시간</option>
  392. </th:block>
  393. </select>
  394. <input name="sellStdt" id="sellStdt" type="hidden" />
  395. ~
  396. <input name="sellEdYMD" id="sellEdYMD" type="text" class="w80 schDate" maxlength="10" required="required" data-valid-name="판매 종료일" />
  397. <select name="sellEdHH" id="sellEdHH" required="required" data-valid-name="판매 종료시간">
  398. <th:block th:each="num: ${#numbers.sequence(0,23)}">
  399. <option th:value="${#numbers.formatInteger(num,2)}" th:text="|${#numbers.formatInteger(num,2)}시|" th:selected="${#numbers.formatInteger(num,2)}==23 ? 'true'">시간</option>
  400. </th:block>
  401. </select>
  402. <input name="sellEddt" id="sellEddt" type="hidden" />
  403. </td>
  404. </tr>
  405. </tbody>
  406. </table>
  407. </div>
  408. <!-- //TAB1 CONTENTS AREA -->
  409. </li>
  410. <!-- //TAB1 -->
  411. <!-- TAB2 : 옵셥/재고 -->
  412. <li class="tab" id="goodstab2">
  413. <!-- TAB2 CONTENTS AREA -->
  414. <div class="panelStyle">
  415. <!-- <ul class="notice cBlue">
  416. <li><strong>상품 이미지 사이즈</strong> : <em><strong>600 × 600</strong> px</em></li>
  417. </ul> -->
  418. <div id="sizeStockArea"></div>
  419. </div>
  420. <!-- //TAB2 CONTENTS AREA -->
  421. </li>
  422. <!-- //TAB2 : 이미지/옵셥/재고 -->
  423. <!-- TAB3 : 상품상세 -->
  424. <li class="tab" id="goodstab3">
  425. <!-- TAB3 CONTENTS AREA -->
  426. <div class="panelStyle">
  427. <table class="frmStyle">
  428. <colgroup>
  429. <col width="12%"/>
  430. <col/>
  431. </colgroup>
  432. <tr>
  433. <th>상세설명</th>
  434. <td><label class="chkBox"><input type="checkbox" name="chkDescKeep" checked="checked" value="Y">정보유지<span></span></label>
  435. </td>
  436. </tr>
  437. </table>
  438. <!-- TABS SPACE -->
  439. <div class="tabsJr">
  440. <!-- TABS NAVI -->
  441. <ul class="tabsJrNav">
  442. <li class="on"><a href="#goodstab12">상세html</a></li>
  443. <li><a href="#goodstab11">타이틀/내용/특징</a></li>
  444. </ul>
  445. <!-- //TABS NAVI -->
  446. <!-- TABS CONTENT -->
  447. <ul class="tabsJrCont">
  448. <!-- TAB11 CONTENTS AREA -->
  449. <!-- TAB -->
  450. <li class="tabJr on" id="goodstab12">
  451. <div class="panelStyle">
  452. <!-- TAB11 CONTENTS AREA -->
  453. <table class="frmStyle">
  454. <colgroup>
  455. <col width="12%"/>
  456. <col/>
  457. </colgroup>
  458. <tr>
  459. <th>상품상세</th>
  460. <td><div class="tabJrContArea">
  461. <textarea class="textareaR4 summernote" name="goodsDesc" id="goodsDesc"></textarea>
  462. </div>
  463. </td>
  464. </tr>
  465. <tr>
  466. <th>상위(PC)</th>
  467. <td><div class="tabJrContArea">
  468. <textarea class="textareaR4 summernote" name="goodsPcTopDesc" id="goodsPcTopDesc"></textarea>
  469. </div>
  470. </td>
  471. </tr>
  472. <tr>
  473. <th>상위(MOBILE)</th>
  474. <td><div class="tabJrContArea">
  475. <textarea class="textareaR4 summernote" name="goodsMobileTopDesc" id="goodsMobileTopDesc"></textarea>
  476. </div>
  477. </td>
  478. </tr>
  479. <tr>
  480. <th>하위(PC)</th>
  481. <td><div class="tabJrContArea">
  482. <textarea class="textareaR4 summernote" name="goodsPcDownDesc" id="goodsPcDownDesc"></textarea>
  483. </div>
  484. </td>
  485. </tr>
  486. <tr>
  487. <th>하위(MOBILE)</th>
  488. <td><div class="tabJrContArea">
  489. <textarea class="textareaR4 summernote" name="goodsMobileDownDesc" id="goodsMobileDownDesc"></textarea>
  490. </div>
  491. </td>
  492. </tr>
  493. </table>
  494. </div>
  495. </li>
  496. <li class="tabJr" id="goodstab11">
  497. <div class="panelStyle">
  498. <!-- TAB11 CONTENTS AREA -->
  499. <table class="frmStyle">
  500. <colgroup>
  501. <col width="12%"/>
  502. <col/>
  503. </colgroup>
  504. <tr>
  505. <th>타이틀</th>
  506. <td><input type="text" class= "w100p" id="goodsTitlesDesc" name="goodsTitlesDesc" maxlength="100" />
  507. </td>
  508. </tr>
  509. <tr>
  510. <th>내용</th>
  511. <td><div class="tabJrContArea">
  512. <textarea class="textareaR3 summernote" name="goodsContentsDesc" id="goodsContentsDesc"></textarea>
  513. </div>
  514. </td>
  515. </tr>
  516. <tr>
  517. <th>상품 특징</th>
  518. <td><div class="tabJrContArea">
  519. <textarea class="textareaR3 summernote" name="goodsCharacterDesc" id="goodsCharacterDesc"></textarea>
  520. </div>
  521. </td>
  522. </tr>
  523. </table>
  524. </div>
  525. </li>
  526. <!-- //TAB -->
  527. </ul>
  528. <!-- //TAB CONTENT -->
  529. </div>
  530. <!-- //TABS SPACE -->
  531. </div>
  532. <!-- //TAB3 CONTENTS AREA -->
  533. </li>
  534. <!-- //TAB3 : 상품상세 -->
  535. <!-- TAB4 : 고시정보 -->
  536. <li class="tab" id="goodstab4">
  537. <!-- TAB5 CONTENTS AREA -->
  538. <div class="panelStyle">
  539. <!-- TABS SPACE -->
  540. <table class="frmStyle">
  541. <colgroup>
  542. <col style="width:10%"/>
  543. <col/>
  544. </colgroup>
  545. <tr>
  546. <th>Details (상품상세정보 고시)<em class="required" title="필수"></em></th>
  547. <td>
  548. <select id="selNiClsfCd" name="selNiClsfCd" class="w40p">
  549. <option value="">[선택]</option>
  550. <option th:if="${niClsfCdList}" th:each="oneData, status : ${niClsfCdList}" th:value="${oneData.cd}" th:text="${oneData.cdNm}"></option>
  551. </select>
  552. <button type="button" class="btn btn-dark btn-lg" id="btnNotinfo">선택</button>
  553. <span class="padL10" id='itemkindNoti'></span>
  554. </td>
  555. </tr>
  556. </table>
  557. <hr/>
  558. <div id="notiArea"></div>
  559. <!-- //TABS SPACE -->
  560. </div>
  561. <!-- //TAB4 CONTENTS AREA -->
  562. </li>
  563. <!-- //TAB4 : 고시정보 -->
  564. <!-- TAB6 : 구성상품 -->
  565. <li class="tab" id="goodstab5">
  566. <!-- TAB6 CONTENTS AREA -->
  567. <div class="panelStyle">
  568. <!-- 내용 삽입 -->
  569. <ul class="panelBar" id="GoodsComposeBtnArea">
  570. <li class="right">
  571. <button type="button" class="btn btn-default btn-lg" onclick="cfnDownloadSampleFile('SF003');">양식다운로드</button>
  572. <button type="button" class="btn btn-success btn-lg" id="btnGoodsDealSearchExcel">엑셀조회</button>
  573. <button type="button" class="btn btn-base btn-lg" onclick="fnOpenGoodsDetailPopup()">상품조회</button>
  574. </li>
  575. </ul>
  576. <div id="gridGoodsComposeList" style="height: 500px;" class="ag-theme-balham lh60"></div>
  577. <!-- 내용 삽입 -->
  578. </div>
  579. <!-- //TAB6 CONTENTS AREA -->
  580. </li>
  581. <!-- //TAB5 : 구성정보 -->
  582. <!-- TAB6 : 안전인증 -->
  583. <li class="tab" id="goodstab6">
  584. <div class="panelStyle">
  585. <table class="frmStyle">
  586. <colgroup>
  587. <col width="11%"/>
  588. <col width="22%"/>
  589. <col width="11%"/>
  590. <col width="22%"/>
  591. <col width="11%"/>
  592. <col/>
  593. </colgroup>
  594. <tr>
  595. <th>인증대상</th>
  596. <td colspan="5">
  597. <label class="rdoBtn" th:if="${certTargetGbList}" th:each="oneData, status : ${certTargetGbList}">
  598. <input type="radio" name="selCertTargetGb" th:value="${oneData.cd}" th:text="${oneData.cdNm}"/>
  599. </label>
  600. <input type="hidden" name="certTargetGb"/>
  601. </td>
  602. </tr>
  603. <tr>
  604. <th>인증형태</th>
  605. <td>
  606. <select name="certFormGb" id="certFormGb" >
  607. <option value="">[선택]</option>
  608. <option th:if="${certFormGbList}" th:each="oneData, status : ${certFormGbList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  609. </select>
  610. <input type="hidden" id="certformGbOrg" name="certformGbOrg"/>
  611. </td>
  612. <th>인증타입</th>
  613. <td>
  614. <select name="certType" id="certType" >
  615. <option value="">[선택]</option>
  616. <option th:if="${certTypeList}" th:each="oneData, status : ${certTypeList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  617. </select>
  618. <input type="hidden" id="certTypeOrg" name="certTypeOrg"/>
  619. </td>
  620. <th>인증번호</th>
  621. <td>
  622. <input type="text" class="w200" id="certNum" name="certNum" maxlength="50"/>
  623. <input type="hidden" id="certNumOrg" name="certNumOrg"/>
  624. </td>
  625. </tr>
  626. <tr>
  627. <th>인증상태</th>
  628. <td><span id="certStateTxt"></span></td>
  629. <th>인증기관</th>
  630. <td><span id="certOrganNameTxt"></span></td>
  631. <th>인증일</th>
  632. <td><span id="certDtTxt"></span></td>
  633. </tr>
  634. <tr>
  635. <th>인증구분</th>
  636. <td colspan="5"><span id="certDivTxt"></span></td>
  637. </tr>
  638. </table>
  639. <ul class="panelBar marT10">
  640. <li class="right">
  641. <button type="button" class="btn btn-success btn-lg" id="btnGoodsSafetyCertNum">안전인증</button>
  642. </li>
  643. </ul>
  644. </div>
  645. </li>
  646. <!-- TAB7 : 이력정보 -->
  647. <li class="tab" id="goodstab7">
  648. <!-- TAB8 CONTENTS AREA -->
  649. <div class="panelStyle">
  650. <!-- 내용 삽입 -->
  651. <div id="gridGoodsHstoryList" style="height: 500px;" class="ag-theme-balham"></div>
  652. <!-- 내용 삽입 -->
  653. </div>
  654. <!-- //TAB5 CONTENTS AREA -->
  655. </li>
  656. <!-- //TAB5 : 추가정보 -->
  657. </ul>
  658. <!-- //TABS CONTENTS -->
  659. <!-- TABS BUTTON AREA -->
  660. <ul class="panelBar marT10">
  661. <!-- <li class="left">
  662. <button type="button" class="btn btnLeft btn-base btn-lg" id="btnGoodsDetailPreview">미리보기</button>
  663. </li> -->
  664. <li class="right">
  665. <th:block th:if="${sessionInfo.roleCd == 'G001_B000'}">
  666. <button type="button" class="btn btnRight btn-success btn-lg" id="btnGoodsDetailSave">저장</button>
  667. </th:block>
  668. </li>
  669. </ul>
  670. <!-- //TABS BUTTON AREA -->
  671. </div>
  672. <!-- //TABS SPACE -->
  673. </div> <!-- class=panelContent -->
  674. </form>
  675. </div> <!-- class=panelStyle -->
  676. </div> <!-- class=modalPopup -->
  677. <script type="text/javascript" src="/ux/plugins/summernote/summernote.js?v=2020103001"></script>
  678. <script type="text/javascript" src="/ux/plugins/gaga/gaga.summernote.js?v=2021072201"></script>
  679. <script th:inline="javascript">
  680. /*<![CDATA[*/
  681. var sessRoleCd = [[${sessionInfo.roleCd}]];
  682. var formalGbList = gagajf.convertToArray([[${formalGbList}]]);
  683. var goodsStatList = gagajf.convertToArray([[${goodsStatList}]]);
  684. var itemkindList = gagajf.convertToArray([[${itemkindList}]]);
  685. var authBrandList = [[${authBrandList}]];
  686. var useYnList = gagajf.convertToArray([[${useYnList}]]);
  687. var goodsTypeList = gagajf.convertToArray([[${goodsTypeList}]]);
  688. var uploadGoodsUrl = [[${@environment.getProperty('upload.goods.view')}]];
  689. // Get a SmartEditor options
  690. //var seOptions = gagaSe.getEditorOptions();
  691. // specify the columns - 상품변경이력
  692. var columnGoodsHstoryDefs = [
  693. {headerName: 'No', width: 60, cellClass: 'text-center', valueGetter: function(params) { return params.node.rowIndex + 1 }},
  694. {headerName: "변경일자", field: "regDt", width: 130, cellClass: 'text-center' ,
  695. cellRenderer: function(params) {
  696. return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmm").format("YYYY-MM-DD HH:mm") : '';
  697. }
  698. },
  699. {headerName: "변경자", field: "regNm", width: 100, cellClass: 'text-center'},
  700. {headerName: "판매가", field: "currPrice" , width: 100, cellClass: 'text-right'
  701. ,valueFormatter: function(params) { return Number(params.value).addComma();}
  702. },
  703. {headerName: "변경전판매가", field: "currBprice" , width: 100, cellClass: 'text-right'
  704. ,valueFormatter: function(params) { return Number(params.value).addComma(); }
  705. },
  706. {headerName: "상품상태", field: "goodsStat" , width: 100, cellClass: 'text-center',
  707. cellEditorParams: { values: gagaAgGrid.extractValues(goodsStatList) },
  708. valueFormatter: function (params) { return gagaAgGrid.lookupValue(goodsStatList, params.value); },
  709. valueParser: function (params) { return gagaAgGrid.lookupKey(goodsStatList, params.newValue); }
  710. },
  711. {headerName: "상품명", field: "goodsNm" , width: 180, cellClass: 'text-left'},
  712. {headerName: "상품타이틀", field: "goodsTnm" , width: 180, cellClass: 'text-left'},
  713. /* {headerName: "상품검색어", field: "goodsSnm" , width: 180, cellClass: 'text-left'}, */
  714. {headerName: "정상이월구분", field: "formalGb" , width: 100, cellClass: 'text-center',
  715. cellEditorParams: { values: gagaAgGrid.extractValues(formalGbList) },
  716. valueFormatter: function (params) { return gagaAgGrid.lookupValue(formalGbList, params.value); },
  717. valueParser: function (params) { return gagaAgGrid.lookupKey(formalGbList, params.newValue); }
  718. },
  719. {headerName: "품목", field: "itemkindCd" , width: 180, cellClass: 'text-left',
  720. cellEditorParams: { values: gagaAgGrid.extractValues(itemkindList) },
  721. valueFormatter: function (params) { return gagaAgGrid.lookupValue(itemkindList, params.value); },
  722. valueParser: function (params) { return gagaAgGrid.lookupKey(itemkindList, params.newValue); }
  723. },
  724. {headerName: "최초승인일자", field: "frstCfrmDt", width: 150, cellClass: 'text-center' ,
  725. cellRenderer: function(params) {
  726. return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss") : '';
  727. }
  728. },
  729. {headerName: "재고연동여부", field: "erpStockLinkYn" , width: 100, cellClass: 'text-center'},
  730. {headerName: "자사몰노출여부", field: "selfMallYn" , width: 120, cellClass: 'text-center'},
  731. {headerName: "판매수수료율", field: "sellFeeRate" , width: 120, cellClass: 'text-right'},
  732. {headerName: "사용자검색어", field: "goodsSnm1" , width: 150, cellClass: 'text-left'},
  733. {headerName: "검색어", field: "goodsSnm" , width: 450, cellClass: 'text-left', tooltipField: "goodsSnm"}
  734. ];
  735. // specify the columns - 구성상품
  736. var columnGoodsComposeDefs = [
  737. {headerName: "정렬", field: "dispOrd", width: 70 ,hide: false, cellClass: 'text-center', rowDrag: true },
  738. {headerName: "CRUD", field: "crud", width: 75, minWidth: 75, hide: true},
  739. //{headerName: 'No', width: 60, cellClass: 'text-center', valueGetter: function(params) { return params.node.rowIndex + 1 }},
  740. {headerName: "이미지", field: "sysImgNm", width: 100, height: 60, cellClass: 'text-center'
  741. ,cellRenderer: function(params) {
  742. return '<img width="60" src="'+ _goodsUrl+ "/" + params.value +'?RS=60" alt="" onclick="cfnOpenImagePreViewPopup(\'goodsImgView\', \''+ _goodsUrl+ "/" + params.value +'?RS=60\')" onerror="this.src=\'/image/no.png\';"/>';
  743. }
  744. },
  745. {headerName: "상품타입", field: "goodsType" , width: 100, cellClass: 'text-center',
  746. cellEditorParams: { values: gagaAgGrid.extractValues(goodsTypeList) },
  747. valueFormatter: function (params) { return gagaAgGrid.lookupValue(goodsTypeList, params.value); },
  748. valueParser: function (params) { return gagaAgGrid.lookupKey(goodsTypeList, params.newValue); }
  749. },
  750. {headerName: "구성상품코드", field: "compsGoodsCd" , width: 130, cellClass: 'text-center'},
  751. {headerName: "구성상품코드명", field: "compsGoodsNm" , width: 200, cellClass: 'text-left'},
  752. //{headerName: "순서", field: "dispOrd" , width: 80, cellClass: 'text-right',editable: true, required: true},
  753. {headerName: "수량", field: "qty" , width: 80, cellClass: 'text-right'
  754. ,valueFormatter: function(params) { return Number(params.value).addComma();}
  755. },
  756. {headerName: "판매가", field: "currPrice" , width: 100, cellClass: 'text-right'
  757. ,valueFormatter: function(params) { return Number(params.value).addComma();}
  758. },
  759. {headerName: "상품판매가", field: "compsCurrPrice" , width: 100, cellClass: 'text-right'
  760. ,valueFormatter: function(params) { return Number(params.value).addComma();}, editable: true, required: true,
  761. cellEditor: 'textCellEditor',
  762. cellEditorParams: { maxlength: 14, validType: 'numeric'}
  763. },
  764. {headerName: "상품판매가ORG", field: "compsCurrPriceOrg" , width: 100, cellClass: 'text-right', hide: true},
  765. {headerName: "기준여부(품목-카테고리)", field: "baseYn", width: 160, cellClass: 'text-center'
  766. },
  767. {headerName: "대표여부(가격)", field: "repYn", width: 160, cellClass: 'text-center',editable: true,
  768. cellEditor: 'agRichSelectCellEditor',
  769. cellEditorParams: { values: gagaAgGrid.extractValues(useYnList), required: true },
  770. valueFormatter: function (params) { return gagaAgGrid.lookupValue(useYnList, params.value); },
  771. valueParser: function (params) { return gagaAgGrid.lookupKey(useYnList, params.newValue); }
  772. },
  773. {headerName: "대표상품", field: "repGoodsCd" , width: 100, cellClass: 'text-right', hide: true},
  774. {headerName: "전시여부", field: "useYn", width: 100, cellClass: 'text-center',editable: true,
  775. cellEditor: 'agRichSelectCellEditor',
  776. cellEditorParams: { values: gagaAgGrid.extractValues(useYnList), required: true },
  777. valueFormatter: function (params) { return gagaAgGrid.lookupValue(useYnList, params.value); },
  778. valueParser: function (params) { return gagaAgGrid.lookupKey(useYnList, params.newValue); }
  779. },
  780. {headerName: "옵션명(딜상품용)", field: "compsGoodsOptNm" , width: 200, cellClass: 'text-left',editable: true, required: true},
  781. {headerName: "상품상태", field: "goodsStat" , width: 100, cellClass: 'text-center',
  782. cellEditorParams: { values: gagaAgGrid.extractValues(goodsStatList) },
  783. valueFormatter: function (params) { return gagaAgGrid.lookupValue(goodsStatList, params.value); },
  784. valueParser: function (params) { return gagaAgGrid.lookupKey(goodsStatList, params.newValue); }
  785. },
  786. {headerName: "등록일시", field: "regDt", width: 140, cellClass: 'text-center' ,
  787. cellRenderer: function(params) {
  788. return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss") : '';
  789. }
  790. },
  791. {headerName: "등록자", field: "regNm", width: 100, cellClass: 'text-center'},
  792. {headerName: "수정일시", field: "updDt", width: 140, cellClass: 'text-center' ,
  793. cellRenderer: function(params) {
  794. return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss") : '';
  795. }
  796. },
  797. {headerName: "수정자", field: "updNm", width: 100, cellClass: 'text-center'}
  798. ];
  799. // Get GridOptions
  800. var gridGoodsHstoryOptions = gagaAgGrid.getGridOptions(columnGoodsHstoryDefs);
  801. gridGoodsHstoryOptions.enableBrowserTooltips = true;
  802. var gridGoodsComposeOptions = gagaAgGrid.getGridOptions(columnGoodsComposeDefs);
  803. gridGoodsComposeOptions.enableBrowserTooltips = true;
  804. // 드래그
  805. gridGoodsComposeOptions.suppressRowClickSelection = true;
  806. gridGoodsComposeOptions.rowDragManaged = true;
  807. gridGoodsComposeOptions.stopEditingWhenGridLosesFocus = true;
  808. //gridGoodsComposeOptions.rowDeselection = true;
  809. //gridGoodsComposeOptions.enableMultiRowDragging = true;
  810. //gridGoodsComposeOptions.rowSelection = 'multiple';
  811. gridGoodsComposeOptions.rowHeight = 60; //이미지가 있을경우 높이 지정해야함.
  812. //기준여부 표시
  813. gridGoodsComposeOptions.getRowStyle = function(params) {
  814. if ("Y" == params.data.baseYn) {
  815. return { background: '#1ab394' };
  816. }else{
  817. return { background: '#ffffff' };
  818. }
  819. }
  820. // Row
  821. gridGoodsComposeOptions.onCellValueChanged = function(event) {
  822. var rowIdx = null;
  823. var isChangColor = true;
  824. if (event.colDef.field == "baseYn"){
  825. if (event.data.baseYn == "Y"){
  826. rowIdx = event.rowIndex;
  827. //다른 기준여부 'Y'가 존재하는지 확인
  828. gridGoodsComposeOptions.api.forEachNode(function(rowNode, index) {
  829. if (rowNode.data.baseYn == "Y" && index != rowIdx){
  830. event.data.baseYn = event.oldValue;
  831. gridGoodsComposeOptions.api.updateRowData({update: [event.data]});
  832. isChangColor = false;
  833. return;
  834. }
  835. });
  836. if (!isChangColor){
  837. mcxDialog.alert('다른 구성상품에 기준여부가 선택되어 있습니다.');
  838. return;
  839. }
  840. }
  841. }
  842. if ($("#goodsDetailForm input[name=goodsType]").val() == "G056_D"){
  843. isChangColor = true;
  844. if (event.colDef.field == "repYn"){
  845. if (event.data.repYn == "Y"){
  846. rowIdx = event.rowIndex;
  847. //다른 대표여부 'Y'가 존재하는지 확인
  848. gridGoodsComposeOptions.api.forEachNode(function(rowNode, index) {
  849. if (rowNode.data.repYn == "Y" && index != rowIdx){
  850. event.data.repYn = event.oldValue;
  851. gridGoodsComposeOptions.api.updateRowData({update: [event.data]});
  852. isChangColor = false;
  853. return;
  854. }
  855. });
  856. if (!isChangColor){
  857. mcxDialog.alert('다른 구성상품에 대표여부가 선택되어 있습니다.');
  858. return;
  859. }
  860. }
  861. }
  862. }
  863. }
  864. // 상품상세 조회
  865. var fnGoodsDeailSearch = function() {
  866. $('#goodsDetailForm').find('.tabs .tabsNav li a').attr("style", "color:#888;"); //탭색 초기화
  867. var params = new Object();
  868. params.mode = $('#goodsDetailForm input[name=mode]').val();
  869. params.goodsCd = $('#goodsDetailForm input[name=goodsCd]').val();
  870. cfnAjaxSubmit("/goods/detail", "json", fnGoodDetailSearchCallback, params);
  871. }
  872. var fnGoodDetailSearchCallback = function(result) {
  873. $('#goodsDetailForm').find(".tabsNav > li").removeClass('on');
  874. $('#goodsDetailForm').find(".tabsNav > li").eq(0).addClass('on');
  875. $('#goodsDetailForm').find(".tabsCont > li").removeClass('on');
  876. $('#goodsDetailForm').find(".tabsCont > li").eq(0).addClass('on');
  877. if (result != null){
  878. //기본정보
  879. $('#goodsDetailForm select[name=selSupplyCompCd]').val(result.supplyCompCd);
  880. $('#goodsDetailForm input[name=supplyCompCd]').val(result.supplyCompCd);
  881. $('#goodsDetailForm input[name=brandCd]').val(result.brandCd);
  882. fnBrand(result.supplyCompCd, result.brandCd);
  883. $('#goodsDetailForm').find('#goodsCdTxt').html(result.goodsCd);
  884. $('#goodsDetailForm').find('#supplyGoodsCdTxt').html(result.supplyGoodsCd);
  885. $("#goodsDetailForm input[name=goodsImageYn]").val(result.goodsImageYn);
  886. $("#goodsDetailForm input[name=niClsfCd]").val(result.niClsfCd);
  887. //$("#goodsDetailForm select[name=selNiClsfCd]").val(result.niClsfCd);
  888. $("#goodsDetailForm input[name=selfGoodsYn]").val(result.selfGoodsYn);
  889. $('#goodsDetailForm').find('#goodsNumTxt').html(result.goodsNum);
  890. $('#goodsDetailForm input[name=goodsNum]').val(result.goodsNum);
  891. $('#goodsDetailForm select[name=goodsStat]').val(result.goodsStat);
  892. $("#goodsDetailForm input[name=goodsStatOrg]").val(result.goodsStat);
  893. $("#goodsDetailForm input[name=goodsStat90Cnt]").val(result.goodsStat90Cnt);
  894. $('#goodsDetailForm').find('#brandGrpNmTxt').html(result.brandGrpNm);
  895. $('#goodsDetailForm select[name=itemkindCd]').val(result.itemkindCd);
  896. $('#goodsDetailForm input[name=orgItemkindCd]').val(result.itemkindCd);
  897. $('#goodsDetailForm select[name=seasonCd]').val(result.seasonCd);
  898. $('#goodsDetailForm input[name=seasonCdOrg]').val(result.seasonCd);
  899. $('#goodsDetailForm select[name=sexGb]').val(result.sexGb);
  900. $('#goodsDetailForm input[name=sexGbOrg]').val(result.sexGb);
  901. $('#goodsDetailForm').find('#makeNmTxt').html(result.originNm);
  902. $('#goodsDetailForm').find('#styleYearTxt').html(result.styleYear);
  903. $('#goodsDetailForm select[name=goodsGb]').val(result.goodsGb);
  904. $('#goodsDetailForm input[name=goodsGbOrg]').val(result.goodsGb);
  905. $('#goodsDetailForm input[name=mainColorCd]').val(result.mainColorCd);
  906. $("#goodsDetailForm input[name=goodsNm]").val(result.goodsNm);
  907. $('#goodsDetailForm input[name=goodsNmOrg]').val(result.goodsNm);
  908. fnDataLengthCheck('goodsNm',200);
  909. $("#goodsDetailForm input[name=goodsTnm]").val(result.goodsTnm);
  910. $('#goodsDetailForm input[name=goodsTnmOrg]').val(result.goodsTnm);
  911. fnDataLengthCheck('goodsTnm',100);
  912. $("#goodsDetailForm input[name=goodsSnm1]").val(result.goodsSnm1);
  913. $("#goodsDetailForm input[name=goodsSnm1Org]").val(result.goodsSnm1);
  914. fnDataLengthCheck('goodsSnm1',200);
  915. $("#goodsDetailForm textarea[name=goodsSnmTxt]").val(result.goodsSnm);
  916. $("#goodsDetailForm input[name=goodsSnm]").val(result.goodsSnm);
  917. $('#goodsDetailForm').find('#listPriceTxt').html(result.listPrice.addComma());
  918. $('#goodsDetailForm input[name=listPrice]').val(result.listPrice);
  919. $('#goodsDetailForm input[name=currPrice]').val(result.currPrice.addComma());
  920. $('#goodsDetailForm input[name=currPriceOrg]').val(result.currPrice);
  921. $('#goodsDetailForm input[name=costPrice]').val(result.costPrice);
  922. $('#goodsDetailForm').find('#dcRateTxt').html(result.dcRate);
  923. $('#goodsDetailForm input[name=dcRate]').val(result.dcRate);
  924. $('#goodsDetailForm').find('#priceUpdDtTxt').html(!gagajf.isNull(result.priceUpdDt) ? result.priceUpdDt.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD") : '');
  925. $('#goodsDetailForm').find('#frstCfrmDtTxt').html(!gagajf.isNull(result.frstCfrmDt) ? result.frstCfrmDt.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD") : '');
  926. $('#goodsDetailForm select[name=distributionGb]').val(result.distributionGb);
  927. $("#goodsDetailForm input[name=distributionGbOrg]").val(result.distributionGb);
  928. $('#goodsDetailForm select[name=ageGrpCd]').val(result.ageGrpCd);
  929. $("#goodsDetailForm input[name=ageGrpCdOrg]").val(result.ageGrpCd);
  930. $('#goodsDetailForm select[name=taxGb]').val(result.taxGb);
  931. $("#goodsDetailForm input[type=radio]").parent().removeClass("checked");
  932. $("#goodsDetailForm input[type=radio]").removeAttr('checked');
  933. if (result.formalGb == "G009_20"){
  934. $("#goodsDetailForm input:radio[name=formalGb]:input[value='G009_20']").trigger('click');
  935. }else{
  936. $("#goodsDetailForm input:radio[name=formalGb]:input[value='G009_10']").trigger('click');
  937. }
  938. if (result.erpPriceLinkYn == "Y"){
  939. $("#goodsDetailForm input:radio[name=erpPriceLinkYn]:input[value='Y']").trigger('click');
  940. }else{
  941. $("#goodsDetailForm input:radio[name=erpPriceLinkYn]:input[value='N']").trigger('click');
  942. }
  943. if (result.selfMallYn == "Y"){
  944. $("#goodsDetailForm input:radio[name=selfMallYn]:input[value='Y']").trigger('click');
  945. }else{
  946. $("#goodsDetailForm input:radio[name=selfMallYn]:input[value='N']").trigger('click');
  947. }
  948. if (result.returnableYn == "Y"){
  949. $("#goodsDetailForm input:radio[name=returnableYn]:input[value='Y']").trigger('click');
  950. }else{
  951. $("#goodsDetailForm input:radio[name=returnableYn]:input[value='N']").trigger('click');
  952. }
  953. $('#goodsDetailForm input[name=sellFeeRate]').val(result.sellFeeRate);
  954. $("#goodsDetailForm input[name=sellFeeRateOrg]").val(result.sellFeeRate);
  955. if (result.prePpntUsableYn == "Y"){
  956. $("#goodsDetailForm input:radio[name=prePpntUsableYn]:input[value='Y']").trigger('click');
  957. }else{
  958. $("#goodsDetailForm input:radio[name=prePpntUsableYn]:input[value='N']").trigger('click');
  959. }
  960. if (result.preMpntUsableYn == "Y"){
  961. $("#goodsDetailForm input:radio[name=preMpntUsableYn]:input[value='Y']").trigger('click');
  962. }else{
  963. $("#goodsDetailForm input:radio[name=preMpntUsableYn]:input[value='N']").trigger('click');
  964. }
  965. if (result.changeableYn == "Y"){
  966. $("#goodsDetailForm input:radio[name=changeableYn]:input[value='Y']").trigger('click');
  967. }else{
  968. $("#goodsDetailForm input:radio[name=changeableYn]:input[value='N']").trigger('click');
  969. }
  970. if (result.giftPackYn == "Y"){
  971. $("#goodsDetailForm input:radio[name=giftPackYn]:input[value='Y']").trigger('click');
  972. }else{
  973. $("#goodsDetailForm input:radio[name=giftPackYn]:input[value='N']").trigger('click');
  974. }
  975. if (result.newCustOrdYn == "Y"){
  976. $("#goodsDetailForm input:radio[name=newCustOrdYn]:input[value='Y']").trigger('click');
  977. }else{
  978. $("#goodsDetailForm input:radio[name=newCustOrdYn]:input[value='N']").trigger('click');
  979. }
  980. if (result.adultYn == "Y"){
  981. $("#goodsDetailForm input:radio[name=adultYn]:input[value='Y']").trigger('click');
  982. }else{
  983. $("#goodsDetailForm input:radio[name=adultYn]:input[value='N']").trigger('click');
  984. }
  985. if (result.foreignBuyYn == "Y"){
  986. $("#goodsDetailForm input:radio[name=foreignBuyYn]:input[value='Y']").trigger('click');
  987. }else{
  988. $("#goodsDetailForm input:radio[name=foreignBuyYn]:input[value='N']").trigger('click');
  989. }
  990. if (result.parallelImportYn == "Y"){
  991. $("#goodsDetailForm input:radio[name=parallelImportYn]:input[value='Y']").trigger('click');
  992. }else{
  993. $("#goodsDetailForm input:radio[name=parallelImportYn]:input[value='N']").trigger('click');
  994. }
  995. if (result.orderMadeYn == "Y"){
  996. $("#goodsDetailForm input:radio[name=orderMadeYn]:input[value='Y']").trigger('click');
  997. }else{
  998. $("#goodsDetailForm input:radio[name=orderMadeYn]:input[value='N']").trigger('click');
  999. }
  1000. $("#goodsDetailForm input[name=formalGbOrg]").val(result.formalGb);
  1001. $("#goodsDetailForm input[name=foreignBuyYnOrg]").val(result.foreignBuyYn);
  1002. $("#goodsDetailForm input[name=parallelImportYnOrg]").val(result.parallelImportYn);
  1003. $("#goodsDetailForm input[name=orderMadeYnOrg]").val(result.orderMadeYn);
  1004. $("#goodsDetailForm input[name=erpPriceLinkYnOrg]").val(result.erpPriceLinkYn);
  1005. $("#goodsDetailForm input[name=selfMallYnOrg]").val(result.selfMallYn);
  1006. $("#goodsDetailForm input[name=giftPackYnOrg]").val(result.giftPackYn);
  1007. $("#goodsDetailForm input[name=prePpntUsableYnOrg]").val(result.prePpntUsableYn);
  1008. $("#goodsDetailForm input[name=preMpntUsableYnOrg]").val(result.preMpntUsableYn);
  1009. $("#goodsDetailForm input[name=changeableYnOrg]").val(result.changeableYn);
  1010. $("#goodsDetailForm input[name=returnableYnOrg]").val(result.returnableYn);
  1011. $("#goodsDetailForm input[name=newCustOrdYnOrg]").val(result.newCustOrdYn);
  1012. if(!gagajf.isNull(result.newCustOrdStdt)){
  1013. $('#goodsDetailForm input[name=newCustOrdStdt]').val(result.newCustOrdStdt.toDate("YYYYMMDD").format("YYYY-MM-DD") );
  1014. $('#goodsDetailForm input[name=newCustOrdEddt]').val(result.newCustOrdEddt.toDate("YYYYMMDD").format("YYYY-MM-DD") );
  1015. $('#goodsDetailForm input[name=newCustOrdStdtOrg]').val(result.newCustOrdStdt.toDate("YYYYMMDD").format("YYYY-MM-DD") );
  1016. $('#goodsDetailForm input[name=newCustOrdEddtOrg]').val(result.newCustOrdEddt.toDate("YYYYMMDD").format("YYYY-MM-DD") );
  1017. }else{
  1018. $('#goodsDetailForm input[name=newCustOrdStdtOrg]').val('');
  1019. $('#goodsDetailForm input[name=newCustOrdEddtOrg]').val('');
  1020. }
  1021. $("#goodsDetailForm input[name=adultYnOrg]").val(result.adultYn);
  1022. $("#goodsDetailForm input[type=radio][checked]").addClass("checked");
  1023. //$("#goodsDetailForm input[type=radio][checked]").parent("label").addClass("checked");
  1024. $('#goodsDetailForm input[name=pntPrate]').val(result.pntPrate);
  1025. $('#goodsDetailForm input[name=pntPrateOrg]').val(result.pntPrate);
  1026. $('#goodsDetailForm input[name=pntMrate]').val(result.pntMrate);
  1027. $('#goodsDetailForm input[name=pntMrateOrg]').val(result.pntMrate);
  1028. //입점상품일 경우
  1029. if (result.selfGoodsYn == "N"){
  1030. $("#goodsDetailForm").find("#selfGoodsDpTitle").html('원코드');
  1031. $("#goodsDetailForm").find("#selfGoodsDpTxt").html('<div id="supplyGoodsCdTxt"></div>');
  1032. $('#goodsDetailForm').find('#supplyGoodsCdTxt').html(result.supplyGoodsCd);
  1033. $('#goodsDetailForm select[name=distributionGb]').attr('readonly', true);
  1034. $('#goodsDetailForm input[name=pntPrate]').attr('readonly', true);
  1035. $('#goodsDetailForm input[name=pntMrate]').attr('readonly', true);
  1036. $('#goodsDetailForm input[name=prePpntUsableYn]').attr('readonly', true);
  1037. $('#goodsDetailForm input[name=preMpntUsableYn]').attr('readonly', true);
  1038. }
  1039. $('#goodsDetailForm input[name=delvFee]').val(result.delvFee.addComma());
  1040. $('#goodsDetailForm input[name=minOrdAmt]').val(result.minOrdAmt.addComma());
  1041. $('#goodsDetailForm input[name=minOrdQty]').val(result.minOrdQty);
  1042. $('#goodsDetailForm input[name=minOrdQtyOrg]').val(result.minOrdQty);
  1043. $('#goodsDetailForm input[name=maxOrdQty]').val(result.maxOrdQty);
  1044. $('#goodsDetailForm input[name=maxOrdQtyOrg]').val(result.maxOrdQty);
  1045. $('#goodsDetailForm input[name=dayMaxOrdQty]').val(result.dayMaxOrdQty);
  1046. $('#goodsDetailForm input[name=dayMaxOrdQtyOrg]').val(result.dayMaxOrdQty);
  1047. // $('#goodsDetailForm input[name=certNumOrg]').val(result.certNum);
  1048. // $('#goodsDetailForm input[name=certNum]').val(result.certNum);
  1049. $('#goodsDetailForm input[name=goodsType]').val(result.goodsType);
  1050. $("#goodsDetailForm").find("#goodsTypeNm").html(result.goodsTypeNm);
  1051. $('#goodsDetailForm input[name=sellStdt]').val(result.sellStdt);
  1052. $('#goodsDetailForm input[name=sellStYMD]').val(result.sellStdt.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD") );
  1053. $('#goodsDetailForm input[name=sellStHH]').val(result.sellStdt.toDate("YYYYMMDDHHmmss").format("HH") );
  1054. $('#goodsDetailForm input[name=sellEddt]').val(result.sellEddt);
  1055. $('#goodsDetailForm input[name=sellEdYMD]').val(result.sellEddt.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD") );
  1056. $('#goodsDetailForm input[name=sellEdHH]').val(result.sellEddt.toDate("YYYYMMDDHHmmss").format("HH") );
  1057. //cfnCreateCombo('/renderer/delvFee/list/' + result.supplyCompCd, $('#goodsDetailForm select[name=delvFeeCd]'), "[선택]", result.delvFeeCd);
  1058. cfnCreateDelvPolicyCombo( result.supplyCompCd, $('#goodsDetailForm select[name=delvFeeCd]'), "[선택]", result.delvFeeCd);
  1059. $('#goodsDetailForm input[name=delvFeeCdOrg]').val(result.delvFeeCd);
  1060. cfnCreateCombo('/renderer/delvLoc/list/' + result.supplyCompCd, $('#goodsDetailForm select[name=delvLocCd]'), "[선택]", result.delvLocCd);
  1061. $('#goodsDetailForm input[name=delvLocCdOrg]').val(result.delvLocCd);
  1062. //상품상세
  1063. $('#goodsDetailForm input[name=goodsTitlesDesc]').val(result.goodsTitlesDesc);
  1064. // 공지내용. Summernote에 값 세팅
  1065. gagaSn.setContents('#goodsContentsDesc', result.goodsContentsDesc);
  1066. gagaSn.setContents('#goodsCharacterDesc', result.goodsCharacterDesc);
  1067. gagaSn.setContents('#goodsPcTopDesc', result.goodsPcTopDesc);
  1068. gagaSn.setContents('#goodsMobileTopDesc', result.goodsMobileTopDesc);
  1069. gagaSn.setContents('#goodsPcDownDesc', result.goodsPcDownDesc);
  1070. gagaSn.setContents('#goodsMobileDownDesc', result.goodsMobileDownDesc);
  1071. // asis html 변경
  1072. //gagaSn.setContents('#goodsDesc', result.goodsDesc);
  1073. gagaSn.setContents('#goodsDesc', result.goodsDesc.replaceAll('src="/Upload' , 'src="'+_imgUrl+'/Local'));
  1074. if (!gagajf.isNull(result.niClsfNm)){
  1075. $('#goodsDetailForm').find('#itemkindNoti').html('품목기준 고시분류 : ' + result.niClsfNm);
  1076. $('#goodsDetailForm input[name=niClsfNm]').val(result.niClsfNm);
  1077. var objNotiInfo = $("#goodsDetailForm select[name=selNiClsfCd] option");
  1078. for(var i=0;i<objNotiInfo.length; i++ ){
  1079. if (objNotiInfo.eq(i).text() == result.niClsfNm){
  1080. objNotiInfo.eq(i).prop("selected","true");
  1081. }
  1082. }
  1083. }
  1084. $('#goodsDetailForm').find('#goodsImgUrl').attr('src', _goodsUrl + '/'+ result.sysImgNm +'?RS=130');
  1085. $('#goodsDetailForm input[name=sysImgNm]').val(result.sysImgNm);
  1086. $("#goodsDetailForm input[type=checkbox][checked]").parent("label").addClass("checked");
  1087. //품목변경 권한 관련 처리
  1088. //md권한
  1089. if(sessRoleCd == "G001_A101" || sessRoleCd == "G001_B000"){
  1090. var roleFlag = "N";
  1091. $.each(authBrandList, function(idx, item) {
  1092. if (result.brandCd == item.cd ){
  1093. roleFlag = "Y";
  1094. return false;
  1095. }
  1096. });
  1097. if (roleFlag == "N"){
  1098. $('#goodsDetailForm select[name=itemkindCd]').attr('disabled',true);
  1099. $('#goodsDetailForm #btnGoodsItemkindChange').addClass('off');
  1100. }
  1101. }
  1102. //상품 구분에 따른 컬럼 사용여부처리 start
  1103. //세트
  1104. if ("G056_S" == result.goodsType){
  1105. if (result.selfGoodsYn == "Y") $('#goodsDetailForm #goodsComposeTab').css('display','block');
  1106. $('#goodsDetailForm #goodsNotiTab').css('display','none');
  1107. $('#goodsDetailForm #goodsSafeTab').css('display','none');
  1108. $('#goodsDetailForm input[name=sellFeeRate]').attr('readonly', true);
  1109. $('#goodsDetailForm input[name=currPrice]').attr('readonly', true);
  1110. }else if ("G056_D" == result.goodsType){
  1111. $('#goodsDetailForm #goodsComposeTab').css('display','block');
  1112. $('#goodsDetailForm #goodsDescTab').css('display','none');
  1113. $('#goodsDetailForm #goodsNotiTab').css('display','none');
  1114. $('#goodsDetailForm #goodsSafeTab').css('display','none');
  1115. $('#goodsDetailForm input[name=sellFeeRate]').attr('readonly', true);
  1116. // 딜상품인 경우 항목 숨김처리
  1117. $('.chk_deal').hide();
  1118. }
  1119. //상품 구분에 따른 컬럼 사용여부처리 end
  1120. var params = new Object();
  1121. params.mode = $('#goodsDetailForm input[name=mode]').val();
  1122. params.goodsCd = result.goodsCd;
  1123. params.brandCd = result.brandCd;
  1124. params.supplyCompCd = result.supplyCompCd;
  1125. params.niClsfCd = result.niClsfCd;
  1126. params.goodsType = result.goodsType;
  1127. params.erpPriceLinkYn = result.erpPriceLinkYn;
  1128. //옵셥 재고(ajax html)
  1129. fnGoodsDetailSizeStockSearch(params);
  1130. //정보고시
  1131. fnGoodsDetailNotiInfoSearch(params);
  1132. //구매등급
  1133. // fnGoodsDetailOrderGradeSearch(params);
  1134. //안전인증
  1135. fnGoodsDetailSafeNoSearch();
  1136. //구성상품
  1137. if ("G056_D" == result.goodsType){
  1138. fnGoodsComposeListSearch(params);
  1139. }
  1140. //이력
  1141. fnGoodsDetailHstSearch();
  1142. }
  1143. //기본정보탭 변경여부
  1144. $('#goodsDetailForm').find('#goodstab1').find("input, select, textarea").on('change', function() {
  1145. $('#goodsDetailForm').find('.tabs .tabsNav li:eq(0) a').attr("style", "color:red;");
  1146. });
  1147. }
  1148. //옵셥 재고
  1149. var fnGoodsDetailSizeStockSearch = function(params) {
  1150. cfnAjaxSubmit("/goods/detail/sizeStock/form", "html", "sizeStockArea", params);
  1151. }
  1152. //정보고시
  1153. var fnGoodsDetailNotiInfoSearch = function(params) {
  1154. cfnAjaxSubmit("/goods/detail/notiInfo/list", "json", fnGoodsDetailNotiInfoSearchCallback, params);
  1155. }
  1156. //이력
  1157. var fnGoodsDetailHstSearch = function() {
  1158. gagaAgGrid.fetch("/goods/detail/hst/list?goodsCd=" + $('#goodsDetailForm input[name=goodsCd]').val() , gridGoodsHstoryOptions);
  1159. }
  1160. //안전인증
  1161. var fnGoodsDetailSafeNoSearch = function() {
  1162. var params = new Object();
  1163. params.goodsCd = $('#goodsDetailForm input[name=goodsCd]').val();
  1164. cfnAjaxSubmit("/goods/detail/safe", "json", fnGoodsDetailSafeNoSearchCallback, params);
  1165. }
  1166. //구성상품
  1167. var fnGoodsComposeListSearch = function(params) {
  1168. gagaAgGrid.showOrHideColumn(gridGoodsComposeOptions, 'qty', false);
  1169. gagaAgGrid.showOrHideColumn(gridGoodsComposeOptions, 'compsCurrPrice', false);
  1170. gagaAgGrid.showOrHideColumn(gridGoodsComposeOptions, 'compsCurrPriceOrg', false);
  1171. gagaAgGrid.fetch("/goods/detail/compose/list?goodsCd=" + params.goodsCd , gridGoodsComposeOptions, null, fnGoodsComposeListSearchCallBack);
  1172. }
  1173. var fnGoodsComposeListSearchCallBack = function(){
  1174. var allData = gagaAgGrid.getAllRowData(gridGoodsComposeOptions);
  1175. $.each(allData, function(index, item) {
  1176. if (item.repYn == "Y"){
  1177. $("#goodsDetailForm input[name=repGoodsCd]").val(item.repGoodsCd); // 대표상품
  1178. return false;
  1179. }
  1180. });
  1181. }
  1182. //정보고시 콜백
  1183. var fnGoodsDetailNotiInfoSearchCallback = function(result) {
  1184. if (result == null) return;
  1185. var notiHtml = "";
  1186. var idx = 0;
  1187. $('#goodsDetailForm').find('#notiArea').html('');
  1188. notiHtml += '<table class="frmStyle">';
  1189. notiHtml += '<colgroup><col style="width:20%"/><col/></colgroup>';
  1190. notiHtml += '<tbody id="infoContents">\n';
  1191. notiHtml += '<tr><th>고시항목</th><th>고시내용</th></tr>';
  1192. result.forEach(function(info){
  1193. 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>';
  1194. notiHtml += '<td><input type="text" name="niContent" value="'+ gagajf.convNull(info.niContent, '') +'"/></td>\n';
  1195. notiHtml += '</tr>\n';
  1196. if (idx == 0){
  1197. $("#goodsDetailForm select[name=selNiClsfCd]").val(info.niClsfCd);
  1198. }
  1199. idx ++;
  1200. });
  1201. notiHtml += '</tbody></table>';
  1202. $('#goodsDetailForm').find('#notiArea').append(notiHtml);
  1203. //고시정보탭 변경여부
  1204. $('#goodsDetailForm').find('#goodstab4').find("input, select, textarea").on('change', function() {
  1205. $('#goodsDetailForm').find('.tabs .tabsNav li:eq(3) a').attr("style", "color:red;");
  1206. });
  1207. }
  1208. //안전인증 콜백
  1209. var fnGoodsDetailSafeNoSearchCallback = function(result){
  1210. if (result == null) return;
  1211. if (result.certTargetGb == "G083_1"){
  1212. $("#goodsDetailForm input:radio[name=selCertTargetGb]:input[value='G083_1']").trigger('click');
  1213. }else if (result.certTargetGb == "G083_2"){
  1214. $("#goodsDetailForm input:radio[name=selCertTargetGb]:input[value='G083_2']").trigger('click');
  1215. }else if (result.certTargetGb == "G083_3"){
  1216. $("#goodsDetailForm input:radio[name=selCertTargetGb]:input[value='G083_3']").trigger('click');
  1217. }
  1218. $("#goodsDetailForm input[name=certTargetGb]").val(result.certTargetGb);
  1219. $("#goodsDetailForm select[name=certFormGb]").val(result.certFormGb);
  1220. $("#goodsDetailForm input[name=certFormGbOrg]").val(result.certFormGb);
  1221. $("#goodsDetailForm select[name=certType]").val(result.certType);
  1222. $("#goodsDetailForm input[name=certTypeOrg]").val(result.certType);
  1223. $("#goodsDetailForm input[name=certNum]").val(result.certNum);
  1224. $("#goodsDetailForm input[name=certNumOrg]").val(result.certNum);
  1225. $('#goodsDetailForm').find('#certStateTxt').html(result.certState);
  1226. $('#goodsDetailForm').find('#certOrganNameTxt').html(result.certOrganName);
  1227. $('#goodsDetailForm').find('#certDivTxt').html(result.certDiv);
  1228. $('#goodsDetailForm').find('#certDtTxt').html(!gagajf.isNull(result.certDt) ? result.certDt.toDate("YYYYMMDD").format("YYYY-MM-DD") : '');
  1229. if (!gagajf.isNull($("#goodsDetailForm select[name=selCertTargetGb]").val()) ){
  1230. if ("G081_1" != $("#goodsDetailForm select[name=certType]").val() && "G081_2" != $("#goodsDetailForm select[name=certType]").val()){
  1231. $("#goodsDetailForm input[name=certNum]").attr('readonly', true);
  1232. }
  1233. }
  1234. }
  1235. // 인증대상 변경시
  1236. $("#goodsDetailForm input[name=selCertTargetGb]").bind('click', function () {
  1237. var certTargetGb = $(this).val();
  1238. if (certTargetGb == "G083_1"){
  1239. $("#goodsDetailForm select[name=certFormGb]").attr('readonly', false);
  1240. $("#goodsDetailForm select[name=certType]").attr('readonly', false);
  1241. $("#goodsDetailForm input[name=certNum]").attr('readonly', false);
  1242. }else{
  1243. $("#goodsDetailForm select[name=certFormGb]").val('');
  1244. $("#goodsDetailForm select[name=certType]").val('');
  1245. $("#goodsDetailForm input[name=certNum]").val('');
  1246. $("#goodsDetailForm select[name=certFormGb]").attr('readonly', true);
  1247. $("#goodsDetailForm select[name=certType]").attr('readonly', true);
  1248. $("#goodsDetailForm input[name=certNum]").attr('readonly', true);
  1249. $("#goodsDetailForm").find("#certStateTxt").html('');
  1250. $("#goodsDetailForm").find("#certOrganNameTxt").html('');
  1251. $("#goodsDetailForm").find("#certDtTxt").html('');
  1252. $("#goodsDetailForm").find("#certDivTxt").html('');
  1253. }
  1254. });
  1255. // 인증타입 변경시
  1256. $("#goodsDetailForm select[name=certType]").bind('click change', function () {
  1257. var certType = $(this).val();
  1258. if (certType == "G081_1" || certType == "G081_2"){
  1259. $("#goodsDetailForm input[name=certNum]").attr('readonly', false);
  1260. }else{
  1261. $("#goodsDetailForm input[name=certNum]").val('');
  1262. $("#goodsDetailForm input[name=certNum]").attr('readonly', true);
  1263. $("#goodsDetailForm").find("#certStateTxt").html('');
  1264. $("#goodsDetailForm").find("#certOrganNameTxt").html('');
  1265. $("#goodsDetailForm").find("#certDtTxt").html('');
  1266. $("#goodsDetailForm").find("#certDivTxt").html('');
  1267. }
  1268. });
  1269. //구매등급 콜백
  1270. /* var fnGoodsDetailOrderGradeSearchCallback = function(result) {
  1271. if (result == null) return;
  1272. result.forEach(function(info){
  1273. $("#goodsDetailForm #goodsCustGradeList").find("input").each(function() {
  1274. if (info.custGrade == $(this).val() ){
  1275. $(this).prop("checked", true);
  1276. $(this).parent("label").addClass("checked");
  1277. }
  1278. });
  1279. });
  1280. }
  1281. */
  1282. //상품명 길이표시
  1283. $("#goodsDetailForm input[name=goodsNm]").bind('focus focusout input keyup keydown paste change', function () {
  1284. fnDataLengthCheck('goodsNm',200);
  1285. });
  1286. //상품타이틀 길이표시
  1287. $("#goodsDetailForm input[name=goodsTnm]").bind('focus focusout input keyup keydown paste change', function () {
  1288. fnDataLengthCheck('goodsTnm',100);
  1289. });
  1290. //사용자검색어 길이표시
  1291. $("#goodsDetailForm input[name=goodsSnm1]").bind('focus focusout input keyup keydown paste change', function () {
  1292. fnDataLengthCheck('goodsSnm1',200);
  1293. });
  1294. //판매가 변경시 할인율 계산
  1295. $("#goodsDetailForm input[name=currPrice]").bind('focusout paste', function () {
  1296. fnCurrPriceCheck();
  1297. });
  1298. //판매가의 할인율 확인
  1299. var fnCurrPriceCheck = function(){
  1300. var dcRate = 0;
  1301. var listPrice = $("#goodsDetailForm input[name=listPrice]").val().removeComma();
  1302. var currPrice = $("#goodsDetailForm input[name=currPrice]").val().removeComma();
  1303. dcRate = 100 - Math.floor(Number(currPrice) / Number(listPrice) * 100); //절사
  1304. $("#goodsDetailForm").find("#dcRateTxt").html(dcRate);
  1305. $("#goodsDetailForm input[name=dcRate]").val(dcRate);
  1306. }
  1307. //판매가의 할인율 확인
  1308. /* var fnCurrPriceCheck_org = function(){
  1309. var dcRate = 0;
  1310. var listPrice = $("#goodsDetailForm input[name=listPrice]").val().removeComma();
  1311. var currPrice = $("#goodsDetailForm input[name=currPrice]").val().removeComma();
  1312. //dcRate = Math.round(100 - Math.floor((Number(currPrice) / Number(listPrice) * 100)*100)/100);
  1313. //dcRate = 100 - (Number((Number(currPrice) / Number(listPrice)).toFixed(2)) *100);
  1314. dcRate = 100 - Math.floor(Number(currPrice) / Number(listPrice) * 100);
  1315. if (dcRate < 0){
  1316. mcxDialog.alert('할인율이 0보다 작습니다.\n판매가를 확인해주세요.', function(){
  1317. $("#goodsDetailForm input[name=currPrice]").focus();
  1318. });
  1319. return false;
  1320. }else if (dcRate >= 90){
  1321. gagaAlert.confirm("할인율이 90%이상입니다. 계속하시겠습니까?", function(){
  1322. $("#goodsDetailForm").find("#dcRateTxt").html(dcRate);
  1323. $("#goodsDetailForm input[name=dcRate]").val(dcRate);
  1324. return true;
  1325. },
  1326. function(){
  1327. $('#goodsDetailForm input[name=currPrice]').val($('#goodsDetailForm input[name=currPriceOrg]').val().addComma());
  1328. return false;
  1329. });
  1330. }else{
  1331. $("#goodsDetailForm").find("#dcRateTxt").html(dcRate);
  1332. $("#goodsDetailForm input[name=dcRate]").val(dcRate);
  1333. return true;
  1334. }
  1335. } */
  1336. // 브랜드 조회
  1337. var fnBrand = function(supplyCompCd, brandCd) {
  1338. var actionUrl = '/renderer/supplyCompany/brand/list/' + supplyCompCd;
  1339. if(sessRoleCd == "G001_B000"){
  1340. actionUrl = '/renderer/brand/AuthBrandlist';
  1341. }
  1342. $("#goodsDetailForm select[name=selBrandCd] option:gt(0)").remove();
  1343. cfnCreateCombo(actionUrl, $('#goodsDetailForm select[name=selBrandCd]'), "[선택]", brandCd);
  1344. }
  1345. //배송비정책변경시
  1346. $('#goodsDetailForm select[name=delvFeeCd]').on('change', function() {
  1347. var delvFeeCd = $("#goodsDetailForm select[name=delvFeeCd]").val();
  1348. if (gagajf.isNull(delvFeeCd)){
  1349. $("#goodsDetailForm input[name=delvFee]").val('');
  1350. $("#goodsDetailForm input[name=minOrdAmt]").val('');
  1351. }else{
  1352. var obj = $('#goodsDetailForm select[name=delvFeeCd] option:selected');
  1353. $("#goodsDetailForm input[name=delvFee]").val(obj.attr("delvFee").addComma());
  1354. $("#goodsDetailForm input[name=minOrdAmt]").val(obj.attr("minOrdAmt").addComma());
  1355. }
  1356. });
  1357. //품목코드변경시
  1358. $('#goodsDetailForm select[name=itemkindCd]').on('change', function() {
  1359. var itemkindCd = $("#goodsDetailForm select[name=itemkindCd]").val();
  1360. var params = new Object();
  1361. params.itemkindCd = itemkindCd;
  1362. cfnAjaxSubmit("/goods/itemkind/list", "json", fnItemkindCallback, params);
  1363. });
  1364. var fnItemkindCallback = function(result){
  1365. if (result == null) return;
  1366. $("#goodsDetailForm input[name=niClsfCd]").val(result[0].niClsfCd)
  1367. }
  1368. //데이터 길이 확인
  1369. var fnDataLengthCheck = function(id , maxByte){
  1370. var maximumByte = maxByte;
  1371. var strLenEng = $('#goodsDetailForm').find('#'+id).val().length;
  1372. var cbyteStr = 0;
  1373. var liLenStr = 0;
  1374. for (i = 0; i < strLenEng; i++) {
  1375. var lsOneChar = $('#goodsDetailForm').find('#'+id).val().charAt(i);
  1376. if (lsOneChar == "\n" || lsOneChar == "\'") {
  1377. cbyteStr += 5; //엔터면 5를 더한다
  1378. } else if (lsOneChar == "\"") {
  1379. cbyteStr += 6; //쌍따옴표면 6를 더한다
  1380. } else if (escape(lsOneChar).length > 4) {
  1381. cbyteStr += 3; //한글이면 3를 더한다
  1382. } else {
  1383. cbyteStr++; //한글아니면 1을 다한다
  1384. }
  1385. if (cbyteStr <= maximumByte) {
  1386. liLenStr = i + 1;
  1387. }
  1388. }
  1389. // 사용자가 입력한 값이 제한 값을 초과하는지를 검사한다.
  1390. if (parseInt(cbyteStr) > parseInt(maximumByte)) {
  1391. mcxDialog.alertC('허용된 글자수가 초과되었습니다.\n초과된 부분은 자동으로 삭제됩니다.', {
  1392. sureBtnText: "확인",
  1393. sureBtnClick: function() {
  1394. $('#goodsDetailForm').find('#'+id).focus();
  1395. }
  1396. });
  1397. var str = $('#goodsDetailForm').find('#'+id).val().substr(0, liLenStr);
  1398. $('#goodsDetailForm').find('#'+id).val(str);
  1399. var cbyteStr = 0;
  1400. for (i = 0; i < $('#goodsDetailForm').find('#'+id).val().length; i++) {
  1401. var lsOneChar = $('#goodsDetailForm').find('#'+id).val().charAt(i);
  1402. if (lsOneChar == "\n" || lsOneChar == "\'") {
  1403. cbyteStr += 5; //엔터면 5를 더한다
  1404. } else if (lsOneChar == "\"") {
  1405. cbyteStr += 6; //쌍따옴표면 6를 더한다
  1406. } else if (escape(lsOneChar).length > 4) {
  1407. cbyteStr += 3; //한글이면 3를 더한다
  1408. } else {
  1409. cbyteStr++; //한글아니면 1을 다한다
  1410. }
  1411. }
  1412. }
  1413. $('#goodsDetailForm').find('#'+id+'Len').text(cbyteStr);
  1414. }
  1415. // 구성상품 조회 팝업
  1416. var fnOpenGoodsDetailPopup = function() {
  1417. cfnOpenGoodsPopup('fnGoodsDetailGoodsDeal');
  1418. }
  1419. // 구성상품 조회 팝업 - 상품추가
  1420. var fnGoodsDetailGoodsDeal = function(goodsData) {
  1421. if (goodsData.length < 1) return;
  1422. // 기존상품
  1423. var oldGoodsDealList = gagaAgGrid.getAllRowData(gridGoodsComposeOptions);
  1424. var idx = oldGoodsDealList.length+1;
  1425. var isExist = false;
  1426. goodsData.forEach(function(goods){
  1427. isExist = false;
  1428. gridGoodsComposeOptions.api.forEachNode(function(rowNode, index) {
  1429. if (goods.goodsCd == rowNode.data.extendGoodsCd){
  1430. isExist = true;
  1431. }
  1432. });
  1433. if (goods.goodsType != 'G056_N'){
  1434. isExist = true;
  1435. }
  1436. if(!isExist){
  1437. var data = {
  1438. goodsCd : $('#goodsDetailForm input[name=goodsCd]').val()
  1439. , compsGoodsCd: goods.goodsCd
  1440. , goodsType: $('#goodsDetailForm input[name=goodsType]').val()
  1441. , dispOrd: idx
  1442. , qty: 1
  1443. , compsCurrPrice: goods.currPrice
  1444. , baseYn: 'N'
  1445. , repYn: 'N'
  1446. , goodsStat : goods.goodsStat
  1447. , useYn: 'Y'
  1448. , compsGoodsOptNm : goods.goodsNm
  1449. , compsGoodsNm : goods.goodsNm
  1450. , currPrice : goods.currPrice
  1451. , selfGoodsYn : goods.selfGoodsYn
  1452. , sysImgNm : goods.sysImgNm
  1453. };
  1454. gridGoodsComposeOptions.api.updateRowData({add: [data], addIndex: idx});
  1455. idx++;
  1456. $('#goodsDetailForm').find('.tabs .tabsNav li:eq(5) a').attr("style", "color:red;");
  1457. }
  1458. });
  1459. gridGoodsComposeOptions.api.refreshCells();
  1460. uifnPopupClose('popupGoods');
  1461. }
  1462. //상품저장 버튼 클릭 시
  1463. $('#btnGoodsDetailSave').click(function() {
  1464. var optCheck = false;
  1465. var idx = 0;
  1466. //상품상태가 승인대기나 승인 완료일 경우
  1467. if($("#goodsDetailForm select[name=goodsStat]").val() == "G008_40" || $("#goodsDetailForm select[name=goodsStat]").val() == "G008_90"){
  1468. // SUPER관리자, 어드민관리자, 계정관리자. 총괄관리자, MD 를 제외하고 승인처리 할수 없음
  1469. if ($("#goodsDetailForm select[name=goodsStat]").val() == "G008_90" && $("#goodsDetailForm input[name=goodsStatOrg]").val() != "G008_90"){
  1470. // 승인완료이력이 있을 경우, 승인완료 상태로 변경가능 21.09.13
  1471. if( $("#goodsDetailForm input[name=goodsStat90Cnt]").val() == "0"){
  1472. mcxDialog.alert(" '승인완료' 상태로 변경할 권한이 없습니다.");
  1473. return false;
  1474. }
  1475. }
  1476. //list가 등록되지 않은 상품은 상태변경 불가
  1477. if(Number($("#goodsDetailForm input[name=listPrice]").val()) == 0){
  1478. mcxDialog.alertC("정상가가 등록되지 않은 상품은 '승인대기'나 '승인완료' 상태로 변경할 수 없습니다.", {
  1479. sureBtnText: "확인",
  1480. sureBtnClick: function() {
  1481. $("#goodsDetailForm select[name=goodsStat]").focus();
  1482. }
  1483. });
  1484. return false;
  1485. }
  1486. //판매가가 0인 상품은 상태변경 불가
  1487. if((gagajf.isNull($("#goodsDetailForm input[name=currPrice]").val()) || $("#goodsDetailForm input[name=currPrice]").val() == 0)){
  1488. mcxDialog.alertC("판매가가 등록되지 않은 상품은 '승인대기'나 '승인완료' 상태로 변경할 수 없습니다.", {
  1489. sureBtnText: "확인",
  1490. sureBtnClick: function() {
  1491. $("#goodsDetailForm select[name=goodsStat]").focus();
  1492. }
  1493. });
  1494. return;
  1495. }
  1496. //사이즈정보가 등록되지 않은 상품은 상태변경 불가
  1497. if($("#goodsDetailForm #sizeStockArea").find("#optionList tr").length == 0){
  1498. mcxDialog.alertC("사이즈정보가 등록되지 않은 상품은 '승인대기'나 '승인완료' 상태로 변경할 수 없습니다.", {
  1499. sureBtnText: "확인",
  1500. sureBtnClick: function() {
  1501. $("#goodsDetailForm select[name=goodsStat]").focus();
  1502. }
  1503. });
  1504. return;
  1505. }
  1506. //이미지가 등록되지 않은 상품은 상태변경 불가
  1507. /* if($("#goodsDetailForm input[name=goodsImageYn]").val() == "N"){
  1508. mcxDialog.alertC("이미지가 등록되지 않은 상품은 '승인대기'나 '승인완료' 상태로 변경할 수 없습니다.", {
  1509. sureBtnText: "확인",
  1510. sureBtnClick: function() {
  1511. $("#goodsDetailForm select[name=goodsStat]").focus();
  1512. }
  1513. });
  1514. return;
  1515. } */
  1516. //고시정보가 등록되지 않은 상품은 상태변경 불가 - 일반상품만 체크
  1517. if ("G056_N" == $("#goodsDetailForm input[name=goodsType]").val()){
  1518. if($("#goodsDetailForm #notiArea").find("#infoContents tr").length == 0){
  1519. mcxDialog.alertC("고시정보가 등록되지 않은 상품은 '승인대기'나 '승인완료' 상태로 변경할 수 없습니다.", {
  1520. sureBtnText: "확인",
  1521. sureBtnClick: function() {
  1522. $("#goodsDetailForm select[name=goodsStat]").focus();
  1523. }
  1524. });
  1525. return;
  1526. }
  1527. idx = 0;
  1528. //고시정보 필수나 전시표시값 입력여부 확인
  1529. $("#goodsDetailForm #notiArea").find("#infoContents tr").each(function() {
  1530. if (typeof($(this).find("td input[name=niContent]").val()) != 'undefined' && gagajf.isNull($(this).find("td input[name=niContent]").val())){
  1531. optCheck = true;
  1532. mcxDialog.alertC("고시정보를 입력해주세요.");
  1533. return false;
  1534. }
  1535. idx++;
  1536. });
  1537. }
  1538. // 상품상세 - 입점
  1539. if ("N" == $("#goodsDetailForm input[name=selfGoodsYn]").val() && $("#goodsDetailForm input[name=goodsType]").val() == "G056_N"){
  1540. if (gagajf.isNull($("#goodsDetailForm textarea[name=goodsDesc]").val()) || "<p><br></p>" == $("#goodsDetailForm textarea[name=goodsDesc]").val() ){
  1541. mcxDialog.alert("상품상세정보탭의 상품상세내용을 입력해주세요.");
  1542. return false;
  1543. }
  1544. }
  1545. // 자사일 경우 대표색상 선택 여부
  1546. if ("Y" == $('#goodsDetailForm input[name=selfGoodsYn]').val()){
  1547. if($("#goodsDetailForm input[name=basicColor]:checked").length == 0) {
  1548. mcxDialog.alert("대표색상을 선택해주세요.")
  1549. return false;
  1550. }
  1551. }
  1552. }
  1553. if(optCheck) {
  1554. return false;
  1555. }
  1556. //상품명
  1557. if(gagajf.isNull($("#goodsDetailForm input[name=goodsNm]").val())){
  1558. mcxDialog.alertC("상품명을 입력해 주세요.", {
  1559. sureBtnText: "확인",
  1560. sureBtnClick: function() {
  1561. $("#goodsDetailForm input[name=goodsNm]").focus();
  1562. }
  1563. });
  1564. return;
  1565. }
  1566. //상품상태
  1567. if(gagajf.isNull($("#goodsDetailForm select[name=goodsStat]").val())){
  1568. mcxDialog.alertC("상품상태를 선택해 주세요.", {
  1569. sureBtnText: "확인",
  1570. sureBtnClick: function() {
  1571. $("#goodsDetailForm select[name=goodsStat]").focus();
  1572. }
  1573. });
  1574. return;
  1575. }
  1576. //시즌 - 입점은 필수 제외
  1577. //if ("Y" == $("#goodsDetailForm input[name=selfGoodsYn]").val()){
  1578. if(gagajf.isNull($("#goodsDetailForm select[name=seasonCd]").val())){
  1579. mcxDialog.alertC("시즌을 선택해 주세요.", {
  1580. sureBtnText: "확인",
  1581. sureBtnClick: function() {
  1582. $("#goodsDetailForm select[name=seasonCd]").focus();
  1583. }
  1584. });
  1585. return;
  1586. }
  1587. //}
  1588. //성별
  1589. if(gagajf.isNull($("#goodsDetailForm select[name=sexGb]").val())){
  1590. mcxDialog.alertC("성별을 선택해 주세요.", {
  1591. sureBtnText: "확인",
  1592. sureBtnClick: function() {
  1593. $("#goodsDetailForm select[name=sexGb]").focus();
  1594. }
  1595. });
  1596. return;
  1597. }
  1598. // 상품구분
  1599. if(gagajf.isNull($("#goodsDetailForm select[name=goodsGb]").val())){
  1600. mcxDialog.alertC("상품구분을 선택해 주세요.", {
  1601. sureBtnText: "확인",
  1602. sureBtnClick: function() {
  1603. $("#goodsDetailForm select[name=goodsGb]").focus();
  1604. }
  1605. });
  1606. return;
  1607. }
  1608. //판매가
  1609. if(gagajf.isNull($("#goodsDetailForm input[name=currPrice]").val())) {
  1610. mcxDialog.alertC("판매가를 올바르게 입력해주세요.", {
  1611. sureBtnText: "확인",
  1612. sureBtnClick: function() {
  1613. $("#goodsDetailForm input[name=currPrice]").focus();
  1614. }
  1615. });
  1616. return false;
  1617. }
  1618. /* if(Number($("#goodsDetailForm input[name=currPrice]").val().removeComma()) < 1000) {
  1619. mcxDialog.alertC("판매가는 1000원 이상을 입력하셔야 합니다.", {
  1620. sureBtnText: "확인",
  1621. sureBtnClick: function() {
  1622. $("#goodsDetailForm input[name=currPrice]").focus();
  1623. }
  1624. });
  1625. } */
  1626. //정상가와 판매가 비교
  1627. if(Number($("#goodsDetailForm input[name=listPrice]").val().removeComma()) < Number($("#goodsDetailForm input[name=currPrice]").val().removeComma())) {
  1628. mcxDialog.alertC("판매가를 올바르게 입력해주세요.", {
  1629. sureBtnText: "확인",
  1630. sureBtnClick: function() {
  1631. $("#goodsDetailForm input[name=currPrice]").focus();
  1632. }
  1633. });
  1634. return false;
  1635. }
  1636. //판매 수수료율
  1637. if ( gagajf.isNull($("#goodsDetailForm input[name=sellFeeRate]").val())) {
  1638. mcxDialog.alertC("판매수수료를 입력해 주세요.", {
  1639. sureBtnText: "확인",
  1640. sureBtnClick: function() {
  1641. $("#goodsDetailForm input[name=sellFeeRate]").focus();
  1642. }
  1643. });
  1644. return false;
  1645. }
  1646. if(Number($("#goodsDetailForm input[name=sellFeeRate]").val()) < 0 || Number($("#goodsDetailForm input[name=sellFeeRate]").val()) > 100) {
  1647. mcxDialog.alertC("판매수수료를 올바르게 입력해주세요.", {
  1648. sureBtnText: "확인",
  1649. sureBtnClick: function() {
  1650. $("#goodsDetailForm input[name=sellFeeRate]").focus();
  1651. }
  1652. });
  1653. return false;
  1654. }
  1655. //신규가입기간
  1656. if ("Y" == $("#goodsDetailForm input[name=newCustOrdYn]:checked").val()){
  1657. if(isNaN(Date.parse($("#goodsDetailForm input[name=newCustOrdStdt]").val()))){
  1658. mcxDialog.alertC('날짜형식이 아닙니다.', {
  1659. sureBtnText: "확인",
  1660. sureBtnClick: function() {
  1661. $("#goodsDetailForm input[name=newCustOrdStdt]").focus();
  1662. }
  1663. });
  1664. return false;
  1665. }
  1666. if(isNaN(Date.parse($("#goodsDetailForm input[name=newCustOrdEddt]").val()))){
  1667. mcxDialog.alertC('날짜형식이 아닙니다.', {
  1668. sureBtnText: "확인",
  1669. sureBtnClick: function() {
  1670. $("#goodsDetailForm input[name=newCustOrdEddt]").focus();
  1671. }
  1672. });
  1673. return false;
  1674. }
  1675. var fromDate = $('#goodsDetailForm input[name=newCustOrdStdt]').val();
  1676. var toDate = $('#goodsDetailForm input[name=newCustOrdEddt]').val();
  1677. if (fromDate > toDate) {
  1678. mcxDialog.alertC("신규가입일의 시작일자는 종료일자 보다 클 수 없습니다.", {
  1679. sureBtnText: "확인",
  1680. sureBtnClick: function() {
  1681. $('#goodsDetailForm input[name=newCustOrdStdt]').focus();
  1682. }
  1683. });
  1684. return false;
  1685. }
  1686. }else{
  1687. $('#goodsDetailForm input[name=newCustOrdStdt]').val('');
  1688. $('#goodsDetailForm input[name=newCustOrdEddt]').val('');
  1689. }
  1690. // 출고처
  1691. if(gagajf.isNull($("#goodsDetailForm select[name=delvLocCd]").val())){
  1692. mcxDialog.alertC("출고처를 선택해 주세요.", {
  1693. sureBtnText: "확인",
  1694. sureBtnClick: function() {
  1695. $("#goodsDetailForm select[name=delvLocCd]").focus();
  1696. }
  1697. });
  1698. return;
  1699. }
  1700. // 배송비구분
  1701. if(gagajf.isNull($("#goodsDetailForm select[name=delvFeeCd]").val())){
  1702. mcxDialog.alertC("배송비정책을 선택해 주세요.", {
  1703. sureBtnText: "확인",
  1704. sureBtnClick: function() {
  1705. $("#goodsDetailForm select[name=delvFeeCd]").focus();
  1706. }
  1707. });
  1708. return;
  1709. }
  1710. // 포인트
  1711. if ( gagajf.isNull($("#goodsDetailForm input[name=pntPrate]").val())) {
  1712. mcxDialog.alertC("PC 포인트를 입력해 주세요.", {
  1713. sureBtnText: "확인",
  1714. sureBtnClick: function() {
  1715. $("#goodsDetailForm input[name=pntPrate]").focus();
  1716. }
  1717. });
  1718. return false;
  1719. }
  1720. if(Number($("#goodsDetailForm input[name=pntPrate]").val()) < 0 || Number($("#goodsDetailForm input[name=pntPrate]").val()) > 100) {
  1721. mcxDialog.alertC("PC 포인트를 올바르게 입력해주세요.", {
  1722. sureBtnText: "확인",
  1723. sureBtnClick: function() {
  1724. $("#goodsDetailForm input[name=pntPrate]").focus();
  1725. }
  1726. });
  1727. return false;
  1728. }
  1729. if ( gagajf.isNull($("#goodsDetailForm input[name=pntMrate]").val())) {
  1730. mcxDialog.alertC("MOBILE 포인트를 입력해 주세요.", {
  1731. sureBtnText: "확인",
  1732. sureBtnClick: function() {
  1733. $("#goodsDetailForm input[name=pntMrate]").focus();
  1734. }
  1735. });
  1736. return false;
  1737. }
  1738. if(Number($("#goodsDetailForm input[name=pntMrate]").val()) < 0 || Number($("#goodsDetailForm input[name=pntMrate]").val()) > 100) {
  1739. mcxDialog.alertC("MOBILE 포인트를 올바르게 입력해주세요.", {
  1740. sureBtnText: "확인",
  1741. sureBtnClick: function() {
  1742. $("#goodsDetailForm input[name=pntMrate]").focus();
  1743. }
  1744. });
  1745. return false;
  1746. }
  1747. // 주문수량
  1748. if ( gagajf.isNull($("#goodsDetailForm input[name=minOrdQty]").val())) {
  1749. mcxDialog.alertC("최소주문 수량을 입력해 주세요.", {
  1750. sureBtnText: "확인",
  1751. sureBtnClick: function() {
  1752. $("#goodsDetailForm input[name=minOrdQty]").focus();
  1753. }
  1754. });
  1755. return false;
  1756. }
  1757. if (Number($("#goodsDetailForm input[name=minOrdQty]").val()) <= 0) {
  1758. mcxDialog.alertC("최소주문 수량을 입력해 주세요.", {
  1759. sureBtnText: "확인",
  1760. sureBtnClick: function() {
  1761. $("#goodsDetailForm input[name=minOrdQty]").focus();
  1762. }
  1763. });
  1764. return false;
  1765. }
  1766. if ( gagajf.isNull($("#goodsDetailForm input[name=maxOrdQty]").val())) {
  1767. mcxDialog.alertC("최대주문 수량을 입력해 주세요.", {
  1768. sureBtnText: "확인",
  1769. sureBtnClick: function() {
  1770. $("#goodsDetailForm input[name=maxOrdQty]").focus();
  1771. }
  1772. });
  1773. return false;
  1774. }
  1775. if (Number($("#goodsDetailForm input[name=maxOrdQty]").val()) <= 0) {
  1776. mcxDialog.alertC("최대주문 수량을 입력해 주세요.", {
  1777. sureBtnText: "확인",
  1778. sureBtnClick: function() {
  1779. $("#goodsDetailForm input[name=maxOrdQty]").focus();
  1780. }
  1781. });
  1782. return false;
  1783. }
  1784. if ( gagajf.isNull($("#goodsDetailForm input[name=dayMaxOrdQty]").val())) {
  1785. mcxDialog.alertC("ID당1일최대구매 수량을 입력해 주세요.", {
  1786. sureBtnText: "확인",
  1787. sureBtnClick: function() {
  1788. $("#goodsDetailForm input[name=dayMaxOrdQty]").focus();
  1789. }
  1790. });
  1791. return false;
  1792. }
  1793. if (Number($("#goodsDetailForm input[name=dayMaxOrdQty]").val()) <= 0) {
  1794. mcxDialog.alertC("ID당1일최대구매 수량을 입력해 주세요.", {
  1795. sureBtnText: "확인",
  1796. sureBtnClick: function() {
  1797. $("#goodsDetailForm input[name=dayMaxOrdQty]").focus();
  1798. }
  1799. });
  1800. return false;
  1801. }
  1802. if(Number($("#goodsDetailForm input[name=minOrdQty]").val()) > Number($("#goodsDetailForm input[name=maxOrdQty]").val())){
  1803. mcxDialog.alertC("최소주문수량은 최대주문수량보다 클 수 없습니다.", {
  1804. sureBtnText: "확인",
  1805. sureBtnClick: function() {
  1806. $("#goodsDetailForm input[name=minOrdQty]").focus();
  1807. }
  1808. });
  1809. return false;
  1810. }
  1811. if(Number($("#goodsDetailForm input[name=maxOrdQty]").val()) > Number($("#goodsDetailForm input[name=dayMaxOrdQty]").val())){
  1812. mcxDialog.alertC("최대주문수량이 ID당1일최대구매수량보다 클 수 없습니다.", {
  1813. sureBtnText: "확인",
  1814. sureBtnClick: function() {
  1815. $("#goodsDetailForm input[name=maxOrdQty]").focus();
  1816. }
  1817. });
  1818. return false;
  1819. }
  1820. if(isNaN(Date.parse($("#goodsDetailForm input[name=sellStYMD]").val()))){
  1821. mcxDialog.alertC('날짜형식이 아닙니다.', {
  1822. sureBtnText: "확인",
  1823. sureBtnClick: function() {
  1824. $("#goodsDetailForm input[name=sellStYMD]").focus();
  1825. }
  1826. });
  1827. return false;
  1828. }
  1829. if(isNaN(Date.parse($("#goodsDetailForm input[name=sellEdYMD]").val()))){
  1830. mcxDialog.alertC('날짜형식이 아닙니다.', {
  1831. sureBtnText: "확인",
  1832. sureBtnClick: function() {
  1833. $("#goodsDetailForm input[name=sellEdYMD]").focus();
  1834. }
  1835. });
  1836. return false;
  1837. }
  1838. var fromDate = $("#goodsDetailForm input[name=sellStYMD]").val().replaceAll('-', '')+ $("#goodsDetailForm select[name=sellStHH]").val();
  1839. var toDate = $("#goodsDetailForm input[name=sellEdYMD]").val().replaceAll('-', '')+ $("#goodsDetailForm select[name=sellEdHH]").val();
  1840. if (fromDate > toDate) {
  1841. mcxDialog.alertC("판매기간의 시작일시는 종료일시 보다 클 수 없습니다.", {
  1842. sureBtnText: "확인",
  1843. sureBtnClick: function() {
  1844. $('#goodsDetailForm input[name=sellStYMD]').focus();
  1845. }
  1846. });
  1847. return false;
  1848. }
  1849. // 상품상세 - 입점
  1850. if ("N" == $("#goodsDetailForm input[name=selfGoodsYn]").val() && $("#goodsDetailForm input[name=goodsType]").val() == "G056_N"){
  1851. if (gagajf.isNull($("#goodsDetailForm textarea[name=goodsDesc]").val()) || "<p><br></p>" == $("#goodsDetailForm textarea[name=goodsDesc]").val() ){
  1852. mcxDialog.alert("상품상세정보탭의 상품상세내용을 입력해주세요.");
  1853. return false;
  1854. }
  1855. }
  1856. idx = 0;
  1857. //재고 옵션 관련 확인
  1858. $("#goodsDetailForm input[name=chStockDataYn]").val('N');
  1859. $("#optionList tr").each(function() {
  1860. var optCd1 = $(this).find("input[name=optCd1]").val();
  1861. var hidOptCd1 = $(this).find("input[name=hidOptCd1]").val();
  1862. var optCd2 = $(this).find("input[name=optCd2]").val();
  1863. var baseStockQty = $(this).find("input[name=baseStockQty]").val();
  1864. var hidBaseStockQty = $(this).find("input[name=hidBaseStockQty]").val();
  1865. var dispOrd = $(this).find("input[name=dispOrd]").val();
  1866. var hidDispOrd = $(this).find("input[name=hidDispOrd]").val();
  1867. var dispYn = $(this).find("select[name=dispYn]").val();
  1868. var hidDispYn = $(this).find("input[name=hidDispYn]").val();
  1869. var soldoutYn = $(this).find("select[name=soldoutYn]").val();
  1870. var hidSoldoutYn = $(this).find("input[name=hidSoldoutYn]").val();
  1871. var addPrice = $(this).find("input[name=addPrice]").val();
  1872. var hidAddPrice = $(this).find("input[name=hidAddPrice]").val();
  1873. var editCurrStockQty = $(this).find("input[name=editCurrStockQty]").val(); // 입점 확인용
  1874. var currStockQty = $(this).find("input[name=currStockQty]").val(); // 입점 확인용 (hidden)
  1875. //입점용 추가조건 S
  1876. if (gagajf.isNull(optCd1)){
  1877. optCheck = true;
  1878. mcxDialog.alertC("옵션1를 입력해주세요", {
  1879. sureBtnText: "확인",
  1880. sureBtnClick: function() {
  1881. $("#optionList tr").find("input[name=optCd1]").eq(idx).focus();
  1882. }
  1883. });
  1884. return false;
  1885. }
  1886. // 첫번째 옵션2의 정보를 확인하여 동일 한지 체크
  1887. var firstOptCd2 = $("#optionList tr").find("input[name=optCd2]").eq(idx).focus();
  1888. if ((gagajf.isNull(firstOptCd2) == !gagajf.isNull(optCd2)) || (!gagajf.isNull(firstOptCd2) == gagajf.isNull(optCd2))){
  1889. optCheck = true;
  1890. mcxDialog.alertC("옵션2를 확인해주세요", {
  1891. sureBtnText: "확인",
  1892. sureBtnClick: function() {
  1893. $("#optionList tr").find("input[name=optCd2]").eq(idx).focus();
  1894. }
  1895. });
  1896. return false;
  1897. }
  1898. //입점용 추가조건 E
  1899. if(gagajf.isNull(addPrice)){
  1900. optCheck = true;
  1901. mcxDialog.alertC("추가가격을 입력해주세요", {
  1902. sureBtnText: "확인",
  1903. sureBtnClick: function() {
  1904. $("#optionList tr").find("input[name=addPrice]").eq(idx).focus();
  1905. }
  1906. });
  1907. return false;
  1908. }
  1909. if(gagajf.isNull(dispOrd)){
  1910. optCheck = true;
  1911. mcxDialog.alertC("노출순서를 입력해주세요", {
  1912. sureBtnText: "확인",
  1913. sureBtnClick: function() {
  1914. $("#optionList tr").find("input[name=dispOrd]").eq(idx).focus();
  1915. }
  1916. });
  1917. return false;
  1918. }
  1919. // 입점만 체크
  1920. if ("N" == $('#goodsDetailForm input[name=selfGoodsYn]').val()){
  1921. if(gagajf.isNull(editCurrStockQty)){
  1922. optCheck = true;
  1923. mcxDialog.alertC("가용재고를 입력해주세요", {
  1924. sureBtnText: "확인",
  1925. sureBtnClick: function() {
  1926. $("#optionList tr").find("input[name=editCurrStockQty]").eq(idx).focus();
  1927. }
  1928. });
  1929. return false;
  1930. }
  1931. }
  1932. if(gagajf.isNull(baseStockQty)){
  1933. optCheck = true;
  1934. mcxDialog.alertC("안전재고를 입력해주세요", {
  1935. sureBtnText: "확인",
  1936. sureBtnClick: function() {
  1937. $("#optionList tr").find("input[name=baseStockQty]").eq(idx).focus();
  1938. }
  1939. });
  1940. return false;
  1941. }
  1942. if (optCd1 != hidOptCd1){
  1943. $("#goodsDetailForm input[name=chStockDataYn]").val('Y');
  1944. }
  1945. if (editCurrStockQty != currStockQty){
  1946. $("#goodsDetailForm input[name=chStockDataYn]").val('Y');
  1947. }
  1948. if (baseStockQty != hidBaseStockQty){
  1949. $("#goodsDetailForm input[name=chStockDataYn]").val('Y');
  1950. }
  1951. if (dispOrd != hidDispOrd){
  1952. $("#goodsDetailForm input[name=chStockDataYn]").val('Y');
  1953. }
  1954. if (dispYn != hidDispYn){
  1955. $("#goodsDetailForm input[name=chStockDataYn]").val('Y');
  1956. }
  1957. if (soldoutYn != hidSoldoutYn){
  1958. $("#goodsDetailForm input[name=chStockDataYn]").val('Y');
  1959. }
  1960. if (addPrice != hidAddPrice){
  1961. $("#goodsDetailForm input[name=chStockDataYn]").val('Y');
  1962. }
  1963. idx++;
  1964. });
  1965. if(optCheck) {
  1966. return false;
  1967. }
  1968. //안전인증관련
  1969. if (!fnGoodsSafetyCertNumCheck()) return false;
  1970. /* //인증번호 있는데 인증작업 했는지 여부 확인
  1971. if (!gagajf.isNull($("#goodsDetailForm input[name=certNum]").val())){
  1972. if ("G084_4" == $("#goodsDetailForm select[name=certFormGb]").val() ||
  1973. "G084_5" == $("#goodsDetailForm select[name=certFormGb]").val() ||
  1974. "G081_3" == $("#goodsDetailForm select[name=certType]").val()) {
  1975. }else{
  1976. if (gagajf.isNull($('#goodsDetailForm').find('#certStateTxt').text())){
  1977. mcxDialog.alert("안전인증작업을 하거나 인증번호를 확인해주세요.");
  1978. return false;
  1979. }
  1980. }
  1981. }
  1982. if (!gagajf.isNull($("#goodsDetailForm input[name=certNum]").val()) && ($("#goodsDetailForm input[name=certNum]").val() != $("#goodsDetailForm input[name=certNumOrg]").val())){
  1983. mcxDialog.alert("안전인증작업을 하거나 인증번호를 확인해주세요.");
  1984. return false;
  1985. } */
  1986. var basicColor = $("#goodsDetailForm input[name=basicColor]:checked").val();
  1987. var dcRate = 0;
  1988. var listPrice = $("#goodsDetailForm input[name=listPrice]").val().removeComma();
  1989. var currPrice = $("#goodsDetailForm input[name=currPrice]").val().removeComma();
  1990. dcRate = 100 - Math.floor(Number(currPrice) / Number(listPrice) * 100); //절사
  1991. if (dcRate < 0){
  1992. mcxDialog.alertC('할인율이 0보다 작습니다.\n판매가를 확인해주세요.', {
  1993. sureBtnText: "확인",
  1994. sureBtnClick: function() {
  1995. $("#goodsDetailForm input[name=currPrice]").focus();
  1996. }
  1997. });
  1998. return false;
  1999. /* }else if (dcRate >= 90){
  2000. mcxDialog.confirmC("할인율이 90%이상입니다. 계속하시겠습니까?", {
  2001. btn: ["아니요","예"],
  2002. btnClick: function(index){
  2003. if (index == 1){
  2004. optCheck = true;
  2005. } else {
  2006. fnSaveCheck();
  2007. }
  2008. }
  2009. }); */
  2010. }else{
  2011. $("#goodsDetailForm").find("#dcRateTxt").html(dcRate);
  2012. $("#goodsDetailForm input[name=dcRate]").val(dcRate);
  2013. if (!fnGoodsComposeCheck()) return false;
  2014. fnSaveCheck();
  2015. }
  2016. if (optCheck) return false;
  2017. });
  2018. //저장 관련 체크
  2019. var fnSaveCheck = function(idx){
  2020. if($("#goodsDetailForm input:checkbox[name=chkDescKeep]").is(':checked')){
  2021. mcxDialog.confirmC("상품상세정보 탭의 정보를 수정하는 경우는 정보유지 체크박스를 체크해제 하신후 저장버튼을 눌러주세요<br>(정보유지에 체크가 되어 있으면 변경사항이 반영되지 않습니다)<br>나머지 다른 탭은 저장버튼 클릭시 변경한 사항이 이상없이 반영됩니다. 계속하시겠습니까?", {
  2022. btn: ["아니요","예"],
  2023. btnClick: function(index){
  2024. if (index == 1){
  2025. optCheck = true;
  2026. } else {
  2027. fnGoodsSave();
  2028. }
  2029. }
  2030. });
  2031. }else{
  2032. fnGoodsSave();
  2033. }
  2034. }
  2035. //저장처리
  2036. var fnGoodsSave = function(){
  2037. mcxDialog.confirm('저장하시겠습니까?', {
  2038. cancelBtnText: "취소",
  2039. sureBtnText: "확인",
  2040. sureBtnClick: function(){
  2041. fnGoodsDeailNotiSave();
  2042. if (fnChangeCheck()){
  2043. $("#goodsDetailForm input[name=chDataYn]").val('Y');
  2044. }else{
  2045. $("#goodsDetailForm input[name=chDataYn]").val('N');
  2046. }
  2047. // 승인여부 확인 - 판매가와 판매수수룔 변경시
  2048. // 판매수수료율
  2049. var chCfrmYn = "N";
  2050. if ($("#goodsDetailForm input[name=sellFeeRateOrg]").val() != $("#goodsDetailForm input[name=sellFeeRate]").val()){
  2051. chCfrmYn = "Y";
  2052. }
  2053. //판매가
  2054. if ($("#goodsDetailForm input[name=currPriceOrg]").val() != $("#goodsDetailForm input[name=currPrice]").val().removeComma()){
  2055. chCfrmYn = "Y";
  2056. }
  2057. $("#goodsDetailForm input[name=chCfrmYn]").val(chCfrmYn);
  2058. $("#goodsDetailForm input[name=mainColorCd]").val($("#goodsDetailForm input[name=basicColor]:checked").val());
  2059. //구성상품
  2060. var allData = gagaAgGrid.getAllRowData(gridGoodsComposeOptions);
  2061. var jsonData = JSON.stringify(allData);
  2062. $('#goodsDetailForm input[name=goodsComposeList]').val(jsonData);debugger;
  2063. $('#goodsDetailForm input[name=goodsNm]').val($('#goodsDetailForm input[name=goodsNm]').val().trim().replace(/\n|\r/g, "<br/>").replace(/\"/gi, "&quot;").replace(/\'/gi, "&#39;"));
  2064. $('#goodsDetailForm input[name=goodsTnm]').val($('#goodsDetailForm input[name=goodsTnm]').val().trim().replace(/\n|\r/g, "<br/>").replace(/\"/gi, "&quot;").replace(/\'/gi, "&#39;"));
  2065. $('#goodsDetailForm input[name=goodsSnm1]').val($('#goodsDetailForm input[name=goodsSnm1]').val().trim().replace(/\n|\r/g, "<br/>").replace(/\"/gi, "&quot;").replace(/\'/gi, "&#39;"));
  2066. gagajf.ajaxFormSubmit("/goods/detail/save", "#goodsDetailForm", fnGoodsSaveCallBack);
  2067. }
  2068. });
  2069. }
  2070. // 구성 정보 관련 체크
  2071. var fnGoodsComposeCheck = function(){
  2072. if ($("#goodsDetailForm input[name=goodsType]").val() == "G056_N"){
  2073. return true;
  2074. }
  2075. var allData = gagaAgGrid.getAllRowData(gridGoodsComposeOptions);
  2076. var comSupplyCompCd = '';
  2077. var comSelfGoodsYn = '';
  2078. var index = 0;
  2079. //기준여부 Y 존재하는지 확인
  2080. var checkBaseYn = false;
  2081. //대표여부 Y 존재하는지 확인
  2082. var checkRepYn = false;
  2083. optCheck = false;
  2084. $.each(allData, function(index, item) {
  2085. if (index == 0){
  2086. comSelfGoodsYn = item.selfGoodsYn;
  2087. comSupplyCompCd = item.supplyCompCd;
  2088. }
  2089. if (item.baseYn == "Y"){
  2090. checkBaseYn = true;
  2091. }
  2092. if (item.repYn == "Y"){
  2093. checkRepYn = true;
  2094. }
  2095. if (comSelfGoodsYn != item.selfGoodsYn && "G056_S" == $("#goodsDetailForm input[name=goodsType]").val()){
  2096. optCheck = true;
  2097. mcxDialog.alertC("구성상품중 자사/입점상품 구분값이 다릅니다.<br/>확인해 주세요", {
  2098. sureBtnText: "확인",
  2099. sureBtnClick: function() {
  2100. gridGoodsComposeOptions.api.setFocusedCell(index, "goodsCd", null);
  2101. }
  2102. });
  2103. return false;
  2104. /*
  2105. }else{
  2106. if (comSelfGoodsYn == "N" && (comSupplyCompCd != item.supplyCompCd)){
  2107. optCheck = true;
  2108. mcxDialog.alertC("구성상품중 입점은 같은 업체 상품만 가능합니다.<br/>확인해 주세요", {
  2109. sureBtnText: "확인",
  2110. sureBtnClick: function() {
  2111. gridGoodsComposeOptions.api.setFocusedCell(index, "goodsCd", null);
  2112. }
  2113. });
  2114. return false;
  2115. }
  2116. */
  2117. }
  2118. // 세트 가격 체크
  2119. if ($("#goodsDetailForm input[name=goodsType]").val() == "G056_S"){
  2120. if (item.compsCurrPrice <= 0){
  2121. optCheck = true;
  2122. mcxDialog.alertC("구성상품 판매가를 확인해 주세요", {
  2123. sureBtnText: "확인",
  2124. sureBtnClick: function() {
  2125. gridGoodsComposeOptions.api.setFocusedCell(index, "compsCurrPrice", null);
  2126. }
  2127. });
  2128. return false;
  2129. }
  2130. }
  2131. index++;
  2132. });
  2133. if(optCheck) {
  2134. return false;
  2135. }
  2136. if (!checkBaseYn){
  2137. mcxDialog.alert('구성상품중 기준여부를 선택해 주세요.');
  2138. return false;
  2139. }
  2140. if (!checkRepYn && $("#goodsDetailForm input[name=goodsType]").val() == "G056_D"){
  2141. mcxDialog.alert('구성상품중 대표여부를 선택해 주세요.');
  2142. return false;
  2143. }
  2144. return true;
  2145. }
  2146. //미리보기 클릭 시
  2147. $('#btnGoodsDetailPreview').click(function(e) {
  2148. cfnOpenFrontGoodsPopup($('#goodsDetailForm input[name=goodsCd]').val());
  2149. });
  2150. //이미지 클릭 시
  2151. $('#btnGoodsDetailImg').click(function(e) {
  2152. cfnOpenGoodsImagePopup($('#goodsDetailForm input[name=goodsCd]').val());
  2153. });
  2154. //창종료
  2155. var fnGoodsDetailClose = function(){
  2156. uifnPopupClose('popupGoodsDetail');
  2157. }
  2158. //저장후 callback
  2159. var fnGoodsSaveCallBack = function(){
  2160. var goodsCd = $('#goodsDetailForm input[name=goodsCd]').val();
  2161. fnGoodsDetailClose();
  2162. cfnOpenGoodsDetailPopup('U', goodsCd);
  2163. }
  2164. //고시정보 저장을 위한 데이터 처리
  2165. var fnGoodsDeailNotiSave = function(){
  2166. var goodsCd = $('#goodsDetailForm input[name=goodsCd]').val();
  2167. var goodsInfoList = [];
  2168. var index = 0;
  2169. $("#goodsDetailForm").find("#infoContents tr").each(function() {
  2170. if (index > 0){
  2171. var goodsInfo = {goodsCd: goodsCd
  2172. , niClsfCd : $('#goodsDetailForm input[name=niClsfCd]').val()
  2173. , niItemCd : $(this).find("input[name=niItemCd]").val()
  2174. , niContent : $(this).find("input[name=niContent]").val()
  2175. , dispOrd : $(this).find("input[name=dispOrd]").val()
  2176. };
  2177. goodsInfoList.push(goodsInfo);
  2178. }
  2179. index++;
  2180. });
  2181. $("#goodsDetailForm input[name=notiList]").val(JSON.stringify(goodsInfoList));
  2182. }
  2183. //상품기본정보 변경여부 확인
  2184. var fnChangeCheck = function(){
  2185. //상품타이틀
  2186. if ($("#goodsDetailForm input[name=goodsTnmOrg]").val() != $("#goodsDetailForm input[name=goodsTnm]").val()){
  2187. return true;
  2188. }
  2189. //사용자검색어
  2190. if ($("#goodsDetailForm input[name=goodsSnm1Org]").val() != $("#goodsDetailForm input[name=goodsSnm1]").val()){
  2191. return true;
  2192. }
  2193. //상품명
  2194. if ($("#goodsDetailForm input[name=goodsNmOrg]").val() != $("#goodsDetailForm input[name=goodsNm]").val()){
  2195. return true;
  2196. }
  2197. //상품정상이월구분
  2198. if ($("#goodsDetailForm input[name=formalGbOrg]").val() != $("input:radio[name=formalGb]:checked").val()){
  2199. return true;
  2200. }
  2201. //상품구분
  2202. if ($("#goodsDetailForm input[name=goodsGbOrg]").val() != $("#goodsDetailForm select[name=goodsGb]").val()){
  2203. return true;
  2204. }
  2205. //상품상태
  2206. if ($("#goodsDetailForm input[name=goodsStatOrg]").val() != $("#goodsDetailForm select[name=goodsStat]").val()){
  2207. return true;
  2208. }
  2209. //시즌
  2210. if ($("#goodsDetailForm input[name=seasonCdOrg]").val() != $("#goodsDetailForm select[name=seasonCd]").val()){
  2211. return true;
  2212. }
  2213. //성별
  2214. if ($("#goodsDetailForm input[name=sexGbOrg]").val() != $("#goodsDetailForm select[name=sexGb]").val()){
  2215. return true;
  2216. }
  2217. //판매가
  2218. if ($("#goodsDetailForm input[name=currPriceOrg]").val() != $("#goodsDetailForm input[name=currPrice]").val().removeComma()){
  2219. return true;
  2220. }
  2221. //자사 일반상품만
  2222. if($("#goodsDetailForm input[name=selfGoodsYn]").val() == 'Y' && $("#goodsDetailForm input[name=goodType]").val() == 'G056_N'){
  2223. //ERP재고연동여부
  2224. if ($("#goodsDetailForm input[name=erpStockLinkYnOrg]").val() != $("#goodsDetailForm input[name=erpStockLinkYn]:checked").val()){
  2225. return true;
  2226. }
  2227. }
  2228. //자사몰 노출여부
  2229. if ($("#goodsDetailForm input[name=selfMallYnOrg]").val() != $("input[name=selfMallYn]:checked").val()){
  2230. return true;
  2231. }
  2232. //PC포인트
  2233. if ($("#goodsDetailForm input[name=pntPrateOrg]").val() != $("#goodsDetailForm input[name=pntPrate]").val()){
  2234. return true;
  2235. }
  2236. //PC 선포인트 사용여부
  2237. if ($("#goodsDetailForm input[name=prePpntUsableYnOrg]").val() != $("input[name=prePpntUsableYn]:checked").val()){
  2238. return true;
  2239. }
  2240. //MOBILE포인트
  2241. if ($("#goodsDetailForm input[name=pntMrateOrg]").val() != $("#goodsDetailForm input[name=pntMrate]").val()){
  2242. return true;
  2243. }
  2244. //MOBILE 선포인트 사용여부
  2245. if ($("#goodsDetailForm input[name=preMpntUsableYnOrg]").val() != $("input[name=preMpntUsableYn]:checked").val()){
  2246. return true;
  2247. }
  2248. //최소주문수량
  2249. if ($("#goodsDetailForm input[name=minOrdQtyOrg]").val() != $("#goodsDetailForm input[name=minOrdQty]").val()){
  2250. return true;
  2251. }
  2252. //최대주문수량
  2253. if ($("#goodsDetailForm input[name=maxOrdQtyOrg]").val() != $("#goodsDetailForm input[name=maxOrdQty]").val()){
  2254. return true;
  2255. }
  2256. //ID당1일최대구매수량
  2257. if ($("#goodsDetailForm input[name=dayMaxOrdQtyOrg]").val() != $("#goodsDetailForm input[name=dayMaxOrdQty]").val()){
  2258. return true;
  2259. }
  2260. //유통구분
  2261. if ($("#goodsDetailForm input[name=distributionGbOrg]").val() != $("#goodsDetailForm select[name=distributionGb]").val()){
  2262. return true;
  2263. }
  2264. //상품연령대
  2265. if ($("#goodsDetailForm input[name=ageGrpCdOrg]").val() != $("#goodsDetailForm select[name=ageGrpCd]").val()){
  2266. return true;
  2267. }
  2268. // 판매수수료율
  2269. if ($("#goodsDetailForm input[name=sellFeeRateOrg]").val() != $("#goodsDetailForm input[name=sellFeeRate]").val()){
  2270. return true;
  2271. }
  2272. // 메인 색상코드
  2273. if ($("#goodsDetailForm input[name=mainColorCd]").val() != $("#goodsDetailForm input[name=basicColor]:checked").val()){
  2274. return true;
  2275. }
  2276. // 반품가능여부
  2277. if ($("#goodsDetailForm input[name=returnableYnOrg]").val() != $("input[name=returnableYn]:checked").val()){
  2278. return true;
  2279. }
  2280. // 출고처
  2281. if ($("#goodsDetailForm input[name=delvLocCdOrg]").val() != $("#goodsDetailForm select[name=delvLocCd]").val()){
  2282. return true;
  2283. }
  2284. // 배송비정책
  2285. if ($("#goodsDetailForm input[name=delvFeeCdOrg]").val() != $("#goodsDetailForm select[name=delvFeeCd]").val()){
  2286. return true;
  2287. }
  2288. //선물주문여부
  2289. if ($("#goodsDetailForm input[name=giftPackYnOrg]").val() != $("input[name=giftPackYn]:checked").val()){
  2290. return true;
  2291. }
  2292. // 교환가능여부
  2293. if ($("#goodsDetailForm input[name=changeableYnOrg]").val() != $("input[name=changeableYn]:checked").val()){
  2294. return true;
  2295. }
  2296. // 신규가입구매가능여부
  2297. if ($("#goodsDetailForm input[name=newCustOrdYnOrg]").val() != $("input[name=newCustOrdYn]:checked").val()){
  2298. return true;
  2299. }
  2300. // 신규가입기간 시작일
  2301. if ($("#goodsDetailForm input[name=newCustOrdStdt]").val() != $("#goodsDetailForm input[name=newCustOrdStdtOrg]").val()){
  2302. return true;
  2303. }
  2304. // 신규가입기간 종료일
  2305. if ($("#goodsDetailForm input[name=newCustOrdEddt]").val() != $("#goodsDetailForm input[name=newCustOrdEddtOrg]").val()){
  2306. return true;
  2307. }
  2308. // 성인용품여부
  2309. if ($("#goodsDetailForm input[name=adultYnOrg]").val() != $("input[name=adultYn]:checked").val()){
  2310. return true;
  2311. }
  2312. // 해외구매대행여부
  2313. if ($("#goodsDetailForm input[name=foreignBuyYnOrg]").val() != $("input[name=foreignBuyYn]:checked").val()){
  2314. return true;
  2315. }
  2316. // 병행수입여부
  2317. if ($("#goodsDetailForm input[name=parallelImportYnOrg]").val() != $("input[name=parallelImportYn]:checked").val()){
  2318. return true;
  2319. }
  2320. // 주문제작여부
  2321. if ($("#goodsDetailForm input[name=orderMadeYnOrg]").val() != $("input[name=orderMadeYn]:checked").val()){
  2322. return true;
  2323. }
  2324. // 판매기간 시작일
  2325. if ($("#goodsDetailForm input[name=sellStdt]").val().toDate("YYYYMMDDHHmmss").format("YYYYMMDDHH") !=
  2326. ($("#goodsDetailForm input[name=sellStYMD]").val().replaceAll('-', '')+ $("#goodsDetailForm select[name=sellStHH]").val())){
  2327. return true;
  2328. }
  2329. // 판매기간 종료일
  2330. if ($("#goodsDetailForm input[name=sellEddt]").val().toDate("YYYYMMDDHHmmss").format("YYYYMMDDHH") !=
  2331. ($("#goodsDetailForm input[name=sellEdYMD]").val().replaceAll('-', '')+ $("#goodsDetailForm select[name=sellEdHH]").val())){
  2332. return true;
  2333. }
  2334. return false;
  2335. }
  2336. // 상품 고시 선택 버튼 클릭 시
  2337. $('#btnNotinfo').click(function(e) {
  2338. if(gagajf.isNull($("#goodsDetailForm select[name=selNiClsfCd]").val())) {
  2339. mcxDialog.alertC("상품정보제공 고시를 선택해주세요.", {
  2340. sureBtnText: "확인",
  2341. sureBtnClick: function() {
  2342. $("#goodsDetailForm select[name=selNiClsfCd]").focus();
  2343. }
  2344. });
  2345. return false;
  2346. }
  2347. var params = new Object();
  2348. params.supplyCompCd = $("#goodsDetailForm input[name=supplyCompCd]").val();
  2349. params.niClsfCd = $("#goodsDetailForm select[name=selNiClsfCd]").val();
  2350. params.goodsCd = $("#goodsDetailForm input[name=goodsCd]").val();
  2351. cfnAjaxSubmit("/goods/noti/goodsInfo/list", "json", fnGoodsDetailNotiInfoSearchCallback, params);
  2352. });
  2353. // 품목변경
  2354. $("#btnGoodsItemkindChange").on("click", function(){
  2355. if($("#goodsDetailForm select[name=itemkindCd]").val() == $("#goodsDetailForm input[name=orgItemkindCd]").val()){
  2356. mcxDialog.alert("품목코드가 변경되지 않았습니다.");
  2357. return false;
  2358. }
  2359. mcxDialog.confirm('품목변경 하시겠습니까?', {
  2360. cancelBtnText: "취소",
  2361. sureBtnText: "확인",
  2362. sureBtnClick: function(){
  2363. var data = [{ goodsCd : $('#goodsDetailForm input[name=goodsCd]').val()
  2364. , itemkindCd : $("#goodsDetailForm select[name=itemkindCd]").val()
  2365. , supplyCompCd : $("#goodsDetailForm input[name=supplyCompCd]").val()
  2366. }];
  2367. var jsonData = JSON.stringify(data);
  2368. gagajf.ajaxJsonSubmit('/goods/itemKind/change/save', jsonData, fnGoodsDeailSearch);
  2369. }
  2370. });
  2371. });
  2372. //신규가입구매가능여부 변경시
  2373. $('#goodsDetailForm input[name=newCustOrdYn]').on('change', function() {
  2374. var newCustOrdYn = $("#goodsDetailForm input[name=newCustOrdYn]:checked").val();
  2375. if ("N" == newCustOrdYn){
  2376. $("#goodsDetailForm input[name=newCustOrdStdt]").val('');
  2377. $("#goodsDetailForm input[name=newCustOrdEddt]").val('');
  2378. }
  2379. });
  2380. // 안전인증
  2381. $("#btnGoodsSafetyCertNum").on("click", function(){
  2382. if (gagajf.isNull($("#goodsDetailForm input[name=selCertTargetGb]:checked").val())){
  2383. mcxDialog.alert("안전인증대상를 선택해 주세요.");
  2384. return false;
  2385. }
  2386. if (!fnGoodsSafetyCertNumCheck()) return false;
  2387. mcxDialog.confirm('안전인증정보(API)를 변경 하시겠습니까?', {
  2388. cancelBtnText: "취소",
  2389. sureBtnText: "확인",
  2390. sureBtnClick: function(){
  2391. var data = { goodsCd : $('#goodsDetailForm input[name=goodsCd]').val()
  2392. , certTargetGb : $("#goodsDetailForm input[name=selCertTargetGb]:checked").val()
  2393. , certFormGb : $("#goodsDetailForm select[name=certFormGb]").val()
  2394. , certType : $("#goodsDetailForm select[name=certType]").val()
  2395. , certNum : $("#goodsDetailForm input[name=certNum]").val()
  2396. };
  2397. var jsonData = JSON.stringify(data);
  2398. gagajf.ajaxJsonSubmit('/goods/detail/certNum/save', jsonData, fnGoodsDetailSafeNoSearch);
  2399. }
  2400. });
  2401. });
  2402. var fnGoodsSafetyCertNumCheck = function(){
  2403. if (gagajf.isNull($("#goodsDetailForm input[name=selCertTargetGb]:checked").val())){
  2404. return true;
  2405. }
  2406. $("#goodsDetailForm input[name=certTargetGb]").val($("#goodsDetailForm input[name=selCertTargetGb]:checked").val());
  2407. if ((!gagajf.isNull($("#goodsDetailForm input[name=selCertTargetGb]:checked").val()) && "G083_1" != $("#goodsDetailForm input[name=selCertTargetGb]:checked").val())){
  2408. return true;
  2409. }
  2410. if(gagajf.isNull($("#goodsDetailForm select[name=certFormGb]").val())){
  2411. mcxDialog.alertC("안전인증형태를 선택해 주세요.", {
  2412. sureBtnText: "확인",
  2413. sureBtnClick: function() {
  2414. $("#goodsDetailForm select[name=certFormGb]").focus();
  2415. }
  2416. });
  2417. return false;
  2418. }
  2419. if(gagajf.isNull($("#goodsDetailForm select[name=certType]").val())){
  2420. mcxDialog.alertC("안전인증타입를 선택해 주세요.", {
  2421. sureBtnText: "확인",
  2422. sureBtnClick: function() {
  2423. $("#goodsDetailForm select[name=certType]").focus();
  2424. }
  2425. });
  2426. return false;
  2427. }
  2428. //인증타입이 공급자적합성일 경우 인증번호 미입력
  2429. if( "G081_1" == $("#goodsDetailForm select[name=certType]").val() || "G081_2" == $("#goodsDetailForm select[name=certType]").val()){
  2430. if(gagajf.isNull($("#goodsDetailForm input[name=certNum]").val())){
  2431. mcxDialog.alertC("안전인증번호를 입력해 주세요.", {
  2432. sureBtnText: "확인",
  2433. sureBtnClick: function() {
  2434. $("#goodsDetailForm input[name=certNum]").focus();
  2435. }
  2436. });
  2437. return false;
  2438. }
  2439. }
  2440. $("#goodsDetailForm input[name=certTargetGb]").val($("#goodsDetailForm input[name=selCertTargetGb]:checked").val());
  2441. return true;
  2442. }
  2443. //엑셀 상품 조회
  2444. $('#btnGoodsDealSearchExcel').on('click', function() {
  2445. cfnExcelUploadPopup('goodsDetailExcelUpload', 'goodsDetailExcelUpload');
  2446. });
  2447. var goodsDetailExcelUpload = function(result){
  2448. var data = {procJob : result.procJob
  2449. ,excelFileNm : result.excelFileNm
  2450. };
  2451. var jsonData = JSON.stringify(data);
  2452. gagajf.ajaxJsonSubmit('/goods/search/excelupload/save', jsonData, goodsDetailExcelUploadCallBack);
  2453. }
  2454. var goodsDetailExcelUploadCallBack = function(result){
  2455. gagajf.ajaxJsonSubmit('/goods/excel/upload/goods/list', '', fnGoodsDetailSearchExcel);
  2456. }
  2457. var fnGoodsDetailSearchExcel = function(result){
  2458. fnGoodsDetailGoodsDeal(result.goodsExcelList);
  2459. }
  2460. $("img").on("error", function () {
  2461. $(this).attr("src", _uximgUrl+"/image/no.png");
  2462. });
  2463. $(document).ready(function() {
  2464. cfnCreateCheckbox("/renderer/avail/commonCode/list/G110", $('#goodsCustGradeList'), "goodsOrderGrade");
  2465. gagaAgGrid.createGrid('gridGoodsHstoryList', gridGoodsHstoryOptions);
  2466. gagaAgGrid.createGrid('gridGoodsComposeList', gridGoodsComposeOptions);
  2467. fnGoodsDeailSearch();
  2468. // Create a summernote
  2469. var snOptions1 = gagaSn.getToolbarOptions('media');
  2470. var snOptions2 = gagaSn.getToolbarOptions('media');
  2471. var snOptions3 = gagaSn.getToolbarOptions('media');
  2472. var snOptions4 = gagaSn.getToolbarOptions('media');
  2473. var snOptions5 = gagaSn.getToolbarOptions('media');
  2474. var snOptions6 = gagaSn.getToolbarOptions('media');
  2475. var snOptions7 = gagaSn.getToolbarOptions('media');
  2476. gagaSn.createSummernote(snOptions1, '#goodsContentsDesc');
  2477. gagaSn.createSummernote(snOptions2, '#goodsCharacterDesc');
  2478. gagaSn.createSummernote(snOptions3, '#goodsDesc');
  2479. gagaSn.createSummernote(snOptions4, '#goodsPcTopDesc');
  2480. gagaSn.createSummernote(snOptions5, '#goodsMobileTopDesc');
  2481. gagaSn.createSummernote(snOptions6, '#goodsPcDownDesc');
  2482. gagaSn.createSummernote(snOptions7, '#goodsMobileDownDesc');
  2483. });
  2484. /*]]>*/
  2485. </script>
  2486. </html>