|
|
@@ -0,0 +1,370 @@
|
|
|
+<!DOCTYPE html>
|
|
|
+<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
|
|
+<!--
|
|
|
+ *******************************************************************************
|
|
|
+ * @source : CashRefundListForm.html
|
|
|
+ * @desc : 현금환불관리 Page
|
|
|
+ *============================================================================
|
|
|
+ * STYLE24
|
|
|
+ * Copyright(C) 2022 TSIT, All rights reserved.
|
|
|
+ *============================================================================
|
|
|
+ * VER DATE AUTHOR DESCRIPTION
|
|
|
+ * === =========== ========== =============================================
|
|
|
+ * 1.0 2022.01.04 card007 최초 작성
|
|
|
+ *******************************************************************************
|
|
|
+ -->
|
|
|
+
|
|
|
+<div id="main">
|
|
|
+ <!-- 메인타이틀 영역 -->
|
|
|
+ <div class="main-title">
|
|
|
+ </div>
|
|
|
+ <!-- //메인타이틀 영역 -->
|
|
|
+
|
|
|
+ <!-- 메뉴 설명 -->
|
|
|
+ <div class="infoBox menu-desc">
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <form id="searchForm" name="searchForm" action="#" th:action="@{'/orderChange/cash/refund/list'}">
|
|
|
+ <!-- 패널 영역1 -->
|
|
|
+ <div class="panelStyle" >
|
|
|
+ <!-- 검색조건 영역 -->
|
|
|
+ <!-- TITLE -->
|
|
|
+ <div class="panelTitle">
|
|
|
+ <h3>
|
|
|
+ <i class="fa fa-info-circle"></i>아래 검색조건 중 <font color="red">주문번호</font> 또는 <font color="red">조회일자</font> 하나를 꼭 입력해 주세요.
|
|
|
+ </h3>
|
|
|
+ <span class="panelControl">
|
|
|
+ <i class="fa fa-chevron-up"></i>
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="panelContent">
|
|
|
+ <table class="frmStyle">
|
|
|
+ <colgroup>
|
|
|
+ <col style="width:15%;"/>
|
|
|
+ <col style="width:25%;"/>
|
|
|
+ <col style="width:15%;"/>
|
|
|
+ <col style="width:25%;"/>
|
|
|
+ <col style="width:8%;"/>
|
|
|
+ <col style="width:12%;"/>
|
|
|
+ </colgroup>
|
|
|
+ <tr>
|
|
|
+ <th>주문자정보</th>
|
|
|
+ <td>
|
|
|
+ <select name="searchGb">
|
|
|
+ <option value="ordNm">이름</option>
|
|
|
+ <option value="custId">아이디</option>
|
|
|
+ <option value="ordPhnno">휴대폰번호</option>
|
|
|
+ </select>
|
|
|
+ <input type="text" class="w150" name="searchTxt" placeholder="" maxlength="20"/>
|
|
|
+ </td>
|
|
|
+ <th>입금여부</th>
|
|
|
+ <td>
|
|
|
+ <select name="depositYn" id="depositYn">
|
|
|
+ <option value="">[전체]</option>
|
|
|
+ <option value="Y">입금완료</option>
|
|
|
+ <option value="N" selected>입금미완료</option>
|
|
|
+ </select>
|
|
|
+ </td>
|
|
|
+ <th rowspan="3">주문번호/<br />주문변경일련번호</th>
|
|
|
+ <td rowspan="3">
|
|
|
+ <select name="search" id="search">
|
|
|
+ <option value="searchOrdNo">주문번호</option>
|
|
|
+ <option value="searchOrdChgSq">주문변경일련번호</option>
|
|
|
+ </select>
|
|
|
+ <textarea class="textareaR3" name="condition" id="condition"></textarea>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th>계좌번호</th>
|
|
|
+ <td>
|
|
|
+ <input type="text" name="accountNo" />
|
|
|
+ </td>
|
|
|
+ <th>은행명</th>
|
|
|
+ <td>
|
|
|
+ <select name="bankCd">
|
|
|
+ <option value="">[선택]</option>
|
|
|
+ <option th:if="${bankList}" th:each="oneData, status : ${bankList}" th:value="${oneData.cd}" th:text="${oneData.cdNm}"></option>
|
|
|
+ </select>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th>조회일자</th>
|
|
|
+ <td colspan="3">
|
|
|
+ <select name="searchDateGb">
|
|
|
+ <option value="regDt">발생일자</option>
|
|
|
+ <option value="depositDt">입금일자</option>
|
|
|
+ </select>
|
|
|
+ <span id="terms"></span>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+
|
|
|
+ <ul class="panelBar">
|
|
|
+ <li class="center">
|
|
|
+ <button type="button" class="btn btn-info btn-lg" id="btnSearch">조회</button>
|
|
|
+ <button type="button" class="btn btn-gray btn-lg" id="btnInit">초기화</button>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="panelStyle">
|
|
|
+ <ul class="panelBar">
|
|
|
+ <li>
|
|
|
+ <button type="button" class="btn btn-info btn-lg" onclick="fnSave();">저장</button>
|
|
|
+ <button type="button" class="btn btn-success btn-lg" onclick="fnDepositComplete();">입금 완료 처리</button>
|
|
|
+ <button type="button" class="btn btn-default btn-lg" onclick="fnExelDownload();">엑셀다운로드</button>
|
|
|
+ </li>
|
|
|
+ <li class="aR">
|
|
|
+ 검색결과 : <strong><span id="gridRowTotalCount">0</span> 건</strong>
|
|
|
+ 쪽번호 <span id="pgNo">0</span>/ <strong id="endPgNo">0</strong>
|
|
|
+ <select id="pageSize" name="pageSize">
|
|
|
+ <option value="100" selected="selected">100개씩 보기</option>
|
|
|
+ <option value="500">500개씩 보기</option>
|
|
|
+ <option value="1000">1000개씩 보기</option>
|
|
|
+ <option value="5000">5000개씩 보기</option>
|
|
|
+ </select>
|
|
|
+ <input type="hidden" name="pageNo" id="pageNo" value ="1"/>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+
|
|
|
+ <div class="panelContent" style="overflow: hidden;">
|
|
|
+ <div id="gridList" style="width: 100%; height: 700px;" class="ag-theme-balham lh30"></div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <ul class="panelBar">
|
|
|
+ <li class="center">
|
|
|
+ <div class="tablePaging" id="orderListPagination"></div>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </form>
|
|
|
+</div>
|
|
|
+
|
|
|
+<script type="text/javascript" src="/ux/plugins/gaga/gaga.paging.js?v=20210114"></script>
|
|
|
+
|
|
|
+<script th:inline="javascript">
|
|
|
+/*<![CDATA[*/
|
|
|
+let useYnList = { "Y":"Yes", "N":"No" };
|
|
|
+let bankList = gagajf.convertToArray([[${bankList}]]);
|
|
|
+var payMeansNm = '';
|
|
|
+
|
|
|
+var columnDefs = [
|
|
|
+ {width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
|
|
|
+ {headerName: "현금환불일련번호", field: "cashRefundSq", width: 80, cellClass: 'text-center', hide: true},
|
|
|
+ {headerName: "입금여부", field: "depositYn" , width: 80, cellClass: 'text-center',
|
|
|
+ editable : function(params){console.log(params.data); return params.data.orgDepositYn == 'N';},
|
|
|
+ cellEditor: 'agRichSelectCellEditor',
|
|
|
+ cellEditorParams: { values: gagaAgGrid.extractValues(useYnList) },
|
|
|
+ valueFormatter: function (params) { return gagaAgGrid.lookupValue(useYnList, params.value); },
|
|
|
+ valueParser: function (params) { return gagaAgGrid.lookupKey(useYnList, params.newValue); }
|
|
|
+ },
|
|
|
+ {headerName: "환불상태", field: "chgStatNm", width: 80, cellClass: 'text-center'},
|
|
|
+ {headerName: "클레임일자", field: "claimDt", width: 100, cellClass: 'text-center',
|
|
|
+ cellRenderer : function (params) {
|
|
|
+ return !gagajf.isNull(params.value) ? params.value.toDate("YYYY-MM-DD HH:mm:ss").format("YYYY.MM.DD") : '';
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {headerName: "주문번호", field: 'ordNo', width: 80, cellClass: 'text-center', sortable: true
|
|
|
+ , cellRenderer : function (params) {
|
|
|
+ return "<a href=\"javascript:void(0);\" onclick=\"fnOpenOrderDetailPopup('" + params.value + "');\">" + params.value + "</a>";
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {headerName: "주문변경일련번호", field: 'ordChgSq', width: 110, cellClass: 'text-center', sortable: true
|
|
|
+ , cellRenderer : function (params) {
|
|
|
+ let paramData = params.data.ordNo + '@' + params.data.chgStat + '@' + params.data.payMeansNm;
|
|
|
+ return '<a href="javascript:void(0);" onclick="fnCancelComplete(\'' + paramData + '\',\'' + params.value + '\');">' + params.value + '</a>';
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {headerName: "주문자", field: "ordNm", width: 150, cellClass: 'text-center'},
|
|
|
+ {headerName: "휴대폰번호", field: "ordPhnno", width: 120, cellClass: 'text-center'},
|
|
|
+ {headerName: "현금환불금액", field: "depositAmt", width: 100, cellClass: 'text-right',
|
|
|
+ cellRenderer: function (params) {
|
|
|
+ return !gagajf.isNull(params.value) ? params.value.addComma() : '0';
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {headerName: "결제수단", field: "payMeansNm", width: 80, cellClass: 'text-center'},
|
|
|
+ {headerName: "은행명", field: "bankCd", width: 80, cellClass: 'text-center',
|
|
|
+ editable : function(params){return params.data.orgDepositYn == 'N';},
|
|
|
+ cellEditor: 'agRichSelectCellEditor',
|
|
|
+ cellEditorParams: { values: gagaAgGrid.extractValues(bankList) },
|
|
|
+ valueFormatter: function (params) { return gagaAgGrid.lookupValue(bankList, params.value); },
|
|
|
+ valueParser: function (params) { return gagaAgGrid.lookupKey(bankList, params.newValue); }
|
|
|
+ },
|
|
|
+ {headerName: "환불계좌번호", field: "accountNo", width: 150, cellClass: 'text-center', editable : function(params){return params.data.orgDepositYn == 'N';}},
|
|
|
+ {headerName: "예금주", field: "accountNm", width: 80, cellClass: 'text-center', editable : function(params){return params.data.orgDepositYn == 'N';}},
|
|
|
+ {headerName: "변경메모", field: "chgMemo", width: 150, cellClass: 'text-center', editable : true},
|
|
|
+ {headerName: "신청일", field: "regDt", width: 150, cellClass: 'text-center',
|
|
|
+ cellRenderer : function (params) {
|
|
|
+ return !gagajf.isNull(params.value) ? params.value.toDate("YYYY-MM-DD HH:mm:ss").format("YYYY-MM-DD HH:mm:ss") : '';
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {headerName: "입금일", field: "depositDt", width: 150, cellClass: 'text-center',
|
|
|
+ cellRenderer : function (params) {
|
|
|
+ return !gagajf.isNull(params.value) ? params.value.toDate("YYYY-MM-DD HH:mm:ss").format("YYYY-MM-DD HH:mm:ss") : '';
|
|
|
+ }
|
|
|
+ }
|
|
|
+];
|
|
|
+
|
|
|
+var gridOptions = gagaAgGrid.getGridOptions(columnDefs);
|
|
|
+gridOptions.suppressRowClickSelection = true;
|
|
|
+gridOptions.rowSelection = 'multiple';
|
|
|
+gridOptions.stopEditingWhenGridLosesFocus = true;
|
|
|
+
|
|
|
+// 조회버튼
|
|
|
+$('#btnSearch').on('click', function() {
|
|
|
+ $('#searchForm input[name=pageNo]').val(1);
|
|
|
+ fnSearch();
|
|
|
+});
|
|
|
+
|
|
|
+// 검색
|
|
|
+var fnSearch = function() {
|
|
|
+ var formId = '#searchForm';
|
|
|
+ var condition = $('#searchForm input[name=condition]').val();
|
|
|
+ var stDate = $('#stDate').val();
|
|
|
+ var edDate = $('#edDate').val();
|
|
|
+
|
|
|
+ if (!gagajf.isNull(stDate)) {
|
|
|
+ if (gagajf.isNull(edDate)) {
|
|
|
+ mcxDialog.alert('종료 기간을 입력하세요.');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!gagajf.isNull(edDate)) {
|
|
|
+ if (gagajf.isNull(stDate)) {
|
|
|
+ mcxDialog.alert('시작 기간을 입력하세요.');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (gagajf.isNull(stDate) && gagajf.isNull(edDate)) {
|
|
|
+ var temp = false;
|
|
|
+
|
|
|
+ if (!gagajf.isNull(condition)) {
|
|
|
+ temp = true;
|
|
|
+ }
|
|
|
+ if (temp == false) {
|
|
|
+ mcxDialog.alert('조회조건을 설정 해주세요.');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ gagaPaging.init('searchForm', fnSearchCallBack, 'orderListPagination', $('#searchForm').find('#pageSize').val());
|
|
|
+ gagaPaging.load($("#searchForm input[name=pageNo]").val());
|
|
|
+}
|
|
|
+
|
|
|
+// 페이징
|
|
|
+$('#searchForm select[name=pageSize]').on('change', function() {
|
|
|
+ $("#searchForm input[name=pageNo]").val('1');
|
|
|
+ fnSearchList();
|
|
|
+});
|
|
|
+
|
|
|
+// 조회 콜백
|
|
|
+var fnSearchCallBack = function(result){
|
|
|
+
|
|
|
+ $('#searchForm').find('#gridRowTotalCount').html(result.pageing.pageable.totalCount.addComma());
|
|
|
+ $('#searchForm').find('#pageNo').val(result.pageing.pageable.pageNo.addComma());
|
|
|
+ $('#searchForm').find('#pgNo').html(result.pageing.pageable.pageNo.addComma());
|
|
|
+ $('#searchForm').find('#endPgNo').html(result.pageing.pageable.totalPage.addComma());
|
|
|
+ gridOptions.api.setRowData(result.dataList);
|
|
|
+ gagaPaging.createPagination(result.pageing.pageable);
|
|
|
+}
|
|
|
+
|
|
|
+// 초기화 클릭시
|
|
|
+$('#btnInit').on('click', function() {
|
|
|
+ $('#searchForm')[0].reset();
|
|
|
+
|
|
|
+ // 최근한주검색
|
|
|
+ $('.btnRecentWeek').trigger('click');
|
|
|
+});
|
|
|
+
|
|
|
+// 초기설정
|
|
|
+$(document).ready(function() {
|
|
|
+ // 달력기능 활성화
|
|
|
+ cfnCreateCalendar('#terms', 'stDate', 'edDate', true, '기간', 'X');
|
|
|
+ gagaAgGrid.createGrid('gridList', gridOptions);
|
|
|
+ gridOptions.api.hideOverlay();
|
|
|
+
|
|
|
+ $('.btnRecentWeek').trigger('click');
|
|
|
+});
|
|
|
+
|
|
|
+var fnOpenOrderDetailPopup = function (ordNo) {
|
|
|
+ cfnOpenOrderDetailPopup(ordNo);
|
|
|
+};
|
|
|
+
|
|
|
+// 취소완료 팝업
|
|
|
+var fnCancelComplete = function (paramData, ordChgSq) {
|
|
|
+ var paramArr = paramData.split("@");
|
|
|
+ var param = "";
|
|
|
+ param += "&ordNo=" + paramArr[0];
|
|
|
+ param += "&chgStat=" + paramArr[1];
|
|
|
+ param += "&ordChgSq=" + ordChgSq;
|
|
|
+ param += "&ordDtlNo=" + 0;
|
|
|
+ param += "&delvFeeCd=" + '';
|
|
|
+ param += "&delvFeeCdGrp=" + '';
|
|
|
+
|
|
|
+ payMeansNm = paramArr[2];
|
|
|
+
|
|
|
+ var actionUrl = "/orderChange/cnclRtn/complete/view?" + param;
|
|
|
+
|
|
|
+ cfnOpenModalPopup(actionUrl, 'popupCancelRequestForm');
|
|
|
+
|
|
|
+ return false;
|
|
|
+};
|
|
|
+
|
|
|
+// 저장 버튼 클릭 이벤트
|
|
|
+var fnSave = function() {
|
|
|
+ let changedData = [];
|
|
|
+
|
|
|
+ // 변경된 데이터 설정
|
|
|
+ let selectedData = gridOptions.api.getSelectedRows();
|
|
|
+ $.each(selectedData, function(idx, item) {
|
|
|
+ if (item.crud == 'U') {
|
|
|
+ changedData.push(item);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ // 변경된 데이터 유효성검증
|
|
|
+ if (changedData.length == 0) {
|
|
|
+ mcxDialog.alert('변경된 데이터가 없습니다.');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ let jsonData = JSON.stringify(changedData);
|
|
|
+
|
|
|
+ mcxDialog.confirm("변경 내용을 저장 하시겠습니까?", {
|
|
|
+ cancelBtnText: "취소",
|
|
|
+ sureBtnText: "확인",
|
|
|
+ sureBtnClick: function(){
|
|
|
+ gagajf.ajaxJsonSubmit('/orderChange/cash/refund/update', jsonData, function(result) {
|
|
|
+ fnSearch();
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+var fnDepositComplete = function () {
|
|
|
+ let selectedData = gridOptions.api.getSelectedRows();
|
|
|
+ let jsonData = JSON.stringify(selectedData);
|
|
|
+ mcxDialog.confirm("입금 완료로 상태를 변경하시겠습니까?", {
|
|
|
+ cancelBtnText: "취소",
|
|
|
+ sureBtnText: "확인",
|
|
|
+ sureBtnClick: function(){
|
|
|
+ gagajf.ajaxJsonSubmit('/orderChange/cash/refund/deposit/complete', jsonData, function(result) {
|
|
|
+ fnSearch();
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+// 엑셀다운로드
|
|
|
+var fnExelDownload = function() {
|
|
|
+ gagaAgGrid.exportToExcel('현금환불 목록', gridOptions);
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+</html>
|