FreeGoodsPromotionRegiForm.html 44 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006
  1. <!DOCTYPE html>
  2. <html lang="ko"
  3. xmlns:th="http://www.thymeleaf.org">
  4. <!--
  5. *******************************************************************************
  6. * @source : FreeGoodsPromotionRegiForm.html
  7. * @desc : 세트상품 구성 관리
  8. *============================================================================
  9. * SISUN
  10. * Copyright(C) 2019 TSIT, All rights reserved.
  11. *============================================================================
  12. * VER DATE AUTHOR DESCRIPTION
  13. * === =========== ========== =============================================
  14. * 1.0 2020.12.23 xodud1202 최초 작성
  15. *******************************************************************************
  16. -->
  17. <div class="modalPopup frGoodsPro" data-width="1100">
  18. <div class="panelStyle">
  19. <div class="panelTitle">
  20. <h2>사은품 프로모션 관리</h2>
  21. <button type="button" class="close" onclick="fnFreeGoodsPromotionFormClose()"><i class="fa fa-times"></i></button>
  22. </div>
  23. <div class="marT10" style="height:650px;overflow-y:auto;padding:0 10px;">
  24. <form id="freeGoodsPromotionForm" name="freeGoodsPromotionForm" th:method="post">
  25. <input type="hidden" name="gbn" th:value="${param.gbn}" /> <!-- 신규/수정 구분 -->
  26. <input type="hidden" id="freegiftSq" name="freegiftSq" th:value="${param.freegiftSq}"/> <!-- 사은품 프로모션 번호 -->
  27. <div class="panelContent">
  28. <table class="frmStyle">
  29. <colgroup>
  30. <col width="10%"/>
  31. <col width="50%"/>
  32. <col width="10%"/>
  33. <col width="40%"/>
  34. </colgroup>
  35. <tr>
  36. <th>프로모션명<em class="required" title="필수"></em></th>
  37. <td>
  38. <input class="w50p disabledPoint" type="text" id="freegiftNm" name="freegiftNm" minlength="2" maxlength="30" required="required" data-valid-name="프로모션명"/>
  39. </td>
  40. <th>프로모션ID</th>
  41. <td>
  42. <span name="freegiftSqText"></span>
  43. </td>
  44. </tr>
  45. <tr>
  46. <th>행사 기간<em class="required" title="필수"></em></th>
  47. <td>
  48. <input type="text" class="schDate w100" id="freegiftStdt" name="freegiftStdt" maxlength="10" required="required" data-valid-name="시작일자"/>
  49. ~
  50. <input type="text" class="schDate w100" id="freegiftEddt" name="freegiftEddt" maxlength="10" required="required" data-valid-name="종료일자"/>
  51. </td>
  52. <!-- <td id="promotionTerms">수정시 행사기간 입력되도록 수정(JAVASCRIPT?) : before</td> -->
  53. <th>상태</th>
  54. <td>
  55. <!-- 상태 입력 : before -->
  56. <span name="freegiftStatText"></span>
  57. </td>
  58. </tr>
  59. <tr>
  60. <th>적용 몰 구분<em class="required" title="필수"></em></th>
  61. <td colspan="3">
  62. <label class="chkBox disabledPoint"><input type="checkbox" id="selfYn" name="selfYn" value="Y" class="disabledPoint"/>자사몰</label>
  63. <label class="chkBox disabledPoint" id="G011_20"><input type="checkbox" id="extmallYn" name="extmallYn" value="Y" class="disabledPoint"/>제휴몰</label>
  64. <button type="button" class="btn btnRight btn-success btn-lg" id="btnExtmallPopup">선택</button><span id="extmallCntArea"> 선택 : <span id="extmallCnt">00</span>개</span>
  65. <div id="gridFGExtmallList" style="display:none;"></div>
  66. </td>
  67. </tr>
  68. </table>
  69. </div>
  70. <div class="panelStyle" style="margin:unset;">
  71. <!-- TITLE -->
  72. <div class="panelTitle">
  73. <h2>적용 대상 상품 등록</h2>
  74. <span class="panelControl">
  75. <i class="fa inner-fa-chevron-up"></i> <!-- 열림/닫힘 화살표 -->
  76. </span>
  77. </div>
  78. <!-- //TITLE -->
  79. <div class="inner-panelContent">
  80. <div><i class="fa fa-info-circle"></i> 브랜드/공급업체/상품 중 1가지는 필수로 지정하셔야 합니다.</div>
  81. <div><i class="fa fa-info-circle"></i> 브랜드와 공급업체는 지정 시, 해당 브랜드의 공급처와 같은 AND조건으로 적용됩니다.(예시:A브랜드 상품 중 B업체 상품만)</div>
  82. <div><i class="fa fa-info-circle"></i> 공급업체와 브랜드를 적용하시더라도 적용상품은 별개로 등록된 상품을 기준으로 사은품 지급기준으로 적용하실 수 있습니다.</div>
  83. <div class="panelContent">
  84. <table class="frmStyle">
  85. <colgroup>
  86. <col width="10%"/>
  87. <col width="90%"/>
  88. </colgroup>
  89. <tr>
  90. <th>공급업체/브랜드</th>
  91. <td>
  92. <!-- 수정시 프로모션명 입력 : before -->
  93. <div class="padding10" style="display:inline-block;width:49%;">
  94. <span>공급업체 설정</span>
  95. <div class="padding10 inner-tb-solid">
  96. <button type="button" class="btn btnRight btn-success btn-lg " id="btnAddCompany">업체 추가</button>
  97. <button type="button" class="btn btnRight btn-success btn-lg" id="btnDeleteCompany">선택삭제</button>
  98. <br/>
  99. <div id="gridFGPromotionCompanyList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
  100. </div>
  101. </div>
  102. <div class="padding10" style="display:inline-block;width:49%;">
  103. <span>브랜드 설정</span>
  104. <div class="padding10 inner-tb-solid">
  105. <button type="button" class="btn btnRight btn-success btn-lg" id="btnAddBrand">브랜드 추가</button>
  106. <button type="button" class="btn btnRight btn-success btn-lg" id="btnDeleteBrand">선택삭제</button>
  107. <br/>
  108. <!-- 브랜드 선택 팝업(단수 선택 팝업... 복수를 새로 만들어야하는지 ? 아니면 변수처리해야하는지 ? -->
  109. <div id="gridFGBrandList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
  110. </div>
  111. </div>
  112. </td>
  113. </tr>
  114. <tr>
  115. <th>적용상품</th>
  116. <td>
  117. <div class="padding10">
  118. <button type="button" class="btn btnRight btn-success btn-lg" id="btnAddApplyGoods">상품 추가</button>
  119. <button type="button" class="btn btnRight btn-success btn-lg" id="btnDeleteApplyGoods">선택삭제</button>
  120. <br/>
  121. <div id="gridFGApplyGoodsList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
  122. </div>
  123. </td>
  124. </tr>
  125. </table>
  126. </div>
  127. </div>
  128. </div>
  129. <div class="panelStyle" style="margin:unset;">
  130. <!-- TITLE -->
  131. <div class="panelTitle">
  132. <h2>제외 대상 상품</h2>
  133. <span class="panelControl">
  134. <i class="fa inner-fa-chevron-up"></i> <!-- 열림/닫힘 화살표 -->
  135. </span>
  136. </div>
  137. <!-- //TITLE -->
  138. <div class="inner-panelContent">
  139. <div class="panelContent">
  140. <table class="frmStyle">
  141. <colgroup>
  142. <col width="10%"/>
  143. <col width="90%"/>
  144. </colgroup>
  145. <tr>
  146. <th>제외 대상</th>
  147. <td>
  148. <div class="padding10">
  149. <button type="button" class="btn btnRight btn-success btn-lg" id="btnAddExceptGoods">상품 추가</button>
  150. <button type="button" class="btn btnRight btn-success btn-lg" id="btnDeleteExtGoods">선택삭제</button>
  151. <br/>
  152. <div id="gridFGExceptGoodsList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
  153. </div>
  154. </td>
  155. </tr>
  156. </table>
  157. </div>
  158. </div>
  159. </div>
  160. <div class="panelStyle" style="margin:unset;">
  161. <!-- TITLE -->
  162. <div class="panelTitle">
  163. <h2>적용 사은품 정보</h2>
  164. <span class="panelControl">
  165. <i class="fa inner-fa-chevron-up"></i> <!-- 열림/닫힘 화살표 -->
  166. </span>
  167. </div>
  168. <!-- //TITLE -->
  169. <div class="inner-panelContent">
  170. <div class="panelContent">
  171. <table class="frmStyle">
  172. <colgroup>
  173. <col width="10%"/>
  174. <col width="90%"/>
  175. </colgroup>
  176. <tr>
  177. <th>지급 방법<em class="required" title="필수"></em></th>
  178. <td>
  179. <div>
  180. <span><label class="rdoBtn"><input type="radio" id="allY" class="disabledPoint" name="allYn" value="Y" checked/>모두 지급 (설정한 사은품을 모두 지급합니다)</label></span>
  181. <span><label class="rdoBtn"><input type="radio" id="allN" class="disabledPoint" name="allYn" value="N"/>선택 사은품 (목록 중 1개를 선택하게 합니다)</label></span>
  182. </div>
  183. </td>
  184. </tr>
  185. <tr>
  186. <th>사은품 조건1<em class="required" title="필수"></em><br/>(최대 2개)</th>
  187. <td>
  188. <div>
  189. <div><i class="fa fa-info-circle"></i> 사은품은 최대 <font color="red">5</font>개까지 설정하실 수 있습니다.</div>
  190. <div><i class="fa fa-info-circle"></i> 구매 금액 조건을 추가하시면 구매 금액 충족 조건에 맞는 것으로 지급됩니다. 구매금액 조건은 최대 2개까지만등록 하실 수 있습니다.</div>
  191. <div><i class="fa fa-info-circle"></i> 장바구니에 담았을 때의 가격 기준으로 적용됩니다.(주문상품쿠폰(다운로드쿠폰)/장바구니 쿠폰 할인 적용 전 판매가)</div>
  192. <label for="saleAmt">구매금액</label><input type="text" class="w300 disabledPoint" id="saleAmt" name="sectionVal" data-valid-type="numeric"/> <br/>
  193. <span>사은품 목록</span>
  194. <button type="button" class="btn btnRight btn-success btn-lg hideButten" id="btnAddFreeGoods1">+ 사은품 선택</button>
  195. <button type="button" class="btn btnRight btn-success btn-lg hideButten" id="btnDeleteFreeGoods1">선택삭제</button>
  196. <br/>
  197. <div id="gridFreeGoods1List" style="width:100%; height:200px;" class="ag-theme-balham"></div>
  198. </div>
  199. </td>
  200. </tr>
  201. <tr>
  202. <th>사은품 조건2<br/>(최대 2개)</th>
  203. <td>
  204. <div>
  205. <label for="saleAmt2">구매금액</label><input type="text" class="w300 disabledPoint" id="saleAmt2" name="sectionVal2" data-valid-type="numeric"/> <br/>
  206. <span>사은품 목록</span>
  207. <button type="button" class="btn btnRight btn-success btn-lg hideButten" id="btnAddFreeGoods2">+ 사은품 선택</button>
  208. <button type="button" class="btn btnRight btn-success btn-lg hideButten" id="btnDeleteFreeGoods2">선택삭제</button>
  209. <br/>
  210. <div id="gridFreeGoods2List" style="width:100%; height:200px;" class="ag-theme-balham"></div>
  211. </div>
  212. </td>
  213. </tr>
  214. </table>
  215. </div>
  216. </div>
  217. </div>
  218. <div class="panelStyle" th:if="${#strings.toString(param.gbn) == 'U'}" style="margin:unset;">
  219. <!-- //TITLE -->
  220. <div class="inner-panelContent">
  221. <div class="panelContent">
  222. <table class="frmStyle">
  223. <colgroup>
  224. <col width="10%"/>
  225. <col width="40%"/>
  226. <col width="10%"/>
  227. <col width="40%"/>
  228. </colgroup>
  229. <tr>
  230. <th>등록자</th>
  231. <td>
  232. <span id="regInfo">등록자이름(연.월.일 시간:분:초)</span>
  233. </td>
  234. <th>최종수정자</th>
  235. <td>
  236. <span id="updInfo">수정자이름(연.월.일 시간:분:초)</span>
  237. </td>
  238. </tr>
  239. </table>
  240. </div>
  241. </div>
  242. </div>
  243. <ul class="panelBar">
  244. <li class="right">
  245. <!-- <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'}"> -->
  246. <button type="button" class="btn btnRight btn-success btn-lg" id="btnSearchList">목록</button>
  247. <button type="button" class="btn btnRight btn-success btn-lg fgButton" id="btnFreegoodsPromotionSave">저장</button>
  248. <button type="button" class="btn btnRight btn-success btn-lg fgButton" id="btnChangeStatIng">진행</button>
  249. <button type="button" class="btn btnRight btn-success btn-lg fgButton" id="btnPromotionDelete">삭제</button>
  250. <button type="button" class="btn btnRight btn-success btn-lg fgButton" id="btnPromotionStop">중지</button>
  251. <!-- </th:block> -->
  252. </li>
  253. </ul>
  254. </form>
  255. </div>
  256. </div>
  257. </div>
  258. <script th:inline="javascript">
  259. let confirmBtnText = ["확인", "취소"];
  260. let formId = "freeGoodsPromotionForm";
  261. let FGAddGoodsStatList = gagajf.convertToArray([[${goodsStatList}]]); // 상품 상태 리스트
  262. // 제휴몰 리스트 설정 (데이터 송부용 리스트 > 리스트 노출X)
  263. let columnFGExtmallList = [
  264. {headerName: "벤더ID", field: "vendorId", width: 120, cellClass: 'text-center'},
  265. {headerName: "제휴몰ID", field: "extmallId", width: 150, cellClass: 'text-center'},
  266. {headerName: "제휴몰명", field: "extmallNm", width: 150, cellClass: 'text-center'}
  267. ];
  268. // 공급업체 리스트 설정
  269. let columnFGCompanyList = [
  270. {width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
  271. {headerName: "공급처ID", field: "supplyCompCd", width: 120, cellClass: 'text-center'},
  272. {headerName: "공급업체명", field: "supplyCompNm", width: 150, cellClass: 'text-center'}
  273. ];
  274. // 브랜드 리스트 설정
  275. let columnBrandList = [
  276. {width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
  277. {headerName: "브랜드ID", field: "brandCd", width: 120, cellClass: 'text-center'},
  278. {headerName: "브랜드명", field: "brandEnm", width: 150, cellClass: 'text-center'}
  279. ];
  280. // 적용상품 리스트 설정
  281. let columnApplyGoodsList = [
  282. {width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
  283. {headerName: "Product ID", field: "goodsCd", width: 120, cellClass: 'text-center'},
  284. {headerName: "브랜드명", field: "brandEnm", width: 150, cellClass: 'text-center'},
  285. {headerName: "상품명", field: "goodsNm", width: 120, cellClass: 'text-center'},
  286. {headerName: "판매상태", field: "goodsStat" , width: 120, cellClass: 'text-center',
  287. cellEditorParams: { values: gagaAgGrid.extractValues(FGAddGoodsStatList) },
  288. valueFormatter: function (params) { return gagaAgGrid.lookupValue(FGAddGoodsStatList, params.value); },
  289. valueParser: function (params) { return gagaAgGrid.lookupKey(FGAddGoodsStatList, params.newValue); }
  290. },
  291. {headerName: "정상가", field: "listPrice", width: 120, cellClass: 'text-center'
  292. ,valueFormatter: function(params) {
  293. if(params.value && params.value > 0) {
  294. return params.value.addComma();
  295. } else {
  296. return 0;
  297. }
  298. }
  299. },
  300. {headerName: "판매가", field: "currPrice", width: 120, cellClass: 'text-center'
  301. ,valueFormatter: function(params) {
  302. if(params.value && params.value > 0) {
  303. return params.value.addComma();
  304. } else {
  305. return 0;
  306. }
  307. }
  308. }
  309. ];
  310. // 제외상품 리스트 설정
  311. let columnExceptGoodsList = [
  312. {width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
  313. {headerName: "Product ID", field: "goodsCd", width: 120, cellClass: 'text-center'},
  314. {headerName: "브랜드명", field: "brandEnm", width: 150, cellClass: 'text-center'},
  315. {headerName: "상품명", field: "goodsNm", width: 120, cellClass: 'text-center'},
  316. {headerName: "판매상태", field: "goodsStat" , width: 120, cellClass: 'text-center',
  317. cellEditorParams: { values: gagaAgGrid.extractValues(FGAddGoodsStatList) },
  318. valueFormatter: function (params) { return gagaAgGrid.lookupValue(FGAddGoodsStatList, params.value); },
  319. valueParser: function (params) { return gagaAgGrid.lookupKey(FGAddGoodsStatList, params.newValue); }
  320. },
  321. {headerName: "정상가", field: "listPrice", width: 120, cellClass: 'text-center'
  322. ,valueFormatter: function(params) {
  323. if(params.value && params.value > 0) {
  324. return params.value.addComma();
  325. } else {
  326. return 0;
  327. }
  328. }
  329. },
  330. {headerName: "판매가", field: "currPrice", width: 120, cellClass: 'text-center'
  331. ,valueFormatter: function(params) {
  332. if(params.value && params.value > 0) {
  333. return params.value.addComma();
  334. } else {
  335. return 0;
  336. }
  337. }
  338. }
  339. ];
  340. // 사은품 조건1 리스트 설정 (사은품 상품 만들어지면 만들어야함)
  341. let columnFreeGoods1List = [
  342. {width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
  343. {headerName: "사은품 코드", field: "productNo", width: 120, cellClass: 'text-center'},
  344. {headerName: "사은품명", field: "goodsNm", width: 150, cellClass: 'text-center'},
  345. {headerName: "포인트액", field: "usePoint" , width: 100, cellClass: 'text-center', required: true
  346. ,editable: true
  347. ,valueFormatter: function(params) {
  348. if(params.value) {
  349. return params.value.addComma();
  350. } else {
  351. return 0;
  352. }
  353. },
  354. cellEditorParams: { maxlength: 9, validType: 'numeric'}
  355. },
  356. {headerName: "지급수량", field: "itemQty" , width: 100, cellClass: 'text-center', required: true
  357. ,editable: true
  358. ,valueFormatter: function(params) {
  359. if(params.value) {
  360. return params.value;
  361. } else {
  362. return 1;
  363. }
  364. }
  365. ,cellEditorParams: { maxlength: 3, validType: 'numeric'}
  366. },
  367. {headerName: "한정수량", field: "limitQty" , width: 100, cellClass: 'text-center', required: true
  368. ,editable: true
  369. ,valueFormatter: function(params) {
  370. if(params.value) {
  371. return params.value.addComma();
  372. } else {
  373. return 1;
  374. }
  375. }
  376. ,cellEditorParams: { maxlength: 9, validType: 'numeric'}
  377. },
  378. {headerName: "잔여수량", field: "leftQty", width: 120, cellClass: 'text-center'
  379. ,valueFormatter: function(params) {
  380. if(params.value) {
  381. return params.value.addComma();
  382. } else {
  383. return 0;
  384. }
  385. }
  386. }
  387. ];
  388. // 사은품 조건2 리스트 설정 (사은품 상품 만들어지면 만들어야함)
  389. let columnFreeGoods2List = [
  390. {width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
  391. {headerName: "사은품 코드", field: "productNo", width: 120, cellClass: 'text-center'},
  392. {headerName: "사은품명", field: "goodsNm", width: 150, cellClass: 'text-center'},
  393. {headerName: "포인트액", field: "usePoint" , width: 100, cellClass: 'text-center', required: true
  394. ,editable: true
  395. ,valueFormatter: function(params) {
  396. if(params.value) {
  397. return params.value.addComma();
  398. } else {
  399. return 0;
  400. }
  401. },
  402. cellEditorParams: { maxlength: 9, validType: 'numeric'}
  403. },
  404. {headerName: "지급수량", field: "itemQty" , width: 100, cellClass: 'text-center', required: true
  405. ,editable: true
  406. ,valueFormatter: function(params) {
  407. if(params.value) {
  408. return params.value;
  409. } else {
  410. return 1;
  411. }
  412. }
  413. ,cellEditorParams: { maxlength: 3, validType: 'numeric'}
  414. },
  415. {headerName: "한정수량", field: "limitQty" , width: 100, cellClass: 'text-center', required: true
  416. ,editable: true
  417. ,valueFormatter: function(params) {
  418. if(params.value) {
  419. return params.value.addComma();
  420. } else {
  421. return 1;
  422. }
  423. }
  424. ,cellEditorParams: { maxlength: 9, validType: 'numeric'}
  425. },
  426. {headerName: "잔여수량", field: "leftQty", width: 120, cellClass: 'text-center'
  427. ,valueFormatter: function(params) {
  428. if(params.value) {
  429. return params.value.addComma();
  430. } else {
  431. return 0;
  432. }
  433. }
  434. }
  435. ];
  436. // 제휴몰 리스트 설정
  437. let gridOptionsFGExtmallList = gagaAgGrid.getGridOptions(columnFGExtmallList);
  438. // 공급업체 리스트 설정
  439. let gridOptionsFGCompanyList = gagaAgGrid.getGridOptions(columnFGCompanyList);
  440. gridOptionsFGCompanyList.rowSelection = "multiple";
  441. // 브랜드 리스트 설정
  442. let gridOptionsFGBrandList = gagaAgGrid.getGridOptions(columnBrandList);
  443. gridOptionsFGBrandList.rowSelection = "multiple";
  444. // 적용상품 리스트 설정
  445. let gridOptionsFGApplyGoodsList = gagaAgGrid.getGridOptions(columnApplyGoodsList);
  446. gridOptionsFGApplyGoodsList.rowSelection = "multiple";
  447. // 제외상품 리스트 설정
  448. let gridOptionsFGExceptGoodsList = gagaAgGrid.getGridOptions(columnExceptGoodsList);
  449. gridOptionsFGExceptGoodsList.rowSelection = "multiple";
  450. // 사은품 조건1 리스트 설정
  451. let gridOptionsFreeGoods1List = gagaAgGrid.getGridOptions(columnFreeGoods1List);
  452. gridOptionsFreeGoods1List.rowSelection = "multiple";
  453. // 사은품 조건2 리스트 설정
  454. let gridOptionsFreeGoods2List = gagaAgGrid.getGridOptions(columnFreeGoods2List);
  455. gridOptionsFreeGoods2List.rowSelection = "multiple";
  456. var fnFreeGoodsPromotionSearchCallback = function(result) {
  457. if (result.freegift != null) {
  458. let freegift = result.freegift;
  459. let freegiftStatNm = freegift.freegiftStatNm;
  460. let today = new Date();
  461. let yyyy = today.getFullYear(), dd = today.getDate(), mm = today.getMonth()+1, stopDt; //January is 0!
  462. if(dd<10) { dd= '0' + dd }
  463. if(mm<10) { mm= '0' + mm }
  464. // 상태명 상태에 따라 변경
  465. if(freegift.freegiftStat == "G232_12") { // 중지상태일 경우 중지 일시 노출
  466. freegiftStatNm = freegiftStatNm + " (" + freegift.updDt + ")";
  467. } else if (freegift.freegiftStat == "G232_11" && freegift.freegiftEddt < yyyy+"."+mm+"."+dd) { // 종료된 프로모션일 경우 종료일 노출
  468. freegiftStatNm = "종료 (" + freegift.freegiftEddt + ")";
  469. }
  470. // 저장된 값 입력
  471. $('#freeGoodsPromotionForm input[name=freegiftNm]').val(freegift.freegiftNm);
  472. $('#freeGoodsPromotionForm span[name=freegiftSqText]').text(freegift.freegiftSq);
  473. $('#freeGoodsPromotionForm input[name=freegiftStdt]').val(freegift.freegiftStdt.split(".").join("-"));
  474. $('#freeGoodsPromotionForm input[name=freegiftEddt]').val(freegift.freegiftEddt.split(".").join("-"));
  475. $('#freeGoodsPromotionForm span[name=freegiftStatText]').text(freegiftStatNm);
  476. $('#freeGoodsPromotionForm input[name=sectionVal]').val(freegift.sectionVal);
  477. $('#freeGoodsPromotionForm input[name=sectionVal2]').val(freegift.sectionVal2);
  478. $("#freeGoodsPromotionForm #regInfo").text(freegift.regNm + "(" + freegift.regDt + ")");
  479. $("#freeGoodsPromotionForm #updInfo").text(freegift.updNm + "(" + freegift.updDt + ")");
  480. // 자사 적용일 경우
  481. if(freegift.selfYn == "Y") {
  482. $("#freeGoodsPromotionForm input[name=selfYn]").addClass("checked");
  483. $("#freeGoodsPromotionForm input[name=selfYn]").parent("label").addClass("checked");
  484. }
  485. // 외부몰 적용일 경우
  486. if(freegift.extmallList != null && freegift.extmallList.length > 0) {
  487. $("#freeGoodsPromotionForm input[name=extmallYn]").parent("label").addClass("checked");
  488. $("#freeGoodsPromotionForm #extmallCnt").text(freegift.extmallList.length);
  489. $("#freeGoodsPromotionForm #allY").prop("checked", true); // 제휴몰 선택시 지급 방법은 모두 지급으로 한정
  490. $("#freeGoodsPromotionForm input[name=allYn]").prop("disabled", true); // 제휴몰 선택시 지급 방법은 모두 지급에서 수정 불가
  491. } else {
  492. $("#freeGoodsPromotionForm #btnExtmallPopup").hide();
  493. $("#freeGoodsPromotionForm #extmallCntArea").hide();
  494. $("#freeGoodsPromotionForm #extmallCnt").text(0);
  495. $("#freeGoodsPromotionForm #extmallIds").val("");
  496. $("#freeGoodsPromotionForm input[name=allYn]").prop("disabled", false); // 제휴몰 선택 안하면 지급 방법 수정 가능
  497. }
  498. // 목록 제외 버튼 숨김
  499. $("#freeGoodsPromotionForm .fgButton").hide();
  500. if(freegift.freegiftStat == "G232_10") { // 대기 상태일 경우
  501. $("#freeGoodsPromotionForm #btnFreegoodsPromotionSave").show(); // 저장
  502. $("#freeGoodsPromotionForm #btnChangeStatIng").show(); // 진행
  503. $("#freeGoodsPromotionForm #btnPromotionDelete").show(); // 삭제
  504. } else {
  505. // 진행 상태일 경우
  506. if(freegift.freegiftStat == "G232_11") {
  507. $("#freeGoodsPromotionForm #btnFreegoodsPromotionSave").show(); // 저장
  508. $("#freeGoodsPromotionForm #btnPromotionStop").show(); // 중지
  509. // 진행 상태일 경우 기간, 적용대상상품, 추가제외상품 외 나머지 항목 수정 불가.
  510. $("#freeGoodsPromotionForm input[name=extmallYn]").addClass("formControl");
  511. $("#freeGoodsPromotionForm .disabledPoint").prop("disabled", true);
  512. $("#freeGoodsPromotionForm .hideButten").hide();
  513. }
  514. }
  515. gridOptionsFGExtmallList.api.setRowData(freegift.extmallList);
  516. gridOptionsFGCompanyList.api.setRowData(freegift.supplyCompList);
  517. gridOptionsFGBrandList.api.setRowData(freegift.brandList);
  518. gridOptionsFGApplyGoodsList.api.setRowData(freegift.applyGoodsList);
  519. gridOptionsFGExceptGoodsList.api.setRowData(freegift.exceptGoodsList);
  520. gridOptionsFreeGoods1List.api.setRowData(freegift.freeGoods1);
  521. gridOptionsFreeGoods2List.api.setRowData(freegift.freeGoods2);
  522. }
  523. }
  524. // 프로모션 상세 조회
  525. var fnFreegiftSearch = function() {
  526. var params = new Object();
  527. params.gbn = $('#freeGoodsPromotionForm input[name=gbn]').val();
  528. params.freegiftSq = $('#freeGoodsPromotionForm input[name=freegiftSq]').val();
  529. cfnAjaxSubmit("/marketing/freeGoodsPromotion/detail", "json", fnFreeGoodsPromotionSearchCallback, params);
  530. }
  531. $(document).ready(function() {
  532. gagaAgGrid.createGrid("gridFGExtmallList", gridOptionsFGExtmallList);
  533. gagaAgGrid.createGrid("gridFGPromotionCompanyList", gridOptionsFGCompanyList);
  534. gagaAgGrid.createGrid("gridFGBrandList", gridOptionsFGBrandList);
  535. gagaAgGrid.createGrid("gridFGApplyGoodsList", gridOptionsFGApplyGoodsList);
  536. gagaAgGrid.createGrid("gridFGExceptGoodsList", gridOptionsFGExceptGoodsList);
  537. gagaAgGrid.createGrid("gridFreeGoods1List", gridOptionsFreeGoods1List);
  538. gagaAgGrid.createGrid("gridFreeGoods2List", gridOptionsFreeGoods2List);
  539. if("C" == [[${param.gbn}]]) {
  540. $("#freeGoodsPromotionForm #btnExtmallPopup").hide();
  541. $("#freeGoodsPromotionForm #extmallCntArea").hide();
  542. $("#freeGoodsPromotionForm .fgButton").hide();
  543. $("#freeGoodsPromotionForm #btnFreegoodsPromotionSave").show();
  544. // 기간 검색 default 조건 (오늘부터 1주일)
  545. let date = new Date();
  546. $("#freeGoodsPromotionForm #freegiftStdt").val(date.format("YYYY-MM-DD")); // 오늘 날짜
  547. date.setDate(date.getDate() + 7); // 등록일 + 7일
  548. $("#freeGoodsPromotionForm #freegiftEddt").val(date.format("YYYY-MM-DD")); // 1주일 후 날짜
  549. } else {
  550. fnFreegiftSearch();
  551. }
  552. });
  553. // 제휴몰 체크 상태 확인
  554. $("#freeGoodsPromotionForm #G011_20").on("click", function() {
  555. if(!$("#freeGoodsPromotionForm input[name=extmallYn]").hasClass("formControl")) { // 수정금지 상태가 아니라면
  556. // 체크여부 확인 (선택되면 자동 checked 추가되는데, 추가되기 전 동작해서 반대로 지정)
  557. if($("#freeGoodsPromotionForm #G011_20").hasClass("checked")) {
  558. $("#freeGoodsPromotionForm #btnExtmallPopup").hide();
  559. $("#freeGoodsPromotionForm #extmallCntArea").hide();
  560. $("#freeGoodsPromotionForm input[name=allYn]").prop("disabled", false); // 제휴몰 선택 안하면 지급 방법 수정 가능
  561. gridOptionsFGExtmallList.api.setRowData(null);
  562. $("#extmallCnt").text(gagaAgGrid.getAllRowData(gridOptionsFGExtmallList).length);
  563. } else {
  564. $("#freeGoodsPromotionForm #btnExtmallPopup").show();
  565. $("#freeGoodsPromotionForm #extmallCntArea").show();
  566. $("#freeGoodsPromotionForm #allY").prop("checked", true); // 제휴몰 선택시 지급 방법은 모두 지급으로 한정
  567. $("#freeGoodsPromotionForm input[name=allYn]").prop("disabled", true); // 제휴몰 선택시 지급 방법은 모두 지급에서 수정 불가
  568. }
  569. }
  570. });
  571. $('#freeGoodsPromotionForm input[name=freegiftNm]').on('focusout', function() {
  572. if($('#freeGoodsPromotionForm input[name=freegiftNm]').val().length < 2) {
  573. mcxDialog.alert("2자~30자 이상 프로모션명을 입력하세요.");
  574. return;
  575. }
  576. });
  577. // 리스트 정보 수정
  578. function fnSetListInfo(result, gridListOption, key) {
  579. let resultList = []; // 최종 상품 리스트
  580. let gridListValue = gagaAgGrid.getAllRowData(gridListOption); // 기존 리스트
  581. let addCnt = 0; // 적용 성공 수량
  582. let failCnt = 0; // 실패 수량
  583. // 기존 리스트 데이터 for
  584. for(let i = 0 ; i < result.length ; i++) {
  585. let addChk = true; // 받아온 모든 데이터
  586. // 받아온 data for
  587. for(let j = 0 ; j < gridListValue.length ; j++) {
  588. // 조회한 상품 중 동일하지 않은 데이터만 추가
  589. if(eval("gridListValue[j]." + key) == eval("result[i]." + key)) { addChk = false; } // 중복체크
  590. }
  591. // 추가된 데이터 중 중복되지 않은 데이터 리스트에 추가
  592. if(addChk) { resultList.push(result[i]); addCnt++; }
  593. }
  594. // 사은품 추가는 5개까지만
  595. if(key == "productNo") {
  596. let totalCnt = resultList.length + gridListValue.length;
  597. if(totalCnt > 5) {
  598. mcxDialog.alert("사은품은 최대 5개까지만 등록하실 수 있습니다.");
  599. return false;
  600. }
  601. failCnt = result.length - addCnt;
  602. mcxDialog.alert("데이터가 적용되었습니다.<br/>" + addCnt + "건 성공, " + failCnt + "건 실패");
  603. } else if (key == "goodsCd") {
  604. uifnPopupClose('popupGoods');
  605. failCnt = result.length - addCnt;
  606. mcxDialog.alert("데이터가 적용되었습니다.<br/>" + addCnt + "건 성공, " + failCnt + "건 실패");
  607. }
  608. // 추가된 정보 그리드에 추가
  609. for(let i = 0 ; i < resultList.length ; i++) {
  610. gagaAgGrid.addRowData(gridListOption, resultList[i], key);
  611. }
  612. }
  613. // 저장 후 콜백 함수
  614. var fnFreeGoodsPromotionSaveFin = function(result) {
  615. if("C" != [[${param.gbn}]]) {
  616. fnFreegiftSearch();
  617. } else {
  618. uifnPopupClose('popupFreeGoodsPromotionRegi');
  619. }
  620. }
  621. // 저장 버튼 클릭시
  622. $('#freeGoodsPromotionForm #btnFreegoodsPromotionSave').on('click', function() {
  623. // 각 ag-grid list 수량
  624. let extmallCnt = gagaAgGrid.getAllRowData(gridOptionsFGExtmallList).length;
  625. let supplyCompCnt = gagaAgGrid.getAllRowData(gridOptionsFGCompanyList).length;
  626. let brandCnt = gagaAgGrid.getAllRowData(gridOptionsFGBrandList).length;
  627. let applyGoodsCnt = gagaAgGrid.getAllRowData(gridOptionsFGApplyGoodsList).length;
  628. let exceptGoodsCnt = gagaAgGrid.getAllRowData(gridOptionsFGExceptGoodsList).length;
  629. let freeGoods1Cnt = gagaAgGrid.getAllRowData(gridOptionsFreeGoods1List).length;
  630. let freeGoods2Cnt = gagaAgGrid.getAllRowData(gridOptionsFreeGoods2List).length;
  631. if (!gagajf.validation('#freeGoodsPromotionForm')) {
  632. return false;
  633. }
  634. if($('#freeGoodsPromotionForm input[name=freegiftNm]').val().length < 2) {
  635. mcxDialog.alert("2자~30자 이상 프로모션명을 입력하세요.");
  636. return false;
  637. }
  638. // 행사기간 확인
  639. let fromDate = $('#freeGoodsPromotionForm input[name=freegiftStdt]').val();
  640. let toDate = $('#freeGoodsPromotionForm input[name=freegiftEddt]').val();
  641. if (fromDate > toDate) {
  642. mcxDialog.alert("시작일자는 종료일자 보다 늦을 수 없습니다.");
  643. $('#freeGoodsPromotionForm input[name=freegiftStdt]').focus();
  644. return false;
  645. }
  646. // 공급업체, 브랜드, 적용상품 중 1개 필수 체크
  647. if(supplyCompCnt < 1 && brandCnt < 1 && applyGoodsCnt < 1) {
  648. mcxDialog.alert("공급업체, 브랜드, 적용 상품 중 한가지 이상 등록해주세요.");
  649. return false;
  650. }
  651. // 사은품조건1 필수 체크
  652. if(freeGoods1Cnt < 1) {
  653. mcxDialog.alert("사은품 조건을 입력하세요.");
  654. return false;
  655. }
  656. if($("#freeGoodsPromotionForm #saleAmt").val() == "" || $("#freeGoodsPromotionForm #saleAmt").val() < 1) {
  657. mcxDialog.alert("사은품 조건1의 구매금액 조건을 설정해주세요.");
  658. return false;
  659. }
  660. let freeGoods1 = gagaAgGrid.getAllRowData(gridOptionsFreeGoods1List);
  661. let freeGoods2 = gagaAgGrid.getAllRowData(gridOptionsFreeGoods2List);
  662. // 지급수량, 한정수량 체크
  663. for(let i = 0 ; i < freeGoods1.length ; i++) {
  664. if(!freeGoods1[i].usePoint || freeGoods1[i].usePoint == "undefined") { // 포인트액을 변경하지 않았을 경우 디폴트 값으로 설정
  665. freeGoods1[i].usePoint = 0;
  666. }
  667. if(!freeGoods1[i].itemQty || freeGoods1[i].itemQty == "undefined") { // 지급수량을 변경하지 않았을 경우 디폴트 값으로 설정
  668. freeGoods1[i].itemQty = 1;
  669. }
  670. if(!freeGoods1[i].limitQty || freeGoods1[i].limitQty == "undefined") { // 한정수량을 변경하지 않았을 경우 디폴트 값으로 설정
  671. freeGoods1[i].limitQty = 1;
  672. }
  673. if(freeGoods1[i].itemQty < 1) {
  674. mcxDialog.alert("사은품조건1의 지급 수량을 1개 이상 입력해주세요.");
  675. return false;
  676. }
  677. if(freeGoods1[i].limitQty < 0) {
  678. mcxDialog.alert("사은품조건1의 한정 수량을 0개 이상 입력해주세요.");
  679. return false;
  680. }
  681. if(freeGoods1[i].usePoint > 999999999) {
  682. mcxDialog.alert("사은품조건1의 포인트액 최대 값은 999999999 입니다.");
  683. return false;
  684. }
  685. if(freeGoods1[i].itemQty > 999) {
  686. mcxDialog.alert("사은품조건1의 지급수량 최대 값은 999 입니다.");
  687. return false;
  688. }
  689. if(freeGoods1[i].limitQty > 999999999) {
  690. mcxDialog.alert("사은품조건1의 한정수량 최대 값은 999999999 입니다.");
  691. return false;
  692. }
  693. }
  694. for(let i = 0 ; i < freeGoods2.length ; i++) {
  695. if(!freeGoods2[i].usePoint || freeGoods2[i].usePoint == "undefined") { // 포인트액을 변경하지 않았을 경우 디폴트 값으로 설정
  696. freeGoods2[i].usePoint = 0;
  697. }
  698. if(!freeGoods2[i].itemQty || freeGoods2[i].itemQty == "undefined") { // 지긊수량을 변경하지 않았을 경우 디폴트 값으로 설정
  699. freeGoods2[i].itemQty = 1;
  700. }
  701. if(!freeGoods2[i].limitQty || freeGoods2[i].limitQty == "undefined") { // 한정수량을 변경하지 않았을 경우 디폴트 값으로 설정
  702. freeGoods2[i].limitQty = 1;
  703. }
  704. if(freeGoods2[i].itemQty < 1) {
  705. mcxDialog.alert("사은품조건2의 지급 수량을 1개 이상 입력해주세요.");
  706. return false;
  707. }
  708. if(freeGoods2[i].limitQty < 0) {
  709. mcxDialog.alert("사은품조건2의 한정 수량을 0개 이상 입력해주세요.");
  710. return false;
  711. }
  712. if(freeGoods2[i].usePoint > 999999999) {
  713. mcxDialog.alert("사은품조건2의 포인트액 최대 값은 999999999 입니다.");
  714. return false;
  715. }
  716. if(freeGoods2[i].itemQty > 999) {
  717. mcxDialog.alert("사은품조건2의 지급수량 최대 값은 999 입니다.");
  718. return false;
  719. }
  720. if(freeGoods2[i].limitQty > 999999999) {
  721. mcxDialog.alert("사은품조건2의 한정수량 최대 값은 999999999 입니다.");
  722. return false;
  723. }
  724. }
  725. // 사은품조건1 의 수량 체크
  726. if(freeGoods1Cnt > 5) {
  727. mcxDialog.alert("사은품 조건1의 사은품은 최대 5개까지 등록가능합니다.");
  728. return false;
  729. }
  730. // 사은품조건2의 수량 체크
  731. if(freeGoods2Cnt > 5) {
  732. mcxDialog.alert("사은품 조건2의 사은품은 최대 5개까지 등록가능합니다.");
  733. return false;
  734. }
  735. if($("#freeGoodsPromotionForm #saleAmt2").val() != "" && $("#freeGoodsPromotionForm #saleAmt2").val() < 1) {
  736. if(freeGoods2Cnt > 0) {
  737. mcxDialog.alert("사은품 조건2의 구매금액 조건을 설정해주세요.");
  738. return false;
  739. }
  740. } else if (freeGoods2Cnt < 1) {
  741. mcxDialog.alert("사은품 조건2의 사은품을 선택해주세요.");
  742. return false;
  743. }
  744. let selfYn = $("#freeGoodsPromotionForm input[name=selfYn]:checked").val();
  745. if(!selfYn || selfYn == "") { selfYn = "N"; }
  746. // var params = $(formId).serialize();
  747. var data = { gbn : $("#freeGoodsPromotionForm input[name=gbn]").val()
  748. , freegiftSq : $("#freeGoodsPromotionForm input[name=freegiftSq]").val()
  749. , freegiftNm : $("#freeGoodsPromotionForm input[name=freegiftNm]").val()
  750. , freegiftStdt : $("#freeGoodsPromotionForm input[name=freegiftStdt]").val().replace(/-/gi, "")
  751. , freegiftEddt : $("#freeGoodsPromotionForm input[name=freegiftEddt]").val().replace(/-/gi, "")
  752. , selfYn : selfYn
  753. , extmallYn : $("#freeGoodsPromotionForm input[name=extmallYn]:checked").val()
  754. , allYn : $("#freeGoodsPromotionForm input[name=allYn]:checked").val()
  755. , sectionVal : $("#freeGoodsPromotionForm input[name=sectionVal]").val()
  756. , sectionVal2 : $("#freeGoodsPromotionForm input[name=sectionVal2]").val()
  757. , supplyCompList : gagaAgGrid.getAllRowData(gridOptionsFGCompanyList)
  758. , brandList : gagaAgGrid.getAllRowData(gridOptionsFGBrandList)
  759. , extmallList : gagaAgGrid.getAllRowData(gridOptionsFGExtmallList)
  760. , applyGoodsList : gagaAgGrid.getAllRowData(gridOptionsFGApplyGoodsList)
  761. , exceptGoodsList : gagaAgGrid.getAllRowData(gridOptionsFGExceptGoodsList)
  762. , freeGoods1 : freeGoods1
  763. , freeGoods2 : freeGoods2
  764. };
  765. var jsonData = JSON.stringify(data);
  766. gagajf.ajaxJsonSubmit('/marketing/freeGoodsPromotion/save', jsonData, fnFreeGoodsPromotionSaveFin);
  767. });
  768. // 목록 버튼 클릭
  769. $("#freeGoodsPromotionForm #btnSearchList").on("click", function() {
  770. uifnPopupClose('popupFreeGoodsPromotionRegi');
  771. });
  772. // 진행 버튼 클릭
  773. $("#freeGoodsPromotionForm #btnChangeStatIng").on("click", function() {
  774. mcxDialog.confirmC("프로모션을 진행하시겠습니까?<br/>진행 후에는 수정이 제한될 수 있습니다.", {
  775. btn: confirmBtnText,
  776. btnClick: function(index) {
  777. if(index == 1) {
  778. let data = { freegiftStat : "G232_11" // 진행
  779. , freegiftSq : $("#freeGoodsPromotionForm input[name=freegiftSq]").val()
  780. }
  781. var jsonData = JSON.stringify(data);
  782. gagajf.ajaxJsonSubmit('/marketing/freeGoodsPromotion/changeStat', jsonData, fnFreeGoodsPromotionSaveFin);
  783. }
  784. }
  785. });
  786. });
  787. // 삭제 버튼 클릭
  788. $("#freeGoodsPromotionForm #btnPromotionDelete").on("click", function() {
  789. mcxDialog.confirmC("프로모션을 삭제하시겠습니까?<br/>삭제한 프로모션은 복원하실 수 없습니다.", {
  790. btn: confirmBtnText,
  791. btnClick: function(index) {
  792. if(index == 1) {
  793. let data = {
  794. freegiftStat: "G232_14" // 삭제
  795. , freegiftSq: $("#freeGoodsPromotionForm input[name=freegiftSq]").val()
  796. }
  797. var jsonData = JSON.stringify(data);
  798. gagajf.ajaxJsonSubmit('/marketing/freeGoodsPromotion/changeStat', jsonData, function() {
  799. uifnPopupClose('popupFreeGoodsPromotionRegi');
  800. });
  801. }
  802. }
  803. });
  804. });
  805. // 중지 버튼 클릭
  806. $("#freeGoodsPromotionForm #btnPromotionStop").on("click", function() {
  807. mcxDialog.confirmC("프로모션을 중지하시겠습니까?<br/>중지 후에는 진행으로 복원하실 수 없습니다.", {
  808. btn: confirmBtnText,
  809. btnClick: function(index) {
  810. if(index == 1) {
  811. let data = {
  812. freegiftStat: "G232_12" // 중지
  813. , freegiftSq: $("#freeGoodsPromotionForm input[name=freegiftSq]").val()
  814. }
  815. var jsonData = JSON.stringify(data);
  816. gagajf.ajaxJsonSubmit('/marketing/freeGoodsPromotion/changeStat', jsonData, fnFreeGoodsPromotionSaveFin);
  817. }
  818. }
  819. });
  820. });
  821. // 공급업체 설정 / 업체 추가 콜백함수
  822. var fnSetPopupComapnyInfo = function(result) {
  823. fnSetListInfo(result, gridOptionsFGCompanyList, "supplyCompCd");
  824. };
  825. // 브랜드 설정 / 브랜드 추가 콜백함수 (단수로 가져오므로 복수일 경우에 수정 확인 필요)
  826. var fnSetPopupBrandInfo = function(result) {
  827. fnSetListInfo(result, gridOptionsFGBrandList, "brandCd");
  828. };
  829. // 적용 상품 리스트 콜백함수
  830. var fnSetPopupApplyGoodsInfo = function(result) {
  831. fnSetListInfo(result, gridOptionsFGApplyGoodsList, "goodsCd");
  832. };
  833. // 제외 상품 리스트 콜백함수
  834. var fnSetPopupExceptGoodsInfo = function(result) {
  835. fnSetListInfo(result, gridOptionsFGExceptGoodsList, "goodsCd");
  836. };
  837. // 사은품 조건1 상품 리스트 콜백함수
  838. var fnSetPopupFreeGoods1Info = function(result) {
  839. fnSetListInfo(result, gridOptionsFreeGoods1List, "productNo");
  840. };
  841. // 사은품 조건2 상품 리스트 콜백함수
  842. var fnSetPopupFreeGoods2Info = function(result) {
  843. fnSetListInfo(result, gridOptionsFreeGoods2List, "productNo");
  844. };
  845. // 제휴몰 리스트 세팅
  846. function fnSetPopupExtmallInfo(result) {
  847. let resultList = []; // 최종 상품 리스트
  848. let gridListValue = gagaAgGrid.getAllRowData(gridOptionsFGExtmallList); // 기존 리스트
  849. // 콜백 리스트 데이터 for
  850. for(let i = 0 ; i < result.length ; i++) {
  851. let addChk = true; // 받아온 모든 데이터
  852. // 기존 data for
  853. for(let j = 0 ; j < gridListValue.length ; j++) {
  854. // 조회한 상품 중 동일하지 않은 데이터만 추가
  855. if((gridListValue[j].vendorId + "" + gridListValue[j].extmallId) == (result[i].vendorId + "" + result[i].extmallId)) {
  856. addChk = false; // 중복체크
  857. }
  858. }
  859. // 추가된 데이터 중 중복되지 않은 데이터 리스트에 추가
  860. if(addChk) { resultList.push(result[i]); }
  861. }
  862. // 추가된 정보 그리드에 추가
  863. for(let i = 0 ; i < resultList.length ; i++) {
  864. gagaAgGrid.addRowData(gridOptionsFGExtmallList, resultList[i], "extmallId");
  865. }
  866. // 수정된 수량 갯수 수정
  867. $("#freeGoodsPromotionForm #extmallCnt").text(gagaAgGrid.getAllRowData(gridOptionsFGExtmallList).length);
  868. }
  869. // 제휴몰 선택 버튼 클릭시
  870. $('#freeGoodsPromotionForm #btnExtmallPopup').on('click', function() {
  871. cfnOpenExtmallListPopup("fnSetPopupExtmallInfo");
  872. });
  873. // 공급업체 설정 업체 추가 버튼 클릭시
  874. $('#freeGoodsPromotionForm #btnAddCompany').on('click', function() {
  875. cfnOpenCompanyListPopup("fnSetPopupComapnyInfo", "M");
  876. });
  877. // 브랜드 추가 버튼 클릭시 (복수 브랜드때 수정 필요)
  878. $('#freeGoodsPromotionForm #btnAddBrand').on('click', function() {
  879. cfnOpenBrandListPopup("fnSetPopupBrandInfo", "M");
  880. });
  881. // 적용 상품 추가 버튼 클릭시
  882. $('#freeGoodsPromotionForm #btnAddApplyGoods').on('click', function() {
  883. cfnOpenGoodsPopup("fnSetPopupApplyGoodsInfo");
  884. });
  885. // 제외 상품 추가 버튼 클릭시
  886. $('#freeGoodsPromotionForm #btnAddExceptGoods').on('click', function() {
  887. cfnOpenGoodsPopup("fnSetPopupExceptGoodsInfo");
  888. });
  889. // 사은품 조건1 상품 추가 버튼 클릭시
  890. $('#freeGoodsPromotionForm #btnAddFreeGoods1').on('click', function() {
  891. cfnOpenFreeGoodsPopup("fnSetPopupFreeGoods1Info");
  892. });
  893. // 사은품 조건2 상품 추가 버튼 클릭시
  894. $('#freeGoodsPromotionForm #btnAddFreeGoods2').on('click', function() {
  895. cfnOpenFreeGoodsPopup("fnSetPopupFreeGoods2Info");
  896. });
  897. // 공급업체 설정 선택삭제 버튼 클릭시
  898. $('#freeGoodsPromotionForm #btnDeleteCompany').on('click', function() {
  899. gridOptionsFGCompanyList.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsFGCompanyList)});
  900. });
  901. // 브랜드 설정 선택삭제 버튼 클릭시
  902. $('#freeGoodsPromotionForm #btnDeleteBrand').on('click', function() {
  903. gridOptionsFGBrandList.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsFGBrandList)});
  904. });
  905. // 적용상품 선택삭제 버튼 클릭시
  906. $('#freeGoodsPromotionForm #btnDeleteApplyGoods').on('click', function() {
  907. gridOptionsFGApplyGoodsList.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsFGApplyGoodsList)});
  908. });
  909. // 제외상품 선택삭제 버튼 클릭시
  910. $('#freeGoodsPromotionForm #btnDeleteExtGoods').on('click', function() {
  911. gridOptionsFGExceptGoodsList.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsFGExceptGoodsList)});
  912. });
  913. // 사은품조건1 선택삭제 버튼 클릭시
  914. $('#freeGoodsPromotionForm #btnDeleteFreeGoods1').on('click', function() {
  915. gridOptionsFreeGoods1List.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsFreeGoods1List)});
  916. });
  917. // 사은품조건2 선택삭제 버튼 클릭시
  918. $('#freeGoodsPromotionForm #btnDeleteFreeGoods2').on('click', function() {
  919. gridOptionsFreeGoods2List.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsFreeGoods2List)});
  920. });
  921. //패널영역 줄이기
  922. $(document).on("click",".panelControl .inner-fa-chevron-up", function() {
  923. $(this).parent().parent().parent().find(".inner-panelContent").slideUp(100);
  924. $(this).attr("class","fa inner-fa-chevron-down");
  925. });
  926. //패널영역 펼치기
  927. $(document).on("click",".panelControl .inner-fa-chevron-down", function() {
  928. $(this).parent().parent().parent().find(".inner-panelContent").slideDown(100);
  929. $(this).attr("class","fa inner-fa-chevron-up");
  930. });
  931. // 창 닫기
  932. var fnFreeGoodsPromotionFormClose = function(){
  933. uifnPopupClose('popupFreeGoodsPromotionRegi');
  934. }
  935. </script>
  936. <!-- 내부 영역 slide 버튼 모양 생성 -->
  937. <style>
  938. .inner-fa-chevron-up:before {content: "\f077";}
  939. .inner-fa-chevron-down:before {content: "\f078";}
  940. </style>
  941. </html>