GoodsListForm.html 45 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173
  1. <!DOCTYPE html>
  2. <html lang="ko"
  3. xmlns:th="http://www.thymeleaf.org">
  4. <!--
  5. *******************************************************************************
  6. * @source : GoodsListForm.html
  7. * @desc : 상품목록 Page
  8. *============================================================================
  9. * STYLE24
  10. * Copyright(C) 2020 TSIT, All rights reserved.
  11. *============================================================================
  12. * VER DATE AUTHOR DESCRIPTION
  13. * === =========== ========== =============================================
  14. * 1.0 2020.10.19 eskim 최초 작성
  15. *******************************************************************************
  16. -->
  17. <div id="main">
  18. <!-- 메인타이틀 영역 -->
  19. <div class="main-title">
  20. </div>
  21. <!-- //메인타이틀 영역 -->
  22. <!-- 메뉴 설명 -->
  23. <div class="infoBox menu-desc">
  24. </div>
  25. <form id="searchForm" name="searchForm" action="#" th:action="@{'/goods/list'}" >
  26. <input type="hidden" id="searchGb" name="searchGb" />
  27. <input type="hidden" id="imageViewYn" name="imageViewYn" />
  28. <input type="hidden" id="goodsPriceYn" name="goodsPriceYn" value="Y"/> <!-- 즉시할인판매가 조회 -->
  29. <!-- 패널 영역1 -->
  30. <div class="panelStyle" >
  31. <!-- 검색조건 영역 -->
  32. <!-- TITLE -->
  33. <div class="panelTitle">
  34. <h3><i class="fa fa-info-circle"></i>아래 검색조건 중 <font color="red">업체, 브랜드, 키워드, 발생일</font>중 하나를 꼭 입력해 주세요.</h3>
  35. <span class="panelControl">
  36. <i class="fa fa-chevron-up"></i>
  37. </span>
  38. </div>
  39. <!-- //TITLE -->
  40. <div class="panelContent">
  41. <table class="frmStyle">
  42. <colgroup>
  43. <col style="width: 7%;"/>
  44. <col/>
  45. <col style="width: 7%;"/>
  46. <col style="width: 16%;"/>
  47. <col style="width: 7%;"/>
  48. <col style="width: 18%;"/>
  49. <col style="width: 7%;"/>
  50. <col style="width: 16%;"/>
  51. </colgroup>
  52. <tr>
  53. <th>업체<em class="required" title="필수"></em></th>
  54. <td>
  55. <input type="text" class="w100" name="supplyCompSearchTxt" id="supplyCompSearchTxt" maxlength="20" />
  56. <button type="button" class="btn icn" id="btnSearchSupplyComp"><i class="fa fa-search"></i></button>
  57. <span id="supplyCompText"></span>
  58. <input type="hidden" name="supplyCompList"/>
  59. <!-- <label class="rdoBtn"><input type="radio" name="selfYn" id="selfYnY" value="Y" checked/>자사</label>
  60. <label class="rdoBtn"><input type="radio" name="selfYn" id="selfYnN" value="N"/>입점</label>
  61. <select name="supplyCompCd" id="supplyCompCd">
  62. <option value="" th:if="${sessionInfo.roleCd} != 'G001_B000'">[전체]</option>
  63. <option th:if="${supplyCompList}" th:each="oneData, status : ${supplyCompList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  64. </select>
  65. <span id="multiBrand"></span> -->
  66. </td>
  67. <th>브랜드<em class="required" title="필수"></em></th>
  68. <td>
  69. <input type="text" class="w100" name="searchTxt" id="searchTxt" maxlength="20" />
  70. <button type="button" class="btn icn" id="btnSearchBrand"><i class="fa fa-search"></i></button>
  71. <!-- <input type="text" class="w100" name="brandCd" readonly="readonly"/> -->
  72. <span id="brandText"></span>
  73. <input type="hidden" name="brandList"/>
  74. </td>
  75. <th>상품타입</th>
  76. <td>
  77. <select name="goodsType" id="goodsType">
  78. <option value="">[전체]</option>
  79. <option th:if="${goodsTypeList}" th:each="oneData, status : ${goodsTypeList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  80. </select>
  81. </td>
  82. <th rowspan="4">키워드<em class="required" title="필수"></em></th>
  83. <td rowspan="4">
  84. <select name="search" id="search">
  85. <option value="searchGoodsCd">상품코드</option>
  86. <option value="searchGoodsNm">상품명</option>
  87. <option value="searchGoodsNum">품번</option>
  88. <option value="searchSupplyGoodsCd">업체상품코드</option>
  89. </select>
  90. <textarea class="textareaR3 w70p" name="condition" id="condition"></textarea>
  91. </td>
  92. </tr>
  93. <tr>
  94. <th>품목</th>
  95. <td>
  96. <div class="multiCheckBox" style="width:300px">
  97. <button type="button" class="sltBtn">[전체]</button>
  98. <ul style="overflow:auto; height:170px;">
  99. <li><label class="chkBox"><input type="checkbox" name="전체선택" id="multiItemkindCd" onclick="uifnAllCheck('multiItemkindCd')">전체선택</label></li>
  100. <li th:if="${itemkindList}" th:each="oneData, status : ${itemkindList}"><label class="chkBox"><input type="checkbox" name="multiItemkindCd" th:id="${'itemkindCd' + oneData.cd}" th:value="${oneData.cd}" ><th:block th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></th:block></label></li>
  101. </ul>
  102. </div>
  103. </td>
  104. <th>상품상태</th>
  105. <td>
  106. <div class="multiCheckBox" style="width:200px">
  107. <button type="button" class="sltBtn">[전체]</button>
  108. <ul style="overflow:auto; height:170px">
  109. <li><label class="chkBox"><input type="checkbox" name="전체선택" id="multiGoodsStat" onclick="uifnAllCheck('multiGoodsStat')">전체선택</label></li>
  110. <li th:if="${goodsStatList}" th:each="oneData, status : ${goodsStatList}"><label class="chkBox"><input type="checkbox" name="multiGoodsStat" th:id="${'goodsStat' + oneData.cd}" th:value="${oneData.cd}" ><th:block th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></th:block></label></li>
  111. </ul>
  112. </div>
  113. </td>
  114. <th>정상/이월 구분</th>
  115. <td>
  116. <select name="formalGb" id="formalGb">
  117. <option value="">[전체]</option>
  118. <option th:if="${formalGbList}" th:each="oneData, status : ${formalGbList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  119. </select>
  120. </td>
  121. </tr>
  122. <tr>
  123. <th>년도/시즌</th>
  124. <td>
  125. <!-- <select name="styleYear" id="styleYear">
  126. <option value="">[전체]</option>
  127. <option th:if="${styleYearList}" th:each="oneData, status : ${styleYearList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  128. </select>
  129. <select name="seasonCd" id="seasonCd">
  130. <option value="">[전체]</option>
  131. <option th:if="${seasonList}" th:each="oneData, status : ${seasonList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  132. </select> -->
  133. <div class="multiCheckBox" style="width:140px;">
  134. <button type="button" class="sltBtn">[전체]</button>
  135. <ul style="overflow:auto; height:140px">
  136. <li><label class="chkBox"><input type="checkbox" name="전체선택" id="multiStyleYear" onclick="uifnAllCheck('multiStyleYear')">전체선택</label></li>
  137. <li th:if="${styleYearList}" th:each="oneData, status : ${styleYearList}"><label class="chkBox"><input type="checkbox" name="multiStyleYear" th:id="${'styleYear' + oneData.cd}" th:value="${oneData.cd}" ><th:block th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></th:block></label></li>
  138. </ul>
  139. </div>
  140. <div class="multiCheckBox" style="width:170px;">
  141. <button type="button" class="sltBtn">[전체]</button>
  142. <ul style="overflow:auto; height:170px">
  143. <li><label class="chkBox"><input type="checkbox" name="전체선택" id="multiSeasonCd" onclick="uifnAllCheck('multiSeasonCd')">전체선택</label></li>
  144. <li th:if="${seasonList}" th:each="oneData, status : ${seasonList}"><label class="chkBox"><input type="checkbox" name="multiSeasonCd" th:id="${'seasonCd' + oneData.cd}" th:value="${oneData.cd}" ><th:block th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></th:block></label></li>
  145. </ul>
  146. </div>
  147. </td>
  148. <th>연령대</th>
  149. <td>
  150. <select name="ageGrpCd" id="ageGrpCd">
  151. <option value="">[전체]</option>
  152. <option th:if="${ageGrpCdList}" th:each="oneData, status : ${ageGrpCdList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  153. </select>
  154. </td>
  155. <th>성별</th>
  156. <td>
  157. <select name="sexGb" id="sexGb">
  158. <option value="">[전체]</option>
  159. <option th:if="${sexGbList}" th:each="oneData, status : ${sexGbList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  160. </select>
  161. </td>
  162. </tr>
  163. <tr>
  164. <th>재고연동여부</th>
  165. <td>
  166. <select name="erpStockLinkYn" id="erpStockLinkYn">
  167. <option value="">[전체]</option>
  168. <option th:if="${useYnList}" th:each="oneData, status : ${useYnList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  169. </select>
  170. </td>
  171. <th>자사몰노출여부</th>
  172. <td>
  173. <select name="selfMallYn" id="selfMallYn">
  174. <option value="">[전체]</option>
  175. <option th:if="${useYnList}" th:each="oneData, status : ${useYnList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  176. </select>
  177. </td>
  178. <th>품절여부</th>
  179. <td>
  180. <select name="soldOutYn" id="soldOutYn">
  181. <option value="">[전체]</option>
  182. <option th:if="${useYnList}" th:each="oneData, status : ${useYnList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  183. </select>
  184. </td>
  185. </tr>
  186. <tr>
  187. <th>반품가능여부</th>
  188. <td>
  189. <select name="returnableYn" id="returnableYn">
  190. <option value="">[전체]</option>
  191. <option th:if="${useYnList}" th:each="oneData, status : ${useYnList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  192. </select>
  193. <!-- <label class="chkBox"><input type="checkbox" name="returnableYn" value="Y"/>반품가능</label>
  194. <label class="chkBox"><input type="checkbox" name="changeableYn" value="Y"/>교환가능</label>
  195. <label class="chkBox"><input type="checkbox" name="returnFeeFreeYn" value="Y"/>무료반품</label>
  196. <label class="chkBox"><input type="checkbox" name="changeFeeFreeYn" value="Y"/>무료교환</label> -->
  197. </td>
  198. <th>담당MD</th>
  199. <td>
  200. <select name="mdId" id="mdId">
  201. <option value="">[전체]</option>
  202. <option th:if="${brandMdList}" th:each="oneData, status : ${brandMdList}" th:value="${oneData.cd}" th:text="${oneData.cdNm}"></option>
  203. </select>
  204. </td>
  205. <th>판매가</th>
  206. <td>
  207. <input type="text" class="w90 aR" name="currPriceSt" id="currPriceSt" maxlength="10" data-valid-type="numeric"/>원 ~ <input type="text" class="w90 aR" name="currPriceEd" id="currPriceEd" maxlength="10" data-valid-type="numeric"/>원
  208. </td>
  209. <th>할인율</th>
  210. <td>
  211. <input type="text" class="w70" name="dcRateSt" id="dcRateSt" maxlength="3" data-valid-type="numeric"/> % ~ <input type="text" class="w70" name="dcRateEd" id="dcRateEd" maxlength="3" data-valid-type="numeric"/> %
  212. </td>
  213. </tr>
  214. <tr>
  215. <th>발생일<em class="required" title="필수"></em></th>
  216. <td colspan="7" id="sellTerms"></td>
  217. </tr>
  218. </table>
  219. <ul class="panelBar">
  220. <li class="center">
  221. <button type="button" class="btn btn-gray btn-lg" id="btnInit" >초기화</button>
  222. <button type="button" class="btn btn-info btn-lg" id="btnSearch" >조회</button>
  223. </li>
  224. </ul>
  225. </div>
  226. <!-- //검색조건 영역 -->
  227. </div>
  228. <!-- 패널 영역1 -->
  229. <div class="panelStyle">
  230. <!-- 검색결과 영역 -->
  231. <!-- 상단버튼 영역 -->
  232. <ul class="panelBar">
  233. <li>
  234. <button type="button" class="btn btn-default btn-lg" onclick="fnGoodsExcelDownLoad('');">엑셀다운로드</button>
  235. <button type="button" class="btn btn-default btn-lg" onclick="fnGoodsExcelDownLoad('Y');">엑셀다운로드(이미지포함)</button>
  236. <button type="button" class="btn btn-default btn-lg" onclick="cfnDownloadSampleFile('SF013');">상품엑셀조회 양식 다운로드</button>
  237. <button type="button" class="btn btn-base btn-lg" id="btnGoodsExcelUpLoad">엑셀조회</button>
  238. </li>
  239. <li class="right">
  240. <button type="button" class="btn btn-primary btn-lg" id="btnGoodsSetMake">세트상품구성</button>
  241. <button type="button" class="btn btn-primary btn-lg" id="btnGoodsSetDeal">딜상품구성</button>
  242. 검색결과 : <strong><span id="gridRowTotalCount">0</span> 건</strong>&nbsp;
  243. 쪽번호 <span id="pgNo">0</span>/ <strong id="endPgNo">0</strong>&nbsp;&nbsp;
  244. <select id="pageSize" name="pageSize">
  245. <option value="50" selected="selected">50개씩 보기</option>
  246. <option value="100">100개씩 보기</option>
  247. <option value="500">500개씩 보기</option>
  248. <option value="1000">1000개씩 보기</option>
  249. </select>
  250. <input type="hidden" name="pageNo" id="pageNo" value ="1"/>
  251. </li>
  252. </ul>
  253. <!-- //상단버튼 영역 -->
  254. <div id="gridList" style="width: 100%; height: 700px;" class="ag-theme-balham lh60"></div>
  255. <ul class="panelBar">
  256. <li class="center">
  257. <div class="tablePaging" id="goodsListPagination"></div>
  258. </li>
  259. </ul>
  260. <ul class="panelBar">
  261. <li class="right">
  262. <th:block th:if="${sessionInfo.roleCd == 'G001_0000' OR sessionInfo.roleCd == 'G001_A000' OR sessionInfo.roleCd == 'G001_A101' OR sessionInfo.roleCd == 'G001_A100' OR sessionInfo.roleCd == 'G001_A001'}">
  263. <button type="button" class="btn btn-info btn-sm" onclick="fnGoodsStatArea();" >상태일괄적용</button>
  264. <button type="button" class="btn btn-info btn-sm" onclick="fnGoodsStaSelfNotArea();" >입점상태일괄적용</button>
  265. </th:block>
  266. </li>
  267. </ul>
  268. <label class="off">
  269. <a href="javascript:void(0);" id="GoodsExcelList" style="display: none;">상품목록 엑셀다운로드</a>
  270. </label>
  271. <ul class="boxContent off" id="goodsStatArea">
  272. <li class="pad20">
  273. <table class="frmStyle">
  274. <colgroup>
  275. <col style="width: 7%;"/>
  276. <col style="width: 18%;"/>
  277. <col style="width: 7%;"/>
  278. <col style="width: 18%;"/>
  279. <col style="width: 7%;"/>
  280. <col style="width: 18%;"/>
  281. <col style="width: 7%;"/>
  282. <col/>
  283. </colgroup>
  284. <tr>
  285. <th>상품상태</th>
  286. <td>
  287. <select name="goodsStatC" id="goodsStatC">
  288. <option value="">[선택]</option>
  289. <option th:if="${goodsStatList}" th:each="oneData, status : ${goodsStatList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  290. </select>
  291. <button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('goodsStat')">적용</button>
  292. </td>
  293. <th>재고연동여부</th>
  294. <td >
  295. <select id="erpStockLinkYnC" name="erpStockLinkYnC">
  296. <option value="">[선택]</option>
  297. <option value="Y">연동</option>
  298. <option value="N">비연동</option>
  299. </select>
  300. <button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('erpStockLinkYn')" >적용</button>
  301. </td>
  302. <th>정상/이월 구분</th>
  303. <td>
  304. <select name="formalGbC" id="formalGbC">
  305. <option value="">[선택]</option>
  306. <option th:if="${formalGbList}" th:each="oneData, status : ${formalGbList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  307. </select>
  308. <button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('formalGb')" >적용</button>
  309. </td>
  310. <th>반품가능여부</th>
  311. <td>
  312. <select id="returnableYnC" name="returnableYnC">
  313. <option value="">[선택]</option>
  314. <option value="Y">가능</option>
  315. <option value="N">불가</option>
  316. </select>
  317. <button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('returnableYn')" >적용</button>
  318. </td>
  319. </tr>
  320. <tr>
  321. <th>상품타이틀</th>
  322. <td colspan="3">
  323. <input id="goodsTnmC" name="goodsTnmC" type="text" class="w200" maxlength="70"/>
  324. <label class="chkBox"><input type="checkbox" name="blankFlag" value="Y"/>BLANK 적용<span></span></label>
  325. <button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('goodsTnm')" >적용</button>
  326. </td>
  327. <th>교환가능여부</th>
  328. <td>
  329. <select id="changeableYnC" name="changeableYnC">
  330. <option value="">[선택]</option>
  331. <option value="Y">가능</option>
  332. <option value="N">불가</option>
  333. </select>
  334. <button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('changeableYn')" >적용</button>
  335. </td>
  336. <th>ID당1일최대구매수량</th>
  337. <td>
  338. <input id="dayMaxOrdQtyC" name="dayMaxOrdQtyC" type="text" class="w100" data-valid-type="numeric" />
  339. <button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('dayMaxOrdQty')" >적용</button>
  340. </td>
  341. </tr>
  342. <tr>
  343. <th>최소주문수량</th>
  344. <td>
  345. <input id="minOrdQtyC" name="minOrdQtyC" type="text" class="w100" data-valid-type="numeric" />
  346. <button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('minOrdQty')" >적용</button>
  347. </td>
  348. <th>최대주문수량</th>
  349. <td>
  350. <input id="maxOrdQtyC" name="maxOrdQtyC" type="text" class="w100" data-valid-type="numeric" />
  351. <button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('maxOrdQty')" >적용</button>
  352. </td>
  353. <th>PC포인트</th>
  354. <td>
  355. <input type="text" class="w100 aR" id="pntPrateC" name="pntPrateC" data-valid-type="numeric" maxlength="3"/> %
  356. <button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('pntPrate')" >적용</button>
  357. </td>
  358. <th>모바일포인트</th>
  359. <td>
  360. <input type="text" class="w100 aR" id="pntMrateC" name="pntMrateC" data-valid-type="numeric" maxlength="3"/> %
  361. <button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('pntMrate')" >적용</button>
  362. </td>
  363. </tr>
  364. <tr>
  365. <th>선물 주문가능</th>
  366. <td>
  367. <select id="giftPackYnC" name="giftPackYnC">
  368. <option value="">[선택]</option>
  369. <option value="Y">가능</option>
  370. <option value="N">불가</option>
  371. </select>
  372. <button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('giftPackYn')" >적용</button>
  373. </td>
  374. <th>배송정책</th>
  375. <td colspan="3">
  376. <label class="rdoBtn"><input type="radio" name="statSelfYn" id="statSelfYnY" value="Y" checked/>자사</label>
  377. <label class="rdoBtn"><input type="radio" name="statSelfYn" id="statSelfYnN" value="N"/>입점</label>
  378. <select name="statSupplyCompCd" id="statSupplyCompCd">
  379. <option value="" th:if="${sessionInfo.roleCd} != 'G001_B000'">[선택]</option>
  380. <option th:if="${supplyCompList}" th:each="oneData, status : ${supplyCompList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  381. </select>
  382. <select name="delvFeeCdC" id="delvFeeCdC" >
  383. <option value="">[선택]</option>
  384. </select>
  385. <button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('delvFeeCd')" >적용</button>
  386. </td>
  387. <th>신규고객 주문가능</th>
  388. <td>
  389. <select id="newCustOrdYnC" name="newCustOrdYnC">
  390. <option value="">[선택]</option>
  391. <option value="Y">가능</option>
  392. <option value="N">불가</option>
  393. </select>
  394. <button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('newCustOrdYn')" >적용</button>
  395. </td>
  396. </tr>
  397. </table>
  398. </li>
  399. </ul>
  400. <ul class="boxContent off" id="goodsStatSelfNoArea">
  401. <li class="pad20">
  402. <table class="frmStyle">
  403. <colgroup>
  404. <col width="7%"/>
  405. <col/>
  406. </colgroup>
  407. <tr>
  408. <th>상품상태</th>
  409. <td>
  410. <select name="goodsStatNC" id="goodsStatNC">
  411. <option value="">[선택]</option>
  412. <option th:if="${goodsStatList}" th:each="oneData, status : ${goodsStatList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  413. </select>
  414. <button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsStateSelfNo('goodsStat')">적용</button>
  415. </td>
  416. </tr>
  417. </table>
  418. </li>
  419. </ul>
  420. <!-- 검색결과 영역 -->
  421. </div>
  422. </form>
  423. <!-- //패널 영역2 -->
  424. <script type="text/javascript" src="/ux/plugins/gaga/gaga.paging.js?v=20210114"></script>
  425. <script th:inline="javascript">
  426. /*<![CDATA[*/
  427. var sessRoleCd = [[${sessionInfo.roleCd}]];
  428. var goodsStatList = gagajf.convertToArray([[${goodsStatList}]]);
  429. var formalGbList = gagajf.convertToArray([[${formalGbList}]]);
  430. var seasonList = gagajf.convertToArray([[${seasonList}]]);
  431. var columnDefs = [];
  432. columnDefs = [
  433. {width: 40, minWidth: 40, cellClass: 'text-right', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
  434. {headerName: 'No', width: 60, cellClass: 'text-center',
  435. valueGetter: function(params) { return cfnGridNumner('searchForm',params.node.rowIndex, 'A');}
  436. },
  437. {headerName: "이미지", field: "sysImgNm", width: 100, height: 60, cellClass: 'text-center'
  438. ,cellRenderer: function(params) {
  439. return '<img width="60" src="'+ _goodsUrl+ "/" + params.value + '" alt="" onclick="cfnOpenImagePreViewPopup(\'goodsImgView\', \''+ _goodsUrl+ "/" + params.value +'\')" onerror="this.src=\'/image/no.gif\';"/>';
  440. }
  441. },
  442. {headerName: "브랜드", field: "brandCd", width: 80, cellClass: 'text-center'},
  443. {headerName: "브랜드명", field: "brandEnm", width: 130, cellClass: 'text-center'},
  444. {headerName: "상품코드", field: "goodsCd", width: 140, cellClass: 'text-center'},
  445. {headerName: "상품명", field: "goodsNm", width: 200, cellClass: 'text-left'
  446. ,cellRenderer: function(params) {
  447. return '<a href="javascript:void(0);">' + params.value + '</a>';
  448. }
  449. },
  450. {headerName: "품목", field: "itemkindNm", width: 150, cellClass: 'text-center'},
  451. {headerName: "판매가능재고", field: "stockQtySum", width: 120, cellClass: 'text-right',
  452. valueFormatter: function(params) { return params.value.addComma();},
  453. cellStyle : function(params){
  454. if ("00" == params.data.goodsStat || "10" == params.data.goodsStat || "20" == params.data.goodsStat || "30" == params.data.goodsStat) {
  455. return;
  456. }
  457. var color = "";
  458. if (params.value <= 0){
  459. color = '#ff96689c';
  460. }
  461. return { 'background-color': color};
  462. }
  463. },
  464. {headerName: "상품상태", field: "goodsStat" , width: 100, cellClass: 'text-center',
  465. cellEditorParams: { values: gagaAgGrid.extractValues(goodsStatList) },
  466. valueFormatter: function (params) { return gagaAgGrid.lookupValue(goodsStatList, params.value); },
  467. valueParser: function (params) { return gagaAgGrid.lookupKey(goodsStatList, params.newValue); }
  468. },
  469. {headerName: "년도", field: "styleYear" , width: 80, cellClass: 'text-center'},
  470. {headerName: "시즌", field: "seasonCd" , width: 80, cellClass: 'text-center',
  471. cellEditorParams: { values: gagaAgGrid.extractValues(seasonList) },
  472. valueFormatter: function (params) { return gagaAgGrid.lookupValue(seasonList, params.value); },
  473. valueParser: function (params) { return gagaAgGrid.lookupKey(seasonList, params.newValue); }
  474. },
  475. {headerName: "정상가", field: "listPrice" , width: 100, cellClass: 'text-right'
  476. ,valueFormatter: function(params) {return params.value.addComma();},
  477. cellEditor: 'textCellEditor',
  478. cellEditorParams: { maxlength: 14, validType: 'numeric'}
  479. },
  480. {headerName: "판매가", field: "currPrice" , width: 100, cellClass: 'text-right'
  481. ,valueFormatter: function(params) {return params.value.addComma();},
  482. cellEditor: 'textCellEditor',
  483. cellEditorParams: { maxlength: 14, validType: 'numeric'}
  484. },
  485. /*{headerName: "할인율", field: "dcRate" , width: 90, cellClass: 'text-right'},*/
  486. {headerName: "자사즉시할인가", field: "benefitCurrPrice" , width: 120, cellClass: 'text-right'
  487. ,valueFormatter: function(params) {
  488. if (params.value > 0) {
  489. return params.value.addComma();
  490. }else{
  491. return '';
  492. }
  493. }
  494. },
  495. {headerName: "가격변경일", field: "priceUpdDt", width: 150, cellClass: 'text-center',
  496. cellRenderer: function(params) {
  497. return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss") : '';
  498. }
  499. },
  500. {headerName: "ERP재고연동여부", field: "erpStockLinkYn", width: 120, cellClass: 'text-center'},
  501. {headerName: "이월구분", field: "formalGb", width: 100, cellClass: 'text-center',
  502. cellEditorParams: { values: gagaAgGrid.extractValues(formalGbList) },
  503. valueFormatter: function (params) { return gagaAgGrid.lookupValue(formalGbList, params.value); },
  504. valueParser: function (params) { return gagaAgGrid.lookupKey(formalGbList, params.newValue); }
  505. },
  506. {headerName: "반품가능", field: "returnableYn" , width: 90, cellClass: 'text-center'},
  507. {headerName: "등록일시", field: "regDt", width: 150, cellClass: 'text-center',
  508. cellRenderer: function(params) {
  509. return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss") : '';
  510. }
  511. },
  512. {headerName: "등록자", field: "regNm" , width: 100, cellClass: 'text-center'},
  513. {headerName: "수정일시", field: "updDt", width: 150, cellClass: 'text-center',
  514. cellRenderer: function(params) {
  515. return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss") : '';
  516. }
  517. },
  518. {headerName: "수정자", field: "updNm" , width: 100, cellClass: 'text-center'}
  519. ];
  520. // Get GridOptions
  521. var gridOptions = gagaAgGrid.getGridOptions(columnDefs);
  522. // 중복 선택 가능
  523. gridOptions.rowSelection = 'multiple';
  524. gridOptions.suppressRowClickSelection = true;
  525. gridOptions.rowHeight = 60; //이미지가 있을경우 높이 지정해야함.
  526. // Row Click
  527. gridOptions.onCellClicked = function(event) {
  528. var goodsCd = event.data.goodsCd;
  529. if (event.colDef.field == "goodsNm"){
  530. cfnOpenGoodsDetailPopup('U',goodsCd);
  531. }else if (event.colDef.field == "goodsCd"){
  532. //cfnOpenFrontGoodsPopup(goodsCd, event.data.siteCd);
  533. }
  534. }
  535. gridOptions.getRowStyle = function(params) {
  536. if ("G008_00" == params.data.goodsStat || "G008_10" == params.data.goodsStat || "G008_20" == params.data.goodsStat || "G008_30" == params.data.goodsStat) {
  537. return { background: '#B5EAD7' };
  538. }
  539. }
  540. // 초기화 클릭시
  541. $('#btnInit').on('click', function() {
  542. $('#searchForm')[0].reset();
  543. //$("#searchForm input[type=radio]").removeClass("checked");
  544. $("#searchForm input[type=checkbox]").removeClass("checked");
  545. //$("#searchForm input[type=radio]").parent("label").removeClass("checked");
  546. $("#searchForm input[type=checkbox]").parent("label").removeClass("checked");
  547. $("#searchForm input[type=radio][checked]").parent("label").addClass("checked");
  548. $("#multiBrand").empty();
  549. $('#searchForm input[name=brandList]').val('');
  550. $('#searchForm input[name=supplyCompList]').val('');
  551. $('#searchForm').find('#brandText').html('');
  552. $('#searchForm').find('#supplyCompText').html('');
  553. });
  554. // 조회클릭시
  555. $('#btnSearch').on('click', function() {
  556. $("#searchForm input[name=pageNo]").val('1');
  557. fnGoodsListSearch('BASIC');
  558. });
  559. // 조회
  560. var fnGoodsListSearch = function(gbn) {
  561. if (typeof(gbn) != 'undefined' && gbn == 'EXCEL'){
  562. $("#searchForm input[name=searchGb]").val("EXCEL");
  563. }else{
  564. $("#searchForm input[name=searchGb]").val("BASIC");
  565. }
  566. if(!fnConditionCheck()) return;
  567. gagaPaging.init('searchForm', fnSearchCallBack, 'goodsListPagination', $('#searchForm').find('#pageSize').val());
  568. gagaPaging.load($("#searchForm input[name=pageNo]").val());
  569. }
  570. //검색 조건 확인
  571. var fnConditionCheck = function(){
  572. var formId = '#searchForm';
  573. var form = document.searchForm;
  574. if (event.keyCode === 13) return false;
  575. if($("#searchForm input[name=searchGb]").val() == "EXCEL") return true;
  576. var searchFlag = false;
  577. var cnt = 0;
  578. if( !gagajf.isNull($("#searchForm input[name=supplyCompList]").val())
  579. || !gagajf.isNull($("#searchForm textarea[name=condition]").val())
  580. || (!gagajf.isNull($("#searchForm input[name=stDate]").val()) && !gagajf.isNull($("#searchForm input[name=edDate]").val()))
  581. || !gagajf.isNull($("#searchForm input[name=brandList]").val())
  582. ){
  583. searchFlag = true;
  584. }else{
  585. /* for (i = 0; i < form.elements.length; i++ ) {
  586. var el = form.elements[i];
  587. if ($(el).prop("type") == "text" || ($(el).prop("type") == "select-one" && el.name != "search" && el.name != "pageSize")) {
  588. if (!(el.value == null || el.value == "")) {
  589. cnt++;
  590. }
  591. }
  592. }
  593. if(cnt > 0) searchFlag = true; */
  594. }
  595. if(searchFlag == false){
  596. mcxDialog.alert("검색조건을 입력하세요.");
  597. return false;
  598. }
  599. if(!gagajf.isNull($("#searchForm input[name=currPriceSt]").val()) && !gagajf.isNull($("#searchForm input[name=currPriceEd]").val())){
  600. if (Number($("#searchForm input[name=currPriceSt]").val().removeComma()) > Number($("#searchForm input[name=currPriceEd]").val().removeComma()) ){
  601. mcxDialog.alertC("판매가를 확인해 주세요.", {
  602. sureBtnText: "확인",
  603. sureBtnClick: function() {
  604. $("#searchForm input[name=currPriceEd]").focus();
  605. }
  606. });
  607. return false;
  608. }
  609. }
  610. if(!gagajf.isNull($("#searchForm input[name=dcRateSt]").val()) && !gagajf.isNull($("#searchForm input[name=dcRateEd]").val())){
  611. if (Number($("#searchForm input[name=dcRateSt]").val().removeComma()) > Number($("#searchForm input[name=dcRateEd]").val().removeComma()) ){
  612. mcxDialog.alertC("할인율를 확인해 주세요.", {
  613. sureBtnText: "확인",
  614. sureBtnClick: function() {
  615. $("#searchForm input[name=dcRateEd]").focus();
  616. }
  617. });
  618. return false;
  619. }
  620. }
  621. var fromDate = $('#searchForm input[name=stDate]').val();
  622. var toDate = $('#searchForm input[name=edDate]').val();
  623. if (!gagajf.isNull(fromDate) || !gagajf.isNull(toDate)) {
  624. if (gagajf.isNull(fromDate) || gagajf.isNull(toDate)) {
  625. mcxDialog.alertC("등록일 조회시 시작일자와 종료일자를 입력하세요.", {
  626. sureBtnText: "확인",
  627. sureBtnClick: function() {
  628. $('#searchForm input[name=stDate]').focus();
  629. }
  630. });
  631. return false;
  632. }
  633. if (fromDate > toDate) {
  634. mcxDialog.alertC("등록 시작일자는 종료일자 보다 클 수 없습니다.", {
  635. sureBtnText: "확인",
  636. sureBtnClick: function() {
  637. $('#searchForm input[name=stDate]').focus();
  638. }
  639. });
  640. return false;
  641. }
  642. }
  643. return true;
  644. }
  645. var fnSearchCallBack = function(result){
  646. $('#searchForm').find('#gridRowTotalCount').html(result.pageing.pageable.totalCount.addComma());
  647. $('#searchForm').find('#pageNo').val(result.pageing.pageable.pageNo.addComma());
  648. $('#searchForm').find('#pgNo').html(result.pageing.pageable.pageNo.addComma());
  649. $('#searchForm').find('#endPgNo').html(result.pageing.pageable.totalPage.addComma());
  650. gridOptions.api.setRowData(result.goodsList);
  651. gagaPaging.createPagination(result.pageing.pageable);
  652. }
  653. //페이징
  654. $('#searchForm select[name=pageSize]').on('change', function() {
  655. $("#searchForm input[name=pageNo]").val('1');
  656. fnGoodsListSearch($("#searchForm input[name=searchGb]").val());
  657. });
  658. //업체변경시
  659. $('#searchForm select[name=supplyCompCd]').on('change', function() {
  660. var actionUrl = '/renderer/supplyCompany/brand/list/' + $(this).val();
  661. if(sessRoleCd == "G001_B000"){
  662. actionUrl = '/renderer/brand/AuthBrandlist';
  663. }
  664. //$("#searchForm select[name=brandCd] option:gt(0)").remove();
  665. //cfnCreateCombo(actionUrl, $('#searchForm select[name=brandCd]'), "[전체]", brandCd);
  666. cfnCreateMultiCombo(actionUrl,"multiBrand", "[전체]",null, 'Y');
  667. });
  668. //엑셀다운로드
  669. var fnGoodsExcelDownLoad = function(flag){
  670. var formId = '#searchForm';
  671. if (gridOptions.api.getDisplayedRowCount() <= 0){
  672. mcxDialog.alert("조회된 데이터가 없습니다.<br/>다시 조회 후 다운로드 받으세요.");
  673. return;
  674. }
  675. $("#searchForm input[name=imageViewYn]").val(flag);
  676. var params = $(formId).serialize();
  677. $('#GoodsExcelList').attr({ href : '/goods/info/excel/list?' + params }).get(0).click();
  678. }
  679. //엑셀 상품 조회
  680. $('#btnGoodsExcelUpLoad').on('click', function() {
  681. cfnExcelUploadPopup('goodsExcelUpload', 'goodsExcelUpload');
  682. });
  683. var goodsExcelUpload = function(result){
  684. var data = {procJob : result.procJob
  685. ,excelFileNm : result.excelFileNm
  686. };
  687. var jsonData = JSON.stringify(data);
  688. gagajf.ajaxJsonSubmit('/goods/search/excelupload/save', jsonData, fnGoodsExcelUploadCallBack);
  689. }
  690. var fnGoodsExcelUploadCallBack = function(result){
  691. fnGoodsListSearch("EXCEL");
  692. }
  693. //상품상태 변경시
  694. var fnChangeGoodsState = function(proc){
  695. var objId = '#'+proc+"C";
  696. if (proc == "goodsTnm"){
  697. if(gagajf.isNull($(objId).val()) && !$("#searchForm input:checkbox[name=blankFlag]").is(':checked')){
  698. mcxDialog.alertC('적용하실 항목을 선택해주세요.', {
  699. sureBtnText: "확인",
  700. sureBtnClick: function() {
  701. $(objId).focus();
  702. }
  703. });
  704. return;
  705. }else if(!gagajf.isNull($(objId).val()) && $("#searchForm input:checkbox[name=blankFlag]").is(':checked')){
  706. mcxDialog.alertC('적용하실 항목을 하나만 선택해주세요.', {
  707. sureBtnText: "확인",
  708. sureBtnClick: function() {
  709. $(objId).focus();
  710. }
  711. });
  712. return;
  713. }
  714. }else{
  715. if (gagajf.isNull($(objId).val())){
  716. mcxDialog.alertC('적용하실 항목을 선택(입력)해주세요.', {
  717. sureBtnText: "확인",
  718. sureBtnClick: function() {
  719. $(objId).focus();
  720. }
  721. });
  722. return;
  723. }
  724. }
  725. var selectedData = gridOptions.api.getSelectedRows();
  726. if (selectedData.length == 0) {
  727. mcxDialog.alert('선택된 행이 없습니다.');
  728. return;
  729. }
  730. var goodsStatVal = '';
  731. var erpStockLinkYnVal= '';
  732. var formalGbVal= '';
  733. var returnableYnVal= '';
  734. var changeableYnVal= '';
  735. var goodsTnmVal = '';
  736. var blankFlagVal = '';
  737. var minOrdAmtVal = '';
  738. var minOrdQtyVal = '';
  739. var maxOrdQtyVal = '';
  740. var dayMaxOrdQtyVal = '';
  741. var pntPrateVal = '';
  742. var pntMrateVal = '';
  743. var giftPackYnVal = '';
  744. var delvFeeCdVal = '';
  745. var newCustOrdYnVal = '';
  746. if (proc == "goodsStat") {
  747. goodsStatVal = $(objId).val();
  748. }else if (proc == "erpStockLinkYn") {
  749. erpStockLinkYnVal = $(objId).val();
  750. }else if (proc == "formalGb") {
  751. formalGbVal = $(objId).val();
  752. }else if (proc == "returnableYn") {
  753. returnableYnVal = $(objId).val();
  754. }else if (proc == "changeableYn") {
  755. changeableYnVal = $(objId).val();
  756. }else if (proc == "goodsTnm"){
  757. if($("#searchForm input:checkbox[name=blankFlag]").is(':checked')){
  758. blankFlagVal = "Y";
  759. }else{
  760. goodsTnmVal = $(objId).val();
  761. }
  762. }else if (proc == "minOrdAmt") {
  763. minOrdAmtVal = $(objId).val().removeComma();
  764. }else if (proc == "minOrdQty") {
  765. if($(objId).val()<=0){
  766. mcxDialog.alertC('0보다 큰값을 입력 해주세요.', {
  767. sureBtnText: "확인",
  768. sureBtnClick: function() {
  769. $(objId).focus();
  770. }
  771. });
  772. return;
  773. }
  774. minOrdQtyVal = $(objId).val();
  775. }else if (proc == "maxOrdQty") {
  776. if($(objId).val()<=0){
  777. mcxDialog.alertC('0보다 큰값을 입력 해주세요.', {
  778. sureBtnText: "확인",
  779. sureBtnClick: function() {
  780. $(objId).focus();
  781. }
  782. });
  783. return;
  784. }
  785. maxOrdQtyVal = $(objId).val();
  786. }else if (proc == "dayMaxOrdQty") {
  787. if($(objId).val()<=0){
  788. mcxDialog.alertC('0보다 큰값을 입력 해주세요.', {
  789. sureBtnText: "확인",
  790. sureBtnClick: function() {
  791. $(objId).focus();
  792. }
  793. });
  794. return;
  795. }
  796. dayMaxOrdQtyVal = $(objId).val();
  797. }else if (proc == "pntPrate") {
  798. if($(objId).val()>100){
  799. mcxDialog.alertC('100보다 작거나 같은 값을 입력 해주세요.', {
  800. sureBtnText: "확인",
  801. sureBtnClick: function() {
  802. $(objId).focus();
  803. }
  804. });
  805. return;
  806. }
  807. pntPrateVal = $(objId).val();
  808. }else if (proc == "pntMrate") {
  809. if($(objId).val()>100){
  810. mcxDialog.alertC('100보다 작거나 같은 값을 입력 해주세요.', {
  811. sureBtnText: "확인",
  812. sureBtnClick: function() {
  813. $(objId).focus();
  814. }
  815. });
  816. return;
  817. }
  818. pntMrateVal = $(objId).val();
  819. }else if (proc == "giftPackYn") {
  820. giftPackYnVal = $(objId).val();
  821. }else if (proc == "newCustOrdYn") {
  822. newCustOrdYnVal = $(objId).val();
  823. }else if (proc == "delvFeeCd") {
  824. if (!fnGoodsDelFeeCdCheck(selectedData)){
  825. return;
  826. }
  827. delvFeeCdVal = $(objId).val();
  828. }else{
  829. return;
  830. }
  831. mcxDialog.confirm('적용 하시겠습니까?', {
  832. cancelBtnText: "취소",
  833. sureBtnText: "확인",
  834. sureBtnClick: function(){
  835. var arrGoodsCd = [];
  836. $.each(selectedData, function(idx, item) {
  837. arrGoodsCd.push(item.goodsCd);
  838. });
  839. var data = {arrGoodsCd: arrGoodsCd
  840. ,goodsStat : goodsStatVal
  841. ,erpStockLinkYn : erpStockLinkYnVal
  842. ,formalGb : formalGbVal
  843. ,returnableYn : returnableYnVal
  844. ,changeableYn : changeableYnVal
  845. ,goodsTnm : goodsTnmVal
  846. ,blankFlag : blankFlagVal
  847. ,minOrdAmt : minOrdAmtVal
  848. ,maxOrdQty : maxOrdQtyVal
  849. ,dayMaxOrdQty : dayMaxOrdQtyVal
  850. ,pntPrate : pntPrateVal
  851. ,pntMrate : pntMrateVal
  852. ,giftPackYn : giftPackYnVal
  853. ,delvFeeCd : delvFeeCdVal
  854. ,newCustOrdYn : newCustOrdYnVal
  855. ,procJob : proc
  856. };
  857. var jsonData = JSON.stringify(data);
  858. gagajf.ajaxJsonSubmit('/goods/state/update', jsonData, fnChangeGoodsStateCollback);
  859. }
  860. });
  861. }
  862. // 배송비정책 관련 확인
  863. var fnGoodsDelFeeCdCheck = function(selectedData){
  864. var statSupplyCompCd = $('#searchForm select[name=statSupplyCompCd]').val();
  865. $.each(selectedData, function(idx, item) {
  866. if (item.supplyCompCd != statSupplyCompCd){
  867. mcxDialog.alertC(item.goodsCd +" 상품은 배송지 정책업체와 상이합니다. ",{
  868. sureBtnText: "확인",
  869. sureBtnClick: function() {
  870. gridOptions.api.setFocusedCell(idx, "goodsCd", null);
  871. }
  872. });
  873. return false;
  874. }
  875. });
  876. return true;
  877. }
  878. // 입점 상품상태 변경시
  879. var fnChangeGoodsStateSelfNo = function(proc){
  880. var objId = '#'+proc+"NC";
  881. if (gagajf.isNull($(objId).val())){
  882. mcxDialog.alertC('적용하실 항목을 선택(입력)해주세요.', {
  883. sureBtnText: "확인",
  884. sureBtnClick: function() {
  885. $(objId).focus();
  886. }
  887. });
  888. return;
  889. }
  890. var selectedData = gridOptions.api.getSelectedRows();
  891. if (selectedData.length == 0) {
  892. mcxDialog.alert('선택된 행이 없습니다.');
  893. return;
  894. }
  895. var checkFlag = false;
  896. $.each(selectedData, function(idx, item) {
  897. if (item.selfGoodsYn == 'Y'){
  898. checkFlag = true;
  899. mcxDialog.alert('자사상품은 수정하실 수 없습니다.');
  900. return;
  901. }
  902. });
  903. if (checkFlag){
  904. return false;
  905. }
  906. var goodsStatVal = '';
  907. if (proc == "goodsStat") {
  908. goodsStatVal = $(objId).val();
  909. }else{
  910. return;
  911. }
  912. mcxDialog.confirm('적용 하시겠습니까?', {
  913. cancelBtnText: "취소",
  914. sureBtnText: "확인",
  915. sureBtnClick: function(){
  916. var arrGoodsCd = [];
  917. $.each(selectedData, function(idx, item) {
  918. arrGoodsCd.push(item.goodsCd);
  919. });
  920. var data = {arrGoodsCd: arrGoodsCd
  921. ,goodsStat : goodsStatVal
  922. ,procJob : proc
  923. };
  924. var jsonData = JSON.stringify(data);
  925. gagajf.ajaxJsonSubmit('/goods/state/update', jsonData, fnChangeGoodsStateCollback);
  926. }
  927. });
  928. }
  929. var fnChangeGoodsStateCollback = function(result){
  930. if (result.resultFlag == "FAIL"){
  931. mcxDialog.alert("[ " + result.returnGoods + " ]은<br/>이미지가 등록되지 않아 '승인대기'나 '승인완료' 상태로 변경할 수 없습니다.<br/>상품을 확인하시고, 다시 시도해주세요.");
  932. return false;
  933. }else{
  934. mcxDialog.alert('성공적으로 저장되었습니다.');
  935. }
  936. fnGoodsListSearch($("#searchForm input[name=searchGb]").val());
  937. }
  938. //상태일괄변경 버튼 클릭시
  939. var fnGoodsStatArea = function(){
  940. if ($("#searchForm").find("#goodsStatArea").hasClass('off')) {
  941. $("#searchForm").find("#goodsStatArea").removeClass('off');
  942. $("#searchForm").find("#goodsStatArea").addClass('on');
  943. $("#searchForm").find("#goodsStatSelfNoArea").removeClass('on');
  944. $("#searchForm").find("#goodsStatSelfNoArea").addClass('off');
  945. }else{
  946. $("#searchForm").find("#goodsStatArea").removeClass('on');
  947. $("#searchForm").find("#goodsStatArea").addClass('off');
  948. }
  949. }
  950. // 입점 상태일괄변경 버튼 클릭시
  951. var fnGoodsStaSelfNotArea = function(){
  952. if ($("#searchForm").find("#goodsStatSelfNoArea").hasClass('off')) {
  953. $("#searchForm").find("#goodsStatSelfNoArea").removeClass('off');
  954. $("#searchForm").find("#goodsStatSelfNoArea").addClass('on');
  955. $("#searchForm").find("#goodsStatArea").removeClass('on');
  956. $("#searchForm").find("#goodsStatArea").addClass('off');
  957. }else{
  958. $("#searchForm").find("#goodsStatSelfNoArea").removeClass('on');
  959. $("#searchForm").find("#goodsStatSelfNoArea").addClass('off');
  960. }
  961. }
  962. //세트상품구성 클릭 시
  963. $('#btnGoodsSetMake').click(function(e) {
  964. cfnOpenGoodsSetPopup();
  965. });
  966. //딜상품구성 클릭 시
  967. $('#btnGoodsSetDeal').click(function(e) {
  968. cfnOpenGoodsDealPopup();
  969. });
  970. // 자사/입점 변경여부
  971. $("#searchForm input[name=selfYn]").bind('click change', function () {
  972. var radioValue = $(this).val();
  973. var selfGb = "S"; // 자사 공급 업체
  974. if (radioValue == "N"){
  975. selfGb = "E"; //입점 공급업체
  976. }
  977. var actionUrl = '/renderer/supply/company/list/'+ selfGb;
  978. $('#searchForm').find('#multiBrand').empty();
  979. //$("#searchForm select[name=brandCd] option:gt(0)").remove();
  980. cfnCreateCombo(actionUrl, $('#searchForm select[name=supplyCompCd]'), "[전체]", "");
  981. });
  982. // 상태일괄변경 자사/입점 변경여부
  983. $("#searchForm input[name=statSelfYn]").bind('click change', function () {
  984. var radioValue = $(this).val();
  985. var selfGb = "S"; // 자사 공급 업체
  986. if (radioValue == "N"){
  987. selfGb = "E"; //입점 공급업체
  988. }
  989. var actionUrl = '/renderer/supply/company/list/'+ selfGb;
  990. $("#searchForm select[name=delvFeeCdC] option:gt(0)").remove();
  991. cfnCreateCombo(actionUrl, $('#searchForm select[name=statSupplyCompCd]'), "[전체]", "");
  992. });
  993. // 상태일괄변경 업체변경시
  994. $('#searchForm select[name=statSupplyCompCd]').on('change', function() {
  995. $("#searchForm select[name=delvFeeCdC] option:gt(0)").remove();
  996. cfnCreateCombo('/renderer/delvFee/list/' + $('#searchForm select[name=statSupplyCompCd]').val(), $('#searchForm select[name=delvFeeCdC]'), "[선택]");
  997. });
  998. // 업체 조회 선택시
  999. $('#btnSearchSupplyComp').on('click', function() {
  1000. cfnOpenCompanyListPopup('fnSetSupplyCompInfo', 'M');
  1001. });
  1002. // 업체 조회 팝업에서 호출
  1003. var fnSetSupplyCompInfo = function(result) {
  1004. var arrSupplyComp = [];
  1005. var supplyCompText = "";
  1006. var sIndex = 0;
  1007. $('#searchForm').find('#supplyCompText').html('');
  1008. $('#searchForm input[name=supplyCompSearchTxt]').val('');
  1009. result.forEach(function(supplyComp){
  1010. sIndex++;
  1011. arrSupplyComp.push(supplyComp.supplyCompCd);
  1012. });
  1013. // 조회값이 하나일 경우 화면에 코드 노출 그외는 갯수 처리
  1014. if (sIndex == 1) {
  1015. $('#searchForm input[name=supplyCompSearchTxt]').val(arrSupplyComp[0]);
  1016. }else{
  1017. supplyCompText = sIndex + " 개";
  1018. $('#searchForm').find('#supplyCompText').html(supplyCompText);
  1019. }
  1020. var jsonData = JSON.stringify(arrSupplyComp);
  1021. $("#searchForm input[name=supplyCompList]").val(jsonData);
  1022. }
  1023. // 브랜드 조회 팝업에서 호출
  1024. var fnSetBrandInfo = function(result) {
  1025. var arrbrandCd = [];
  1026. var brandText = "";
  1027. var bIndex = 0;
  1028. $('#searchForm').find('#brandText').html('');
  1029. $('#searchForm input[name=searchTxt]').val('');
  1030. result.forEach(function(brand){
  1031. bIndex++;
  1032. arrbrandCd.push(brand.brandCd);
  1033. });
  1034. // 조회값이 하나일 경우 화면에 코드 노출 그외는 갯수 처리
  1035. if (bIndex == 1) {
  1036. $('#searchForm input[name=searchTxt]').val(arrbrandCd[0]);
  1037. }else{
  1038. brandText = bIndex + " 개";
  1039. $('#searchForm').find('#brandText').html(brandText);
  1040. }
  1041. var jsonData = JSON.stringify(arrbrandCd);
  1042. $("#searchForm input[name=brandList]").val(jsonData);
  1043. }
  1044. // 브랜드 조회 선택시
  1045. $('#btnSearchBrand').on('click', function() {
  1046. /* if (gagajf.isNull($("#searchForm input[name=searchTxt]").val())){
  1047. mcxDialog.alert('브랜드 검색어를 입력하세요.');
  1048. return false;
  1049. } */
  1050. cfnOpenBrandListPopup('fnSetBrandInfo', 'M');
  1051. });
  1052. // 상품이미지 미리보기 레이어에서 창 종료 이벤트
  1053. $(document).on("mouseleave","#goodsImgView",function(){
  1054. $("#goodsImgView").remove();
  1055. });
  1056. $(document).ready(function() {
  1057. cfnCreateCalendar('#sellTerms', 'stDate', 'edDate', true, '등록일', 'X');
  1058. var selectCode = '<select name="dateGbn" id="dateGbn">';
  1059. selectCode += '<option value="R" seledted>상품등록일</option>';
  1060. selectCode += '<option value="P">가격변경일</option>';
  1061. selectCode += '<option value="S">최초승인일</option>';
  1062. selectCode += '</select>';
  1063. $("#searchForm").find('#sellTerms').prepend(selectCode);
  1064. // Create a agGrid
  1065. gagaAgGrid.createGrid('gridList', gridOptions);
  1066. });
  1067. /*]]>*/
  1068. </script>
  1069. </div>
  1070. </html>