관리자 환불등록 작업중

This commit is contained in:
itn 2023-06-26 16:34:28 +09:00
parent 48d78bf3ed
commit d45585029a

View File

@ -0,0 +1,560 @@
<%--
Class Name : RefundRegist.jsp
Description : Refund 상세 페이지
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2023.06.26 박진순 최초 생성
author : 박진순
since : 2023.06.26
--%>
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<title>환불 등록</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javascript" src="<c:url value='/js/web_common.js' />"></script>
<script type="text/javascript" src="<c:url value='/js/EgovMultiFile.js'/>"></script>
<script src="/publish/js/content.js"></script>
<script type="text/javaScript" language="javascript">
var mberRefundMaxMoney = 0; // 환불가능금액
$(document).ready(function(){
$('#showMask').click(function(e){
// preventDefault는 href의 링크 기본 행동을 막는 기능입니다.
e.preventDefault();
// 화면의 높이와 너비를 변수로 만듭니다.
var maskHeight = $(document).height();
var maskWidth = $(window).width();
// 마스크의 높이와 너비를 화면의 높이와 너비 변수로 설정합니다.
$('.mask').css({'width':maskWidth,'height':maskHeight});
// fade 애니메이션 : 1초 동안 검게 됐다가 80%의 불투명으로 변합니다.
$('.mask').fadeIn(1000);
$('.mask').fadeTo("slow",0.8);
// 레이어 팝업을 가운데로 띄우기 위해 화면의 높이와 너비의 가운데 값과 스크롤 값을 더하여 변수로 만듭니다.
var left = ( $(window).scrollLeft() + ( $(window).width() - $('.window').width()) / 2 );
var top = ( $(window).scrollTop() + ( $(window).height() - $('.window').height()) / 2 );
// css 스타일을 변경합니다.
$('.window').css({'left':left,'top':top, 'position':'absolute'});
// 레이어 팝업을 띄웁니다.
$('.window').show();
});
// 닫기(close)를 눌렀을 때 작동합니다.
$('.window .close').click(function (e) {
e.preventDefault();
$('.mask, .window').hide();
$("input[name=emplyrId]").val("");
});
});
//회원 조회
function fn_refundIdChk(){
$.ajax({
type:"POST",
url:"<c:url value='/uss/ion/pay/cancelRegistIdChkAjax.do' />",
data:{
"checkId": $("#checkIdModal").val()
},
dataType:'json',
timeout:(1000*30),
success:function(data){
console.log('data ', data);
if(data.message != null)
{
alert(data.message);
return false;
}
else
{
var refundVO = data.refundVO;
$('#mberIdTxt').text(refundVO.mberId);
$('#mberId').val(refundVO.mberId);
$('#mberNmTxt').text(refundVO.mberNm);
$('#mberNm').val(refundVO.mberNm);
$('#dpsitPhoneNo').val(refundVO.mberPhoneNo);
$('#mberMoneyTxt').text(fn_unitChanges(refundVO.mberMoney));
$('#mberMoney').val(refundVO.mberMoney);
// 환불가능금액
mberRefundMaxMoney = refundVO.mberMoney;
$('.mask, .window').hide();
}
},
error:function(request , status, error){
console.log(' error ?');
console.log('request : ', request);
console.log('status : ', status);
}
});
}
function fn_unitChanges(data){
return data.toString()
.replace(/\B(?<!\.\d*)(?=(\d{3})+(?!\d))/g, ",");
}
function fn_goList(){
location.href = "<c:url value='/uss/ion/pay/RefundList.do' />";
}
//################################################################
var userMoney = 0; // 보유Cash
var refundMoneySum = 0; // 환불신청금액(환불요청 상태)
$(document).ready(function() {
$('#refundMoney').keyup(function(e){
var money = $(this).val().replace(/,/gi, "");
$('#refundMoney').val(comma(money));
var moneyCommaRemove = $(this).val().replace(/,/gi, "");
var refundExpectMoney = 0;
refundExpectMoney = comma(parseInt(moneyCommaRemove-(moneyCommaRemove/10)));
$("#refundExpectMoney").text(refundExpectMoney);
});
//통장사본 파일 업로드
$(function(){ //단일 파일업로드
$('#bank').change(function(e){
var objUpload = $(".upload_area");
var files = $('#bank')[0].files;
handleFileUpload(files,objUpload,'bank'); //파일업로드
});
});
//증빙서류 파일 업로드
$(function(){ //단일 파일업로드
$('#docu').change(function(e){
var objUpload = $(".upload_area");
var files = $('#docu')[0].files;
handleFileUpload(files,objUpload, 'docu'); //파일업로드
});
});
$("input:radio[name=reason]").click(function(){
if($("input[name=reason]:checked").val() == "999"){
$("input:text[name=reasonEtc]").attr("disabled",false);
// radio 버튼의 value 값이 1이라면 활성화
}else{
$("input:text[name=reasonEtc]").attr("disabled",true);
// radio 버튼의 value 값이 0이라면 비활성화
}
});
$('#refundMoney').focusout(function(){
if($(this).val() > mberRefundMaxMoney){
alert("환불 신청 금액은 환불 가능 금액보다 작아야 합니다.");
$(this).val('');
}
});
//엔터키 누르면 파일 첨부 영영기 열리는 오류 수정_220706
document.addEventListener('keydown', function(event) {
if (event.keyCode === 13) {
event.preventDefault();
};
}, true);
$('#allmoney').change(function(){
if($("#allmoney").is(":checked")){
$('#refundMoney').val(comma(mberRefundMaxMoney));
}else{
$('#refundMoney').val('');
}
});
});
// 환불신청금액(환불요청 상태)
function getRefundMoneySum() {
$.ajax({
type: "POST",
url: "/uss/ion/pay/refMonSumAjax.do",
data: {"mberId" : $("#mberId").val()},
dataType:'json',
async: false,
success: function (data) {
if (data.isSuccess) {
userMoney = data.userMoney;
refundMoneySum = data.refundMoneySum;
}
else {
//alert("Msg : " + data.msg);
}
},
error: function (e) {
console.log("ERROR : " + JSON.stringify(e));
}
});
}
function changeValue(obj){
$('#atFileBasicWrite').val(obj.value);
}
function changeValue2(obj){
$('#atFileBasicWrite2').val(obj.value);
}
var _fileIdx = 0;
var _fileForm2 = new Array();
function fn_refund_insert() {
if($("input[name=reason]:checked").val() == "999"){
document.listForm.refundReason.value = document.listForm.reason.value;
document.listForm.refundReasonEtc.value = document.listForm.reasonEtc.value;
}else{
document.listForm.refundReason.value = document.listForm.reason.value;
}
//환불금액 컴마제거
var refundMoney = document.listForm.refundMoney.value;
document.listForm.refundMoney.value = refundMoney.replaceAll(",","");
if(fn_checkForm()){
// 환불신청금액(환불요청 상태)
getRefundMoneySum();
if (parseInt(10000, 10) > parseInt(document.listForm.refundMoney.value, 10)) {
alert("10,000원 이하 환불 불가입니다.");
return;
}
else if (parseInt(userMoney, 10) < parseInt(document.listForm.refundMoney.value, 10)) {
alert("현재 회원의 보유금액보다 큰 금액을 환불 할 수 없습니다.");
return;
}
else if ((parseInt(userMoney, 10) - parseInt(refundMoneySum, 10)) < parseInt(document.listForm.refundMoney.value, 10)) {
alert("현재 회원의 (보유금액-환불신청금액)보다 큰 금액을 환불 할 수 없습니다.");
return;
}
if(confirm("환불신청을 하시겠습니까?")){
var data = new FormData(document.listForm);
_fileForm2.forEach(function(obj, idx) {
if(obj)
{
data.append(obj.name, obj.fileObj);
}
});
$.ajax({
type: "POST",
enctype: 'multipart/form-data',
url: "/uss/ion/pay/refMonInsAjax.do",
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
//timeout: 600000,
success: function (returnData, status) {
if(returnData.msg != null){
alert(returnData.msg);
}
else if(returnData.status == 'success'){
alert("환불신청이 완료 되었습니다.");
fn_goList(1);
} else if(returnData.status == 'fail'){
alert("환불신청이 실패하였습니다. !!");
}
},
error: function (e) {
alert("환불신청이 실패하였습니다.");
console.log("ERROR : ", e);
}
});
}
}
}
function handleFileUpload(files,obj,pram) //업로드 function
{
var limitsize = 50*1024*1024; //파일 제한 체크(50개, 50MB)
var limitcount = $("input[name=limitcount]").val()*1 ;
if($('#tbody_fiielist').find('tr').length + files.length > limitcount ){
alert("업로드 파일은 최대 "+limitcount+"개 입니다.");
return ;
}
for (var i = 0; i < files.length; i++){
if(files[i].size > limitsize){
alert(files[i].name+"파일 사이즈가"+getStrFileSize(files[i].size)+"로 50MB이하만 업로드 가능합니다.");
return ;
}
}
for (var i = 0; i < files.length; i++)
{
var fd = new FormData();
fd.append('file', files[i]);
var tmpObj = new Object();
tmpObj.name = pram;
tmpObj.fileObj = files[i];
_fileForm2.push(tmpObj);
sendFileToServer(fd, obj, files[i], _fileIdx);
_fileIdx++;
var totalfileSize = 0;
$('.totalfileCount').text($('.item_file_size').length) ;
$('.item_file_size').each(function(){
totalfileSize += $(this).val()*1 ;
});
$('.totalfileSize').text(getStrFileSize(totalfileSize)) ;
}
}
function sendFileToServer(formData, obj , fileObj, _fileIdx)
{
$('.no_img_box').hide(); //list 박스 형식 변경
$('.file_list_div').show();
var list_html = "";
var tt = "";
list_html += '<tr class="item_'+tt+' uploaded_obj">';
list_html += '<td class="file_name"><img src="'+getfile_img(fileObj.name)+'" alt=""><span class="file_name_text">'+fileObj.name+'</span></td>';
list_html += '<td class="file_size"><span class="file_size_text" value='+fileObj.size+'>'+getStrFileSize(fileObj.size)+'</span></td>';
list_html += '<td class="file_date">'+getDate()+'</td>';
list_html += '<td class="file_del"><input type="button" class="delBtn" alt="" onclick="delete_item(this, '+_fileIdx+')" ></td>';
list_html += '<input type="hidden" name="fileSize" class="item_file_size" value="'+fileObj.size+'">';
list_html += '<input type="hidden" name="atchFileIds" class="imsi" value="'+tt+'">';
list_html += '</tr>';
$('#tbody_fiielist').append(list_html);
}
/* 등록시 값 확인 */
function fn_checkForm() {
var formchk = document.listForm;
if(formchk.refundMoney.value == '') {
alert("환불 신청 금액을 입력해 주세요");
return false;
}
if($("input[name=reason]:checked").val() == "5" && formchk.reasonEtc.value == '') {
alert("환불사유를 입력해 주세요");
return false;
}
return true;
}
function comma(num){
var len, point, str;
num = num + "";
point = num.length % 3;
len = num.length;
str = num.substring(0, point);
while (point < len) {
if (str != "") str += ",";
str += num.substring(point, point + 3);
point += 3;
}
return str;
}
</script>
<style>
.calBtn {
border: none;
background-color: transparent !important;
background-image: url(/pb/img/common/calendarIcon.png);
background-repeat: no-repeat;
width: 25px;
height: 25px !important;
vertical-align: middle;
margin-left: -38px !important;
margin-top: -2px !important;
cursor: pointer;
}
</style>
</head>
<body>
<form name="listForm" id="listForm" method="post">
<input type="hideen" name="mberId" id="mberId" value=""/> <!-- 회원 ID -->
<input type="hideen" name="mberNm" id="mberNm" value=""/> <!-- 회원 이름 -->
<input type="hidden" name="pageIndex" value="<c:out value='${searchVO.pageIndex}'/>"/>
<input type="hidden" name="delFlag" value="Y" />
<input type="hidden" name="selectedId" />
<input type="hidden" name="refundDivision" value="1"/>
<input type="hidden" name="limitcount" value="<c:out value='3'/>" />
<input type="hidden" name="atchFileNece" id="atchFileNece" value="N" /> <!-- 첨부파일 필수체크 -->
<input type="hidden" name="mberMoney" id="mberMoney" />
<input type="hidden" name="refundReason" id="refundReason" value=""/>
<input type="hidden" name="refundReasonEtc" id="refundReasonEtc" value=""/>
<div class="contWrap">
<div class="pageTitle">
<div class="pageIcon"><img src="/pb/img/pageTitIcon4.png" alt=""></div>
<h2 class="titType1 c_222222 fwBold">결제취소 등록</h2>
<p class="tType6 c_999999">결제취소 등록 페이지 입니다.</p>
</div>
<div class="pageCont">
<p class="tbType2_title">환불 금액 입력</p>
<table class="tbType2">
<colgroup>
<col style="width: 20%">
<col style="width: 80%">
</colgroup>
<tbody>
<tr>
<th>
<span>회원 아이디
<input type="button" id="showMask" class="btnType1 bg_456ded" value="조회" style="float: right;" />
</span>
</th>
<td id="mberIdTxt">
</td>
</tr>
<tr>
<th><span>회원 이름</span></th>
<td id="mberNmTxt">
</td>
</tr>
<tr>
<th><span>환불 가능 금액</span></th>
<td id="mberMoneyTxt">
</td>
</tr>
<tr>
<th scope="row">환불 신청 금액</th>
<td>
<input type="text" name="refundMoney" id="refundMoney" style="width:330px;margin-right:5px;" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');">
<label for="refundMoney" class="price_input" style="left:300px;">원</label>
<input type="checkbox" id="allmoney" name="allmoney" class="re">
<label for="allmoney" class="alarm label">선택</label>
<span class="text_req">전액환불(10,000원 이하 환불 불가)</span>
</td>
</tr>
</tbody>
</table>
<br /><br />
<p class="tbType2_title">환불 사유 및 연락처</p>
<table class="tbType2">
<colgroup>
<col style="width: 160px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th scope="row" style="line-height: 70px;">환불사유</th>
<td>
<div class="refund_reason">
<ec:radio codeId="ITN050" name="reason" id="radioArea" selectedValue="1"/>
<input type="text" name="reasonEtc" id="reasonEtc" size="36" disabled="disabled">
</div>
</td>
</tr>
<tr>
<th scope="row">연락처</th>
<td>
<label for="dpsitPhoneNo" class="label">연락처 입력</label>
<input type="text" name="dpsitPhoneNo" id="dpsitPhoneNo" style="width:380px;"
oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');"
maxlength="12">
</td>
</tr>
</tbody>
</table>
<br /><br />
<table id="cancleFileTable" class="tbType2">
<colgroup>
<col style="width: 160px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th scope="row">통장사본</th>
<td class="attachedFile_wrap">
<label for="" class="label">통장사본 파일첨부</label>
<!-- <input type="text" placeholder="* 첨부가능 파일 jpg, gif, png 각 2MB 이내" readonly size="36">
<button type="button" class="btnType btnType9">파일첨부</button>
<span class="reqTxt6">※ 파일첨부가 안되시는 경우, 메일 help@iten.co.kr로 보내주세요</span> -->
<div>
<input type="text" readonly="readonly" disabled id="atFileBasicWrite" placeholder="* 첨부가능 파일 jpg, gif, png 각 2MB 이내" style="width:380px;">
<input type="file" name="bank" id="bank" style="display:none" onchange="changeValue(this); return false;"/>
<button onclick="document.all.bank.click(); return false;" class="btnType btnType9">파일선택</button>
<span class="reqTxt6">※ 파일첨부가 안되시는 경우, 메일 help@iten.co.kr로 보내주세요</span>
</div>
</td>
</tr>
<tr>
<th scope="row">증빙서류</th>
<td class="attachedFile_wrap">
<label for="" class="label">증빙서류</label>
<div>
<input type="text" readonly="readonly" disabled id="atFileBasicWrite2" placeholder="* 첨부가능 파일 jpg, gif, png 각 2MB 이내" style="width:380px;">
<input type="file" name="docu" id="docu" style="display:none" onchange="changeValue2(this); return false;"/>
<button onclick="document.all.docu.click(); return false;" class="btnType btnType9">파일선택</button>
<span class="reqTxt6">※이체확인증 또는 휴대폰 납부 영수증을 첨부해주세요</span>
</div>
</tr>
</tbody>
</table>
<div class="btnWrap">
<input type="button" class="btnType1 bg_888888" value="목록" onclick="fn_goList(); return false;">
<input type="button" class="btnType1 bg_888888" value="저장" onclick="fn_refund_insert(); return false;"/>
</div>
</div>
</div>
</form>
<div class="setDiv">
<div class="mask"></div>
<div class="window">
<div class="id_check1">
<input type="button" href="#" class="close">
<span>회원 아이디 검색</span>
</div>
<div class="id_check2">
<span>검색할 아이디</span><input type="text" id="checkIdModal">
</div>
<div class="id_check3">
<span>아이디를 검색하세요</span><button onclick="fn_refundIdChk(); return false;">검색</button>
</div>
</div>
</div>
</body>
</html>