SupplyCompanyForm.html 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668
  1. <!DOCTYPE html>
  2. <html lang="ko"
  3. xmlns:th="http://www.thymeleaf.org">
  4. <!--
  5. *******************************************************************************
  6. * @source : SupplyCompanyForm.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.14 gagamel 최초 작성
  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. <!-- //메뉴 설명 -->
  26. <!-- 검색조건 영역 -->
  27. <div class="panelStyle">
  28. <form id="searchForm" name="searchForm" action="#" th:action="@{'/business/supply/company/list'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
  29. <table class="frmStyle" aria-describedby="검색조건">
  30. <colgroup>
  31. <col style="width:10%;"/>
  32. <col style="width:30%;"/>
  33. <col style="width:10%;"/>
  34. <col style="width:20%;"/>
  35. <col style="width:10%;"/>
  36. <col/>
  37. </colgroup>
  38. <tr>
  39. <th>검색어</th>
  40. <td>
  41. <select name="searchGb">
  42. <option value="NAME">업체명</option>
  43. <option value="OWNER">대표자명</option>
  44. </select>
  45. <input type="text" name="searchTxt" class="w300" maxlength="20"/>
  46. </td>
  47. <th>입점상태</th>
  48. <td>
  49. <select name="supplyStat">
  50. <option value="">[전체]</option>
  51. <option th:if="${supplyStatList}" th:each="oneData, status : ${supplyStatList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  52. </select>
  53. </td>
  54. <th>전자계약여부</th>
  55. <td>
  56. <select name="econtractYn">
  57. <option value="">[전체]</option>
  58. <option value="Y">[Y] Yes</option>
  59. <option value="N">[N] No</option>
  60. </select>
  61. </td>
  62. </tr>
  63. </table>
  64. <ul class="panelBar">
  65. <li class="center">
  66. <button type="button" class="btn btn-base btn-lg" id="btnSearch">조회</button>
  67. <button type="button" class="btn btn-gray btn-lg" onclick="$('#searchForm')[0].reset();">초기화</button>
  68. </li>
  69. </ul>
  70. </form>
  71. </div>
  72. <!-- 검색조건 영역 -->
  73. <!-- 리스트 영역 -->
  74. <div class="panelStyle">
  75. <!-- 버튼 배치 영역 -->
  76. <ul class="panelBar">
  77. <li class="right">
  78. <button type="button" class="btn btn-default btn-lg" id="btnExcel">엑셀다운로드</button>
  79. </li>
  80. </ul>
  81. <!-- //버튼 배치 영역 -->
  82. <div id="gridList" style="width: 100%; height: 470px" class="ag-theme-balham"></div>
  83. </div>
  84. <!-- //리스트 영역 -->
  85. <!-- 등록/수정 -->
  86. <div class="panelStyle">
  87. <form id="detailForm" name="detailForm" action="#" th:action="@{'/business/supply/company/save'}">
  88. <h4>기본정보</h4>
  89. <table class="frmStyle" aria-describedby="등록/수정 폼">
  90. <colgroup>
  91. <col style="width:10%;"/>
  92. <col style="width:15%;"/>
  93. <col style="width:10%;"/>
  94. <col style="width:15%;"/>
  95. <col style="width:10%;"/>
  96. <col style="width:15%;"/>
  97. <col style="width:10%;"/>
  98. <col style="width:15%;"/>
  99. </colgroup>
  100. <tr>
  101. <th>업체코드</th>
  102. <td>
  103. <input type="text" class="w150" name="supplyCompCd" placeholder="자동생성" maxlength="5" data-valid-name="업체코드" readonly="readonly"/>
  104. </td>
  105. <th>업체명<i class="required" title="필수"></i></th>
  106. <td>
  107. <input type="text" name="supplyCompNm" maxlength="100" required="required" data-valid-name="업체명"/>
  108. </td>
  109. <th>사업자구분<i class="required" title="필수"></i></th>
  110. <td>
  111. <label class="rdoBtn"><input type="radio" name="bizGb" value="C" checked="checked"/>법인<span></span></label>
  112. <label class="rdoBtn"><input type="radio" name="bizGb" value="P"/>개인<span></span></label>
  113. </td>
  114. <th>사업자등록번호<i class="required" title="필수"></i></th>
  115. <td>
  116. <input type="text" class="w150" name="bizNo" maxlength="20" required="required" data-valid-name="사업자등록번호"/>
  117. <button type="button" class="btn btn-info btn-sm" onclick="fnCertifyBizNo();">인증</button>
  118. </td>
  119. </tr>
  120. <tr>
  121. <th>업종<i class="required" title="필수"></i></th>
  122. <td>
  123. <input type="text" name="bizKind" maxlength="100" required="required" data-valid-name="업종"/>
  124. </td>
  125. <th>업태<i class="required" title="필수"></i></th>
  126. <td>
  127. <input type="text" name="bizType" maxlength="100" required="required" data-valid-name="업태"/>
  128. </td>
  129. <th>입점상태<i class="required" title="필수"></i></th>
  130. <td>
  131. <select name="supplyStat" id="supplyStat" required="required" data-valid-name="입점상태">
  132. <option value="">[선택]</option>
  133. <option th:if="${supplyStatList}" th:each="oneData, status : ${supplyStatList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  134. </select>
  135. </td>
  136. <th>대표자명<i class="required" title="필수"></i></th>
  137. <td>
  138. <input type="text" name="ownerNm" maxlength="50" required="required" data-valid-name="대표자명"/>
  139. </td>
  140. </tr>
  141. <tr>
  142. <th rowspan="2">사업장주소<i class="required" title="필수"></i></th>
  143. <td colspan="3" rowspan="2">
  144. <input type="text" name="bizZipcode" class="w100" data-valid-name="우편번호" readonly="readonly"/>
  145. <button type="button" class="btn btn-info btn-sm" onclick="fnOpenDaumAddr();">우편번호찾기</button>
  146. <input type="text" name="bizBaseAddr" class="w300" maxlength="200" required="required" data-valid-name="사업장주소" readonly="readonly"/><br>
  147. <input type="text" name="bizDtlAddr" class="w300" maxlength="200"/>
  148. </td>
  149. <th>홈페이지URL</th>
  150. <td colspan="3">
  151. <input type="text" name="homepageUrl" data-valid-name="홈페이지URL"/>
  152. </td>
  153. </tr>
  154. <tr>
  155. <th>대표전화<i class="required" title="필수"></i></th>
  156. <td>
  157. <input type="text" name="mainTelno" placeholder="02-0000-0000" maxlength="20" required="required" data-valid-name="대표전화"/>
  158. </td>
  159. <th>대표팩스번호</th>
  160. <td>
  161. <input type="text" name="mainFaxno" placeholder="02-0000-0000" maxlength="20" data-valid-name="대표팩스번호"/>
  162. </td>
  163. </tr>
  164. <tr>
  165. <th>유통구분<i class="required" title="필수"></i></th>
  166. <td>
  167. <select name="distributionGb" required="required" data-valid-name="유통구분">
  168. <option value="">[선택]</option>
  169. <option th:if="${distributionGbList}" th:each="oneData, status : ${distributionGbList}" th:value="${oneData.cd}" th:text="${oneData.cdNm}"></option>
  170. </select>
  171. </td>
  172. <th>판매수수료율<i class="required" title="필수"></i></th>
  173. <td>
  174. <input type="text" name="sellFeeRate" class="w100 aR" placeholder="0.0" maxlength="5" required="required" data-valid-type="real" data-valid-name="판매수수료율"/>%
  175. </td>
  176. <th>사용여부<i class="required" title="필수"></i></th>
  177. <td>
  178. <label class="rdoBtn"><input type="radio" name="useYn" value="Y" checked="checked"/>Yes<span></span></label>
  179. <label class="rdoBtn"><input type="radio" name="useYn" value="N"/>No<span></span></label>
  180. </td>
  181. <th>총알배송여부<i class="required" title="필수"></i></th>
  182. <td>
  183. <label class="rdoBtn"><input type="radio" name="shotDelvYn" value="Y"/>Yes<span></span></label>
  184. <label class="rdoBtn"><input type="radio" name="shotDelvYn" value="N" checked="checked"/>No<span></span></label>
  185. </td>
  186. </tr>
  187. <tr>
  188. <th>CS담당자</th>
  189. <td>
  190. <input type="text" name="csChargeNm" class="w100 aR" maxlength="50"/>
  191. </td>
  192. <th>CS담당자 연락처</th>
  193. <td>
  194. <input type="text" name="csChargeTelno" placeholder="02-0000-0000" maxlength="20"/>
  195. </td>
  196. <th>정산담당자</th>
  197. <td>
  198. <input type="text" name="settleChargeNm" class="w100 aR" maxlength="50"/>
  199. </td>
  200. <th>정산담당자 연락처</th>
  201. <td>
  202. <input type="text" name="settleChargeTelno" placeholder="02-0000-0000" maxlength="20"/>
  203. </td>
  204. </tr>
  205. <tr>
  206. <th>정산담당자 이메일</th>
  207. <td>
  208. <input type="text" name="settleChargeEmail" maxlength="100" data-valid-type="email"/>
  209. </td>
  210. <th>계산서 이메일</th>
  211. <td>
  212. <input type="text" name="billEmail" maxlength="100" data-valid-type="email"/>
  213. </td>
  214. <th>전자계약여부<i class="required" title="필수"></i></th>
  215. <td>
  216. <label class="rdoBtn"><input type="radio" name="econtractYn" value="Y" checked="checked"/>Yes<span></span></label>
  217. <label class="rdoBtn"><input type="radio" name="econtractYn" value="N"/>No<span></span></label>
  218. </td>
  219. <th>정산주기<i class="required" title="필수"></i></th>
  220. <td>
  221. <select name="settleDay" required="required" data-valid-name="정산주기">
  222. <option value="">[선택]</option>
  223. <option th:if="${settleDayList}" th:each="oneData, status : ${settleDayList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  224. </select>
  225. </td>
  226. </tr>
  227. <tr>
  228. <th>거래은행</th>
  229. <td>
  230. <select name="bankCd">
  231. <option value="">[선택]</option>
  232. <option th:if="${bankList}" th:each="oneData, status : ${bankList}" th:value="${oneData.cd}" th:text="${oneData.cdNm}"></option>
  233. </select>
  234. </td>
  235. <th>계좌번호</th>
  236. <td>
  237. <input type="text" name="accountNo" maxlength="20"/>
  238. </td>
  239. <th>예금주명</th>
  240. <td colspan="3">
  241. <input type="text" class="w100" name="depositorNm" maxlength="50"/>
  242. </td>
  243. </tr>
  244. <tr>
  245. <th>비고</th>
  246. <td colspan="7">
  247. <textarea name="remarks" class="textareaR2" data-valid-name="비고" ></textarea>
  248. </td>
  249. </tr>
  250. </table>
  251. </form>
  252. <!-- 버튼 배치 영역 -->
  253. <ul class="panelBar">
  254. <li class="right">
  255. <button type="button" class="btn btn-info btn-lg" id="btnNew">신규</button>
  256. <button type="button" class="btn btn-success btn-lg" id="btnSave">기본정보 저장</button>
  257. </li>
  258. </ul>
  259. <!-- //버튼 배치 영역 -->
  260. <form id="delvFeePolicyForm" name="delvFeePolicyForm" action="#" th:action="@{'/business/delivery/fee/policy/list/save'}">
  261. <input type="hidden" name="delvFeeCd"/>
  262. <input type="hidden" name="supplyCompCd"/>
  263. <input type="hidden" name="delvFeeCrite"/>
  264. <input type="hidden" name="minOrdAmt"/>
  265. <input type="hidden" name="delvFee"/>
  266. <input type="hidden" name="rtnDelvFee"/>
  267. <input type="hidden" name="useYn"/>
  268. <h4 class="delvFeePolicy" style="display: none;">배송비 정책<button type="button" class="btn btn-info btn-ssm marL10" id="btnAddDelvFeePolicy"><i class="fa fa-plus" aria-hidden="true"></i></button></h4>
  269. <table class="frmStyle delvFeePolicy" style="display: none;" aria-describedby="배송비 정책 등록/수정 폼">
  270. <colgroup>
  271. <col style="width:10%;"/>
  272. <col style="width:25%;"/>
  273. <col style="width:25%;"/>
  274. <col style="width:15%;"/>
  275. <col style="width:15%;"/>
  276. <col style="width:10%;"/>
  277. </colgroup>
  278. <thead>
  279. <tr>
  280. <th>정책코드</th>
  281. <th>배송비부과기준</th>
  282. <th>무료배송비기준금액</th>
  283. <th>배송비</th>
  284. <th>반품배송비</th>
  285. <th>사용여부</th>
  286. </tr>
  287. </thead>
  288. <tbody id="tbodyDelvFeePolicy">
  289. </tbody>
  290. </table>
  291. </form>
  292. <!-- 버튼 배치 영역 -->
  293. <ul class="panelBar delvFeePolicy" style="display: none;">
  294. <li class="right">
  295. <button type="button" class="btn btn-success btn-lg" id="btnSaveDelvFeePolicy">배송비 정책 저장</button>
  296. </li>
  297. </ul>
  298. <!-- //버튼 배치 영역 -->
  299. </div>
  300. <!-- 등록/수정 -->
  301. </div>
  302. <script th:inline="javascript">
  303. /*<![CDATA[*/
  304. let supplyStatList = gagajf.convertToArray([[${supplyStatList}]]);
  305. let distributionGbList = gagajf.convertToArray([[${distributionGbList}]]);
  306. let bankList = gagajf.convertToArray([[${bankList}]]);
  307. let columnDefs = [
  308. { headerName: "업체코드", field: "supplyCompCd", width: 100, cellClass: 'text-center' },
  309. {
  310. headerName: "업체명", field: "supplyCompNm", width: 150, cellClass: 'text-center',
  311. cellRenderer: function(params) {
  312. return '<a href="javascript:void(0);">' + params.value + '</a>';
  313. }
  314. },
  315. {
  316. headerName: "사업자구분", field: "bizGb", width: 100, cellClass: 'text-center',
  317. valueGetter: function (params) { return params.data.bizGb == 'C' ? '법인' : '개인'; }
  318. },
  319. { headerName: "사업자등록번호", field: "bizNo", width: 120, cellClass: 'text-center' },
  320. {
  321. headerName: "전자계약여부", field: "econtractYn", width: 100, cellClass: 'text-center',
  322. valueGetter: function (params) { return params.data.econtractYn == 'Y' ? 'Yes' : 'No'; }
  323. },
  324. { headerName: "업종", field: "bizKind", width: 150, cellClass: 'text-center' },
  325. { headerName: "업태", field: "bizType", width: 150, cellClass: 'text-center' },
  326. {
  327. headerName: "총알배송여부", field: "shotDelvYn", width: 100, cellClass: 'text-center',
  328. valueGetter: function (params) { return params.data.shotDelvYn == 'Y' ? 'Yes' : 'No'; }
  329. },
  330. {
  331. headerName: "입점상태", field: "supplyStat", width: 100, cellClass: 'text-center',
  332. valueGetter: function (params) {
  333. return gagaAgGrid.lookupValue(supplyStatList, params.data.supplyStat);
  334. }
  335. },
  336. { headerName: "대표자명", field: "ownerNm", width: 100, cellClass: 'text-center' },
  337. { headerName: "우편번호", field: "bizZipcode", width: 80, cellClass: 'text-center' },
  338. { headerName: "기본주소", field: "bizBaseAddr", width: 250 },
  339. { headerName: "상세주소", field: "bizDtlAddr", width: 150 },
  340. { headerName: "대표전화번호", field: "mainTelno", width: 120, cellClass: 'text-center' },
  341. { headerName: "대표팩스번호", field: "mainFaxno", width: 120, cellClass: 'text-center' },
  342. { headerName: "홈페이지URL", field: "homepageUrl", width: 200 },
  343. {
  344. headerName: "유통구분", field: "distributionGb", width: 100, cellClass: 'text-center',
  345. valueGetter: function (params) {
  346. return gagaAgGrid.lookupValue(distributionGbList, params.data.distributionGb);
  347. }
  348. },
  349. // {
  350. // headerName: "무료배송비최소주문금액", field: "minOrdAmt", width: 150, cellClass: 'text-center',
  351. // valueGetter: function(params) {
  352. // return Number(params.data.minOrdAmt).addComma();
  353. // }
  354. // },
  355. // {
  356. // headerName: "배송비", field: "delvFee", width: 100, cellClass: 'text-center',
  357. // valueGetter: function(params) {
  358. // return Number(params.data.delvFee).addComma();
  359. // }
  360. // },
  361. {
  362. headerName: "판매수수료율", field: "sellFeeRate", width: 120, cellClass: 'text-center',
  363. valueGetter: function(params) {
  364. return params.data.sellFeeRate + '%';
  365. }
  366. },
  367. { headerName: "CS담당자", field: "csChargeNm", width: 100, cellClass: 'text-center', hide: true },
  368. { headerName: "CS담당자연락처", field: "csChargeTelno", width: 100, cellClass: 'text-center', hide: true },
  369. { headerName: "정산담당자", field: "settleChargeNm", width: 100, cellClass: 'text-center', hide: true },
  370. { headerName: "정산담당자연락처", field: "settleChargeTelno", width: 100, cellClass: 'text-center', hide: true },
  371. { headerName: "정산담당자이메일", field: "settleChargeEmail", width: 100, cellClass: 'text-center', hide: true },
  372. { headerName: "계산서이메일", field: "billEmail", width: 100, cellClass: 'text-center', hide: true },
  373. { headerName: "정산주기", field: "settleDay", width: 100, cellClass: 'text-center', hide: true },
  374. {
  375. headerName: "은행명", field: "bankCd", width: 150, cellClass: 'text-center', hide: true,
  376. valueGetter: function (params) {
  377. return gagaAgGrid.lookupValue(bankList, params.data.bankCd);
  378. }
  379. },
  380. { headerName: "계좌번호", field: "accountNo", width: 150, cellClass: 'text-center', hide: true },
  381. { headerName: "예금주명", field: "depositorNm", width: 100, cellClass: 'text-center', hide: true },
  382. {
  383. headerName: "사용여부", field: "useYn", width: 100, cellClass: 'text-center',
  384. valueGetter: function (params) { return params.data.useYn == 'Y' ? 'Yes' : 'No'; }
  385. },
  386. { headerName: "비고", field: "remarks", width: 150, hide: true }
  387. ];
  388. let gridOptions = gagaAgGrid.getGridOptions(columnDefs);
  389. // Cell click
  390. gridOptions.onCellClicked = function(event) {
  391. if (event.colDef.field != 'supplyCompNm')
  392. return;
  393. $('#detailForm input[name=supplyCompCd]').val(event.data.supplyCompCd);
  394. $('#detailForm input[name=supplyCompNm]').val(event.data.supplyCompNm);
  395. $('#detailForm select[name=supplyStat]').val(event.data.supplyStat);
  396. $('#detailForm input[name=ownerNm]').val(event.data.ownerNm);
  397. if (event.data.bizGb == 'C') {
  398. $('#detailForm input:radio[name=bizGb]').eq(0).trigger('click');
  399. } else {
  400. $('#detailForm input:radio[name=bizGb]').eq(1).trigger('click');
  401. }
  402. $('#detailForm input[name=bizNo] ').val(event.data.bizNo);
  403. $('#detailForm input[name=bizKind]').val(event.data.bizKind);
  404. $('#detailForm input[name=bizType]').val(event.data.bizType);
  405. $('#detailForm input[name=bizZipcode]').val(event.data.bizZipcode);
  406. $('#detailForm input[name=bizBaseAddr]').val(event.data.bizBaseAddr);
  407. $('#detailForm input[name=bizDtlAddr]').val(event.data.bizDtlAddr);
  408. $('#detailForm input[name=homepageUrl]').val(event.data.homepageUrl);
  409. $('#detailForm select[name=distributionGb]').val(event.data.distributionGb);
  410. $('#detailForm input[name=mainTelno]').val(event.data.mainTelno);
  411. $('#detailForm input[name=mainFaxno]').val(event.data.mainFaxno);
  412. $('#detailForm input[name=sellFeeRate]').val(event.data.sellFeeRate);
  413. $('#detailForm input[name=csChargeNm]').val(event.data.csChargeNm);
  414. $('#detailForm input[name=csChargeTelno]').val(event.data.csChargeTelno);
  415. $('#detailForm input[name=settleChargeNm]').val(event.data.settleChargeNm);
  416. $('#detailForm input[name=settleChargeTelno]').val(event.data.settleChargeTelno);
  417. $('#detailForm input[name=settleChargeEmail]').val(event.data.settleChargeEmail);
  418. $('#detailForm input[name=billEmail]').val(event.data.billEmail);
  419. if (event.data.econtractYn == 'Y') {
  420. $('#detailForm input:radio[name=econtractYn]').eq(0).trigger('click');
  421. } else {
  422. $('#detailForm input:radio[name=econtractYn]').eq(1).trigger('click');
  423. }
  424. $('#detailForm input[name=settleDay]').val(event.data.settleDay);
  425. // $('#detailForm input[name=minOrdAmt]').val(Number(event.data.minOrdAmt).addComma());
  426. // $('#detailForm input[name=delvFee]').val(Number(event.data.delvFee).addComma());
  427. $('#detailForm select[name=bankCd]').val(event.data.bankCd);
  428. $('#detailForm input[name=accountNo]').val(event.data.accountNo);
  429. $('#detailForm input[name=depositorNm]').val(event.data.depositorNm);
  430. $('#detailForm textarea[name=remarks]').val(event.data.remarks);
  431. if (event.data.useYn == 'Y') {
  432. $('#detailForm input:radio[name=useYn]').eq(0).trigger('click');
  433. } else {
  434. $('#detailForm input:radio[name=useYn]').eq(1).trigger('click');
  435. }
  436. if (event.data.shotDelvYn == 'Y') {
  437. $('#detailForm input:radio[name=shotDelvYn]').eq(0).trigger('click');
  438. } else {
  439. $('#detailForm input:radio[name=shotDelvYn]').eq(1).trigger('click');
  440. }
  441. // 배송비 정책 조회
  442. fnGetDeliveryFeePolicy(event.data.supplyCompCd);
  443. }
  444. // 검색
  445. $('#btnSearch').on('click', function() {
  446. gagaAgGrid.fetch($('#searchForm').prop('action'), gridOptions, '#searchForm');
  447. });
  448. // 신규버튼
  449. $('#btnNew').on('click', function() {
  450. $("#detailForm")[0].reset();
  451. // 배송비 정책 초기화
  452. $('#tbodyDelvFeePolicy').html('');
  453. $('.delvFeePolicy').hide();
  454. });
  455. // 기본정보 저장
  456. $("#btnSave").on("click", function() {
  457. // 필수값 체크
  458. if (!gagajf.validation('#detailForm'))
  459. return false;
  460. mcxDialog.confirm("기본정보를 저장하시겠습니까?", {
  461. cancelBtnText: "취소",
  462. sureBtnText: "확인",
  463. sureBtnClick: function() {
  464. gagajf.ajaxFormSubmit($('#detailForm').prop('action'), '#detailForm', function() {
  465. $('#btnNew').trigger('click');
  466. $('#btnSearch').trigger('click');
  467. });
  468. }
  469. });
  470. });
  471. // 엑셀다운로드
  472. $('#btnExcel').on('click', function() {
  473. gagaAgGrid.exportToExcel('공급업체 목록', gridOptions);
  474. });
  475. // 배송비 정책 추가
  476. $('#btnAddDelvFeePolicy').on('click', function() {
  477. let idx = $('#delvFeePolicyForm input[name=delvFeeCd]').length;
  478. let tag = '<tr>\n';
  479. tag += ' <td align="center">\n';
  480. tag += ' <input type="text" name="delvFeeCd" class="w100 aC" placeholder="자동생성" maxlength="20" readonly="readonly"/>\n';
  481. tag += ' <input type="hidden" name="supplyCompCd" value="' + $('#detailForm input[name=supplyCompCd]').val() + '"/>\n';
  482. tag += ' </td>\n';
  483. tag += ' <td align="center">\n';
  484. tag += ' <select name="delvFeeCrite" onclick="fnChangeDeliveryFeeCriterion(' + idx + ', this);">\n';
  485. tag += ' <option value="G078_10">[G078_10] 조건부 무료</option>\n';
  486. tag += ' <option value="G078_20">[G078_20] 무료</option>\n';
  487. tag += ' <option value="G078_30">[G078_30] 유료</option>\n';
  488. tag += ' </select>\n';
  489. tag += ' </td>\n';
  490. tag += ' <td align="center">\n';
  491. tag += ' <input type="text" name="minOrdAmt" class="w100 aR" placeholder="" maxlength="7" required="required" data-valid-type="integer" data-valid-name="무료배송비기준금액"/>원 <span id="txtCriterion' + idx + '">이상</span>\n';
  492. tag += ' </td>\n';
  493. tag += ' <td align="center">\n';
  494. tag += ' <input type="text" name="delvFee" class="w100 aR" placeholder="" maxlength="7" required="required" data-valid-type="integer" data-valid-name="배송비"/>원\n';
  495. tag += ' </td>\n';
  496. tag += ' <td align="center">\n';
  497. tag += ' <input type="text" name="rtnDelvFee" class="w100 aR" placeholder="" maxlength="7" required="required" data-valid-type="integer" data-valid-name="반품배송비"/>원\n';
  498. tag += ' </td>\n';
  499. tag += ' <td align="center">\n';
  500. tag += ' <select name="useYn">\n';
  501. tag += ' <option value="Y">Yes</option>\n';
  502. tag += ' <option value="N">No</option>\n';
  503. tag += ' </select>\n';
  504. tag += ' </td>\n';
  505. tag += '</tr>\n';
  506. $('#tbodyDelvFeePolicy').append(tag);
  507. });
  508. // 배송비 정책 조회
  509. let fnGetDeliveryFeePolicy = function(supplyCompCd) {
  510. $('#tbodyDelvFeePolicy').html('');
  511. $.getJSON('/business/delivery/fee/policy/list/' + supplyCompCd
  512. , function(result, status) {
  513. if (result == null || result.length == 0) {
  514. return;
  515. }
  516. $.each(result, function(idx, item) {
  517. let tag = '<tr>\n';
  518. tag += ' <td align="center">\n';
  519. tag += ' <input type="text" name="delvFeeCd" class="w100 aC" placeholder="자동생성" value="' + item.delvFeeCd + '" maxlength="20" readonly="readonly"/>\n';
  520. tag += ' <input type="hidden" name="supplyCompCd" value="' + item.supplyCompCd + '"/>\n';
  521. tag += ' </td>\n';
  522. tag += ' <td align="center">\n';
  523. tag += ' <select name="delvFeeCrite" onclick="fnChangeDeliveryFeeCriterion(' + (idx + 1) + ', this);">\n';
  524. tag += ' <option value="G078_10"' + (item.delvFeeCrite == "G078_10" ? " selected" : "") + '>[G078_10] 조건부 무료</option>\n';
  525. tag += ' <option value="G078_20"' + (item.delvFeeCrite == "G078_20" ? " selected" : "") + '>[G078_20] 무료</option>\n';
  526. tag += ' <option value="G078_30"' + (item.delvFeeCrite == "G078_30" ? " selected" : "") + '>[G078_30] 유료</option>\n';
  527. tag += ' </select>\n';
  528. tag += ' </td>\n';
  529. tag += ' <td align="center">\n';
  530. tag += ' <input type="text" name="minOrdAmt" class="w100 aR" placeholder="" value="' + item.minOrdAmt.addComma() + '" maxlength="7" required="required" data-valid-type="integer" data-valid-name="무료배송비기준금액"/>원 <span id="txtCriterion' + (idx + 1) + '">이상</span>\n';
  531. tag += ' </td>\n';
  532. tag += ' <td align="center">\n';
  533. tag += ' <input type="text" name="delvFee" class="w100 aR" placeholder="" value="' + item.delvFee.addComma() + '" maxlength="7" required="required" data-valid-type="integer" data-valid-name="배송비"/>원\n';
  534. tag += ' </td>\n';
  535. tag += ' <td align="center">\n';
  536. tag += ' <input type="text" name="rtnDelvFee" class="w100 aR" placeholder="" value="' + item.rtnDelvFee.addComma() + '" maxlength="7" required="required" data-valid-type="integer" data-valid-name="반품배송비"/>원\n';
  537. tag += ' </td>\n';
  538. tag += ' <td align="center">\n';
  539. tag += ' <select name="useYn">\n';
  540. tag += ' <option value="Y" ' + (item.useYn == "Y" ? "selected" : "") + '>Yes</option>\n';
  541. tag += ' <option value="N" ' + (item.useYn == "N" ? "selected" : "") + '>No</option>\n';
  542. tag += ' </select>\n';
  543. tag += ' </td>\n';
  544. tag += '</tr>\n';
  545. $('#tbodyDelvFeePolicy').append(tag);
  546. });
  547. $('.delvFeePolicy').show();
  548. });
  549. }
  550. // 배송비부과기준
  551. var fnChangeDeliveryFeeCriterion = function(idx, obj) {
  552. if ($(obj).val() == 'G078_10') {
  553. $('#delvFeePolicyForm input[name=minOrdAmt]').eq(idx).attr('readonly', false);
  554. $('#txtCriterion' + idx).html('이상');
  555. // $('#delvFeePolicyForm input[name=delvFee]').eq(idx).attr('readonly', false);
  556. } else if ($(obj).val() == 'G078_20') {
  557. $('#delvFeePolicyForm input[name=minOrdAmt]').eq(idx).val(0);
  558. $('#delvFeePolicyForm input[name=minOrdAmt]').eq(idx).attr('readonly', true);
  559. $('#txtCriterion' + idx).html('이상');
  560. // $('#delvFeePolicyForm input[name=delvFee]').eq(idx).val(0);
  561. // $('#delvFeePolicyForm input[name=delvFee]').eq(idx).attr('readonly', true);
  562. } else if ($(obj).val() == 'G078_30') {
  563. $('#delvFeePolicyForm input[name=minOrdAmt]').eq(idx).val(0);
  564. $('#delvFeePolicyForm input[name=minOrdAmt]').eq(idx).attr('readonly', true);
  565. $('#txtCriterion' + idx).html('금액에 상관 없음');
  566. // $('#delvFeePolicyForm input[name=delvFee]').eq(idx).attr('readonly', false);
  567. }
  568. }
  569. // 배송비정책 저장
  570. $("#btnSaveDelvFeePolicy").on("click", function() {
  571. // 필수값 체크
  572. if (!gagajf.validation('#delvFeePolicyForm'))
  573. return false;
  574. mcxDialog.confirm("배송비정책을 저장하시겠습니까?", {
  575. cancelBtnText: "취소",
  576. sureBtnText: "확인",
  577. sureBtnClick: function() {
  578. // comma(,) 제거
  579. gagajf.removeCommaAtNumberFormattedInput('#delvFeePolicyForm');
  580. var arrData = [];
  581. $('#tbodyDelvFeePolicy tr').each(function(idx) {
  582. var params = new Object();
  583. params.delvFeeCd = $(this).find('input[name=delvFeeCd]').val();
  584. params.supplyCompCd = $(this).find('input[name=supplyCompCd]').val();
  585. params.delvFeeCrite = $(this).find('select[name=delvFeeCrite]').val();
  586. params.minOrdAmt = $(this).find('input[name=minOrdAmt]').val();
  587. params.delvFee = $(this).find('input[name=delvFee]').val();
  588. params.rtnDelvFee = $(this).find('select[name=rtnDelvFee]').val();
  589. params.useYn = $(this).find('select[name=useYn]').val();
  590. arrData.push(params);
  591. });
  592. let jsonData = JSON.stringify(arrData);
  593. gagajf.ajaxJsonSubmit($('#delvFeePolicyForm').prop('action'), jsonData, function() {
  594. // 배송비정책 조회
  595. fnGetDeliveryFeePolicy($('#detailForm input[name=supplyCompCd]').val());
  596. });
  597. }
  598. });
  599. });
  600. /**
  601. * DAUM을 이용한 우편번호 팝업 레이어
  602. */
  603. var fnOpenDaumAddr = function() {
  604. let daumZip = new daum.Postcode({
  605. oncomplete: function(data) {
  606. // 우편번호와 주소 정보를 해당 필드에 넣는다.
  607. $('#detailForm input[name=bizZipcode]').val(data.zonecode);
  608. $('#detailForm input[name=bizBaseAddr]').val(cfnGetDaumRoadAddr(data));
  609. $('#detailForm input[name=bizDtlAddr]').focus();
  610. cfnCloseDaumAddr();
  611. },
  612. width: '100%'
  613. });
  614. cfnOpenDaumAddr(daumZip);
  615. }
  616. $(document).ready(function() {
  617. // Create a agGrid
  618. gagaAgGrid.createGrid('gridList', gridOptions);
  619. });
  620. /*]]>*/
  621. </script>
  622. </html>