SitePolicyForm.html 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560
  1. <!DOCTYPE html>
  2. <html lang="ko"
  3. xmlns:th="http://www.thymeleaf.org">
  4. <!--
  5. *******************************************************************************
  6. * @source : SitePolicyForm.html
  7. * @desc : 사이트정책관리 Page
  8. *============================================================================
  9. * SISUN
  10. * Copyright(C) 2019 TSIT, All rights reserved.
  11. *============================================================================
  12. * VER DATE AUTHOR DESCRIPTION
  13. * === =========== ========== =============================================
  14. * 1.0 2020.01.13 jaewonHo 최초 작성
  15. *******************************************************************************
  16. -->
  17. <head>
  18. <style>
  19. input[type="text"]{
  20. width:70%;
  21. }
  22. select{
  23. width:80.7%;
  24. }
  25. .frmStyle th {
  26. padding: 2px 15px;
  27. height: 36px;
  28. line-height: 24px;
  29. white-space: nowrap;
  30. text-align: center;
  31. background: #e9ecfb;
  32. line-height: normal;
  33. }
  34. </style>
  35. </head>
  36. <div id="main">
  37. <!-- 메인타이틀 영역 -->
  38. <div class="main-title">
  39. </div>
  40. <!-- //메인타이틀 영역 -->
  41. <!-- 검색조건 영역 -->
  42. <div class="panelStyle2">
  43. <!-- Search -->
  44. <form id="searchForm" name="searchForm" action="#" th:action="@{'/system/site/policy/list'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
  45. <table class="frmStyle">
  46. <colgroup>
  47. <col style="width:10%;"/>
  48. </colgroup>
  49. <tbody>
  50. <tr>
  51. <th>사이트</th>
  52. <td>
  53. <select name="siteCd" class="w150">
  54. <option th:if="${siteList}" th:each="oneData, status : ${siteList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  55. </select>
  56. </td>
  57. </tr>
  58. </tbody>
  59. </table>
  60. <div class="panelBtnB">
  61. <button type="button" class="btn btn-base btn-lg" id="btnSearch" onclick="fnSearch('#searchForm');">조회</button>
  62. </div>
  63. </form>
  64. </div>
  65. <!-- //검색조건 영역 -->
  66. <!-- 테이블 영역 -->
  67. <div class="panelStyle2">
  68. <form id="detailForm" name="detailForm" action="#" th:action="@{'/system/site/policy/save'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
  69. <table class="frmStyle">
  70. <colgroup>
  71. <col style="width:9.5%;"/>
  72. <col style="width:16.5%;"/>
  73. <col style="width:9.5%;"/>
  74. <col style="width:14.5%;"/>
  75. <col style="width:9.5%;"/>
  76. <col style="width:15.5%;"/>
  77. <col style="width:9.5%;"/>
  78. <col style="width:15.5%;"/>
  79. </colgroup>
  80. <tbody>
  81. <tr>
  82. <th>정책일련번호</th>
  83. <td colspan = "3">
  84. <input name="policySq" type="text" class="w100 aR" style="width:28% !important;" readonly/>
  85. <em><font color="red"><i class="fa fa-info-circle"></i>현재 적용되고 있는 사이트 정책입니다.</font></em>
  86. </td>
  87. <th>사이트<i class="star"></i></th>
  88. <td colspan = "3">
  89. <select name="siteCd" required="required" data-valid-name="사이트" class="w150">
  90. <option th:if="${siteList}" th:each="oneData, status : ${siteList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  91. </select>
  92. </td>
  93. </tr>
  94. <tr>
  95. <th rowspan="2">혜택구분<i class="star"></i></th>
  96. <td rowspan="2">
  97. <select name="benefitGb" onchange="fnBenefitGb(this.value)" data-valid-name="혜택구분" required>
  98. <option value='C'>[C] 쿠폰</option>
  99. <option value='P'>[P] 포인트</option>
  100. <option value='B'>[B] 쿠폰/포인트</option>
  101. </select>
  102. </td>
  103. <th>가입축하쿠폰</th>
  104. <td colspan="3">
  105. <input name="joinCpnNm" type="text" class="cpn" onkeyup="fnJoinCpnOnKeyUp(this);" style="width:150px;"/>
  106. <button type="button" class="btn icn cpn" id="joinCpnIdBtn" onclick="fnCouponSerch('J')"><i class="fa fa-search cpn" aria-hidden="true"></i></button>
  107. <input name="joinCpnId" type="text" style="width:80px;" readonly/>
  108. <button type="button" class="btn icn" onclick="$('input[name=joinCpnId],input[name=joinCpnNm]').val('')"><i class="fa fa-eraser"></i></button>
  109. </td>
  110. <th>가입축하포인트</th>
  111. <td>
  112. <input name="joinPnt" type="text" class="aR point" maxlength="5" />
  113. </td>
  114. </tr>
  115. <tr>
  116. <th>생일축하쿠폰</th>
  117. <td colspan="3">
  118. <input name="birthCpnNm" type="text" class="cpn" onkeyup="fnBirthCpnOnKeyUp(this);" style="width:150px;"/>
  119. <button type="button" class="btn icn cpn" id="birthCpnIdBtn" onclick="fnCouponSerch('B')"><i class="fa fa-search" aria-hidden="true"></i></button>
  120. <input name="birthCpnId" type="text" style="width:80px;" readonly/>
  121. <button type="button" class="btn icn" onclick="$('input[name=birthCpnId],input[name=birthCpnNm]').val('')"><i class="fa fa-eraser"></i></button>
  122. </td>
  123. <th>생일축하포인트</th>
  124. <td>
  125. <input name="birthPnt" type="text" class="aR point" maxlength="5" />
  126. </td>
  127. </tr>
  128. <tr>
  129. <th>가용포인트전환대기일수<i class="star"></i></th>
  130. <td>
  131. <input name="usablePntPendingDays" type="text" class="aR" maxlength="5" required="required" data-valid-name="가용포인트전환대기일수"/>일
  132. </td>
  133. <th>텍스트상품평포인트<i class="star"></i></th>
  134. <td>
  135. <input name="textReviewPnt" type="text" class="aR" maxlength="5" required="required" data-valid-name="텍스트상품평포인트"/>
  136. </td>
  137. <th>포토상품평포인트<i class="star"></i></th>
  138. <td>
  139. <input name="photoReviewPnt" type="text" class="aR" maxlength="5" required="required" data-valid-name="일반상품평포인트"/>
  140. </td>
  141. <th>앱최초설치포인트<i class="star"></i></th>
  142. <td>
  143. <input name="appFsetupPnt" type="text" class="aR" required="required" data-valid-name="앱최초설치포인트"/>
  144. </td>
  145. </tr>
  146. <tr>
  147. <th>자사상품포인트적립율(PC정상)<i class="star"></i></th>
  148. <td>
  149. <input name="sgoodsPntPrate10" type="text" class="aR" maxlength="5" required="required" data-valid-name="자사상품포인트적립율(PC정상)"/>%
  150. </td>
  151. <th>자사상품포인트적립율(모바일정상)<i class="star"></i></th>
  152. <td>
  153. <input name=sgoodsPntMrate10 type="text" class="aR" maxlength="5" required="required" data-valid-name="자사상품포인트적립율(모바일정상)"/>%
  154. </td>
  155. <th>자사상품포인트적립율(PC이월)<i class="star"></i></th>
  156. <td>
  157. <input name="sgoodsPntPrate20" type="text" class="aR" maxlength="5" required="required" data-valid-name="자사상품포인트적립율(PC이월)"/>%
  158. </td>
  159. <th>자사상품포인트적립율(모바일이월)<i class="star"></i></th>
  160. <td>
  161. <input name="sgoodsPntMrate20" type="text" class="aR" maxlength="5" required="required" data-valid-name="자사상품포인트적립율(모바일이월)"/>%
  162. </td>
  163. </tr>
  164. <tr>
  165. <th>입점상품포인트적립율(PC정상)<i class="star"></i></th>
  166. <td>
  167. <input name="egoodsPntPrate10" type="text" class="aR" maxlength="5" required="required" data-valid-name="입점상품포인트적립율(PC정상)"/>%
  168. </td>
  169. <th>입점상품포인트적립율(모바일정상)<i class="star"></i></th>
  170. <td>
  171. <input name="egoodsPntMrate10" type="text" class="aR" maxlength="5" required="required" data-valid-name="입점상품포인트적립율(모바일정상)"/>%
  172. </td>
  173. <th>입점상품포인트적립율(PC이월)<i class="star"></i></th>
  174. <td>
  175. <input name="egoodsPntPrate20" type="text" class="aR" maxlength="5" required="required" data-valid-name="입점상품포인트적립율(PC이월)"/>%
  176. </td>
  177. <th>입점상품포인트적립율(모바일이월)<i class="star"></i></th>
  178. <td>
  179. <input name="egoodsPntMrate20" type="text" class="aR" maxlength="5" required="required" data-valid-name="입점상품포인트적립율(모바일이월"/>%
  180. </td>
  181. </tr>
  182. <tr>
  183. <th>배송지연보상기준일수<i class="star"></i></th>
  184. <td>
  185. <input name="shipDelayBaseDays" type="text" class="aR" maxlength="5" required="required" data-valid-name="배송지연보상기준일수"/>일
  186. </td>
  187. <th>배송지연보상포인트<i class="star"></i></th>
  188. <td>
  189. <input name="shipDelayPnt" type="text" class="aR" maxlength="5" required="required" data-valid-name="배송지연보상포인트"/>
  190. </td>
  191. <th>품절보상기준일수<i class="star"></i></th>
  192. <td>
  193. <input name="soldoutBaseDays" type="text" class="aR" maxlength="5" required="required" data-valid-name="품절보상기준일수"/>일
  194. </td>
  195. <th>품절보상포인트<i class="star"></i></th>
  196. <td>
  197. <input name="soldoutPnt" type="text" class="aR" maxlength="5" required="required" data-valid-name="품정보상포인트"/>
  198. </td>
  199. </tr>
  200. <tr>
  201. <th>사용가능포인트구분<i class="star"></i></th>
  202. <td>
  203. <label class="rdoBox"><input type="radio" name="usePossibPntGb" value="A" checked="checked" onclick="fnUsePntGb('A');">정액<span></span></label>
  204. <label class="rdoBox"><input type="radio" name="usePossibPntGb" value="R" onclick="fnUsePntGb('R');">정율<span></span></label>
  205. </td>
  206. <th>사용가능최대포인트<i class="star"></i></th>
  207. <td>
  208. <input name="usePossibMaxPnt" type="text" class="aR" maxlength="5" required="required" data-valid-name="사용가능최대포인트"/>
  209. <span id="pntR">%</span>
  210. </td>
  211. <th>사용포인트단위<i class="star"></i></th>
  212. <td>
  213. <select name="usePntUnit" required="required" data-valid-name="사용포인트단위">
  214. <option value=''>선택</option>
  215. <option value='10'>원단위절사</option>
  216. <option value='100'>십원단위절사</option>
  217. <option value='1000'>백원단위절사</option>
  218. </select>
  219. </td>
  220. <th>무료배송비최소주문금액<i class="star"></i></th>
  221. <td>
  222. <input name="minOrdAmt" type="text" class="aR" maxlength="5" required="required" data-valid-name="사용가능최대포인트"/>
  223. </td>
  224. </tr>
  225. </tbody>
  226. </table>
  227. <div class="panelBtnB">
  228. <button type="button" class="btn btn-success btn-lg" id="btnSave" onclick="fnSave('#detailForm');">저장</button>
  229. </div>
  230. </form>
  231. </div>
  232. <!-- 리스트 영역 -->
  233. <div class="panelStyle2">
  234. <div class="panelContent" style="overflow: hidden;">
  235. <div id="gridList" style="width: 100%; height: 500px;" class="ag-theme-balham"></div>
  236. </div>
  237. </div>
  238. <!-- //리스트 영역 -->
  239. </div>
  240. <script th:inline="javascript">
  241. /*<![CDATA[*/
  242. var siteList = gagajf.convertToArray([[${siteList}]]);
  243. var benefitGbList = {"C":"쿠폰", "P":"포인트", "B":"쿠폰/포인트"};
  244. var usePntUnitList = {"10" :"10:원단위절사", "100" :"100:원단위절사", "1000" :"1000:원단위절사"};
  245. var usePossibPntGbList = {"A" : "정액", "R" : "정율"};
  246. // specify the columns
  247. var columnDefs = [
  248. {headerName: "정책일련번호" , field: "policySq" , width: 100 , cellClass: 'text-center', pinned: 'left' },
  249. {headerName: "사이트" , field: "siteCd" , width: 120 , cellClass: 'text-center', pinned: 'left' ,
  250. valueFormatter: function (params) {
  251. return gagaAgGrid.lookupValue(siteList, params.value);
  252. }
  253. },
  254. {headerName: "혜택구분" , field: "benefitGb" , width: 90 , cellClass: 'text-center', pinned: 'left',
  255. valueFormatter: function (params) {
  256. return gagaAgGrid.lookupValue(benefitGbList, params.value);
  257. }
  258. },
  259. {headerName: "가입축하쿠폰ID" , field: "joinCpnId" , width: 140 , cellClass: 'text-center', pinned: 'left' },
  260. {headerName: "가입축하포인트" , field: "joinPnt" , width: 120 , cellClass: 'text-center', pinned: 'left' },
  261. {headerName: "생일축하쿠폰ID" , field: "birthCpnId" , width: 140 , cellClass: 'text-center', pinned: 'left' },
  262. {headerName: "생일축하포인트" , field: "birthPnt" , width: 120 , cellClass: 'text-center', pinned: 'left' },
  263. {headerName: "가용포인트전환대기일수" , field: "usablePntPendingDays" , width: 150 , cellClass: 'text-center' },
  264. {headerName: "자사상품포인트적립율(PC정상)" , field: "sgoodsPntMrate10" , width: 150 , cellClass: 'text-center'
  265. ,valueFormatter: function(params) { return Number(params.value).addComma();}
  266. },
  267. {headerName: "자사상품포인트적립율(모바일정상)" , field: "sgoodsPntMrate10" , width: 150 , cellClass: 'text-center'
  268. ,valueFormatter: function(params) { return Number(params.value).addComma();}
  269. },
  270. {headerName: "자사상품포인트적립율(PC이월)" , field: "sgoodsPntPrate20" , width: 150 , cellClass: 'text-center'
  271. ,valueFormatter: function(params) { return Number(params.value).addComma();}
  272. },
  273. {headerName: "자사상품포인트적립율(모바일이월)" , field: "sgoodsPntMrate20" , width: 150 , cellClass: 'text-center'
  274. ,valueFormatter: function(params) { return Number(params.value).addComma();}
  275. },
  276. {headerName: "입점상품포인트적립율(PC정상)" , field: "egoodsPntPrate10" , width: 150 , cellClass: 'text-center'
  277. ,valueFormatter: function(params) { return Number(params.value).addComma();}
  278. },
  279. {headerName: "입점상품포인트적립율(모바일정상)" , field: "egoodsPntMrate10" , width: 150 , cellClass: 'text-center'
  280. ,valueFormatter: function(params) { return Number(params.value).addComma();}
  281. },
  282. {headerName: "입점상품포인트적립율(PC이월)" , field: "egoodsPntPrate20" , width: 150 , cellClass: 'text-center'
  283. ,valueFormatter: function(params) { return Number(params.value).addComma();}
  284. },
  285. {headerName: "입점상품포인트적립율(모바일이월)" , field: "egoodsPntMrate20" , width: 150 , cellClass: 'text-center'
  286. ,valueFormatter: function(params) { return Number(params.value).addComma();}
  287. },
  288. {headerName: "텍스트상품평포인트" , field: "textReviewPnt" , width: 150 , cellClass: 'text-center'
  289. ,valueFormatter: function(params) { return Number(params.value).addComma();}
  290. },
  291. {headerName: "포토상품평포인트" , field: "photoReviewPnt" , width: 150 , cellClass: 'text-center'
  292. ,valueFormatter: function(params) { return Number(params.value).addComma();}
  293. },
  294. {headerName: "최소주문금액" , field: "minOrdAmt" , width: 150 , cellClass: 'text-center'
  295. ,valueFormatter: function(params) { return Number(params.value).addComma();}
  296. },
  297. {headerName: "배송지연보상기준일수" , field: "shipDelayBaseDays" , width: 150 , cellClass: 'text-center' },
  298. {headerName: "배송지연보상포인트" , field: "shipDelayPnt" , width: 150 , cellClass: 'text-center'
  299. ,valueFormatter: function(params) { return Number(params.value).addComma();}
  300. },
  301. {headerName: "품절보상기준일수" , field: "soldoutBaseDays" , width: 150 , cellClass: 'text-center' },
  302. {headerName: "품절보상포인트" , field: "soldoutPnt" , width: 150 , cellClass: 'text-center'
  303. ,valueFormatter: function(params) { return Number(params.value).addComma();}
  304. },
  305. {headerName: "사용가능포인트구분" , field: "usePossibPntGb" , width: 140 , cellClass: 'text-center',
  306. valueFormatter: function (params) {
  307. return gagaAgGrid.lookupValue(usePossibPntGbList, params.value);
  308. }
  309. },
  310. {headerName: "사용가능최대포인트" , field: "usePossibMaxPnt" , width: 110 , cellClass: 'text-center'
  311. ,valueFormatter: function(params) { return Number(params.value).addComma();}
  312. },
  313. {headerName: "사용포인트단위" , field: "usePntUnit" , width: 140 , cellClass: 'text-center',
  314. valueFormatter: function (params) {
  315. return gagaAgGrid.lookupValue(usePntUnitList, params.value);
  316. }
  317. },
  318. {headerName: "등록아이디" , field: "regId" , width: 110 , cellClass: 'text-center' },
  319. {headerName: "등록일" , field: "regDt" , width: 110 , cellClass: 'text-center',
  320. cellRenderer: function(params) {
  321. return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDD").format("YYYY-MM-DD") : '';
  322. }
  323. }
  324. ];
  325. var gridOptionsPolicy = gagaAgGrid.getGridOptions(columnDefs);
  326. //조회
  327. var fnSearch = function() {
  328. $('#detailForm')[0].reset();
  329. var siteCd = $('#searchForm select[name=siteCd]').val();
  330. var actionUrl = $('#searchForm').prop('action') +'/'+siteCd;
  331. gagaAgGrid.fetch(actionUrl, gridOptionsPolicy, '#searchForm', fnSearchCallBack);
  332. }
  333. var fnSearchCallBack = function(){
  334. fnBindDetail(gridOptionsPolicy.api.getRowNode(0).data);
  335. //혜택구분 쿠폰/포인트 초기화
  336. fnBenefitGb(gridOptionsPolicy.api.getRowNode(0).data.benefitGb);
  337. }
  338. // 셀클릭시 바인딩
  339. gridOptionsPolicy.onCellClicked = function(event) {
  340. fnBindDetail(event.data);
  341. fnBenefitGb(event.data.fnBenefitGb);
  342. }
  343. //로우클릭시 셋팅
  344. fnBindDetail = function(rowData){
  345. formId = '#detailForm';
  346. $(formId + ' input[name=policySq]').val(rowData.policySq);
  347. $(formId + ' select[name=siteCd]').val(rowData.siteCd).prop("selected", true);
  348. $(formId + ' select[name=benefitGb]').val(rowData.benefitGb).prop("selected", true);
  349. $(formId + ' input[name=joinCpnId]').val(rowData.joinCpnId);
  350. $(formId + ' input[name=joinCpnNm]').val(rowData.joinCpnNm);
  351. $(formId + ' input[name=joinPnt]').val(rowData.joinPnt);
  352. $(formId + ' input[name=birthCpnId]').val(rowData.birthCpnId);
  353. $(formId + ' input[name=birthCpnNm]').val(rowData.birthCpnNm);
  354. $(formId + ' input[name=birthPnt]').val(rowData.birthPnt);
  355. $(formId + ' input[name=sgoodsPntPrate10]').val(rowData.sgoodsPntPrate10.addComma());
  356. $(formId + ' input[name=sgoodsPntMrate10]').val(rowData.sgoodsPntMrate10.addComma());
  357. $(formId + ' input[name=sgoodsPntPrate20]').val(rowData.sgoodsPntPrate20.addComma());
  358. $(formId + ' input[name=sgoodsPntMrate20]').val(rowData.sgoodsPntMrate20.addComma());
  359. $(formId + ' input[name=egoodsPntPrate10]').val(rowData.egoodsPntPrate10.addComma());
  360. $(formId + ' input[name=egoodsPntMrate10]').val(rowData.egoodsPntMrate10.addComma());
  361. $(formId + ' input[name=egoodsPntPrate20]').val(rowData.egoodsPntPrate20.addComma());
  362. $(formId + ' input[name=egoodsPntMrate20]').val(rowData.egoodsPntMrate20.addComma());
  363. $(formId + ' input[name=appFsetupPnt]').val(rowData.appFsetupPnt.addComma());
  364. $(formId + ' input[name=usablePntPendingDays]').val(rowData.usablePntPendingDays);
  365. $(formId + ' input[name=textReviewPnt]').val(rowData.textReviewPnt.addComma());
  366. $(formId + ' input[name=photoReviewPnt]').val(rowData.photoReviewPnt.addComma());
  367. $(formId + ' input[name=usePossibMaxPnt]').val(rowData.usePossibMaxPnt.addComma());
  368. $(formId + ' input[name=minOrdAmt]').val(rowData.minOrdAmt.addComma());
  369. $(formId + ' input[name=shipDelayBaseDays]').val(rowData.shipDelayBaseDays);
  370. $(formId + ' input[name=shipDelayPnt]').val(rowData.shipDelayPnt.addComma());
  371. $(formId + ' input[name=soldoutBaseDays]').val(rowData.soldoutBaseDays);
  372. $(formId + ' input[name=soldoutPnt]').val(rowData.soldoutPnt.addComma());
  373. $(formId + ' select[name=usePntUnit]').val(rowData.usePntUnit).prop("selected", true);
  374. $(formId + " input:radio[name=usePossibPntGb]:input[value="+rowData.usePossibPntGb+"]").click();
  375. }
  376. // 사용가능포인트 구분시 사용가능최대포인트 %
  377. var fnUsePntGb = function(pntGb) {
  378. if(pntGb == "A") {
  379. $("#pntR").html("원");
  380. }else if(pntGb == "R") {
  381. $("#pntR").html("%");
  382. }
  383. }
  384. // 혜택구분(C:쿠폰, P:포인트, B:둘다) 선택시 이벤트
  385. var fnBenefitGb = function(pVal) {
  386. // 가입축하쿠폰ID(혜택구분이 "C:쿠폰" 또는 "B:둘다"일 때 사용)
  387. if(pVal == "C") {
  388. $(".cpn").each(function(){
  389. $(this).attr("disabled", false);
  390. });
  391. $(".point").each(function(){
  392. $(this).attr("disabled", true);
  393. });
  394. }else if(pVal == "P"){
  395. $(".cpn").each(function(){
  396. $(this).attr("disabled", true);
  397. });
  398. $(".point").each(function(){
  399. $(this).attr("disabled", false);
  400. });
  401. }else if(pVal == "B"){
  402. $(".cpn").each(function(){
  403. $(this).attr("disabled", false);
  404. });
  405. $(".point").each(function(){
  406. $(this).attr("disabled", false);
  407. });
  408. }
  409. }
  410. // 쿠폰가지고 오기
  411. var fnCouponSerch = function(type) {
  412. var actionUrl = "/marketing/policy/coupon/popup/form?callBackFun=fnResult&type="+type;
  413. cfnOpenModalPopup(actionUrl,'popupCoupon');
  414. }
  415. // 가지고온 쿠폰값 셋팅
  416. var fnResult = function(result) {
  417. if(result[0].type == 'J'){
  418. $('#detailForm input[name=joinCpnId]').val(result[0].cpnId);
  419. }else if(result[0].type == 'B'){
  420. $('#detailForm input[name=birthCpnId]').val(result[0].cpnId);
  421. }
  422. }
  423. //저장
  424. fnSave = function(){
  425. var formId = '#detailForm';
  426. // 입력 값 체크
  427. if (!gagajf.validation(formId))
  428. return false;
  429. var siteCd = $(formId + " select[name=siteCd]").val(); //사이트
  430. var joinCpnId = $(formId + " input[name=joinCpnId]").val(); //가입쿠폰ID
  431. var birthCpnId = $(formId + " input[name=birthCpnId]").val(); //생일쿠폰ID
  432. var joinPnt = $(formId + " input[name=joinPnt]").val().removeComma(); //가입포인트
  433. var birthPnt = $(formId + " input[name=birthPnt]").val().removeComma(); //생일포인트
  434. var benefitGb = $(formId + " select[name=benefitGb]").val(); //해택구분
  435. var appFsetupPnt = $(formId + " input[name=appFsetupPnt]").val().removeComma(); //앱최초설치포인트
  436. var sgoodsPntMrate10 = $(formId + " input[name=sgoodsPntMrate10]").val().removeComma(); //자사상품포인트적립율(PC정상)
  437. var sgoodsPntMrate20 = $(formId + " input[name=sgoodsPntMrate20]").val().removeComma(); //자사상품포인트적립율(모바일정상)
  438. var sgoodsPntPrate10 = $(formId + " input[name=sgoodsPntPrate10]").val().removeComma(); //자사상품포인트적립율(PC이월)
  439. var sgoodsPntPrate20 = $(formId + " input[name=sgoodsPntPrate20]").val().removeComma(); //자사상품포인트적립율(모바일이월)
  440. var egoodsPntMrate10 = $(formId + " input[name=egoodsPntMrate10]").val().removeComma(); //입점상품포인트적립율(PC정상)
  441. var egoodsPntMrate20 = $(formId + " input[name=egoodsPntMrate20]").val().removeComma(); //입점상품포인트적립율(모바일정상)
  442. var egoodsPntPrate10 = $(formId + " input[name=egoodsPntPrate10]").val().removeComma(); //입점상품포인트적립율(PC이월)
  443. var egoodsPntPrate20 = $(formId + " input[name=egoodsPntPrate20]").val().removeComma(); //입점상품포인트적립율(모바일이월)
  444. var usablePntPendingDays = $(formId + " input[name=usablePntPendingDays]").val().removeComma(); //가용포인트전환대기일수
  445. var textReviewPnt = $(formId + " input[name=textReviewPnt]").val().removeComma(); //텍스트상품평포인트
  446. var photoReviewPnt = $(formId + " input[name=photoReviewPnt]").val().removeComma(); //포토상품평포인트
  447. var usePossibMaxPnt = $(formId + " input[name=usePossibMaxPnt]").val().removeComma(); //사용가능최대포인트
  448. var minOrdAmt = $(formId + " input[name=minOrdAmt]").val().removeComma(); //무료배송비최소주문금액
  449. var shipDelayBaseDays = $(formId + " input[name=shipDelayBaseDays]").val(); //배송지연보상기준일수
  450. var shipDelayPnt = $(formId + " input[name=shipDelayPnt]").val().removeComma(); //배송지연보상포인트
  451. var soldoutBaseDays = $(formId + " input[name=soldoutBaseDays]").val(); //품절보상기준일수
  452. var soldoutPnt = $(formId + " input[name=soldoutPnt]").val().removeComma(); //품절보상포인트
  453. var usePntUnit = $(formId + " select[name=usePntUnit]").val(); //사용포인트단위
  454. var usePossibPntGb = $(formId + " input:radio[name=usePossibPntGb]:checked").val(); //사용가능포인트구분
  455. mcxDialog.confirm("저장하시겠습니까?", {
  456. cancelBtnText: "취소",
  457. sureBtnText: "확인",
  458. sureBtnClick: function() {
  459. var data = {
  460. formId : formId
  461. ,siteCd : siteCd
  462. ,joinCpnId : joinCpnId
  463. ,birthCpnId : birthCpnId
  464. ,joinPnt : joinPnt
  465. ,birthPnt : birthPnt
  466. ,benefitGb : benefitGb
  467. ,appFsetupPnt : appFsetupPnt
  468. ,sgoodsPntMrate10 : sgoodsPntMrate10
  469. ,sgoodsPntMrate20 : sgoodsPntMrate20
  470. ,sgoodsPntPrate10 : sgoodsPntPrate10
  471. ,sgoodsPntPrate20 : sgoodsPntPrate20
  472. ,egoodsPntMrate10 : egoodsPntMrate10
  473. ,egoodsPntMrate20 : egoodsPntMrate20
  474. ,egoodsPntPrate10 : egoodsPntPrate10
  475. ,egoodsPntPrate20 : egoodsPntPrate20
  476. ,usablePntPendingDays : usablePntPendingDays
  477. ,textReviewPnt : textReviewPnt
  478. ,photoReviewPnt : photoReviewPnt
  479. ,usePossibMaxPnt : usePossibMaxPnt
  480. ,minOrdAmt : minOrdAmt
  481. ,shipDelayBaseDays : shipDelayBaseDays
  482. ,shipDelayPnt : shipDelayPnt
  483. ,soldoutBaseDays : soldoutBaseDays
  484. ,soldoutPnt : soldoutPnt
  485. ,usePntUnit : usePntUnit
  486. ,usePossibPntGb : usePossibPntGb
  487. };
  488. var jsonData = JSON.stringify(data);
  489. gagajf.ajaxJsonSubmit($(formId).prop('action'), jsonData, fnSaveCallback);
  490. }
  491. });
  492. }
  493. var fnSaveCallback = function () {
  494. fnSearch();
  495. $("#detailForm")[0].reset();
  496. }
  497. $(document).ready(function() {
  498. gagaAgGrid.createGrid('gridList', gridOptionsPolicy);
  499. //혜택구분 쿠폰/포인트 초기화
  500. fnBenefitGb('B');
  501. $(":input[name=benefitGb]").change();
  502. fnSearch();
  503. });
  504. /*가입축하쿠폰 온키업 이벤트*/
  505. var fnJoinCpnOnKeyUp = function(pThis){
  506. if(window.event.keyCode == 13){
  507. var actionUrl = "/marketing/policy/coupon/popup/form?callBackFunc=fnJoinCallBack&cpnNm="+$(pThis).val();
  508. cfnOpenModalPopup(actionUrl,'popupCoupon');
  509. }
  510. }
  511. var fnJoinCallBack = function(params){
  512. $("input[name=joinCpnId]").val(params[0].cpnId);
  513. $("input[name=joinCpnNm]").val(params[0].cpnNm);
  514. }
  515. //생일축하쿠폰 온키업 이벤트
  516. var fnBirthCpnOnKeyUp = function(pThis){
  517. if(window.event.keyCode == 13){
  518. var actionUrl = "/marketing/policy/coupon/popup/form?callBackFunc=fnBirthCallBack&cpnNm="+$(pThis).val();
  519. cfnOpenModalPopup(actionUrl,'popupCoupon');
  520. }
  521. }
  522. var fnBirthCallBack = function(params){
  523. $("input[name=birthCpnId]").val(params[0].cpnId);
  524. $("input[name=birthCpnNm]").val(params[0].cpnNm);
  525. }
  526. /*]]>*/
  527. </script>
  528. </html>