초기소스

This commit is contained in:
jazz
2025-10-29 17:08:05 +09:00
parent e531aa9540
commit 439a379a02
7551 changed files with 1234427 additions and 3 deletions

View File

@@ -0,0 +1,172 @@
<%--
Created by IntelliJ IDEA.
User: CHAMDAHAN
Date: 2024-10-08
Time: 오후 3:30
To change this template use File | Settings | File Templates.
--%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld" %>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
</head>
<style>
</style>
<script>
$(document).ready(function () {
let pageIndex = '<c:out value="${ resultMap.AnalyticsErpGoodsSrchVO.pageIndex }"/>';
let pageUnit = '<c:out value="${ resultMap.AnalyticsErpGoodsSrchVO.pageUnit }"/>';
// 목록 조회
fn_select_list(pageIndex, pageUnit);
// 엔터키 검색
$('#listForm').on('keydown', function (event) {
if (event.keyCode === 13) {
event.preventDefault();
fn_select_list(1);
}
});
//리셋버튼 초기화
$('#resetBtn').on('click', function () {
$('#listForm')[0].reset();
$('#brandCd').find('option:eq(0)').prop('selected', true).end().niceSelect('update');
$('#barcode, #goodsName').val('');
});
});
/* ********************************************************
* 목록 조회
******************************************************** */
const fn_select_list = function (pageIndex, pageUnit) {
let dataStr;
if (!pageIndex) {
$('#pageIndex').val(1);
} else {
$('#pageIndex').val(pageIndex);
}
if (!pageUnit) {
dataStr = $('#listForm').serialize();
} else {
if ($('#pageUnit').length) {
$('#pageUnit').val(pageUnit);
dataStr = $('#listForm').serialize();
} else {
dataStr = $('#listForm').serialize() + '&pageUnit=' + pageUnit;
}
}
console.log('datastr : ' + dataStr);
$.ajax({
type: "post",
url: "/mngr/analytics/select/erp-goodsR",
data: dataStr,
success: function (resultMap) {
$('.pageDiv').html(resultMap);
}
});
};
</script>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">ERP 제상품 정보</h2>
</div>
<form id='listForm' name="listForm" method="post"
action="<c:url value="/mngr/analytics/select/erp-goods"/>">
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultMap.AnalyticsErpGoodsSrchVO.pageIndex }"/>
<%--
<input type="hidden" id="sopmalCd" name="sopmalCd"/>
--%>
<section class="content-section" id="search-section">
<div class="table-wrapper">
<table class="table">
<colgroup>
<col style="width: 9%;">
<col>
<col style="width: 9%;">
<col>
</colgroup>
<tr>
<th rowspan="1">브랜드</th>
<td colspan="3">
<div class="select-box">
<select title="브랜드" id="brandCd" name="brandCd">
<option value="" selected>*선택*</option>
<c:choose>
<c:when test="${ not empty resultMap.sopmalList }">
<c:forEach items="${ resultMap.sopmalList }" var="list" varStatus="status">
<option value="${list.sopmalCd}">${list.sopmalNm}</option>
</c:forEach>
</c:when>
</c:choose>
</select>
</div>
</td>
<th rowspan="1">바코드</th>
<td colspan="3">
<div class="td-inner">
<input type="text" id="barcode" class="input-text" title="상품 바코드" name="barcode">
</div>
</td>
<th rowspan="1">상품이름</th>
<td colspan="3">
<div class="td-inner">
<input type="text" id="goodsName" class="input-text" title="상품 이름" name="goodsName">
</div>
</td>
</tr>
</table>
</div>
<div class="form-control-container">
<div class="left"></div>
<div class="center">
<button class="btn outline" id="resetBtn" type="button">초기화</button> &nbsp;&nbsp;
<button class="btn primary" id="searchBtn" type="button" onclick="fn_select_list(1);"><spring:message code="button.search"/> </button>
</div>
</div>
</section>
<div class="pageDiv">
</div>
</form>
</div>
</div>
</main>
</body>
</html>

View File

@@ -0,0 +1,200 @@
<%--
Created by IntelliJ IDEA.
User: CHAMDAHAN
Date: 2024-10-08
Time: 오후 3:30
To change this template use File | Settings | File Templates.
--%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld" %>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
</head>
<style>
</style>
<script>
$(document).ready(function(){
fn_set_niceSelect_datePicker('.select-box');
})
/* 목록 > 전체선택 체인지 이벤트 */
$(document).on('change', '#checkAll', function () {
let checkbox = $(this).closest('table').find('input[name="erpGoodsChk"]');
$(checkbox).prop('checked', false);
$(checkbox).prop('checked', $(this).is(':checked'));
});
$('.erpGoodsChk').on('change',function(){
if(!$(this).is(":checked")) {
$('#checkAll').prop('checked', false);
} else {
const allChecked = $('.erpGoodsChk').length === $('.erpGoodsChk:checked').length;
$('#checkAll').prop('checked', allChecked);
}
})
// 선택대상 업데이트
$('#updateBtn').on('click',function(){
event.preventDefault();
let selectData = [];
$('.erpGoodsChk:checked').each(function(){
const tr = $(this).closest('tr');
const rowDate = {
id : $(this).val(),
goodsEa : tr.find('input[name="goodsEa"]').val(),
goodsSameCode : tr.find('input[name="goodsSameCode"]').val(),
goodsManager : tr.find('input[name="goodsManager"]').val()
};
selectData.push(rowDate);
});
if(selectData.length === 0 ) {
alert("수정대상을 선택해주세요");
return;
}
console.log("updatedata" + selectData);
$.ajax({
url: '/mngr/analytics/update/erp-goods',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify(selectData),
success : function(result) {
if (result.resBody && result.resBody.result) {
const response = JSON.parse(result.resBody.result);
alert(response.message);
window.location.reload();
} else {
alert('응답 형식이 올바르지 않습니다.');
}
},
error: function(xhr, status, error) {
console.error("업데이트 실패:", error);
alert("업데이트 중 오류가 발생했습니다.");
}
});
})
</script>
<body>
<section class="content-section">
<div class="form-control-container">
<div class="left">
<div class="search-number">
<span class="search-number__text">총 <strong><c:out value="${ resultMap.paginationInfo.totalRecordCount }"/></strong>건</span>
</div>
</div>
<div class="center">
</div>
<div class="right">
<div class="select-box">
<select id="pageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_list(1);">
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paginationInfo.recordCountPerPage eq pageUnit}">selected="selected"</c:if>><c:out value="${ pageUnit }"/>개씩</option>
</c:forEach>
</select>
</div>
</div>
</div>
<hr class="horizontal-line">
<div class="form-control-container">
<div class="center">
</div>
</div>
<hr class="spacing">
<div class="table-wrapper">
<table class="table vertical">
<form id='updateForm' name="updateForm" method="post"
action="<c:url value="/mngr/analytics/update/erp-goods"/>">
<caption>상품정보 목록</caption>
<colgroup>
<col style="width: 4%;">
<col style="width: 5%;">
<col style="width: 10%;">
<col style="width: 45%;">
<col style="width: 15%;">
<col style="width: 7%;">
<col style="width: 7%;">
<col style="width: 10%;">
<col style="width: 10%; ">
</colgroup>
<thead>
<tr>
<th>
<label class="b-checkbox checkbox is-medium">
<input type="checkbox" id="checkAll" value="">
<span class="check"></span>
</label>
</th>
<th>번호</th>
<th>쇼핑몰</th>
<th>상품명</th>
<th>바코드</th>
<th>상품갯수</th>
<th>단품 수량 입력</th>
<th>동일상품코드</th>
<th>상품 담당자</th>
</tr>
</thead>
<tbody id="tbody">
<c:choose>
<c:when test="${ not empty resultMap.list }">
<c:forEach items="${ resultMap.list }" var="list" varStatus="status">
<tr class="list-row">
<td>
<label class="b-checkbox checkbox is-medium">
<input type="checkbox" name="erpGoodsChk" class="erpGoodsChk" value="${list.analysisErpGoodsInnb}">
<span class="check"></span>
</label>
</td>
<td><c:out value="${ resultMap.paginationInfo.totalRecordCount - list.rnum + 1 }" /></td>
<td>${list.sopmalCd}</td>
<td>${list.goodsNm}</td>
<td>${list.barcode}</td>
<td>${list.goodsQy}</td>
<td><input type="number" id="goodsEa" class="input-text" value="${list.goodsEa}" title="단품수량" name="goodsEa"></td>
<td><input type="text" id="goodsSameCode" class="input-text" value="${list.goodsSameCode}" title="동일상품코드" name="goodsSameCode"></td>
<td><input type="text" id="goodsManager" class="input-text" value="${list.goodsManager}" title="상품담당자" name="goodsManager"></td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="100%"><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</form>
</table>
</div>
<div class="form-control-container">
<div class="right" style="margin-left:1450px !important;">
<button class="btn primary" id="updateBtn" type="button">수정</button>
</div>
</div>
</section>
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_list"/>
</div>
</body>
</html>

View File

@@ -0,0 +1,183 @@
<%--
Created by IntelliJ IDEA.
User: CHAMDAHAN
Date: 2024-10-08
Time: 오후 3:30
To change this template use File | Settings | File Templates.
--%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld" %>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
</head>
<style>
</style>
<script>
$(document).ready(function () {
let pageIndex = '<c:out value="${ resultMap.AnalyticsErpGoodsSrchVO.pageIndex }"/>';
let pageUnit = '<c:out value="${ resultMap.AnalyticsErpGoodsSrchVO.pageUnit }"/>';
// 목록 조회
fn_select_list(pageIndex, pageUnit);
// 엔터키 검색
$('#listForm').on('keydown', function (event) {
if (event.keyCode === 13) {
event.preventDefault();
fn_select_list(1);
}
});
//리셋버튼 초기화
$('#resetBtn').on('click', function () {
$('#listForm')[0].reset();
$('#brandCd').find('option:eq(0)').prop('selected', true).end().niceSelect('update');
$('#barcode, #goodsName,#setCode,#setGoodsName').val('');
});
});
/* ********************************************************
* 목록 조회
******************************************************** */
const fn_select_list = function (pageIndex, pageUnit) {
let dataStr;
if (!pageIndex) {
$('#pageIndex').val(1);
} else {
$('#pageIndex').val(pageIndex);
}
if (!pageUnit) {
dataStr = $('#listForm').serialize();
} else {
if ($('#pageUnit').length) {
$('#pageUnit').val(pageUnit);
dataStr = $('#listForm').serialize();
} else {
dataStr = $('#listForm').serialize() + '&pageUnit=' + pageUnit;
}
}
console.log('datastr : ' + dataStr);
$.ajax({
type: "post",
url: "/mngr/analytics/select/erp-set-goodsR",
data: dataStr,
success: function (resultMap) {
$('.pageDiv').html(resultMap);
}
});
};
</script>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">ERP 세트상품 정보</h2>
</div>
<form id='listForm' name="listForm" method="post"
action="<c:url value="/mngr/analytics/select/erp-set-goods"/>">
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultMap.AnalyticsErpGoodsSrchVO.pageIndex }"/>
<%--
<input type="hidden" id="sopmalCd" name="sopmalCd"/>
--%>
<section class="content-section" id="search-section">
<div class="table-wrapper">
<table class="table">
<colgroup>
<col style="width: 9%;">
<col>
<col style="width: 9%;">
<col>
</colgroup>
<tr>
<th rowspan="1">브랜드</th>
<td colspan="5">
<div class="select-box">
<select title="브랜드" id="brandCd" name="brandCd">
<option value="" selected>*선택*</option>
<c:choose>
<c:when test="${ not empty resultMap.sopmalList }">
<c:forEach items="${ resultMap.sopmalList }" var="list" varStatus="status">
<option value="${list.sopmalCd}">${list.sopmalNm}</option>
</c:forEach>
</c:when>
</c:choose>
</select>
</div>
</td>
<th rowspan="1">세트코드</th>
<td colspan="5">
<div class="td-inner">
<input type="text" id="setCode" class="input-text" title="세트코드" name="setCode">
</div>
</td>
<th rowspan="1">바코드</th>
<td colspan="5">
<div class="td-inner">
<input type="text" id="barcode" class="input-text" title="상품 바코드" name="barcode">
</div>
</td>
<th rowspan="1">세트 상품명</th>
<td colspan="5">
<div class="td-inner">
<input type="text" id="setGoodsName" class="input-text" title="상품 이름" name="setGoodsName">
</div>
</td>
<th rowspan="1">단일 상품명</th>
<td colspan="5">
<div class="td-inner">
<input type="text" id="goodsName" class="input-text" title="상품 바코드" name="goodsName">
</div>
</td>
</tr>
</table>
</div>
<div class="form-control-container">
<div class="left"></div>
<div class="center">
<button class="btn outline" id="resetBtn" type="button">초기화</button> &nbsp;&nbsp;
<button class="btn primary" id="searchBtn" type="button" onclick="fn_select_list(1);"><spring:message code="button.search"/> </button>
</div>
</div>
</section>
<div class="pageDiv">
</div>
</form>
</div>
</div>
</main>
</body>
</html>

View File

@@ -0,0 +1,125 @@
<%--
Created by IntelliJ IDEA.
User: CHAMDAHAN
Date: 2024-10-08
Time: 오후 3:30
To change this template use File | Settings | File Templates.
--%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld" %>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
</head>
<style>
</style>
<script>
$(document).ready(function(){
fn_set_niceSelect_datePicker('.select-box');
})
</script>
<body>
<section class="content-section">
<div class="form-control-container">
<div class="left">
<div class="search-number">
<span class="search-number__text">총 <strong><c:out value="${ resultMap.paginationInfo.totalRecordCount }"/></strong>건</span>
</div>
</div>
<div class="center">
</div>
<div class="right">
<div class="select-box">
<select id="pageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_list(1);">
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paginationInfo.recordCountPerPage eq pageUnit}">selected="selected"</c:if>><c:out value="${ pageUnit }"/>개씩</option>
</c:forEach>
</select>
</div>
</div>
</div>
<hr class="horizontal-line">
<div class="form-control-container">
<div class="center">
</div>
</div>
<hr class="spacing">
<div class="table-wrapper">
<table class="table vertical">
<caption>상품정보 목록</caption>
<colgroup>
<col style="width: 4%;">
<col style="width: 5%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 35%;">
<col style="width: 35%;">
<col style="width: 7%;">
<col style="width: 10%;">
</colgroup>
<thead>
<tr>
<th>번호</th>
<th>쇼핑몰</th>
<th>세트코드</th>
<th>바코드</th>
<th>세트 상품명</th>
<th>단일 상품명</th>
<th>바코드 수량</th>
<th>사은품 여부</th>
</tr>
</thead>
<tbody id="tbody">
<c:choose>
<c:when test="${ not empty resultMap.list }">
<c:forEach items="${ resultMap.list }" var="list" varStatus="status">
<tr class="list-row">
<td><c:out value="${ resultMap.paginationInfo.totalRecordCount - list.rnum + 1 }" /></td>
<td>${list.sopmalCd}</td>
<td>${list.setCode}</td>
<td>${list.barcode}</td>
<td>${list.setGoodsNm}</td>
<td>${list.goodsNm}</td>
<td>${list.barcodeQy}</td>
<td> <c:choose>
<c:when test="${list.giftYn eq 1}">
Y
</c:when>
<c:otherwise>
N
</c:otherwise>
</c:choose>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="100%"><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</section>
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_list"/>
</div>
</body>
</html>

View File

@@ -0,0 +1,221 @@
<%--
Created by IntelliJ IDEA.
User: CHAMDAHAN
Date: 2024-10-08
Time: 오후 3:30
To change this template use File | Settings | File Templates.
--%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld" %>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
</head>
<style>
#chart-wrapper-keyword {
width: 100% !important; /* 차트의 너비 설정 */
height: 300px !important; /* 차트의 높이 설정 */
}
#chart-wrapper-week {
width: 100% !important; /* 차트의 너비 설정 */
height: 300px !important; /* 차트의 높이 설정 */
}
svg {
margin-top : 120px;
z-index: 0 !important;
}
</style>
<script>
window.onload = function() {
// 차트 객체 생성
var chartKeyword = new cfx.Chart();
var chartWeek = new cfx.Chart();
// 차트 타입 설정 (꺾은선형 차트)
chartKeyword.setGallery(cfx.Gallery.Lines);
chartWeek.setGallery(cfx.Gallery.Lines);
// 시리즈와 포인트 수 설정
chartKeyword.getData().setSeries(2); // 시리즈 2개
chartKeyword.getData().setPoints(5); // 각 시리즈에 포인트 5개
chartWeek.getData().setSeries(2); // 시리즈 2개
chartWeek.getData().setPoints(5); // 각 시리즈에 포인트 5개
// 첫 번째 시리즈
var series1 = chartKeyword.getSeries().getItem(0);
var seriesw1 = chartWeek.getSeries().getItem(0);// 첫 번째 시리즈 가져오기
series1.setText("조회수");
seriesw1.setText("총판매량");
chartKeyword.getData().setItem(0, 0, 10); // 첫 번째 시리즈, 첫 번째 포인트 값 10
chartKeyword.getData().setItem(0, 1, 20);
chartKeyword.getData().setItem(0, 2, 30);
chartKeyword.getData().setItem(0, 3, 40);
chartKeyword.getData().setItem(0, 4, 50);
chartWeek.getData().setItem(0, 0, 10); // 첫 번째 시리즈, 첫 번째 포인트 값 10
chartWeek.getData().setItem(0, 1, 20);
chartWeek.getData().setItem(0, 2, 30);
chartWeek.getData().setItem(0, 3, 40);
chartWeek.getData().setItem(0, 4, 50);
// 두 번째 시리즈
var series2 = chartKeyword.getSeries().getItem(1);
var seriesw2 = chartWeek.getSeries().getItem(1);// 두 번째 시리즈 가져오기
series2.setText("판매량");
seriesw2.setText("자+스");
chartKeyword.getData().setItem(1, 0, 15); // 두 번째 시리즈, 첫 번째 포인트 값 15
chartKeyword.getData().setItem(1, 1, 25);
chartKeyword.getData().setItem(1, 2, 35);
chartKeyword.getData().setItem(1, 3, 45);
chartKeyword.getData().setItem(1, 4, 55);
chartWeek.getData().setItem(1, 0, 15); // 두 번째 시리즈, 첫 번째 포인트 값 15
chartWeek.getData().setItem(1, 1, 25);
chartWeek.getData().setItem(1, 2, 35);
chartWeek.getData().setItem(1, 3, 45);
chartWeek.getData().setItem(1, 4, 55);
// 차트를 그릴 div 요소에 차트 연결
var divHolder = document.getElementById('chart-wrapper-keyword');
var divweek = document.getElementById('chart-wrapper-week');
chartKeyword.create(divHolder);
chartWeek.create(divweek);
};
</script>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">매출일지</h2>
</div>
<%--
<input type="hidden" id="sopmalCd" name="sopmalCd"/>
--%>
<div class="content-section__col-1-container">
<div class="content-tab">
<button class="content-tab__btn active">일매출</button>
<button class="content-tab__btn">총합</button>
<button class="content-tab__btn">자+스</button>
<button class="content-tab__btn">자사몰</button>
<button class="content-tab__btn">스토어팜</button>
<button class="content-tab__btn">오픈마켓</button>
</div>
<div id="pageDiv">
<section class="content-section">
<div class="form-control-container">
<div class="center">
</div>
</div>
<hr class="spacing">
<div class="table-wrapper">
<table class="table vertical">
<caption>해당 테이블에 대한 설명</caption>
<thead>
<tr>
<th rowspan="2" colspan="3"></th>
<th colspan="5">매출</th>
<th colspan="5">자사몰</th>
<th colspan="5">스토어팜</th>
<th colspan="4" rowspan="2">특이사항</th>
</tr>
</thead>
<thead>
<tr>
<th colspan="3"></th>
<th>자사몰</th>
<th>스토어팜</th>
<th>최저가+비연</th>
<th>오픈마켓</th>
<th>합계</th>
<th>회원수(누적)</th>
<th>방문자</th>
<th>구매건수</th>
<th>구매전환율</th>
<th>객단가</th>
<th>스토어찜수(누적)</th>
<th>방문자</th>
<th>결제자수</th>
<th>구매전환율</th>
<th>객단가</th>
<th colspan="4"></th>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="7">2020년 3월 3주</td>
<td>
<span>03월 16일</span>
</td>
<td>
<span>
월
</span>
</td>
</tr>
<tr>
<td>
<span class="fw-300">상품금액할인</span>
</td>
<td class="left">
<span class="under-line" onclick="fn_move_dtl_uptpage(1100101, 1, 10, 10)">
추지훈 특정 상품 쿠폰 테스트 30%할인
</span>
</td>
<td>
<span class="fw-500">
30
% 할인
</span><br>
<span class="gray-8">최대 0원 할인</span>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</div>
</div>
<div id="modalDiv">
</div>
</main>
</body>
</html>

View File

@@ -0,0 +1,43 @@
<%--
Created by IntelliJ IDEA.
User: CHAMDAHAN
Date: 2024-10-08
Time: 오후 3:30
To change this template use File | Settings | File Templates.
--%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld" %>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
</head>
<style>
</style>
<script>
</script>
<body>
<main class="main">
<p>totalSize : ${resultMap.totalSize}</p>
<p>현재 pageIndex : ${resultMap.pageIndex}</p>
<p>마지막 lastPageIndex : ${resultMap.lastPageIndex}</p>
${resultMap.list}
</main>
</body>
</html>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,158 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : BbsListR.jsp
Description : 게시판 > 게시판 관리 > 게시판 목록
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2023-12-06 최범식 최초 생성
2023-04-11 추지훈 수정
--%>
<div class="form-control-container">
<div class="left">
<div class="search-number">
<span class="search-number__text">총 <strong><c:out value="${resultMap.paginationInfo.totalRecordCount }"/></strong>건</span>
</div>
</div>
<div class="center">
</div>
<div class="right">
<div class="select-box">
<select id="pageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_bbs_list('1')">
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paginationInfo.recordCountPerPage eq pageUnit}">selected="selected"</c:if>><c:out value="${ pageUnit }"/>개씩</option>
</c:forEach>
</select>
</div>
</div>
</div>
<hr class="horizontal-line">
<div class="form-control-container">
<div class="left">
</div>
<div class="center">
</div>
<div class="right">
<a href="#word1" rel="modal:open" class="btn outline sm" onclick="fn_get_bbsSlangSetup();">비속어 설정</a>
<button type="button" class="btn primary sm" onclick="fn_move_bbsRegist();">게시판 <spring:message code="button.insert"/></button>
</div>
</div>
<hr class="spacing">
<div class="table-wrapper">
<table class="table vertical">
<caption>게시판 목록</caption>
<!-- 각 열 width 설정 -->
<colgroup>
<col style="width: 5%;">
<col style="width: 8%;">
<col style="width: auto;">
<col style="width: 12%;">
<col style="width: 5%;">
<col style="width: 5%;">
<col style="width: 5%">
<col style="width: 5%">
<col style="width: 7%">
<col style="width: 10%">
<col style="width: 10%">
<col style="width: 10%">
</colgroup>
<thead>
<tr>
<th rowspan="2">번호</th>
<th rowspan="2">유형</th>
<th rowspan="2">게시판명</th>
<th rowspan="2">게시판 아이디</th>
<th colspan="4">사용자 권한</th>
<th rowspan="2">게시글 수</th>
<th rowspan="2">화면보기</th>
<th rowspan="2">게시글</th>
<th rowspan="2">관리</th>
</tr>
<tr>
<th>읽기</th>
<th>쓰기</th>
<th>답글</th>
<th>댓글</th>
</tr>
</thead>
<tbody>
<c:if test="${!empty resultMap.bbsList}">
<c:forEach var="bbs" items="${resultMap.bbsList }" varStatus="status">
<tr>
<td><c:out value="${ resultMap.paginationInfo.totalRecordCount - bbs.rnum + 1 }" /></td>
<td><c:out value="${bbs.bbsTyCdNm }"/></td>
<td><c:out value="${bbs.bbsNm }"/></td>
<td><c:out value="${bbs.bbsId }"/></td>
<td>
<c:set var="redngAuthor" value="${bbs.bbscttRedngAuthorDvCdNm }" />
<c:if test="${ bbs.bbscttRedngUseAt eq 'N' }" >
<c:set var="redngAuthor" value="미사용" />
</c:if>
<c:out value="${redngAuthor }"/>
</td>
<td>
<c:set var="registAuthor" value="${bbs.bbscttRegistAuthorDvCdNm }" />
<c:if test="${ bbs.bbscttRegistUseAt eq 'N' }" >
<c:set var="registAuthor" value="미사용" />
</c:if>
<c:out value="${registAuthor }"/>
</td>
<td>
<c:set var="answRegistAuthor" value="${bbs.answRegistAuthorDvCdNm }" />
<c:if test="${ bbs.answRegistUseAt eq 'N' }" >
<c:set var="answRegistAuthor" value="미사용" />
</c:if>
<c:out value="${answRegistAuthor }"/>
</td>
<td>
<c:set var="cmRegistAuthor" value="${bbs.cmRegistAuthorDvCdNm }" />
<c:if test="${ bbs.cmRegistUseAt eq 'N' }" >
<c:set var="cmRegistAuthor" value="미사용" />
</c:if>
<c:out value="${cmRegistAuthor }"/>
</td>
<td><fmt:formatNumber value="${bbs.total}" pattern="#,###"/></td>
<td>
<div class="manage-btn-container">
<c:if test="${( bbs.bbsTyCd eq '01' && bbs.useAt eq 'Y' ) || ( bbs.bbsTyCd eq '02' && bbs.useAt eq 'Y' ) || ( bbs.bbsTyCd eq '03' && bbs.useAt eq 'Y' ) || ( bbs.bbsTyCd eq '04' && bbs.useAt eq 'Y' ) || ( bbs.bbsTyCd eq '09' && bbs.useAt eq 'Y' ) || ( bbs.bbsTyCd eq '10' && bbs.useAt eq 'Y' ) || ( bbs.bbsTyCd eq '11' && bbs.useAt eq 'Y' ) }">
<button class="btn xsm outline" onclick="fn_move_sopmal_bbs_list('${bbs.bbsId }', '<c:out value="${ bbs.bbsTyCd }"/>'); return false;">사용자 보기</button>
</c:if>
</div>
</td>
<td>
<div class="manage-btn-container">
<button type="button" class="btn xsm outline" onclick="fn_goto_board('${bbs.bbsId }', '<c:out value="${ bbs.bbsTyCd }"/>');">게시글 보기</button>
</div>
</td>
<td>
<div class="manage-btn-container">
<c:set var="btnText" value="수정" />
<c:if test="${bbs.bbsTyCd eq '01' }" >
<c:set var="btnText" value="수정/복사/삭제" />
</c:if>
<a href="#" class="btn xsm primary outline" onclick="fn_goto_detail('${bbs.bbsId }');"><c:out value="${btnText }" /></a>
</div>
</td>
</tr>
</c:forEach>
</c:if>
<c:if test="${empty resultMap.bbsList }">
<tr>
<td class="row-no-data" colspan="12">조회된 데이터가 없습니다.</td>
</tr>
</c:if>
</table>
</div>
<div class="pagination__container">
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_bbs_list" />
</div>
</div>

View File

@@ -0,0 +1,489 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : BbsListR.jsp
Description : 게시판 > 게시판 관리 > 게시판 목록
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2023-12-06 최범식 최초 생성
2024--4-25 추지훈 수정
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
</head>
<script>
$(document).ready(function(){
let pageIndex = '<c:out value="${ resultMap.boBbsVo.pageIndex }"/>';
let pageUnit = '<c:out value="${ resultMap.boBbsVo.pageUnit }"/>';
let pageDv = '<c:out value="${ resultMap.boBbsVo.pageDv }"/>';
if (pageDv === '') {
fn_select_bbs_list(pageIndex, pageUnit);
} else {
fn_select_bbs_list('1', '10');
}
$('#srchWord').keydown(function(event) {
if (event.keyCode === 13) {
event.preventDefault();
fn_select_bbs_list('1');
};
});
});
/* ********************************************************
* 게시판 체크버튼 이벤트
******************************************************** */
const fn_change_event = function(_target, _arg) {
if (_arg === 'all') {
if ($('#' + _target + '-all').is(':checked')){
$('[name=' + _target + 'Arr]').prop('checked', true);
} else {
$('[name=' + _target + 'Arr]').prop('checked', false);
}
} else {
let chkCnt = $('[name=' + _target + 'Arr]:checked').length;
let allCnt = $('[name=' + _target + 'Arr]').length;
if (chkCnt !== allCnt && $('#' + _target + '-all').is(':checked')) {
$('#' + _target + '-all').prop('checked', false);
} else if (chkCnt !== allCnt && !$('#' + _target + '-all').is(':checked') && allCnt - chkCnt === 1 ) {
$('#' + _target + '-all').prop('checked', true);
} else if (chkCnt === allCnt ) {
$('#' + _target + '-all').prop('checked', true);
}
}
}
/**********************************************
* 게시판 검색 초기화
***********************************************/
const fn_reset_srchForm = function() {
$('[name=srchWord]').val('');
$('[name=srchBbsTyCdArr]').prop('checked', true);
$('[name=srchSknTyCdArr]').prop('checked', true);
$('#srchBbsTyCd-all').prop('checked', true);
$('#srchSknTyCd-all').prop('checked', true);
}
/* ********************************************************
* 게시판 목록조회
******************************************************** */
const fn_select_bbs_list = function(pageIndex, pageUnit) {
if(pageIndex == undefined) {
$('#srchForm').find('[name=pageIndex]').val('1');
} else {
$('#srchForm').find('[name=pageIndex]').val(pageIndex);
}
let params = $('#srchForm').serialize();
if(pageUnit != undefined) {
params += '&pageUnit=' + pageUnit;
} else {
params += '&pageUnit=' + $('#pageUnit').val();
}
$.ajax({
type : 'post',
url : '<c:url value="/mngr/bbs/bbsmngr/selectBbsListInqire"/>',
data : params,
success : function(data) {
$('#pageDiv').html(data);
$('#pageUnit').niceSelect();
}
});
}
/**********************************************
* 게시판 등록 화면 이동
***********************************************/
const fn_move_bbsRegist = function() {
fn_set_srchData();
$('#srchForm').attr('action', '<c:url value="/mngr/bbs/bbsmngr/selectBbsRegistForm"/>');
$('#srchForm').submit();
};
/**********************************************
* 게시판 수정 화면 이동
***********************************************/
const fn_goto_detail = function(_value){
fn_set_srchData();
$('#srchForm').find('[name=bbsId]').val(_value);
$('#srchForm').attr('action', '<c:url value="/mngr/bbs/bbsmngr/selectBbsDtlUpdtForm"/>');
$('#srchForm').submit();
}
/**********************************************
* 선택 게시판 화면 이동
***********************************************/
const fn_goto_board = function(_value, bbsTyCd) {
$('[name=bbsId]').val(_value);
if (bbsTyCd === '05') {
// $('#srchForm').attr('action', '<c:url value="/mngr/bbs/goodsqna/selectQnaListInqireForm"/>');
$('#srchForm').attr('action', '<c:url value="/mngr/bbs/gnrlsctt/selectBbscttListInqireForm"/>');
} else if (bbsTyCd === '06' || bbsTyCd === '07') {
$('#srchForm').attr('action', '<c:url value="/mngr/bbs/rvw/selectRvwListInqireForm"/>');
} else {
$('#srchForm').attr('action', '<c:url value="/mngr/bbs/gnrlsctt/selectBbscttListInqireForm"/>');
}
$('#srchForm').attr('method', 'post');
$('#srchForm').submit();
}
/**********************************************
* 게시판 화면 이동 데이타
***********************************************/
const fn_set_srchData = function(){
let srchBbsTyCd = '';
$('[name=srchBbsTyCdArr]:checked').each(function(){
srchBbsTyCd += '$' + $(this).val();
});
$('[name=srchBbsTyCd]').val(srchBbsTyCd.substring(1));
let srchSknTyCd = '';
$('[name=srchSknTyCdArr]:checked').each(function(){
srchSknTyCd += '$' + $(this).val();
});
$('[name=srchSknTyCd]').val(srchSknTyCd.substring(1));
}
/**
* 검색 후 새로 고침 시 검색조건 리셋
*/
history.replaceState({}, null, location.pathname);
/************************************************************************
* 사용자 게시판 이동
************************************************************************/
const fn_move_user_board = function() {
}
</script>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">게시판 리스트</h2>
<div class="page-title__btn-container">
<%-- 2024-07-10 삭제
<a href="#domain1" rel="modal:open" class="btn outline" onclick="fn_get_guidancePermDomnFile();">
<i class="icon icon_info"></i>허용 도메인/파일
</a>
--%>
<div class="select-box">
<select title="주요게시판" onchange="fn_goto_board(this.value);">
<option value="">게시판</option>
<c:forEach var="mainBbs" items="${resultMap.formList[0].bbsList }" varStatus="status">
<option value="${mainBbs.cd }"><c:out value="${mainBbs.cdNm }"/></option>
</c:forEach>
</select>
</div>
</div>
</div>
<form id="srchForm">
<input type="hidden" name="sopmalCd" value="${resultMap.sopmalCd }"/>
<input type="hidden" name="pageIndex" value="1"/>
<input type="hidden" name="srchBbsTyCd" value="${resultMap.srchList[0].srchBbsTyCd }" />
<input type="hidden" name="srchSknTyCd" value="${resultMap.srchList[0].srchSknTyCd }" />
<input type="hidden" name="bbsId" value="" />
<section class="content-section">
<div class="table-wrapper">
<table class="table">
<caption>게시판 조회 영역</caption>
<colgroup>
<col style="width: 13%;">
<col>
</colgroup>
<tbody>
<tr>
<th>게시판명/아이디<c:out value="${ resultMap.boBbsVo.srchWord }"/></th>
<td>
<div class="td-inner">
<input type="text" class="input-text xl" id="srchWord" name="srchWord" title="게시판명/아이디" value="<c:out value="${ resultMap.boBbsVo.srchWord }"/>" />
</div>
</td>
</tr>
<tr>
<th>유형</th>
<td>
<div class="td-inner">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox check-all">
<input type="checkbox" id="srchBbsTyCd-all" name="srchBbsTyCdArr" ${f:setChecked('', resultMap.boBbsVo.srchBbsTyCd) } value="" onclick="fn_change_event('srchBbsTyCd', 'all');"/>
<span class="check"></span>
<span class="control-label">전체</span>
</label>
<c:forEach var="cgo021" items="${resultMap.formList[0].codeList[0].cgo021 }" varStatus="status">
<c:if test="${'08' ne cgo021.cd }" >
<label class="b-checkbox checkbox">
<input type="checkbox" name="srchBbsTyCdArr" value="${cgo021.cd }" ${f:setChecked(fn:contains(resultMap.boBbsVo.srchBbsTyCd, cgo021.cd), true)} onclick="fn_change_event('srchBbsTyCd', 'other');"/>
<span class="check"></span>
<span class="control-label"><c:out value="${cgo021.cdNm }"/></span>
</label>
</c:if>
</c:forEach>
</div>
</div>
</td>
</tr>
<tr>
<th>스킨</th>
<td>
<div class="td-inner">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox check-all">
<input type="checkbox" id="srchSknTyCd-all" name="srchSknTyCdArr" ${f:setChecked('', resultMap.boBbsVo.srchSknTyCd) } value="" onclick="fn_change_event('srchSknTyCd', 'all');">
<span class="check"></span>
<span class="control-label">전체</span>
</label>
<c:forEach var="cgo022" items="${resultMap.formList[0].codeList[0].cgo022}" varStatus="status">
<label class="b-checkbox checkbox">
<input type="checkbox" name="srchSknTyCdArr" value="${cgo022.cd }" ${f:setChecked(fn:contains(resultMap.boBbsVo.srchSknTyCd, cgo022.cd), true)} onclick="fn_change_event('srchSknTyCd', 'other');"/>
<span class="check"></span>
<span class="control-label"><c:out value="${cgo022.cdNm }"/></span>
</label>
</c:forEach>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="form-control-container">
<div class="left"></div>
<div class="center">
<button type="button" class="btn outline" onclick="fn_reset_srchForm();"><spring:message code="button.init"/></button>
<button type="button" class="btn primary" onclick="fn_select_bbs_list('1');"><spring:message code="button.search"/></button>
</div>
<div class="right"></div>
</div>
</section>
<section class="content-section">
<div id="pageDiv"></div>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
<!-- 허용 도메인 모달 -->
<div id="domain1" class="modal" style="max-width: 600px;">
<div class="modal-header">
<h4>허용 도메인/파일</h4>
</div>
<div class="modal-content">
<div class="table-wrapper">
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 32%;">
<col>
</colgroup>
<tbody>
<tr>
<th>iframe 허용 도메인</th>
<td>
<div class="td-inner">
<textarea class="textarea" id="permDomn" title="iframe 허용 도메인" rows="4" ></textarea>
</div>
</td>
</tr>
<tr>
<th>허용 파일 확장자</th>
<td>
<div class="td-inner">
<textarea class="textarea" id="permFilExtsn" title="허용 파일 확장자" rows="4" ></textarea>
</div>
</td>
</tr>
<tr>
<th>허용 이미지확장자</th>
<td>
<div class="td-inner">
<textarea class="textarea" id="permImgExtsn" title="허용 이미지확장자" rows="4" ></textarea>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="modal-footer">
<a href="#" rel="modal:close" class="btn outline"><spring:message code="button.cancel"/></a>
<button class="btn primary outline" onclick="fn_update_guidancePermDomnFile();"><spring:message code="button.save"/></button>
</div>
</div>
<script>
/**********************************************
* 게시판 허용도메인|파일 설정
***********************************************/
const fn_get_guidancePermDomnFile = function() {
// todo: setupInfoInnb 삭제
let setupInfoInnb = '1';
const url = '<c:url value="/mngr/bbs/bbsmngr/selectGuidancePermDomnFilPopup?setupInfoInnb="/>' + setupInfoInnb;
$.ajax({
type : 'get',
url : url,
success : function(data) {
$('#permDomn').val(JSON.parse(data.resBody.result).boBbsSetupVo.permDomn);
$('#permFilExtsn').val(JSON.parse(data.resBody.result).boBbsSetupVo.permFilExtsn);
$('#permImgExtsn').val(JSON.parse(data.resBody.result).boBbsSetupVo.permImgExtsn);
}
});
}
/**********************************************
* 게시판 허용도메인|파일 수정
***********************************************/
const fn_update_guidancePermDomnFile = function() {
// todo: setupInfoInnb 삭제
let setupInfoInnb = '1';
let permDomn = $('#permDomn').val();
let permFilExtsn = $('#permFilExtsn').val();
let permImgExtsn = $('#permImgExtsn').val();
let params = {
'setupInfoInnb' : setupInfoInnb,
'permDomn' : permDomn,
'permFilExtsn' : permFilExtsn,
'permImgExtsn' : permImgExtsn
}
if (confirm('허용도메인|파일 설정을 <spring:message code="confirm.common.update"/>')) {
$.ajax({
type : 'post',
url : '<c:url value="/mngr/bbs/bbsmngr/updateGuidancePermDomnFil"/>',
data : params,
success : function(data) {
if (JSON.parse(data.resBody.result).message === 'fail') {
alert('<spring:message code="fail.common.update"/>')
return;
}
alert('<spring:message code="success.common.update"/>');
/*
$('#permDomn').val(JSON.parse(data.resBody.result).boBbsSetupVo.permDomn);
$('#permFilExtsn').val(JSON.parse(data.resBody.result).boBbsSetupVo.permFilExtsn);
$('#permImgExtsn').val(JSON.parse(data.resBody.result).boBbsSetupVo.permImgExtsn);
*/
$('#closeSlangPopup').trigger('click');
}
});
}
}
</script>
<!-- 비속어 설정 모달 -->
<div id="word1" class="modal" style="max-width: 600px;">
<div class="modal-header">
<h4>비속어 기본설정</h4>
</div>
<div class="modal-content">
<div class="table-wrapper">
<textarea class="textarea" id="mskgSlang" title="기본 비속어" rows="20">
</textarea>
<p class="mr-4 mt-10 text-right">
<span class="fyi red-7 fw-500">
비속어 금지어는 ' | ' 로 구분합니다.
</span>
</p>
</div>
</div>
<div class="modal-footer">
<a href="#" rel="modal:close" class="btn outline" id="closeSlangPopup" ><spring:message code="button.cancel"/></a>
<button class="btn primary outline" onclick="fn_update_bbsSlangSetup();"><spring:message code="button.save"/></button>
</div>
</div>
<script>
/**********************************************
* 게시판 비속어 설정 > 수정 저장
***********************************************/
const fn_update_bbsSlangSetup = function() {
let setupInfoInnb = '1';
let mskgSlang = $('#mskgSlang').val();
let data = {
setupInfoInnb : setupInfoInnb,
mskgSlang : mskgSlang
};
const url = '<c:url value="/mngr/bbs/bbsmngr/updateSlangSetupRegist"/>';
if (confirm('비속어 설정을 <spring:message code="confirm.common.update"/>')) {
$.ajax({
type : 'post',
url : url,
data : data,
success : function(data) {
if (JSON.parse(data.resBody.result).message === 'fail') {
alert('<spring:message code="fail.common.update"/>')
return;
}
alert('<spring:message code="success.common.update"/>');
/*
$('#mskgSlang').val(JSON.parse(data.resBody.result).boBbsSetupVo.mskgSlang);
*/
$('#closeSlangPopup').trigger('click');
}
});
}
};
/**********************************************
* 게시판 비속어 설정
***********************************************/
const fn_get_bbsSlangSetup = function() {
let setupInfoInnb = '1';
const url = '<c:url value="/mngr/bbs/bbsmngr/selectSlangDftSetupPopupForm?setupInfoInnb="/>' + setupInfoInnb;
$.ajax({
type : 'get',
url : url,
success : function(data) {
$('#mskgSlang').val(JSON.parse(data.resBody.result).boBbsSetupVo.mskgSlang);
}
});
};
</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,245 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : BbscttDshboardR.jsp
Description : 게시판 > 게시판 관리 > 게시글 대시보드
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2023-12-06 최범식 최초 생성
2023-04-11 추지훈 수정
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
</head>
<script>
$( document ).ready(function() {
/* $('.close-modal').click(function() {
$('#closeSetupPopup').trigger('click');
fn_reset_modal();
}); */
fn_get_dashboardList();
$('input').keydown(function(event) {
if (event.keyCode === 13) {
event.preventDefault();
};
});
$("#bbsList").on("change",function(){
fn_move_bbs();
});
});
/*********************************************************`
* 게시판 이동
*********************************************************/
const fn_move_bbs = function () {
let bbsId = $("#bbsList option:selected").val();
let bbsTyCd = $("#bbsList option:selected").attr("bbs-ty-cd");
let url;
if (bbsTyCd == '06' || bbsTyCd == '07') {
url = "/mngr/bbs/rvw/selectRvwListInqireForm";
} else if (bbsTyCd == '01'
|| bbsTyCd == '02'
|| bbsTyCd == '03'
|| bbsTyCd == '04'
|| bbsTyCd == '05'
|| bbsTyCd == '08'
|| bbsTyCd == '09'
|| bbsTyCd == '10'
|| bbsTyCd == '11'
) {
url = "/mngr/bbs/gnrlsctt/selectBbscttListInqireForm";
}
if (!$("#moveForm")) {
$("#moveForm").remove();
}
let form = $('<form></form>');
//폼 attr SET
form.attr("name", "form");
form.attr("method", "get");
form.attr("action", url);
// bbsId input 생성
form.append($('<input/>', {type: 'hidden', name: 'bbsId', value: bbsId}));
// 바디에 추가
form.appendTo($("#moveForm"));
form.submit();
}
</Script>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button type="button" class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">최근 게시글 리스트</h2>
<div class="page-title__btn-container">
<div class="select-box">
<select class="md" title="게시판 리스트" id = "bbsList">
<option var="" selected disabled>게시판</option>
<c:forEach var="bbs" items="${resultMap.comboBbsList }" varStatus="status">
<option value="${bbs.bbsId}" bbs-ty-cd="<c:out value="${bbs.bbsTyCd}"/>"><c:out value="${bbs.bbsNm }" /> (<fmt:formatNumber value="${bbs.bbscttTot }" pattern="#,###"/>)</option>
</c:forEach>
</select>
</div>
<div id="moveForm"></div>
<a href="#board-setting-modal" rel="modal:open" class="btn primary" onclick="fn_get_setupList();">게시판 보기 설정</a>
</div>
</div>
<div id="pageDiv"></div>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
<Script>
/* ********************************************************
* 대시보드 리스트
******************************************************** */
const fn_get_dashboardList = function() {
$.ajax({
type : 'post',
url : '<c:url value="/mngr/bbs/bbsmngr/selectBbscttDshboardInqire"/>',
success : function(data) {
$('#pageDiv').empty();
$('#pageDiv').html(data);
}
});
}
/* ********************************************************
* 게시판 보기 설정 > 리스트 호출
******************************************************** */
const fn_get_setupList = function() {
$.ajax({
type : 'get',
url : '<c:url value="/mngr/bbs/bbsmngr/selectMainBbsExpsrSetupPopupForm"/>',
success : function(data) {
let infor = JSON.parse(data.resBody.result);
fn_reset_modal();
fn_make_optionTag(infor.setupExposureBbsList, infor.setupMainBbsList);
}
});
}
/* ********************************************************
* 게시판 보기 설정 > 화면 세팅
******************************************************** */
const fn_make_optionTag = function(_exp, _main) {
let exposureList = _exp;
let mainList = _main;
let optagE = '';
if (exposureList) {
exposureList.forEach((exp) => {
optagE += '<option value=" ' + exp.bbsId + ' "> ' + exp.bbsNm + '(' + exp.total + ') </option>';
});
}
$('#bbsE').append(optagE);
let optagM = '';
if (mainList) {
mainList.forEach((min) => {
optagM += '<option value=" ' + min.bbsId + ' "> ' + min.bbsNm + '(' + min.total + ') </option>';
});
}
$('#bbsM').append(optagM);
}
/* ********************************************************
* 모달 창 초기화
******************************************************** */
const fn_reset_modal = function() {
$('#bbsM').find('option').remove();
$('#bbsE').find('option').remove();
}
/* ********************************************************
* 게시판 보기 설정 > 변경 사항 저장
******************************************************** */
const fn_setup_showList = function() {
let nonExp = $('#bbsM').find('option').map(function() { return $(this).val(); }).get();
let exp = $('#bbsE').find('option').map(function() { return $(this).val(); }).get();
if (!confirm('게시판보기 설정을 <spring:message code="confirm.common.update"/>')) return;
let params = {
'nonExpArr' : nonExp,
'expArr' : exp
}
$.ajax({
type : 'post',
url : '<c:url value="/mngr/bbs/bbsmngr/updateMainBbsExpsrSetupUpdt"/>',
data : params,
success : function(data) {
alert('<spring:message code="success.common.update"/>');
$('#closeSetupPopup').trigger('click');
fn_get_dashboardList();
}
});
}
</Script>
<!-- 게시판 보기 설정 모달 -->
<div id="board-setting-modal" class="modal" style="max-width: 620px;">
<div class="modal-header">
<h4>주요 게시판 보기 설정</h4>
</div>
<div class="modal-content">
<div class="board-setting">
<div class="board-setting__left">
<h5 class="board-setting__title">게시판</h5>
<select class="board-setting__select" multiple id="bbsM">
</select>
</div>
<div class="board-setting__center">
<button class="board-setting__move-btn right"><span class="visually-hidden">오른쪽으로</span></button>
<button class="board-setting__move-btn left"><span class="visually-hidden">왼쪽으로</span></button>
</div>
<div class="board-setting__right">
<h5 class="board-setting__title">노출 게시판</h5>
<select class="board-setting__select" multiple id="bbsE">
</select>
<div class="board-setting__controls">
<button class="btn xsm outline top">처음</button>
<button class="btn xsm outline up">위로</button>
<button class="btn xsm outline down">아래로</button>
<button class="btn xsm outline bottom">마지막</button>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<a href="#" rel="modal:close" class="btn outline" id="closeSetupPopup" onclick="fn_reset_modal();">취소</a>
<button type="button" class="btn primary" onclick="fn_setup_showList();" >저장</button>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,103 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%--
Class Name : BbscttDshboardR.jsp
Description : 게시판 > 게시판 관리 > 게시글 대시보드
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2023-12-06 최범식 최초 생성
2023-04-11 추지훈 수정
--%>
<div class="content-section__col-2-container">
<c:if test="${not empty resultMap.showBbsList }" >
<c:forEach var="bbs" items="${resultMap.showBbsList }" varStatus="status" >
<section class="content-section">
<h3 class="content-section__title">
<c:out value="${bbs.bbsNm }" /><span>&nbsp;<fmt:formatNumber value="${bbs.bbscttTot}" pattern="#,###"/></span>건
</h3>
<div class="table-wrapper">
<table class="table vertical tight">
<caption>해당 테이블에 대한 설명</caption>
<!-- 각 열 width 설정 -->
<colgroup>
<col style="width: auto;">
<c:if test="${bbs.bbsTyCd eq '04' || bbs.bbsTyCd eq '05'}" >
<col style="width: 17%;">
</c:if>
<col style="width: 17%;">
<col style="width: 17%">
</colgroup>
<thead>
<tr>
<th>제목</th>
<c:if test="${bbs.bbsTyCd eq '04' || bbs.bbsTyCd eq '05'}" >
<th>상태</th>
</c:if>
<th>작성자</th>
<c:set var="title" value="등록일"/>
<c:if test="${bbs.bbsTyCd eq '04' || bbs.bbsTyCd eq '05'}" >
<c:set var="title" value="문의일"/>
</c:if>
<th>${title }</th>
</tr>
</thead>
<tbody>
<c:if test="${bbs.bbscttTot gt 0 }" >
<c:choose>
<c:when test = "${bbs.bbsTyCd eq '06' || bbs.bbsTyCd eq '07'}">
<c:set var = "url" value = "/mngr/bbs/rvw/selectRvwListInqireForm?bbsId="/>
</c:when>
<c:otherwise>
<c:set var = "url" value = "/mngr/bbs/gnrlsctt/selectBbscttListInqireForm?bbsId="/>
</c:otherwise>
</c:choose>
<c:forEach var="bbsctt" items="${bbs.bbscttList }" varStatus="statusBbsctt" begin="0" end="4">
<tr <c:if test = "${(bbs.bbsTyCd eq '04' || bbs.bbsTyCd eq '05') && bbsctt.status eq '답변대기'}">class="sendOut-info__reseller"</c:if>>
<td class="left">
<a href="<c:out value='${url}${bbs.bbsId}&bbscttInnb=${bbsctt.bbscttInnb}&dashAt=Y'/>">
<c:out value="${bbsctt.sj}"/>
<c:if test="${bbsctt.isfiles eq 1 || bbsctt.npayImage eq 'Y'}"><%--첨부파일여부--%>
<i class="icon icon_image-badge"></i>
</c:if>
<c:if test="${bbsctt.newAt eq 'Y'}"><%--새로운게시글여부--%>
<i class="icon icon_new-badge"></i>
</c:if>
<c:if test="${bbsctt.popularAt eq 'Y'}"><%--인기게시글여부--%>
<i class="icon icon_hot-badge"></i>
</c:if>
<c:if test="${ bbsctt.secretBbscttAt eq 'Y' }"><%--비밀글여부--%>
<i class="icon icon_lock"></i>
</c:if>
</a>
</td>
<c:if test="${bbs.bbsTyCd eq '04' || bbs.bbsTyCd eq '05'}" >
<td><c:out value="${bbsctt.status }" /></td>
</c:if>
<td><c:out value="${bbsctt.regusrNm }" /></td>
<td><c:out value="${bbsctt.registDt }" /></td>
</tr>
</c:forEach>
</c:if>
<c:if test="${bbs.bbscttTot eq 0 }" >
<tr>
<td colspan="4">등록된 게시글이 없습니다.</td>
</tr>
</c:if>
</tbody>
</table>
</div>
<a href="<c:out value="${url}${bbs.bbsId}"/>" class="content-section__col-2-more">+ 더보기</a>
</section>
</c:forEach>
</c:if>
<c:if test="${empty resultMap.showBbsList}">
<section class="content-section">
<div>설정된 노출게시판이 없습니다.</div>
</section>
</c:if>
</div>

View File

@@ -0,0 +1,165 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%--
Class Name : CstmrCnsltDtlUpdtPopupR.jsp
Description : 통합상담 상세 팝업
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-01-26 추지훈 최초 생성
--%>
<script>
$(document).ready(function() {
$('select').niceSelect();
// input 반복
<%-- $('input[type="text"]').each(function() {
// 현재값 확인
var inputValue = $(this).val();
// 값이 있으면 readonly 처리
if (inputValue.trim() !== "") {
$(this).prop('readonly', true);
}
}); --%>
});
</script>
<!-- 상담 내역 수정 팝업 -->
<div id="cntmrCnsltDtlPopup" class="modal">
<div class="modal-header">
<h4>상담 내역 수정</h4>
</div>
<form id="cnsltPopupForm" name="cnsltPopupForm" method="post">
<div class="modal-content">
<div class="table-wrapper mb-40">
<table class="table">
<caption>상담 내역</caption>
<colgroup>
<col style="width: 25%;">
<col>
</colgroup>
<tbody>
<tr>
<th>상담번호</th>
<td>
<div class="td-inner">
<c:out value="${resultMap.cnsltVO.cnsltDtlsInnb}"/>
<input type="hidden" id="cnsltDtlsInnb" name="cnsltDtlsInnb" value="<c:out value="${resultMap.cnsltVO.cnsltDtlsInnb}"/>" readonly/>
</div>
</td>
</tr>
<tr>
<th>상담자</th>
<td>
<div class="td-inner">
<input type="text" id="mngrNm" name="mngrNm" value="<c:out value="${ resultMap.cnsltVO.mngrNm }"/>" readonly/>
</div>
</td>
</tr>
<tr>
<th>인콜/아웃콜</th>
<td>
<div class="td-inner">
<c:forEach var="codeList" items="${ resultMap.telnbDvCdList }" varStatus="">
<c:if test="${codeList.cd eq resultMap.cnsltVO.telnbDvCd}">
<c:out value="${ codeList.cdNm }"/>
</c:if>
</c:forEach>
</div>
</td>
</tr>
<tr>
<th>주문번호</th>
<td>
<div class="td-inner">
<input class="input-text full" type="text" id="ordrNb" name="ordrNb" value="<c:out value="${ resultMap.cnsltVO.ordrInnb }"/>" title="주문번호" >
</div>
</td>
</tr>
<tr>
<th>출고번호</th>
<td>
<div class="td-inner">
<input class="input-text full" type="text" id="dlivyInnb" name="dlivyInnb" value="<c:out value="${ resultMap.cnsltVO.dlivyCdNb }"/>" title="출고번호" placeholder="ex) D25020511900000">
</div>
</td>
</tr>
<tr>
<th>반품환불번호</th>
<td>
<div class="td-inner">
<input class="input-text full" type="text" id="refndCdNb" name="refndCdNb" value="<c:out value="${ resultMap.cnsltVO.refundCdNb }"/>" title="환불번호" placeholder="ex) C25021118500000">
</div>
</td>
</tr>
<tr>
<th>상품문의</th>
<td>
<div class="td-inner">
<input class="input-text full" type="text" id="goodsInqryBbscttNb" name="goodsInqryBbscttNb" value="<c:out value="${ resultMap.cnsltVO.goodsInqryBbscttNb }"/>" title="상품문의">
</div>
</td>
</tr>
<tr>
<th>상품후기</th>
<td>
<div class="td-inner">
<input class="input-text full" type="text" id="goodsRvwBbscttNb" name="goodsRvwBbscttNb" value="<c:out value="${ resultMap.cnsltVO.goodsRvwBbscttNb }"/>" title="상품후기">
</div>
</td>
</tr>
<tr>
<th>처리상태</th>
<td>
<div class="td-inner">
<div class="select-box">
<select id="procsSttusCd" name="procsSttusCd" title="처리상태">
<c:forEach var="codeList" items="${ resultMap.procsSttusCdList }" varStatus="">
<option value="<c:out value="${ codeList.cd }"/>" <c:if test="${ codeList.cd eq resultMap.cnsltVO.procsSttusCd }">selected="selected"</c:if>>
<c:out value="${ codeList.cdNm }"/>
</option>
</c:forEach>
</select>
</div>
</div>
</td>
</tr>
<tr>
<th colspan="2" class="text-center">상담내용</th>
</tr>
<tr>
<td colspan="2" class="border-left border-right">
<textarea class="textarea" id="cnsltCn" name="cnsltCn" title="상담내용" cols="30" rows="10"><c:out value="${ resultMap.cnsltVO.cnsltCn }"/></textarea>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</form>
<div class="modal-footer">
<a href="#" rel="modal:close" class="btn outline">취소</a>
<button class="btn primary" type="button" onclick="fn_updt_cnslt(); return false;"><spring:message code="button.update"/></button>
</div>
</div>

View File

@@ -0,0 +1,186 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%--
Class Name : CstmrCnsltUnityBbscttListR.jsp
Description : 고객상담 통합게시판 목록조회 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-01-26 추지훈 최초 생성
--%>
<script>
</script>
<%-- 고객상담 통합게시판 목록 조회 영역 START --%>
<section class="content-section">
<div class="form-control-container">
<div class="left">
<div class="search-number">
<span class="search-number__text">총 <strong><c:out value="${ resultMap.paginationInfo.totalRecordCount }"/></strong>건</span>
</div>
</div>
<div class="center">
</div>
<div class="right">
<div class="select-box">
<select id="pageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_unity_cnslt_list('1');">
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paginationInfo.recordCountPerPage eq pageUnit}">selected="selected"</c:if>><c:out value="${ pageUnit }"/>개씩</option>
</c:forEach>
</select>
</div>
</div>
</div>
<hr class="spacing">
<div class="table-wrapper">
<table class="table vertical">
<caption>고객상담 통합 목록</caption>
<!-- 각 열 width 설정 -->
<colgroup>
<col style="width: 3%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 8%;">
<col style="width: auto;">
<col style="width: 20%;">
<col style="width: 8%;">
<col style="width: 7%;">
<col style="width: 7%;">
</colgroup>
<thead>
<tr>
<th>번호</th>
<th>아이디or전화번호</th>
<th>이름</th>
<th>등급</th>
<th>상담 내용</th>
<th>관련 번호</th>
<th>상담일</th>
<th>처리 여부</th>
<th>상담자</th>
</tr>
</thead>
<form>
<tbody>
<c:choose>
<c:when test="${ not empty resultMap.resultList && fn:length(resultMap.resultList) > 0 }">
<c:forEach items="${ resultMap.resultList }" var="cnsltList" varStatus="status">
<tr>
<td>
<c:out value="${ resultMap.paginationInfo.totalRecordCount - cnsltList.rnum + 1 }" />
<input type="hidden" id="cnsltDtlsInnb" name="cnsltDtlsInnb" value="<c:out value="${ cnsltList.cnsltDtlsInnb }" />"/>
</td>
<td>
<span class="blue-7">
<c:choose>
<c:when test="${cnsltList.mbrInnb > 0}">
<button data-info="info01"
type="button"
onclick="fn_select_crm_mini_info(this, '<c:out
value="${ cnsltList.mbrInnb }"/>', '<c:out
value="${ cnsltList.mbrDvCd }"/>', '#modalDiv'); return false;">
<c:choose>
<c:when test="${cnsltList.joinMthCd eq 'kakao'}"><%--kakao--%>
<i class="icon icon_word-badge_kakao"></i>
</c:when>
<c:when test="${cnsltList.joinMthCd eq 'naver'}"><%--naver--%>
<i class="icon icon_word-badge08"></i>
</c:when>
<c:when test="${cnsltList.joinMthCd eq 'pos'}"><%--pos--%>
<i class="icon icon_word-badge_pos"></i>
<span class="fw-500 blue-7">
<c:out value="${cnsltList.mbrId}"/>
</span>
</c:when>
<c:otherwise>
<span><c:out
value="${cnsltList.mbrId}"/></span>
</c:otherwise>
</c:choose>
</button>
</c:when>
<c:otherwise>
<button type="button" class="nmbr" onclick="fn_select_crm_mini_info_nmbr(this, '<c:out value="${cnsltList.telnb}"/>', '', '', '#modalDiv')" data-info="info01">
<c:out value="${cnsltList.telnb}"/>
</button>
</c:otherwise>
</c:choose>
</span>
</td>
<td><c:out value="${ cnsltList.mbrNm }"/></td>
<td><c:out value="${ cnsltList.gradNm }"/></td>
<td class="text-left">
<span class="blue-6 fw-500" style="cursor: pointer; white-space: pre-wrap;" onclick="fn_open_modal_cnslt_dtl_popup('#cnsltDtlPopupDiv', '#cntmrCnsltDtlPopup', '<c:url value="/mngr/bbs/cnslt/selectCstmrCnsltDtlUpdtInqirePopup"/>', '<c:out value="${ cnsltList.cnsltDtlsInnb }"/>' ); return false;"><c:out value="${ cnsltList.cnsltCn }"/></span>
</td>
<td>
<c:if test="${not empty cnsltList.ordrInnb}">
주문번호 : <a class="blue-6 fw-500" onclick="fn_move_dtlpage('ordr',this); return false;" style="cursor:pointer"><c:out value="${cnsltList.ordrInnb }"/></a><br>
</c:if>
<c:if test="${not empty cnsltList.dlivyCdNb}">
출고코드 : <a class="blue-6 fw-500" onclick="fn_move_dtlpage('export',this); return false;" style="cursor:pointer"><c:out value="${cnsltList.dlivyCdNb }"/></a><br>
</c:if>
<c:if test="${not empty cnsltList.refundCdNb}">
반품환불코드 : <a class="blue-6 fw-500" onclick="fn_move_dtlpage('refund',this); return false;" style="cursor:pointer"><c:out value="${cnsltList.refundCdNb}"/></a><br>
</c:if>
<c:if test="${not empty cnsltList.goodsInqryBbscttNb}">
<a class="blue-6 fw-500" onclick="fn_move_dtlpage('qna',this); return false;" style="cursor:pointer">상품문의</a><br>
</c:if>
<c:if test="${not empty cnsltList.goodsRvwBbscttNb}">
<a class="blue-6 fw-500" onclick="fn_move_dtlpage('rvw',this); return false;" style="cursor:pointer">상품후기</a><br>
</c:if>
<input type = "hidden" value = "<c:out value = "${cnsltList.ordrInnb}"/>" class="ordrInnb"/>
<input type = "hidden" value = "<c:out value = "${cnsltList.dlivyInnb}"/>" class="dlivyInnb"/>
<input type = "hidden" value = "<c:out value = "${cnsltList.dlivyOrdrInnb}"/>" class="dlivyOrdrInnb"/>
<input type = "hidden" value = "<c:out value = "${cnsltList.orderRefundInnb}"/>" class="refundInnb"/>
<input type = "hidden" value = "<c:out value = "${cnsltList.refundOrdrInnb}"/>" class="refundOrdrInnb"/>
</td>
<td>
<c:out value="${ cnsltList.registDt }"/>
</td>
<td>
<c:choose>
<c:when test="${cnsltList.procsSttusCd eq '03'}">
<c:out value="${ cnsltList.procsSttusCdNm }"/><br>
<c:out value="${ cnsltList.procsDt }"/>
</c:when>
<c:otherwise>
<c:out value="${ cnsltList.procsSttusCdNm }"/>
</c:otherwise>
</c:choose>
</td>
<td>
<c:out value="${ cnsltList.mngrNm }"/>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="100%" ><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</form>
</table>
</div>
</section>
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_unity_cnslt_list" />
</div>

View File

@@ -0,0 +1,356 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : CstmrCnsltUnityBbscttListRForm.jsp
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-01-03 추지훈 최초생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<script>
$(document).ready(function() {
/*엔터시 검색 조회*/
$('#listForm').on('keydown', function(e) {
if (e.keyCode == 13) {
e.preventDefault();
$('#searchBtn').trigger("click");
}
});
// 처리상태 전체체크박스 제어
$('#srchProcsSttusCdDiv input[name="srchProcsSttusCd"]').click(function () {
var checkBoxAll = true;
$('#srchProcsSttusCdDiv input[name="srchProcsSttusCd"]').each(function () {
if (!$(this).prop('checked')) {
checkBoxAll = false;
}
});
$('#srchProcsSttusCdDiv .check-all input[type="checkbox"]').prop('checked', checkBoxAll);
});
/*페이징 설정*/
let pageIndex = '<c:out value="${ resultMap.paramVO.pageIndex }"/>';
let pageUnit = '<c:out value="${ resultMap.paramVO.pageUnit }"/>';
/*데이트 피커 설정*/
fn_set_date('srchStartDate','srchEndDate','srchEndDate');
$('#allDays').on('click', function () {
$('#srchStartDate, #srchEndDate').val('');
});
/*기본 조건 설정 후 조회*/
$('#sevenDays').click();
$("#srchProcsSttusAll").click();
fn_select_unity_cnslt_list(pageIndex, pageUnit);
});
/************************************************
* 관련번호 상세페이지 이동
*************************************************/
const fn_move_dtlpage = function (actionDv, target) {
let url;
if (actionDv === 'ordr') {//주문 상세 이동
let ordrInnb = $(target).closest("td").find(".ordrInnb").val();
url = '/mngr/ordr/ordrmngr/selectOrdrDtlInqire?ordrInnb=' + ordrInnb;
} else if (actionDv === 'export') {//출고 상세 이동
let dlivyInnb = $(target).closest("td").find(".dlivyInnb").val();
let dlivyOrdrInnb = $(target).closest("td").find(".dlivyOrdrInnb").val();
url = '/mngr/ordr/dlivy/selectDlivyDtlInqire?dlivyInnb=' + dlivyInnb + '&ordrInnb=' + dlivyOrdrInnb;
} else if (actionDv === 'refund' || actionDv === 'return') {//반품환불상세이동
let orderReInnb;
let ordrInnb;
if (actionDv === 'refund') {
orderReInnb = $(target).closest("td").find(".refundInnb").val();
ordrInnb = $(target).closest("td").find(".refundOrdrInnb").val();
} else {
orderReInnb = $(target).closest("td").find(".returnInnb").val();
ordrInnb = $(target).closest("td").find(".returnOrdrInnb").val();
}
url = '/mngr/ordr/refnd/selectRtngudRefndDtlInqire?ordrInnb=' + ordrInnb + '&orderReInnb=' + orderReInnb;
} else if (actionDv === 'qna') {//crm 상품문의 혹은 상품후기로 이동
url = "/mngr/bbs/gnrlsctt/selectBbscttListInqireForm?bbsId=goods_qna";
} else if(actionDv === 'rvw'){
url = "/mngr/bbs/rvw/selectRvwListInqireForm?bbsId=goods_review";
}
window.open(url, '_blank');
};
/************************************************
* 고객상담 통합게시판 목록 조회
*************************************************/
const fn_select_unity_cnslt_list = function(pageIndex, pageUnit) {
let dataStr;
if(!pageIndex) {
$('#pageIndex').val(1);
} else {
$('#pageIndex').val(pageIndex);
}
if(!pageUnit) {
dataStr = $('#listForm').serialize();
} else {
if($('#pageUnit').length){
$('#pageUnit').val(pageUnit);
dataStr = $('#listForm').serialize();
} else {
dataStr = $('#listForm').serialize()+'&pageUnit='+pageUnit;
}
}
$('#pageIndex').val(pageIndex);
$.ajax({
type: "post",
url : "<c:url value="/mngr/bbs/cnslt/selectCstmrCnsltUnityBbscttListInqire"/>",
data : dataStr,
success:function(resultHtml) {
$('#pageDiv').html(resultHtml);
$('#pageUnit').niceSelect();
//비회원 전화번호 포매팅
$(".nmbr").each(function(){
$(this).text(fn_format_mbtlnb($(this).text().trim()));
});
}
});
}
/************************************************
* 상담 상세 조회 모달
*************************************************/
const fn_open_modal_cnslt_dtl_popup = function(modalDivSltr, modalSlrt, url, param, callback) {
var cnsltDtlsInnb = param
$.ajax({
type: 'post',
url: url,
data: {
cnsltDtlsInnb : cnsltDtlsInnb
},
success: function (data) {
//callback함수가 없을 경우 default로 지정된 영역에 모달팝업 화면을 교체하고 화면 로딩
if(!callback) {
$(modalSlrt).remove();
$(modalDivSltr).html(data);
$(modalSlrt).modal();
} else {
callback(data);
}
}
});
};
/************************************************
* 삼당 수정
*************************************************/
const fn_updt_cnslt = function() {
let data = $('#cnsltPopupForm').serialize();
if (confirm('상담 내역을 <spring:message code="confirm.common.update"/>')) {
$.ajax({
type: 'post',
url: "/mngr/bbs/cnslt/updateCstmrCnsltUpdt",
data: data,
success: function (result) {
fn_close_modal('cntmrCnsltDtlPopup');
fn_select_unity_cnslt_list(1);
alert('<spring:message code="success.common.update"/>');
}
});
};
};
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">고객상담 통합게시판</h2>
<div class="page-title__btn-container">
</div>
</div>
<form id="listForm" name="listForm" method="post" >
<input type="hidden" id="cnsltDtlsInnb" name="cnsltDtlsInnb"/>
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value="${ resultMap.paramVO.pageIndex }"/>"/>
<input type="hidden" id="recordCountPerPage" name="recordCountPerPage" value="<c:out value="${ resultMap.paramVO.recordCountPerPage }"/> "/>
<input type="hidden" id="sopmalCd" name="sopmalCd"/>
<section class="content-section" id="unityCnsltSearchForm">
<div class="table-wrapper">
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 12%;">
<col>
</colgroup>
<tr>
<th>검색어</th>
<td>
<div class="td-inner">
<div class="select-box">
<select id="srchKeywordDv" name="srchKeywordDv" title="검색 키워드 구분">
<option value="">전체</option>
<option value="keywordName">회원명</option>
<option value="keywordId">아이디</option>
<option value="keywordPhone">전화번호</option>
</select>
</div>
<input class="input-text xl" type="text" id="srchKeyword" name="srchKeyword" title="해당 인풋에 대한 설명">
</div>
</td>
</tr>
<tr>
<th>등록일</th>
<td>
<div class="td-inner">
<div class="select-box">
<select id="srchDtDv" name="srchDtDv" title="해당 셀렉트에 대한 설명">
<option value="cnstlDt">상담일</option>
<option value="procsDt">처리일</option>
</select>
</div>
<div class="input-container">
<input type="text" name="srchStartDate" id="srchStartDate" class="datepicker" title="시작 날짜 선택" autocomplete="off" pattern="yyyy-MM-dd">
<span class="tilde">~</span>
<input type="text" name="srchEndDate" id="srchEndDate" class="datepicker" title="종료 날짜 선택" autocomplete="off" pattern="yyyy-MM-dd">
</div>
<div class="dateRange-btnContainer">
<button type="button" class="dateRange-btn" id="yesterday" onclick="fn_set_date('srchStartDate','srchEndDate','srchEndDate','1D')">어제</button>
<button type="button" class="dateRange-btn" id="today" onclick="fn_set_date('srchStartDate','srchEndDate','srchEndDate','0')">오늘</button>
<button type="button" class="dateRange-btn" id="threeDays" onclick="fn_set_date('srchStartDate','srchEndDate','srchEndDate','3D')">3일간</button>
<button type="button" class="dateRange-btn" id="sevenDays" onclick="fn_set_date('srchStartDate','srchEndDate','srchEndDate','7D')">일주일</button>
<button type="button" class="dateRange-btn" id="oneMonth" onclick="fn_set_date('srchStartDate','srchEndDate','srchEndDate','1M')">1개월</button>
<button type="button" class="dateRange-btn" id="threeMonth" onclick="fn_set_date('srchStartDate','srchEndDate','srchEndDate','3M')">3개월</button>
<button type="button" class="dateRange-btn" id="sixMonth" onclick="fn_set_date('srchStartDate','srchEndDate','srchEndDate','6M')">6개월</button>
<button type="button" class="dateRange-btn" id="oneYear" onclick="fn_set_date('srchStartDate','srchEndDate','srchEndDate','1Y')">1년</button>
<button type="button" class="dateRange-btn selected" id="allDays">전체</button>
</div>
</div>
</td>
</tr>
<tr>
<th>상담자</th>
<td>
<div class="td-inner">
<input class="input-text" type="text" id="srchMngrNm" name="srchMngrNm" title="해당 인풋에 대한 설명">
</div>
</td>
</tr>
<tr>
<th>처리 상태</th>
<td>
<div class="td-inner">
<div class="b-checkbox-container" id="srchProcsSttusCdDiv">
<label class="b-checkbox checkbox check-all">
<input type="checkbox" id="srchProcsSttusAll" value="" >
<span class="check"></span>
<span class="control-label">전체</span>
</label>
<c:forEach var="codeList" items="${ resultMap.procsSttusCdList }" varStatus="">
<label class="b-checkbox checkbox">
<input type="checkbox" name="srchProcsSttusCd" value="<c:out value="${ codeList.cd }"/>"
<c:if test="${ resultMap.paramVO.srchProcsSttusCd eq codeList.cd }">checked="checked"</c:if>>
<span class="check"></span>
<span class="control-label"><c:out value="${ codeList.cdNm }"/></span>
</label>
</c:forEach>
</div>
</div>
</td>
</tr>
<tr>
<th>관련 번호</th>
<td>
<div class="td-inner">
<div class="select-box">
<select id="srchRelateDv" name="srchRelateDv" title="해당 셀렉트에 대한 설명">
<option value="relateOrdrnb">주문번호</option>
<option value="dlivyCd">출고번호</option>
<option value="refndCd">반품환불번호</option>
<option value="relateGoodsInqry">상품문의</option>
<option value="goodsRvwBbscttNb">상품후기</option>
</select>
</div>
<input class="input-text" type="text" id="srchRelateNm" name="srchRelateNm" title="해당 인풋에 대한 설명">
</div>
</td>
</tr>
<tr>
<th>상담내용</th>
<td>
<div class="td-inner">
<input class="input-text xl" type="text" id="srchCnsltCn" name="srchCnsltCn" title="검색할 상담 내용">
</div>
</td>
</tr>
</table>
</div>
<div class="form-control-container">
<div class="left"></div>
<div class="center">
<button class="btn outline" id="resetBtn" type="button" onclick="fn_reset_form('unityCnsltSearchForm'); return false;">초기화</button>
<button class="btn primary" id="searchBtn" type="button" onclick="fn_select_unity_cnslt_list(1); return false;">검색</button>
</div>
<div class="right">
</div>
</div>
</section>
<%-- 상담 검색 영역 EMD --%>
<%-- 상담 목록 DIV --%>
<div id="pageDiv">
</div>
<%-- 상담 내역 수정 팝업 DIV --%>
<div id="cnsltDtlPopupDiv">
</div>
</form>
<%-- 하단 스크롤 완료 시 위로가기 버튼 출력 : 2023-11-30 / 박철민 추가 --%>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
<%-- 회원 CRM 정보 팝업 DIV --%>
<div id="modalDiv"></div>
</body>
</html>

View File

@@ -0,0 +1,314 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<!DOCTYPE html>
<html>
<%--댓글 수--%>
<c:set value="${resultMap.cmList.cmCnt}" var="cmCnt"/>
<%--댓글 목록--%>
<c:set value="${resultMap.cmList.cmList}" var="cmList"/>
<%--작성자 정보 추출--%>
<c:set value="${resultMap.cmList.wrterList}" var="wrterList"/>
<%--작성자 정보 추출--%>
<c:set value="${resultMap.regusrInfo}" var="regusrInfo"/>
<%--게시글 정보 --%>
<c:set value="${cmVO}" var="cmVO"/>
<%--게시판 설정 --%>
<c:set value="${resultMap.bbsInfo}" var="bbsInfo"/>
<%-- 게시글 댓글 목록 START --%>
<p id="comment_container"></p>
<input type="hidden" id="cmCntInfo" value="<c:out value = "${ resultMap.paginationInfo.totalRecordCount }"/>">
<input type="hidden" id="mbrInnb" value="<c:out value = "${ resultMap.user.userInnb}"/>">
<div class="form-control-container mb-10 dtlCmDiv">
<div class="left">
<span class="fs-16 fw-500" id="cmCnt">댓글(<fmt:formatNumber value="${cmCnt}" pattern="#,###"/>)</span>
</div>
<div class="center">
</div>
<div class="right">
<button type="button" class="btn xsm dark"
onclick="fn_delete_cm('', '<c:out value="${cmVO.bbscttInnb}"/>', 'many','<c:out
value="${cmVO.bbsId}"/>')">선택 <spring:message code="button.delete"/></button>
</div>
</div>
<div class="table-wrapper mb-40 dtlCmDiv">
<table class="table vertical tight">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 60px;">
<col style="width: 15%;">
<col style="width: 50%;">
<col style="width: 10%;">
<col style="width: auto;">
</colgroup>
<thead>
<tr>
<th>
<label class="b-checkbox checkbox is-medium check-all">
<input type="checkbox" value="" id="cmListChkA">
<span class="check"></span>
</label>
</th>
<th>작성자</th>
<th>내용</th>
<th>등록일</th>
<th>관리</th>
</tr>
</thead>
<%-- 댓글 목록 ajax START--%>
<tbody id="cmListDiv">
<c:choose>
<c:when test="${not empty cmList}">
<c:forEach items="${cmList}" var="cmList" varStatus="status">
<tr class="cmTr">
<td>
<c:if test="${cmList.useAt eq 'Y'}">
<label class="b-checkbox checkbox is-medium">
<input type="checkbox" value="${ cmList.cmInnb }" name="selectedCmRow"
class="cmListChk">
<span class="check"></span>
</label>
</c:if>
</td>
<td>
<span class="comment-id">
<i class="icon icon_comment-user"></i>
<span class="comment-id__name">
<c:choose>
<%--비회원--%>
<c:when test = "${cmList.regusrDvCd eq '99'}">
<c:out value="${cmList.regusrNm}"/>[비회원]
</c:when>
<%--관리자--%>
<c:when test = "${cmList.regusrDvCd eq '02'}">
<c:out value="${ cmList.mngrNm}"/>(<c:out value="${ cmList.aRegusrId}"/>)
</c:when>
<%--회원--%>
<c:when test="${cmList.regusrDvCd eq '01'}">
<button type="button" class="crmBtn" data-info="info01"
onclick = "fn_select_crm_mini_info(this,'<c:out value="${cmList.mbrInnb}"/>',
'<c:out value="${cmList.mbrDvCd}"/>','#modalDiv');">
<span class="gray-12">
<c:out value="${cmList.regusrNm}"/>
</span><br>
(<c:choose>
<c:when test="${cmList.joinMthCd eq 'kakao'}"><%--kakao--%>
<i class="icon icon_word-badge_kakao"></i>
</c:when>
<c:when test="${cmList.joinMthCd eq 'naver'}"><%--naver--%>
<i class="icon icon_word-badge_naver"></i>
</c:when>
<c:when test="${cmList.joinMthCd eq 'pos'}"><%--pos--%>
<i class="icon icon_word-badge_pos"></i><span class="fw-500 blue-7"><c:out value="${cmList.regusrId}"/></span>
</c:when>
<c:otherwise>
<span class="fw-500 blue-7"><c:out value="${cmList.regusrId}"/></span>
</c:otherwise>
</c:choose>/
<span class="fw-500 green-8"><c:out value="${cmList.mbrGradNm}"/></span>)
</button>
</c:when>
</c:choose>
</span>
<c:if test="${ cmList.newAt eq 'Y' }"><i
class="icon icon_new-badge"></i></c:if>
<span class="comment-id__ip"><c:if
test="${ not empty cmList.ip }">(IP:<c:out value="${ cmList.ip}"/>)</c:if></span>
</span>
</td>
<td class="text-left cmListCn">
<div class="comment-write-container reply">
<c:out value="${cmList.cn}"/>
<c:if test="${ cmList.secretBbscttAt eq 'Y' }">
<i class="icon icon_lock"></i>
</c:if>
</div>
</td>
<td><c:out value="${ cmList.registDt }"/><br></td>
<c:set var="displaynone" value='style="display:none"'/>
<c:if test="${ cmList.useAt eq 'Y' }">
<c:set var="displaynone" value=""/>
</c:if>
<td>
<div class="manage-btn-container dtlCmBtnDiv">
<c:if test="${cmList.useAt eq 'Y'}">
<button type="button" class="btn xsm dark"
onclick="fn_delete_cm('<c:out value="${ cmList.cmInnb }"/>', '<c:out
value="${ cmList.bbscttInnb }"/>', this,'<c:out
value="${ cmList.bbsId}"/>');">
<spring:message code="button.delete"/>
</button>
<button type="button" class="btn xsm outline primary" secret-at = "<c:out value="${ cmList.secretBbscttAt }"/>" cm-innb = "<c:out value="${ cmList.cmInnb }"/>" onclick="fn_select_update_cm(this, 'u');">
<spring:message code = "button.update"/>
</button>
<button type="button" class="btn xsm primary closeBtn" cm-innb = "<c:out value="${ cmList.cmInnb }"/>" onclick="fn_select_regist_cm_answ(this, 'open');">댓글</button>
</c:if>
</div>
</td>
</tr>
<c:if test="${not empty resultMap.cmList.cmAnswList}">
<c:forEach var="item" items="${resultMap.cmList.cmAnswList}" varStatus="status1">
<c:if test="${cmList.cmInnb eq item.parntsCmInnb}">
<tr class = "cmAnswTr">
<td>
<c:if test="${item.useAt eq 'Y'}">
<label class="b-checkbox checkbox is-medium">
<input type="checkbox" value="${ item.cmInnb }" name="selectedCmRow"
class="itemChk">
<span class="check"></span>
</label>
</c:if>
</td>
<td>
<span class="comment-id">
<i class="icon icon_comment-user"></i>
<span class="comment-id__name">
<c:choose>
<%--비회원--%>
<c:when test = "${item.regusrDvCd eq '99'}">
<c:out value="${item.regusrNm}"/>[비회원]
</c:when>
<%--관리자--%>
<c:when test = "${item.regusrDvCd eq '02'}">
<c:out value="${ item.mngrNm}"/>(<c:out value="${ item.aRegusrId}"/>)
</c:when>
<%--회원--%>
<c:when test="${item.regusrDvCd eq '01'}">
<button type="button" class="crmBtn" data-info="info01"
onclick="fn_select_crm_mini_info
(this,'<c:out value="${item.mbrInnb}"/>',
'<c:out value="${item.mbrDvCd}"/>','#modalDiv');">
<span class="gray-12">
<c:out value="${item.regusrNm}"/>
</span><br>
(<c:choose>
<c:when test="${item.joinMthCd eq 'kakao'}"><%--kakao--%>
<i class="icon icon_word-badge_kakao"></i>
</c:when>
<c:when test="${item.joinMthCd eq 'naver'}"><%--naver--%>
<i class="icon icon_word-badge_naver"></i>
</c:when>
<c:when test="${item.joinMthCd eq 'pos'}"><%--pos--%>
<i class="icon icon_word-badge_pos"></i><span class="fw-500 blue-7"><c:out value="${item.regusrId}"/></span>
</c:when>
<c:otherwise>
<span class="fw-500 blue-7"><c:out value="${item.regusrId}"/></span>
</c:otherwise>
</c:choose>/
<span class="fw-500 green-8"><c:out value="${item.mbrGradNm}"/></span>)
</button>
</c:when>
</c:choose>
</span>
<c:if test="${ item.newAt eq 'Y' }"><i
class="icon icon_new-badge"></i></c:if>
<span class="comment-id__ip"><c:if
test="${ not empty item.ip }">(IP:<c:out value="${item.ip}"/>)</c:if></span>
</span>
</td>
<td class="text-left cmListCn">
<div class="comment-write-container reply">
<span class="comment-id">
<c:out value="${item.cn}"/>
</span>
<c:if test="${ item.secretBbscttAt eq 'Y' }">
<i class="icon icon_lock"></i>
</c:if>
</div>
</td>
<td><c:out value="${ item.registDt }"/><br></td>
<td>
<div class="manage-btn-container dtlCmBtnDiv">
<c:if test = "${item.useAt eq 'Y'}">
<button type="button" class="btn xsm dark" onclick="fn_delete_cm('<c:out value="${ item.cmInnb }"/>', '<c:out value="${ item.bbscttInnb }"/>', this,'<c:out value="${ item.bbsId}"/>');">
<spring:message code="button.delete"/>
</button>
<button type="button" class="btn xsm outline primary cmAnswUpdt"
secret-at="<c:out value="${ item.secretBbscttAt }"/>"
cm-innb="<c:out value="${ item.cmInnb }"/>"
onclick="fn_select_update_cm_answ(this, 'u');">
<spring:message code="button.update"/></button>
<button type="button" class="btn xsm primary" style="visibility:hidden">버튼</button>
</c:if>
</div>
</td>
</tr>
</c:if>
</c:forEach>
</c:if>
<%--댓글 답변 등록 START--%>
<tr class="cmFormTr" style="display:none;">
<td colspan="5">
<table class="box" style="width:100%">
<colgroup>
<col>
<col width="1">
</colgroup>
<tbody>
<tr>
<td colspan="5" class="">
<div class="comment-write-container reply">
<span class="comment-id">
<i class="icon icon_comment-user"></i>
<span class="comment-id__name"><c:out
value="${regusrInfo.regusrNm}"/></span>
<span class="comment-id__id">( <c:out
value="${regusrInfo.regusrId}"/> )</span>
<span class="comment-id__ip">(IP: <c:out value="${ip}"/>)</span>
</span>
<div class="comment-write">
<input type="hidden" name="bbscttInnb"
value="<c:out value ='${cmList.bbscttInnb}'/>"/>
<input type="hidden" name="bbsId"
value="<c:out value ='${resultMap.bbsInfo.bbsId}'/>"/>
<input type="hidden" name="cmInnb"
value="<c:out value ='${cmList.cmInnb}'/>"/>
<div class="comment-write__textarea-container">
<textarea class="comment-write__textarea" rows="5"
placeholder="댓글을 입력하세요." title="댓글 입력"
name="cn"></textarea>
</div>
<button class="comment-write__button"
onclick="fn_regist_cm('re', this);"><spring:message code = "button.insert"/></button>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox">
<input type="checkbox" name="secretBbscttAt" value="N"
onclick="fn_check_secret_cm(this);">
<span class="check"></span>
<span class="control-label">비밀 댓글</span>
</label>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<%--댓글 답변 등록 END--%>
<%--댓글 목록 ajax END--%>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="100%"><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
<input type="hidden" id="cmPageIndex" name="pageIndex" value="${cmVO.pageIndex}"/>
<div class="pagination__container mb-40">
<ui:pagination paginationInfo="${ resultMap.paginationInfo }" type="image" jsFunction="fn_make_cm" />
</div>
<%-- 게시글 댓글 START --%>
<script src="/mngr/js/script.js" defer=""></script>
<div id = "cm"></div>
</html>

View File

@@ -0,0 +1,214 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : NoticeListRForm.jsp
Description : 공지 목록 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-02-05 김혜지 최초 생성
--%>
<section class="content-section">
<div class="form-control-container">
<div class="left">
<div class="search-number">
<span class="search-number__text">총 <strong><fmt:formatNumber value="${resultMap.paginationInfo.totalRecordCount}" pattern="#,###"/></strong>건</span>
</div>
</div>
<div class="center">
</div>
<div class="right">
<div class="select-box">
<select id="pageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_bbsctt_list('1');">
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paginationInfo.recordCountPerPage eq pageUnit }">selected="selected"</c:if>><c:out value="${ pageUnit }"/>개씩</option>
</c:forEach>
</select>
</div>
</div>
</div>
<form id="listForm">
<hr class="horizontal-line">
<div class="form-control-container">
<div class="left">
<button type="button" class="btn outline sm" onclick="fn_delete_bbsctt('', 'many');">선택 삭제</button>
</div>
<div class="center">
</div>
<div class="right">
<button type = "button" class="btn outline sm moveSopBtn">사용자 보기</button>
</div>
</div>
<hr class="spacing">
<div class="table-wrapper">
<table class="table vertical">
<caption>이벤트 게시글 목록</caption>
<colgroup>
<col style="width: 4%;">
<col style="width: 3%;">
<col style="width: 8%;">
<col style="width: 8%;">
<col style="width: auto;">
<col style="width: 5%;" class = "itm">
<col style="width: 6%">
<col style="width: 11%">
<col style="width: 11%">
<col style="width: 3%">
<col style="width: 11%">
<col style="width: 5%">
</colgroup>
<thead>
<tr>
<th>
<label class="b-checkbox checkbox is-medium check-all" >
<input type="checkbox" value="" id="listChkA">
<span class="check"></span>
</label>
</th>
<th>번호</th>
<th>작성자</th>
<th>IP</th>
<th>제목</th>
<th class = "itm">분류</th>
<th>온/오프라인</th>
<th>시작/종료일</th>
<th>등록일</th>
<th>조회수</th>
<th>관리</th>
<th>삭제</th>
</tr>
</thead>
<tbody id ="contentSection">
<c:choose>
<c:when test="${ not empty resultMap.resultList.resultList }">
<c:forEach items="${ resultMap.resultList.resultList }" var="resultList" varStatus="status">
<tr>
<td>
<c:if test="${ resultList.useAt eq 'Y' }">
<label class="b-checkbox checkbox is-medium chkLabel">
<input type="checkbox" value="${ resultList.bbscttInnb }"
name="selectedBbscttRow" class='bbscttChk'>
<span class="check"></span>
</label>
</c:if>
</td>
<td>
<c:out value="${resultList.rnum}" />
</td>
<td>
<c:out value="${ resultList.mngrNm }" />(<c:out value="${ resultList.maskingRegusrId }" />)
</td>
<td><c:out value="${ resultList.ip }" /></td>
<td class="left">
<a class="under-line moveDetil"
bbsctt-innb = "<c:out value="${ resultList.bbscttInnb }"/>"
bbs-id ="<c:out value="${ resultList.bbsId }"/>"
regusr-dv = "02">
<c:choose>
<c:when test = "${resultList.useAt eq 'Y'}">
<c:out value="${ resultList.sj }"/><c:if test = "${resultList.cmtCnt > 0}">(<c:out value="${ resultList.cmtCnt}"/>)</c:if>
</c:when>
<c:otherwise>
<span class="stone-6">삭제된 게시글입니다.<br>[<c:out value="${ resultList.updtDt}"/>]<c:if test = "${resultList.cmtCnt > 0}">(<c:out value="${ resultList.cmtCnt}"/>)</c:if></span>
</c:otherwise>
</c:choose>
</a>
<c:if test="${resultList.isfiles eq 1}">
<i class="icon icon_image-badge"></i>
</c:if>
<c:if test="${resultList.newAt eq 'Y'}">
<i class="icon icon_new-badge"></i>
</c:if>
<c:if test="${resultList.popularAt eq 'Y'}">
<i class="icon icon_hot-badge"></i>
</c:if>
<c:if test="${ resultList.secretBbscttAt eq 'Y' }">
<i class="icon icon_lock"></i>
</c:if>
</td>
<td class = "itm"><c:out value="${resultList.answCn}" /></td>
<td>
<c:choose>
<c:when test = "${resultList.onlineAt eq 'Y' && resultList.oflneAt eq 'N'}">온라인</c:when>
<c:when test = "${resultList.onlineAt eq 'N' && resultList.oflneAt eq 'Y'}">오프라인</c:when>
<c:when test = "${resultList.onlineAt eq 'Y' && resultList.oflneAt eq 'Y'}">온/오프라인</c:when>
</c:choose>
</td>
<td>
<c:choose>
<c:when test="${resultList.expsrAt eq 'Y' && resultList.ntceDvn eq 1}">
<span><c:out value="${ resultList.aNtceBgnDe }"/></span> ~
<span>상시</span>
</c:when>
<c:when test= "${resultList.expsrAt eq 'Y' && resultList.ntceDvn eq 2}">
<span><c:out value="${ resultList.ntceBgnDe }"/></span> ~
<span><c:out value="${ resultList.ntceEndDe }"/></span>
</c:when>
<c:when test="${resultList.expsrAt eq 'Y' && resultList.ntceDvn eq 3}">
<c:choose>
<c:when test = " ${resultList.ntcePdSetupAt eq 'N'}">
<span><c:out value="${ resultList.aNtceBgnDe }"/></span> ~
</c:when>
<c:otherwise>
<span><c:out value="${ resultList.ntceBgnDe }"/></span> ~
</c:otherwise>
</c:choose>
<span><c:out value="${ resultList.ntceEndDe }"/></span>[종료]
</c:when>
<c:otherwise>
<span>노출 안함</span>
</c:otherwise>
</c:choose>
</td>
<td><c:out value="${ resultList.registDt }"/></td>
<td><fmt:formatNumber value="${resultList.inqireCnt}" pattern="#,##0"/></td>
<td>
<div class="manage-btn-container">
<c:if test="${ resultList.useAt eq 'Y' }">
<button type ="button" class="btn xsm outline primary" onclick="fn_select_bbsctt_update_pop('<c:out value="${ resultList.bbscttInnb }"/>');"><spring:message code="button.update"/></button>
</c:if>
<c:if test = "${resultMap.bbsInfo.answRegist eq 'Y'}">
<c:choose>
<c:when test="${not empty resultList.answBbscttInnb}">
<button type ="button" class="btn xsm primary outline" onclick="fn_select_answ_update_pop('<c:out value="${ resultList.bbscttInnb }"/>', '<c:out value="${ resultList.answBbscttInnb}"/>','<c:out value="${ resultList.bbsId }"/>','');">답변 <spring:message code="button.update"/></button>
</c:when>
<c:when test = "${empty resultList.answBbscttInnb}">
<button type ="button" class="btn xsm primary" onclick="fn_select_answ_regist_pop('<c:out value="${ resultList.bbscttInnb }"/>','<c:out value="${ resultList.bbsId }"/>','');">답변 <spring:message code="button.insert"/></button>
</c:when>
</c:choose>
</c:if>
</div>
</td>
<td>
<c:if test="${ resultList.useAt eq 'Y' }">
<div class="manage-btn-container">
<button class="btn xsm dark" type="button" onclick="fn_delete_bbsctt('<c:out value="${ resultList.bbscttInnb }"/>');"><spring:message code="button.delete"/></button>
</div>
</c:if>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="100%"><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</form>
</section>
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value = '${resultMap.bbsctt.pageIndex}'/>"/>
<div class="pagination__container">
<ui:pagination paginationInfo="${ resultMap.paginationInfo }" type="image" jsFunction="fn_select_bbsctt_list" />
</div>
<script src="/admin/js/script.js" defer=""></script>

View File

@@ -0,0 +1,216 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ page import="java.util.Date" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld" %>
<%--
Class Name : NoticeListRForm.jsp
Description : 공지 목록 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-02-05 김혜지 최초 생성
--%>
<section class="content-section">
<div class="form-control-container">
<div class="left">
<div class="search-number">
<span class="search-number__text">총 <strong><fmt:formatNumber value="${resultMap.paginationInfo.totalRecordCount}" pattern="#,###"/></strong>건</span>
</div>
</div>
<div class="center">
</div>
<div class="right">
<div class="select-box">
<select id="pageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_bbsctt_list('1');">
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit"
varStatus="pageUnitStatus">
<option value="<c:out value="${ pageUnit }"/>"
<c:if test="${ resultMap.paginationInfo.recordCountPerPage eq pageUnit }">selected="selected"</c:if>>
<c:out value="${ pageUnit }"/>개씩
</option>
</c:forEach>
</select>
</div>
</div>
</div>
<form id="listForm">
<hr class="horizontal-line">
<div class="form-control-container">
<div class="left">
<button type="button" class="btn outline sm" onclick="fn_delete_bbsctt('', 'many');">선택 삭제</button>
</div>
<div class="center">
</div>
<div class="right">
<button type="button" class="btn outline sm moveSopBtn">사용자 보기</button>
</div>
</div>
<hr class="spacing">
<div class="table-wrapper">
<table class="table vertical">
<caption>이벤트 게시글 목록</caption>
<colgroup>
<col style="width: 4%;">
<col style="width: 3%;">
<col style="width: 8%;">
<col style="width: 8%;">
<col style="width: auto;">
<col style="width: 10%" class="itm">
<col style="width: 11%">
<col style="width: 6%">
<col style="width: 3%">
<col style="width: 11%">
<col style="width: 5%">
</colgroup>
<thead>
<tr>
<th>
<label class="b-checkbox checkbox is-medium check-all">
<input type="checkbox" value="" id="listChkA">
<span class="check"></span>
</label>
</th>
<th>번호</th>
<th>작성자</th>
<th>IP</th>
<th>제목</th>
<th class="itm">분류</th>
<th>노출 기간</th>
<th>등록일</th>
<th>조회수</th>
<th>관리</th>
<th>삭제</th>
</tr>
</thead>
<tbody id="contentSection">
<c:choose>
<c:when test="${ not empty resultMap.resultList.resultList }">
<c:forEach items="${ resultMap.resultList.resultList }" var="resultList" varStatus="status">
<tr>
<td>
<c:if test="${ resultList.useAt eq 'Y' }">
<label class="b-checkbox checkbox is-medium chkLabel">
<input type="checkbox" value="${ resultList.bbscttInnb }"
name="selectedBbscttRow" class='bbscttChk'>
<span class="check"></span>
</label>
</c:if>
</td>
<td>
<c:out value="${resultList.rnum}"/>
</td>
<td>
<c:out value="${ resultList.mngrNm }"/>(<c:out
value="${ resultList.maskingRegusrId }"/>)
</td>
<td><c:out value="${ resultList.ip }"/></td>
<td class="left">
<a class="under-line moveDetil"
bbsctt-innb="<c:out value="${ resultList.bbscttInnb }"/>"
bbs-id="<c:out value="${ resultList.bbsId }"/>"
regusr-dv="02">
<c:choose>
<c:when test="${resultList.useAt eq 'Y'}">
<c:out value="${ resultList.sj }"/><c:if test="${resultList.cmtCnt > 0}">
(<c:out value="${ resultList.cmtCnt}"/>)</c:if>
</c:when>
<c:otherwise>
<span class="stone-6">삭제된 게시글입니다.<br>
[<c:out value="${ resultList.updtDt}"/>]
<c:if test="${resultList.cmtCnt > 0}">
(<c:out value="${ resultList.cmtCnt}"/>)
</c:if>
</span>
</c:otherwise>
</c:choose>
</a>
<c:if test="${resultList.isfiles eq 1}">
<i class="icon icon_image-badge"></i>
</c:if>
<c:if test="${resultList.newAt eq 'Y'}">
<i class="icon icon_new-badge"></i>
</c:if>
<c:if test="${resultList.popularAt eq 'Y'}">
<i class="icon icon_hot-badge"></i>
</c:if>
<c:if test="${ resultList.secretBbscttAt eq 'Y' }">
<i class="icon icon_lock"></i>
</c:if>
</td>
<td class="itm"><c:out value="${resultList.answCn}"/></td>
<td>
<c:choose>
<c:when test="${resultList.expsrAt eq 'Y' && resultList.ntceDvn eq 1}">
<span><c:out value="${ resultList.aNtceBgnDe }"/></span> ~
<span>상시</span>
</c:when>
<c:when test= "${resultList.expsrAt eq 'Y' && resultList.ntceDvn eq 2}">
<span><c:out value="${ resultList.ntceBgnDe }"/></span> ~
<span><c:out value="${ resultList.ntceEndDe }"/></span>
</c:when>
<c:when test="${resultList.expsrAt eq 'Y' && resultList.ntceDvn eq 3}">
<c:choose>
<c:when test = " ${resultList.ntcePdSetupAt eq 'N'}">
<span><c:out value="${ resultList.aNtceBgnDe }"/></span> ~
</c:when>
<c:otherwise>
<span><c:out value="${ resultList.ntceBgnDe }"/></span> ~
</c:otherwise>
</c:choose>
<span><c:out value="${ resultList.ntceEndDe }"/></span>[종료]
</c:when>
<c:otherwise>
<span>노출 안함</span>
</c:otherwise>
</c:choose>
</td>
<td><c:out value="${ resultList.registDt }"/></td>
<td><fmt:formatNumber value="${resultList.inqireCnt}" pattern="#,##0"/></td>
<td>
<div class="manage-btn-container">
<c:if test="${ resultList.useAt eq 'Y' }">
<button type ="button" class="btn xsm outline primary" onclick="fn_select_bbsctt_update_pop('<c:out value="${ resultList.bbscttInnb }"/>','<c:out value="${ resultList.bbsId }"/>','');"><spring:message code="button.update"/></button>
</c:if>
<c:if test = "${resultMap.bbsInfo.answRegist eq 'Y'}">
<c:choose>
<c:when test="${not empty resultList.answBbscttInnb}">
<button type ="button" class="btn xsm primary outline" onclick="fn_select_answ_update_pop('<c:out value="${ resultList.bbscttInnb }"/>', '<c:out value="${ resultList.answBbscttInnb}"/>','<c:out value="${ resultList.bbsId }"/>','');">답변 <spring:message code="button.update"/></button>
</c:when>
<c:when test = "${empty resultList.answBbscttInnb}">
<button type ="button" class="btn xsm primary" onclick="fn_select_answ_regist_pop('<c:out value="${ resultList.bbscttInnb }"/>','<c:out value="${ resultList.bbsId }"/>','');">답변 <spring:message code="button.insert"/></button>
</c:when>
</c:choose>
</c:if>
</div>
</td>
<td>
<c:if test="${ resultList.useAt eq 'Y' }">
<div class="manage-btn-container">
<button class="btn xsm dark" type="button" onclick="fn_delete_bbsctt('<c:out value="${ resultList.bbscttInnb }"/>');"><spring:message code="button.delete"/></button>
</div>
</c:if>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="100%"><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</form>
</section>
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value = '${resultMap.bbsctt.pageIndex}'/>"/>
<div class="pagination__container">
<ui:pagination paginationInfo="${ resultMap.paginationInfo }" type="image" jsFunction="fn_select_bbsctt_list"/>
</div>
<script src="/admin/js/script.js" defer=""></script>

View File

@@ -0,0 +1,197 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : FaqListR.jsp
Description : Faq 목록 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-02-20 김혜지 최초 생성
--%>
<section class="content-section">
<div class="form-control-container">
<div class="left">
<div class="search-number">
<span class="search-number__text">총 <strong><fmt:formatNumber value="${resultMap.paginationInfo.totalRecordCount}" pattern="#,###"/></strong>건</span>
</div>
</div>
<div class="center">
</div>
<div class="right">
<div class="select-box">
<select id="pageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_bbsctt_list('1');">
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paginationInfo.recordCountPerPage eq pageUnit }">selected="selected"</c:if>><c:out value="${ pageUnit }"/>개씩</option>
</c:forEach>
</select>
</div>
</div>
</div>
<form id="listForm">
<hr class="horizontal-line">
<div class="form-control-container">
<div class="left">
<button type="button" class="btn outline sm" onclick="fn_delete_bbsctt('', 'many');">선택<spring:message code="button.delete"/></button>
</div>
<div class="center">
</div>
<div class="right">
<button type = "button" class="btn outline sm moveSopBtn">사용자 보기</button>
</div>
</div>
<hr class="spacing">
<div class="table-wrapper">
<table class="table vertical">
<caption>해당 테이블에 대한 설명</caption>
<!-- 각 열 width 설정 -->
<colgroup>
<col style="width: 4%;">
<col style="width: 3%;">
<col style="width: 8%;">
<col style="width: 8%;">
<col style="width: auto;">
<col style="width: 5%;" class = "itm">
<col style="width: 11%;">
<col style="width: 11%">
<col style="width: 5%">
<col style="width: 5%">
</colgroup>
<thead>
<tr>
<th>
<label class="b-checkbox checkbox is-medium check-all" >
<input type="checkbox" value="" id="listChkA">
<span class="check"></span>
</label>
</th>
<th>번호</th>
<th>작성자</th>
<th>IP</th>
<th>제목</th>
<th class = "itm">분류</th>
<th>노출</th>
<th>등록일</th>
<th>관리</th>
<th>삭제</th>
</tr>
</thead>
<tbody id ="contentSection">
<c:choose>
<c:when test="${ not empty resultMap.resultList.resultList }">
<c:forEach items="${ resultMap.resultList.resultList }" var="resultList" varStatus="status">
<tr>
<td>
<c:if test="${ resultList.useAt eq 'Y' }">
<label class="b-checkbox checkbox is-medium chkLabel">
<input type="checkbox" value="${ resultList.bbscttInnb }"
name="selectedBbscttRow" class='bbscttChk'>
<span class="check"></span>
</label>
</c:if>
</td>
<td>
<c:out value="${resultList.rnum}" />
</td>
<td>
<c:out value="${ resultList.mngrNm }" />(<c:out value="${ resultList.maskingRegusrId }" />)
</td>
<td><c:out value="${ resultList.ip }" /></td>
<td class="left">
<a class="under-line moveDetil"
bbsctt-innb = "<c:out value="${ resultList.bbscttInnb }"/>"
bbs-id ="<c:out value="${ resultList.bbsId }"/>"
regusr-dv="02">
<c:choose>
<c:when test = "${resultList.useAt eq 'Y'}">
<c:out value="${ resultList.sj }"/>
</c:when>
<c:otherwise>
<span class="stone-6">삭제된 게시글입니다.[<c:out value="${ resultList.updtDt}"/>]</span>
</c:otherwise>
</c:choose>
</a>
<c:if test="${resultList.isfiles eq 1}">
<i class="icon icon_image-badge"></i>
</c:if>
<c:if test="${resultList.newAt eq 'Y'}">
<i class="icon icon_new-badge"></i>
</c:if>
<c:if test="${resultList.popularAt eq 'Y'}">
<i class="icon icon_hot-badge"></i>
</c:if>
<c:if test="${ resultList.secretBbscttAt eq 'Y' }">
<i class="icon icon_lock"></i>
</c:if>
</td>
<td class = "itm"><c:out value="${resultList.answCn}" /></td>
<td>
<label class="b-checkbox checkbox is-medium">
<input type="checkbox" value="Y" name="expsrAt" class = "expsrAt" bbsctt-innb = "<c:out value = '${resultList.bbscttInnb}'/>"
<c:if test ="${ resultList.expsrAt eq 'Y'}">checked</c:if>>
<span class="check"></span>
</label>
</td>
<td><c:out value="${ resultList.registDt }"/></td>
<td>
<div class="manage-btn-container">
<c:if test="${ resultList.useAt eq 'Y' }">
<button type="button" class="btn xsm outline primary"
onclick="fn_select_bbsctt_update_pop('<c:out value="${ resultList.bbscttInnb }"/>'
,'<c:out value="${ resultList.bbsId }"/>','');">
<spring:message code="button.update"/>
</button>
<c:if test="${resultMap.bbsInfo.answRegist eq 'Y'}">
<c:choose>
<c:when test="${ resultList.answAt eq 'Y'}">
<button type="button" class="btn xsm primary outline"
onclick="fn_select_answ_update_pop('<c:out value="${ resultList.bbscttInnb }"/>'
,'<c:out value="${ resultList.boardAnswInnb }"/>'
,'<c:out value="${ resultList.bbsId }"/>','');">
답변 <spring:message code="button.update"/>
</button>
</c:when>
<c:when test="${ resultList.answAt eq 'N'}">
<button type="button" class="btn xsm primary"
onclick="fn_select_answ_regist_pop('<c:out value="${ resultList.bbscttInnb }"/>'
,'<c:out value="${ resultList.bbsId }"/>','');">
답변 <spring:message code="button.insert"/>
</button>
</c:when>
</c:choose>
</c:if>
</c:if>
</div>
</td>
<td>
<c:if test="${ resultList.useAt eq 'Y' }">
<div class="manage-btn-container">
<button class="btn xsm dark" type="button" onclick="fn_delete_bbsctt('<c:out value="${ resultList.bbscttInnb }"/>');"><spring:message code="button.delete"/></button>
</div>
</c:if>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="14"><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</form>
</section>
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value = '${resultMap.bbsctt.pageIndex}'/>"/>
<div class="pagination__container">
<ui:pagination paginationInfo="${ resultMap.paginationInfo }" type="image" jsFunction="fn_select_bbsctt_list" />
</div>
<script src="/admin/js/script.js" defer=""></script>

View File

@@ -0,0 +1,264 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : GnrlBbscttAnswRegistPopupC.jsp
Description : 일반 게시글 답변 등록 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2023-12-08 김혜지 최초 생성
--%>
<script>
$(document).ready(function(){
let mbtlnb = $("#answMbtlnb").text().trim();
mbtlnb= fn_format_mbtlnb(mbtlnb);
console.log(mbtlnb);
$("#answMbtlnb").text(mbtlnb);
/************************************************
자주쓰는 답변 이벤트
*************************************************/
//자주쓰는 답변 적용(수정폼)
$('#rpusAnswReg').on('change', function () {
//자주쓰는 답변 고유번호
const rpuseAnswInnb = $(this).val();
let rpuseList = ${resultMap.map.rpusAnswGson};
let cn = '';
if (!fn_is_empty(rpuseList)) {
cn = rpuseList.find(function (item) {
return item.rpuseAnswInnb == rpuseAnswInnb;
});
}
fn_apply_cn("#cnAnswReg", cn.cn.replace(/\n/g, '<br>'));
});
});
</script>
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
<div id="board-list-answer-registration" class="modal" style="max-width: 1400px;">
<div class="modal-header">
<h4>일반 답변 등록</h4>
</div>
<div class="modal-content">
<c:set var="bbsctt" value="${ resultMap.map.bbscttInfo }" /> <%--게시글 정보--%>
<c:set var="regusrInfo" value="${ resultMap.regusrInfo }" /><%--작성자 정보--%>
<c:set var="bbsInfo" value="${ resultMap.bbsInfo }" /><%--게시판 설정 정보--%>
<div class="form-control-container mb-10">
<div class="left">
</div>
<div class="center">
</div>
<div class="right">
</div>
</div>
<form id="answRegForm">
<%--게시글발송방식코드--%>
<input type="hidden" name="bbscttSndngMthCd" value="<c:out value='${ bbsInfo.bbscttSndngMthCd }'/>"/>
<%--게시판아이디--%>
<input type="hidden" name="bbsId" value="<c:out value= '${ bbsctt.bbsId }'/>"/>
<%--부모게시글고유번호--%>
<input type="hidden" name="parntsBbscttInnb" value="<c:out value= '${bbsctt.bbscttInnb}'/>"/>
<%--부모게시글 제목--%>
<input type="hidden" name="sj" value="<c:out value= '${bbsctt.sj}'/>"/>
<%--부모게시글 작성자 이름--%>
<input type="hidden" name="regusrNm" value="<c:out value= '${bbsctt.maskingRegusrNm}'/>"/>
<%--게시판 명--%>
<input type="hidden" name="bbsNm" value="<c:out value= '${bbsInfo.bbsNm}'/>"/>
<%--게시글 작성자 아이디--%>
<input type="hidden" name="answRegusrId" value="${bbsctt.regusrId}"/>
<%--게시글 작성자 고유번호--%>
<input type="hidden" name="answRegusr" value="${bbsctt.regusr}"/>
<%--게시글 작성자 명--%>
<input type="hidden" name="answRegusrNm" value="${bbsctt.regusrNm}"/>
<div class="table-wrapper mb-40">
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 15%;">
<col style="width: 35%;">
<col style="width: 15%;">
<col style="width: 35%;">
</colgroup>
<tbody>
<tr>
<c:if test = "${bbsInfo.goodsChoice eq 'Y'}">
<th>상품정보</th>
<td>
<div class="td-inner">
<c:forEach var = "goods" items = "${ resultMap.map.goods}">
<div class="product-search-box__product">
<img src="<c:out value= '${cdnurl}${goods.img}'/>" onerror="this.src='<c:url value="/mngr/images/image_placeholder.png"/>'" alt="${goods.img}" width="64" >
<div class="product-search-box__detail">
<p class="product-search-box__detail-name">
<c:out value= '${goods.goodsNm}'/>
</p>
<p class="product-search-box__detail-price">
<fmt:formatNumber var="slepric" value="${goods.slepric}" pattern="#,###.##"/>
<c:out value= '${slepric}'/>
</p>
</div>
</div>
</c:forEach>
</div>
</td>
</c:if>
<th>작성자</th>
<td>
<div class="td-inner">
<c:choose>
<%--회원--%>
<c:when test="${bbsctt.regusrDvCd eq '01'}">
<button type="button"
class="crmBtn"
data-info="info01"
onclick="fn_select_crm_mini_info(this,
'<c:out value='${bbsctt.regusr}'/>'
,'<c:out value='${bbsctt.mbrDvCd}'/>'
,'#modalDiv');">
<span class="gray-12">
<c:out value="${bbsctt.regusrNm}"/>
</span><br>
(<c:choose>
<c:when test="${bbsctt.joinMthCd eq 'kakao'}"><%--kakao--%>
<i class="icon icon_word-badge_kakao"></i>
</c:when>
<c:when test="${bbsctt.joinMthCd eq 'naver'}"><%--naver--%>
<i class="icon icon_word-badge_naver"></i>
</c:when>
<c:when test="${bbsctt.joinMthCd eq 'pos'}"><%--pos--%>
<i class="icon icon_word-badge_pos"></i>
<span class="fw-500 blue-7">
<c:out value="${bbsctt.regusrId}"/>
</span>
</c:when>
<c:otherwise>
<span class="fw-500 blue-7">
<c:out value="${bbsctt.regusrId}"/>
</span>
</c:otherwise>
</c:choose>/
<span class="fw-500 green-8"><c:out value="${bbsctt.mbrGradNm}"/></span>)
</c:when>
<%--관리자--%>
<c:when test="${bbsctt.regusrDvCd eq '02'}">
<c:out value="${ bbsctt.mngrNm}"/>(<c:out value="${bbsctt.maskingRegusrId}"/>)
</c:when>
<%--네이버페이--%>
<c:when test="${bbsctt.regusrDvCd eq '03'}">
<c:out value="${ bbsctt.regusrNm}"/>
</c:when>
<%--입점사--%>
<c:when test="${bbsctt.regusrDvCd eq '04'}">
입점사
</c:when>
<%--비회원--%>
<c:when test="${bbsctt.regusrDvCd eq '99'}">
<c:out value="${bbsctt.maskingRegusrNm}"/>[비회원]
</c:when>
</c:choose>
</div>
</td>
</tr>
<tr>
<th>날짜</th>
<td>
<div class="td-inner">
<c:out value= '${ bbsctt.registDt }'/>
</div>
</td>
<th>IP</th>
<td>
<div class="td-inner">
<c:out value= '${ bbsctt.ip }'/>
</div>
</td>
</tr>
<tr>
<th>제목</th>
<td>
<div class="td-inner">
<c:out value= '${bbsctt.sj}'/>
</div>
</td>
<%--답변 sms 수신 여부--%>
<c:if test = "${bbsInfo.bbscttSndngMthCd ne '03'}">
<th>SMS수신 <label class="b-checkbox checkbox is-medium">
<input type="checkbox" value="Y" name="answSmsRecptn"
<c:if test = "${bbsctt.answSmsRecptn eq 'Y'}">checked</c:if> disabled>
<span class="check"></span>
</label></th>
<td>
<div class="td-inner" id="answMbtlnb">
<c:out value="${bbsctt.answMbtlnb}"/>
</div>
</td>
</c:if>
</tr>
<tr>
<th>내용</th>
<td colspan="3">
<div class="td-inner" id="answCnDiv">
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="form-control-container mb-10">
<div class="left">
<span class="fs-16 fw-500">답변</span>
</div>
<div class="center">
</div>
<div class="right">
</div>
</div>
<div class="table-wrapper mb-40">
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 15%;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th>자주쓰는 답변</th>
<td>
<div class="td-inner">
<div class="select-box">
<select class="md" id="rpusAnswReg">
<option value="">자주 쓰는 답변</option>
<c:forEach var="rpusAnswList" items="${ resultMap.map.rpusAnswList }" varStatus="">
<option value="${ rpusAnswList.rpuseAnswInnb }"><c:out value= '${ rpusAnswList.maskingCn }'/></option>
</c:forEach>
</select>
</div>
</div>
</td>
</tr>
<tr>
<th>답변 내용</th>
<td>
<div class="td-inner">
<textarea class="textarea" title="에디터 입력" rows="10" id="cnAnswReg"></textarea>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</form>
</div>
<div class="modal-footer">
<a href="#" id="btn_close_modalBC" rel="modal:close" class="btn outline"><spring:message code="button.cancel"/></a>
<button class="btn primary" onclick="fn_regist_answ('<c:out value= '${bbsctt.bbscttInnb}'/>','<c:out value= '${dtlPop}'/>');"><spring:message code="button.insert"/></button>
</div>
<a href="#close-modal" rel="modal:close" class="close-modal ">Close</a>
</div>
<script src="/admin/js/script.js" defer=""></script>

View File

@@ -0,0 +1,254 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : GnrlBbscttAnswUpdtPopupU.jsp
Description : 일반 게시글 답변 수정 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2023-12-08 김혜지 최초 생성
--%>
<c:set var="bbsctt" value="${ resultMap.map.bbsctt }" />
<c:set var="wrter" value="${ resultMap.map.wrter }" />
<c:set var="answ" value="${ resultMap.map.answ }" />
<c:set var="bbsInfo" value="${ resultMap.bbsInfo }" />
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
<script>
$(document).ready(function(){
let mbtlnb = $("#answUpdtMbtlnb").text().trim();
mbtlnb = fn_format_mbtlnb(mbtlnb);
$("#answUpdtMbtlnb").text(mbtlnb);
/************************************************
자주쓰는 답변 이벤트
*************************************************/
//자주쓰는 답변 적용(수정폼)
$('#rpusAnswUpdt').on('change', function () {
//자주쓰는 답변 고유번호
const rpuseAnswInnb = $(this).val();
let rpuseList = ${resultMap.map.rpusAnswGson};
let cn = '';
if(!fn_is_empty(rpuseList)){
cn = rpuseList.find(function(item) {
return item.rpuseAnswInnb == rpuseAnswInnb;
});
}
fn_apply_cn("#cnAnswUpdt",cn.cn.replace(/\n/g, '<br>'));
});
});
</script>
<div id="board-list-answer-update" class="modal" style="max-width: 1400px;">
<div class="modal-header">
<h4>일반 답변 수정</h4>
</div>
<div class="modal-content">
<div class="form-control-container mb-10">
<div class="left">
</div>
<div class="center">
</div>
<div class="right">
</div>
</div>
<form id="answUpdtForm">
<input type="hidden" name="setupInfoInnb" value="${ bbsInfo.setupInfoInnb }"/>
<input type="hidden" name="slangFlterUseAt" value="${bbsInfo.slangFlterUseAt}"/>
<input type="hidden" name="bbscttInnb" value="${answ.bbscttInnb }"/>
<input type="hidden" name="bbsId" value="${ bbsctt.bbsId }"/>
<input type="hidden" name="parntsBbscttInnb" value="${bbsctt.bbscttInnb }"/>
<input type="hidden" name="sj" value="${answ.sj }"/>
<div class="table-wrapper mb-40">
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 15%;">
<col style="width: 35%;">
<col style="width: 15%;">
<col style="width: 35%;">
</colgroup>
<tbody>
<tr>
<c:if test = "${bbsInfo.goodsChoice eq 'Y'}">
<th>상품정보</th>
<td>
<div class="td-inner">
<c:forEach var = "goods" items = "${ resultMap.map.goods}">
<div class="product-search-box__product">
<img src="<c:out value="${cdnurl}${goods.img}"/>" onerror="this.src='<c:url value="/mngr/images/image_placeholder.png"/>'" alt="${goods.img}" width="64" >
<div class="product-search-box__detail">
<p class="product-search-box__detail-name">
<c:out value="${goods.goodsNm}"/>
</p>
<p class="product-search-box__detail-price">
<fmt:formatNumber var="slepric" value="${goods.slepric}" pattern="#,###.##"/>
<c:out value="${slepric}"/>
</p>
</div>
</div>
</c:forEach>
</div>
</td>
</c:if>
<th>작성자</th>
<td >
<div>
<c:choose>
<%--회원--%>
<c:when test="${bbsctt.regusrDvCd eq '01'}">
<button type="button"
class="crmBtn"
data-info="info01"
onclick="fn_select_crm_mini_info(this,
'<c:out value='${bbsctt.regusr}'/>'
,'<c:out value='${bbsctt.mbrDvCd}'/>'
,'#modalDiv');">
<span class="gray-12">
<c:out value="${bbsctt.regusrNm}"/>
</span><br>
(<c:choose>
<c:when test="${bbsctt.joinMthCd eq 'kakao'}"><%--kakao--%>
<i class="icon icon_word-badge_kakao"></i>
</c:when>
<c:when test="${bbsctt.joinMthCd eq 'naver'}"><%--naver--%>
<i class="icon icon_word-badge_naver"></i>
</c:when>
<c:when test="${bbsctt.joinMthCd eq 'pos'}"><%--pos--%>
<i class="icon icon_word-badge_pos"></i>
<span class="fw-500 blue-7">
<c:out value="${bbsctt.regusrId}"/>
</span>
</c:when>
<c:otherwise>
<span class="fw-500 blue-7"><c:out
value="${bbsctt.regusrId}"/></span>
</c:otherwise>
</c:choose>/
<span class="fw-500 green-8">
<c:out value="${bbsctt.mbrGradNm}"/>
</span>)
</button>
</c:when>
<%--관리자--%>
<c:when test="${bbsctt.regusrDvCd eq '02'}">
<c:out value="${ bbsctt.mngrNm}"/>(<c:out
value="${bbsctt.maskingRegusrId}"/>)
</c:when>
<%--네이버페이--%>
<c:when test="${bbscttInfo.regusrDvCd eq '03'}">
<c:out value="${ bbsctt.regusrNm}"/>
</c:when>
<%--입점사--%>
<c:when test="${bbsctt.regusrDvCd eq '04'}">
입점사
</c:when>
<%--비회원--%>
<c:when test="${bbsctt.regusrDvCd eq '99'}">
<c:out value="${bbsctt.maskingRegusrNm}"/>[비회원]
</c:when>
</c:choose>
</div>
</td>
</tr>
<tr>
<th>날짜</th>
<td>
<div class="td-inner">
${ bbsctt.registDt }
</div>
</td>
<th>IP</th>
<td>
<div class="td-inner">
${ bbsctt.ip }
</div>
</td>
</tr>
<tr>
<th>제목</th>
<td>
<div class="td-inner">
${ bbsctt.sj }
</div>
</td>
<%--답변 sms 수신 여부--%>
<c:if test="${bbsInfo.bbscttSndngMthCd ne '03'}">
<th>SMS수신 <label class="b-checkbox checkbox is-medium">
<input type="checkbox" value="Y" name="answSmsRecptn"
<c:if test="${bbsctt.answSmsRecptn eq 'Y'}">checked</c:if> disabled>
<span class="check"></span>
</label></th>
<td>
<div class="td-inner" id="answUpdtMbtlnb">
<c:out value="${bbsctt.answMbtlnb}"/>
</div>
</td>
</c:if>
</tr>
<tr>
<th>내용</th>
<td colspan="3">
<div class="td-inner" id="answCnDivU">
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="form-control-container mb-10">
<div class="left">
<span class="fs-16 fw-500">답변</span>
</div>
<div class="center">
</div>
<div class="right">
</div>
</div>
<div class="table-wrapper mb-40">
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 15%;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th>자주쓰는 답변</th>
<td>
<div class="td-inner">
<div class="select-box">
<select class="md" id="rpusAnswUpdt" style="white-space: pre-wrap;">
<option value="">자주 쓰는 답변</option>
<c:forEach var="rpusAnswList" items="${ resultMap.map.rpusAnswList }" varStatus="">
<option value="${ rpusAnswList.rpuseAnswInnb}">${rpusAnswList.maskingCn}</option>
</c:forEach>
</select>
</div>
</div>
</td>
</tr>
<tr>
<th>답변 내용</th>
<td>
<div class="td-inner">
<textarea class="textarea" title="에디터 입력" rows="10" id="cnAnswUpdt"><c:out value="${answ.cn}"/></textarea>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</form>
</div>
<div class="modal-footer">
<a href="#" id="btn_close_modalBC" rel="modal:close" class="btn outline"><spring:message code="button.cancel"/></a>
<button class="btn primary" onclick="fn_update_answ('<c:out value= '${bbsctt.bbscttInnb}'/>','<c:out value= '${dtlPop}'/>');"><spring:message code="button.update"/></button>
</div>
<a href="#close-modal" rel="modal:close" class="close-modal ">Close</a>
</div>
<script src="/admin/js/script.js" defer=""></script>

View File

@@ -0,0 +1,694 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ page import="java.util.Date" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld" %>
<%@ page import="java.util.Date" %>
<%--
Class Name : GnrlBbscttDtlPopupR.jsp
Description : 일반 게시글 상세 조회 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2023-12-08 김혜지 최초 생성
--%>
<head>
<script>
$(document).ready(function () {
console.log('urlval 태그' + $('.urlVal').length);
const pcDomnAdres = document.querySelector('.header__logo').getAttribute('data-pcurl');
let urlVal = '';
const bbscttInnb = document.getElementsByName("script_bbscttInnb")[0]?.value || "";
const bbsId = document.getElementsByName("bbsId")[0]?.value || "";
const bbsTyCd = document.getElementsByName("bbsTyCd")[0]?.value || "";
const sopmalCd = document.getElementsByName("sopmalCd")[0]?.value || "";
const bbsUseAt = document.getElementsByName("bbsUseAt")[0]?.value || "";
const npayBbscttSnb = document.getElementsByName("npayBbscttSnb")[0]?.value || "";
console.log("bbscttInnb:", bbscttInnb);
console.log("bbsId:", bbsId);
console.log("bbsTyCd:", bbsTyCd);
console.log("sopmalCd:", sopmalCd);
if(bbsUseAt == 'Y' && (npayBbscttSnb === null || npayBbscttSnb === undefined || npayBbscttSnb === '')) {
if (bbsTyCd === '03' || bbsId == 'main_event' || bbsId == 'largeLMS_event') {
if (bbsTyCd === '03' || bbsId == 'main_event') {
urlVal = pcDomnAdres + '/sopmal/csc/selectBbscttAuth?authDv=CM&bbsTyCd=03&reqUrl=subPage&bbsId=' + bbsId + '&bbscttInnb=' + bbscttInnb;
} else {
urlVal = '/'+sopmalCd+'/extra/bbs/selectSMSEventPage?bbscttInnb=' + bbscttInnb;
}
}
}
console.log(' urlVal 실행됨: ' + urlVal);
console.log(' pcDomnAdres 실행됨: ' + pcDomnAdres);
$('.urlVal').val(urlVal);
});
</script>
</head>
<div id="board-list-detail" class="modal" style="max-width: 1400px;">
<div class="modal-header">
<h4>게시글 보기</h4>
</div>
<div class="modal-content">
<%--게시글 정보--%>
<c:set value="${resultMap.bbscttInfo.dataMap}" var="bbscttInfo"/>
<%--게시글 vo--%>
<c:set value="${resultMap.bbsctt}" var="bbscttVO"/>
<%--추가문항답변--%>
<c:set value="${resultMap.bbscttInfo.qesitmAnswList}" var="qesitmAnswList"/>
<%--게시글 파일정보--%>
<c:set value="${resultMap.bbscttInfo.fileInfo}" var="fileInfo"/>
<c:set value="${resultMap.bbscttInfo.fileInfoGson}" var="fileInfoGson"/>
<%--게시판 설정 --%>
<c:set value="${resultMap.bbsInfo}" var="bbsInfo"/>
<%--게시글 연관상품--%>
<c:set value="${resultMap.goodsList.goodsList}" var="goodsList"/>
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
<%--상세에서 작업 후 목록 조회 유무--%>
<input type="hidden" id="${dtlPop}" value="<c:out value='${dtlPop}'/>"/>
<input type="hidden" id="useAt" value="<c:out value="${bbscttInfo.useAt}"/>"/>
<c:out value="${bbscttInfo.cnScript}" escapeXml="false"/>
<input type="hidden" name="script_bbscttInnb" value="${bbscttInfo.bbscttInnb }"/>
<input type="hidden" id="bbsTyCd" name="bbsTyCd" value="<c:out value='${bbsInfo.bbsTyCd}' />" />
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value='${bbscttVO.sopmalCd}' />" />
<input type="hidden" id="bbsUseAt" name="bbsUseAt" value="<c:out value='${bbscttInfo.useAt}' />" />
<input type="hidden" id="npayBbscttSnb" name="npayBbscttSnb" value="<c:out value='${bbscttInfo.npayBbscttSnb}' />" />
<input type="hidden" id="bbsId" name="bbsId" value="<c:out value='${bbsInfo.bbsId}' />" />
<div class="form-control-container mb-10">
<div class="left">
</div>
<div class="center">
</div>
<div class="right">
<c:if test="${bbscttInfo.useAt eq 'Y' && empty bbscttInfo.npayBbscttSnb}">
<c:if test="${(bbsInfo.bbsTyCd eq '03') || (bbsInfo.bbsId eq 'main_event') || (bbsInfo.bbsId eq 'largeLMS_event')}">
<input type="text" id="url" class="urlVal" style="display: none;"/>
<button type="button" class="btn xsm primary" onclick="fn_copy_url();">url복사</button>
</c:if>
<button type="button" class="btn xsm primary outline" onclick="fn_select_bbsctt_update_pop('<c:out
value="${ bbscttInfo.bbscttInnb }"/>','dtlPop');"><spring:message
code="button.update"/></button>
<c:if test="${bbsInfo.answRegist eq 'Y'}">
<c:choose>
<c:when test="${not empty bbscttInfo.answBbscttInnb}">
<button type="button" id="dtlAnswUpdtBtn" class="btn xsm primary outline"
onclick="fn_select_answ_update_pop('<c:out value="${bbscttInfo.bbscttInnb}"/>','<c:out value="${bbscttInfo.answBbscttInnb}"/>','dtlPop');">
답변 <spring:message code="button.update"/>
</button>
</c:when>
<c:otherwise>
<button type="button" id="dtlAnswRegBtn" class="btn xsm primary"
onclick="fn_select_answ_regist_pop('<c:out value="${bbscttInfo.bbscttInnb}"/>','dtlPop');">
답변 <spring:message code="button.insert"/>
</button>
</c:otherwise>
</c:choose>
</c:if>
<button type="button" class="btn xsm dark"
onclick="fn_delete_bbsctt('<c:out value="${ bbscttInfo.bbscttInnb }"/>'
,''
,''
<c:if test="${bbsInfo.bbsTyCd eq '05'}">
,'Y'
</c:if>);">
<spring:message code="button.delete"/></button>
</c:if>
</div>
</div>
<div class="table-wrapper mb-40">
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 15%;">
<col style="width: 35%;">
<col style="width: 15%;">
<col style="width: 35%;">
</colgroup>
<tbody>
<c:if test="${bbsInfo.goodsChoice eq 'Y' }">
<c:if test="${not empty goodsList}">
<tr>
<th>상품정보</th>
<td colspan="3">
<div class="product-search-box__product parentGoodsContainer">
<c:forEach var="goods" items="${goodsList}">
<div class="product-group__item">
<a onclick = "fn_move_goods_dtl_common(<c:out value="${goods.goodsInnb}"/>,'sopmal');" style="cursor:pointer;">
<img src="<c:out value ="${cdnurl}${goods.img}"/>"
onerror="this.src='<c:url value="/mngr/images/image_placeholder.png"/>'"
alt="상품이미지" width="64">
</a>
<a onclick="fn_move_goods_dtl_common(<c:out value="${goods.goodsInnb}"/>,
'sopmal',
<c:out value="${goods.goodsKndCd}"/>);"
style="cursor:pointer;">
</a>
<div class="product-group__description">
<p><c:out value="${goods.goodsNm}"/></p>
<p class="product-group__description-price"><fmt:formatNumber
value="${goods.slepric}" pattern="#,###"/>원</p>
</div>
<c:if test="${bbsInfo.bbsTyCd eq '05'}">
<input hidden id="goodsInnb" value="${goods.goodsInnb}"/>
</c:if>
</div>
</c:forEach>
</div>
</td>
</tr>
</c:if>
</c:if>
<tr>
<c:if test="${bbsInfo.notice eq 'Y' }">
<th>공지 기간 제한<br><span class="fs-13">(공지글 여부)</span></th>
<td>
<div class="td-inner">
<span id="dtlNtc">
<c:choose>
<c:when test="${bbscttInfo.ntcAt eq 'Y' && bbscttInfo.ntcPdSetupAt eq 'Y'}">
<c:choose>
<c:when test="${bbscttInfo.ntcPdAt eq 'Y'}">
${ bbscttInfo.ntceBgnDe }~${ bbscttInfo.ntceEndDe }[종료]
</c:when>
<c:otherwise>
${ bbscttInfo.ntceBgnDe }~${ bbscttInfo.ntceEndDe }
</c:otherwise>
</c:choose>
</c:when>
<c:when test="${bbscttInfo.ntcAt eq 'Y' && bbscttInfo.ntcPdSetupAt eq 'N'}">
상시 공지
</c:when>
<c:when test="${bbscttInfo.ntcAt eq 'N'}">
공지 안함
</c:when>
</c:choose>
</span>
</div>
</td>
</c:if>
<c:choose>
<c:when test="${bbsInfo.bbsTyCd ne '04'}">
<th>노출 기간 제한<br><span>(노출 여부)</span></th>
</c:when>
<c:otherwise>
<th>노출 여부</th>
</c:otherwise>
</c:choose>
<td>
<div class="td-inner">
<span id="dtlNtce">
<c:choose>
<c:when test="${bbscttInfo.expsrAt eq 'Y' && bbscttInfo.ntcePdSetupAt eq 'Y'}">
<c:choose>
<c:when test="${bbscttInfo.ntcePdAt eq 'Y'}">
${ bbscttInfo.ntceBgnDe }~${ bbscttInfo.ntceEndDe }[종료]
</c:when>
<c:otherwise>
${ bbscttInfo.ntceBgnDe }~${ bbscttInfo.ntceEndDe }
</c:otherwise>
</c:choose>
</c:when>
<c:when test="${bbscttInfo.expsrAt eq 'Y' && bbscttInfo.ntcePdSetupAt eq 'N'}">
상시 노출
</c:when>
<c:when test="${bbscttInfo.expsrAt eq 'N' && bbscttInfo.ntcePdSetupAt eq 'N'}">
노출 안함
</c:when>
</c:choose>
</span>
</div>
</td>
</tr>
<tr>
<th>등록일</th>
<td>
<div class="td-inner" id="dtlRegistDt">
${ bbscttInfo.registDt }
</div>
</td>
<th>조회수</th>
<td>
<div class="td-inner" id="dtlInqireCnt">
${bbscttInfo.inqireCnt }
</div>
</td>
</tr>
<tr>
<c:if test="${bbsInfo.onoffline eq 'Y' }">
<th>온/오프라인</th>
<td>
<div class="td-inner" id="onoflneAt">
<c:choose>
<c:when test="${bbscttInfo.onlineAt eq 'Y' && bbscttInfo.oflneAt eq 'N'}">온라인</c:when>
<c:when test="${bbscttInfo.onlineAt eq 'N' && bbscttInfo.oflneAt eq 'Y'}">오프라인</c:when>
<c:when test="${bbscttInfo.onlineAt eq 'Y' && bbscttInfo.oflneAt eq 'Y'}">온/오프라인</c:when>
</c:choose>
</div>
</td>
</c:if>
<c:if test="${bbsInfo.reprsntImg eq 'Y' }">
<c:if test="${not empty bbscttInfo.reprsntImgOrginlFilNm}">
<th>대표이미지</th>
<td>
<div class="td-inner">
<ul class="file-list">
<li id="<c:out value = '${bbscttInfo.bbscttInnb}'/>">
<a href="#" class="file-list__item" id = "<c:out value="${bbscttInfo.reprsntImgOrginlFilNm}"/>"
onclick="downloadFile(this,'<c:out value="${bbscttVO.sopmalCd}"/>','BDIG', 1);"><%--TODO::추후 쇼핑몰코드 SET해야함--%>
<i class="icon icon_file-list mr-2"></i>
<span class="file-list__item-title">
<c:out value="${bbscttInfo.reprsntImgOrginlFilNm}"/>
</span>
</a>
</li>
</ul>
</div>
</td>
</c:if>
</c:if>
</tr>
<c:if test="${not empty qesitmAnswList}"> <%--2문항 답변 출력시 다음 tr에 문항 답변 출력--%>
<c:forEach items="${qesitmAnswList}" var="answ" varStatus="status">
<c:choose>
<c:when test="${status.index % 2 == 0}">
<tr>
<th><c:out value="${answ.qesitmNm}"/></th>
<td>
<c:choose>
<c:when test="${not empty answ.answCn}">
<c:out value="${answ.answCn}"/>
</c:when>
<c:otherwise>
(없음)
</c:otherwise>
</c:choose>
</td>
<c:if test="${bbsInfo.mainExpsr eq 'Y'}">
<th>메인노출</th>
<td>
<div class="td-inner">
<c:out value="${bbscttInfo.mainExpsrAt}"/>
</div>
</td>
</c:if>
</c:when>
<c:when test="${status.index % 2 != 0}">
<th><c:out value="${answ.qesitmNm}"/></th>
<td>
<c:choose>
<c:when test="${not empty answ.answCn}">
<c:out value="${answ.answCn}"/>
</c:when>
<c:otherwise>
(없음)
</c:otherwise>
</c:choose>
</td>
<c:if test="${bbsInfo.mainExpsr eq 'Y'}">
<th>메인노출</th>
<td>
<div class="td-inner">
<c:out value="${bbscttInfo.mainExpsrAt}"/>
</div>
</td>
</c:if>
</tr>
</c:when>
</c:choose>
</c:forEach>
</c:if>
<tr>
<th>작성자</th>
<td>
<div>
<c:choose>
<%--회원--%>
<c:when test="${bbscttInfo.regusrDvCd eq '01'}">
<button type="button"
class="crmBtn"
data-info="info01"
onclick="fn_select_crm_mini_info(this,
'<c:out value='${bbscttInfo.regusr}'/>'
,'<c:out value='${bbscttInfo.mbrDvCd}'/>'
,'#modalDiv');">
<span class="gray-12">
<c:out value="${bbscttInfo.regusrNm}"/>
</span><br>
(<c:choose>
<c:when test="${bbscttInfo.joinMthCd eq 'kakao'}"><%--kakao--%>
<i class="icon icon_word-badge_kakao"></i>
</c:when>
<c:when test="${bbscttInfo.joinMthCd eq 'naver'}"><%--naver--%>
<i class="icon icon_word-badge_naver"></i>
</c:when>
<c:when test="${bbscttInfo.joinMthCd eq 'pos'}"><%--pos--%>
<i class="icon icon_word-badge_pos"></i>
<span class="fw-500 blue-7">
<c:out value="${bbscttInfo.regusrId}"/>
</span>
</c:when>
<c:otherwise>
<span class="fw-500 blue-7"><c:out
value="${bbscttInfo.regusrId}"/></span>
</c:otherwise>
</c:choose>/
<span class="fw-500 green-8">
<c:out value="${bbscttInfo.mbrGradNm}"/>
</span>)
</button>
</c:when>
<%--관리자1--%>
<c:when test="${bbscttInfo.regusrDvCd eq '02'}">
<c:out value="${ bbscttInfo.mngrNm}"/>(<c:out
value="${bbscttInfo.maskingRegusrId}"/>)
</c:when>
<%--네이버페이--%>
<c:when test="${bbscttInfo.regusrDvCd eq '03'}">
<c:out value="${ bbsctt.regusrNm}"/>
</c:when>
<%--입점사--%>
<c:when test="${bbscttInfo.regusrDvCd eq '04'}">
입점사
</c:when>
<%--비회원--%>
<c:when test="${bbscttInfo.regusrDvCd eq '99'}">
<c:out value="${bbscttInfo.maskingRegusrNm}"/>[비회원]
</c:when>
</c:choose>
</div>
</td>
</tr>
<c:if test="${not empty resultMap.bbscttInfo.fileInfo}">
<c:choose>
<c:when test = "${bbscttInfo.regusrDvCd ne '02'}"><%--상품qna 사진 미리보기--%>
<tr>
<th>등록된 이미지<br></th>
<td colspan="3">
<div class="td-inner">
<c:forEach items="${resultMap.bbscttInfo.fileInfo}" var="file" varStatus="status">
<div class="file-preview__container">
<div class="file-preview">
<span class="file-preview__number"></span>
<div class="file-preview__image" style="max-width: 200px; max-height: 100%; overflow: hidden;">
<a href="<c:out value="${cdnurl}${file.filCours}${file.sysFilNm}"/>" target="_blank">
<img src="<c:out value="${cdnurl}${file.filCours}${file.sysFilNm}"/>" onerror="this.src='/mngr/images/image_placeholder.png'" alt="" style="width: 100%; height:100%;">
</a>
</div>
</div>
</div>
</c:forEach>
</div>
</td>
</tr>
</c:when>
<c:otherwise><%--상품qna제외한 파일 정보(텍스트)--%>
<tr>
<th>파일</th>
<td colspan="3">
<div class="td-inner">
<ul class="file-list">
<c:if test = "${not empty resultMap.bbscttInfo.fileInfo}">
<c:forEach var="file" items="${resultMap.bbscttInfo.fileInfo}">
<li id="<c:out value = '${file.bbscttAtchmnfilInnb}'/>">
<a href="#" class="file-list__item" id = '<c:out value="${file.orginlFilNm}"/>'
onclick="downloadFile(this,'<c:out value="${bbscttVO.sopmalCd}"/>','BDFL', 1);">
<i class="icon icon_file-list mr-2"></i>
<span class="file-list__item-title">
<c:out value="${file.orginlFilNm}"/>
</span>
</a>
</li>
</c:forEach>
</c:if>
</ul>
</div>
</td>
</tr>
</c:otherwise>
</c:choose>
</c:if>
<tr>
<th><c:out value="${bbsInfo.questionSj}"/></th>
<td colspan="3">
<div class="td-inner">
<div>
<c:choose>
<c:when test="${bbscttInfo.useAt eq 'Y'}">
<c:out value="${bbscttInfo.sj}"/>
</c:when>
<c:otherwise>
<span class="stone-6">삭제된 게시글입니다.</span>
</c:otherwise>
</c:choose>
</div>
<c:if test="${bbscttInfo.newAt eq 'Y'}">
<i class="icon icon_new-badge"></i>
</c:if>
<c:if test="${bbscttInfo.popularAt eq 'Y'}">
<i class="icon icon_hot-badge"></i>
</c:if>
<c:if test="${ bbscttInfo.secretBbscttAt eq 'Y' }">
<i class="icon icon_lock"></i>
</c:if>
</div>
</td>
</tr>
<tr>
<th><c:out value="${bbsInfo.awswCn}"/></th>
<td colspan="3">
<div id="cnDiv" class="ck-content" style="white-space: pre-wrap">
<c:if test="${bbscttInfo.useAt eq 'N'}">
<span class="stone-6">삭제된 게시글입니다.</span>
</c:if>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<%--게시글 상세내용 END--%>
<%--게시글 답변내용 START--%>
<c:if test="${bbsInfo.answRegist eq 'Y'}">
<c:if test="${not empty bbscttInfo.answBbscttInnb}">
<div class="form-control-container mb-10 dtlAnswDiv">
<div class="left">
<span class="fs-16 fw-500">답변</span>
</div>
<div class="center">
</div>
<div class="right">
</div>
</div>
<div class="table-wrapper mb-40 dtlAnswDiv">
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 15%;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th>작성자</th>
<td>
<div class="td-inner">
<span class="comment-id">
<i class="icon icon_comment-user"></i>
<span class="comment-id__name" id="dtlMbrNmRe">
<c:out value="${bbscttInfo.maskingRegusrId}"/><c:out value="${bbscttInfo.mngrNm}"/>
</span>
</span>
</div>
</td>
</tr>
<tr>
<th>제목</th>
<td>
<div class="td-inner" id="dtlSjRe">
<c:out value="${bbscttInfo.answSj}"/>
</div>
</td>
</tr>
<tr>
<th>내용</th>
<td class="ck-content"><c:out value="${bbscttInfo.answCn}" escapeXml="false"/></td>
</tr>
</tbody>
</table>
</div>
</c:if>
</c:if>
<%--게시글 답변내용 END--%>
<%-- 게시글 댓글 START --%>
<c:if test="${bbsInfo.cmRegist eq 'Y' }">
<c:if test="${bbscttInfo.cmUseAt eq 'Y' }">
<div id="cm"></div>
<%-- 게시글 댓글 등록 START --%>
<form class="cmFormTr dtlCmDiv" id="cmInputClass">
<input type="hidden" name="bbscttInnb" value="${bbscttInfo.bbscttInnb }" id="bbscttInnb"/>
<input type="hidden" name="bbsId" value="${ bbsInfo.bbsId }"/>
<input type="hidden" name="cmInnb"/>
<div class="comment-write-container mb-40">
<span class="comment-id">
<i class="icon icon_comment-user"></i>
<span class="comment-id__name"><c:out value="${bbscttVO.regusrNm }"/></span>
<span class="comment-id__id">( <c:out value="${bbscttVO.regusrId}"/> )</span>
<span class="comment-id__ip">(IP: <c:out value="${ip}"/>)</span>
</span>
<div class="comment-write">
<div class="comment-write__textarea-container">
<textarea class="comment-write__textarea" id="cmInputCn" rows="5"
placeholder="댓글을 입력하세요." title="댓글 입력" name="cn"></textarea>
</div>
<button type="button" id="btnCmReg" class="comment-write__button"
onclick="fn_regist_cm('c', this);"><spring:message
code="button.insert"/></button>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox">
<input type="checkbox" name="secretBbscttAt" value="Y"
onclick="fn_check_secret_cm(this);">
<span class="check"></span>
<span class="control-label">비밀 댓글</span>
</label>
</div>
</div>
</form>
</c:if>
</c:if>
<%-- 게시글 댓글 등록 END --%>
<%-- 게시글 댓글 END --%>
<%-- 이전글/다음글 START --%>
<c:if test="${bbsInfo.prevNext eq 'Y'}">
<div class="prev-next">
<c:if test="${not empty bbscttInfo.beforeInnb}">
<div class="prev-next__item prev">
<div class="prev-next__item-title">이전글</div>
<div class="prev-next__item-content">
<button type="button" class="moveDetil"
regusr-dv="02"
bbs-id="<c:out value ='${bbsInfo.bbsId}'/>"
bbsctt-innb="<c:out value ='${ bbscttInfo.beforeInnb }'/>">
<c:choose>
<c:when test="${bbscttInfo.beforeUseAt eq 'Y'}">
<c:out value="${bbscttInfo.beforeSj}"/>
</c:when>
<c:otherwise>
<span class="stone-6">삭제된 게시글입니다.</span>
</c:otherwise>
</c:choose>
</button>
</div>
<div class="prev-next__item-info">
<span class="prev-next__item-info__author"
regusrDv="<c:out value="${ bbscttInfo.beforeRegusrDvCd}"/>">
<c:choose>
<%--회원--%>
<c:when test="${bbscttInfo.beforeRegusrDvCd eq '01'}">
<span class="gray-12">
<c:out value="${bbscttInfo.beforeRegusrNm}"/>
</span><br>
(<span class="fw-500 blue-7"><c:out value="${bbscttInfo.beforeRegusrId}"/></span>/
<span class="fw-500 green-8"><c:out
value="${bbscttInfo.beforeMbrGradNm}"/></span>)
</c:when>
<%--관리자--%>
<c:when test="${bbscttInfo.beforeRegusrDvCd eq '02'}">
<c:out value="${ bbscttInfo.mngrNm}"/>(<c:out
value="${ bbscttInfo.maskingBeforeRegusrId}"/>)
</c:when>
<%--네이버페이--%>
<c:when test="${bbscttInfo.beforeRegusrDvCd eq '03'}">
naverpay
</c:when>
<%--입점사--%>
<c:when test="${bbscttInfo.beforeRegusrDvCd eq '04'}">
입점사
</c:when>
<%--비회원--%>
<c:when test="${bbscttInfo.beforeRegusrDvCd eq '99'}">
<c:out value="${ bbscttInfo.maskingBeforeRegusrNm}"/>[비회원]
</c:when>
</c:choose>
</span>
<span class="prev-next__item-info__dat e" id="dtlPrevDt">
<c:out value="${ bbscttInfo.beforeRegistDt}"/>
</span>
</div>
</div>
</c:if>
<c:if test="${not empty bbscttInfo.afterInnb}">
<div class="prev-next__item next">
<div class="prev-next__item-title">다음글</div>
<div class="prev-next__item-content">
<button type="button" class="moveDetil"
regusr-dv="02"
bbs-id="<c:out value ='${bbsInfo.bbsId}'/>"
bbsctt-innb="<c:out value ='${ bbscttInfo.afterInnb }'/>">
<c:choose>
<c:when test="${bbscttInfo.afterUseAt eq 'Y'}">
<c:out value="${bbscttInfo.afterSj}"/>
</c:when>
<c:otherwise>
<span class="stone-6">삭제된 게시글입니다.</span>
</c:otherwise>
</c:choose>
</button>
</div>
<div class="prev-next__item-info">
<span class="prev-next__item-info__author"
regusrDv="<c:out value="${ bbscttInfo.afterRegusrDvCd}"/>">
<c:choose>
<%--회원--%>
<c:when test="${bbscttInfo.afterRegusrDvCd eq '01'}">
<span class="gray-12">
<c:out value="${bbscttInfo.afterRegusrNm}"/>
</span><br>
(<span class="fw-500 blue-7"><c:out value="${bbscttInfo.afterRegusrId}"/></span>/
<span class="fw-500 green-8"><c:out
value="${bbscttInfo.afterMbrGradNm}"/></span>)
</c:when>
<%--관리자--%>
<c:when test="${bbscttInfo.afterRegusrDvCd eq '02'}">
<c:out value="${ bbscttInfo.mngrNm}"/>(<c:out
value="${ bbscttInfo.maskingAfterRegusrId}"/>)
</c:when>
<%--네이버페이--%>
<c:when test="${bbscttInfo.afterRegusrDvCd eq '03'}">
naverpay
</c:when>
<%--입점사--%>
<c:when test="${bbscttInfo.afterRegusrDvCd eq '04'}">
입점사
</c:when>
<%--비회원--%>
<c:when test="${bbscttInfo.afterRegusrDvCd eq '99'}">
<c:out value="${ bbscttInfo.maskingAfterRegusrNm}"/>[비회원]
</c:when>
</c:choose>
</span>
<span class="prev-next__item-info__date" id="dtlPrevDt">
<c:out value="${ bbscttInfo.afterRegistDt}"/>
</span>
</div>
</div>
</c:if>
</div>
<!-- 이전글/다음글 END -->
</c:if>
</div>
<div class="modal-footer">
<a id="btnCloseModal" rel="modal:close" class="btn primary" style="cursor:pointer">확인</a>
</div>
</div>

View File

@@ -0,0 +1,325 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : GnrlBbscttListR.jsp
Description : 일반 게시글 목록 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2023-12-08 김혜지 최초 생성
--%>
<section class="content-section">
<div class="form-control-container">
<div class="left">
<div class="search-number">
<span class="search-number__text">총 <strong><fmt:formatNumber value="${resultMap.paginationInfo.totalRecordCount}" pattern="#,###"/></strong>건</span>
</div>
</div>
<div class="center">
</div>
<div class="right">
<div class="select-box">
<select id="pageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_bbsctt_list('1');">
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paginationInfo.recordCountPerPage eq pageUnit }">selected="selected"</c:if>><c:out value="${ pageUnit }"/>개씩</option>
</c:forEach>
</select>
</div>
</div>
</div>
<form id="listForm">
<hr class="horizontal-line">
<div class="form-control-container">
<div class="left">
<button type="button" class="btn outline sm" onclick="fn_delete_bbsctt('', 'many');">선택 <spring:message code="button.delete"/></button>
</div>
<div class="center">
</div>
<div class="right">
<c:if test="${resultMap.bbsInfo.bbsId ne 'largeLMS_event'}">
<button type="button" class="btn outline sm moveSopBtn">사용자 보기</button>
</c:if>
</div>
</div>
<hr class="spacing">
<div class="table-wrapper" id = "listTb">
<table class="table vertical">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 4%;">
<col style="width: 3%;">
<col style="width: 8%;">
<col style="width: 8%;">
<col style="width: auto;" class = "ntc">
<col style="width: auto;" class = "itm">
<col style="width: auto;">
<col style="width: auto">
<col style="width: auto">
<col style="width: auto;">
<c:if test = "${resultMap.bbsInfo.answRegist eq 'Y'}"><%--게시판 설정 답변사용여부체크--%>
<col style="width: 5%">
</c:if>
<c:choose>
<c:when test = "${resultMap.bbsInfo.answRegist eq 'Y'}">
<col style="width: 11%">
</c:when>
<c:otherwise>
<col style="width: 5%">
</c:otherwise>
</c:choose>
<col style="width: 5%">
</colgroup>
<thead>
<tr>
<th>
<label class="b-checkbox checkbox is-medium check-all" >
<input type="checkbox" value="" id="listChkA">
<span class="check"></span>
</label>
</th>
<th>번호</th>
<th>작성자</th>
<th>IP</th>
<th>제목</th>
<th class = "itm">분류</th><%--분류 존재시 노출--%>
<th class = "ntc">공지기간</th><%--공지 존재시 노출--%>
<th>노출 기간</th>
<th>등록일</th>
<th>조회수</th>
<c:if test = "${resultMap.bbsInfo.answRegist eq 'Y'}"><%--게시판 설정 답변사용여부체크--%>
<th>답변상태</th>
</c:if>
<th>관리</th>
<th>삭제</th>
</tr>
</thead>
<tbody id ="contentSection">
<c:choose>
<c:when test="${ not empty resultMap.resultList.resultList }">
<c:set var="rnumAt" value="false"/>
<c:forEach items="${ resultMap.resultList.resultList }" var="resultList" varStatus="status">
<tr>
<td>
<c:choose>
<c:when test="${resultList.rnum eq 0}">
</c:when>
<c:otherwise>
<c:if test="${ resultList.useAt eq 'Y' && empty resultList.npayBbscttSnb }">
<label class="b-checkbox checkbox is-medium chkLabel">
<input type="checkbox" value="${ resultList.bbscttInnb }"
name="selectedBbscttRow" class='bbscttChk'>
<span class="check"></span>
</label>
</c:if>
</c:otherwise>
</c:choose>
</td>
<td>
<c:choose>
<c:when test="${resultList.ntcAt eq 'Y'}">
공지
</c:when>
<c:otherwise>
<c:out value="${resultList.rnum}" />
</c:otherwise>
</c:choose>
</td>
<td>
<c:choose>
<%--회원--%>
<c:when test="${resultList.regusrDvCd eq '01'}">
<button type="button"
class="crmBtn"
data-info="info01"
onclick="fn_select_crm_mini_info(this,
'<c:out value='${resultList.regusr}'/>'
,'<c:out value='${resultList.mbrDvCd}'/>'
,'#modalDiv');">
<span class="gray-12">
<c:out value="${resultList.regusrNm}"/>
</span><br>
(<c:choose>
<c:when test="${resultList.joinMthCd eq 'kakao'}"><%--kakao--%>
<i class="icon icon_word-badge_kakao"></i>
</c:when>
<c:when test="${resultList.joinMthCd eq 'naver'}"><%--naver--%>
<i class="icon icon_word-badge_naver"></i>
</c:when>
<c:when test="${resultList.joinMthCd eq 'pos'}"><%--pos--%>
<i class="icon icon_word-badge_pos"></i>
<span class="fw-500 blue-7">
<c:out value="${resultList.regusrId}"/>
</span>
</c:when>
<c:otherwise>
<span class="fw-500 blue-7"><c:out
value="${resultList.regusrId}"/></span>
</c:otherwise>
</c:choose>/
<span class="fw-500 green-8"><c:out value="${resultList.mbrGradNm}"/></span>)
</button>
</c:when>
<%--관리자--%>
<c:when test="${resultList.regusrDvCd eq '02'}">
<c:out value="${ resultList.mngrNm}"/>(<c:out value="${ resultList.maskingRegusrId}"/>)
</c:when>
<%--네이버페이--%>
<c:when test="${resultList.regusrDvCd eq '03'}">
naverpay
</c:when>
<%--비회원--%>
<c:when test="${resultList.regusrDvCd eq '99'}">
<c:out value="${resultList.maskingRegusrNm}"/>[비회원]
</c:when>
</c:choose>
</td>
<td><c:out value="${ resultList.ip }" /></td>
<td class="left">
<a class="under-line moveDetil"
bbsctt-innb = "<c:out value="${ resultList.bbscttInnb }"/>"
bbs-id ="<c:out value="${ resultList.bbsId }"/>"
regusr-dv = "02">
<c:choose>
<c:when test = "${resultList.useAt eq 'Y'}">
<c:out value="${ resultList.sj }"/>
</c:when>
<c:otherwise>
<span class="stone-6">삭제된 게시글입니다.[<c:out value="${ resultList.updtDt}"/>]</span>
</c:otherwise>
</c:choose>
</a>
<c:if test="${resultList.isfiles eq 1}"><%--첨부파일여부--%>
<i class="icon icon_image-badge"></i>
</c:if>
<c:if test="${resultList.newAt eq 'Y'}"><%--새로운게시글여부--%>
<i class="icon icon_new-badge"></i>
</c:if>
<c:if test="${resultList.popularAt eq 'Y'}"><%--인기게시글여부--%>
<i class="icon icon_hot-badge"></i>
</c:if>
<c:if test="${ resultList.secretBbscttAt eq 'Y' }"><%--비밀글여부--%>
<i class="icon icon_lock"></i>
</c:if>
<c:if test = "${resultList.cmCnt > 0}"><%--댓글개수--%>
(<c:out value="${resultList.cmCnt}" />)
</c:if>
</td>
<td class = "itm"><c:out value="${resultList.answCn}" /></td>
<td class = "ntc">
<c:choose>
<c:when test= "${resultList.ntcDvn eq '1'}">
<span>상시 공지</span>
</c:when>
<c:when test="${resultList.ntcDvn eq '2'}">
<span><c:out value="${ resultList.ntcBgnDe }"/></span> ~
<span><c:out value="${ resultList.ntcEndDe }"/></span>
</c:when>
<c:when test="${resultList.ntcDvn eq '3'}">
<span>공지 종료</span>
</c:when>
<c:otherwise>
<span class = "ntcAt"></span><%--공지 존재 여부--%>
</c:otherwise>
</c:choose>
</td>
<td>
<c:choose>
<c:when test="${resultList.expsrAt eq 'Y' && resultList.ntceDvn eq 1}">
<span><c:out value="${ resultList.aNtceBgnDe }"/></span> ~
<span>상시</span>
</c:when>
<c:when test= "${resultList.expsrAt eq 'Y' && resultList.ntceDvn eq 2}">
<span><c:out value="${ resultList.ntceBgnDe }"/></span> ~
<span><c:out value="${ resultList.ntceEndDe }"/></span>
</c:when>
<c:when test="${resultList.expsrAt eq 'Y' && resultList.ntceDvn eq 3}">
<c:choose>
<c:when test = " ${resultList.ntcePdSetupAt eq 'N'}">
<span><c:out value="${ resultList.aNtceBgnDe }"/></span> ~
</c:when>
<c:otherwise>
<span><c:out value="${ resultList.ntceBgnDe }"/></span> ~
</c:otherwise>
</c:choose>
<span><c:out value="${ resultList.ntceEndDe }"/></span>[종료]
</c:when>
<c:otherwise>
<span>노출 안함</span>
</c:otherwise>
</c:choose>
</td>
<td><c:out value="${ resultList.registDt }"/></td>
<td><fmt:formatNumber value="${resultList.inqireCnt}" pattern="#,##0"/></td>
<c:if test = "${resultMap.bbsInfo.answRegist eq 'Y'}"><%--게시판 설정 답변사용여부체크--%>
<td>
<c:if test = "${not empty resultList.answBbscttInnb}">답변완료</c:if>
<c:if test = "${empty resultList.answBbscttInnb}">답변대기</c:if>
</td>
</c:if>
<td>
<div class="manage-btn-container">
<c:if test="${ resultList.useAt eq 'Y' && empty resultList.npayBbscttSnb }">
<button type ="button" class="btn xsm outline primary" onclick="fn_select_bbsctt_update_pop('<c:out value="${ resultList.bbscttInnb }"/>','<c:out value="${ resultList.bbsId }"/>','');"><spring:message code="button.update"/></button>
</c:if>
<c:if test="${resultMap.bbsInfo.answRegist eq 'Y'}">
<c:choose>
<c:when test="${not empty resultList.answBbscttInnb}">
<button type="button" class="btn xsm primary outline"
onclick="fn_select_answ_update_pop('<c:out
value="${ resultList.bbscttInnb }"/>', '<c:out
value="${ resultList.answBbscttInnb}"/>','<c:out
value="${ resultList.bbsId }"/>','');">답변
<spring:message code="button.update"/></button>
</c:when>
<c:when test="${empty resultList.answBbscttInnb}">
<button type="button" class="btn xsm primary"
onclick="fn_select_answ_regist_pop('<c:out
value="${ resultList.bbscttInnb }"/>','<c:out
value="${ resultList.bbsId }"/>','');">답변
<spring:message code="button.insert"/></button>
</c:when>
</c:choose>
</c:if>
</div>
</td>
<td>
<c:if test="${ resultList.useAt eq 'Y' && empty resultList.npayBbscttSnb }">
<div class="manage-btn-container">
<button class="btn xsm dark" type="button" onclick="fn_delete_bbsctt('<c:out value="${ resultList.bbscttInnb }"/>');"><spring:message code="button.delete"/></button>
</div>
</c:if>
</td>
</tr>
<c:if test = "${resultList.rnum > 0}">
<c:set var="rnumAt" value="true" scope="page" />
</c:if>
</c:forEach>
<c:if test = "${not rnumAt}"><%--조회된 데이터 없을 시 데이터 없음 노출--%>
<tr>
<td colspan="100%"><spring:message code="common.nodata"/></td>
</tr>
</c:if>
</c:when>
<c:otherwise>
<tr>
<td colspan="100%"><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</form>
</section>
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value = '${resultMap.bbsctt.pageIndex}'/>"/>
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_bbsctt_list" />
</div>
<script src="/admin/js/script.js" defer=""></script>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,507 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ page import="java.util.Date" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld" %>
<%--
Class Name : GnrlBbscttRegistPopupC.jsp
Description : 일반 게시글 등록 팝업
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-01-08 김혜지 최초 생성
2024-03-22 김혜인 수정
--%>
<div id="board-list-registration" class="modal" style="max-width: 1400px;">
<div class="modal-header">
<h4>게시글 등록</h4>
</div>
<c:set value="${resultMap.regusrInfo}" var="regusrInfo"/>
<c:set value="${resultMap.bbsInfo}" var="bbsInfo"/>
<c:set value="${resultMap.qesitmList.qesitmList}" var="qesitmList"/>
<c:set value="${resultMap.qesitmList.itmCnList}" var="itmCnList"/>
<c:set value="${resultMap.itmList}" var="itmList"/>
<br>
<div class="modal-content">
<div class="form-control-container mb-10">
<div class="left">
</div>
<div class="center">
</div>
<div class="right">
</div>
</div>
<form id="bbsRegForm">
<input type="hidden" name="sknTyCd" value="<c:out value="${bbsInfo.sknTyCd}"/>">
<input type="hidden" name="bbsId" value="<c:out value="${bbsInfo.bbsId}"/>"/>
<input type="hidden" name="ip" value="<c:out value="${ip}"/>">
<input type="hidden" name="filPermFilExtsn" value="<c:out value='${bbsInfo.filPermFilExtsn}'/>">
<input type="hidden" name="sopmalCd" value="<c:out value='${resultMap.bbsInfo.sopmalCd}'/>">
<div class=" table-wrapper mb-40">
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 15%;">
<col style="width: 35%;">
<col style="width: 15%;">
<col style="width: 35%;">
</colgroup>
<tbody>
<tr>
<th>작성자</th>
<td colspan="3">
<div class="td-inner">
관리자(IP:<c:out value="${ip}"/>)
</div>
</td>
</tr><!-- tr내 내용 없을 시 tr nonvisible(상품q&a노출,공지없음)1 -->
<tr class="visibleAt">
<c:choose>
<c:when test="${bbsInfo.bbsTyCd ne '04' && bbsInfo.bbsTyCd ne '10'}">
<th>노출 기간 제한<br><span class="fs-13">(노출 여부)</span></th>
</c:when>
<c:otherwise>
<th>노출 여부</th>
</c:otherwise>
</c:choose>
<td>
<div class="td-inner vertical pdDiv">
<div class="input-container">
<div class="b-checkbox-container mr-15">
<label class="b-checkbox checkbox">
<input type="checkbox" name="expsrAt" id="expsrAt" value="Y"
onclick="fn_readOnly_set(this);">
<span class="check"></span>
<span class="control-label">노출여부</span>
</label>
</div>
<c:if test="${bbsInfo.bbsTyCd ne '04'&& bbsInfo.bbsTyCd ne '10'}">
<div class="custom-radio-container pdRadio">
<div class="custom-radio">
<input type="radio" id="ntcePdSetupAtYC" name="ntcePdSetupAt" value="Y"
onclick="fn_readOnly_ntcePd(this);" disabled>
<label for="ntcePdSetupAtYC">기본</label>
</div>
<div class="custom-radio">
<input type="radio" class="pdRadioN" id="ntcePdSetupAtNC"
name="ntcePdSetupAt" value="N"
onclick="fn_readOnly_ntcePd(this);" disabled>
<label for="ntcePdSetupAtNC">상시</label>
</div>
</div>
</c:if>
</div>
<c:if test="${bbsInfo.bbsTyCd ne '04'&& bbsInfo.bbsTyCd ne '10'}">
<div class="input-container pdDate">
<input type="text" name="ntceBgnDe" class="datepicker ntceDate chkDate"
title="시작 날짜 선택" autocomplete="off" value="" disabled>
<span class="tilde">~</span>
<input type="text" name="ntceEndDe" class="datepicker ntceDate chkDate"
title="종료 날짜 선택" autocomplete="off" value="" disabled>
</div>
</c:if>
</div>
</td>
<c:if test="${bbsInfo.notice eq 'Y'}">
<th>공지 기간 제한<br><span class="fs-13">(공지글 여부)</span></th>
<td>
<div class="td-inner vertical pdDiv">
<div class="input-container">
<div class="b-checkbox-container mr-15">
<label class="b-checkbox checkbox">
<input type="checkbox" name="ntcAt" value="Y"
onclick="fn_readOnly_set(this);">
<span class="check"></span>
<span class="control-label">공지글 등록</span>
</label>
</div>
<div class="custom-radio-container pdRadio">
<div class="custom-radio">
<input type="radio" id="ntcPdSetupAtYC" name="ntcPdSetupAt" value="Y"
onclick="fn_readOnly_ntcPd(this)" disabled>
<label for="ntcPdSetupAtYC">기본</label>
</div>
<div class="custom-radio">
<input type="radio" class="pdRadioN" id="ntcPdSetupAtNC"
name="ntcPdSetupAt"
value="N" onclick="fn_readOnly_ntcPd(this)" disabled>
<label for="ntcPdSetupAtNC">상시</label>
</div>
</div>
</div>
<div class="input-container pdDate">
<input type="text" name="ntcBgnDe" id="ntcBgnDe"
class="datepicker ntcDate chkDate"
title="시작 날짜 선택" autocomplete="off" disabled>
<span class="tilde">~</span>
<input type="text" name="ntcEndDe" id="ntcEndDe"
class="datepicker ntcDate chkDate"
title="종료 날짜 선택" autocomplete="off" disabled>
</div>
</div>
</td>
</c:if>
</tr>
<tr class="visibleAt">
<c:if test="${bbsInfo.secretBbsctt eq 'Y'}">
<th>비밀글 여부</th>
<td>
<div class="td-inner">
<div class="b-checkbox-container mr-10">
<label class="b-checkbox checkbox">
<input type="checkbox" name="secretBbscttAt" value="Y"
onclick="fn_readOnly_secret(this);">
<span class="check"></span>
<span class="control-label">비밀글입니다</span>
</label>
</div>
<input class="input-text md" type="password" name="password" title="비밀번호"
placeholder="비밀번호를 입력해주세요." maxlength="20" disabled>
</div>
</td>
</c:if>
<c:if test="${bbsInfo.reprsntImg eq 'Y'}">
<th>대표 이미지</th>
<td>
<div class="td-inner align-items-start">
<div class="input-file fileInputDiv" id="fileBtn">
<input type="hidden" id="represntFilAt" name="represntFilAt" value = "N">
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.extensions.images')" var="acceptFileExtensions"/>
<input type="file" id="fileUpload" name="files" title="대표이미지" multiple="multiple" accept="<c:out value='${ acceptFileExtensions }'/>">
<label for="fileUpload">첨부 파일</label>
</div>
<div class="manage-btn-container" id="fileCnBtn">
<ul class="file-list" id="fileList">
</ul>
</div>
</div>
</td>
</c:if>
</tr>
<tr class="visibleAt">
<c:if test="${bbsInfo.itm eq 'Y'}">
<c:if test="${not empty itmList}">
<th>분류<span class="red-7">*</span></th>
<td>
<div class="td-inner">
<div class="select-box">
<select class="md" id="qesitmNmC" name="itmInnbArr[]">
<option value="">분류 선택</option>
<c:forEach var="itm" items="${itmList}" varStatus="status">
<option value="<c:out value="${itm.itmInnb}"/>"
qesitm-innb="${itm.qesitmInnb}" answ-Cn="${itm.itmCn}">
<c:out
value="${itm.itmCn}"/></option>
</c:forEach>
</select>
</div>
<input type="hidden" name="qesitmEssntlAtArr[]" value="Y">
<input type="hidden" name="qesitmNmArr[]" id="qesitmNm" value="분류"/>
<input type="hidden" name="qesitmInnbArr[]" id="qesitmInnb"/>
<input type="hidden" name="answCnArr[]" id="answCn"/>
<input type="hidden" name="qesitmAtArr[]" id="qesitmAt" value="N">
</div>
</td>
</c:if>
</c:if>
<c:if test="${bbsInfo.mainExpsr eq 'Y'}">
<th>메인노출</th>
<td>
<div class="td-inner">
<div class="input-container">
<label class="b-checkbox checkbox">
<input type="checkbox" name="mainExpsrAt" value="Y">
<span class="check"></span>
<span class="control-label">노출</span>
</label>
</div>
</div>
</td>
</c:if>
</tr>
<tr class="visibleAt">
<c:if test="${bbsInfo.cmSetupUseAt eq 'Y'}">
<th>댓글 사용 여부</th>
<td>
<div class="td-inner">
<div class="custom-radio-container">
<div class="custom-radio">
<input type="radio" id="cmUseAtYC" name="cmUseAt" value="Y" checked>
<label for="cmUseAtYC">사용</label>
</div>
<div class="custom-radio">
<input type="radio" id="cmUseAtNC" name="cmUseAt" value="N">
<label for="cmUseAtNC">사용 안 함</label>
</div>
</div>
</div>
</td>
</c:if>
<th>순서 설정</th>
<td>
<div class="td-inner">
<div class="input-container">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox">
<input type="checkbox" name="sortOrdrAt" value="Y"
onclick="fn_readOnly_sortOrdr(this);">
<span class="check"></span>
<span class="control-label"></span>
</label>
</div>
<input class="input-text number right xsm" type="text" name="sortOrdr" maxlength="2"
disabled>
</div>
</div>
</td>
</tr>
<tr class="visibleAt">
<c:if test="${bbsInfo.onoffline eq 'Y'}">
<th>온/오프라인</th>
<td>
<div class="td-inner">
<div class="input-container">
<label class="b-checkbox checkbox">
<input type="checkbox" name="onlineAt" value="Y">
<span class="check"></span>
<span class="control-label">온라인</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="oflneAt" value="Y">
<span class="check"></span>
<span class="control-label">오프라인</span>
</label>
</div>
</div>
</td>
</c:if>
</tr>
<tr class="visibleAt">
<c:if test="${bbsInfo.goodsChoice eq 'Y'}">
<th>상품 정보
<button type="button" class="btn xsm primary ml-5"
onclick="fn_open_modal('#modalDiv',
'#product-search',
'/mngr/goods/goodsmngr/selectGoodsSrchPopupForm',
{'goodsKndCd':'01'}); return false;">
검색
</button>
</th>
<td colspan="3">
<div class="td-inner">
<div class="product-search-box__product parentGoodsContainer">
</div>
</div>
</td>
</c:if>
</tr>
<c:if test="${not empty qesitmList}">
<tr>
<th>추가 입력 항목</th>
<td colspan="3">
<div class="td-inner table-wrapper mb-40" id="boardFormItmC">
<table class="table">
<colgroup>
<col style="width: 20%;">
<col style="width: 80%;">
</colgroup>
<tbody>
<c:forEach items="${ qesitmList }" var="qesitmList" varStatus="status">
<tr>
<td>
<c:out value="${ qesitmList.qesitmNm }"/><c:if
test="${ qesitmList.qesitmEssntlAt eq 'Y'}"><span
class="red-7">*</span></c:if>
</td>
<td>
<c:if test="${ qesitmList.itmTyCd eq '01'}">
<div class="custom-radio-container">
<div class="custom-radio">
<input type="hidden" name="qesitmEssntlAtArr[]"
value="${ qesitmList.qesitmEssntlAt}">
<input type="hidden" name="qesitmNmArr[]"
value="${ qesitmList.qesitmNm}">
<input type="hidden" name="qesitmAtArr[]"
class="answRadioAt" value="N">
<input type="hidden" name="qesitmInnbArr[]"
class="answRadio"
value="${ qesitmList.qesitmInnb }"
disabled>
<input type="hidden" name="answCnArr[]"
class="answRadio"
disabled>
<input type="hidden" name="itmInnbArr[]"
class="answRadio"
disabled>
<c:forEach items="${itmCnList}" var="itmCnList1"
varStatus="status">
<c:if test="${itmCnList1.qesitmInnb eq qesitmList.qesitmInnb}">
<input type="radio" id="answCn${ status.index }"
class="answRadioC"
qesitm-innb='${itmCnList1.qesitmInnb}'
name="itmInnbArr${ qesitmList.qesitmInnb}[]"
value="${itmCnList1.itmInnb}"
itm-cn="${itmCnList1.itmCn}">
<label for="answCn${ status.index }">${ itmCnList1.itmCn }</label>
</c:if>
</c:forEach>
</div>
</div>
</c:if>
<c:if test="${ qesitmList.itmTyCd eq '02'}">
<div class="select-box">
<input type="hidden" name="qesitmEssntlAtArr[]"
value="${ qesitmList.qesitmEssntlAt }">
<input type="hidden" name="qesitmNmArr[]"
value="${ qesitmList.qesitmNm }">
<input type="hidden" name="qesitmAtArr[]"
class="answSelectAt"
value="N">
<input type="hidden" name="qesitmInnbArr[]"
class="answSelect"
value="${ qesitmList.qesitmInnb }" disabled>
<input type="hidden" name="answCnArr[]" class="answSelect"
disabled>
<select class="md answSelectC" name="itmInnbArr[]">
<option value="">전체</option>
<c:forEach items="${itmCnList}" var="itmCnList2">
<c:if test="${itmCnList2.qesitmInnb eq qesitmList.qesitmInnb}">
<option value="${ itmCnList2.itmInnb }"
itm-cn="${ itmCnList2.itmCn}"
qesitm-innb='${itmCnList2.qesitmInnb}'>${ itmCnList2.itmCn }</option>
</c:if>
</c:forEach>
</select>
</div>
</c:if>
<c:if test="${ qesitmList.itmTyCd eq '03' }">
<input type="hidden" name="qesitmEssntlAtArr[]"
value="${ qesitmList.qesitmEssntlAt }">
<input type="hidden" name="qesitmNmArr[]"
value="${ qesitmList.qesitmNm }">
<input type="hidden" name="qesitmAtArr[]" class="answChkAt"
value="N">
<c:forEach items="${itmCnList}" var="itmCnList3">
<c:if test="${itmCnList3.qesitmInnb eq qesitmList.qesitmInnb}">
<div class="input-container">
<label class="b-checkbox checkbox">
<input type="hidden" class="answChk"
name="qesitmInnbArr[]"
value="${ qesitmList.qesitmInnb }"
disabled>
<input type="hidden" class="answChk"
name="answCnArr[]"
value="${ itmCnList3.itmCn }" disabled>
<input type="checkbox" class="answChkC"
name="itmInnbArr[]"
value="${ itmCnList3.itmInnb }">
<span class="check"></span>
<span class="control-label">${ itmCnList3.itmCn }</span>
</label>
</div>
</c:if>
</c:forEach>
</c:if>
<c:if test="${ qesitmList.itmTyCd eq '04' }">
<c:forEach items="${itmCnList}" var="itmCnList4">
<c:if test="${itmCnList4.qesitmInnb eq qesitmList.qesitmInnb}">
<div class="input-container">
<input type="hidden" name="qesitmEssntlAtArr[]"
value="${ qesitmList.qesitmEssntlAt }">
<input type="hidden" name="qesitmNmArr[]"
value="${ qesitmList.qesitmNm }">
<input type="hidden" name="qesitmAtArr[]"
class="answTxtAt" value="N">
<input type="hidden" class="answTxt"
name="qesitmInnbArr[]"
value="${ qesitmList.qesitmInnb }" disabled>
<input type="text" class="input-text mm answTxtC"
name="answCnArr[]" title="추가문항답변"
placeholder="${ itmCnList4.itmCn }"
maxlength="666">
<input type="hidden" class="answTxt"
name="itmInnbArr[]"
value="${ itmCnList4.itmInnb }" disabled>
</div>
<br>
</c:if>
</c:forEach>
</c:if>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</td>
</tr>
</c:if>
<c:if test="${bbsInfo.bbsTyCd ne '10'}">
<tr>
<th><c:out value="${bbsInfo.questionSj}"/><span class="red-7">*</span></th>
<td colspan="3">
<div class="td-inner">
<input class="input-text full" type="text" title="해당 인풋에 대한 설명"
placeholder="제목을 입력해주세요." name="sj" maxlength="50">
</div>
</td>
</tr>
</c:if>
<tr>
<th><c:out value="${bbsInfo.awswCn}"/><span class="red-7">*</span></th>
<td colspan="3">
<div class="td-inner">
<textarea class="textarea" title="에디터 입력" rows="10" id="cnBbsReg"></textarea>
</div>
</td>
</tr>
<tr>
<th>스크립트 내용</th>
<td colspan="3">
<div class="td-inner">
<textarea class="textarea" title="에디터 입력" name="cnScript" rows="10"></textarea>
</div>
</td>
</tr>
<c:if test ="${bbsInfo.filAtch eq 'Y'}">
<tr>
<th>파일첨부</th>
<td colspan="3">
<div class="uploadList">
<div class="uploadList__top">
<div>
<button type="button" class="uploadList__removeAll" id = "removeAllBtn" style="display: none">전체 삭제</button>
<button type="button" class="uploadList__uploadFiles" id = "multiFilBtn">파일 첨부</button>
</div>
<span class="uploadList__allSize" id = "allSize">0.00 KB</span>
</div>
<div style="display: none">
<input type="file" id="fileUploadM" name="files" title="파일첨부"
multiple="multiple" accept="<c:out value='${bbsInfo.filPermFilExtsn}'/>"/>
<label for="fileUploadM"></label>
</div>
<div class="uploadList__body" id = "fileUploadMDiv" style="display: none">
<ul class="uploadList__list" id = "fileUploadMUl"><%--ul영역 (li)--%>
</ul>
</div>
</div>
<input type = "hidden" name = "filDvCd" value = "02"/>
</td>
</tr>
</c:if>
</tbody>
</table>
</form>
</div>
<div class="modal-footer">
<a href="#" id="btn_close_modal_bbsC" rel="modal:close" class="btn outline">취소</a>
<button class="btn primary" onclick="fn_regist_bbsctt();"><spring:message code="button.insert"/></button>
</div>
<a href="#close-modal" rel="modal:close" class="close-modal ">Close</a>
</div>
<script src="/admin/js/script.js" defer=""></script>

View File

@@ -0,0 +1,901 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : GnrlBbscttUpdtPopupU.jsp
Description : 일반 게시글 등록 팝업
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-01-08 김혜지 최초 생성
--%>
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
<div id="board-list-update" class="modal" style="max-width: 1400px;">
<div class="modal-header">
<h4>게시글 수정</h4>
</div>
<%--게시판 설정--%>
<c:set value = "${resultMap.bbsInfo}" var = "bbsInfo"/>
<%--게시글 정보--%>
<c:set value = "${resultMap.bbscttInfo.bbscttInfo}" var = "bbscttInfo"/>
<%--게시글 VO--%>
<c:set value = "${resultMap.bbscttVO}" var = "bbscttVO"/>
<%--게시글 추가문항답변--%>
<c:set value = "${resultMap.bbscttInfo.qesitmAnswList}" var = "qesitmAnswList"/>
<%--게시글 첨부파일--%>
<c:set value = "${resultMap.bbscttInfo.fileInfoGson}" var = "fileInfoGson"/><%--드롭존 용--%>
<c:set value = "${resultMap.bbscttInfo.fileInfo}" var = "fileInfo"/><%--일반 파일 첨부 용--%>
<%--게시글 상품--%>
<c:set value = "${resultMap.bbscttInfo.goods}" var = "goods"/>
<%--게시글 분류--%>
<c:set value = "${resultMap.itmList}" var = "itmList"/>
<%--게시글 추가입력항목--%>
<c:set value = "${resultMap.qesitmList.qesitmList}" var = "qesitmList"/>
<%--게시글 추가입력항목 항목--%>
<c:set value = "${resultMap.qesitmList.itmCnList}" var = "itmCnList"/>
<div class="modal-content">
<div class="form-control-container mb-10">
<div class="left">
</div>
<div class="center">
</div>
<div class="right">
</div>
</div>
<form id="bbsUpdtForm">
<input type="hidden" name="sknTyCd" value="<c:out value="${bbsInfo.sknTyCd}"/>">
<input type="hidden" name="bbsId" value="${bbsInfo.bbsId }"/>
<input type="hidden" id="btInnb" name="bbscttInnb" value="${ bbscttInfo.bbscttInnb }"/>
<input type="hidden" id="extFiles" name="extFiles" value=""/>
<input type="hidden" id="filesInfo" name="filesInfo"/>
<input type = "hidden" name = "sopmalCd" value = "${bbscttVO.sopmalCd}"/>
<div class="table-wrapper mb-40">
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 15%;">
<col style="width: 35%;">
<col style="width: 15%;">
<col style="width: 35%;">
</colgroup>
<tbody>
<tr>
<th>작성자</th>
<td colspan="3">
<div>
<c:choose>
<%--회원--%>
<c:when test="${bbscttInfo.regusrDvCd eq '01'}">
<button type="button"
class="crmBtn"
data-info="info01"
onclick="fn_select_crm_mini_info(this,
'<c:out value='${bbscttInfo.regusr}'/>'
,'<c:out value='${bbscttInfo.mbrDvCd}'/>'
,'#modalDiv');">
<span class="gray-12">
<c:out value="${bbscttInfo.regusrNm}"/>
</span><br>
(<c:choose>
<c:when test="${bbscttInfo.joinMthCd eq 'kakao'}"><%--kakao--%>
<i class="icon icon_word-badge_kakao"></i>
</c:when>
<c:when test="${bbscttInfo.joinMthCd eq 'naver'}"><%--naver--%>
<i class="icon icon_word-badge_naver"></i>
</c:when>
<c:when test="${bbscttInfo.joinMthCd eq 'pos'}"><%--pos--%>
<i class="icon icon_word-badge_pos"></i>
<span class="fw-500 blue-7">
<c:out value="${bbscttInfo.regusrId}"/>
</span>
</c:when>
<c:otherwise>
<span class="fw-500 blue-7"><c:out
value="${bbscttInfo.regusrId}"/></span>
</c:otherwise>
</c:choose>/
<span class="fw-500 green-8">
<c:out value="${bbscttInfo.mbrGradNm}"/>
</span>)
</button>
</c:when>
<%--관리자--%>
<c:when test="${bbscttInfo.regusrDvCd eq '02'}">
<c:out value="${ bbscttInfo.mngrNm}"/>(<c:out
value="${bbscttInfo.maskingRegusrId}"/>)
</c:when>
<%--네이버페이--%>
<c:when test="${bbscttInfo.regusrDvCd eq '03'}">
naverpay
</c:when>
<%--입점사--%>
<c:when test="${bbscttInfo.regusrDvCd eq '04'}">
입점사
</c:when>
<%--비회원--%>
<c:when test="${bbscttInfo.regusrDvCd eq '99'}">
<c:out value="${bbscttInfo.maskingRegusrNm}"/>[비회원]
</c:when>
</c:choose>
</div>
</td>
</tr>
<tr class = "visibleAt">
<c:choose>
<c:when test = "${bbsInfo.bbsTyCd ne '04' && bbsInfo.bbsTyCd ne '10'}">
<th>노출 기간 제한<br><span class="fs-13">(노출 여부)</span></th>
</c:when>
<c:otherwise>
<th>노출 여부</th>
</c:otherwise>
</c:choose>
<td>
<div class="td-inner vertical pdDiv">
<div class="input-container">
<div class="b-checkbox-container mr-15">
<label class="b-checkbox checkbox">
<input type="checkbox" name="expsrAt" id="expsrAt" value="Y"
onclick="fn_readOnly_set(this);"
<c:if test = "${bbscttInfo.expsrAt eq 'Y'}">checked</c:if>>
<span class="check"></span>
<span class="control-label">노출여부</span>
</label>
</div>
<c:if test="${bbsInfo.bbsTyCd ne '04'&& bbsInfo.bbsTyCd ne '10'}">
<div class="custom-radio-container pdRadio">
<div class="custom-radio">
<input type="radio" id="ntcePdSetupAtYC" name="ntcePdSetupAt" value="Y"
onclick="fn_readOnly_ntcePd(this);"
<c:choose>
<c:when test="${bbscttInfo.expsrAt eq 'Y' && bbscttInfo.ntcePdSetupAt eq 'Y'}">
checked="checked"
</c:when>
<c:when test="${bbscttInfo.expsrAt eq 'N'}">
disabled="disabled"
</c:when>
</c:choose>>
<label for="ntcePdSetupAtYC">기본</label>
</div>
<div class="custom-radio">
<input type="radio" class="pdRadioN" id="ntcePdSetupAtNC"
name="ntcePdSetupAt" value="N"
onclick="fn_readOnly_ntcePd(this);"
<c:choose>
<c:when test="${bbscttInfo.expsrAt eq 'Y' && bbscttInfo.ntcePdSetupAt eq 'N'}">
checked="checked"
</c:when>
<c:when test="${bbscttInfo.expsrAt eq 'N'}">
disabled="disabled"
</c:when>
</c:choose>>
<label for="ntcePdSetupAtNC">상시</label>
</div>
</div>
</c:if>
</div>
<c:if test = "${bbsInfo.bbsTyCd ne '04' && bbsInfo.bbsTyCd ne '10'}">
<div class="input-container pdDate">
<input type="text" name="ntceBgnDe" class="datepicker ntceDate chkDate" title="시작 날짜 선택" autocomplete="off"
<c:choose>
<c:when test = "${bbscttInfo.expsrAt eq 'Y' && bbscttInfo.ntcePdSetupAt eq 'Y'}">
value="<c:out value ='${bbscttInfo.ntceBgnDe}'/>"
</c:when>
<c:when test = "${bbscttInfo.expsrAt eq 'N'|| bbscttInfo.expsrAt eq 'Y'&& bbscttInfo.ntcePdSetupAt eq 'N'}">
disabled= "disabled"
</c:when>
</c:choose> id = "updtDate">
<span class="tilde">~</span>
<input type="text" name="ntceEndDe" class="datepicker ntceDate chkDate" title="종료 날짜 선택" autocomplete="off"
<c:choose>
<c:when test = "${bbscttInfo.expsrAt eq 'Y' && bbscttInfo.ntcePdSetupAt eq 'Y'}">
value="${bbscttInfo.ntceEndDe}"
</c:when>
<c:when test = "${bbscttInfo.expsrAt eq 'N'||bbscttInfo.expsrAt eq 'Y'&& bbscttInfo.ntcePdSetupAt eq 'N'}">
disabled = "disabled"
</c:when>
</c:choose>>
</div>
</c:if>
</div>
</td>
<c:if test = "${bbsInfo.notice eq 'Y'}">
<th>공지 기간 제한<br><span class="fs-13">(공지글 여부)</span></th>
<td>
<div class="td-inner vertical pdDiv">
<div class="input-container">
<div class="b-checkbox-container mr-15">
<label class="b-checkbox checkbox">
<input type="checkbox" name="ntcAt" value="Y" onclick="fn_readOnly_set(this);"
<c:if test = "${bbscttInfo.ntcAt eq 'Y'}">checked = "checked"</c:if>>
<span class="check"></span>
<span class="control-label">공지글 등록</span>
</label>
</div>
<div class="custom-radio-container pdRadio">
<div class="custom-radio">
<input type="radio" id="ntcPdSetupAtYC" name="ntcPdSetupAt" value="Y" onclick="fn_readOnly_ntcPd(this)"
<c:choose>
<c:when test = "${bbscttInfo.ntcAt eq 'Y' && bbscttInfo.ntcPdSetupAt eq 'Y'}">
checked = "checked"
</c:when>
<c:when test = "${bbscttInfo.ntcAt eq 'N'}">
disabled = "disabled"
</c:when>
</c:choose>>
<label for="ntcPdSetupAtYC">기본</label>
</div>
<div class="custom-radio">
<input type="radio" class="pdRadioN" id="ntcPdSetupAtNC" name="ntcPdSetupAt" value="N" onclick="fn_readOnly_ntcPd(this)"
<c:choose>
<c:when test = "${bbscttInfo.ntcAt eq 'Y' && bbscttInfo.ntcPdSetupAt eq 'N'}">
checked = "checked"
</c:when>
<c:when test = "${bbscttInfo.ntcAt eq 'N'}">
disabled = "disabled"
</c:when>
</c:choose>>
<label for="ntcPdSetupAtNC">상시</label>
</div>
</div>
</div>
<div class="input-container pdDate">
<input type="text" name="ntcBgnDe" id = "ntcBgnDe" class="datepicker ntcDate chkDate" title="시작 날짜 선택" autocomplete="off"
<c:choose>
<c:when test = "${bbscttInfo.ntcAt eq 'Y' && bbscttInfo.ntcPdSetupAt eq 'Y'}">
value="${bbscttInfo.ntcBgnDe}"
</c:when>
<c:when test = "${bbscttInfo.ntcAt eq 'N'||bbscttInfo.ntcAt eq 'Y'&& bbscttInfo.ntcPdSetupAt eq 'N'}">
disabled = "disabled"
</c:when>
</c:choose>>
<span class="tilde">~</span>
<input type="text" name="ntcEndDe" id = "ntcEndDe" class="datepicker ntcDate chkDate" title="종료 날짜 선택" autocomplete="off"
<c:choose>
<c:when test = "${bbscttInfo.ntcAt eq 'Y' && bbscttInfo.ntcPdSetupAt eq 'Y'}">
value="${bbscttInfo.ntcEndDe}"
</c:when>
<c:when test = "${bbscttInfo.ntcAt eq 'N'||bbscttInfo.ntcAt eq 'Y' && bbscttInfo.ntcPdSetupAt eq 'N'}">
disabled = "disabled"
</c:when>
</c:choose>>
</div>
</div>
</td>
</c:if>
</tr>
<tr class ="visibleAt">
<c:if test = "${bbsInfo.secretBbsctt eq 'Y'}">
<th>비밀글 여부</th>
<td>
<div class="td-inner">
<div class="b-checkbox-container mr-10">
<label class="b-checkbox checkbox">
<input type="checkbox" name="secretBbscttAt" value="Y" onclick="fn_readOnly_secret(this);"
<c:if test = "${bbscttInfo.secretBbscttAt eq 'Y'}">
checked= "checked"
</c:if>>
<span class="check"></span>
<span class="control-label">비밀글입니다</span>
</label>
</div>
<%--해당 관리자가 쓴 게시글에만 비밀번호 재설정 가능1--%>
<c:choose>
<c:when test = "${bbscttInfo.regusrDvCd eq '02' && bbscttInfo.regusr eq user.userInnb}">
<input class="input-text md password" type="password" name="password" title="비밀번호" value = "<c:out value = "${bbscttInfo.password}"/>"
placeholder="비밀번호를 입력해주세요." maxlength="20" <c:if test = "${bbscttInfo.secretBbscttAt ne 'Y'}">disabled</c:if>>
<input type = "hidden" value = "N" name = "passwordChngAt" id = "passwordChngAt"/>
</c:when>
<c:otherwise>
<input type = "hidden" name = "password" value="<c:out value = "${bbscttInfo.password}"/>"
</c:otherwise>
</c:choose>
</div>
</td>
</c:if>
<c:if test = "${bbsInfo.reprsntImg eq 'Y'}">
<th>대표 이미지</th>
<td>
<div class="td-inner align-items-start">
<div class="input-file" id="fileBtn" <c:if test = "${not empty bbscttInfo.reprsntImgOrginlFilNm }">style="display:none"</c:if>>
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.extensions.images')" var="acceptFileExtensions"/>
<input type="file" id="fileUpload" name="files" title="대표이미지" multiple="multiple" accept="<c:out value="${ acceptFileExtensions }"/>">
<label for="fileUpload">첨부 파일</label>
</div>
<c:choose>
<c:when test="${empty bbscttInfo.reprsntImgOrginlFilNm }">
<div class="manage-btn-container" id="fileCnBtn">
<input type="hidden" id="represntFilAt" name="represntFilAt" value="N">
<input type="hidden" id="represntFilChangeAt" name="represntFilChangeAt" value="N">
<ul class="file-list" id="fileList">
</ul>
</div>
</c:when>
<c:otherwise>
<div class="manage-btn-container" id ="fileCnBtn">
<input type="hidden" id="represntFilAt" name="represntFilAt" value = "Y">
<input type="hidden" id="represntFilChangeAt" name="represntFilChangeAt" value="N">
<ul class="file-list" id="fileList">
<li id="<c:out value="${bbscttInfo.bbscttInnb}"/>">
<a href="#" id="<c:out value="${bbscttInfo.reprsntImgOrginlFilNm}"/>" onclick="downloadFile(this,'<c:out value='${bbscttVO.sopmalCd}'/>','BDIG',1);">
<i class="icon icon_file-list mr-2"></i>
<span class="file-list__item-title">
<c:out value="${bbscttInfo.reprsntImgOrginlFilNm}"/>
</span>
</a>
<button type="button" class="file-list__delete" onclick="deleteFile(this,'<c:out value='${bbscttVO.sopmalCd}'/>','BDIG',1,fn_execute_delete_represntImg);">
<span class="visually-hidden">파일 삭제</span>
</button>
</li>
</ul>
</div>
</c:otherwise>
</c:choose>
</div>
</td>
</c:if>
</tr>
<tr class ="visibleAt">
<c:if test = "${bbsInfo.itm eq 'Y'}">
<c:if test = "${not empty itmList}">
<th>분류<span class="red-7">*</span></th>
<td>
<div class="td-inner">
<div class="select-box">
<select class="md" id="qesitmNmC" name = "itmInnbArr[]">
<option value="">분류 선택</option>
<c:forEach var="itm" items="${itmList}" varStatus ="status">
<option value="<c:out value="${itm.itmInnb}"/>" qesitm-innb="${itm.qesitmInnb}" answ-Cn="${itm.itmCn}" qesitm-nm="${itm.qesitmNm}"
<%--분류 답변 값 유지--%>
<c:forEach var="itmAnswList" items="${qesitmAnswList}">
<c:if test="${itmAnswList.aditItmDvCd eq '03'}">
<c:if test = "${itm.itmInnb eq itmAnswList.itmInnb }">selected</c:if>
</c:if>
</c:forEach>>
<c:out value ="${itm.itmCn}"/>
</option>
</c:forEach>
</select>
</div>
<%--문항답변필수여부 --%>
<input type="hidden" name="qesitmEssntlAtArr[]" value="Y">
<%--문항명 --%>
<input type="hidden" name="qesitmNmArr[]" id = "qesitmNm" value ="분류"/>
<%--문항고유번호 --%>
<input type="hidden" name="qesitmInnbArr[]" id = "qesitmInnb"
<c:forEach var="itmAnswList" items="${qesitmAnswList}">
<c:if test="${itmAnswList.aditItmDvCd eq '03'}">
value = <c:out value = "${itmAnswList.qesitmInnb}"/>
</c:if>
</c:forEach>/>
<%--답변내용 --%>
<input type="hidden" name="answCnArr[]" id = "answCn"
<c:forEach var="itmAnswList" items="${qesitmAnswList}">
<c:if test="${itmAnswList.aditItmDvCd eq '03'}">
value = <c:out value = "${itmAnswList.answCn}"/>
</c:if>
</c:forEach>/>
<%--답변여부 --%>
<input type="hidden" name="qesitmAtArr[]"
<c:forEach var="itmAnswList" items="${qesitmAnswList}">
<c:if test="${itmAnswList.aditItmDvCd eq '03'}">
<c:choose>
<c:when test = "${empty itmAnswList}">value = "N"</c:when>
<c:otherwise>value = "Y"</c:otherwise>
</c:choose>
</c:if>
</c:forEach>>
</div>
</td>
</c:if>
</c:if>
<c:if test = "${bbsInfo.mainExpsr eq 'Y'}">
<th>메인노출</th>
<td>
<div class="td-inner">
<div class="custom-radio-container">
<label class="b-checkbox checkbox">
<input type="checkbox" name="mainExpsrAt" value="Y" <c:if test="${bbscttInfo.mainExpsrAt eq 'Y'}">checked</c:if>>
<span class="check"></span>
<span class="control-label">노출</span>
</label>
</div>
</div>
</td>
</c:if>
</tr>
<tr class ="visibleAt">
<c:if test = "${bbsInfo.cmSetupUseAt eq 'Y'}">
<th>댓글 사용 여부</th>
<td>
<div class="td-inner">
<div class="custom-radio-container">
<div class="custom-radio">
<input type="radio" id="cmUseAtYC" name="cmUseAt" value="Y"<c:if test = "${bbscttInfo.cmUseAt eq 'Y'}">checked</c:if>>
<label for="cmUseAtYC">사용</label>
</div>
<div class="custom-radio">
<input type="radio" id="cmUseAtNC" name="cmUseAt" value="N"<c:if test = "${bbscttInfo.cmUseAt eq 'N'}">checked</c:if>>
<label for="cmUseAtNC">사용 안 함</label>
</div>
</div>
</div>
</td>
</c:if>
<th>순서 설정</th>
<td>
<div class="td-inner">
<div class="input-container">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox">
<input type="checkbox" name="sortOrdrAt" value="Y" onclick="fn_readOnly_sortOrdr(this);" <c:if test = "${not empty bbscttInfo.sortOrdr}">checked</c:if>>
<span class="check"></span>
<span class="control-label"></span>
</label>
</div>
<input class="input-text number right xsm" type="text" name="sortOrdr" maxlength="2" value = "<c:out value = '${bbscttInfo.sortOrdr}'/>"
<c:choose>
<c:when test = "${not empty bbscttInfo.sortOrdr}">checked</c:when>
<c:otherwise>disabled="disabled"</c:otherwise>
</c:choose>>
</div>
</div>
</td>
</tr>
<tr class ="visibleAt">
<c:if test = "${bbsInfo.onoffline eq 'Y'}">
<th>온/오프라인</th>
<td>
<div class="td-inner">
<div class="input-container">
<label class="b-checkbox checkbox">
<input type="checkbox" name="onlineAt" value="Y" <c:if test = "${bbscttInfo.onlineAt eq 'Y'}">checked</c:if>>
<span class="check"></span>
<span class="control-label">온라인</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="oflneAt" value="Y" <c:if test = "${bbscttInfo.oflneAt eq 'Y'}">checked</c:if>>
<span class="check"></span>
<span class="control-label">오프라인</span>
</label>
</div>
</div>
</td>
</c:if>
</tr>
<tr class ="visibleAt">
<c:if test = "${bbsInfo.goodsChoice eq 'Y'}">
<th>상품 정보
<c:choose>
<c:when test = "${not empty goods}">
<button type="button" class="btn xsm primary ml-5"
onclick="fn_open_search_modal('#modalDiv','#product-search','/mngr/goods/goodsmngr/selectGoodsSrchPopupForm',{'goodsKndCd':'01'}); return false;">
검색
</button>
</c:when>
<c:otherwise>
<button type="button" class="btn xsm primary ml-5"
onclick="fn_open_modal('#modalDiv','#product-search','/mngr/goods/goodsmngr/selectGoodsSrchPopupForm',{'goodsKndCd':'01'}); return false;">
검색
</button>
</c:otherwise>
</c:choose>
</th>
<td colspan="3">
<div class="td-inner">
<div class="product-search-box__product parentGoodsContainer">
<c:if test = "${not empty goods}">
<c:forEach var = "goods" items = "${goods}">
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
<div class="product-group__item">
<input type="hidden" id="relatedGoodsId" name="relatedGoodsId" value="<c:out value="${goods.goodsInnb}"/>">
<input type="hidden" name="relatedGoodsNm" value="<c:out value="${goods.goodsNm}"/>">
<input type="hidden" name="relatedGoodsImg" value="<c:out value="${cdnurl}${goods.img}"/>">
<input type="hidden" name="relatedGoodsPrice" value="<fmt:parseNumber value="${goods.slepric}"/>">
<input type="hidden" name="goodsSttusNm" value="<c:out value="${goods.goodsSttusNm}"/>">
<input type="hidden" name="expsrNm" value="<c:out value="${goods.expsrNm}"/>">
<button type="button" onclick = "fn_move_goods_dtl_common(<c:out value="${goods.goodsInnb}"/>,'sopmal')">
<img src="${cdnurl}${goods.img}"onerror="this.src='<c:url value="/mngr/images/image_placeholder.png"/>'"width="64" alt="상품이미지">
</button>
<div class="product-group__description">
<p><c:out value="${goods.goodsNm}"/></p>
<p class="product-group__description-price"><fmt:formatNumber value="${goods.slepric}" pattern="#,###"/>원</p>
</div>
<%--게시글 연관 상품--%>
<input type="hidden" name="goodsInnbArr[]" value="${goods.goodsInnb}"/>
</div>
</c:forEach>
</c:if>
</div>
</div>
</td>
</c:if>
</tr>
<c:if test="${not empty qesitmList}">
<tr>
<th>추가 입력 항목</th>
<td colspan="3">
<div class="td-inner table-wrapper mb-40" id="boardFormItmC">
<table class="table">
<colgroup>
<col style="width: 20%;">
<col style="width: 80%;">
</colgroup>
<tbody>
<c:forEach items="${ qesitmList }" var="qesitmList" varStatus="status">
<tr>
<td>
<c:out value="${ qesitmList.qesitmNm }"/><c:if
test="${ qesitmList.qesitmEssntlAt eq 'Y'}"><span class="red-7">*</span></c:if>
</td>
<td>
<c:if test="${ qesitmList.itmTyCd eq '01'}">
<div class="custom-radio-container">
<div class="custom-radio">
<input type="hidden" name="qesitmEssntlAtArr[]"
value="${ qesitmList.qesitmEssntlAt}">
<input type="hidden" name="qesitmNmArr[]"
value="${ qesitmList.qesitmNm}">
<input type="hidden" name="qesitmAtArr[]"
class="answRadioAt" value="N">
<input type="hidden" name="qesitmInnbArr[]"
class="answRadio"
value="${ qesitmList.qesitmInnb }" disabled>
<input type="hidden" name="answCnArr[]"
class="answRadio" disabled>
<input type="hidden" name="itmInnbArr[]"
class="answRadio" disabled>
<c:forEach items="${itmCnList}" var="itmCnList1"
varStatus="status">
<c:if test="${itmCnList1.qesitmInnb eq qesitmList.qesitmInnb}">
<input type="radio" id="answCn${ status.index }"
class="answRadioC"
qesitm-innb='${itmCnList1.qesitmInnb}'
name="itmInnbArr${ qesitmList.qesitmInnb}[]"
value="${ itmCnList1.itmInnb}"
itm-cn="${ itmCnList1.itmCn }"
<c:forEach var="qesitmAnswList1"
items="${qesitmAnswList}">
<c:if test="${qesitmAnswList1.itmTyCd eq '01'}">
<c:if test="${qesitmAnswList1.itmInnb eq itmCnList1.itmInnb}">checked</c:if>
</c:if>
</c:forEach>>
<label for="answCn${ status.index }">${ itmCnList1.itmCn }</label>
</c:if>
</c:forEach>
</div>
</div>
</c:if>
<c:if test="${ qesitmList.itmTyCd eq '02'}">
<div class="select-box">
<input type="hidden" name="qesitmEssntlAtArr[]"
value="${qesitmList.qesitmEssntlAt}">
<input type="hidden" name="qesitmNmArr[]"
value="${qesitmList.qesitmNm}">
<input type="hidden" name="qesitmAtArr[]" class="answSelectAt"
value="N">
<input type="hidden" name="qesitmInnbArr[]"
class="answSelect"
value="${qesitmList.qesitmInnb}" disabled>
<input type="hidden" name="answCnArr[]" class="answSelect"
disabled>
<select class="md answSelectC" name="itmInnbArr[]">
<option value="">전체</option>
<c:forEach items="${itmCnList}" var="itmCnList2">
<c:if test="${itmCnList2.qesitmInnb eq qesitmList.qesitmInnb}">
<c:set var="selected" value=""/>
<c:forEach var="qesitmAnswList2"
items="${qesitmAnswList}">
<c:if test="${qesitmAnswList2.itmInnb eq itmCnList2.itmInnb}">
<c:set var="selected" value="selected"/>
</c:if>
</c:forEach>
<option value="${itmCnList2.itmInnb}"
itm-cn="${itmCnList2.itmCn}"
qesitm-innb="${itmCnList2.qesitmInnb}" ${selected}>
${itmCnList2.itmCn}
</option>
</c:if>
</c:forEach>
</select>
</div>
</c:if>
<c:if test="${ qesitmList.itmTyCd eq '03' }">
<input type="hidden" name="qesitmEssntlAtArr[]"
value="${ qesitmList.qesitmEssntlAt }">
<input type="hidden" name="qesitmNmArr[]"
value="${ qesitmList.qesitmNm }">
<input type="hidden" name="qesitmAtArr[]"
class="answChkAt" value="N">
<c:forEach items="${itmCnList}" var="itmCnList3">
<c:if test="${itmCnList3.qesitmInnb eq qesitmList.qesitmInnb}">
<div class="input-container">
<label class="b-checkbox checkbox">
<input type="hidden" class="answChk"
name="qesitmInnbArr[]"
value="${ qesitmList.qesitmInnb }"
disabled>
<input type="hidden" class="answChk"
name="answCnArr[]"
value="${ itmCnList3.itmCn }" disabled>
<input type="checkbox" class="answChkC"
name="itmInnbArr[]"
value="${ itmCnList3.itmInnb }"
itm-cn="${ itmCnList3.itmCn }"
qesitm-innb="${itmCnList3.qesitmInnb}"
<c:forEach var="qesitmAnswList3"
items="${qesitmAnswList}">
<c:if test="${qesitmAnswList3.itmInnb eq itmCnList3.itmInnb}">checked</c:if>
</c:forEach>>
<span class="check"></span>
<span class="control-label">${ itmCnList3.itmCn }</span>
</label>
</div>
</c:if>
</c:forEach>
</c:if>
<c:if test="${ qesitmList.itmTyCd eq '04' }">
<c:forEach items="${itmCnList}" var="itmCnList4">
<c:if test="${itmCnList4.qesitmInnb eq qesitmList.qesitmInnb}">
<div class="input-container">
<input type="hidden" name="qesitmEssntlAtArr[]"
value="${ qesitmList.qesitmEssntlAt }">
<input type="hidden" name="qesitmNmArr[]"
value="${ qesitmList.qesitmNm }">
<input type="hidden" name="qesitmAtArr[]"
class="answTxtAt"
value="N">
<input type="hidden" class="answTxt"
name="qesitmInnbArr[]"
value="${ qesitmList.qesitmInnb }" disabled>
<input type="text" class="input-text mm answTxtC"
name="answCnArr[]"
title="추가문항답변"
placeholder="${ itmCnList4.itmCn }"
maxlength="666"
itm-cn="${ itmCnList4.itmCn }"
qesitm-innb="${itmCnList4.qesitmInnb}"
itm-innb="${itmCnList4.itmInnb}"
<c:forEach var="qesitmAnswList4"
items="${qesitmAnswList}">
<c:if test="${qesitmAnswList4.itmInnb eq itmCnList4.itmInnb}">
value="<c:out value = '${qesitmAnswList4.answCn}'/>"
</c:if>
</c:forEach>>
<input type="hidden" class="answTxt"
name="itmInnbArr[]"
value="${ itmCnList4.itmInnb }" disabled>
</div>
<br>
</c:if>
</c:forEach>
</c:if>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</td>
</tr>
</c:if>
<c:if test="${bbsInfo.bbsTyCd ne '10'}">
<tr>
<th><c:out value ="${bbsInfo.questionSj}"/><span class="red-7">*</span></th>
<td colspan="3">
<div class="td-inner">
<input class="input-text full" type="text" title="해당 인풋에 대한 설명" placeholder="제목을 입력해주세요." name="sj" maxlength="50" value = "${bbscttInfo.sj}">
</div>
</td>
</tr>
</c:if>
<tr>
<th><c:out value ="${bbsInfo.awswCn}"/><span class="red-7">*</span></th>
<td colspan="3">
<div class="td-inner">
<textarea class="textarea" title="에디터 입력" rows="10" id="cnBbsUpdt" ><c:out value="${bbscttInfo.cn}"/></textarea>
</div>
</td>
</tr>
<tr>
<th>스크립트 내용</th>
<td colspan="3">
<div class="td-inner">
<textarea class="textarea" title="에디터 입력" name="cnScript" rows="10"><c:out value="${bbscttInfo.cnScript}"/></textarea>
</div>
</td>
</tr>
<%--게시판설정(파일첨부사용여부)--%>
<c:if test="${bbsInfo.filAtch eq 'Y'}">
<tr>
<th>파일 첨부</th>
<td colspan="03">
<c:choose>
<c:when test="${bbscttInfo.regusrDvCd ne '02'}">
<div class="dropzone-wrapper">
<div class="dropzone" id="my-dropzone-bbsctt">
</div>
<p class="fyi gray-7 mt-15">사용자 게시글 사진 수정은 파일 첨부를 권장합니다.</p>
</div>
<input type = "hidden" name = "dropzoneAt" value="Y"/> <%--드롭존 존재 여부--%>
<input type = "hidden" name = "filDvCd" value="01"/> <%--파일 구분--%>
</c:when>
<c:otherwise>
<div class="uploadList">
<div class="uploadList__top">
<div>
<button type="button" class="uploadList__removeAll" id="removeAllBtn"
<c:if test="${empty fileInfo}">style="display: none"</c:if>>
전체 삭제
</button>
<button type="button" class="uploadList__uploadFiles" id="multiFilBtn">
파일 첨부
</button>
</div>
<span class="uploadList__allSize" id="allSize">0.00 KB</span>
</div>
<div style="display: none">
<input type="file" id="fileUploadM" name="files" title="파일첨부"
multiple="multiple"
accept="<c:out value='${bbsInfo.filPermFilExtsn}'/>"/>
<label for="fileUploadM"></label>
</div>
<div class="uploadList__body" id="fileUploadMDiv" <c:if test="${empty fileInfo}">style="display: none"</c:if>>
<ul class="uploadList__list" id="fileUploadMUl"><%--ul영역 (li)--%>
<c:if test="${not empty fileInfo}">
<c:forEach var="file" items="${fileInfo}">
<li class="uploadList__item" id="<c:out value="${file.bbscttAtchmnfilInnb}"/>">
<button type = "button" class="uploadList__itemText" onclick="deleteFile(this,'<c:out value="${bbscttVO.sopmalCd}"/>','BDFL',1,fn_execute_delete_file);">
<span class="uploadList__itemName">
<c:out value="${file.orginlFilNm}"/></span>
<span class="uploadList__itemSize">
(<c:out value="${file.filMg}"/>KB)</span>
</button>
<input type="hidden" class="filsSize"
value="<c:out value="${file.filMg}"/>"/>
<button type = "button" class="uploadList__removeBtn"
onclick="deleteFile(this,'<c:out value="${bbscttVO.sopmalCd}"/>','BDFL',1,fn_execute_delete_file);">
<span class="visually-hidden">삭제</span></button>
</li>
</c:forEach>
</c:if>
</ul>
</div>
<input type = "hidden" name = "filDvCd" value="02"/> <%--파일 구분--%>
<input type = "hidden" name = "dropzoneAt" value="N"/> <%--드롭존 존재 여부--%>
<input type = "hidden" name = "filPermFilExtsn" value="<c:out value="${bbsInfo.filPermFilExtsn}"/>"/> <%--드롭존 존재 여부--%>
</div>
</c:otherwise>
</c:choose>
</td>
</tr>
</c:if>
</tbody>
</table>
</div>
</form>
</div>
<div class="modal-footer">
<a href="#" id="btn_close_modal_bbsU" rel="modal:close" class="btn outline"><spring:message code="button.cancel"/></a>
<button class="btn primary" onclick="fn_update_bbsctt('<c:out value="${ bbsInfo.bbsId }"/>','<c:out value="${ bbscttInfo.bbscttInnb }"/>','<c:out value="${dtlPop}"/>');"><spring:message code="button.update"/></button>
</div>
<a href="#close-modal" rel="modal:close" class="close-modal ">Close</a>
</div>
<script>
// Dropzone 파일업로드
if ($("#my-dropzone-bbsctt").length > 0) {
Dropzone.autoDiscover = false;
var myDropzone = new Dropzone("#my-dropzone-bbsctt", {
url: "/file-upload",
maxFilesize: 20,
autoProcessQueue: false,
addRemoveLinks: true,
dictDefaultMessage: "클릭하거나 파일을 여기로 드래그하세요",
dictRemoveFile: "삭제",
dictCancelUpload: "취소",
dictCancelUploadConfirmation: "업로드를 취소하시겠습니까?",
dictInvalidFileType: "이 파일은 업로드할 수 없습니다.",
dictFileTooBig: "파일이 너무 큽니다. ({{filesize}}MB). 최대 파일 크기: {{maxFilesize}}MB.",
dictMaxFilesExceeded: "파일을 더 이상 추가할 수 없습니다.",
dictResponseError: "서버에서 응답을 받지 못했습니다.",
acceptedFiles: "${acceptFileExtensions}",
init: function () {
let dropzoneInstance = this;
let imageData = '';
// 클릭 시 삭제 버튼 바인딩
dropzoneInstance.on("thumbnail", function (file) {
bindRemoveButton(file);
});
if (${fileInfoGson}) {
imageData = ${fileInfoGson};
// Dropzone에 이미지 추가
$.each(imageData, function (index, image) {
let mockFile = { name: image.orginlFilNm, size: image.filMg };
// Dropzone에 파일 추가
dropzoneInstance.emit("addedfile", mockFile);
// 이미지 경로 설정
const imagePath = `${cdnurl}${image.filCours}${image.sysFilNm}`;
dropzoneInstance.emit("thumbnail", mockFile, imagePath);
// 이미지 로딩 오류 처리
$(mockFile.previewElement).find("img").on("error", function () {
this.src = '/mngr/images/image_placeholder.png'; // 대체 이미지
});
// 사용자 정의 ID 추가
mockFile.customId = image.bbscttAtchmnfilInnb;
// Dropzone의 files 배열에 파일 추가
dropzoneInstance.files.push(mockFile);
// 삭제 버튼 클릭 시 처리
bindRemoveButton(mockFile);
});
}
// 파일 추가 시 처리
dropzoneInstance.on("addedfile", function (file) {
let fileLength = myDropzone.files.length;
let restoreAt = file.customData ? true : false;
if (restoreAt) {
file.customId = file.customData.customId;
} else {
file.customId = "temp" + fileLength;
}
});
// 파일 개수 초과 시 처리
dropzoneInstance.on("maxfilesexceeded", function (file) {
alert(this.options.dictMaxFilesExceeded);
this.removeFile(file);
});
}
});
// 삭제 버튼 바인딩 함수
function bindRemoveButton(file) {
if (file.previewElement) {
$(file.previewElement).find(".dz-remove").off("click").on("click", function () {
let fileId = ""+file.customId+"";
var result = dropzoneDeleteFiles(fileId, '<c:out value="${bbscttVO.sopmalCd}"/>', "BDFL", 1);
if (result === "N") {
// 파일 복원 처리
file.customData = {restored: true, customId: file.customId,name: file.name, size: file.size};
myDropzone.emit("addedfile", file);
// 이미지 src 추출
var imgElement = file.previewElement.querySelector("img");
if (imgElement) {
var imgSrc = imgElement.src;
if(imgSrc == ''){
imgSrc = '/mngr/images/image_placeholder.png';
}
// 썸네일 업데이트
myDropzone.emit("thumbnail", file, imgSrc);
}
// 삭제 버튼 다시 표시
file.previewElement.querySelector(".dz-remove").style.display = "block";
}
});
}
}
}
// name 및 id 속성을 설정하는 부분
var inputElement = $('input[type="file"].dz-hidden-input');
inputElement.attr('name', 'files');
inputElement.attr('id', 'fileUploadDrop');
</script>

View File

@@ -0,0 +1,251 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : GoodsQnaBbscttListR.jsp
Description : 일반 게시글 목록 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2023-12-08 김혜지 최초 생성
--%>
<section class="content-section">
<div class="form-control-container">
<div class="left">
<div class="search-number">
<span class="search-number__text">총 <strong><fmt:formatNumber value="${resultMap.paginationInfo.totalRecordCount}" pattern="#,###"/></strong>건</span>
</div>
</div>
<div class="center">
</div>
<div class="right">
<div class="select-box">
<select id="pageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_bbsctt_list('1');">
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paginationInfo.recordCountPerPage eq pageUnit }">selected="selected"</c:if>><c:out value="${ pageUnit }"/>개씩</option>
</c:forEach>
</select>
</div>
</div>
</div>
<form id="listForm">
<hr class="horizontal-line">
<div class="form-control-container">
<div class="left">
<button type="button" class="btn outline sm" onclick="fn_delete_bbsctt('', 'many');">선택 <spring:message code="button.delete"/></button>
</div>
<div class="center">
</div>
<div class="right">
</div>
</div>
<hr class="spacing">
<div class="table-wrapper">
<table class="table vertical">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 3%;">
<col style="width: 3%;">
<col style="width: 7%;">
<col style="width: 7%;">
<col style="width: 5%;">
<col style="width: 18%;">
<col style="width: auto">
<col style="width: 5%">
<col style="width: 6%">
<col style="width: 4%">
<col style="width: 10%">
<col style="width: 5%">
</colgroup>
<thead>
<tr>
<th>
<label class="b-checkbox checkbox is-medium check-all" >
<input type="checkbox" value="" id="listChkA">
<span class="check"></span>
</label>
</th>
<th>번호</th>
<th>작성자</th>
<th>IP</th>
<th>분류</th>
<th>상품</th>
<th>제목</th>
<th>답변상태</th>
<th>등록일</th>
<th>조회수</th>
<th>관리</th>
<th>삭제</th>
</tr>
</thead>
<tbody id ="contentSection">
<c:choose>
<c:when test="${ not empty resultMap.resultList.resultList }">
<c:forEach items="${ resultMap.resultList.resultList }" var="resultList" varStatus="status">
<tr <c:if test = "${empty resultList.answBbscttInnb}">class="sendOut-info__reseller"</c:if>>
<td>
<c:if test="${ resultList.useAt eq 'Y' }">
<label class="b-checkbox checkbox is-medium chkLabel">
<input type="checkbox" value="${ resultList.bbscttInnb }"
name="selectedBbscttRow" class='bbscttChk'>
<span class="check"></span>
</label>
</c:if>
<input type = "hidden" value = "<c:out value="${ resultList.goodsInnb}"/>">
</td>
<td>
<c:out value="${resultMap.paginationInfo.totalRecordCount - resultList.rnum+1 }" />
</td>
<td>
<c:choose>
<%--회원--%>
<c:when test="${resultList.regusrDvCd eq '01'}">
<button type="button"
class="crmBtn"
data-info="info01"
onclick="fn_select_crm_mini_info(this,
'<c:out value='${resultList.regusr}'/>'
,'<c:out value='${resultList.mbrDvCd}'/>'
,'#modalDiv');">
<span class="gray-12">
<c:out value="${resultList.regusrNm}"/>
</span><br>
(<c:choose>
<c:when test="${resultList.joinMthCd eq 'kakao'}"><%--kakao--%>
<i class="icon icon_word-badge_kakao"></i>
</c:when>
<c:when test="${resultList.joinMthCd eq 'naver'}"><%--naver--%>
<i class="icon icon_word-badge_naver"></i>
</c:when>
<c:when test="${resultList.joinMthCd eq 'pos'}"><%--pos--%>
<i class="icon icon_word-badge_pos"></i>
<span class="fw-500 blue-7">
<c:out value="${resultList.regusrId}"/>
</span>
</c:when>
<c:otherwise>
<span class="fw-500 blue-7"><c:out value="${resultList.regusrId}"/></span>
</c:otherwise>
</c:choose>/
<span class="fw-500 green-8"><c:out value="${resultList.mbrGradNm}"/></span>)
</button>
</c:when>
<%--관리자--%>
<c:when test="${resultList.regusrDvCd eq '02'}">
<c:out value="${ resultList.mngrNm}"/>(<c:out value="${ resultList.maskingRegusrId}"/>)
</c:when>
<%--네이버페이--%>
<c:when test="${resultList.regusrDvCd eq '03'}">
naverpay
</c:when>
<%--비회원--%>
<c:when test="${resultList.regusrDvCd eq '99'}">
<c:out value="${resultList.maskingRegusrNm}"/>[비회원]
</c:when>
</c:choose>
</td>
<td><c:out value="${ resultList.ip}" /></td>
<td><c:out value="${resultList.answCn}" /></td>
<td>
<div class="td-inner">
<div class="product-search-box__product">
<c:if test = "${not empty resultList.img}">
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
<button type="button" class="moveDetil" bbsctt-innb = <c:out value="${resultList.bbscttInnb}"/>>
<img src="<c:out value="${cdnurl}${resultList.img}"/>"
onerror="this.src='<c:url
value="/mngr/images/image_placeholder.png"/>'" width="64"
alt="상품이미지">
</button>
<a onclick = "fn_move_goods_dtl_common(<c:out value="${resultList.goodsInnb}"/>,'sopmal');" style="cursor:pointer;">
<div class="product-search-box__detail">
<p class="product-search-box__detail-name">
<c:out value="${resultList.goodsNm}"/>
</p>
</div>
</a>
</c:if>
</div>
</div>
</td>
<td class="left">
<a class="under-line moveDetil"
bbsctt-innb = "<c:out value="${ resultList.bbscttInnb }"/>"
bbs-id ="<c:out value="${ resultList.bbsId }"/>"
regusr-dv = "02">
<c:choose>
<c:when test = "${resultList.useAt eq 'Y'}">
<c:out value="${ resultList.sj }"/>
</c:when>
<c:otherwise>
<span class="stone-6">삭제된 게시글입니다.[<c:out value="${ resultList.updtDt}"/>]</span>
</c:otherwise>
</c:choose>
</a>
<c:if test="${resultList.isfiles eq 1}">
<i class="icon icon_image-badge"></i>
</c:if>
<c:if test="${resultList.newAt eq 'Y'}">
<i class="icon icon_new-badge"></i>
</c:if>
<c:if test="${resultList.popularAt eq 'Y'}">
<i class="icon icon_hot-badge"></i>
</c:if>
<c:if test="${ resultList.secretBbscttAt eq 'Y' }">
<i class="icon icon_lock"></i>
</c:if>
</td>
<td>
<c:if test = "${not empty resultList.answBbscttInnb}">답변완료</c:if>
<c:if test = "${empty resultList.answBbscttInnb}">답변대기</c:if>
</td>
<td><c:out value="${ resultList.registDt }"/></td>
<td><fmt:formatNumber value="${resultList.inqireCnt}" pattern="#,##0"/></td>
<td>
<div class="manage-btn-container">
<c:if test="${ resultList.useAt eq 'Y' && empty resultList.npayBbscttSnb}">
<button type ="button" class="btn xsm outline primary" onclick="fn_select_bbsctt_update_pop('<c:out value="${ resultList.bbscttInnb }"/>','<c:out value="${ resultList.bbsId }"/>','');"><spring:message code="button.update"/></button>
<c:if test = "${resultMap.bbsInfo.answRegist eq 'Y'}">
<c:choose>
<c:when test="${not empty resultList.answBbscttInnb}">
<button type ="button" class="btn xsm primary outline" onclick="fn_select_answ_update_pop('<c:out value="${ resultList.bbscttInnb }"/>', '<c:out value="${ resultList.answBbscttInnb}"/>','<c:out value="${ resultList.bbsId }"/>','');">답변 <spring:message code="button.update"/></button>
</c:when>
<c:otherwise>
<button type ="button" class="btn xsm primary" onclick="fn_select_answ_regist_pop('<c:out value="${ resultList.bbscttInnb }"/>','<c:out value="${ resultList.bbsId }"/>','');">답변 <spring:message code="button.insert"/></button>
</c:otherwise>
</c:choose>
</c:if>
</c:if>
</div>
</td>
<td>
<c:if test="${ resultList.useAt eq 'Y' && empty resultList.npayBbscttSnb}">
<div class="manage-btn-container">
<button class="btn xsm dark" type="button" onclick="fn_delete_bbsctt('<c:out value="${ resultList.bbscttInnb }"/>','','<c:out value="${ resultList.goodsInnb }"/>');"><spring:message code="button.delete"/></button>
</div>
</c:if>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="100%"><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</form>
</section>
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value = '${resultMap.bbsctt.pageIndex}'/>"/>
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_bbsctt_list" />
</div>

View File

@@ -0,0 +1,204 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : GnrlBbscttListR.jsp
Description : 일반 게시글 목록 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2023-12-08 김혜지 최초 생성
--%>
<section class="content-section">
<div class="form-control-container">
<div class="left">
<div class="search-number">
<span class="search-number__text">검색 <strong><fmt:formatNumber value="${resultMap.paginationInfo.totalRecordCount}" pattern="#,###"/></strong>건</span>
</div>
</div>
<div class="center">
</div>
<div class="right">
<div class="select-box">
<select id="pageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_bbsctt_list('1');">
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paginationInfo.recordCountPerPage eq pageUnit }">selected="selected"</c:if>><c:out value="${ pageUnit }"/>개씩</option>
</c:forEach>
</select>
</div>
</div>
</div>
<form id="listForm">
<hr class="horizontal-line">
<div class="form-control-container">
<div class="left">
<button type="button" class="btn outline sm" onclick="fn_delete_bbsctt('', 'many');">선택 <spring:message code="button.delete"/></button>
</div>
<div class="center">
</div>
<div class="right">
<button type = "button" class="btn outline sm moveSopBtn">사용자 보기</button>
</div>
</div>
<hr class="spacing">
<div class="table-wrapper">
<table class="table vertical">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 4%;">
<col style="width: 3%;">
<col style="width: 8%;">
<col style="width: 11%;">
<col style="width: auto;">
<col style="width: 11%;">
<col style="width: 11%">
<col style="width: 11%">
<col style="width: 3%">
<col style="width: 5%">
<col style="width: 5%">
</colgroup>
<thead>
<tr>
<th>
<label class="b-checkbox checkbox is-medium check-all" >
<input type="checkbox" value="" id="listChkA">
<span class="check"></span>
</label>
</th>
<th>번호</th>
<th>작성자</th>
<th>IP</th>
<th>제목</th>
<th>공지기간</th>
<th>노출 기간</th>
<th>등록일</th>
<th>조회수</th>
<th>관리</th>
<th>삭제</th>
</tr>
</thead>
<tbody id ="contentSection">
<c:choose>
<c:when test="${ not empty resultMap.resultList.resultList }">
<c:set var="rnumAt" value="false" scope="page" />
<c:forEach items="${ resultMap.resultList.resultList }" var="resultList" varStatus="status">
<tr>
<td>
<c:if test = "${resultList.rnum ne '0'}">
<c:if test="${ resultList.useAt eq 'Y' }">
<label class="b-checkbox checkbox is-medium chkLabel">
<input type="checkbox" value="${ resultList.bbscttInnb }" name="selectedBbscttRow" class= 'bbscttChk'>
<span class="check"></span>
</label>
</c:if>
</c:if>
</td>
<td>
<c:choose>
<c:when test = "${resultList.rnum eq '0'}">공지</c:when>
<c:otherwise><c:out value="${resultList.rnum}" /></c:otherwise>
</c:choose>
</td>
<td><c:out value="${ resultList.mngrNm }" />(<c:out value="${ resultList.maskingRegusrId }" />)</td>
<td><c:out value="${ resultList.ip }" /></td>
<td class="left">
<a class="under-line moveDetil"
bbsctt-innb = "<c:out value="${ resultList.bbscttInnb }"/>"
regusr-dv = "02">
<c:choose>
<c:when test = "${resultList.useAt eq 'Y'}">
<c:out value="${ resultList.sj }"/>
</c:when>
<c:otherwise>
<span class="stone-6">삭제된 게시글입니다.[<c:out value="${ resultList.updtDt}"/>]</span>
</c:otherwise>
</c:choose>
</a>
<c:if test="${resultList.isfiles eq 1}">
<i class="icon icon_image-badge"></i>
</c:if>
<c:if test="${resultList.newAt eq 'Y'}">
<i class="icon icon_new-badge"></i>
</c:if>
<c:if test="${resultList.popularAt eq 'Y'}">
<i class="icon icon_hot-badge"></i>
</c:if>
<c:if test="${ resultList.secretBbscttAt eq 'Y' }">
<i class="icon icon_lock"></i>
</c:if>
</td>
<td>
<c:choose>
<c:when test= "${resultList.ntcDvn eq '1'}">
<span>상시 공지</span>
</c:when>
<c:when test="${resultList.ntcDvn eq '2'}">
<span><c:out value="${ resultList.ntcBgnDe }"/></span> ~
<span><c:out value="${ resultList.ntcEndDe }"/></span>
</c:when>
<c:when test="${resultList.ntcDvn eq '3'}">
<span>공지 종료</span>
</c:when>
</c:choose>
</td>
<td>
<c:choose>
<c:when test= "${ resultList.expsrAt eq 'Y' && resultList.ntcePdSetupAt eq 'Y'}">
<span><c:out value="${ resultList.ntceBgnDe }"/></span> ~
<span><c:out value="${ resultList.ntceEndDe }"/></span>
</c:when>
<c:when test="${ resultList.expsrAt eq 'Y' && resultList.ntcePdSetupAt eq 'N'}">
<span>상시 노출</span>
</c:when>
<c:otherwise>
<span>노출 안함</span>
</c:otherwise>
</c:choose>
</td>
<td><c:out value="${ resultList.registDt }"/></td>
<td><fmt:formatNumber value="${resultList.inqireCnt}" pattern="#,##0"/></td>
<td>
<div class="manage-btn-container">
<button type ="button" class="btn xsm outline primary" onclick="fn_select_bbsctt_update_pop('<c:out value="${ resultList.bbscttInnb }"/>','');"><spring:message code="button.update"/></button>
</div>
</td>
<td>
<c:if test="${ resultList.useAt eq 'Y' }">
<div class="manage-btn-container">
<button class="btn xsm dark" type="button" onclick="fn_delete_bbsctt('<c:out value="${ resultList.bbscttInnb }"/>');"><spring:message code="button.delete"/></button>
</div>
</c:if>
</td>
</tr>
<c:if test = "${resultList.rnum > 0}">
<c:set var="rnumAt" value="true" scope="page" />
</c:if>
</c:forEach>
<c:if test = "${not rnumAt}"><%--조회된 데이터 없을 시 데이터 없음 노출--%>
<tr>
<td colspan="100%"><spring:message code="common.nodata"/></td>
</tr>
</c:if>
</c:when>
<c:otherwise>
<tr>
<td colspan="14"><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</form>
</section>
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value = '${resultMap.bbsctt.pageIndex}'/>"/>
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_bbsctt_list" />
</div>
<script src="/admin/js/script.js" defer=""></script>

View File

@@ -0,0 +1,225 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : NoticeListRForm.jsp
Description : 공지 목록 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-02-05 김혜지 최초 생성
--%>
<section class="content-section">
<div class="form-control-container">
<div class="left">
<div class="search-number">
<span class="search-number__text">총 <strong><fmt:formatNumber value="${resultMap.paginationInfo.totalRecordCount}" pattern="#,###"/></strong>건</span>
</div>
</div>
<div class="center">
</div>
<div class="right">
<div class="select-box">
<select id="pageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_bbsctt_list('1');">
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paginationInfo.recordCountPerPage eq pageUnit }">selected="selected"</c:if>><c:out value="${ pageUnit }"/>개씩</option>
</c:forEach>
</select>
</div>
</div>
</div>
<form id="listForm">
<hr class="horizontal-line">
<div class="form-control-container">
<div class="left">
<button type="button" class="btn outline sm" onclick="fn_delete_bbsctt('', 'many');">선택 삭제</button>
</div>
<div class="center">
</div>
<div class="right">
<button type = "button" class="btn outline sm moveSopBtn">사용자 보기</button>
</div>
</div>
<hr class="spacing">
<div class="table-wrapper">
<table class="table vertical">
<caption>해당 테이블에 대한 설명</caption>
<!-- 각 열 width 설정 -->
<colgroup>
<col style="width: 4%;">
<col style="width: 3%;">
<col style="width: 8%;">
<col style="width: 8%;">
<col style="width: auto;">
<col style="width: 5%;" class = "itm">
<col style="width: 11%;">
<col style="width: 11%">
<col style="width: 11%">
<col style="width: 3%">
<col style="width: 5%">
<col style="width: 5%">
</colgroup>
<thead>
<tr>
<th>
<label class="b-checkbox checkbox is-medium check-all" >
<input type="checkbox" value="" id="listChkA">
<span class="check"></span>
</label>
</th>
<th>번호</th>
<th>작성자</th>
<th>IP</th>
<th>제목</th>
<th class = "itm">분류</th>
<th>공지기간</th>
<th>노출기간</th>
<th>등록일</th>
<th>조회수</th>
<th>관리</th>
<th>삭제</th>
</tr>
</thead>
<tbody id ="contentSection">
<c:choose>
<c:when test="${ not empty resultMap.resultList.resultList }">
<c:set var="rnumAt" value="false" scope="page" />
<c:forEach items="${ resultMap.resultList.resultList }" var="resultList" varStatus="status">
<tr>
<td>
<c:if test = "${resultList.rnum ne '0'}">
<label class="b-checkbox checkbox is-medium chkLabel">
<input type="checkbox" value="${ resultList.bbscttInnb }" name="selectedBbscttRow" class= 'bbscttChk'>
<c:if test="${ resultList.useAt eq 'Y' }">
<span class="check"></span>
</c:if>
</label>
</c:if>
</td>
<td>
<c:choose>
<c:when test = "${resultList.rnum eq '0'}">공지</c:when>
<c:otherwise><c:out value="${resultList.rnum}" /></c:otherwise>
</c:choose>
</td>
<td><c:out value="${ resultList.mngrNm }" />
<c:if test = "${not empty resultList.maskingRegusrId}">
(<c:out value="${ resultList.maskingRegusrId }" />)
</c:if>
</td>
<td><c:out value="${ resultList.ip }" /></td>
<td class="left">
<a class="under-line moveDetil"
bbsctt-innb = "<c:out value="${ resultList.bbscttInnb }"/>"
bbs-id ="<c:out value="${ resultList.bbsId }"/>"
regusr-dv = "02">
<c:choose>
<c:when test = "${resultList.useAt eq 'Y'}">
<c:out value="${ resultList.sj }" escapeXml="false"/>
</c:when>
<c:otherwise>
<span class="stone-6">삭제된 게시글입니다.[<c:out value="${ resultList.updtDt}"/>]</span>
</c:otherwise>
</c:choose>
</a>
<c:if test="${resultList.isfiles eq 1}">
<i class="icon icon_image-badge"></i>
</c:if>
<c:if test="${resultList.newAt eq 'Y'}">
<i class="icon icon_new-badge"></i>
</c:if>
<c:if test="${resultList.popularAt eq 'Y'}">
<i class="icon icon_hot-badge"></i>
</c:if>
<c:if test="${ resultList.secretBbscttAt eq 'Y' }">
<i class="icon icon_lock"></i>
</c:if>
</td>
<td class = "itm"><c:out value="${resultList.answCn}" /></td>
<td>
<c:choose>
<c:when test= "${resultList.ntcDvn eq '1'}">
<span>상시 공지</span>
</c:when>
<c:when test="${resultList.ntcDvn eq '2'}">
<span><c:out value="${ resultList.ntcBgnDe }"/></span> ~
<span><c:out value="${ resultList.ntcEndDe }"/></span>
</c:when>
<c:when test="${resultList.ntcDvn eq '3'}">
<span>공지 종료</span>
</c:when>
</c:choose>
</td>
<td>
<c:choose>
<c:when test="${resultList.expsrAt eq 'Y' && resultList.ntceDvn eq 1}">
<span><c:out value="${ resultList.aNtceBgnDe }"/></span> ~
<span>상시</span>
</c:when>
<c:when test= "${resultList.expsrAt eq 'Y' && resultList.ntceDvn eq 2}">
<span><c:out value="${ resultList.ntceBgnDe }"/></span> ~
<span><c:out value="${ resultList.ntceEndDe }"/></span>
</c:when>
<c:when test="${resultList.expsrAt eq 'Y' && resultList.ntceDvn eq 3}">
<c:choose>
<c:when test = " ${resultList.ntcePdSetupAt eq 'N'}">
<span><c:out value="${ resultList.aNtceBgnDe }"/></span> ~
</c:when>
<c:otherwise>
<span><c:out value="${ resultList.ntceBgnDe }"/></span> ~
</c:otherwise>
</c:choose>
<span><c:out value="${ resultList.ntceEndDe }"/></span>[종료]
</c:when>
<c:otherwise>
<span>노출 안함</span>
</c:otherwise>
</c:choose>
</td>
<td><c:out value="${ resultList.registDt }"/></td>
<td><fmt:formatNumber value="${resultList.inqireCnt}" pattern="#,##0"/></td>
<td>
<div class="manage-btn-container">
<button type ="button" class="btn xsm outline primary" onclick="fn_select_bbsctt_update_pop('<c:out value="${ resultList.bbscttInnb }"/>','');"><spring:message code="button.update"/></button>
</div>
</td>
<td>
<c:if test="${ resultList.useAt eq 'Y' }">
<div class="manage-btn-container">
<button class="btn xsm dark" type="button" onclick="fn_delete_bbsctt('<c:out value="${ resultList.bbscttInnb }"/>');"><spring:message code="button.delete"/></button>
</div>
</c:if>
</td>
</tr>
<c:if test = "${resultList.rnum > 0}">
<c:set var="rnumAt" value="true" scope="page" />
</c:if>
</c:forEach>
<c:if test = "${not rnumAt}"><%--조회된 데이터 없을 시 데이터 없음 노출--%>
<tr>
<td colspan="100%"><spring:message code="common.nodata"/></td>
</tr>
</c:if>
</c:when>
<c:otherwise>
<tr>
<td colspan="14"><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</form>
</section>
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value = '${resultMap.bbsctt.pageIndex}'/>"/>
<div class="pagination__container">
<ui:pagination paginationInfo="${ resultMap.paginationInfo }" type="image" jsFunction="fn_select_bbsctt_list" />
</div>
<script src="/admin/js/script.js" defer=""></script>

View File

@@ -0,0 +1,164 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : FaqListR.jsp
Description : Faq 목록 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-02-20 김혜지 최초 생성
--%>
<section class="content-section">
<div class="form-control-container">
<div class="left">
<div class="search-number">
<span class="search-number__text">총 <strong><fmt:formatNumber value="${resultMap.paginationInfo.totalRecordCount}" pattern="#,###"/></strong>건</span>
</div>
</div>
<div class="center">
</div>
<div class="right">
<div class="select-box">
<select id="pageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_bbsctt_list('1');">
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paginationInfo.recordCountPerPage eq pageUnit }">selected="selected"</c:if>><c:out value="${ pageUnit }"/>개씩</option>
</c:forEach>
</select>
</div>
</div>
</div>
<form id="listForm">
<hr class="horizontal-line">
<div class="form-control-container">
<div class="left">
<button type="button" class="btn outline sm" onclick="fn_delete_bbsctt('', 'many');">선택<spring:message code="button.delete"/></button>
</div>
<div class="center">
</div>
<div class="right">
<button type = "button" class="btn outline sm moveSopBtn">사용자 보기</button>
</div>
</div>
<hr class="spacing">
<div class="table-wrapper">
<table class="table vertical">
<caption>이용안내 게시글 목록</caption>
<!-- 각 열 width 설정 -->
<colgroup>
<col style="width: 4%;">
<col style="width: 3%;">
<col style="width: 8%;">
<col style="width: 12%;">
<col style="width: auto;">
<col style="width: 7%;" class = "itm">
<col style="width: 11%">
<col style="width: 5%">
<col style="width: 5%">
</colgroup>
<thead>
<tr>
<th>
<label class="b-checkbox checkbox is-medium check-all" >
<input type="checkbox" value="" id="listChkA">
<span class="check"></span>
</label>
</th>
<th>번호</th>
<th>작성자</th>
<th>IP</th>
<th>제목</th>
<th class = "itm">분류</th>
<th>등록일</th>
<th>관리</th>
<th>삭제</th>
</tr>
</thead>
<tbody id ="contentSection">
<c:choose>
<c:when test="${ not empty resultMap.resultList.resultList }">
<c:forEach items="${ resultMap.resultList.resultList }" var="resultList" varStatus="status">
<tr>
<td>
<c:if test="${ resultList.useAt eq 'Y' }">
<label class="b-checkbox checkbox is-medium chkLabel">
<input type="checkbox" value="${ resultList.bbscttInnb }"
name="selectedBbscttRow" class='bbscttChk'>
<span class="check"></span>
</label>
</c:if>
</td>
<td>
<c:out value="${resultList.rnum}" />
</td>
<td>
<c:out value="${ resultList.mngrNm }" />(<c:out value="${ resultList.regusrId}" />)
</td>
<td><c:out value="${ resultList.ip }" /></td>
<td class="left">
<a class="under-line moveDetil"
bbsctt-innb = "<c:out value="${ resultList.bbscttInnb }"/>"
bbs-id ="<c:out value="${ resultList.bbsId }"/>"
regusr-dv="02">
<c:choose>
<c:when test = "${resultList.useAt eq 'Y'}">
<c:out value="${ resultList.sj }"/>
</c:when>
<c:otherwise>
<span class="stone-6">삭제된 게시글입니다.[<c:out value="${ resultList.updtDt}"/>]</span>
</c:otherwise>
</c:choose>
</a>
<c:if test="${resultList.newAt eq 'Y'}">
<i class="icon icon_new-badge"></i>
</c:if>
</td>
<td class = "itm"><c:out value="${resultList.answCn}" /></td>
<td><c:out value="${ resultList.registDt }"/></td>
<td>
<div class="manage-btn-container">
<button type ="button" class="btn xsm outline primary" onclick="fn_select_bbsctt_update_pop('<c:out value="${ resultList.bbscttInnb }"/>','<c:out value="${ resultList.bbsId }"/>','');"><spring:message code="button.update"/></button>
<c:if test = "${resultMap.bbsInfo.answRegist eq 'Y'}">
<c:choose>
<c:when test="${ resultList.answAt eq 'Y'}">
<button type ="button" class="btn xsm primary outline" onclick="fn_select_answ_update_pop('<c:out value="${ resultList.bbscttInnb }"/>', '<c:out value="${ resultList.boardAnswInnb }"/>','<c:out value="${ resultList.bbsId }"/>','');">답변 <spring:message code="button.update"/></button>
</c:when>
<c:when test = "${ resultList.answAt eq 'N'}">
<button type ="button" class="btn xsm primary" onclick="fn_select_answ_regist_pop('<c:out value="${ resultList.bbscttInnb }"/>','<c:out value="${ resultList.bbsId }"/>','');">답변 <spring:message code="button.insert"/></button>
</c:when>
</c:choose>
</c:if>
</div>
</td>
<td>
<c:if test="${ resultList.useAt ne 'N' }">
<div class="manage-btn-container">
<button class="btn xsm dark" type="button" onclick="fn_delete_bbsctt('<c:out value="${ resultList.bbscttInnb }"/>');"><spring:message code="button.delete"/></button>
</div>
</c:if>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="14"><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</form>
</section>
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value = '${resultMap.bbsctt.pageIndex}'/>"/>
<div class="pagination__container">
<ui:pagination paginationInfo="${ resultMap.paginationInfo }" type="image" jsFunction="fn_select_bbsctt_list" />
</div>
<script src="/admin/js/script.js" defer=""></script>

View File

@@ -0,0 +1,328 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ page import="java.util.Date" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld" %>
<%--
Class Name : GnrlBbscttDtlPopupR.jsp
Description : 일반 게시글 상세 조회 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2023-12-08 김혜지 최초 생성
--%>
<div id="board-list-detail" class="modal" style="max-width: 1400px;">
<div class="modal-header">
<h4>게시글 보기</h4>
</div>
<div class="modal-content">
<%--게시글 정보--%>
<c:set value="${resultMap.bbscttInfo.dataMap}" var="bbscttInfo"/>
<%--추가문항답변--%>
<c:set value="${resultMap.bbscttInfo.qesitmAnswList}" var="qesitmAnswList"/>
<%--게시판 설정 --%>
<c:set value="${resultMap.bbsInfo}" var="bbsInfo"/>
<%--게시글 파일정보--%>
<c:set value="${resultMap.bbscttInfo.fileInfo}" var="fileInfo"/>
<%--상세에서 작업 후 목록 조회 유무--%>
<input type="hidden" id="${dtlPop}" value="<c:out value='${dtlPop}'/>"/>
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
<div class="form-control-container mb-10">
<div class="left">
</div>
<div class="center">
</div>
<div class="right">
<c:if test="${bbscttInfo.useAt eq 'Y' && empty bbscttInfo.npayBbscttSnb}">
<button type="button" class="btn xsm primary outline"
onclick="fn_select_bbsctt_update_pop('${ bbscttInfo.bbscttInnb }','dtlPop');">
<spring:message code="button.update"/></button>
<button type="button" class="btn xsm dark" id="dtlDeleteBtn"
onclick="fn_delete_bbsctt('${ bbscttInfo.bbscttInnb }','dtlPop');"}><spring:message code="button.delete"/></button>
</c:if>
</div>
</div>
<!-- 게시글 상세내용 START -->
<div class="table-wrapper mb-40">
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 8%;">
<col style="width: 15%;">
<col style="width: 8%;">
<col style="width: 15%;">
<col style="width: 8%;">
<col style="width: 15%;">
</colgroup>
<tbody>
<tr>
<th>상품정보</th>
<td>${resultMap.bbscttInfo.goodsList}
<c:forEach var="goods" items="${resultMap.goodsList.goodsList}">
<div class="product-search-box__product">
<a onclick = "fn_move_goods_dtl_common(<c:out value="${goods.goodsInnb}"/>,'sopmal');" style="cursor:pointer;">
<img src="<c:out value ="${cdnurl}${goods.img}"/>"
onerror="this.src='<c:url value="/mngr/images/image_placeholder.png"/>'"
alt="상품이미지" width="64">
</a>
<a onclick="fn_move_goods_dtl_common(<c:out value="${goods.goodsInnb}"/>,
'sopmal',
<c:out value="${goods.goodsKndCd}"/>);"
style="cursor:pointer;">
<div class="product-search-box__detail">
<p class="product-search-box__detail-name">
<c:out value="${goods.goodsNm}"/>
</p>
<p class="product-search-box__detail-price">
<fmt:formatNumber var="slepric" value="${goods.slepric}"
pattern="#,###.##"/>
<c:out value="${slepric}"/>
</p>
</div>
</a>
<c:if test="${bbsInfo.bbsTyCd eq '05'}">
<input hidden id="goodsInnb" value="${goods.goodsInnb}"/>
</c:if>
</div>
</c:forEach>
</td>
<th>주문번호</th>
<td>
<div class="td-inner">
<c:choose>
<c:when test = "${not empty bbscttInfo.ordrInnb}">
<c:out value="${bbscttInfo.ordrInnb}"/>
</c:when>
<c:otherwise>
<c:choose>
<c:when test = "${bbscttInfo.regusrDvCd eq '03'}">
(<i class="icon icon_word-badge_naver"></i>네이버페이)<c:out value="${bbscttInfo.npayGoodsOrdrnb}"/>
</c:when>
<c:otherwise>
</c:otherwise>
</c:choose>
</c:otherwise>
</c:choose>
</div>
</td>
<th>등록일</th>
<td>
<div class="td-inner" id="dtlRegistDt">
<c:out value="${ bbscttInfo.registDt }"/>
</div>
</td>
</tr>
<tr>
<th>IP</th>
<td>
<div class="td-inner">
<c:out value="${bbscttInfo.ip}"/>
</div>
</td>
<th>순서</th>
<td>
<div class="td-inner">
<c:choose>
<c:when test="${not empty bbscttInfo.sortOrdr}">
<c:out value="${bbscttInfo.sortOrdr}"/>
</c:when>
<c:otherwise>
(순서 설정 안함)
</c:otherwise>
</c:choose>
</div>
</td>
<th>베스트후기</th>
<td>
<label class="star-checkbox">
<input type="checkbox" name="bstAt" class="bstAt" value="Y"
bbsctt-innb="<c:out value = '${bbscttInfo.bbscttInnb}'/>"
bbs-id="<c:out value = '${bbscttInfo.bbsId}'/>"
<c:if test="${bbscttInfo.bstAt eq 'Y'}">checked</c:if>>
<span class="visually-hidden">중요선택</span>
</label>
</td>
</tr>
<tr>
<th>
노출 여부
</th>
<td>
<div class="td-inner">
<c:choose>
<c:when test = "${bbscttInfo.expsrAt eq 'Y'}">
노출
</c:when>
<c:otherwise>
미노출
</c:otherwise>
</c:choose>
</div>
</td>
<th>조회수</th>
<td>
<div class="td-inner" id="dtlInqireCnt">
<fmt:formatNumber value="${bbscttInfo.inqireCnt}" pattern="#,###"/>
</div>
</td>
<th>메인노출</th>
<td>
<div class="td-inner">
<div class="custom-radio-container">
<label class="b-checkbox checkbox">
<input type="checkbox" name="mainExpsrAt" value="Y" onclick = "fn_update_main_expsr_at(this,'<c:out value="${bbscttInfo.bbscttInnb}"/>');"
<c:if test="${bbscttInfo.mainExpsrAt eq 'Y'}">checked</c:if>>
<span class="check"></span>
<span class="control-label">노출</span>
</label>
</div>
</div>
</td>
</tr>
<tr>
<th>작성자</th>
<td>
<div>
<c:choose>
<%--회원--%>
<c:when test="${bbscttInfo.regusrDvCd eq '01'}">
<button type="button"
class="crmBtn"
data-info="info01"
onclick="fn_select_crm_mini_info
(this,
'<c:out value='${bbscttInfo.regusr}'/>'
,'<c:out value='${bbscttInfo.mbrDvCd}'/>'
,'#modalDiv');">
<span class="gray-12">
<c:out value="${bbscttInfo.regusrNm}"/>
</span><br>
(<c:choose>
<c:when test="${bbscttInfo.joinMthCd eq 'kakao'}"><%--kakao--%>
<i class="icon icon_word-badge_kakao"></i>
</c:when>
<c:when test="${bbscttInfo.joinMthCd eq 'naver'}"><%--naver--%>
<i class="icon icon_word-badge_naver"></i>
</c:when>
<c:when test="${bbscttInfo.joinMthCd eq 'pos'}"><%--pos--%>
<i class="icon icon_word-badge_pos"></i>
<span class="fw-500 blue-7">
<c:out value="${bbscttInfo.regusrId}"/>
</span>
</c:when>
<c:otherwise>
<span class="fw-500 blue-7">
<c:out value="${bbscttInfo.regusrId}"/>
</span>
</c:otherwise>
</c:choose>/
<span class="fw-500 green-8"><c:out value="${bbscttInfo.mbrGradNm}"/></span>)
</button>
</c:when>
<%--관리자--%>
<c:when test="${bbscttInfo.regusrDvCd eq '02'}">
<c:out value="${ bbscttInfo.mngrNm}"/>(<c:out
value="${bbscttInfo.maskingRegusrId}"/>)
</c:when>
<%--네이버페이--%>
<c:when test="${bbscttInfo.regusrDvCd eq '03'}">
naverpay
</c:when>
<%--입점사--%>
<c:when test="${bbscttInfo.regusrDvCd eq '04'}">
입점사
</c:when>
<%--비회원--%>
<c:when test="${bbscttInfo.regusrDvCd eq '99'}">
<c:out value="${bbscttInfo.maskingRegusrNm}"/>[비회원]
</c:when>
</c:choose>
</div>
</td>
</tr>
<c:if test="${not empty qesitmAnswList}">
<%--별점관리--%>
<c:forEach items="${qesitmAnswList}" var="answ" varStatus="status">
<c:choose>
<c:when test="${status.index % 3 == 0}">
<tr>
<th><c:out value="${answ.qesitmNm}"/></th>
<td>
<c:if test="${not empty answ.evlScore}">
<c:choose>
<c:when test="${answ.scoreIndictMthCd eq '01'}">
<i class="icon icon_star-<fmt:formatNumber value="${answ.evlScore}" pattern="#,###"/>"></i>
</c:when>
<c:when test="${answ.scoreIndictMthCd eq '02'}">
<fmt:formatNumber value="${answ.evlScore}" pattern="#,###"/>점
</c:when>
</c:choose>
</c:if>
<c:if test="${not empty answ.answCn}">
<c:out value="${answ.answCn}"/>
</c:if>
</td>
</c:when>
<c:when test="${status.index % 3 != 0}">
<th><c:out value="${answ.qesitmNm}"/></th>
<td>
<c:if test="${not empty answ.evlScore}">
<c:choose>
<c:when test="${answ.scoreIndictMthCd eq '01'}">
<i class="icon icon_star-<fmt:formatNumber value="${answ.evlScore}" pattern="#,###"/>"></i>
</c:when>
<c:when test="${answ.scoreIndictMthCd eq '02'}">
<fmt:formatNumber value="${answ.evlScore}" pattern="#,###"/>점
</c:when>
</c:choose>
</c:if>
<c:if test="${not empty answ.answCn}">
<c:out value="${answ.answCn}"/>
</c:if>
</td>
</tr>
</c:when>
</c:choose>
</c:forEach>
</c:if>
<c:if test="${not empty resultMap.bbscttInfo.fileInfo}">
<tr>
<th>포토 후기</th>
<td colspan="3">
<div class="td-inner">
<c:forEach items="${resultMap.bbscttInfo.fileInfo}" var="file" varStatus="status">
<div class="file-preview__container">
<div class="file-preview">
<span class="file-preview__number"></span>
<div class="file-preview__image" style="max-width: 200px; max-height: 100%;">
<img src="<c:out value="${cdnurl}${file.filCours}${file.sysFilNm}"/>" onerror="this.src='/mngr/images/image_placeholder.png'" alt="" style="width: 100%; height:100%;">
</div>
</div>
</div>
</c:forEach>
</div>
</td>
</tr>
</c:if>
<tr>
<th>내용</th>
<td colspan="3">
<div class="ck-content" id = "cnDiv" class="ck-content" style="white-space: pre-wrap">
<c:if test="${bbscttInfo.useAt eq 'N'}">
<span class="stone-6">삭제된 게시글입니다.</span>
</c:if>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="modal-footer">
<a style = "cursor:pointer" id="btnCloseModal" rel="modal:close" class="btn primary">확인</a>
</div>
</div>

View File

@@ -0,0 +1,290 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : GnrlBbscttListR.jsp
Description : 일반 게시글 목록 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2023-12-08 김혜지 최초 생성
--%>
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
<section class="content-section">
<div class="form-control-container">
<div class="left">
<div class="search-number">
<span class="search-number__text">총 <strong><fmt:formatNumber value="${resultMap.paginationInfo.totalRecordCount}" pattern="#,###"/></strong>건</span>
</div>
</div>
<div class="center">
</div>
<div class="right">
<div class="select-box">
<select id="pageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_bbsctt_list('1');">
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paginationInfo.recordCountPerPage eq pageUnit }">selected="selected"</c:if>><c:out value="${ pageUnit }"/>개씩</option>
</c:forEach>
</select>
</div>
</div>
</div>
<form id="listForm">
<hr class="horizontal-line">
<div class="form-control-container">
<div class="left">
<button type="button" class="btn outline sm" onclick="fn_delete_bbsctt('', 'many');">선택 <spring:message code="button.delete"/></button>
</div>
<div class="center">
</div>
<div class="right">
</div>
</div>
<hr class="spacing">
<div class="table-wrapper">
<table class="table vertical">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 3%;">
<col style="width: 3%;">
<col style="width: 3%;">
<col style="width: 7%;">
<col style="width: 7%;">
<col style="width: 18%;">
<col style="width: auto">
<col style="width: 7%">
<col style="width: 4%">
<col style="width: 10%">
<col style="width: 5%">
<col style="width: 5%">
</colgroup>
<thead>
<tr>
<th>
<label class="b-checkbox checkbox is-medium check-all" >
<input type="checkbox" value="" id="listChkA">
<span class="check"></span>
</label>
</th>
<th>번호</th>
<th>베스트</th>
<th>작성자</th>
<th>IP</th>
<th>상품</th>
<th>내용</th>
<th>등록일</th>
<th>조회수</th>
<th>주문번호<c:if test = "${bbsInfo.goodsRvwMlgPymntAt eq 'Y'}">/지급마일리지</c:if></th>
<th>관리</th>
<th>삭제</th>
</tr>
</thead>
<tbody id ="contentSection">
<c:choose>
<c:when test="${ not empty resultMap.resultList.resultList }">
<c:set var="rnumAt" value="false" scope="page" />
<c:forEach items="${ resultMap.resultList.resultList }" var="resultList" varStatus="status">
<tr>
<td>
<c:choose>
<c:when test="${resultList.rnum eq 0}">
</c:when>
<c:otherwise>
<c:if test="${ resultList.useAt eq 'Y' && empty resultList.npayBbscttSnb }">
<label class="b-checkbox checkbox is-medium chkLabel">
<input type="checkbox" value="${ resultList.bbscttInnb }"
name="selectedBbscttRow" class='bbscttChk'>
<span class="check"></span>
</label>
</c:if>
</c:otherwise>
</c:choose>
<input type = "hidden" value = "${resultList.bbscttInnb}" name = "bbscttInnb"/>
<input type = "hidden" value = "${resultList.regusr}" name = "regusr"/>
<input type = "hidden" value = "${resultList.regusrDvCd}" name = "regusrDvCd"/>
<input type = "hidden" value = "${resultList.mbrDvCd}" name = "mbrDvCd"/>
<input type = "hidden" value = "${resultList.goodsInnb}" name = "goodsInnb"/>
</td>
<td>
<c:choose>
<c:when test="${resultList.rnum eq 0}">
</c:when>
<c:otherwise>
<c:out value="${resultList.rnum}" />
</c:otherwise>
</c:choose>
</td>
<td>
<label class="star-checkbox">
<input type="checkbox" name ="bstAt" class = "bstAt" value = "Y" bbsctt-innb = "<c:out value = '${resultList.bbscttInnb}'/>"
<c:if test = "${resultList.bstAt eq 'Y'}">checked</c:if>>
<span class="visually-hidden">중요선택</span>
</label>
</td>
<td>
<c:choose>
<%--회원--%>
<c:when test="${resultList.regusrDvCd eq '01'}">
<button type="button"
class="crmBtn"
data-info="info01"
onclick="fn_select_crm_mini_info(this,
'<c:out value='${resultList.regusr}'/>'
,'<c:out value='${resultList.mbrDvCd}'/>'
,'#modalDiv');">
<span class="gray-12">
<c:out value="${resultList.regusrNm}"/>
</span><br>
( <c:choose>
<c:when test="${resultList.joinMthCd eq 'kakao'}"><%--kakao--%>
<i class="icon icon_word-badge_kakao"></i>
</c:when>
<c:when test="${resultList.joinMthCd eq 'naver'}"><%--naver--%>
<i class="icon icon_word-badge_naver"></i>
</c:when>
<c:when test="${resultList.joinMthCd eq 'pos'}"><%--pos--%>
<i class="icon icon_word-badge_pos"></i>
<span class="fw-500 blue-7">
<c:out value="${resultList.regusrId}"/>
</span>
</c:when>
<c:otherwise>
<span class="fw-500 blue-7">
<c:out value="${resultList.regusrId}"/>
</span>
</c:otherwise>
</c:choose>/
<span class="fw-500 green-8">
<c:out value="${resultList.mbrGradNm}"/>
</span>)
</button>
</c:when>
<%--관리자--%>
<c:when test="${resultList.regusrDvCd eq '02'}">
<c:out value="${ resultList.mngrNm}"/>(<c:out value="${ resultList.maskingRegusrId}"/>)
</c:when>
<%--네이버페이--%>
<c:when test="${resultList.regusrDvCd eq '03'}">
naverpay
</c:when>
<%--비회원--%>
<c:when test="${resultList.regusrDvCd eq '99'}">
<c:out value="${resultList.maskingRegusrNm}"/>[비회원]
</c:when>
</c:choose>
</td>
<td><c:out value="${ resultList.ip }" /></td>
<td class="text-left">
<div class="product-search-box__product">
<c:if test = "${not empty resultList.img}">
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
<button type="button" class="moveDetil" bbsctt-innb = <c:out value="${resultList.bbscttInnb}"/>>
<img src="<c:out value="${cdnurl}${resultList.img}"/>"
onerror="this.src='<c:url
value="/mngr/images/image_placeholder.png"/>'" width="64"
alt="상품이미지">
</button>
<a onclick = "fn_move_goods_dtl_common(<c:out value="${resultList.goodsInnb}"/>,'sopmal');" style="cursor:pointer;">
<div class="product-search-box__detail">
<p class="product-search-box__detail-name">
<c:out value="${resultList.goodsNm}"/>
</p>
</div>
</a>
</c:if>
</div>
</td>
<td class="left">
<a class="under-line moveDetil"
bbsctt-innb = "<c:out value="${ resultList.bbscttInnb }"/>"
bbs-id ="<c:out value="${ resultList.bbsId }"/>"
regusr-dv = "02">
<c:choose>
<c:when test = "${resultList.useAt eq 'Y'}">
<c:out value="${resultList.sj}"/>
</c:when>
<c:otherwise>
<span class="stone-6">삭제된 게시글입니다.[<c:out value="${ resultList.updtDt}"/>]</span>
</c:otherwise>
</c:choose>
<c:if test="${resultList.isfiles eq 1 || resultList.npayImage eq 'Y'}">
<i class="icon icon_image-badge"></i>
</c:if>
<c:if test="${resultList.newAt eq 'Y'}">
<i class="icon icon_new-badge"></i>
</c:if>
<c:if test="${resultList.popularAt eq 'Y'}">
<i class="icon icon_hot-badge"></i>
</c:if>
<c:if test="${ resultList.secretBbscttAt eq 'Y' }">
<i class="icon icon_lock"></i>
</c:if>
</td>
<td><c:out value = "${resultList.registDt}"/></td>
<td><fmt:formatNumber value="${resultList.inqireCnt}" pattern="#,##0"/></td>
<td>
<c:if test = "${resultList.regusrDvCd eq '01'}">
<c:out value = "${resultList.ordrInnb}"/>
<c:if test = "${bbsInfo.goodsRvwMlgPymntAt eq 'Y'}">
<br>
<c:choose>
<c:when test = "${resultList.photoRvwAt eq 'Y' && not empty bbsInfo.photoRvwMlgAccmlmnyAmt}">
포토 <c:out value = "${bbsInfo.photoRvwMlgAccmlmnyAmt}"/> 마일리지
</c:when>
<c:when test = "${resultList.photoRvwAt eq 'N' && not empty bbsInfo.gnrlRvwMlgAccmlmnyAmt}">
일반 <c:out value = "${bbsInfo.gnrlRvwMlgAccmlmnyAmt}"/> 마일리지
</c:when>
</c:choose>
<c:if test = "${resultList.registDt > aditMlgPymntBgnDe && resultList.registDt < aditMlgPymntEndDe}">
추가적립 <c:out value = "${bbsInfo.aditPymntMlgAccmlmnyAmt}"/> 마일리지
</c:if>
</c:if>
</c:if>
</td>
<td>
<c:if test="${ resultList.useAt eq 'Y' && empty resultList.npayBbscttSnb}">
<div class="manage-btn-container">
<button type ="button" class="btn xsm outline primary" onclick="fn_select_bbsctt_update_pop('<c:out value="${ resultList.bbscttInnb }"/>');"><spring:message code="button.update"/></button>
</div>
</c:if>
</td>
<td>
<c:if test="${ resultList.useAt eq 'Y' && empty resultList.npayBbscttSnb}">
<div class="manage-btn-container"><%--개별 삭제 모달 호출 ()--%>
<button class="btn xsm dark" type="button" onclick = "fn_del_passiv_modal_pop(this)"><spring:message code="button.delete"/></button>
</div>
</c:if>
</td>
</tr>
<c:if test = "${resultList.rnum > 0}">
<c:set var="rnumAt" value="true" scope="page" />
</c:if>
</c:forEach>
<c:if test = "${not rnumAt}"><%--조회된 데이터 없을 시 데이터 없음 노출--%>
<tr>
<td colspan="100%"><spring:message code="common.nodata"/></td>
</tr>
</c:if>
</c:when>
<c:otherwise>
<tr>
<td colspan="100%"><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</form>
</section>
<div class="pagination__container">
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value = '${resultMap.bbsctt.pageIndex}'/>"/>
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_bbsctt_list" />
</div>
<script src="/admin/js/script.js" defer=""></script>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,342 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : GnrlBbscttRegistPopupC.jsp
Description : 일반 게시글 등록 팝업
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-01-08 김혜지 최초 생성
2024-03-22 김혜인 수정
--%>
<div id="board-list-registration" class="modal" style="max-width: 1400px;">
<div class="modal-header">
<h4>게시글 등록</h4>
</div>
<c:set value = "${resultMap.bbsInfo}" var = "bbsInfo"/>
<c:set value = "${resultMap.qesitmList.qesitmList}" var = "qesitmList"/>
<c:set value = "${resultMap.qesitmList.itmCnList}" var = "itmCnList"/>
<c:set value = "${resultMap.rvwQesitmList.starQesitmList}" var = "starQesitmList"/>
<c:set value = "${resultMap.rvwQesitmList.starItmCnList}" var = "starItmCnList"/>
<c:set value = "${resultMap.itmList}" var = "itmList"/>
<br>
<div class="modal-content">
<div class="form-control-container mb-10">
<div class="left">
</div>
<div class="center">
</div>
<div class="right">
</div>
</div>
<form id="bbsRegForm">
<input type="hidden" name="bbsId" value="${bbsInfo.bbsId}"/>
<input type="hidden" name="ip" value="<c:out value="${ip}"/>">
<input type="hidden" name="sopmalCd" value="<c:out value='${resultMap.bbsInfo.sopmalCd}'/>">
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.extensions.images')" var="acceptFileExtensions"/> <%--허용 확장자--%>
<input type="hidden" name="acceptFileExtensions" value="${acceptFileExtensions}">
<input type="hidden" name="bbsTyCd" value="${bbsInfo.bbsTyCd}">
<c:if test="${bbsInfo.filAtch eq 'Y'}">
<input type="hidden" name="filAtch" value="Y">
</c:if>
<div class="table-wrapper mb-40">
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 15%;">
<col style="width: auto;">
<col style="width: 15%;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th>작성자</th>
<td>
<div class="td-inner">
<div class="input-container">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox">
<input type="checkbox" name="regusrIdAt" value="Y"
onclick="fn_readOnly_regusrId(this);">
<span class="check"></span>
<span class="control-label"></span>
</label>
</div>
<input class="input-text sm" type="text" value="관리자" disabled
name="regusrId" maxlength="12">(IP:<c:out value="${ip}"/>)
</div>
</div>
</td>
<th>순서 설정</th>
<td>
<div class="td-inner">
<div class="input-container">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox">
<input type="checkbox" name="sortOrdrAt" value="Y" onclick="fn_readOnly_sortOrdr(this);">
<span class="check"></span>
<span class="control-label"></span>
</label>
</div>
<input class="input-text number right xsm" type="text" name="sortOrdr" maxlength="2" disabled>
</div>
</div>
</td>
</tr>
<tr>
<th>메인노출</th>
<td>
<div class="td-inner">
<div class="input-container">
<label class="b-checkbox checkbox">
<input type="checkbox" name="mainExpsrAt" value="Y">
<span class="check"></span>
<span class="control-label">노출</span>
</label>
</div>
</div>
</td>
<th>노출 여부</th>
<td>
<div class="td-inner vertical pdDiv">
<div class="input-container">
<div class="b-checkbox-container mr-15">
<label class="b-checkbox checkbox">
<input type="checkbox" name="expsrAt" id="expsrAt" value="Y"
onclick="fn_readOnly_set(this);" checked>
<span class="check"></span>
<span class="control-label">노출</span>
</label>
</div>
</div>
</div>
</td>
</tr>
<tr class ="visibleAt">
<c:if test = "${bbsInfo.goodsChoice eq 'Y'}">
<th>상품 정보
<button type="button" class="btn xsm primary ml-5"
onclick="fn_open_modal('#modalDiv',
'#product-search',
'/mngr/goods/goodsmngr/selectGoodsSrchPopupForm',
{'goodsKndCd':'01'}); return false;">
검색
</button>
</th>
<td colspan="5">
<div class="td-inner">
<div class="product-search-box__product parentGoodsContainer">
</div>
</div>
</td>
</c:if>
</tr>
<c:if test = "${not empty starQesitmList}">
<tr>
<th>별점관리</th>
<td colspan="5">
<table>
<colgroup>
<col style="width: 20%;">
<col style="width: 80%;">
</colgroup>
<tbody>
<c:forEach items="${starQesitmList}" var="starQesitm" varStatus="status">
<tr>
<td>
<c:out value="${starQesitm.qesitmNm}"/>
<c:if test="${starQesitm.qesitmEssntlAt eq 'Y'}"><span class="red-7">*</span></c:if>
</td>
<td>
<div class="custom-radio-container">
<div class="custom-radio">
<input type="hidden" name="rvwQesitmEssntlAtArr[]" value="${starQesitm.qesitmEssntlAt}">
<input type="hidden" name="rvwQesitmNmArr[]" value="${starQesitm.qesitmNm}">
<!-- TODO:: 일반게시글 적용 필 (라디오버튼 여러문항 있을 시 다같이 선택됨 name이 같음)-->
<input type="hidden" name="rvwQesitmAtArr[]" class = "rvwAnswRadioAt" value="N">
<input type="hidden" name="rvwQesitmInnbArr[]" class="rvwAnswRadio" value="${starQesitm.qesitmInnb}" disabled>
<input type="hidden" name="evlScoreArr[]" class="rvwAnswRadio" disabled>
<input type="hidden" name="rvwItmInnbArr[]" class="rvwAnswRadio" disabled>
<c:forEach items="${starItmCnList}" var="starItmCn" varStatus="status">
<c:if test="${starItmCn.qesitmInnb eq starQesitm.qesitmInnb}">
<input type="radio" id="rvwCn${starItmCn.itmInnb}" class="rvwAnswRadioC" qesitm-innb='${starItmCn.qesitmInnb}'
name="itmInnbArr${starItmCn.qesitmInnb}[]" value="${starItmCn.itmInnb}" itm-cn="${starItmCn.itmCn}">
<label for="rvwCn${starItmCn.itmInnb}">
<c:choose>
<c:when test="${starQesitm.scoreIndictMthCd eq '01'}">
<i class="icon icon_star-${starItmCn.itmCn}"></i>
</c:when>
<c:when test="${starQesitm.scoreIndictMthCd eq '02'}">
<c:out value="${starItmCn.itmCn}"/>점
</c:when>
</c:choose>
</label>
</c:if>
</c:forEach>
</div>
</div>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</td>
</tr>
</c:if>
<c:if test = "${not empty qesitmList}">
<tr>
<th>추가 평가 항목</th>
<td colspan="5" id="boardFormItmC">
<table>
<colgroup>
<col style="width: 20%;">
<col style="width: 80%;">
</colgroup>
<tbody>
<c:forEach items="${ qesitmList }" var="qesitmList" varStatus="status">
<tr>
<td>
<c:out value="${ qesitmList.qesitmNm }"/><c:if test = "${ qesitmList.qesitmEssntlAt eq 'Y'}"><span class="red-7">*</span></c:if>
</td>
<td>
<c:if test="${ qesitmList.itmTyCd eq '01'}">
<div class="custom-radio-container">
<div class="custom-radio">
<input type="hidden" name="qesitmEssntlAtArr[]" value="${ qesitmList.qesitmEssntlAt}">
<input type="hidden" name="qesitmNmArr[]" value = "${ qesitmList.qesitmNm}">
<input type="hidden" name="qesitmAtArr[]" class = "answRadioAt" value = "N">
<input type="hidden" name="qesitmInnbArr[]" class="answRadio" value="${ qesitmList.qesitmInnb }" disabled>
<input type="hidden" name="answCnArr[]" class="answRadio" disabled>
<input type="hidden" name="itmInnbArr[]" class="answRadio" disabled>
<c:forEach items="${itmCnList}" var = "itmCnList1" varStatus = "status">
<c:if test ="${itmCnList1.qesitmInnb eq qesitmList.qesitmInnb}">
<input type="radio" id="answCn${itmCnList1.itmInnb}" class = "answRadioC" qesitm-innb = '${itmCnList1.qesitmInnb}'
name="itmInnbArr${ qesitmList.qesitmInnb}[]" value="${ itmCnList1.itmInnb}" itm-cn="${ itmCnList1.itmCn }">
<label for="answCn${itmCnList1.itmInnb}">${ itmCnList1.itmCn }</label>
</c:if>
</c:forEach>
</div>
</div>
</c:if>
<c:if test="${ qesitmList.itmTyCd eq '02'}">
<div class="select-box">
<input type="hidden" name="qesitmEssntlAtArr[]" value="${ qesitmList.qesitmEssntlAt }">
<input type="hidden" name="qesitmNmArr[]" value = "${ qesitmList.qesitmNm }">
<input type="hidden" name="qesitmAtArr[]" class = "answSelectAt" value = "N">
<input type="hidden" name="qesitmInnbArr[]" class="answSelect" value="${ qesitmList.qesitmInnb }" disabled>
<input type="hidden" name="answCnArr[]" class="answSelect" disabled>
<select class="md answSelectC" name="itmInnbArr[]">
<option value="" >전체</option>
<c:forEach items="${itmCnList}" var = "itmCnList2">
<c:if test ="${itmCnList2.qesitmInnb eq qesitmList.qesitmInnb}">
<option value="${ itmCnList2.itmInnb }" itm-cn="${ itmCnList2.itmCn}" qesitm-innb = '${itmCnList2.qesitmInnb}'>${ itmCnList2.itmCn }</option>
</c:if>
</c:forEach>
</select>
</div>
</c:if>
<c:if test="${ qesitmList.itmTyCd eq '03' }">
<input type="hidden" name="qesitmEssntlAtArr[]" value="${ qesitmList.qesitmEssntlAt }">
<input type="hidden" name="qesitmNmArr[]" value = "${ qesitmList.qesitmNm }">
<input type="hidden" name="qesitmAtArr[]" class = "answChkAt" value = "N">
<c:forEach items="${itmCnList}" var = "itmCnList3">
<c:if test ="${itmCnList3.qesitmInnb eq qesitmList.qesitmInnb}">
<div class="input-container">
<label class="b-checkbox checkbox">
<input type="hidden" class="answChk" name="qesitmInnbArr[]" value="${ qesitmList.qesitmInnb }" disabled>
<input type="hidden" class="answChk" name="answCnArr[]" value="${ itmCnList3.itmCn }" disabled>
<input type="checkbox" class="answChkC" name="itmInnbArr[]" value="${ itmCnList3.itmInnb }">
<span class="check"></span>
<span class="control-label">${ itmCnList3.itmCn }</span>
</label>
</div>
</c:if>
</c:forEach>
</c:if>
<c:if test="${ qesitmList.itmTyCd eq '04' }">
<c:forEach items="${itmCnList}" var = "itmCnList4">
<c:if test ="${itmCnList4.qesitmInnb eq qesitmList.qesitmInnb}">
<div class="input-container">
<input type="hidden" name="qesitmEssntlAtArr[]" value="${ qesitmList.qesitmEssntlAt }">
<input type="hidden" name="qesitmNmArr[]" value = "${ qesitmList.qesitmNm }">
<input type="hidden" name="qesitmAtArr[]" class = "answTxtAt" value = "N">
<input type="hidden" class="answTxt" name="qesitmInnbArr[]" value="${ qesitmList.qesitmInnb }" disabled>
<input type="text" class="input-text mm answTxtC" name="answCnArr[]" title="추가문항답변" placeholder="${ itmCnList4.itmCn }" maxlength="666">
<input type="hidden" class="answTxt" name="itmInnbArr[]" value="${ itmCnList4.itmInnb }" disabled>
</div>
<br>
</c:if>
</c:forEach>
</c:if>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</td>
</tr>
</c:if>
<tr>
<th><c:out value ="${bbsInfo.awswCn}"/></th>
<td colspan="5">
<div class="td-inner">
<textarea class="textarea" name = "cn" title="리뷰 입력" rows="10" id="cnBbsReg"></textarea>
</div>
</td>
</tr>
<%--게시판설정(파일첨부사용여부)--%>
<c:if test="${bbsInfo.filAtch eq 'Y'}">
<tr>
<th>이미지 등록</th>
<td colspan="5">
<div class="dropzone-wrapper">
<div class="dropzone" id="my-dropzone">
</div>
<p class="fyi gray-7 mt-15">여러 개의 이미지를 한 번에 등록 가능합니다.</p>
</div>
</td>
</tr>
</c:if>
</tbody>
</table>
</div>
</form>
</div>
<div class="modal-footer">
<a href="#" id="btn_close_modal_bbsC" rel="modal:close" class="btn outline">취소</a>
<button class="btn primary" onclick="fn_regist_bbsctt();"><spring:message code="button.insert"/></button>
</div>
<a href="#close-modal" rel="modal:close" class="close-modal ">Close</a>
</div>
<script>
if ($("#my-dropzone").length > 0) {
Dropzone.autoDiscover = false;
Dropzone.options.myDropzone = {
acceptedFiles: "${acceptFileExtensions}",
init: function() {
this.on("maxfilesexceeded", function (file) {
const dictMaxFilesExceeded = myDropzone.options.dictMaxFilesExceeded;
alert(dictMaxFilesExceeded);
this.removeFile(file);
$(file.previewElement).find(".dz-remove").attr("disabled", true);
});
}
}
var inputElement = $('input[type="file"].dz-hidden-input');
// name 부여
inputElement.attr('name', 'file');
// id 부여
inputElement.attr('id', 'fileUpload');
}
</script>
<script src="/admin/js/script.js" defer=""></script>

View File

@@ -0,0 +1,570 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : GnrlBbscttUpdtPopupU.jsp
Description : 일반 게시글 등록 팝업
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-01-08 김혜지 최초 생성
--%>
<div id="board-list-update" class="modal" style="max-width: 1400px;">
<div class="modal-header">
<h4>게시글 수정</h4>
</div>
<%--게시판 설정--%>
<c:set value = "${resultMap.bbsInfo}" var = "bbsInfo"/>
<%--게시글 정보--%>
<c:set value = "${resultMap.bbscttInfo.bbscttInfo}" var = "bbscttInfo"/>
<%--게시글 VO--%>
<c:set value = "${resultMap.bbscttVO}" var = "bbscttVO"/>
<%--게시글 추가문항답변--%>
<c:set value = "${resultMap.bbscttInfo.qesitmAnswList}" var = "qesitmAnswList"/>
<%--게시글 첨부파일--%>
<c:set value = "${resultMap.bbscttInfo.fileInfoGson}" var = "fileInfoGson"/>
<%--게시글 상품--%>
<c:set value = "${resultMap.bbscttInfo.goods}" var = "goods"/>
<%--게시글 분류--%>
<c:set value = "${resultMap.itmList}" var = "itmList"/>
<%--게시글 추가입력항목--%>
<c:set value = "${resultMap.qesitmList.qesitmList}" var = "qesitmList"/>
<%--게시글 추가입력항목 항목--%>
<c:set value = "${resultMap.qesitmList.itmCnList}" var = "itmCnList"/>
<%--게시글 리뷰 항목--%>
<c:set value = "${resultMap.rvwQesitmList.starQesitmList}" var = "starQesitmList"/>
<%--게시글 리뷰항목 항목--%>
<c:set value = "${resultMap.rvwQesitmList.starItmCnList}" var = "starItmCnList"/>
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
<div class="modal-content">
<div class="form-control-container mb-10">
<div class="left">
</div>
<div class="center">
</div>
<div class="right">
</div>
</div>
<form id="bbsUpdtForm">
<%--게시판 설정 관련--%>
<input type="hidden" name="bbsId" value="${bbsInfo.bbsId }"/>
<input type="hidden" name="filAtch" value="<c:out value="${bbsInfo.filAtch}"/>">
<input type="hidden" name="bbsTyCd" value="<c:out value="${bbsInfo.bbsTyCd}"/>">
<%--게시글 관련--%>
<input type="hidden" id="bbscttInnb" name="bbscttInnb" value="${ bbscttInfo.bbscttInnb }"/>
<input type="hidden" name="sopmalCd" value="<c:out value='${resultMap.bbsInfo.sopmalCd}'/>">
<input type="hidden" name="bstAt" value="<c:out value='${bbscttInfo.bstAt}'/>">
<%--게시글 파일 관련--%>
<%--허용 확장자--%>
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.extensions.images')" var="acceptFileExtensions"/>
<input type="hidden" name="acceptFileExtensions" value="${acceptFileExtensions}">
<div class="table-wrapper mb-40">
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 8%;">
<col style="width: 15%;">
<col style="width: 8%;">
<col style="width: 15%;">
<col style="width: 8%;">
<col style="width: 15%;">
</colgroup>
<tbody>
<tr>
<tr>
<th>작성자</th>
<td>
<div class="td-inner">
<c:choose>
<%--회원--%>
<c:when test="${bbscttInfo.regusrDvCd eq '01'}">
<button type="button"
class="crmBtn"
data-info="info01"
onclick="fn_select_crm_mini_info(this,
'<c:out value='${bbscttInfo.regusr}'/>'
,'<c:out value='${bbscttInfo.mbrDvCd}'/>'
,'#modalDiv');">
<span class="gray-12">
<c:out value="${bbscttInfo.regusrNm}"/>
</span><br>
(<c:choose>
<c:when test="${bbscttInfo.joinMthCd eq 'kakao'}"><%--kakao--%>
<i class="icon icon_word-badge_kakao"></i>
</c:when>
<c:when test="${bbscttInfo.joinMthCd eq 'naver'}"><%--naver--%>
<i class="icon icon_word-badge_naver"></i>
</c:when>
<c:when test="${bbscttInfo.joinMthCd eq 'pos'}"><%--pos--%>
<i class="icon icon_word-badge_pos"></i>
<span class="fw-500 blue-7">
<c:out value="${bbscttInfo.regusrId}"/>
</span>
</c:when>
<c:otherwise>
<span class="fw-500 blue-7">
<c:out value="${bbscttInfo.regusrId}"/>
</span>
</c:otherwise>
</c:choose>/
<span class="fw-500 green-8"><c:out value="${bbscttInfo.mbrGradNm}"/></span>)
</button>
</c:when>
<%--관리자--%>
<c:when test="${bbscttInfo.regusrDvCd eq '02'}">
<c:out value="${ bbscttInfo.mngrNm}"/>(<c:out
value="${bbscttInfo.maskingRegusrId}"/>)
</c:when>
<%--네이버페이--%>
<c:when test="${bbscttInfo.regusrDvCd eq '03'}">
naverpay
</c:when>
<%--입점사--%>
<c:when test="${bbscttInfo.regusrDvCd eq '04'}">
입점사
</c:when>
<%--비회원--%>
<c:when test="${bbscttInfo.regusrDvCd eq '99'}">
<c:out value="${bbscttInfo.maskingRegusrNm}"/>[비회원]
</c:when>
</c:choose>
</div>
</td>
<th>순서 설정</th>
<td>
<div class="td-inner">
<div class="input-container">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox">
<input type="checkbox" name="sortOrdrAt" value="Y"
onclick="fn_readOnly_sortOrdr(this);"
<c:if test="${not empty bbscttInfo.sortOrdr}">checked</c:if>>
<span class="check"></span>
<span class="control-label"></span>
</label>
</div>
<input class="input-text number right xsm" type="text" name="sortOrdr" maxlength="2"
value="<c:out value = '${bbscttInfo.sortOrdr}'/>"
<c:choose>
<c:when test="${not empty bbscttInfo.sortOrdr}">checked</c:when>
<c:otherwise>disabled="disabled"</c:otherwise>
</c:choose>>
</div>
</div>
</td>
</tr>
<tr>
<th>메인노출</th>
<td>
<div class="td-inner">
<div class="custom-radio-container">
<label class="b-checkbox checkbox">
<input type="checkbox" name="mainExpsrAt" value="Y"
<c:if test="${bbscttInfo.mainExpsrAt eq 'Y'}">checked</c:if>>
<span class="check"></span>
<span class="control-label">노출</span>
</label>
</div>
</div>
</td>
<th>노출여부</th>
<td>
<div class="td-inner vertical pdDiv">
<div class="input-container">
<div class="b-checkbox-container mr-15">
<label class="b-checkbox checkbox">
<input type="checkbox" name="expsrAt" id="expsrAt" value="Y"
onclick="fn_readOnly_set(this);"
<c:if test = "${bbscttInfo.expsrAt eq 'Y'}">checked</c:if>>
<span class="check"></span>
<span class="control-label">노출</span>
</label>
</div>
</div>
</div>
</td>
</tr>
<tr class ="visibleAt">
<c:if test = "${bbsInfo.goodsChoice eq 'Y'}">
<th>상품 정보
<button type="button" class="btn xsm primary ml-5"
onclick="fn_open_modal('#modalDiv',
'#product-search',
'/mngr/goods/goodsmngr/selectGoodsSrchPopupForm',
{'goodsKndCd':'01'}); return false;">
검색
</button>
</th>
<td colspan="5">
<div class="td-inner">
<c:if test = "${not empty goods}">
<c:forEach var = "goods" items = "${goods}">
<div class="product-search-box__product parentGoodsContainer">
<img src="${cdnurl}${goods.img}"onerror="this.src='<c:url value="/mngr/images/image_placeholder.png"/>'" alt="${goods.img}" width="64" alt="상품이미지">
<div class="product-search-box__detail">
<p class="product-search-box__detail-name" id = "goodsNm">
<c:out value = "${goods.goodsNm}"/>
</p>
<p class="product-search-box__detail-price" id = "goodsPric">
<fmt:formatNumber var="slepric" value="${goods.slepric}" pattern="#,###.##"/>
<c:out value = "${slepric}"/>
</p>
<%--게시글 연관 상품--%>
<input type = "hidden" name = "goodsInnbArr[]" value = "${goods.goodsInnb}"/>
<input type = "hidden" name = "ordrGoodsOptnInnbArr[]" value = <c:choose>
<c:when test = "${not empty goods.ordrGoodsOptnInnb}">
"<c:out value="${goods.ordrGoodsOptnInnb}"/>"
</c:when>
<c:otherwise>
"goodsNone"
</c:otherwise>
</c:choose>/>
<input type="hidden" name="reOrderAtArr[]" value="<c:choose>
<c:when test = "${goods.reOrderAt eq 'Y'}">
Y
</c:when>
<c:otherwise>
N
</c:otherwise>
</c:choose>">
</div>
</div>
</c:forEach>
</c:if>
</div>
</td>
</c:if>
</tr>
<c:if test = "${not empty starQesitmList}">
<tr>
<th>별점관리</th>
<td colspan="5">
<div class="td-inner table-wrapper mb-40" id="boardFormItmC">
<table class="table">
<colgroup>
<col style="width: 8%;">
<col style="width: auto;">
</colgroup>
<tbody>
<c:forEach items="${starQesitmList}" var="starQesitm" varStatus="status">
<tr>
<td>
<c:out value="${starQesitm.qesitmNm}"/>
<c:if test="${starQesitm.qesitmEssntlAt eq 'Y'}"><span class="red-7">*</span></c:if>
</td>
<td>
<div class="custom-radio-container">
<div class="custom-radio">
<input type="hidden" name="rvwQesitmEssntlAtArr[]" value="${starQesitm.qesitmEssntlAt}">
<input type="hidden" name="rvwQesitmNmArr[]" value="${starQesitm.qesitmNm}">
<!-- TODO:: 일반게시글 적용 필 (라디오버튼 여러문항 있을 시 다같이 선택됨 name이 같음)-->
<input type="hidden" name="rvwQesitmAtArr[]" class = "rvwAnswRadioAt" value="N">
<input type="hidden" name="rvwQesitmInnbArr[]" class="rvwAnswRadio" value="${starQesitm.qesitmInnb}" disabled>
<input type="hidden" name="evlScoreArr[]" class="rvwAnswRadio" disabled>
<input type="hidden" name="rvwItmInnbArr[]" class="rvwAnswRadio" disabled>
<c:forEach items="${starItmCnList}" var="starItmCn" varStatus="status">
<c:if test="${starItmCn.qesitmInnb eq starQesitm.qesitmInnb}">
<input type="radio" id="rvwCn${starItmCn.qesitmInnb}${status.index}" class="rvwAnswRadioC" qesitm-innb='${starItmCn.qesitmInnb}'
name="itmInnbArr${starItmCn.qesitmInnb}[]" value="${starItmCn.itmInnb}" itm-cn="${starItmCn.itmCn}"
<c:forEach var="qesitmAnswList1" items="${qesitmAnswList}">
<c:if test ="${qesitmAnswList1.itmTyCd eq '01'}">
<c:if test = "${qesitmAnswList1.itmInnb eq starItmCn.itmInnb}">checked</c:if>
</c:if>
</c:forEach>>
<label for="rvwCn${starItmCn.qesitmInnb}${status.index}">
<c:choose>
<c:when test="${starQesitm.scoreIndictMthCd eq '01'}">
<i class="icon icon_star-${starItmCn.itmCn}"></i>
</c:when>
<c:when test="${starQesitm.scoreIndictMthCd eq '02'}">
<c:out value="${starItmCn.itmCn}"/>점
</c:when>
</c:choose>
</label>
</c:if>
</c:forEach>
</div>
</div>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</td>
</tr>
</c:if>
<c:if test = "${not empty qesitmList}">
<tr>
<th>추가 평가 항목</th>
<td colspan="5">
<div class="td-inner table-wrapper mb-40" id="boardFormItmC">
<table class="table">
<colgroup>
<col style="width: 8%;">
<col style="width: auto;">
</colgroup>
<tbody>
<c:forEach items="${ qesitmList }" var="qesitmList" varStatus="status">
<tr>
<td>
<c:out value="${ qesitmList.qesitmNm }"/><c:if test = "${ qesitmList.qesitmEssntlAt eq 'Y'}"><span class="red-7">*</span></c:if>
</td>
<td>
<c:if test="${ qesitmList.itmTyCd eq '01'}">
<div class="custom-radio-container">
<div class="custom-radio">
<input type="hidden" name="qesitmEssntlAtArr[]" value="${ qesitmList.qesitmEssntlAt}">
<input type="hidden" name="qesitmNmArr[]" value = "${ qesitmList.qesitmNm}">
<input type="hidden" name="qesitmAtArr[]" class = "answRadioAt" value = "N">
<input type="hidden" name="qesitmInnbArr[]" class="answRadio" value="${ qesitmList.qesitmInnb }" disabled>
<input type="hidden" name="answCnArr[]" class="answRadio" disabled>
<input type="hidden" name="itmInnbArr[]" class="answRadio" disabled>
<c:forEach items="${itmCnList}" var = "itmCnList1" varStatus = "status">
<c:if test ="${itmCnList1.qesitmInnb eq qesitmList.qesitmInnb}">
<input type="radio" id="answCn${ status.index }" class = "answRadioC" qesitm-innb = '${itmCnList1.qesitmInnb}'
name="itmInnbArr${ qesitmList.qesitmInnb}[]" value="${ itmCnList1.itmInnb}" itm-cn="${ itmCnList1.itmCn }"
<c:forEach var="qesitmAnswList1" items="${qesitmAnswList}">
<c:if test ="${qesitmAnswList1.itmTyCd eq '01'}">
<c:if test = "${qesitmAnswList1.itmInnb eq itmCnList1.itmInnb}">checked</c:if>
</c:if>
</c:forEach>>
<label for="answCn${ status.index }">${ itmCnList1.itmCn }</label>
</c:if>
</c:forEach>
</div>
</div>
</c:if>
<c:if test="${ qesitmList.itmTyCd eq '02'}">
<div class="select-box">
<input type="hidden" name="qesitmEssntlAtArr[]" value="${qesitmList.qesitmEssntlAt}">
<input type="hidden" name="qesitmNmArr[]" value="${qesitmList.qesitmNm}">
<input type="hidden" name="qesitmAtArr[]" class="answSelect" id="answSelectAt" value="N">
<input type="hidden" name="qesitmInnbArr[]" class="answSelect" value="${qesitmList.qesitmInnb}" disabled>
<input type="hidden" name="answCnArr[]" class="answSelect" disabled>
<select class="md answSelectC" name="itmInnbArr[]">
<option value="">전체</option>
<c:forEach items="${itmCnList}" var="itmCnList2">
<c:if test="${itmCnList2.qesitmInnb eq qesitmList.qesitmInnb}">
<c:set var="selected" value=""/>
<c:forEach var="qesitmAnswList2" items="${qesitmAnswList}">
<c:if test="${qesitmAnswList2.itmInnb eq itmCnList2.itmInnb}">
<c:set var="selected" value="selected"/>
</c:if>
</c:forEach>
<option value="${itmCnList2.itmInnb}" itm-cn="${itmCnList2.itmCn}" qesitm-innb="${itmCnList2.qesitmInnb}" ${selected}>
${itmCnList2.itmCn}
</option>
</c:if>
</c:forEach>
</select>
</div>
</c:if>
<c:if test="${ qesitmList.itmTyCd eq '03' }">
<input type="hidden" name="qesitmEssntlAtArr[]" value="${ qesitmList.qesitmEssntlAt }">
<input type="hidden" name="qesitmNmArr[]" value = "${ qesitmList.qesitmNm }">
<input type="hidden" name="qesitmAtArr[]" class="answChk answChkAt" value = "N">
<c:forEach items="${itmCnList}" var = "itmCnList3">
<c:if test ="${itmCnList3.qesitmInnb eq qesitmList.qesitmInnb}">
<div class="input-container">
<label class="b-checkbox checkbox">
<input type="hidden" class="answChk" name="qesitmInnbArr[]" value="${ qesitmList.qesitmInnb }" disabled>
<input type="hidden" class="answChk" name="answCnArr[]" value="${ itmCnList3.itmCn }" disabled>
<input type="checkbox" class="answChkC" name="itmInnbArr[]" value="${ itmCnList3.itmInnb }"
itm-cn ="${ itmCnList3.itmCn }" qesitm-innb = "${itmCnList3.qesitmInnb}"
<c:forEach var="qesitmAnswList3" items="${qesitmAnswList}">
<c:if test="${qesitmAnswList3.itmInnb eq itmCnList3.itmInnb}">checked</c:if>
</c:forEach>>
<span class="check"></span>
<span class="control-label">${ itmCnList3.itmCn }</span>
</label>
</div>
</c:if>
</c:forEach>
</c:if>
<c:if test="${ qesitmList.itmTyCd eq '04' }">
<c:forEach items="${itmCnList}" var = "itmCnList4">
<c:if test ="${itmCnList4.qesitmInnb eq qesitmList.qesitmInnb}">
<div class="input-container">
<input type="hidden" name="qesitmEssntlAtArr[]" value="${ qesitmList.qesitmEssntlAt }">
<input type="hidden" name="qesitmNmArr[]" value = "${ qesitmList.qesitmNm }">
<input type="hidden" name="qesitmAtArr[]" class = "answTxtAt" value = "N">
<input type="hidden" class="answTxt" name="qesitmInnbArr[]" value="${ qesitmList.qesitmInnb }" disabled>
<input type="text" class="input-text mm answTxtC" name="answCnArr[]" title="추가문항답변" placeholder="${ itmCnList4.itmCn }" maxlength="666"
itm-cn ="${ itmCnList4.itmCn }" qesitm-innb = "${itmCnList4.qesitmInnb}" itm-innb = "${itmCnList4.itmInnb}"
<c:forEach var="qesitmAnswList4" items="${qesitmAnswList}">
<c:if test="${qesitmAnswList4.itmInnb eq itmCnList4.itmInnb}">
value = "<c:out value = '${qesitmAnswList4.answCn}'/>"
</c:if>
</c:forEach>>
<input type="hidden" class="answTxt" name="itmInnbArr[]" value="${ itmCnList4.itmInnb }" disabled>
</div>
<br>
</c:if>
</c:forEach>
</c:if>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</td>
</tr>
</c:if>
<tr>
<th><c:out value ="${bbsInfo.awswCn}"/></th>
<td colspan="5">
<div class="td-inner">
<textarea class="textarea" name = "cn" title="리뷰 입력" rows="10" id="cnBbsUpdt"></textarea>
</div>
</td>
</tr>
<%--게시판설정(파일첨부사용여부)--%>
<c:if test="${bbsInfo.filAtch eq 'Y'}">
<tr>
<th>이미지 등록</th>
<td colspan="5">
<div class="dropzone-wrapper">
<div class="dropzone" id="my-dropzone-bbsctt">
</div>
<p class="fyi gray-7 mt-15">여러 개의 이미지를 한 번에 등록 가능합니다.</p>
</div>
</td>
</tr>
</c:if>
</tbody>
</table>
</div>
</form>
</div>
<div class="modal-footer">
<a href="#" id="btn_close_modal_bbsU" rel="modal:close" class="btn outline">취소</a>
<button class="btn primary" onclick="fn_update_bbsctt('<c:out value="${ bbsInfo.bbsId }"/>','<c:out value="${ bbsInfo.bbsTyCd}"/>','<c:out value="${ bbscttInfo.bbscttInnb }"/>','<c:out value="${dtlPop}"/>');"><spring:message code="button.update"/></button>
</div>
<a href="#close-modal" rel="modal:close" class="close-modal">Close</a>
</div>
<script>
// Dropzone 파일업로드
if ($("#my-dropzone-bbsctt").length > 0) {
Dropzone.autoDiscover = false;
var myDropzone = new Dropzone("#my-dropzone-bbsctt", {
url: "/file-upload",
maxFilesize: 20,
autoProcessQueue: false,
addRemoveLinks: true,
dictDefaultMessage: "클릭하거나 파일을 여기로 드래그하세요",
dictRemoveFile: "삭제",
dictCancelUpload: "취소",
dictCancelUploadConfirmation: "업로드를 취소하시겠습니까?",
dictInvalidFileType: "이 파일은 업로드할 수 없습니다.",
dictFileTooBig: "파일이 너무 큽니다. ({{filesize}}MB). 최대 파일 크기: {{maxFilesize}}MB.",
dictMaxFilesExceeded: "파일을 더 이상 추가할 수 없습니다.",
dictResponseError: "서버에서 응답을 받지 못했습니다.",
acceptedFiles: "${acceptFileExtensions}",
init: function () {
let dropzoneInstance = this;
let imageData = '';
// 클릭 시 삭제 버튼 바인딩
dropzoneInstance.on("thumbnail", function (file) {
bindRemoveButton(file);
});
if (${fileInfoGson}) {
imageData = ${fileInfoGson};
// Dropzone에 이미지 추가
$.each(imageData, function (index, image) {
let mockFile = { name: image.orginlFilNm, size: image.filMg };
// Dropzone에 파일 추가
dropzoneInstance.emit("addedfile", mockFile);
// 이미지 경로 설정
let cdnurl = '<c:out value="${cdnurl}"/>';
const imagePath = `\${cdnurl}\${image.filCours}\${image.sysFilNm}`;
dropzoneInstance.emit("thumbnail", mockFile, imagePath);
// 이미지 로딩 오류 처리
$(mockFile.previewElement).find("img").on("error", function () {
this.src = '/mngr/images/image_placeholder.png'; // 대체 이미지
});
// 사용자 정의 ID 추가
mockFile.customId = image.bbscttAtchmnfilInnb;
// Dropzone의 files 배열에 파일 추가
dropzoneInstance.files.push(mockFile);
// 삭제 버튼 클릭 시 처리
bindRemoveButton(mockFile);
});
}
// 파일 추가 시 처리
dropzoneInstance.on("addedfile", function (file) {
let fileLength = myDropzone.files.length;
let restoreAt = file.customData ? true : false;
if (restoreAt) {
file.customId = file.customData.customId;
} else {
file.customId = "temp" + fileLength;
}
});
// 파일 개수 초과 시 처리
dropzoneInstance.on("maxfilesexceeded", function (file) {
alert(this.options.dictMaxFilesExceeded);
this.removeFile(file);
});
}
});
// 삭제 버튼 바인딩 함수
function bindRemoveButton(file) {
if (file.previewElement) {
$(file.previewElement).find(".dz-remove").off("click").on("click", function () {
let fileId = ""+file.customId+"";
var result = dropzoneDeleteFiles(fileId, '<c:out value="${bbscttVO.sopmalCd}"/>', "BDFL", 1);
if (result === "N") {
// 파일 복원 처리
file.customData = {restored: true, customId: file.customId,name: file.name, size: file.size};
myDropzone.emit("addedfile", file);
// 이미지 src 추출
var imgElement = file.previewElement.querySelector("img");
if (imgElement) {
var imgSrc = imgElement.src;
if(imgSrc == ''){
imgSrc = '/mngr/images/image_placeholder.png';
}
// 썸네일 업데이트
myDropzone.emit("thumbnail", file, imgSrc);
}
// 삭제 버튼 다시 표시
file.previewElement.querySelector(".dz-remove").style.display = "block";
}
});
}
}
}
// name 및 id 속성을 설정하는 부분
var inputElement = $('input[type="file"].dz-hidden-input');
inputElement.attr('name', 'files');
inputElement.attr('id', 'fileUploadDrop');
</script>

View File

@@ -0,0 +1,129 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%--
Class Name : BnftListConrevR.jsp
Description : 혜택 베스트리뷰 목록조회 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-08-12 이훈영 최초 생성
--%>
<%-- 목록 조회 영역 START --%>
<section id="section02" class="content-section">
<div class="form-control-container">
<div class="left">
<div class="search-number">
<span class="search-number__text">총 <strong><c:out value="${ resultMap.paginationInfo.totalRecordCount }"/></strong>건</span>
</div>
</div>
<div class="center">
</div>
<div class="right">
<div class="select-box">
<select id="pageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_list('1');">
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paginationInfo.recordCountPerPage eq pageUnit}">selected="selected"</c:if>><c:out value="${ pageUnit }"/>개씩</option>
</c:forEach>
</select>
</div>
</div>
</div>
<div class="table-wrapper mt-10">
<table class="table vertical">
<caption>테이블</caption>
<colgroup>
<col style="width: 7%;">
<col style="width: 120px;">
<col style="width: 15%;">
<col style="width: auto;">
<col style="width: 10%;">
<col style="width: 8%;">
<col style="width: 8%;">
<col style="width: 8%;">
<col style="width: 15%;">
</colgroup>
<thead>
<tr>
<th>No.</th>
<th colspan="2">상품</th>
<th>리뷰내용</th>
<th>작성자</th>
<th>마일리지</th>
<th>상태</th>
<th>사용여부</th>
<th>등록일/수정일</th>
</thead>
<tbody>
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
<c:choose>
<c:when test="${ not empty resultMap.resultList && fn:length(resultMap.resultList) > 0 }">
<c:forEach items="${ resultMap.resultList }" var="resultList" varStatus="status">
<tr>
<td>
<span><c:out value="${ resultMap.paginationInfo.totalRecordCount - resultList.rnum + 1 }" /></span>
</td>
<td>
<img src="<c:out value='${cdnurl}${resultList.imgFilCours}'/>" id="cnImgView" width="80" height="80" alt="" onerror="this.src='/mngr/images/image_placeholder.png'">
</td>
<td class="left">
<a href="#" class="under-line blue-8">
<span class="under-line" onclick="fn_move_dtl_uptpage(<c:out value="${ resultList.bnfInnb }" />, <c:out value="${resultMap.paramVO.pageIndex}" />, <c:out value="${resultMap.paramVO.recordCountPerPage}" />, <c:out value="${resultMap.paramVO.pageUnit}" />)">
<c:out value="${ resultList.cnSj }"/>
</span>
</a>
</td>
<td class="left">
<span class="stone-7 ft-12">
<c:choose>
<c:when test="${fn:length(resultList.wordsCn) gt 65}">
<c:out value="${ fn:substring(resultList.wordsCn, 0, 63) }"/>...
</c:when>
<c:otherwise>
<c:out value="${ resultList.wordsCn }"/>
</c:otherwise>
</c:choose>
</span>
</td>
<td>
<span><c:out value="${ resultList.mbrNm }"/></span>
</td>
<td>
<span><c:out value="${ resultList.mlgRwdAmt }"/>원</span>
</td>
<td>
<span><c:out value="${ resultList.bnfSttus }"/></span>
</td>
<td>
<span><c:out value="${ resultList.useAtNm }"/></span>
</td>
<td>
<span>
<c:out value="${ resultList.registDt }"/><br>
<c:out value="${ resultList.updtDt }"/>
</span>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="100%" ><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</section>
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_list" />
</div>
<%-- 목록 조회 영역 END --%>

View File

@@ -0,0 +1,113 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%--
Class Name : BnftListCpslmknR.jsp
Description : 혜택 캡슐만들기 목록조회 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-09-03 이훈영 최초 생성
--%>
<%-- 목록 조회 영역 START --%>
<section id="section02" class="content-section">
<div class="form-control-container">
<div class="left">
<div class="search-number">
<span class="search-number__text">총 <strong><c:out value="${ resultMap.paginationInfo.totalRecordCount }"/></strong>건</span>
</div>
</div>
<div class="center">
</div>
<div class="right">
<div class="select-box">
<select id="pageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_list('1');">
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paginationInfo.recordCountPerPage eq pageUnit}">selected="selected"</c:if>><c:out value="${ pageUnit }"/>개씩</option>
</c:forEach>
</select>
</div>
</div>
</div>
<div class="table-wrapper mt-10">
<table class="table vertical">
<caption>테이블</caption>
<colgroup>
<col style="width: 7%;">
<col style="width: 18%;">
<col style="width: 25%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 20%;">
</colgroup>
<thead>
<tr>
<th>No.</th>
<th>제품명</th>
<th>기간</th>
<th>초록잎</th>
<th>상태</th>
<th>사용여부</th>
<th>등록일/수정일</th>
</thead>
<tbody>
<c:choose>
<c:when test="${ not empty resultMap.resultList && fn:length(resultMap.resultList) > 0 }">
<c:forEach items="${ resultMap.resultList }" var="resultList" varStatus="status">
<tr>
<td>
<span><c:out value="${ resultMap.paginationInfo.totalRecordCount - resultList.rnum + 1 }" /></span>
</td>
<td class="left">
<a href="#" class="under-line blue-8">
<span class="under-line" onclick="fn_move_dtl_uptpage(<c:out value="${ resultList.bnfInnb }" />, <c:out value="${resultMap.paramVO.pageIndex}" />, <c:out value="${resultMap.paramVO.recordCountPerPage}" />, <c:out value="${resultMap.paramVO.pageUnit}" />)">
<c:out value="${ resultList.bnfSj }"/>
</span>
</a>
</td>
<td>
<span>
<c:out value="${ resultList.bnfBgnDt }"/> ~
<c:out value="${ resultList.bnfEndDt }"/>
</span>
</td>
<td>
<span><c:out value="${ resultList.rwdCndCnt }"/>개</span>
</td>
<td>
<span><c:out value="${ resultList.bnfSttus }"/></span>
</td>
<td>
<span><c:out value="${ resultList.useAtNm }"/></span>
</td>
<td>
<span>
<c:out value="${ resultList.registDt }"/><br>
<c:out value="${ resultList.updtDt }"/>
</span>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="100%" ><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</section>
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_list" />
</div>
<%-- 목록 조회 영역 END --%>

View File

@@ -0,0 +1,135 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%--
Class Name : BnftListDiscsharR.jsp
Description : 혜택 할인소식공유 목록조회 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-08-10 이훈영 최초 생성
--%>
<%-- 목록 조회 영역 START --%>
<section id="section02" class="content-section">
<div class="form-control-container">
<div class="left">
<div class="search-number">
<span class="search-number__text">총 <strong><c:out value="${ resultMap.paginationInfo.totalRecordCount }"/></strong>건</span>
</div>
</div>
<div class="center">
</div>
<div class="right">
<div class="select-box">
<select id="pageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_list('1');">
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paginationInfo.recordCountPerPage eq pageUnit}">selected="selected"</c:if>><c:out value="${ pageUnit }"/>개씩</option>
</c:forEach>
</select>
</div>
</div>
</div>
<div class="table-wrapper mt-10">
<table class="table vertical">
<caption>테이블</caption>
<colgroup>
<col style="width: 7%;">
<col style="width: 120px;">
<col style="width: auto;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 15%;">
</colgroup>
<thead>
<tr>
<th>No.</th>
<th colspan="2">상품</th>
<th>할인 유효기간</th>
<th>할인</th>
<th>마일리지</th>
<th>상태</th>
<th>사용여부</th>
<th>등록일/수정일</th>
</thead>
<tbody>
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
<c:choose>
<c:when test="${ not empty resultMap.resultList && fn:length(resultMap.resultList) > 0 }">
<c:forEach items="${ resultMap.resultList }" var="resultList" varStatus="status">
<tr>
<td>
<span><c:out value="${ resultMap.paginationInfo.totalRecordCount - resultList.rnum + 1 }" /></span>
</td>
<td>
<img src="<c:out value='${cdnurl}${resultList.imgFilCours}'/>" id="cnImgView" width="80" height="80" alt="" onerror="this.src='/mngr/images/image_placeholder.png'">
</td>
<td class="left">
<a href="#" class="under-line blue-8">
<span class="under-line" onclick="fn_move_dtl_uptpage(<c:out value="${ resultList.bnfInnb }" />, <c:out value="${resultMap.paramVO.pageIndex}" />, <c:out value="${resultMap.paramVO.recordCountPerPage}" />, <c:out value="${resultMap.paramVO.pageUnit}" />)">
<c:out value="${ resultList.cnSj }"/>
</span>
</a>
</td>
<td>
<span><c:out value="${ resultList.validDt }"/></span>
</td>
<td>
<c:choose>
<c:when test="${resultList.dscntUnitDvCd eq '01'}">
<c:choose>
<c:when test="${resultList.dscntRt % 1 == 0}">
<span><fmt:formatNumber value="${resultList.dscntRt}" type="number" minFractionDigits="0" maxFractionDigits="0"/>%</span>
</c:when>
<c:otherwise>
<span><fmt:formatNumber value="${resultList.dscntRt}" type="number" />%</span>
</c:otherwise>
</c:choose>
</c:when>
<c:when test="${resultList.dscntUnitDvCd eq '02'}">
<span><c:out value="${ resultList.dscntAmt }"/>원</span>
</c:when>
<c:otherwise></c:otherwise>
</c:choose>
</td>
<td>
<span><c:out value="${ resultList.mlgRwdAmt }"/>원</span>
</td>
<td>
<span><c:out value="${ resultList.bnfSttus }"/></span>
</td>
<td>
<span><c:out value="${ resultList.useAtNm }"/></span>
</td>
<td>
<span>
<c:out value="${ resultList.registDt }"/><br>
<c:out value="${ resultList.updtDt }"/>
</span>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="100%" ><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</section>
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_list" />
</div>
<%-- 목록 조회 영역 END --%>

View File

@@ -0,0 +1,113 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%--
Class Name : BnftListEvntviewR.jsp
Description : 혜택 이벤트보기 목록조회 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-08-02 이훈영 최초 생성
--%>
<%-- 목록 조회 영역 START --%>
<section id="section02" class="content-section">
<div class="form-control-container">
<div class="left">
<div class="search-number">
<span class="search-number__text">총 <strong><c:out value="${ resultMap.paginationInfo.totalRecordCount }"/></strong>건</span>
</div>
</div>
<div class="center">
</div>
<div class="right">
<div class="select-box">
<select id="pageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_list('1');">
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paginationInfo.recordCountPerPage eq pageUnit}">selected="selected"</c:if>><c:out value="${ pageUnit }"/>개씩</option>
</c:forEach>
</select>
</div>
</div>
</div>
<div class="table-wrapper mt-10">
<table class="table vertical">
<caption>테이블</caption>
<colgroup>
<col style="width: 7%;">
<col style="width: 18%;">
<col style="width: 25%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 20%;">
</colgroup>
<thead>
<tr>
<th>No.</th>
<th>이벤트명</th>
<th>이벤트기간</th>
<th>마일리지</th>
<th>상태</th>
<th>사용여부</th>
<th>등록일/수정일</th>
</thead>
<tbody>
<c:choose>
<c:when test="${ not empty resultMap.resultList && fn:length(resultMap.resultList) > 0 }">
<c:forEach items="${ resultMap.resultList }" var="resultList" varStatus="status">
<tr>
<td>
<span><c:out value="${ resultMap.paginationInfo.totalRecordCount - resultList.rnum + 1 }" /></span>
</td>
<td class="left">
<a href="#" class="under-line blue-8">
<span class="under-line" onclick="fn_move_dtl_uptpage(<c:out value="${ resultList.bnfInnb }" />, <c:out value="${resultMap.paramVO.pageIndex}" />, <c:out value="${resultMap.paramVO.recordCountPerPage}" />, <c:out value="${resultMap.paramVO.pageUnit}" />)">
<c:out value="${ resultList.bnfSj }"/>
</span>
</a>
</td>
<td>
<span>
<c:out value="${ resultList.cnBgnDe }"/> ~
<c:out value="${ resultList.cnEndDe }"/>
</span>
</td>
<td>
<span><c:out value="${ resultList.mlgRwdAmt }"/>원</span>
</td>
<td>
<span><c:out value="${ resultList.bnfSttus }"/></span>
</td>
<td>
<span><c:out value="${ resultList.useAtNm }"/></span>
</td>
<td>
<span>
<c:out value="${ resultList.registDt }"/><br>
<c:out value="${ resultList.updtDt }"/>
</span>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="100%" ><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</section>
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_list" />
</div>
<%-- 목록 조회 영역 END --%>

View File

@@ -0,0 +1,283 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : BnftListFormR.jsp
Description : 혜택 목록조회 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-06-17 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function(){
//검색폼 데이트피커 제어
fn_set_dateRange_function("#dateRange","srchStartDt","srchEndDt","srchStartDt");
let pageIndex = '<c:out value="${ resultMap.paramVO.pageIndex }"/>';
let pageUnit = '<c:out value="${ resultMap.paramVO.pageUnit }"/>';
fn_select_list(pageIndex, pageUnit);
$('#listForm').on('keydown', function(e) {
if (e.keyCode == 13) {
e.preventDefault();
$('#searchBtn').trigger("click");
}
});
});
const fn_select_list = function(pageIndex, pageUnit) {
let dataStr;
if(!pageIndex) {
$('#pageIndex').val(1);
} else {
$('#pageIndex').val(pageIndex);
}
if(!pageUnit) {
dataStr = $('#listForm').serialize();
} else {
if($('#pageUnit').length){
$('#pageUnit').val(pageUnit);
dataStr = $('#listForm').serialize();
} else {
dataStr = $('#listForm').serialize()+'&pageUnit='+pageUnit;
}
}
$('#pageIndex').val(pageIndex);
$.ajax({
type: "post",
url : "<c:url value="/mngr/bnft/selectBnftListInqire"/>",
data : dataStr,
success:function(resultHtml) {
$('#pageDiv').html(resultHtml);
$('#pageUnit').niceSelect();
}
});
}
/**
* 등록 폼 이동
*/
const fn_move_regpage = function() {
$('#listForm').attr('action', '<c:url value="/mngr/bnft/selectBnftRegistForm"/>');
$('#listForm').attr('method', 'post');
$('#listForm').submit();
};
/**
* 상세 수정 이동
*/
const fn_move_dtl_uptpage = function(bnfInnb) {
$('#listForm').attr('action', '<c:url value="/mngr/bnft/selectBnftDtlUpdtForm"/>');
$('#listForm').attr('method', 'post');
$('#bnfInnb').val(bnfInnb);
$('#listForm').submit();
}
</script>
</head>
<body>
<%-- 상단메뉴 공통화 적용 : 2023-11-30 / 박철민 추가 --%>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title"><c:out value="${pageMap.bnfTitle}"/> 목록</h2>
<div class="page-title__btn-container">
<button class="btn primary" id="moveRegist" type="button" onclick="fn_move_regpage(1); return false;"><c:out value="${pageMap.bnfTitle}"/> <spring:message code="button.insert"/></button>
</div>
</div>
<form id="listForm" name="listForm" method="post" action="<c:url value="/mngr/bnft/selectBnftListInqireForm"/>">
<input type="hidden" id="bnfInnb" name="bnfInnb"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value="${ resultMap.paramVO.pageIndex }"/>"/>
<input type="hidden" id="recordCountPerPage" name="recordCountPerPage" value="<c:out value="${ resultMap.paramVO.recordCountPerPage }"/>"/>
<section class="content-section" id="search-section">
<div class="table-wrapper vertical">
<table class="table">
<caption>검색 옵션</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th>기간</th>
<td>
<div class="td-inner">
<div class="select-box mr-5">
<select name="srchPdDv" id="srchPdDv" title="검색">
<option value="regDt" ${ f:setSelected(resultMap.paramVO.srchPdDv,"regDt") }>등록일</option>
<option value="bgnDt" ${ f:setSelected(resultMap.paramVO.srchPdDv,"bgnDt") }>시작일</option>
<option value="endDt" ${ f:setSelected(resultMap.paramVO.srchPdDv,"endDt") }>종료일</option>
</select>
</div>
<div class="input-container">
<input type="text" name="srchStartDt" id="srchStartDt" class="datepicker" title="시작 날짜 선택" value="${ resultMap.paramVO.srchStartDt }" autocomplete="off">
<span class="tilde">~</span>
<input type="text" name="srchEndDt" id="srchEndDt" class="datepicker" title="종료 날짜 선택" value="${ resultMap.paramVO.srchEndDt }" autocomplete="off">
</div>
<div class="dateRange-btnContainer" id="dateRange">
<button class="dateRange-btn">어제</button>
<button class="dateRange-btn">오늘</button>
<button class="dateRange-btn">3일간</button>
<button class="dateRange-btn">일주일</button>
<button class="dateRange-btn">1개월</button>
<button class="dateRange-btn">3개월</button>
<button class="dateRange-btn">6개월</button>
<button class="dateRange-btn">1년</button>
<button class="dateRange-btn selected">전체</button>
</div>
</div>
</td>
</tr>
<tr>
<th>상태</th>
<td>
<c:if test="${ resultMap.paramVO.bnfDvCd ne '070'}">
<div class="td-inner">
<div class="custom-radio-container">
<div class="custom-radio">
<input type="radio" id="srchSttDvA" name="srchSttDv" value="" ${ f:setChecked(resultMap.paramVO.srchSttDv,"") }>
<label for="srchSttDvA">전체</label>
</div>
<div class="custom-radio">
<input type="radio" id="srchSttDvI" name="srchSttDv" value="ING" ${ f:setChecked(resultMap.paramVO.srchSttDv,"ING") }>
<label for="srchSttDvI">진행중</label>
</div>
<div class="custom-radio">
<input type="radio" id="srchSttDvN" name="srchSttDv" value="END" ${ f:setChecked(resultMap.paramVO.srchSttDv,"END") }>
<label for="srchSttDvN">종료</label>
</div>
</div>
</div>
</c:if>
<c:if test="${ resultMap.paramVO.bnfDvCd eq '070'}">
<div class="td-inner">
<div class="custom-radio-container">
<div class="custom-radio">
<input type="radio" id="srchSttDvA" name="srchSttDv" value="" ${ f:setChecked(resultMap.paramVO.srchSttDv,"") }>
<label for="srchSttDvA">전체</label>
</div>
<div class="custom-radio">
<input type="radio" id="srchSttDvI" name="srchSttDv" value="ING" ${ f:setChecked(resultMap.paramVO.srchSttDv,"ING") }>
<label for="srchSttDvI">라이브중</label>
</div>
<div class="custom-radio">
<input type="radio" id="srchSttDvP" name="srchSttDv" value="PRE" ${ f:setChecked(resultMap.paramVO.srchSttDv,"PRE") }>
<label for="srchSttDvP">예정</label>
</div>
<div class="custom-radio">
<input type="radio" id="srchSttDvN" name="srchSttDv" value="END" ${ f:setChecked(resultMap.paramVO.srchSttDv,"END") }>
<label for="srchSttDvN">종료</label>
</div>
</div>
</div>
</c:if>
</td>
</tr>
<tr>
<th>사용여부</th>
<td>
<div class="td-inner">
<div class="b-checkbox-container">
<div class="custom-radio">
<input type="radio" id="srchUseAtA" name="srchUseAt" value="" ${ f:setChecked(resultMap.paramVO.srchUseAt,"") }>
<label for="srchUseAtA">전체</label>
</div>
<div class="custom-radio">
<input type="radio" id="srchUseAtY" name="srchUseAt" value="Y" ${ f:setChecked(resultMap.paramVO.srchUseAt,"Y") }>
<label for="srchUseAtY">사용</label>
</div>
<div class="custom-radio">
<input type="radio" id="srchUseAtN" name="srchUseAt" value="N" ${ f:setChecked(resultMap.paramVO.srchUseAt,"N") }>
<label for="srchUseAtN">미사용</label>
</div>
</div>
</div>
</td>
</tr>
<tr>
<th>검색어</th>
<td>
<div class="td-inner">
<div class="select-box">
<select name="srchDv" id="srchDv" title="검색">
<c:choose>
<c:when test="${ resultMap.paramVO.bnfDvCd eq '060' }">
<option value="cnSj" ${ f:setSelected(resultMap.paramVO.srchDv,"cnSj") }>이벤트명</option>
</c:when>
<c:when test="${ resultMap.paramVO.bnfDvCd eq '070' }">
<option value="cnSj" ${ f:setSelected(resultMap.paramVO.srchDv,"cnSj") }>방송명</option>
</c:when>
<c:when test="${ resultMap.paramVO.bnfDvCd eq '080' }">
<option value="cnSj" ${ f:setSelected(resultMap.paramVO.srchDv,"cnSj") }>상품명</option>
</c:when>
<c:when test="${ resultMap.paramVO.bnfDvCd eq '090' }">
<option value="cnSj" ${ f:setSelected(resultMap.paramVO.srchDv,"cnSj") }>상품명</option>
</c:when>
<c:otherwise>
<option value="bnfSj" ${ f:setSelected(resultMap.paramVO.srchDv,"bnfSj") }>제목</option>
</c:otherwise>
</c:choose>
</select>
</div>
<input class="input-text xl" type="text" name="srchKeyword" id="srchKeyword" title="" value="${ resultMap.paramVO.srchKeyword }" placeholder="">
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="form-control-container">
<div class="left"></div>
<div class="center">
<button class="btn outline" id="resetBtn" type="button" onclick="fn_reset_form('search-section');">초기화</button>
<button class="btn primary" id="searchBtn" type="button" onkeypress="this.onclick();" onclick="fn_select_list(1); return false;">검색</button>
</div>
<div class="right">
<!-- <button class="btn outline search-detail">상세검색</button> -->
</div>
</div>
</section>
<%-- 검색 영역 END --%>
<div id="pageDiv">
</div>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
</body>
</html>

View File

@@ -0,0 +1,127 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%--
Class Name : BnftListLvshopR.jsp
Description : 혜택 라이브쇼핑 목록조회 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-08-02 이훈영 최초 생성
--%>
<%-- 목록 조회 영역 START --%>
<section id="section02" class="content-section">
<div class="form-control-container">
<div class="left">
<div class="search-number">
<span class="search-number__text">총 <strong><c:out value="${ resultMap.paginationInfo.totalRecordCount }"/></strong>건</span>
</div>
</div>
<div class="center">
</div>
<div class="right">
<div class="select-box">
<select id="pageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_list('1');">
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paginationInfo.recordCountPerPage eq pageUnit}">selected="selected"</c:if>><c:out value="${ pageUnit }"/>개씩</option>
</c:forEach>
</select>
</div>
</div>
</div>
<div class="table-wrapper mt-10">
<table class="table vertical">
<caption>테이블</caption>
<colgroup>
<col style="width: 7%;">
<col style="width: 25%;">
<col style="width: 14%;">
<!--<col style="width: 9%;">-->
<col style="width: 9%;">
<col style="width: 9%;">
<col style="width: 9%;">
<col style="width: 18%;">
</colgroup>
<thead>
<tr>
<th>No.</th>
<th>방송명</th>
<th>방송일시</th>
<!--<th>참여시간</th>-->
<th>마일리지</th>
<th>상태</th>
<th>사용여부</th>
<th>등록일/수정일</th>
</thead>
<tbody>
<c:choose>
<c:when test="${ not empty resultMap.resultList && fn:length(resultMap.resultList) > 0 }">
<c:forEach items="${ resultMap.resultList }" var="resultList" varStatus="status">
<tr>
<td>
<span><c:out value="${ resultMap.paginationInfo.totalRecordCount - resultList.rnum + 1 }" /></span>
</td>
<td class="left">
<a href="#" class="under-line blue-8">
<span class="under-line" onclick="fn_move_dtl_uptpage(<c:out value="${ resultList.bnfInnb }" />, <c:out value="${resultMap.paramVO.pageIndex}" />, <c:out value="${resultMap.paramVO.recordCountPerPage}" />, <c:out value="${resultMap.paramVO.pageUnit}" />)">
<c:out value="${ resultList.bnfSj }"/>
</span>
</a>
</td>
<td>
<span>
<c:out value="${ resultList.cnBgnDt }"/>
</span>
</td>
<!--<td>
<span><c:out value="${ resultList.tmeSecnd }"/>초</span>
</td>-->
<td>
<span><c:out value="${ resultList.mlgRwdAmt }"/>원</span>
</td>
<td>
<c:choose>
<c:when test="${resultList.bnfCnSttus eq '예정'}">
<span class="orange-5"><c:out value="${ resultList.bnfCnSttus }"/></span>
</c:when>
<c:when test="${resultList.bnfCnSttus eq '라이브중'}">
<span class="blue-8"><c:out value="${ resultList.bnfCnSttus }"/></span>
</c:when>
<c:otherwise>
<span><c:out value="${ resultList.bnfCnSttus }"/></span>
</c:otherwise>
</c:choose>
</td>
<td>
<span><c:out value="${ resultList.useAtNm }"/></span>
</td>
<td>
<span>
<c:out value="${ resultList.registDt }"/><br>
<c:out value="${ resultList.updtDt }"/>
</span>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="100%" ><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</section>
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_list" />
</div>
<%-- 목록 조회 영역 END --%>

View File

@@ -0,0 +1,113 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%--
Class Name : BnftListOxquizR.jsp
Description : 혜택 OX퀴즈 목록조회 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-08-27 이훈영 최초 생성
--%>
<%-- 목록 조회 영역 START --%>
<section id="section02" class="content-section">
<div class="form-control-container">
<div class="left">
<div class="search-number">
<span class="search-number__text">총 <strong><c:out value="${ resultMap.paginationInfo.totalRecordCount }"/></strong>건</span>
</div>
</div>
<div class="center">
</div>
<div class="right">
<div class="select-box">
<select id="pageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_list('1');">
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paginationInfo.recordCountPerPage eq pageUnit}">selected="selected"</c:if>><c:out value="${ pageUnit }"/>개씩</option>
</c:forEach>
</select>
</div>
</div>
</div>
<div class="table-wrapper mt-10">
<table class="table vertical">
<caption>테이블</caption>
<colgroup>
<col style="width: 7%;">
<col style="width: 20%;">
<col style="width: 27%;">
<col style="width: 8%;">
<col style="width: 8%;">
<col style="width: 8%;">
<col style="width: 20%;">
</colgroup>
<thead>
<tr>
<th>No.</th>
<th>제목</th>
<th>기간</th>
<th>문항수</th>
<th>상태</th>
<th>사용여부</th>
<th>등록일/수정일</th>
</thead>
<tbody>
<c:choose>
<c:when test="${ not empty resultMap.resultList && fn:length(resultMap.resultList) > 0 }">
<c:forEach items="${ resultMap.resultList }" var="resultList" varStatus="status">
<tr>
<td>
<span><c:out value="${ resultMap.paginationInfo.totalRecordCount - resultList.rnum + 1 }" /></span>
</td>
<td class="left">
<a href="#" class="under-line blue-8">
<span class="under-line" onclick="fn_move_dtl_uptpage(<c:out value="${ resultList.bnfInnb }" />, <c:out value="${resultMap.paramVO.pageIndex}" />, <c:out value="${resultMap.paramVO.recordCountPerPage}" />, <c:out value="${resultMap.paramVO.pageUnit}" />)">
<c:out value="${ resultList.bnfSj }"/>
</span>
</a>
</td>
<td>
<span>
<c:out value="${ resultList.bnfBgnDt }"/> ~
<c:out value="${ resultList.bnfEndDt }"/>
</span>
</td>
<td>
<span><c:out value="${ resultList.quizCnt }"/>개</span>
</td>
<td>
<span><c:out value="${ resultList.bnfSttus }"/></span>
</td>
<td>
<span><c:out value="${ resultList.useAtNm }"/></span>
</td>
<td>
<span>
<c:out value="${ resultList.registDt }"/><br>
<c:out value="${ resultList.updtDt }"/>
</span>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="100%" ><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</section>
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_list" />
</div>
<%-- 목록 조회 영역 END --%>

View File

@@ -0,0 +1,108 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%--
Class Name : BnftListR.jsp
Description : 혜택 목록조회 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-06-17 이훈영 최초 생성
--%>
<%-- 목록 조회 영역 START --%>
<section id="section02" class="content-section">
<div class="form-control-container">
<div class="left">
<div class="search-number">
<span class="search-number__text">총 <strong><c:out value="${ resultMap.paginationInfo.totalRecordCount }"/></strong>건</span>
</div>
</div>
<div class="center">
</div>
<div class="right">
<div class="select-box">
<select id="pageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_list('1');">
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paginationInfo.recordCountPerPage eq pageUnit}">selected="selected"</c:if>><c:out value="${ pageUnit }"/>개씩</option>
</c:forEach>
</select>
</div>
</div>
</div>
<div class="table-wrapper mt-10">
<table class="table vertical">
<caption>테이블</caption>
<colgroup>
<col style="width: 7%;">
<col style="width: 20%;">
<col style="width: 30%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 23%;">
</colgroup>
<thead>
<tr>
<th>No.</th>
<th>제목</th>
<th>기간</th>
<th>상태</th>
<th>사용여부</th>
<th>등록일/수정일</th>
</thead>
<tbody>
<c:choose>
<c:when test="${ not empty resultMap.resultList && fn:length(resultMap.resultList) > 0 }">
<c:forEach items="${ resultMap.resultList }" var="resultList" varStatus="status">
<tr>
<td>
<span><c:out value="${ resultMap.paginationInfo.totalRecordCount - resultList.rnum + 1 }" /></span>
</td>
<td class="left">
<a href="#" class="under-line blue-8">
<span class="under-line" onclick="fn_move_dtl_uptpage(<c:out value="${ resultList.bnfInnb }" />, <c:out value="${resultMap.paramVO.pageIndex}" />, <c:out value="${resultMap.paramVO.recordCountPerPage}" />, <c:out value="${resultMap.paramVO.pageUnit}" />)">
<c:out value="${ resultList.bnfSj }"/>
</span>
</a>
</td>
<td>
<span>
<c:out value="${ resultList.bnfBgnDt }"/> ~
<c:out value="${ resultList.bnfEndDt }"/>
</span>
</td>
<td>
<span><c:out value="${ resultList.bnfSttus }"/></span>
</td>
<td>
<span><c:out value="${ resultList.useAtNm }"/></span>
</td>
<td>
<span>
<c:out value="${ resultList.registDt }"/><br>
<c:out value="${ resultList.updtDt }"/>
</span>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="100%" ><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</section>
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_list" />
</div>
<%-- 목록 조회 영역 END --%>

View File

@@ -0,0 +1,219 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : BnftPushListFormR.jsp
Description : 혜택 알림보내기 목록조회 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-09-23 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function(){
//검색폼 데이트피커 제어
fn_set_dateRange_function("#dateRange","srchStartDt","srchEndDt","srchStartDt");
let pageIndex = '<c:out value="${ resultMap.paramVO.pageIndex }"/>';
let pageUnit = '<c:out value="${ resultMap.paramVO.pageUnit }"/>';
fn_select_list(pageIndex, pageUnit);
$('#listForm').on('keydown', function(e) {
if (e.keyCode == 13) {
e.preventDefault();
$('#searchBtn').trigger("click");
}
});
});
const fn_select_list = function(pageIndex, pageUnit) {
let dataStr;
if(!pageIndex) {
$('#pageIndex').val(1);
} else {
$('#pageIndex').val(pageIndex);
}
if(!pageUnit) {
dataStr = $('#listForm').serialize();
} else {
if($('#pageUnit').length){
$('#pageUnit').val(pageUnit);
dataStr = $('#listForm').serialize();
} else {
dataStr = $('#listForm').serialize()+'&pageUnit='+pageUnit;
}
}
$('#pageIndex').val(pageIndex);
$.ajax({
type: "post",
url : "<c:url value="/mngr/bnft/selectBnftPushListInqire"/>",
data : dataStr,
success:function(resultHtml) {
$('#pageDiv').html(resultHtml);
$('#pageUnit').niceSelect();
}
});
}
/**
* 등록 폼 이동
*/
const fn_move_regpage = function() {
$('#listForm').attr('action', '<c:url value="/mngr/bnft/selectBnftPushRegistForm"/>');
$('#listForm').attr('method', 'post');
$('#listForm').submit();
};
/**
* 상세 수정 이동
*/
const fn_move_dtl_uptpage = function(bnfPushInfoInnb) {
$('#listForm').attr('action', '<c:url value="/mngr/bnft/selectBnftPushDtlsForm"/>');
$('#listForm').attr('method', 'post');
$('#bnfPushInfoInnb').val(bnfPushInfoInnb);
$('#listForm').submit();
}
</script>
</head>
<body>
<%-- 상단메뉴 공통화 적용 : 2023-11-30 / 박철민 추가 --%>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">알림메세지 목록</h2>
<div class="page-title__btn-container">
<button class="btn primary" id="moveRegist" type="button" onclick="fn_move_regpage(1); return false;">새메세지</button>
</div>
</div>
<form id="listForm" name="listForm" method="post" action="<c:url value="/mngr/bnft/selectBnftListInqireForm"/>">
<input type="hidden" id="bnfPushInfoInnb" name="bnfPushInfoInnb" value=""/>
<input type="hidden" id="sndngAt" name="sndngAt" value=""/>
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value="${ resultMap.paramVO.pageIndex }"/>"/>
<input type="hidden" id="recordCountPerPage" name="recordCountPerPage" value="<c:out value="${ resultMap.paramVO.recordCountPerPage }"/>"/>
<section class="content-section" id="search-section">
<div class="table-wrapper vertical">
<table class="table">
<caption>검색 옵션</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th>기간</th>
<td>
<div class="td-inner">
<div class="select-box mr-5">
<select name="srchPdDv" id="srchPdDv" title="검색">
<option value="sndDt" ${ f:setSelected(resultMap.paramVO.srchPdDv,"sndDt") }>발송일</option>
<option value="regDt" ${ f:setSelected(resultMap.paramVO.srchPdDv,"regDt") }>등록일</option>
</select>
</div>
<div class="input-container">
<input type="text" name="srchStartDt" id="srchStartDt" class="datepicker" title="시작 날짜 선택" value="${ resultMap.paramVO.srchStartDt }" autocomplete="off">
<span class="tilde">~</span>
<input type="text" name="srchEndDt" id="srchEndDt" class="datepicker" title="종료 날짜 선택" value="${ resultMap.paramVO.srchEndDt }" autocomplete="off">
</div>
<div class="dateRange-btnContainer" id="dateRange">
<button class="dateRange-btn">어제</button>
<button class="dateRange-btn">오늘</button>
<button class="dateRange-btn">3일간</button>
<button class="dateRange-btn">일주일</button>
<button class="dateRange-btn">1개월</button>
<button class="dateRange-btn">3개월</button>
<button class="dateRange-btn">6개월</button>
<button class="dateRange-btn">1년</button>
<button class="dateRange-btn selected">전체</button>
</div>
</div>
</td>
</tr>
<tr>
<th>상태</th>
<td>
<div class="td-inner">
<div class="custom-radio-container">
<div class="custom-radio">
<input type="radio" id="srchSttDvA" name="srchSttDv" value="" ${ f:setChecked(resultMap.paramVO.srchSttDv,"") }>
<label for="srchSttDvA">전체</label>
</div>
<div class="custom-radio">
<input type="radio" id="srchSttDvS" name="srchSttDv" value="SEND" ${ f:setChecked(resultMap.paramVO.srchSttDv,"SEND") }>
<label for="srchSttDvS">완료</label>
</div>
<div class="custom-radio">
<input type="radio" id="srchSttDvW" name="srchSttDv" value="WAIT" ${ f:setChecked(resultMap.paramVO.srchSttDv,"WAIT") }>
<label for="srchSttDvW">대기</label>
</div>
</div>
</div>
</td>
</tr>
<tr>
<th>검색어</th>
<td>
<div class="td-inner">
<div class="select-box">
<select name="srchDv" id="srchDv" title="검색">
<option value="pushSj" ${ f:setSelected(resultMap.paramVO.srchDv,"pushSj") }>제목</option>
<option value="pushCn" ${ f:setSelected(resultMap.paramVO.srchDv,"pushCn") }>내용</option>
</select>
</div>
<input class="input-text xl" type="text" name="srchKeyword" id="srchKeyword" title="" value="${ resultMap.paramVO.srchKeyword }" placeholder="">
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="form-control-container">
<div class="left"></div>
<div class="center">
<button class="btn outline" id="resetBtn" type="button" onclick="fn_reset_form('search-section');">초기화</button>
<button class="btn primary" id="searchBtn" type="button" onkeypress="this.onclick();" onclick="fn_select_list(1); return false;">검색</button>
</div>
<div class="right">
<!-- <button class="btn outline search-detail">상세검색</button> -->
</div>
</div>
</section>
<%-- 쿠폰 검색 영역 END --%>
<div id="pageDiv">
</div>
</form>
<%-- 하단 스크롤 완료 시 위로가기 버튼 출력 : 2023-11-30 / 박철민 추가 --%>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
</body>
</html>

View File

@@ -0,0 +1,110 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%--
Class Name : BnftPushListR.jsp
Description : 혜택 알림메세지 목록조회 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-09-23 이훈영 최초 생성
--%>
<%-- 목록 조회 영역 START --%>
<section id="section02" class="content-section">
<div class="form-control-container">
<div class="left">
<div class="search-number">
<span class="search-number__text">총 <strong><c:out value="${ resultMap.paginationInfo.totalRecordCount }"/></strong>건</span>
</div>
</div>
<div class="center">
</div>
<div class="right">
<div class="select-box">
<select id="pageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_list('1');">
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paginationInfo.recordCountPerPage eq pageUnit}">selected="selected"</c:if>><c:out value="${ pageUnit }"/>개씩</option>
</c:forEach>
</select>
</div>
</div>
</div>
<div class="table-wrapper mt-10">
<table class="table vertical">
<caption>테이블</caption>
<colgroup>
<col style="width: 7%;">
<col style="width: 20%;">
<col style="width: 20%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 23%;">
</colgroup>
<thead>
<tr>
<th>No.</th>
<th>제목</th>
<th>발송일시</th>
<th>대상</th>
<th>발송상태</th>
<th>발송건수</th>
<th>등록일/수정일</th>
</thead>
<tbody>
<c:choose>
<c:when test="${ not empty resultMap.resultList && fn:length(resultMap.resultList) > 0 }">
<c:forEach items="${ resultMap.resultList }" var="resultList" varStatus="status">
<tr>
<td>
<span><c:out value="${ resultMap.paginationInfo.totalRecordCount - resultList.rnum + 1 }" /></span>
</td>
<td class="left">
<a href="#" class="under-line blue-8">
<span class="under-line" onclick="fn_move_dtl_uptpage(<c:out value="${ resultList.bnfPushInfoInnb }" />)">
<c:out value="${ resultList.pushSj }"/>
</span>
</a>
</td>
<td>
<span><c:out value="${ resultList.pushSendDt }"/></span>
</td>
<td>
<span><c:out value="${ resultList.bnfPushTrgetDvNm }"/></span>
</td>
<td>
<span><c:out value="${ resultList.sndngSttus }"/></span>
</td>
<td>
<span><c:out value="${ resultList.sndngTrgetCnt }"/></span>
</td>
<td>
<span>
<c:out value="${ resultList.registDt }"/><br>
<c:out value="${ resultList.updtDt }"/>
</span>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="100%" ><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</section>
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_list" />
</div>
<%-- 목록 조회 영역 END --%>

View File

@@ -0,0 +1,144 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : FindCouponPopupR.jsp
Description : 쿠폰찾기팝업 화면 (쿠폰팩발송목록)
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-07-23 이훈영 최초 생성
--%>
<script>
$( document ).ready(function() {
fn_select_coupon_list(1);
$(document).on('click', '[name=rdoCpnList]', function() {
var seq = $(this).data('seq');
$('#findCpnInnb').val($(this).val());
$('#findCpnName').val($('#txtCpn_' + seq).text());
});
$('#popupListForm').on('keydown', function(e) {
if (e.keyCode == 13) {
e.preventDefault();
$('#searchBtn').trigger("click");
}
});
});
/**
* 쿠폰찾기 검색 ajax
*/
function fn_select_coupon_list(pageIndex) {
if(!pageIndex) {
pageIndex = 1;
}
// 모달 쿠폰 검색 form 에 페이지 정보를 넣어줌.
$('#popupListForm').find('input[name=pageIndex]').eq(0).val(pageIndex);
const param = $("#popupListForm").serialize();
// 모달 쿠폰 검색
$.ajax({
type: 'post',
url: '<c:url value="/mngr/bnft/findCouponPopupInquire"/>',
data: param,
success: function(resultHtml) {
$('#pageDiv').html(resultHtml);
$('#pageUnit').niceSelect();
}
});
};
/**
* 쿠폰팝업목록에서 쿠폰선택후 확인시
*/
function fn_set_coupon() {
if(fn_is_empty($('#findCpnInnb').val())) {
alert('쿠폰을 선택하세요.');
return;
} else {
var rwdSeqno = $('#rwdSeqno').val();
if(rwdSeqno !== '') {
$('#couponInnb_' + rwdSeqno).val($('#findCpnInnb').val());
$('#couponName_' + rwdSeqno).val($('#findCpnName').val());
} else {
$('#couponInnb').val($('#findCpnInnb').val());
$('#couponName').val($('#findCpnName').val());
}
fn_close_modal('findCouponPopup');
}
}
</script>
<!-- 쿠폰찾기 모달 -->
<div id="findCouponPopup" class="modal" style="max-width: 760px;">
<div class="modal-header">
<h4>쿠폰찾기</h4>
</div>
<div class="modal-content">
<div class="table-wrapper">
<form id="popupListForm" name="popupListForm">
<input type="hidden" id="findCpnInnb" name="findCpnInnb" value="">
<input type="hidden" id="findCpnName" name="findCpnName" value="">
<input type="hidden" id="pageIndex" name="pageIndex" value="1"/>
<input type="hidden" id="pageUnit" name="pageUnit" value="10"/>
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 20%;">
<col style="width:auto;">
</colgroup>
<tbody>
<tr>
<th>발송유형</th>
<td>
<div class="td-inner">
<div class="b-checkbox-container" id="couponSndngTyDiv">
<label class="b-checkbox checkbox check-all">
<input type="checkbox" value="" >
<span class="check"></span>
<span class="control-label">전체</span>
</label>
<c:forEach var="codeList" items="${ resultMap.couponSndngTyCdList }" varStatus="">
<label class="b-checkbox checkbox">
<input type="checkbox" name="searchCouponSndngTy" value="<c:out value="${ codeList.cd }"/>"
<c:if test="${ resultMap.paramVO.searchCouponSndngTy eq codeList.cd }">checked="checked"</c:if>>
<span class="check"></span>
<span class="control-label"><c:out value="${ codeList.cdNm }"/></span>
</label>
</c:forEach>
</div>
</div>
</td>
</tr>
<tr>
<th>쿠폰(팩) 발송 명</th>
<td>
<div class="td-inner">
<input class="input-text xl wd400" type="text" id="searchCouponPkSndngNm" name="searchCouponPkSndngNm" title="쿠폰발송명" value="<c:out value="${ couponMap.paramVO.searchCouponPkSndngNm }" />" oninput="if (this.value.length > 10) this.value = this.value.slice(0, 50);">
<a href="#" id="searchBtn" class="btn xsm gray" onclick="fn_select_coupon_list(1); return false;">찾기</a>
</div>
</td>
</tr>
</tbody>
</table>
</form>
</div>
<div id="pageDiv" class="table-wrapper">
</div>
</div>
<div class="modal-footer">
<a href="#" class="btn outline" onclick="fn_init_coupon(); return false;">취소</a>
<button class="btn primary" onclick="fn_set_coupon()">확인</button>
</div>
</div>

View File

@@ -0,0 +1,100 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%--
Class Name : FindCouponListR.jsp
Description : 쿠폰찾기팝업 목록조회 화면 (쿠폰팩발송목록)
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-07-23 이훈영 최초 생성
--%>
<%-- 목록 조회 영역 START --%>
<div class="form-control-container">
<div class="left">
<div class="search-number">
<span class="search-number__text">총 <strong><c:out value="${ resultMap.paginationInfo.totalRecordCount }"/></strong>건</span>
</div>
</div>
<div class="center">
</div>
<div class="right">
</div>
</div>
<table class="table vertical mt-15">
<caption>해당 테이블에 대한 설명</caption>
<!-- 각 열 width 설정 -->
<colgroup>
<col style="width: 7%;">
<col style="width: 15%;">
<col style="width: 15%;">
<col style="width: 15%;">
<col style="width: auto;">
<col style="width: 10%;">
</colgroup>
<thead>
<tr>
<th>선택</th>
<th>발송구분</th>
<th>발송유형</th>
<th>발송일시구분</th>
<th>쿠폰(팩) 발송명</th>
<th>사용여부</th>
</tr>
</thead>
<tbody>
<c:choose>
<c:when test="${ not empty resultMap.resultList && fn:length(resultMap.resultList) > 0 }">
<c:forEach items="${ resultMap.resultList }" var="couponList" varStatus="status">
<tr>
<td>
<div class="custom-radio no-text">
<input type="radio" id="rdoCpn_<c:out value="${ status.count }"/>" name="rdoCpnList" data-seq="<c:out value="${ status.count }"/>" value="<c:out value="${ couponList.couponSndngInnb }" />">
<label for="rdoCpn_<c:out value="${ status.count }"/>"></label>
</div>
</td>
<td>
<c:out value="${ couponList.couponSndngDvCdNm }" />
</td>
<td>
<c:out value="${ couponList.couponSndngTyCdNm }" />
</td>
<td>
<c:out value="${ couponList.sndngDtDvCdNm }" />
</td>
<td>
<span id="txtCpn_<c:out value="${ status.count }"/>"><c:out value="${couponList.couponSndngNm}" /></span>
</td>
<td>
<c:choose>
<c:when test="${couponList.couponSndngUseAt eq 'Y'}">
<span class="blue-7 fw-500">사용함</span>
</c:when>
<c:when test="${couponList.couponSndngUseAt eq 'N'}">
<span class="red-7 fw-500">미사용</span>
</c:when>
</c:choose>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="100%" ><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
<br>
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_coupon_list" />
</div>

View File

@@ -0,0 +1,286 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : FindStoreFormPopupR.jsp
Description : 매장찾기팝업 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2025-07-03 이훈영 최초 생성
--%>
<script>
$( document ).ready(function() {
let pageIndex = '<c:out value="${ resultListMap.BOMngrStrVO.pageIndex }"/>';
let pageUnit = '<c:out value="${ resultListMap.BOMngrStrVO.pageUnit }"/>';
fn_select_storeList(pageIndex, pageUnit);
//전체 체크박스 설정
$(".tbChk").on("click",function(){
fn_ctr_pCheckbox("#tbChkAll",".tbChk");
});
$(".sedChk").on("click",function(){
fn_ctr_pCheckbox("#sedChkAll",".sedChk");
});
$(".sodChk").on("click",function(){
fn_ctr_pCheckbox("#sodChkAll",".sodChk");
});
$(".tsChk").on("click",function(){
fn_ctr_pCheckbox("#tsChkAll",".tsChk");
});
$('#storeListForm').on('keydown', function(e) {
if (e.keyCode == 13) {
e.preventDefault();
$('#searchBtn').click();
}
});
// 페이징 제자리 새로고침(Submit) 방지
$('body').on('click', 'button.pagination__item.active', function(event) {
event.preventDefault();
});
$(document).on('click', '[name=rdoStrList]', function() {
var seq = $(this).data('seq');
$('#findStrInnb').val($(this).val());
$('#findStrName').val($('#txtStr_' + seq).text());
});
});
/* ********************************************************
* 인트라넷 쇼핑몰 리스트 조회
******************************************************** */
const fn_select_storeList = function(pageIndex, pageUnit) {
let dataStr;
if(!pageIndex) {
$('#pageIndex').val(1);
} else {
$('#pageIndex').val(pageIndex);
}
if(!pageUnit) {
dataStr = $('#storeListForm').serialize();
} else {
if($('#pageUnit').length){
$('#pageUnit').val(pageUnit);
dataStr = $('#storeListForm').serialize();
} else {
dataStr = $('#storeListForm').serialize()+'&pageUnit='+pageUnit;
}
}
$.ajax({
type: 'post',
url : '/mngr/bnft/findStorePopupInquire',
data : dataStr,
success:function(resultHtml) {
$('#pageDiv').html(resultHtml);
}
});
}
/**
* 매장팝업목록에서 매장선택후 확인시
*/
function fn_set_store() {
if(fn_is_empty($('#findStrInnb').val())) {
alert('매장을 선택하세요.');
return;
} else {
$('#strInnb').val($('#findStrInnb').val());
$('#strName').val($('#findStrName').val());
$('#qrSub').text($('#strInnb').val());
fn_close_modal('findStorePopup');
}
}
</script>
<!-- 매장찾기 모달 -->
<div id="findStorePopup" class="modal" style="max-width: 800px;">
<div class="modal-header">
<h4>매장찾기</h4>
</div>
<div class="modal-content">
<form id="storeListForm" name="storeListForm">
<div class="table-wrapper" id="search-section">
<input type="hidden" id="findStrInnb" name="findCpnInnb" value="">
<input type="hidden" id="findStrName" name="findCpnName" value="">
<input type="hidden" id="pageIndex" name="pageIndex" value="1"/>
<input type="hidden" id="pageUnit" name="pageUnit" value="10"/>
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 10%;">
<col style="width: 23%;">
<col style="width: 10%;">
<col style="width: 23%;">
<col style="width: 10%;">
<col style="width: 23%;">
</colgroup>
<tbody>
<tr style="display:none">
<th>관리법인</th>
<td colspan="5">
<div class="td-inner">
<div class="select-box">
<select class="md" title="관리법인" name="manageCpr">
<option value="" selected>전체</option>
<c:forEach items="${resultListMap.manageCpr}" var="manageCpr">
<option value="<c:out value="${manageCpr.cd}"/>">${manageCpr.cdNm}</option>
</c:forEach>
</select>
</div>
</div>
</td>
</tr>
<tr style="display:none">
<th>대표 브랜드</th>
<td colspan="5">
<div class="td-inner">
<div class="select-box">
<select class="md" title="대표 브랜드" name="reprsntBrand">
<option value="" selected>전체</option>
<c:forEach items="${resultListMap.reprsntBrand}" var="reprsntBrand">
<option value="<c:out value="${reprsntBrand.cd}"/>">${reprsntBrand.cdNm}</option>
</c:forEach>
</select>
</div>
</div>
</td>
</tr>
<tr>
<th>취급 브랜드</th>
<td colspan="5">
<div class="td-inner">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox check-all">
<input type="checkbox" id="tbChkAll" value="">
<span class="check"></span>
<span class="control-label">전체</span>
</label>
<c:forEach items="${resultListMap.trtmntBrand}" var="trtmntBrand">
<label class="b-checkbox checkbox">
<input type="checkbox" class="tbChk" name="trtmntBrand" value="<c:out value="${trtmntBrand.cd}"/>">
<span class="check"></span>
<span class="control-label">${trtmntBrand.cdNm}</span>
</label>
</c:forEach>
</div>
</div>
</td>
</tr>
<tr style="display:none">
<th>매장개설구분</th>
<td colspan="5">
<div class="td-inner">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox check-all">
<input type="checkbox" id="sedChkAll" value="">
<span class="check"></span>
<span class="control-label">전체</span>
</label>
<c:forEach items="${resultListMap.strEstblDvCd}" var="strEstblDvCd">
<label class="b-checkbox checkbox">
<input type="checkbox" class="sedChk" name="strEstblDvCd" value="<c:out value="${strEstblDvCd.cd}"/>">
<span class="check"></span>
<span class="control-label">${strEstblDvCd.cdNm}</span>
</label>
</c:forEach>
</div>
</div>
</td>
</tr>
<tr style="display:none">
<th>매장운영구분</th>
<td colspan="5">
<div class="td-inner">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox check-all">
<input type="checkbox" id="sodChkAll" value="">
<span class="check"></span>
<span class="control-label">전체</span>
</label>
<c:forEach items="${resultListMap.strOperDv}" var="strOperDv">
<label class="b-checkbox checkbox">
<input type="checkbox" class="sodChk" name="strOperDv" value="<c:out value="${strOperDv.cd}"/>">
<span class="check"></span>
<span class="control-label">${strOperDv.cdNm}</span>
</label>
</c:forEach>
</div>
</div>
</td>
</tr>
<tr>
<th>상태</th>
<td colspan="5">
<div class="td-inner">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox check-all">
<input type="checkbox" id="tsChkAll" value="">
<span class="check"></span>
<span class="control-label">전체</span>
</label>
<c:forEach items="${resultListMap.tentSttus}" var="tentSttus">
<label class="b-checkbox checkbox">
<input type="checkbox" class="tsChk" name="tentSttus" value="<c:out value="${tentSttus.cd}"/>">
<span class="check"></span>
<span class="control-label">${tentSttus.cdNm}</span>
</label>
</c:forEach>
</div>
</div>
</td>
</tr>
<tr style="display:none">
<th>포스코드</th>
<td colspan="5">
<div class="td-inner">
<div class="select-box">
<select class="md" title="포스코드-구분값" name="posCdDvVal">
<option value="" selected>전체</option>
<c:forEach items="${resultListMap.posCdDvVal}" var="posCdDvVal">
<option value="<c:out value="${posCdDvVal.cd}"/>">${posCdDvVal.cdNm}(${posCdDvVal.cd})</option>
</c:forEach>
</select>
</div>
+
<input class="input-text sm" type="text" title="포스코드-수동입력값" name="posCdPassivInputVal"
placeholder="일련번호">
</div>
</td>
</tr>
<tr>
<th>매장명</th>
<td colspan="5">
<div class="td-inner">
<input class="input-text md" type="text" title="매장명" name="tentcpnNm" placeholder="매장명">
<a href="#" id="searchBtn" class="btn xsm gray" onclick="fn_select_storeList(1); return false;">검색</a>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="pageDiv" class="table-wrapper">
</div>
</form>
</div>
<div class="modal-footer">
<a href="#" class="btn outline" onclick="fn_init_store(); return false;">취소</a>
<button class="btn primary" onclick="fn_set_store()">확인</button>
</div>
</div>

View File

@@ -0,0 +1,91 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%--
Class Name : FindStoreListR.jsp
Description : 매장찾기팝업 목록조회 화면 (매장팩발송목록)
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-07-23 이훈영 최초 생성
--%>
<%-- 목록 조회 영역 START --%>
<div class="form-control-container">
<div class="left">
<div class="search-number">
<span class="search-number__text">총 <strong><c:out value="${ resultListMap.paginationInfo.totalRecordCount }"/></strong>건</span>
</div>
</div>
<div class="center">
</div>
<div class="right">
</div>
</div>
<table class="table vertical">
<caption>해당 테이블에 대한 설명</caption>
<!-- 각 열 width 설정 -->
<colgroup>
<col style="width: 7%;">
<col style="width: auto;">
<col style="width: auto;">
<col style="width: 7%;">
<col style="width: auto;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 15%;">
</colgroup>
<thead>
<tr>
<th>선택</th>
<th>관리법인/대표브랜드</th>
<th>취급브랜드</th>
<th>매장운영구분</th>
<th>상태</th>
<th>포스코드</th>
<th>ID</th>
<th>매장명</th>
</tr>
</thead>
<tbody>
<c:choose>
<c:when test="${ not empty resultListMap.boCtrlMap}">
<c:forEach items="${ resultListMap.boCtrlMap }" var="list" varStatus="status">
<tr>
<td>
<div class="custom-radio no-text">
<input type="radio" id="rdoStr_<c:out value="${ status.count }"/>" name="rdoStrList" data-seq="<c:out value="${ status.count }"/>" value="<c:out value="${ list.strInnb }" />">
<label for="rdoStr_<c:out value="${ status.count }"/>"></label>
</div>
</td>
<td>${list.manageCpr} / ${list.reprsntBrand}</td>
<td class="trtmntBrand">${list.trtmntBrand}</td>
<td>${list.strOperDv}</td>
<td>${list.tentSttus}<c:if test="${list.tentSttusCd == '02'}">(${list.opbizDe})</c:if><c:if test="${list.tentSttusCd == '03'}">(${list.clstrDe})</c:if></td>
<td>${list.posCdDvVal}${list.posCdPassivInputVal}</td>
<td>${list.tentcpnId}</td>
<td>
<span id="txtStr_<c:out value="${ status.count }"/>"><c:out value="${list.tentcpnNm}" /></span>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="100%"><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
<br>
<div class="pagination__container">
<ui:pagination paginationInfo="${resultListMap.paginationInfo}" type="image" jsFunction="fn_select_storeList" />
</div>

View File

@@ -0,0 +1,643 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : AtendRegistForm.jsp
Description : 출석체크 혜택 등록 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-06-17 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
fn_create_ckeditor('#bnfWordsCn');
//진행기간 from to 체크(현재 날짜 보다 작을 시 alert)
$(document).on('change', '.datepicker', function () {
fn_check_fromTo('#bnfBgnDe', '#bnfEndDe', "date");
});
// 마일리지 숫자입력 체크
$('input[id^="mlgRwdAmt_"]').on('input', function() {
this.value = this.value.replace(/[^0-9]/g, '');
});
var bnfInnb = $('#regForm #bnfInnb').val();
fn_set_detail(bnfInnb);
});
/**
* 수정상세 정보 조회
*/
const fn_set_detail = function(bnfInnb) {
const url = '<c:url value="/mngr/bnft/selectBnftDtlUpdtInqire"/>';
if(bnfInnb){
$.ajax({
type: 'post',
url: url,
data : {
'bnfInnb' : bnfInnb
},
success: function (result) {
const data = JSON.parse(result.resBody.result);
const bnftData = data.bnftData;
const bnftRwdList = data.bnftRwdList;
$('[name=useAt][value=' + bnftData.useAt + ']').prop('checked',true);
$('#bnfBgnDe').val(bnftData.bnfBgnDe);
$('#bnfBgnTme').val(bnftData.bnfBgnTme);
$('#bnfEndDe').val(bnftData.bnfEndDe);
$('#bnfEndTme').val(bnftData.bnfEndTme);
$('#bnfSj').val(bnftData.bnfSj);
$('#scrRwdLinkUrl').val(bnftData.scrRwdLinkUrl);
fn_set_editor_data('#bnfWordsCn', bnftData.bnfWordsCn);
for(var i=0; i < bnftRwdList.length; i++) {
var rwdData = bnftRwdList[i]
var seq = i + 1;
$('#bnfRwdCateDv_' + seq).val(rwdData.bnfRwdCateDvCd);
$('#bnfRwdGodsDv_' + seq).val(rwdData.bnfRwdGodsDvCd);
$('#itmNm_' + seq).val(rwdData.itmNm);
if(seq == 2 || seq == 3) {
$('#couponInnb_' + seq).val(rwdData.couponInnb);
$('#couponName_' + seq).val(rwdData.couponName);
$('#mlgRwdAmt_' + seq).val('');
} else {
$('#couponInnb_' + seq).val('');
$('#mlgRwdAmt_' + seq).val(rwdData.mlgRwdAmt);
}
}
if(!fn_is_empty(bnftData.scrReprsntImg)) {
var imgPath = $('#cdnurl').val() + bnftData.scrReprsntImg;
$('#scrReprsntImgView').find('img').attr('src', imgPath);
$('#scrReprsntImgView').css('display', 'block');
}
if(!fn_is_empty(bnftData.scrRwdImg)) {
var imgPath = $('#cdnurl').val() + bnftData.scrRwdImg;
$('#scrRwdImgView').find('img').attr('src', imgPath);
$('#scrRwdImgView').css('display', 'block');
}
}
});
} else {
$('#bnfBgnTme, #bnfEndTme').val('00:00');
}
}
/**
* 등록
*/
const fn_regist = function() {
var bnfInnb = $('#regForm #bnfInnb').val();
var checked = fn_check_valid(bnfInnb);
if(checked) {
var url = '<c:url value="/mngr/bnft/insertBnftInfo"/>';
var msg1 = '출석체크 혜택을 <spring:message code="confirm.common.insert"/>';
var msg2 = '<spring:message code="success.common.insert"/>';
var msg3 = '<spring:message code="fail.common.insert"/>';
if(bnfInnb) {
url = '<c:url value="/mngr/bnft/updateBnftInfo"/>';
msg1 = '출석체크 혜택을 <spring:message code="confirm.common.update"/>';
msg2 = '<spring:message code="success.common.update"/>';
msg3 = '<spring:message code="fail.common.update"/>';
}
const formData = new FormData();
$('#regForm').serializeArray().forEach(function (item) {
formData.append(item.name, item.value);
});
$(".dropzone").each(function(index) {
var dropzoneID = "#my-dropzone" + (index + 1);
var myDropzone = Dropzone.forElement(dropzoneID);
myDropzone.files.forEach(function(file) {
formData.append('files', file);
});
});
if (confirm(msg1)) {
$.ajax({
type: 'post',
enctype: 'multipart/form-data',
url: url,
data: formData,
contentType: false,
processData: false,
success: function (data) {
let str = JSON.parse(data.resBody.result);
if (str.result == 'success') {
alert(msg2);
//저장 후 수정화면으로 이동
if(fn_is_empty(bnfInnb)) {
fn_move_dtl_uptpage(data.resBody.result.replace(/[^0-9]/g, ""));
} else {
fn_move_dtl_uptpage(bnfInnb);
}
} else {
alert(msg3);
}
}
});
}
}
};
/**
* 입력값 체크
*/
function fn_check_valid(bnfInnb) {
var myDropzone1 = Dropzone.forElement('#my-dropzone1');
var myDropzone2 = Dropzone.forElement('#my-dropzone2');
var scrReprsntImgSrc = $('#scrReprsntImgView').find('img').attr('src');
var scrRwdImgSrc = $('#scrRwdImgView').find('img').attr('src');
if(scrReprsntImgSrc.indexOf('image_placeholder.png') > -1) {
scrReprsntImgSrc = '';
}
if(scrRwdImgSrc.indexOf('image_placeholder.png') > -1) {
scrRwdImgSrc = '';
}
$('#bnfWordsCn').val(fn_get_editor_data('#bnfWordsCn'));
var bgnDe = $('#bnfBgnDe').val();
var bgnTme = $('#bnfBgnTme').val();
var endDe = $('#bnfEndDe').val();
var endTme = $('#bnfEndTme').val();
if(fn_is_empty($('input[name=useAt]:checked').val())) {
alert('사용여부를 선택하세요.');
return false;
} else if(fn_is_empty(bgnDe)) {
alert('진행기간 시작일을 입력하세요.');
return false;
} else if(fn_is_empty(endDe)) {
alert('진행기간 종료일을 입력하세요.');
return false;
} else if (!fn_check_date(bgnDe + ' ' + bgnTme, endDe + ' ' + endTme)) {
alert('진행기간 종료일이 시작일보다 작습니다.');
return false;
} else if(fn_is_empty($('#bnfSj').val())) {
alert('제목을 입력하세요.');
return false;
} else if(fn_is_empty(scrReprsntImgSrc) && myDropzone1.files.length < 1) {
alert('대표이미지를 첨부하세요.');
return false;
} else if(fn_is_empty(scrRwdImgSrc) && myDropzone2.files.length < 1) {
alert('보상이미지를 첨부하세요.');
return false;
} else if(fn_is_empty($('#bnfWordsCn').val())) {
alert('참여방법 안내를 입력하세요.');
return false;
}
// 보상 체크
for (var i = 1; i <= 4; i++) {
var bnfRwdGodsDv = $('#bnfRwdGodsDv_' + i).val();
var mlgRwdAmt = $('#mlgRwdAmt_' + i).val();
var couponInnb = $('#couponInnb_' + i).val();
const strs = ['1일 출석', '누적 10일 출석', '누적 20일 출석', '100% 출석'];
var str = strs[i - 1];
if (bnfRwdGodsDv == '010' && fn_is_empty(mlgRwdAmt)) {
alert(str + ' 보상을 입력하세요.');
return false;
} else if(bnfRwdGodsDv == '020' && fn_is_empty(couponInnb)) {
alert(str + ' 보상을 입력하세요.');
return false;
}
}
// 진행일시 중복 체크
var isValid = false;
$.ajax({
url: '<c:url value="/mngr/bnft/selectBnftDtOvlCnt"/>',
type: 'POST',
data: {
bnfInnb: $('#regForm #bnfInnb').val(),
bnfDvCd: $('#regForm #bnfDvCd').val(),
bnfBgnDt: bgnDe + ' ' + bgnTme + ':01',
bnfEndDt: endDe + ' ' + endTme + ':00'
},
async: false,
success: function(result) {
const data = JSON.parse(result.resBody.result);
let ovlCnt = data.ovlCnt;
if (ovlCnt > 0) {
alert('입력하신 진행기간에 이미 등록된 출석체크 혜택이 있습니다.\n\n확인후 다시 입력하세요.');
isValid = false;
} else {
isValid = true;
}
},
error: function() {
alert('진행일시 중복 체크 중 오류가 발생했습니다.');
isValid = false;
}
});
return isValid;
}
/**
* 목록 이동
*/
function fn_select_list() {
$('#listForm').attr('action', '<c:url value="/mngr/bnft/selectBnftListInqireForm"/>');
$('#listForm').attr('method', 'post');
$('#listForm').submit();
};
/**
* 수정폼 이동
*/
const fn_move_dtl_uptpage = function(Innb) {
const url = '<c:url value="/mngr/bnft/selectBnftDtlUpdtForm"/>';
$('#listForm').attr('action', url);
$('#listForm').attr('method', 'post');
$('#pageIndex').val(1);
$('#listForm #bnfInnb').val(Innb);
$('#listForm').submit();
}
/**
* 수정폼 등록이미지 삭제
*/
function fn_img_delete(tgtId) {
$('#' + tgtId).find('img').attr('src', '');
}
/**
* 쿠폰찾기 모달 오픈
*/
const fn_open_modal_coupon = function(pIdx){
var modalDivSltr = '#modalDiv';
var modalSlrt = '#findCouponPopup';
var modalUrl = '<c:url value="/mngr/bnft/findCouponPopupForm"/>';
var param = '';
$('#rwdSeqno').val(pIdx);
$.ajax({
type: 'post',
url: modalUrl,
data: {
param
},
success: function (data) {
$(modalSlrt).remove();
$(modalDivSltr).html(data);
$(modalSlrt).modal();
}
});
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">출석체크 상세</h2>
<div class="page-title__btn-container">
<a href="#selectCouponListInqire" class="btn outline" onclick="fn_select_list('1'); return false;"><spring:message code="button.list"/></a>
<button class="btn primary" onclick="fn_regist(); return false;" ><spring:message code="button.save"/></button>
</div>
</div>
<div class="content-tab content-tab__fixed">
<a href="#section01" class="content-tab__scroll-btn">기본설정</a>
<a href="#section02" class="content-tab__scroll-btn">보상설정</a>
<a href="#section03" class="content-tab__scroll-btn">화면설정</a>
<a href="#section04" class="content-tab__scroll-btn">참여방법 안내</a>
</div>
<form id="regForm" name="regForm" class="common-form" method="post" action="" enctype="multipart/form-data">
<input type="hidden" id="bnfInnb" name="bnfInnb" value="<c:out value="${ resultMap.paramVO.bnfInnb }"/>"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<input type="hidden" id="rwdSeqno" name="rwdSeqno" value="">
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
<input type="hidden" id="cdnurl" value="${cdnurl}"/>
<section id="section01" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">기본설정</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>기본설정 상세내용</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 88%">
</colgroup>
<tbody>
<tr>
<th>사용여부 <span class="red-7">*</span></th>
<td>
<div class="custom-radio-container">
<div class="custom-radio">
<input type="radio" id="useAtY" name="useAt" value="Y">
<label for="useAtY">사용</label>
</div>
<div class="custom-radio ml-10">
<input type="radio" id="useAtN" name="useAt" value="N">
<label for="useAtN">미사용</label>
</div>
<p class="fyi gray-7 ml-10">‘미사용’ 선택시 사용자 참여 불가능</p>
</div>
</td>
</tr>
<tr>
<th>진행기간<span class="red-7">*</span></th>
<td>
<div class="td-inner">
<input type="text" id="bnfBgnDe" name="bnfBgnDe" class="datepicker" title="시작 날짜 선택" value="" autocomplete="off" readonly>
<div class="timepicker-container">
<input type="text" id="bnfBgnTme" name="bnfBgnTme" class="bs-timepicker" title="시작 시간 설정" value="" readonly>
</div>
<span class="tilde">~</span>
<input type="text" id="bnfEndDe" name="bnfEndDe" class="datepicker" title="종료 날짜 선택" value="" autocomplete="off" readonly>
<div class="timepicker-container">
<input type="text" id="bnfEndTme" name="bnfEndTme" class="bs-timepicker" title="종료 시간 설정" value="" readonly>
</div>
<p class="fyi gray-7 ml-10"> 월 기준 기간설정 필수 </p>
</div>
</td>
</tr>
<tr>
<th>제목(관리용)</th>
<td>
<div class="input-container">
<input type="text" id="bnfSj" name="bnfSj" class="input-text wd580" value="" title="">
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
<section id="section02" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">보상설정</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>보상설정 상세</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 88%">
</colgroup>
<tbody>
<tr>
<th>1일 출석</th>
<td>
<div class="td-inner">
<div class="input-container">
<input type="hidden" id="bnfRwdCateDv_1" name="rwdVO.arrBnfRwdCateDvCd" value="01010"/>
<input type="hidden" id="bnfRwdGodsDv_1" name="rwdVO.arrBnfRwdGodsDvCd" value="010"/>
<input type="hidden" id="couponInnb_1" name="rwdVO.arrCouponInnb" value=""/>
<input type="hidden" id="itmNm_1" name="rwdVO.arrItmNm" value=""/>
<span class="wd100">마일리지</span>
<input type="text" class="input-text sm right" id="mlgRwdAmt_1" name="rwdVO.arrMlgRwdAmt" value="" placeholder="0" title="마일리지">
<span class="ml-4">원</span>
</div>
</div>
</td>
</tr>
<tr>
<th>누적 10일 출석</th>
<td>
<div class="td-inner">
<div class="input-container">
<input type="hidden" id="bnfRwdCateDv_2" name="rwdVO.arrBnfRwdCateDvCd" value="01020"/>
<input type="hidden" id="bnfRwdGodsDv_2" name="rwdVO.arrBnfRwdGodsDvCd" value="020"/>
<input type="hidden" id="mlgRwdAmt_2" name="rwdVO.arrMlgRwdAmt" value=""/>
<input type="hidden" id="itmNm_2" name="rwdVO.arrItmNm" value=""/>
<span class="wd100">쿠폰</span>
<input type="hidden" id="couponInnb_2" name="rwdVO.arrCouponInnb" value="">
<input type="text" class="input-text wd500" id="couponName_2" name="couponName_2" value="" title="쿠폰찾기" readonly>
<a href="#" class="btn xsm gray ml-5" onclick="fn_open_modal_coupon('2'); return false;">찾기</a>
</div>
</div>
</td>
</tr>
<tr>
<th>누적 20일 출석</th>
<td>
<div class="td-inner">
<div class="input-container">
<input type="hidden" id="bnfRwdCateDv_3" name="rwdVO.arrBnfRwdCateDvCd" value="01030"/>
<input type="hidden" id="bnfRwdGodsDv_3" name="rwdVO.arrBnfRwdGodsDvCd" value="020"/>
<input type="hidden" id="mlgRwdAmt_3" name="rwdVO.arrMlgRwdAmt" value=""/>
<input type="hidden" id="itmNm_3" name="rwdVO.arrItmNm" value=""/>
<span class="wd100">쿠폰</span>
<input type="hidden" id="couponInnb_3" name="rwdVO.arrCouponInnb" value="">
<input type="text" class="input-text wd500" id="couponName_3" name="couponName_3" value="" title="쿠폰찾기" readonly>
<a href="#" class="btn xsm gray ml-5" onclick="fn_open_modal_coupon('3'); return false;">찾기</a>
</div>
</div>
</td>
</tr>
<tr>
<th>100% 출석</th>
<td>
<div class="td-inner">
<div class="input-container">
<input type="hidden" id="bnfRwdCateDv_4" name="rwdVO.arrBnfRwdCateDvCd" value="01040"/>
<input type="hidden" id="bnfRwdGodsDv_4" name="rwdVO.arrBnfRwdGodsDvCd" value="010"/>
<input type="hidden" id="couponInnb_4" name="rwdVO.arrCouponInnb" value=""/>
<span class="wd100">마일리지</span>
<input type="text" class="input-text sm right" id="mlgRwdAmt_4" name="rwdVO.arrMlgRwdAmt" value="" placeholder="0" title="마일리지">
<span class="ml-4">원</span>
</div>
</div>
<div class="td-inner mt-10">
<div class="input-container">
<span class="wd100">추가보상</span>
<input type="text" class="input-text wd500" id="itmNm_4" name="rwdVO.arrItmNm" value="" title="구체적인 보상내용 입력">
<p class="fyi gray-7 ml-10"> 구체적인 보상내용 입력 ex. 쿠폰명, 제품명 등</p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
<section id="section03" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">화면 설정</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 88%;">
</colgroup>
<tbody>
<tr>
<th>대표 이미지<br>(상단비주얼)</th>
<td>
<div class="td-inner nowrap">
<div class="dropzone-wrapper">
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.extensions.images')" var="acceptFileExtensions"/>
<div class="dropzone" id="my-dropzone1">
</div>
</div>
<div class="file-preview__container" id="scrReprsntImgView" style="display:none;">
<div class="file-preview">
<span class="file-preview__number">등록한 사진</span>
<button type="button" class="file-preview__delete" onclick="fn_img_delete('scrReprsntImgView'); return false;"><span class="visually-hidden">삭제</span></button>
<div class="file-preview__image wd200">
<img src="" alt="대표 이미지" onerror="this.src='/mngr/images/image_placeholder.png'">
</div>
</div>
</div>
</div>
</td>
</tr>
<tr>
<th>보상 이미지<br>(누적 100% 혜택)</th>
<td>
<div class="td-inner nowrap">
<div class="dropzone-wrapper">
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.extensions.images')" var="acceptFileExtensions"/>
<div class="dropzone" id="my-dropzone2">
</div>
</div>
<div class="file-preview__container" id="scrRwdImgView" style="display:none;">
<div class="file-preview">
<span class="file-preview__number">등록한 사진</span>
<button type="button" class="file-preview__delete" onclick="fn_img_delete('scrRwdImgView'); return false;"><span class="visually-hidden">삭제</span></button>
<div class="file-preview__image wd200">
<img src="" alt="보상 이미지" onerror="this.src='/mngr/images/image_placeholder.png'">
</div>
</div>
</div>
</div>
<div class="td-inner">
<span class="ml-10">이미지링크 [URL] &nbsp;</span>
<input class="input-text lg" type="text" id="scrRwdLinkUrl" name="scrRwdLinkUrl" title="해당 인풋에 대한 설명">
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
<section id="section04" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">참여방법 안내</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 12%;">
<col>
</colgroup>
<tbody>
<tr>
<th>설명</th>
<td>
<div class="form-control-container mb-5">
<div class="left"> &nbsp; </div>
<div class="center"> &nbsp; </div>
<div class="right">
<!--<button class="btn xsm light-gray"> 이전내용 불러오기 </button>-->
</div>
</div>
<div class="td-inner">
<textarea class="textarea" id="bnfWordsCn" name="bnfWordsCn" title="" cols="30" rows="2"></textarea>
</div>
</td>
</tr>
</tbody>
</table>
<div class="form-control-container mt-10">
<div class="left">
<p class="fyi gray-7">참여 방법, 경품, 당첨자 발표 방식, 관련 법규 등 이벤트에 대해 사용자에게 인내할 내용을 적어주세요.</p>
</div>
<div class="center">
</div>
<!-- <div class="right">
<button class="btn outline mr-10"> 삭제 </button>
</div> -->
</div>
</div>
</div>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
<!-- 쿠폰찾기팝업 -->
<div id="modalDiv">
</div>
<form id="listForm" name="listForm">
<input type="hidden" id="bnfInnb" name ="bnfInnb"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="srchPdDv" name="srchPdDv" value="${ resultMap.paramVO.srchPdDv }">
<input type="hidden" id="srchStartDt" name="srchStartDt" value="${ resultMap.paramVO.srchStartDt }">
<input type="hidden" id="srchEndDt" name="srchEndDt" value="${ resultMap.paramVO.srchEndDt }">
<input type="hidden" id="srchSttDv" name="srchSttDv" value="${ resultMap.paramVO.srchSttDv }"/>
<input type="hidden" id="srchUseAt" name="srchUseAt" value="${ resultMap.paramVO.srchUseAt }"/>
<input type="hidden" id="srchDv" name="srchDv" value="${ resultMap.paramVO.srchDv }"/>
<input type="hidden" id="srchKeyword" name="srchKeyword" value="${ resultMap.paramVO.srchKeyword }"/>
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultMap.paramVO.pageIndex }"/>
<input type="hidden" id="recordCountPerPage" name="recordCountPerPage" value="${ resultMap.paramVO.recordCountPerPage }"/>
<input type="hidden" id="pageUnit" name="pageUnit" value="${ resultMap.paramVO.pageUnit }"/>
</form>
</body>
</html>

View File

@@ -0,0 +1,439 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : ConrevRegistForm.jsp
Description : 베스트리뷰 혜택 등록 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-08-12 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
fn_set_datepicker('.datepicker');
//진행기간 from to 체크(현재 날짜 보다 작을 시 alert)
$(document).on('change', '.datepicker', function () {
fn_check_fromTo('#bnfBgnDe', '#bnfEndDe', "date");
});
// 마일리지, 할인율, 할인금액 숫자입력 체크
$('input[id^="mlgRwdAmt_"], #tmeSecnd').on('input', function() {
this.value = this.value.replace(/[^0-9]/g, '');
});
var bnfInnb = $('#regForm #bnfInnb').val();
fn_set_detail(bnfInnb);
});
/**
* 수정상세 정보 조회
*/
const fn_set_detail = function(bnfInnb) {
const url = '<c:url value="/mngr/bnft/selectBnftDtlUpdtInqire"/>';
if(bnfInnb){
$.ajax({
type: 'post',
url: url,
data : {
'bnfInnb' : bnfInnb
},
success: function (result) {
const data = JSON.parse(result.resBody.result);
const bnftData = data.bnftData;
const bnftRwdList = data.bnftRwdList;
$('[name=useAt][value=' + bnftData.useAt + ']').prop('checked',true);
$('#bnfBgnDe').val(bnftData.bnfBgnDe);
$('#bnfBgnTme').val(bnftData.bnfBgnTme);
$('#bnfEndDe').val(bnftData.bnfEndDe);
$('#bnfEndTme').val(bnftData.bnfEndTme);
$('#cnSj').val(bnftData.cnSj);
$('#linkUrl').val(bnftData.linkUrl);
$('#mbrNm').val(bnftData.mbrNm);
$('#wordsCn').val(bnftData.wordsCn);
$('#tmeSecnd').val(bnftData.tmeSecnd);
for(var i=0; i < bnftRwdList.length; i++) {
var rwdData = bnftRwdList[i]
$('#mlgRwdAmt_1').val(rwdData.mlgRwdAmt);
}
if(!fn_is_empty(bnftData.imgFilCours)) {
var imgPath = $('#cdnurl').val() + bnftData.imgFilCours;
$('#cnImgView').find('img').attr('src', imgPath);
$('#cnImgView').css('display', 'block');
}
}
});
} else {
$('#bnfBgnTme, #bnfEndTme').val('00:00');
}
}
/**
* 등록
*/
const fn_regist = function() {
var bnfInnb = $('#regForm #bnfInnb').val();
var checked = fn_check_valid(bnfInnb);
if(checked) {
var url = '<c:url value="/mngr/bnft/insertBnftInfo"/>';
var msg1 = '베스트리뷰 혜택을 <spring:message code="confirm.common.insert"/>';
var msg2 = '<spring:message code="success.common.insert"/>';
var msg3 = '<spring:message code="fail.common.insert"/>';
if(bnfInnb) {
url = '<c:url value="/mngr/bnft/updateBnftInfo"/>';
msg1 = '베스트리뷰 혜택을 <spring:message code="confirm.common.update"/>';
msg2 = '<spring:message code="success.common.insert"/>';
msg3 = '<spring:message code="fail.common.update"/>';
}
const formData = new FormData();
$('#regForm').serializeArray().forEach(function (item) {
formData.append(item.name, item.value);
});
$(".dropzone").each(function(index) {
var dropzoneID = "#my-dropzone" + (index + 1);
var myDropzone = Dropzone.forElement(dropzoneID);
myDropzone.files.forEach(function(file) {
formData.append('cnFiles', file);
});
});
if (confirm(msg1)) {
$.ajax({
type: 'post',
enctype: 'multipart/form-data',
url: url,
data: formData,
contentType: false,
processData: false,
success: function (data) {
var str = JSON.parse(data.resBody.result);
if (str.result == 'success') {
alert(msg2);
//저장 후 수정화면으로 이동
if(fn_is_empty(bnfInnb)) {
fn_move_dtl_uptpage(data.resBody.result.replace(/[^0-9]/g, ""));
} else {
fn_move_dtl_uptpage(bnfInnb);
}
} else {
alert(msg3);
}
}
});
}
}
};
/**
* 입력값 체크
*/
function fn_check_valid(bnfInnb) {
var myDropzone1 = Dropzone.forElement('#my-dropzone1');
var cnImgSrc = $('#cnImgView').find('img').attr('src');
if(cnImgSrc.indexOf('image_placeholder.png') > -1) {
cnImgSrc = '';
}
var bgnDe = $('#bnfBgnDe').val();
var bgnTme = $('#bnfBgnTme').val();
var endDe = $('#bnfEndDe').val();
var endTme = $('#bnfEndTme').val();
if(fn_is_empty($('input[name=useAt]:checked').val())) {
alert('사용여부를 선택하세요.');
return false;
} else if(fn_is_empty(bgnDe)) {
alert('진행기간 시작일을 입력하세요.');
return false;
} else if(fn_is_empty(endDe)) {
alert('진행기간 종료일을 입력하세요.');
return false;
} else if(!fn_check_date(bgnDe, endDe)) {
alert('진행기간 종료일이 시작일보다 작습니다.');
return false;
} else if (!fn_check_date(bgnDe + ' ' + bgnTme, endDe + ' ' + endTme)) {
alert('진행기간 종료일이 시작일보다 작습니다.');
return false;
} else if(fn_is_empty($('#cnSj').val())) {
alert('상품명을 입력하세요.');
return false;
} else if(fn_is_empty(cnImgSrc) && myDropzone1.files.length < 1) {
alert('상품이미지를 첨부하세요.');
return false;
} else if(fn_is_empty($('#linkUrl').val())) {
alert('구매링크을 입력하세요.');
return false;
} else if(fn_is_empty($('#mbrNm').val())) {
alert('작성자를 입력하세요.');
return false;
} else if(fn_is_empty($('#wordsCn').val())) {
alert('리뷰내용을 입력하세요.');
return false;
} else if (fn_is_empty($('#mlgRwdAmt_1').val())) {
alert('보상 마일리지를 입력하세요.');
return false;
} else if(fn_is_empty($('#tmeSecnd').val())) {
alert('필수열람시간을 입력하세요.');
return false;
}
$('#bnfSj').val($('#cnSj').val());
return true;
}
/**
* 목록 이동
*/
function fn_select_list() {
$('#listForm').attr('action', '<c:url value="/mngr/bnft/selectBnftListInqireForm"/>');
$('#listForm').attr('method', 'post');
$('#listForm').submit();
};
/**
* 수정폼 이동
*/
const fn_move_dtl_uptpage = function(Innb) {
const url = '<c:url value="/mngr/bnft/selectBnftDtlUpdtForm"/>';
$('#listForm').attr('action', url);
$('#listForm').attr('method', 'post');
$('#pageIndex').val(1);
$('#listForm #bnfInnb').val(Innb);
$('#listForm').submit();
}
/**
* 수정폼 등록이미지 삭제
*/
function fn_img_delete(tgtId) {
$('#' + tgtId).find('img').attr('src', '');
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">베스트리뷰 상세</h2>
<div class="page-title__btn-container">
<a href="#selectCouponListInqire" class="btn outline" onclick="fn_select_list('1'); return false;"><spring:message code="button.list"/></a>
<button class="btn primary" onclick="fn_regist(); return false;" ><spring:message code="button.save"/></button>
</div>
</div>
<form id="regForm" name="regForm" class="common-form" method="post" action="" enctype="multipart/form-data">
<input type="hidden" id="bnfInnb" name="bnfInnb" value="<c:out value="${ resultMap.paramVO.bnfInnb }"/>"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<input type="hidden" id="bnfSj" name="bnfSj" value="">
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
<input type="hidden" id="cdnurl" value="${cdnurl}"/>
<section id="section01" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">기본설정</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>기본설정 상세내용</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 88%">
</colgroup>
<tbody>
<tr>
<th>사용여부 <span class="red-7">*</span></th>
<td>
<div class="custom-radio-container">
<div class="custom-radio">
<input type="radio" id="useAtY" name="useAt" value="Y">
<label for="useAtY">사용</label>
</div>
<div class="custom-radio ml-10">
<input type="radio" id="useAtN" name="useAt" value="N">
<label for="useAtN">미사용</label>
</div>
<p class="fyi gray-7 ml-10">‘미사용’ 선택시 사용자 참여 불가능</p>
</div>
</td>
</tr>
<tr>
<th>진행기간<span class="red-7">*</span></th>
<td>
<div class="td-inner">
<input type="text" id="bnfBgnDe" name="bnfBgnDe" class="datepicker" title="시작 날짜 선택" value="" autocomplete="off" readonly>
<div class="timepicker-container">
<input type="text" id="bnfBgnTme" name="bnfBgnTme" class="bs-timepicker" title="시작 시간 설정" value="" readonly>
</div>
<span class="tilde">~</span>
<input type="text" id="bnfEndDe" name="bnfEndDe" class="datepicker" title="종료 날짜 선택" value="" autocomplete="off" readonly>
<div class="timepicker-container">
<input type="text" id="bnfEndTme" name="bnfEndTme" class="bs-timepicker" title="종료 시간 설정" value="" readonly>
</div>
<p class="fyi gray-7 ml-10"></p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
<section id="section02" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">내용설정</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>목록</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 88%">
</colgroup>
<tbody>
<tr>
<th>상품명</th>
<td>
<div class="input-container">
<input type="text" class="input-text wd580" id="cnSj" name="cnSj" value="">
<p class="gray-7 ml-10"> 최대50자</p>
</div>
</td>
</tr>
<tr>
<th>상품이미지</th>
<td>
<div class="td-inner nowrap">
<div class="dropzone-wrapper">
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.extensions.images')" var="acceptFileExtensions"/>
<div class="dropzone" id="my-dropzone1">
</div>
</div>
<div class="file-preview__container" id="cnImgView" style="display:none;">
<div class="file-preview">
<span class="file-preview__number">등록한 사진</span>
<button class="file-preview__delete" onclick="fn_img_delete('cnImgView'); return false;"><span class="visually-hidden">삭제</span></button>
<div class="file-preview__image wd200">
<img src="" alt="로고" onerror="this.src='/mngr/images/image_placeholder.png'">
</div>
</div>
</div>
</div>
</td>
</tr>
<tr>
<th>구매링크</th>
<td>
<div class="td-inner">
<input type="text" class="input-text wd580" id="linkUrl" name="linkUrl" value="" title="">
</div>
<p class="gray-7 mt-10">ex) https://nutricore.co.kr/board/view?id=Event_board&seq=33142</p>
</td>
</tr>
<tr>
<th>작성자</th>
<td>
<div class="td-inner">
<input type="text" class="input-text wd200" id="mbrNm" name="mbrNm" title="" autocomplete="off">
<p class="fyi gray-7 ml-10">ex) labo******</p>
</div>
</td>
</tr>
<tr>
<th>리뷰내용</th>
<td>
<div class="td-inner">
<textarea class="textarea" title="에디터 입력" id="wordsCn" name="wordsCn" cols="30" rows="10"></textarea>
</div>
</td>
</tr>
<tr>
<th>보상</th>
<td>
<div class="input-container">
<input type="hidden" id="bnfRwdCateDv_1" name="rwdVO.arrBnfRwdCateDvCd" value="09010"/>
<input type="hidden" id="bnfRwdGodsDv_1" name="rwdVO.arrBnfRwdGodsDvCd" value="010"/>
<span class="mr-20">마일리지</span>
<input type="text" class="input-text wd100" id="mlgRwdAmt_1" name="rwdVO.arrMlgRwdAmt" value="" placeholder="0">
<p class="gray-7 ml-10">원</p>
</div>
</td>
</tr>
<tr>
<th>필수열람시간(초)</th>
<td>
<div class="td-inner">
<div class="input-container">
<input type="text" class="input-text wd100" id="tmeSecnd" name="tmeSecnd" value="" placeholder="0">
<p class="gray-7 ml-10"> 초 화면보기 후 보상지급</p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
<form id="listForm" name="listForm">
<input type="hidden" id="bnfInnb" name ="bnfInnb"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="srchPdDv" name="srchPdDv" value="${ resultMap.paramVO.srchPdDv }">
<input type="hidden" id="srchStartDt" name="srchStartDt" value="${ resultMap.paramVO.srchStartDt }">
<input type="hidden" id="srchEndDt" name="srchEndDt" value="${ resultMap.paramVO.srchEndDt }">
<input type="hidden" id="srchSttDv" name="srchSttDv" value="${ resultMap.paramVO.srchSttDv }"/>
<input type="hidden" id="srchUseAt" name="srchUseAt" value="${ resultMap.paramVO.srchUseAt }"/>
<input type="hidden" id="srchDv" name="srchDv" value="${ resultMap.paramVO.srchDv }"/>
<input type="hidden" id="srchKeyword" name="srchKeyword" value="${ resultMap.paramVO.srchKeyword }"/>
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultMap.paramVO.pageIndex }"/>
<input type="hidden" id="recordCountPerPage" name="recordCountPerPage" value="${ resultMap.paramVO.recordCountPerPage }"/>
<input type="hidden" id="pageUnit" name="pageUnit" value="${ resultMap.paramVO.pageUnit }"/>
</form>
</body>
</html>

View File

@@ -0,0 +1,694 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : CpslLeafRegistForm.jsp
Description : 캡슐만들기 초록잎설정 등록 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-09-02 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
if('<c:out value="${ resultMap.paramVO.sopmalCd }"/>' === 'DT') {
$('[id^="sopmalGbn_"]').text('도토리');
}
// 초록잎 기본, 스페셜 숫자입력 체크
$('input[id^="pymntCnt_"], input[id^="specialCnt_"]').on('input', function() {
this.value = this.value.replace(/[^0-9]/g, '');
});
fn_set_detail();
});
/**
* 수정상세 정보 조회
*/
const fn_set_detail = function() {
const url = '<c:url value="/mngr/bnft/selectBnftCpslLeafListInqire"/>';
$.ajax({
type: 'post',
url: url,
data : {},
success: function (result) {
const data = JSON.parse(result.resBody.result);
const bnftCpslLeafList = data.bnftCpslLeafList;
for(var i=0; i < bnftCpslLeafList.length; i++) {
var leafData = bnftCpslLeafList[i];
var bnfDv = leafData.bnfDvCd;
$('#pymntCnt_' + bnfDv).val(leafData.pymntCnt);
$('#specialCnt_' + bnfDv).val(leafData.specialCnt);
if(leafData.indictAt === 'Y') {
$('#indictAtChk_' + bnfDv).prop('checked',true);
}
if(leafData.specialAt === 'Y') {
$('#specialAtChk_' + bnfDv).prop('checked',true);
}
}
}
});
}
/**
* 등록
*/
const fn_regist = function() {
var checked = fn_check_valid();
if(checked) {
var url = '<c:url value="/mngr/bnft/insupdBnftCpslLeaf"/>';
var msg1 = '초록잎설정 혜택을 <spring:message code="confirm.common.insert"/>';
var msg2 = '<spring:message code="success.common.insert"/>';
var msg3 = '<spring:message code="fail.common.insert"/>';
const formData = new FormData();
$('#regForm').serializeArray().forEach(function (item) {
formData.append(item.name, item.value);
});
if (confirm(msg1)) {
$.ajax({
type: 'post',
enctype: 'multipart/form-data',
url: url,
data: formData,
contentType: false,
processData: false,
success: function (data) {
var str = JSON.parse(data.resBody.result);
if (str.result == 'success') {
alert(msg2);
//저장 후 수정화면으로 이동
fn_move_dtl_uptpage();
} else {
alert(msg3);
}
}
});
}
}
};
/**
* 입력값 체크
*/
function fn_check_valid() {
for(var i=0; i<$('input[id^="bnfDvCd_"]').length; i++) {
var currId = $('input[id^="bnfDvCd_"]').eq(i).attr('id');
var bnfDv = $('#' + currId).val();
var bnfDvNm = $('#bnfDvNm_' + bnfDv).text();
var pymntCnt = $('#pymntCnt_' + bnfDv).val();
var specialCnt = $('#specialCnt_' + bnfDv).val();
var indictAtChk = $('#indictAtChk_' + bnfDv).is(':checked');
var specialAtChk = $('#specialAtChk_' + bnfDv).is(':checked');
if(fn_is_empty(pymntCnt) && indictAtChk) {
alert(bnfDvNm + '의 초록잎 기본 지급개수를 입력하세요.');
return false;
}
if(fn_is_empty(specialCnt) && specialAtChk && indictAtChk) {
alert(bnfDvNm + '의 초록잎 스페셜 지급개수를 입력하세요.');
return false;
}
if(indictAtChk) {
$('#indictAt_' + bnfDv).val('Y');
} else {
$('#indictAt_' + bnfDv).val('N');
}
if(specialAtChk) {
$('#specialAt_' + bnfDv).val('Y');
} else {
$('#specialAt_' + bnfDv).val('N');
}
}
return true;
}
/**
* 수정폼 이동
*/
const fn_move_dtl_uptpage = function() {
const url = '<c:url value="/mngr/bnft/selectBnftCpslLeafRegistForm"/>';
$('#listForm').attr('action', url);
$('#listForm').attr('method', 'post');
$('#listForm').submit();
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title"><span id="sopmalGbn_1">초록잎</span> 설정</h2>
<div class="page-title__btn-container">
<button class="btn primary" onclick="fn_regist(); return false;" ><spring:message code="button.save"/></button>
</div>
</div>
<form id="regForm" name="regForm" class="common-form" method="post" action="" enctype="multipart/form-data">
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<section id="section01" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">이벤트 참여</h3>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table vertical">
<caption>이벤트 참여 상세내용</caption>
<colgroup>
<col style="width: 25%;">
<col style="width: 35%;">
<col style="width: 15%;">
<col style="width: 25%;">
</colgroup>
<thead>
<tr>
<th rowspan="2">이벤트명 (활성시 체크)</th>
<th rowspan="2">조건</th>
<th colspan="2"><span id="sopmalGbn_2">초록잎</span> 지급</th>
</tr>
<tr>
<th>기본</th>
<th>오늘의 스페셜 (사용시 체크)</th>
</tr>
</thead>
<tbody>
<tr>
<th>
<div class="td-inner">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox wd70">
<input type="checkbox" id="indictAtChk_010" value="Y">
<span class="check"></span>
<span class="control-label" id="bnfDvNm_010">출석체크</span>
<input type="hidden" id="bnfDvCd_010" name="arrBnfDvCd" value="010">
<input type="hidden" id="specialAt_010" name="arrSpecialAt" value="">
<input type="hidden" id="indictAt_010" name="arrIndictAt" value="">
</label>
</div>
</div>
</th>
<td class="alignL">매일 출석체크 완료시</td>
<td>
<div class="input-container">
<input type="text" class="input-text wd90 alignR" id="pymntCnt_010" name="arrPymntCnt" value="" placeholder="0">
<p class="ml-10"> 개</p>
</div>
</td>
<td>
<div class="td-inner td-inner wd200 center">
<div class="input-container">
<input type="text" class="input-text wd90 alignR" id="specialCnt_010" name="arrSpecialCnt" value="" placeholder="0">
<p class="ml-10"> 개</p>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox wd70">
<input type="checkbox" id="specialAtChk_010" value="Y">
<span class="check"></span>
</label>
</div>
</div>
</td>
</tr>
<tr>
<th>
<div class="td-inner">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox wd70">
<input type="checkbox" id="indictAtChk_020" value="Y">
<span class="check"></span>
<span class="control-label" id="bnfDvNm_020">만보기</span>
<input type="hidden" id="bnfDvCd_020" name="arrBnfDvCd" value="020">
<input type="hidden" id="specialAt_020" name="arrSpecialAt" value="">
<input type="hidden" id="indictAt_020" name="arrIndictAt" value="">
</label>
</div>
</div>
</th>
<td class="alignL">매일 만보 달성시</td>
<td>
<div class="input-container">
<input type="text" class="input-text wd90 alignR" id="pymntCnt_020" name="arrPymntCnt" value="" placeholder="0">
<p class="ml-10"> 개</p>
</div>
</td>
<td>
<div class="td-inner td-inner wd200 center">
<div class="input-container">
<input type="text" class="input-text wd90 alignR" id="specialCnt_020" name="arrSpecialCnt" value="" placeholder="0">
<p class="ml-10"> 개</p>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox wd70">
<input type="checkbox" id="specialAtChk_020" value="Y">
<span class="check"></span>
</label>
</div>
</div>
</td>
</tr>
<tr>
<th>
<div class="td-inner">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox wd70">
<input type="checkbox" id="indictAtChk_030" value="Y">
<span class="check"></span>
<span class="control-label" id="bnfDvNm_030">행운복권</span>
<input type="hidden" id="bnfDvCd_030" name="arrBnfDvCd" value="030">
<input type="hidden" id="specialAt_030" name="arrSpecialAt" value="">
<input type="hidden" id="indictAt_030" name="arrIndictAt" value="">
</label>
</div>
</div>
</th>
<td class="alignL">매일 긁기만 해도</td>
<td>
<div class="input-container">
<input type="text" class="input-text wd90 alignR" id="pymntCnt_030" name="arrPymntCnt" value="" placeholder="0">
<p class="ml-10"> 개</p>
</div>
</td>
<td>
<div class="td-inner td-inner wd200 center">
<div class="input-container">
<input type="text" class="input-text wd90 alignR" id="specialCnt_030" name="arrSpecialCnt" value="" placeholder="0">
<p class="ml-10"> 개</p>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox wd70">
<input type="checkbox" id="specialAtChk_030" value="Y">
<span class="check"></span>
</label>
</div>
</div>
</td>
</tr>
<tr>
<th>
<div class="td-inner">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox wd70">
<input type="checkbox" id="indictAtChk_040" value="Y">
<span class="check"></span>
<span class="control-label" id="bnfDvNm_040">룰렛게임</span>
<input type="hidden" id="bnfDvCd_040" name="arrBnfDvCd" value="040">
<input type="hidden" id="specialAt_040" name="arrSpecialAt" value="">
<input type="hidden" id="indictAt_040" name="arrIndictAt" value="">
</label>
</div>
</div>
</th>
<td class="alignL">룰렛 돌릴때마다</td>
<td>
<div class="input-container">
<input type="text" class="input-text wd90 alignR" id="pymntCnt_040" name="arrPymntCnt" value="" placeholder="0">
<p class="ml-10"> 개</p>
</div>
</td>
<td>
<div class="td-inner td-inner wd200 center">
<div class="input-container">
<input type="text" class="input-text wd90 alignR" id="specialCnt_040" name="arrSpecialCnt" value="" placeholder="0">
<p class="ml-10"> 개</p>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox wd70">
<input type="checkbox" id="specialAtChk_040" value="Y">
<span class="check"></span>
</label>
</div>
</div>
</td>
</tr>
<tr>
<th>
<div class="td-inner">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox wd70">
<input type="checkbox" id="indictAtChk_060" value="Y">
<span class="check"></span>
<span class="control-label" id="bnfDvNm_060">이벤트보기</span>
<input type="hidden" id="bnfDvCd_060" name="arrBnfDvCd" value="060">
<input type="hidden" id="specialAt_060" name="arrSpecialAt" value="">
<input type="hidden" id="indictAt_060" name="arrIndictAt" value="">
</label>
</div>
</div>
</th>
<td class="alignL">이벤트보기 참여시</td>
<td>
<div class="input-container">
<input type="text" class="input-text wd90 alignR" id="pymntCnt_060" name="arrPymntCnt" value="" placeholder="0">
<p class="ml-10"> 개</p>
</div>
</td>
<td>
<div class="td-inner td-inner wd200 center">
<div class="input-container">
<input type="text" class="input-text wd90 alignR" id="specialCnt_060" name="arrSpecialCnt" value="" placeholder="0">
<p class="ml-10"> 개</p>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox wd70">
<input type="checkbox" id="specialAtChk_060" value="Y">
<span class="check"></span>
</label>
</div>
</div>
</td>
</tr>
<tr>
<th>
<div class="td-inner">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox wd70">
<input type="checkbox" id="indictAtChk_070" value="Y">
<span class="check"></span>
<span class="control-label" id="bnfDvNm_070">라이브쇼핑참여</span>
<input type="hidden" id="bnfDvCd_070" name="arrBnfDvCd" value="070">
<input type="hidden" id="specialAt_070" name="arrSpecialAt" value="">
<input type="hidden" id="indictAt_070" name="arrIndictAt" value="">
</label>
</div>
</div>
</th>
<td class="alignL">라이브쇼핑 참여시</td>
<td>
<div class="input-container">
<input type="text" class="input-text wd90 alignR" id="pymntCnt_070" name="arrPymntCnt" value="" placeholder="0">
<p class="ml-10"> 개</p>
</div>
</td>
<td>
<div class="td-inner td-inner wd200 center">
<div class="input-container">
<input type="text" class="input-text wd90 alignR" id="specialCnt_070" name="arrSpecialCnt" value="" placeholder="0">
<p class="ml-10"> 개</p>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox wd70">
<input type="checkbox" id="specialAtChk_070" value="Y">
<span class="check"></span>
</label>
</div>
</div>
</td>
</tr>
<!--
<tr>
<th>
<div class="td-inner">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox wd70">
<input type="checkbox" id="indictAtChk_080" value="Y">
<span class="check"></span>
<span class="control-label" id="bnfDvNm_080">할인소식공유</span>
<input type="hidden" id="bnfDvCd_080" name="arrBnfDvCd" value="080">
<input type="hidden" id="specialAt_080" name="arrSpecialAt" value="">
<input type="hidden" id="indictAt_080" name="arrIndictAt" value="">
</label>
</div>
</div>
</th>
<td class="alignL">공유링크 구매확정 발생시</td>
<td>
<div class="input-container">
<input type="text" class="input-text wd90 alignR" id="pymntCnt_080" name="arrPymntCnt" value="" placeholder="0">
<p class="ml-10"> 개</p>
</div>
</td>
<td>
<div class="td-inner td-inner wd200 center">
<div class="input-container">
<input type="text" class="input-text wd90 alignR" id="specialCnt_080" name="arrSpecialCnt" value="" placeholder="0">
<p class="ml-10"> 개</p>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox wd70">
<input type="checkbox" id="specialAtChk_080" value="Y">
<span class="check"></span>
</label>
</div>
</div>
</td>
</tr>
-->
<tr>
<th>
<div class="td-inner">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox wd70">
<input type="checkbox" id="indictAtChk_090" value="Y">
<span class="check"></span>
<span class="control-label" id="bnfDvNm_090">베스트리뷰보기</span>
<input type="hidden" id="bnfDvCd_090" name="arrBnfDvCd" value="090">
<input type="hidden" id="specialAt_090" name="arrSpecialAt" value="">
<input type="hidden" id="indictAt_090" name="arrIndictAt" value="">
</label>
</div>
</div>
</th>
<td class="alignL">베스트리뷰보기 참여시</td>
<td>
<div class="input-container">
<input type="text" class="input-text wd90 alignR" id="pymntCnt_090" name="arrPymntCnt" value="" placeholder="0">
<p class="ml-10"> 개</p>
</div>
</td>
<td>
<div class="td-inner td-inner wd200 center">
<div class="input-container">
<input type="text" class="input-text wd90 alignR" id="specialCnt_090" name="arrSpecialCnt" value="" placeholder="0">
<p class="ml-10"> 개</p>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox wd70">
<input type="checkbox" id="specialAtChk_090" value="Y">
<span class="check"></span>
</label>
</div>
</div>
</td>
</tr>
<tr>
<th>
<div class="td-inner">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox wd70">
<input type="checkbox" id="indictAtChk_100" name="arrIndictAt" value="Y">
<span class="check"></span>
<span class="control-label" id="bnfDvNm_100">섭취챌린지</span>
<input type="hidden" id="bnfDvCd_100" name="arrBnfDvCd" value="100">
<input type="hidden" id="specialAt_100" name="arrSpecialAt" value="">
<input type="hidden" id="indictAt_100" name="arrIndictAt" value="">
</label>
</div>
</div>
</th>
<td class="alignL">매일 섭취챌린지 성공시</td>
<td>
<div class="input-container">
<input type="text" class="input-text wd90 alignR" id="pymntCnt_100" name="arrPymntCnt" value="" placeholder="0">
<p class="ml-10"> 개</p>
</div>
</td>
<td>
<div class="td-inner td-inner wd200 center">
<div class="input-container">
<input type="text" class="input-text wd90 alignR" id="specialCnt_100" name="arrSpecialCnt" value="" placeholder="0">
<p class="ml-10"> 개</p>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox wd70">
<input type="checkbox" id="specialAtChk_100" value="Y">
<span class="check"></span>
</label>
</div>
</div>
</td>
</tr>
<tr>
<th>
<div class="td-inner">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox wd70">
<input type="checkbox" id="indictAtChk_120" value="Y">
<span class="check"></span>
<span class="control-label" id="bnfDvNm_120">관심분야설정</span>
<input type="hidden" id="bnfDvCd_120" name="arrBnfDvCd" value="120">
<input type="hidden" id="specialAt_120" name="arrSpecialAt" value="">
<input type="hidden" id="indictAt_120" name="arrIndictAt" value="">
</label>
</div>
</div>
</th>
<td class="alignL">매월 관심분야 설정시</td>
<td>
<div class="input-container">
<input type="text" class="input-text wd90 alignR" id="pymntCnt_120" name="arrPymntCnt" value="" placeholder="0">
<p class="ml-10"> 개</p>
</div>
</td>
<td>
<div class="td-inner td-inner wd200 center">
<div class="input-container">
<input type="text" class="input-text wd90 alignR" id="specialCnt_120" name="arrSpecialCnt" value="" placeholder="0">
<p class="ml-10"> 개</p>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox wd70">
<input type="checkbox" id="specialAtChk_120" value="Y">
<span class="check"></span>
</label>
</div>
</div>
</td>
</tr>
<tr>
<th>
<div class="td-inner">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox wd70">
<input type="checkbox" id="indictAtChk_130" value="Y">
<span class="check"></span>
<span class="control-label" id="bnfDvNm_130">도전OX퀴즈</span>
<input type="hidden" id="bnfDvCd_130" name="arrBnfDvCd" value="130">
<input type="hidden" id="specialAt_130" name="arrSpecialAt" value="">
<input type="hidden" id="indictAt_130" name="arrIndictAt" value="">
</label>
</div>
</div>
</th>
<td class="alignL">매일 퀴즈 참여시</td>
<td>
<div class="input-container">
<input type="text" class="input-text wd90 alignR" id="pymntCnt_130" name="arrPymntCnt" value="" placeholder="0">
<p class="ml-10"> 개</p>
</div>
</td>
<td>
<div class="td-inner td-inner wd200 center">
<div class="input-container">
<input type="text" class="input-text wd90 alignR" id="specialCnt_130" name="arrSpecialCnt" value="" placeholder="0">
<p class="ml-10"> 개</p>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox wd70">
<input type="checkbox" id="specialAtChk_130" value="Y">
<span class="check"></span>
</label>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
<!--
<section id="section02" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">제품구매</h3>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table vertical">
<caption>이벤트 참여 상세내용</caption>
<colgroup>
<col style="width: 25%;">
<col style="width: 35%;">
<col style="width: 15%;">
<col style="width: 25%;">
</colgroup>
<thead>
<tr>
<th rowspan="2">이벤트명 (활성시 체크)</th>
<th rowspan="2">조건</th>
<th colspan="2">초록잎 지급</th>
</tr>
<tr>
<th>기본</th>
<th>오늘의 스페셜 (사용시 체크)</th>
</tr>
</thead>
<tbody>
<tr>
<th>
<div class="td-inner">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox wd70">
<input type="checkbox" id="indictAtChk_900" value="Y">
<span class="check"></span>
<span class="control-label" id="bnfDvNm_900">구매확정시</span>
<input type="hidden" id="bnfDvCd_900" name="arrBnfDvCd" value="900">
<input type="hidden" id="indictAt_900" name="arrIndictAt" value="">
<input type="hidden" id="specialAt_900" name="arrSpecialAt" value="">
<input type="hidden" id="specialCnt_900" name="arrSpecialCnt" value="">
</label>
</div>
</div>
</th>
<td class="alignL">구매금액 만원 당</td>
<td>
<div class="input-container">
<input type="text" class="input-text wd90 alignR" id="pymntCnt_900" name="arrPymntCnt" value="" placeholder="0">
<p class="ml-10"> 개</p>
</div>
</td>
<td>
-
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
-->
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
<form id="listForm" name="listForm">
</form>
</body>
</html>

View File

@@ -0,0 +1,461 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : CpslmknRegistForm.jsp
Description : 캡슐만들기 보상설정 등록 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-09-03 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
if('<c:out value="${ resultMap.paramVO.sopmalCd }"/>' === 'DT') {
$('[id^="sopmalGbn_"]').text('도토리');
}
fn_set_datepicker('.datepicker');
//진행기간 from to 체크(현재 날짜 보다 작을 시 alert)
$(document).on('change', '.datepicker', function () {
fn_check_fromTo('#bnfBgnDe', '#bnfEndDe', "date");
});
// 필요한 초록잎 숫자입력 체크
$('#rwdCndCnt').on('input', function() {
this.value = this.value.replace(/[^0-9]/g, '');
});
var bnfInnb = $('#regForm #bnfInnb').val();
fn_set_detail(bnfInnb);
});
/**
* 수정상세 정보 조회
*/
const fn_set_detail = function(bnfInnb) {
const url = '<c:url value="/mngr/bnft/selectBnftDtlUpdtInqire"/>';
if(bnfInnb){
$.ajax({
type: 'post',
url: url,
data : {
'bnfInnb' : bnfInnb
},
success: function (result) {
const data = JSON.parse(result.resBody.result);
const bnftData = data.bnftData;
const bnftRwdList = data.bnftRwdList;
$('[name=useAt][value=' + bnftData.useAt + ']').prop('checked',true);
$('#bnfBgnDe').val(bnftData.bnfBgnDe);
$('#bnfBgnTme').val(bnftData.bnfBgnTme);
$('#bnfEndDe').val(bnftData.bnfEndDe);
$('#bnfEndTme').val(bnftData.bnfEndTme);
$('#cnSj').val(bnftData.cnSj);
$('#cnDc').val(bnftData.cnDc);
$('#linkUrl').val(bnftData.linkUrl);
for(var i=0; i < bnftRwdList.length; i++) {
var rwdData = bnftRwdList[i]
$('#couponInnb_1').val(rwdData.couponInnb);
$('#couponName_1').val(rwdData.couponName);
$('#rwdCndCnt').val(rwdData.rwdCndCnt);
}
if(!fn_is_empty(bnftData.imgFilCours)) {
var imgPath = $('#cdnurl').val() + bnftData.imgFilCours;
$('#cnImgView').find('img').attr('src', imgPath);
$('#cnImgView').css('display', 'block');
}
}
});
} else {
$('#bnfBgnTme, #bnfEndTme').val('00:00');
}
}
/**
* 등록
*/
const fn_regist = function() {
var bnfInnb = $('#regForm #bnfInnb').val();
var checked = fn_check_valid(bnfInnb);
if(checked) {
var url = '<c:url value="/mngr/bnft/insertBnftInfo"/>';
var msg1 = '보상설정을 <spring:message code="confirm.common.insert"/>';
var msg2 = '<spring:message code="success.common.insert"/>';
var msg3 = '<spring:message code="fail.common.insert"/>';
if(bnfInnb) {
url = '<c:url value="/mngr/bnft/updateBnftInfo"/>';
msg1 = '보상설정을 <spring:message code="confirm.common.update"/>';
msg2 = '<spring:message code="success.common.insert"/>';
msg3 = '<spring:message code="fail.common.update"/>';
}
const formData = new FormData();
$('#regForm').serializeArray().forEach(function (item) {
formData.append(item.name, item.value);
});
$(".dropzone").each(function(index) {
var dropzoneID = "#my-dropzone" + (index + 1);
var myDropzone = Dropzone.forElement(dropzoneID);
myDropzone.files.forEach(function(file) {
formData.append('cnFiles', file);
});
});
if (confirm(msg1)) {
$.ajax({
type: 'post',
enctype: 'multipart/form-data',
url: url,
data: formData,
contentType: false,
processData: false,
success: function (data) {
var str = JSON.parse(data.resBody.result);
if (str.result == 'success') {
alert(msg2);
//저장 후 수정화면으로 이동
if(fn_is_empty(bnfInnb)) {
fn_move_dtl_uptpage(data.resBody.result.replace(/[^0-9]/g, ""));
} else {
fn_move_dtl_uptpage(bnfInnb);
}
} else {
alert(msg3);
}
}
});
}
}
};
/**
* 입력값 체크
*/
function fn_check_valid(bnfInnb) {
var myDropzone1 = Dropzone.forElement('#my-dropzone1');
var cnImgSrc = $('#cnImgView').find('img').attr('src');
if(cnImgSrc.indexOf('image_placeholder.png') > -1) {
cnImgSrc = '';
}
var bgnDe = $('#bnfBgnDe').val();
var bgnTme = $('#bnfBgnTme').val();
var endDe = $('#bnfEndDe').val();
var endTme = $('#bnfEndTme').val();
if(fn_is_empty($('input[name=useAt]:checked').val())) {
alert('사용여부를 선택하세요.');
return false;
} else if(fn_is_empty(bgnDe)) {
alert('진행기간 시작일을 입력하세요.');
return false;
} else if(fn_is_empty(endDe)) {
alert('진행기간 종료일을 입력하세요.');
return false;
} else if(!fn_check_date(bgnDe, endDe)) {
alert('진행기간 종료일이 시작일보다 작습니다.');
return false;
} else if (!fn_check_date(bgnDe + ' ' + bgnTme, endDe + ' ' + endTme)) {
alert('진행기간 종료일이 시작일보다 작습니다.');
return false;
} else if(fn_is_empty($('#cnSj').val())) {
alert('제품명을 입력하세요.');
return false;
} else if (fn_is_empty($('#couponInnb_1').val())) {
alert('쿠폰를 입력하세요.');
return false;
} else if(fn_is_empty(cnImgSrc) && myDropzone1.files.length < 1) {
alert('썸네일을 첨부하세요.');
return false;
} else if(fn_is_empty($('#rwdCndCnt').val())) {
var sopmalGbn = $('#sopmalGbn_1').text();
alert('필요한 ' + sopmalGbn + '을 입력하세요.');
return false;
} else if(fn_is_empty($('#cnDc').val())) {
alert('한 줄 소개를 입력하세요.');
return false;
} else if(fn_is_empty($('#linkUrl').val())) {
alert('구매링크을 입력하세요.');
return false;
}
$('#bnfSj').val($('#cnSj').val());
return true;
}
/**
* 목록 이동
*/
function fn_select_list() {
$('#listForm').attr('action', '<c:url value="/mngr/bnft/selectBnftListInqireForm"/>');
$('#listForm').attr('method', 'post');
$('#listForm').submit();
};
/**
* 수정폼 이동
*/
const fn_move_dtl_uptpage = function(Innb) {
const url = '<c:url value="/mngr/bnft/selectBnftDtlUpdtForm"/>';
$('#listForm').attr('action', url);
$('#listForm').attr('method', 'post');
$('#pageIndex').val(1);
$('#listForm #bnfInnb').val(Innb);
$('#listForm').submit();
}
/**
* 수정폼 등록이미지 삭제
*/
function fn_img_delete(tgtId) {
$('#' + tgtId).find('img').attr('src', '');
}
/**
* 쿠폰찾기 모달 오픈
*/
const fn_open_modal_coupon = function(pIdx){
var modalDivSltr = '#modalDiv';
var modalSlrt = '#findCouponPopup';
var modalUrl = '<c:url value="/mngr/bnft/findCouponPopupForm"/>';
var param = '';
$('#rwdSeqno').val(pIdx);
$.ajax({
type: 'post',
url: modalUrl,
data: {
param
},
success: function (data) {
$(modalSlrt).remove();
$(modalDivSltr).html(data);
$(modalSlrt).modal();
}
});
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">보상설정 상세</h2>
<div class="page-title__btn-container">
<a href="#selectCouponListInqire" class="btn outline" onclick="fn_select_list('1'); return false;"><spring:message code="button.list"/></a>
<button class="btn primary" onclick="fn_regist(); return false;" ><spring:message code="button.save"/></button>
</div>
</div>
<form id="regForm" name="regForm" class="common-form" method="post" action="" enctype="multipart/form-data">
<input type="hidden" id="bnfInnb" name="bnfInnb" value="<c:out value="${ resultMap.paramVO.bnfInnb }"/>"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<input type="hidden" id="bnfSj" name="bnfSj" value="">
<input type="hidden" id="rwdSeqno" name="rwdSeqno" value="">
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
<input type="hidden" id="cdnurl" value="${cdnurl}"/>
<section id="section01" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">기본설정</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>기본설정 상세내용</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 88%">
</colgroup>
<tbody>
<tr>
<th>사용여부 <span class="red-7">*</span></th>
<td>
<div class="custom-radio-container">
<div class="custom-radio">
<input type="radio" id="useAtY" name="useAt" value="Y">
<label for="useAtY">사용</label>
</div>
<div class="custom-radio ml-10">
<input type="radio" id="useAtN" name="useAt" value="N">
<label for="useAtN">미사용</label>
</div>
<p class="fyi gray-7 ml-10">‘미사용’ 선택시 사용자 참여 불가능</p>
</div>
</td>
</tr>
<tr>
<th>진행기간<span class="red-7">*</span></th>
<td>
<div class="td-inner">
<input type="text" id="bnfBgnDe" name="bnfBgnDe" class="datepicker" title="시작 날짜 선택" value="" autocomplete="off" readonly>
<div class="timepicker-container">
<input type="text" id="bnfBgnTme" name="bnfBgnTme" class="bs-timepicker" title="시작 시간 설정" value="" readonly>
</div>
<span class="tilde">~</span>
<input type="text" id="bnfEndDe" name="bnfEndDe" class="datepicker" title="종료 날짜 선택" value="" autocomplete="off" readonly>
<div class="timepicker-container">
<input type="text" id="bnfEndTme" name="bnfEndTme" class="bs-timepicker" title="종료 시간 설정" value="" readonly>
</div>
<p class="fyi gray-7 ml-10"></p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
<section id="section02" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">제품설정</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>목록</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 88%">
</colgroup>
<tbody>
<tr>
<th>제품명(노출용)</th>
<td>
<div class="input-container">
<input type="text" class="input-text wd300" id="cnSj" name="cnSj" value="" maxlength="20">
<p class="gray-7 ml-10"> 최대20자</p>
</div>
</td>
</tr>
<tr>
<th>쿠폰</th>
<td>
<div class="input-container">
<input type="hidden" id="bnfRwdCateDv_1" name="rwdVO.arrBnfRwdCateDvCd" value="05010"/>
<input type="hidden" id="bnfRwdGodsDv_1" name="rwdVO.arrBnfRwdGodsDvCd" value="020"/>
<input type="hidden" id="couponInnb_1" name="rwdVO.arrCouponInnb" value="">
<input type="text" class="input-text wd300" id="couponName_1" name="couponName_1" value="" readonly>
<a href="#" class="btn xsm gray ml-10" onclick="fn_open_modal_coupon('1'); return false;">찾기</a>
</div>
</td>
</tr>
<tr>
<th>썸네일</th>
<td>
<div class="td-inner nowrap">
<div class="dropzone-wrapper sm wd400">
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.extensions.images')" var="acceptFileExtensions"/>
<div class="dropzone" id="my-dropzone1">
</div>
</div>
<div class="file-preview__container" id="cnImgView" style="display:none;">
<div class="file-preview">
<span class="file-preview__number">등록한 사진</span>
<button class="file-preview__delete" onclick="fn_img_delete('cnImgView'); return false;"><span class="visually-hidden">삭제</span></button>
<div class="file-preview__image wd200">
<img src="" alt="로고" onerror="this.src='/mngr/images/image_placeholder.png'">
</div>
</div>
</div>
</div>
</td>
</tr>
<tr>
<th>필요한 <span id="sopmalGbn_1">초록잎</span></th>
<td>
<div class="td-inner">
<div class="input-container">
<input type="text" class="input-text wd100" id="rwdCndCnt" name="rwdVO.arrRwdCndCnt" value="" placeholder="0">
<p class="gray-7 ml-10"> 개</p>
</div>
</div>
</td>
</tr>
<tr>
<th>한 줄 소개</th>
<td>
<div class="td-inner">
<input type="text" class="input-text wd400" id="cnDc" name="cnDc" title="" autocomplete="off">
</div>
</td>
</tr>
<tr>
<th>구매 링크</th>
<td>
<div class="td-inner">
<input type="text" class="input-text wd400" id="linkUrl" name="linkUrl" value="" title="">
<p class="gray-7 mt-10">ex) https://nutricore.co.kr/board/view?id=Event_board&seq=33142</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
<!-- 쿠폰찾기팝업 -->
<div id="modalDiv">
</div>
<form id="listForm" name="listForm">
<input type="hidden" id="bnfInnb" name ="bnfInnb"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="srchPdDv" name="srchPdDv" value="${ resultMap.paramVO.srchPdDv }">
<input type="hidden" id="srchStartDt" name="srchStartDt" value="${ resultMap.paramVO.srchStartDt }">
<input type="hidden" id="srchEndDt" name="srchEndDt" value="${ resultMap.paramVO.srchEndDt }">
<input type="hidden" id="srchSttDv" name="srchSttDv" value="${ resultMap.paramVO.srchSttDv }"/>
<input type="hidden" id="srchUseAt" name="srchUseAt" value="${ resultMap.paramVO.srchUseAt }"/>
<input type="hidden" id="srchDv" name="srchDv" value="${ resultMap.paramVO.srchDv }"/>
<input type="hidden" id="srchKeyword" name="srchKeyword" value="${ resultMap.paramVO.srchKeyword }"/>
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultMap.paramVO.pageIndex }"/>
<input type="hidden" id="recordCountPerPage" name="recordCountPerPage" value="${ resultMap.paramVO.recordCountPerPage }"/>
<input type="hidden" id="pageUnit" name="pageUnit" value="${ resultMap.paramVO.pageUnit }"/>
</form>
</body>
</html>

View File

@@ -0,0 +1,452 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : DiscsharRegistForm.jsp
Description : 할인소식공유 혜택 등록 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-08-10 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
//진행기간 from to 체크(현재 날짜 보다 작을 시 alert)
$(document).on('change', '.datepicker', function () {
fn_check_fromTo('#bnfBgnDe', '#bnfEndDe', "date");
});
// 마일리지, 할인율, 할인금액 숫자입력 체크
$('input[id^="mlgRwdAmt_"], #dscntRt, #dscntAmt').on('input', function() {
this.value = this.value.replace(/[^0-9]/g, '');
});
var bnfInnb = $('#regForm #bnfInnb').val();
fn_set_detail(bnfInnb);
});
/**
* 수정상세 정보 조회
*/
const fn_set_detail = function(bnfInnb) {
const url = '<c:url value="/mngr/bnft/selectBnftDtlUpdtInqire"/>';
if(bnfInnb){
$.ajax({
type: 'post',
url: url,
data : {
'bnfInnb' : bnfInnb
},
success: function (result) {
const data = JSON.parse(result.resBody.result);
const bnftData = data.bnftData;
const bnftRwdList = data.bnftRwdList;
$('[name=useAt][value=' + bnftData.useAt + ']').prop('checked',true);
$('#bnfBgnDe').val(bnftData.bnfBgnDe);
$('#bnfBgnTme').val(bnftData.bnfBgnTme);
$('#bnfEndDe').val(bnftData.bnfEndDe);
$('#bnfEndTme').val(bnftData.bnfEndTme);
$('#cnSj').val(bnftData.cnSj);
$('#validDt').val(bnftData.validDt);
$('#linkUrl').val(bnftData.linkUrl);
$('[name=dscntUnitDvCd][value=' + bnftData.dscntUnitDvCd + ']').prop('checked',true);
$('#dscntRt').val(bnftData.dscntRt);
$('#dscntAmt').val(bnftData.dscntAmt);
for(var i=0; i < bnftRwdList.length; i++) {
var rwdData = bnftRwdList[i]
$('#mlgRwdAmt_1').val(rwdData.mlgRwdAmt);
}
if(!fn_is_empty(bnftData.imgFilCours)) {
var imgPath = $('#cdnurl').val() + bnftData.imgFilCours;
$('#cnImgView').find('img').attr('src', imgPath);
$('#cnImgView').css('display', 'block');
}
}
});
} else {
$('#bnfBgnTme, #bnfEndTme').val('00:00');
}
}
/**
* 등록
*/
const fn_regist = function() {
var bnfInnb = $('#regForm #bnfInnb').val();
var checked = fn_check_valid(bnfInnb);
if(checked) {
var url = '<c:url value="/mngr/bnft/insertBnftInfo"/>';
var msg1 = '할인소식공유 혜택을 <spring:message code="confirm.common.insert"/>';
var msg2 = '<spring:message code="success.common.insert"/>';
var msg3 = '<spring:message code="fail.common.insert"/>';
if(bnfInnb) {
url = '<c:url value="/mngr/bnft/updateBnftInfo"/>';
msg1 = '할인소식공유 혜택을 <spring:message code="confirm.common.update"/>';
msg2 = '<spring:message code="success.common.insert"/>';
msg3 = '<spring:message code="fail.common.update"/>';
}
const formData = new FormData();
$('#regForm').serializeArray().forEach(function (item) {
formData.append(item.name, item.value);
});
$(".dropzone").each(function(index) {
var dropzoneID = "#my-dropzone" + (index + 1);
var myDropzone = Dropzone.forElement(dropzoneID);
myDropzone.files.forEach(function(file) {
formData.append('cnFiles', file);
});
});
if (confirm(msg1)) {
$.ajax({
type: 'post',
enctype: 'multipart/form-data',
url: url,
data: formData,
contentType: false,
processData: false,
success: function (data) {
var str = JSON.parse(data.resBody.result);
if (str.result == 'success') {
alert(msg2);
//저장 후 수정화면으로 이동
if(fn_is_empty(bnfInnb)) {
fn_move_dtl_uptpage(data.resBody.result.replace(/[^0-9]/g, ""));
} else {
fn_move_dtl_uptpage(bnfInnb);
}
} else {
alert(msg3);
}
}
});
}
}
};
/**
* 입력값 체크
*/
function fn_check_valid(bnfInnb) {
var myDropzone1 = Dropzone.forElement('#my-dropzone1');
var cnImgSrc = $('#cnImgView').find('img').attr('src');
if(cnImgSrc.indexOf('image_placeholder.png') > -1) {
cnImgSrc = '';
}
var bgnDe = $('#bnfBgnDe').val();
var bgnTme = $('#bnfBgnTme').val();
var endDe = $('#bnfEndDe').val();
var endTme = $('#bnfEndTme').val();
var validDt = $('#validDt').val();
var dscntUnitDvCd = $('input[name=dscntUnitDvCd]:checked').val();
if(fn_is_empty($('input[name=useAt]:checked').val())) {
alert('사용여부를 선택하세요.');
return false;
} else if(fn_is_empty(bgnDe)) {
alert('진행기간 시작일을 입력하세요.');
return false;
} else if(fn_is_empty(endDe)) {
alert('진행기간 종료일을 입력하세요.');
return false;
} else if(!fn_check_date(bgnDe, endDe)) {
alert('진행기간 종료일이 시작일보다 작습니다.');
return false;
} else if (!fn_check_date(bgnDe + ' ' + bgnTme, endDe + ' ' + endTme)) {
alert('진행기간 종료일이 시작일보다 작습니다.');
return false;
} else if(fn_is_empty($('#cnSj').val())) {
alert('상품명을 입력하세요.');
return false;
} else if(fn_is_empty(cnImgSrc) && myDropzone1.files.length < 1) {
alert('상품이미지 첨부하세요.');
return false;
} else if(fn_is_empty($('#linkUrl').val())) {
alert('구매링크을 입력하세요.');
return false;
} else if(fn_is_empty(validDt)) {
alert('할인유효기간을 입력하세요.');
return false;
} else if(fn_is_empty(dscntUnitDvCd)) {
alert('구매자할인을 선택하세요.');
return false;
} else if (dscntUnitDvCd == '01' && fn_is_empty($('#dscntRt').val())) {
alert('할인율을 입력하세요.');
return false;
} else if (dscntUnitDvCd == '02' && fn_is_empty($('#dscntAmt').val())) {
alert('할인금액을 입력하세요.');
return false;
} else if (fn_is_empty($('#mlgRwdAmt_1').val())) {
alert('공유자보상 마일리지를 입력하세요.');
return false;
}
$('#bnfSj').val($('#cnSj').val());
if(dscntUnitDvCd == '01') {
$('#dscntAmt').val('');
} else if(dscntUnitDvCd == '02') {
$('#dscntRt').val('');
}
return true;
}
/**
* 목록 이동
*/
function fn_select_list() {
$('#listForm').attr('action', '<c:url value="/mngr/bnft/selectBnftListInqireForm"/>');
$('#listForm').attr('method', 'post');
$('#listForm').submit();
};
/**
* 수정폼 이동
*/
const fn_move_dtl_uptpage = function(Innb) {
const url = '<c:url value="/mngr/bnft/selectBnftDtlUpdtForm"/>';
$('#listForm').attr('action', url);
$('#listForm').attr('method', 'post');
$('#pageIndex').val(1);
$('#listForm #bnfInnb').val(Innb);
$('#listForm').submit();
}
/**
* 수정폼 등록이미지 삭제
*/
function fn_img_delete(tgtId) {
$('#' + tgtId).find('img').attr('src', '');
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">할인소식공유 상세</h2>
<div class="page-title__btn-container">
<a href="#selectCouponListInqire" class="btn outline" onclick="fn_select_list('1'); return false;"><spring:message code="button.list"/></a>
<button class="btn primary" onclick="fn_regist(); return false;" ><spring:message code="button.save"/></button>
</div>
</div>
<form id="regForm" name="regForm" class="common-form" method="post" action="" enctype="multipart/form-data">
<input type="hidden" id="bnfInnb" name="bnfInnb" value="<c:out value="${ resultMap.paramVO.bnfInnb }"/>"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<input type="hidden" id="bnfSj" name="bnfSj" value="">
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
<input type="hidden" id="cdnurl" value="${cdnurl}"/>
<section id="section01" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">기본설정</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>기본설정 상세내용</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 88%">
</colgroup>
<tbody>
<tr>
<th>사용여부 <span class="red-7">*</span></th>
<td>
<div class="custom-radio-container">
<div class="custom-radio">
<input type="radio" id="useAtY" name="useAt" value="Y">
<label for="useAtY">사용</label>
</div>
<div class="custom-radio ml-10">
<input type="radio" id="useAtN" name="useAt" value="N">
<label for="useAtN">미사용</label>
</div>
<p class="fyi gray-7 ml-10">‘미사용’ 선택시 사용자 참여 불가능</p>
</div>
</td>
</tr>
<tr>
<th>진행기간<span class="red-7">*</span></th>
<td>
<div class="td-inner">
<input type="text" id="bnfBgnDe" name="bnfBgnDe" class="datepicker" title="시작 날짜 선택" value="" autocomplete="off" readonly>
<div class="timepicker-container">
<input type="text" id="bnfBgnTme" name="bnfBgnTme" class="bs-timepicker" title="시작 시간 설정" value="" readonly>
</div>
<span class="tilde">~</span>
<input type="text" id="bnfEndDe" name="bnfEndDe" class="datepicker" title="종료 날짜 선택" value="" autocomplete="off" readonly>
<div class="timepicker-container">
<input type="text" id="bnfEndTme" name="bnfEndTme" class="bs-timepicker" title="종료 시간 설정" value="" readonly>
</div>
<p class="fyi gray-7 ml-10"></p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
<section id="section02" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">내용설정</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>목록</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 88%">
</colgroup>
<tbody>
<tr>
<th>상품명</th>
<td>
<div class="input-container">
<input type="text" class="input-text wd580" id="cnSj" name="cnSj" value="">
<p class="gray-7 ml-10"> 최대50자</p>
</div>
</td>
</tr>
<tr>
<th>상품이미지</th>
<td>
<div class="td-inner nowrap">
<div class="dropzone-wrapper">
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.extensions.images')" var="acceptFileExtensions"/>
<div class="dropzone" id="my-dropzone1">
</div>
</div>
<div class="file-preview__container" id="cnImgView" style="display:none;">
<div class="file-preview">
<span class="file-preview__number">등록한 사진</span>
<button class="file-preview__delete" onclick="fn_img_delete('cnImgView'); return false;"><span class="visually-hidden">삭제</span></button>
<div class="file-preview__image wd200">
<img src="" alt="로고" onerror="this.src='/mngr/images/image_placeholder.png'">
</div>
</div>
</div>
</div>
</td>
</tr>
<tr>
<th>구매링크</th>
<td>
<div class="td-inner">
<input type="text" class="input-text wd580" id="linkUrl" name="linkUrl" value="" title="">
</div>
<p class="gray-7 mt-10">ex) https://naver.me/Gq8P4GY3</p>
</td>
</tr>
<tr>
<th>할인유효기간</th>
<td>
<div class="td-inner">
<input type="text" id="validDt" name="validDt" class="datepicker" title="" autocomplete="off" readonly>
</div>
</td>
</tr>
<tr>
<th>구매자 할인</th>
<td>
<div class="custom-radio-container">
<div class="custom-radio">
<input type="radio" id="dscntUnitDvP" name="dscntUnitDvCd" value="01">
<label for="dscntUnitDvP">할인율</label>
</div>
<div class="input-container">
<input type="text" class="input-text sm right" id="dscntRt" name="dscntRt" value="" placeholder="0">
<span class="ml-4">%</span>
</div>
<div class="custom-radio ml-10">
<input type="radio" id="dscntUnitDvW" name="dscntUnitDvCd" value="02">
<label for="dscntUnitDvW">할인금액</label>
</div>
<div class="input-container">
<input type="text" class="input-text sm right" id="dscntAmt" name="dscntAmt" value="" placeholder="0">
<span class="ml-4">원</span>
</div>
</div>
</td>
</tr>
<tr>
<th>공유자보상</th>
<td>
<div class="input-container">
<input type="hidden" id="bnfRwdCateDv_1" name="rwdVO.arrBnfRwdCateDvCd" value="08010"/>
<input type="hidden" id="bnfRwdGodsDv_1" name="rwdVO.arrBnfRwdGodsDvCd" value="010"/>
<input type="text" class="input-text wd100" id="mlgRwdAmt_1" name="rwdVO.arrMlgRwdAmt" value="" placeholder="0">
<p class="gray-7 ml-10">원</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
<form id="listForm" name="listForm">
<input type="hidden" id="bnfInnb" name ="bnfInnb"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="srchPdDv" name="srchPdDv" value="${ resultMap.paramVO.srchPdDv }">
<input type="hidden" id="srchStartDt" name="srchStartDt" value="${ resultMap.paramVO.srchStartDt }">
<input type="hidden" id="srchEndDt" name="srchEndDt" value="${ resultMap.paramVO.srchEndDt }">
<input type="hidden" id="srchSttDv" name="srchSttDv" value="${ resultMap.paramVO.srchSttDv }"/>
<input type="hidden" id="srchUseAt" name="srchUseAt" value="${ resultMap.paramVO.srchUseAt }"/>
<input type="hidden" id="srchDv" name="srchDv" value="${ resultMap.paramVO.srchDv }"/>
<input type="hidden" id="srchKeyword" name="srchKeyword" value="${ resultMap.paramVO.srchKeyword }"/>
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultMap.paramVO.pageIndex }"/>
<input type="hidden" id="recordCountPerPage" name="recordCountPerPage" value="${ resultMap.paramVO.recordCountPerPage }"/>
<input type="hidden" id="pageUnit" name="pageUnit" value="${ resultMap.paramVO.pageUnit }"/>
</form>
</body>
</html>

View File

@@ -0,0 +1,399 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : EvntviewRegistForm.jsp
Description : 이벤트보기 혜택 등록 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-07-30 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
//진행기간 from to 체크(현재 날짜 보다 작을 시 alert)
$(document).on('change', '.datepicker', function () {
fn_check_fromTo('#bnfBgnDe', '#bnfEndDe', "date");
fn_check_fromTo('#cnBgnDt', '#cnEndDt', "date");
});
// 마일리지, 필수열람시간(초) 숫자입력 체크
$('input[id^="mlgRwdAmt_"], #tmeSecnd').on('input', function() {
this.value = this.value.replace(/[^0-9]/g, '');
});
var bnfInnb = $('#regForm #bnfInnb').val();
fn_set_detail(bnfInnb);
});
/**
* 수정상세 정보 조회
*/
const fn_set_detail = function(bnfInnb) {
const url = '<c:url value="/mngr/bnft/selectBnftDtlUpdtInqire"/>';
if(bnfInnb){
$.ajax({
type: 'post',
url: url,
data : {
'bnfInnb' : bnfInnb
},
success: function (result) {
const data = JSON.parse(result.resBody.result);
const bnftData = data.bnftData;
const bnftRwdList = data.bnftRwdList;
$('[name=useAt][value=' + bnftData.useAt + ']').prop('checked',true);
$('#bnfBgnDe').val(bnftData.bnfBgnDe);
$('#bnfBgnTme').val(bnftData.bnfBgnTme);
$('#bnfEndDe').val(bnftData.bnfEndDe);
$('#bnfEndTme').val(bnftData.bnfEndTme);
$('#cnSj').val(bnftData.cnSj);
$('#cnDc').val(bnftData.cnDc);
$('#cnBgnDt').val(bnftData.cnBgnDe);
$('#cnEndDt').val(bnftData.cnEndDe);
$('#linkUrl').val(bnftData.linkUrl);
for(var i=0; i < bnftRwdList.length; i++) {
var rwdData = bnftRwdList[i]
$('#mlgRwdAmt_1').val(rwdData.mlgRwdAmt);
}
$('#tmeSecnd').val(bnftData.tmeSecnd);
}
});
} else {
$('#bnfBgnTme, #bnfEndTme').val('00:00');
}
}
/**
* 등록
*/
const fn_regist = function() {
var bnfInnb = $('#regForm #bnfInnb').val();
var checked = fn_check_valid(bnfInnb);
if(checked) {
var url = '<c:url value="/mngr/bnft/insertBnftInfo"/>';
var msg1 = '이벤트보기 혜택을 <spring:message code="confirm.common.insert"/>';
var msg2 = '<spring:message code="success.common.insert"/>';
var msg3 = '<spring:message code="fail.common.insert"/>';
if(bnfInnb) {
url = '<c:url value="/mngr/bnft/updateBnftInfo"/>';
msg1 = '이벤트보기 혜택을 <spring:message code="confirm.common.update"/>';
msg2 = '<spring:message code="success.common.insert"/>';
msg3 = '<spring:message code="fail.common.update"/>';
}
const formData = new FormData();
$('#regForm').serializeArray().forEach(function (item) {
formData.append(item.name, item.value);
});
if (confirm(msg1)) {
$.ajax({
type: 'post',
enctype: 'multipart/form-data',
url: url,
data: formData,
contentType: false,
processData: false,
success: function (data) {
var str = JSON.parse(data.resBody.result);
if (str.result == 'success') {
alert(msg2);
//저장 후 수정화면으로 이동
if(fn_is_empty(bnfInnb)) {
fn_move_dtl_uptpage(data.resBody.result.replace(/[^0-9]/g, ""));
} else {
fn_move_dtl_uptpage(bnfInnb);
}
} else {
alert(msg3);
}
}
});
}
}
};
/**
* 입력값 체크
*/
function fn_check_valid(bnfInnb) {
var bgnDe = $('#bnfBgnDe').val();
var bgnTme = $('#bnfBgnTme').val();
var endDe = $('#bnfEndDe').val();
var endTme = $('#bnfEndTme').val();
var cnBgnDt = $('#cnBgnDt').val();
var cnEndDt = $('#cnEndDt').val();
if(fn_is_empty($('input[name=useAt]:checked').val())) {
alert('사용여부를 선택하세요.');
return false;
} else if(fn_is_empty(bgnDe)) {
alert('진행기간 시작일을 입력하세요.');
return false;
} else if(fn_is_empty(endDe)) {
alert('진행기간 종료일을 입력하세요.');
return false;
} else if(!fn_check_date(bgnDe, endDe)) {
alert('진행기간 종료일이 시작일보다 작습니다.');
return false;
} else if (!fn_check_date(bgnDe + ' ' + bgnTme, endDe + ' ' + endTme)) {
alert('진행기간 종료일이 시작일보다 작습니다.');
return false;
} else if(fn_is_empty($('#cnSj').val())) {
alert('이벤트명을 입력하세요.');
return false;
} else if(fn_is_empty($('#cnDc').val())) {
alert('설명을 입력하세요.');
return false;
} else if(fn_is_empty(cnBgnDt)) {
alert('이벤트기간 시작일을 입력하세요.');
return false;
} else if(fn_is_empty(cnEndDt)) {
alert('이벤트기간 종료일을 입력하세요.');
return false;
} else if(!fn_check_date(cnBgnDt, cnEndDt)) {
alert('이벤트기간 종료일이 시작일보다 작습니다.');
return false;
} else if(fn_is_empty($('#linkUrl').val())) {
alert('링크을 입력하세요.');
return false;
} else if (fn_is_empty($('#mlgRwdAmt_1').val())) {
alert('보상 마일리지를 입력하세요.');
return false;
} else if (fn_is_empty($('#tmeSecnd').val())) {
alert('필수열람시간을 입력하세요.');
return false;
}
$('#bnfSj').val($('#cnSj').val());
return true;
}
/**
* 목록 이동
*/
function fn_select_list() {
$('#listForm').attr('action', '<c:url value="/mngr/bnft/selectBnftListInqireForm"/>');
$('#listForm').attr('method', 'post');
$('#listForm').submit();
};
/**
* 수정폼 이동
*/
const fn_move_dtl_uptpage = function(Innb) {
const url = '<c:url value="/mngr/bnft/selectBnftDtlUpdtForm"/>';
$('#listForm').attr('action', url);
$('#listForm').attr('method', 'post');
$('#pageIndex').val(1);
$('#listForm #bnfInnb').val(Innb);
$('#listForm').submit();
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">이벤트보기 상세</h2>
<div class="page-title__btn-container">
<a href="#selectCouponListInqire" class="btn outline" onclick="fn_select_list('1'); return false;"><spring:message code="button.list"/></a>
<button class="btn primary" onclick="fn_regist(); return false;" ><spring:message code="button.save"/></button>
</div>
</div>
<form id="regForm" name="regForm" class="common-form" method="post" action="" enctype="multipart/form-data">
<input type="hidden" id="bnfInnb" name="bnfInnb" value="<c:out value="${ resultMap.paramVO.bnfInnb }"/>"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<input type="hidden" id="bnfSj" name="bnfSj" value="">
<section id="section01" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">기본설정</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>기본설정 상세내용</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 88%">
</colgroup>
<tbody>
<tr>
<th>사용여부 <span class="red-7">*</span></th>
<td>
<div class="custom-radio-container">
<div class="custom-radio">
<input type="radio" id="useAtY" name="useAt" value="Y">
<label for="useAtY">사용</label>
</div>
<div class="custom-radio ml-10">
<input type="radio" id="useAtN" name="useAt" value="N">
<label for="useAtN">미사용</label>
</div>
<p class="fyi gray-7 ml-10">‘미사용’ 선택시 사용자 참여 불가능</p>
</div>
</td>
</tr>
<tr>
<th>진행기간<span class="red-7">*</span></th>
<td>
<div class="td-inner">
<input type="text" id="bnfBgnDe" name="bnfBgnDe" class="datepicker" title="시작 날짜 선택" value="" autocomplete="off" readonly>
<div class="timepicker-container">
<input type="text" id="bnfBgnTme" name="bnfBgnTme" class="bs-timepicker" title="시작 시간 설정" value="" readonly>
</div>
<span class="tilde">~</span>
<input type="text" id="bnfEndDe" name="bnfEndDe" class="datepicker" title="종료 날짜 선택" value="" autocomplete="off" readonly>
<div class="timepicker-container">
<input type="text" id="bnfEndTme" name="bnfEndTme" class="bs-timepicker" title="종료 시간 설정" value="" readonly>
</div>
<p class="fyi gray-7 ml-10"></p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
<section id="section02" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">내용설정</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>목록</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 88%">
</colgroup>
<tbody>
<tr>
<th>이벤트명</th>
<td>
<div class="input-container">
<input type="text" class="input-text wd580" id="cnSj" name="cnSj" value="">
<p class="gray-7 ml-10"> 최대50자</p>
</div>
</td>
</tr>
<tr>
<th>설명 (한 줄 소개)</th>
<td>
<div class="input-container">
<input type="text" class="input-text wd580" id="cnDc" name="cnDc" value="">
<p class="gray-7 ml-10"> 최대50자</p>
</div>
</td>
</tr>
<tr>
<th>이벤트기간</th>
<td>
<div class="td-inner">
<input type="text" id="cnBgnDt" name="cnBgnDt" class="datepicker" title="시작 날짜 선택" autocomplete="off" readonly>
<span class="tilde">~</span>
<input type="text" id="cnEndDt" name="cnEndDt" class="datepicker" title="종료 날짜 선택" autocomplete="off" readonly>
<p class="fyi gray-7 ml-10"> 사용자 화면에 노출되는 실제 이벤트 기간 </p>
</div>
</td>
</tr>
<tr>
<th>링크</th>
<td>
<div class="td-inner">
<input type="text" class="input-text wd580" id="linkUrl" name="linkUrl" value="" title="">
</div>
<p class="fyi gray-7 mt-10"> ex) https://m.nutricore.co.kr/board/view?id=Event_board&seq=33142</p>
</td>
</tr>
<tr>
<th>보상</th>
<td>
<div class="td-inner">
<div class="input-container">
<input type="hidden" id="bnfRwdCateDv_1" name="rwdVO.arrBnfRwdCateDvCd" value="06010"/>
<input type="hidden" id="bnfRwdGodsDv_1" name="rwdVO.arrBnfRwdGodsDvCd" value="010"/>
<span class="mr-20">마일리지</span>
<input type="text" class="input-text sm right" id="mlgRwdAmt_1" name="rwdVO.arrMlgRwdAmt" value="" placeholder="0">
<span class="ml-4">원</span>
</div>
</div>
</td>
</tr>
<tr>
<th>필수열람시간(초)</th>
<td>
<div class="td-inner">
<div class="input-container">
<input type="text" class="input-text wd100" id="tmeSecnd" name="tmeSecnd" value="" placeholder="0">
<p class="gray-7 ml-10"> 초 화면보기 후 보상지급</p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
<form id="listForm" name="listForm">
<input type="hidden" id="bnfInnb" name ="bnfInnb"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="srchPdDv" name="srchPdDv" value="${ resultMap.paramVO.srchPdDv }">
<input type="hidden" id="srchStartDt" name="srchStartDt" value="${ resultMap.paramVO.srchStartDt }">
<input type="hidden" id="srchEndDt" name="srchEndDt" value="${ resultMap.paramVO.srchEndDt }">
<input type="hidden" id="srchSttDv" name="srchSttDv" value="${ resultMap.paramVO.srchSttDv }"/>
<input type="hidden" id="srchUseAt" name="srchUseAt" value="${ resultMap.paramVO.srchUseAt }"/>
<input type="hidden" id="srchDv" name="srchDv" value="${ resultMap.paramVO.srchDv }"/>
<input type="hidden" id="srchKeyword" name="srchKeyword" value="${ resultMap.paramVO.srchKeyword }"/>
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultMap.paramVO.pageIndex }"/>
<input type="hidden" id="recordCountPerPage" name="recordCountPerPage" value="${ resultMap.paramVO.recordCountPerPage }"/>
<input type="hidden" id="pageUnit" name="pageUnit" value="${ resultMap.paramVO.pageUnit }"/>
</form>
</body>
</html>

View File

@@ -0,0 +1,205 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : GdccRegistForm.jsp
Description : 혜택 안내문 등록 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-09-04 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
if($('#regForm #bnfDvCd').val() == '050') {
fn_create_ckeditor('#wordsCn1');
}
fn_create_ckeditor('#wordsCn2');
fn_set_detail();
});
/**
* 수정상세 정보 조회
*/
const fn_set_detail = function(bnfDvCd) {
const url = '<c:url value="/mngr/bnft/selectBnftGdccDtlInqire"/>';
var bnfDvCd = $('#regForm #bnfDvCd').val();
var sopmalCd = $('#regForm #sopmalCd').val();
if(bnfDvCd && sopmalCd){
$.ajax({
type: 'post',
url: url,
data : {
'bnfDvCd' : bnfDvCd,
'sopmalCd' : sopmalCd
},
success: function (result) {
const data = JSON.parse(result.resBody.result);
if(data.bnftGdccData !== null) {
const bnftData = data.bnftGdccData;
if(bnfDvCd == '050') {
fn_set_editor_data('#wordsCn1', bnftData.wordsCn1);
}
fn_set_editor_data('#wordsCn2', bnftData.wordsCn2);
$('#regForm #registTp').val('upd');
}
}
});
}
}
/**
* 등록
*/
const fn_regist = function() {
var registTp = $('#regForm #registTp').val();
var checked = fn_check_valid();
if(checked) {
var url = '<c:url value="/mngr/bnft/insertBnftGdcc"/>';
var msg1 = '안내문을 <spring:message code="confirm.common.insert"/>';
var msg2 = '<spring:message code="success.common.insert"/>';
var msg3 = '<spring:message code="fail.common.insert"/>';
if(registTp == 'upd') {
url = '<c:url value="/mngr/bnft/updateBnftGdcc"/>';
msg1 = '안내문을 <spring:message code="confirm.common.update"/>';
msg2 = '<spring:message code="success.common.insert"/>';
msg3 = '<spring:message code="fail.common.update"/>';
}
const formData = new FormData();
$('#regForm').serializeArray().forEach(function (item) {
formData.append(item.name, item.value);
});
if (confirm(msg1)) {
$.ajax({
type: 'post',
enctype: 'multipart/form-data',
url: url,
data: formData,
contentType: false,
processData: false,
success: function (data) {
var str = JSON.parse(data.resBody.result);
if (str.result == 'success') {
alert(msg2);
//저장 후 페이지 리로딩
fn_move_dtl_uptpage();
} else {
alert(msg3);
}
}
});
}
}
};
/**
* 입력값 체크
*/
function fn_check_valid() {
var bnfDvCd = $('#regForm #bnfDvCd').val();
if(bnfDvCd == '050') {
$('#wordsCn1').val(fn_get_editor_data('#wordsCn1'));
}
$('#wordsCn2').val(fn_get_editor_data('#wordsCn2'));
if(fn_is_empty($('#wordsCn1').val()) && bnfDvCd == '050') {
alert('알아두세요 안내를 입력하세요.');
return false;
} else if(fn_is_empty($('#wordsCn2').val())) {
alert('참여방법 안내를 입력하세요.');
return false;
}
return true;
}
/**
* 페이지 리로드
*/
const fn_move_dtl_uptpage = function() {
window.location.reload();
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">안내문 관리</h2>
<div class="page-title__btn-container">
<button class="btn primary" onclick="fn_regist(); return false;" ><spring:message code="button.save"/></button>
</div>
</div>
<form id="regForm" name="regForm" class="common-form" method="post" action="" enctype="multipart/form-data">
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<input type="hidden" id="registTp" name="registTp" value="ins"/>
<c:if test="${ resultMap.paramVO.bnfDvCd eq '050'}">
<section id="section01" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">꼭 알아두세요</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="td-inner">
<textarea class="textarea" id="wordsCn1" name="wordsCn1" cols="30" rows="10"></textarea>
</div>
<p class="fyi gray-7 mt-15">선물 선택, 수령 방법 등 게임 시작전 반드시 알아야 할 사항을 간략하게 적어주세요.</p>
</div>
</section>
</c:if>
<section id="section02" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">참여방법 안내</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="td-inner">
<textarea class="textarea" id="wordsCn2" name="wordsCn2" cols="30" rows="10"></textarea>
</div>
<p class="fyi gray-7 mt-15">참여 방법, 경품, 당첨자 발표 방식, 관련 법규 등 이벤트에 대해 사용자에게 안내할 내용을 적어주세요.</p>
</div>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
</body>
</html>

View File

@@ -0,0 +1,504 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : HlthsetRegistForm.jsp
Description : 관심분야 혜택 등록 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-08-16 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
fn_create_ckeditor('#bnfWordsCn');
// 마일리지, 할인율, 할인금액 숫자입력 체크
$(document).on('input', 'input[id^="mlgRwdAmt_"], input[id^="sortOrdr_"]', function() {
this.value = this.value.replace(/[^0-9]/g, '');
});
var bnfInnb = $('#regForm #bnfInnb').val();
fn_set_detail(bnfInnb);
// 항목 사용여부
$(document).on('click', '[name^="rdoUseAt_"]', function() {
var useAt = $(this).val();
var seqno = $(this).data('no');
$('#useAt_' + seqno).val(useAt);
});
});
/**
* 수정상세 정보 조회
*/
const fn_set_detail = function(bnfInnb) {
const url = '<c:url value="/mngr/bnft/selectBnftDtlUpdtInqire"/>';
if(bnfInnb){
$.ajax({
type: 'post',
url: url,
data : {
'bnfInnb' : bnfInnb,
'bnfDvCd' : $('#bnfDvCd').val()
},
success: function (result) {
const data = JSON.parse(result.resBody.result);
const bnftData = data.bnftData;
const bnftRwdList = data.bnftRwdList;
const bnftIntrstList = data.bnftIntrstList;
for(var i=0; i < bnftRwdList.length; i++) {
var rwdData = bnftRwdList[i]
$('#mlgRwdAmt_1').val(rwdData.mlgRwdAmt);
}
for(var i=0; i < bnftIntrstList.length; i++) {
var intrstData = bnftIntrstList[i]
var idx = i + 1;
const divTmp = $('#divIntrstTmpl').html().replace(/@idx/g, idx);
$('#divIntrstArea').append(divTmp);
var dropzoneID = "my-dropzone" + idx;
fn_init_dropzone(dropzoneID);
$('#bnfIntrstInnb_' + idx).val(intrstData.bnfIntrstInnb);
$('#bfeImgFilCours_' + idx).val(intrstData.bfeImgFilCours);
$('#bfeImgFilNm_' + idx).val(intrstData.bfeImgFilNm);
$('#intrstNm_' + idx).val(intrstData.intrstNm);
$('#sortOrdr_' + idx).val(intrstData.sortOrdr);
$('#useAt_' + idx).val(intrstData.useAt);
$('#delAt_' + idx).val(intrstData.delAt);
if(!fn_is_empty(intrstData.bfeImgFilCours)) {
var imgPath = $('#cdnurl').val() + intrstData.bfeImgFilCours;
$('#imgFilView_' + idx).find('img').attr('src', imgPath);
$('#imgFilView_' + idx).css('display', 'block');
}
if(intrstData.useAt == 'Y') {
$('#rdoUseAtY_' + idx).prop("checked", true);
} else if(intrstData.useAt == 'N') {
$('#rdoUseAtN_' + idx).prop("checked", true);
}
}
fn_set_editor_data('#bnfWordsCn', bnftData.bnfWordsCn);
}
});
} else {
$('#bnfBgnTme, #bnfEndTme').val('00:00');
}
}
/**
* 등록
*/
const fn_regist = function() {
var bnfInnb = $('#regForm #bnfInnb').val();
var checked = fn_check_valid(bnfInnb);
if(checked) {
var url = '<c:url value="/mngr/bnft/insupdBnftIntrst"/>';
var msg1 = '관심분야 혜택을 <spring:message code="confirm.common.insert"/>';
var msg2 = '<spring:message code="success.common.insert"/>';
var msg3 = '<spring:message code="fail.common.insert"/>';
if(bnfInnb) {
msg1 = '관심분야 혜택을 <spring:message code="confirm.common.update"/>';
msg2 = '<spring:message code="success.common.insert"/>';
msg3 = '<spring:message code="fail.common.update"/>';
}
const formData = new FormData();
$('#regForm').serializeArray().forEach(function (item) {
formData.append(item.name, item.value);
});
for(var i=0; i<$('#divIntrstArea div[id^="divIntrst_"]').length; i++) {
var currDivId = $('#divIntrstArea div[id^="divIntrst_"]').eq(i).attr('id');
var idx = $('#' + currDivId).data('idx');
var dropzoneID = "#my-dropzone" + idx;
var myDropzone = Dropzone.forElement(dropzoneID);
if (myDropzone.files.length > 0) {
myDropzone.files.forEach(function(file) {
formData.append('files_' + idx, file);
});
} else {
formData.append('files_' + idx, null); // 빈 파일 정보 추가
}
formData.append('dzIdx_' + idx, idx);
}
if (confirm(msg1)) {
$.ajax({
type: 'post',
enctype: 'multipart/form-data',
url: url,
data: formData,
contentType: false,
processData: false,
success: function (data) {
var str = JSON.parse(data.resBody.result);
if (str.result == 'success') {
alert(msg2);
//저장 후 수정화면으로 이동
if(fn_is_empty(bnfInnb)) {
fn_move_dtl_uptpage(data.resBody.result.replace(/[^0-9]/g, ""));
} else {
fn_move_dtl_uptpage(bnfInnb);
}
} else {
alert(msg3);
}
}
});
}
}
};
/**
* 입력값 체크
*/
function fn_check_valid(bnfInnb) {
$('#bnfWordsCn').val(fn_get_editor_data('#bnfWordsCn'));
if (fn_is_empty($('#mlgRwdAmt_1').val())) {
alert('보상 마일리지를 입력하세요.');
return false;
} else if(fn_is_empty($('#bnfWordsCn').val())) {
alert('참여방법 안내를 입력하세요.');
return false;
}
for(var i=0; i<$('#divIntrstArea div[id^="divIntrst_"]').length; i++) {
var currDivId = $('#divIntrstArea div[id^="divIntrst_"]').eq(i).attr('id');
var idx = $('#' + currDivId).data('idx');
var divDisplay = $('#' + currDivId).css('display');
if(divDisplay !== 'none') {
var intrstNm = $('#intrstNm_' + idx).val();
var imgFile = $('#bfeImgFilCours_' + idx).val();
var dropzone = Dropzone.forElement('#my-dropzone' + idx);
var sortOrdr = $('#sortOrdr_' + idx).val();
var useAt = $('#useAt_' + idx).val();
if(fn_is_empty(intrstNm)) {
alert(idx + '번째 항목의 관심분야명을 입력하세요.');
return false;
}
if(fn_is_empty(imgFile) && dropzone.files.length < 1) {
alert(idx + '번째 항목의 아이콘이미지를 입력하세요.');
return false;
}
if(fn_is_empty(sortOrdr)) {
alert(idx + '번째 항목의 노출순서를 입력하세요.');
return false;
}
if(fn_is_empty(useAt)) {
alert(idx + '번째 항목의 사용여부를 선택하세요.');
return false;
}
}
}
// 관심분야 고유번호가 없고 delAt가 'Y'인 것은 신규 추가된 항목을 삭제한것이므로..
// formData.append에서 제외되도록 remove()
for(var i=0; i<$('#divIntrstArea div[id^="divIntrst_"]').length; i++) {
var currDivId = $('#divIntrstArea div[id^="divIntrst_"]').eq(i).attr('id');
var idx = $('#' + currDivId).data('idx');
var intrstInnb = $('#bnfIntrstInnb_' + idx).val();
var delAt = $('#delAt_' + idx).val();
if(fn_is_empty(intrstInnb) && delAt == 'Y') {
$('#' + currDivId).remove();
}
}
return true;
}
/**
* 목록 이동
*/
function fn_select_list() {
$('#listForm').attr('action', '<c:url value="/mngr/bnft/selectBnftListInqireForm"/>');
$('#listForm').attr('method', 'post');
$('#listForm').submit();
};
/**
* 수정폼 이동
*/
const fn_move_dtl_uptpage = function(Innb) {
const url = '<c:url value="/mngr/bnft/selectBnftDtlUpdtForm"/>';
$('#listForm').attr('action', url);
$('#listForm').attr('method', 'post');
$('#pageIndex').val(1);
$('#listForm #bnfInnb').val(Innb);
$('#listForm').submit();
}
/**
* 항목 추가
*/
function fn_intrst_add(e) {
event.preventDefault();
var cnt = $('#divIntrstArea div[id^="divIntrst_"]').length;
var idx = cnt + 1;
const divTmp = $('#divIntrstTmpl').html().replace(/@idx/g, idx);
$('#divIntrstArea').append(divTmp);
var dropzoneID = "my-dropzone" + idx;
fn_init_dropzone(dropzoneID);
//$('#sortOrdr_' + idx).val(idx);
}
/**
* 항목 삭제
*/
function fn_intrst_del(pIdx) {
$('#divIntrst_' + pIdx).css('display', 'none');
$('#delAt_' + pIdx).val('Y');
$('#useAt_' + pIdx).val('N');
}
/**
* 등록이미지 삭제
*/
function fn_img_delete(tgtId) {
$('#' + tgtId).find('img').attr('src', '');
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">관심분야 관리</h2>
<div class="page-title__btn-container">
<button class="btn primary" onclick="fn_regist(); return false;" ><spring:message code="button.save"/></button>
</div>
</div>
<form id="regForm" name="regForm" class="common-form" method="post" action="" enctype="multipart/form-data">
<input type="hidden" id="bnfInnb" name="bnfInnb" value="<c:out value="${ resultMap.paramVO.bnfInnb }"/>"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<input type="hidden" id="bnfSj" name="bnfSj" value="">
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
<input type="hidden" id="cdnurl" value="${cdnurl}"/>
<section id="section01" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">보상설정</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>목록</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 88%">
</colgroup>
<tbody>
<tr>
<th>보상</th>
<td>
<div class="td-inner">
<div class="input-container">
<input type="hidden" id="bnfRwdCateDv_1" name="rwdVO.arrBnfRwdCateDvCd" value="12010"/>
<input type="hidden" id="bnfRwdGodsDv_1" name="rwdVO.arrBnfRwdGodsDvCd" value="010"/>
<span class="mr-20">마일리지</span>
<input type="text" class="input-text wd100" id="mlgRwdAmt_1" name="rwdVO.arrMlgRwdAmt" value="" placeholder="0">
<span class="ml-4">원</span>
</div>
<p class="fyi gray-7 ml-10"> 매월 최초 설정/변경시 회원당 1회에 한함 </p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
<section id="section02" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">참여방법 안내</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper vertical">
<table class="table">
<caption>목록</caption>
<colgroup>
<col style="width: 12%;">
<col>
</colgroup>
<tbody>
<tr>
<th>설명</th>
<td>
<div class="td-inner">
<textarea class="textarea" id="bnfWordsCn" name="bnfWordsCn" title="" cols="30" rows="2"></textarea>
</div>
</td>
</tr>
</tbody>
</table>
<div class="form-control-container mt-10">
<div class="left">
<p class="fyi gray-7">참여 방법, 경품, 당첨자 발표 방식, 관련 법규 등 이벤트에 대해 사용자에게 인내할 내용을 적어주세요.</p>
</div>
<div class="center"></div>
<div class="right"></div>
</div>
</div>
</div>
</section>
<section id="section03" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">항목설정</h3>
<div class="right">
<button class="btn xsm outline primary" onclick="fn_intrst_add(event); return false;">+ 추가</button>
</div>
</div>
<div id="divIntrstArea">
</div>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
<!-- 항목 템플릿 -->
<div id="divIntrstTmpl" style="display:none;">
<div class="content-fold__content" id="divIntrst_@idx" data-idx="@idx">
<input type="hidden" id="bnfIntrstInnb_@idx" name="intrstVO.arrBnfIntrstInnb" value="">
<input type="hidden" id="bfeImgFilCours_@idx" name="intrstVO.arrBfeImgFilCours" value="">
<input type="hidden" id="bfeImgFilNm_@idx" name="intrstVO.arrBfeImgFilNm" value="">
<input type="hidden" id="delAt_@idx" name="intrstVO.arrDelAt" value="N">
<input type="hidden" id="divIdx_@idx" name="intrstVO.arrDivIdx" value="@idx">
<div class="alignR mb5">
<button class="btn xsm outline delete" onclick="fn_intrst_del('@idx'); return false;">- 삭제</button>
</div>
<div class="table-wrapper">
<table class="table">
<caption>관심분야 항목설정</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 38%;">
<col style="width: 12%;">
<col style="width: 38%;">
</colgroup>
<tbody>
<tr>
<th>관심분야명</th>
<td>
<div class="input-container">
<input type="text" class="input-text wd400" id="intrstNm_@idx" name="intrstVO.arrIntrstNm" value="" title="" maxlength="20">
<p class="gray-7 ml-10"> 최대20자</p>
</div>
</td>
<th rowspan="3">아이콘<br>(권장 크기: 42 X 42)</th>
<td rowspan="3">
<div class="td-inner nowrap">
<div class="dropzone-wrapper sm">
<div class="dropzone" id="my-dropzone@idx"></div>
</div>
<div class="file-preview__container" id="imgFilView_@idx" style="display:none;">
<div class="file-preview">
<span class="file-preview__number">등록한 사진</span>
<button class="file-preview__delete" onclick="fn_img_delete('imgFilView_@idx'); return false;">
<span class="visually-hidden">삭제</span>
</button>
<div class="file-preview__image wd100">
<img src="" onerror="this.src='/mngr/images/image_placeholder.png'">
</div>
</div>
</div>
</div>
</td>
</tr>
<tr>
<th>노출순서</th>
<td class="center">
<div class="input-container">
<input type="text" class="input-text wd200" id="sortOrdr_@idx" name="intrstVO.arrSortOrdr" value="" title="">
</div>
</td>
</tr>
<tr>
<th>사용여부</th>
<td>
<div class="input-container">
<div class="custom-radio ml-10">
<input type="radio" id="rdoUseAtY_@idx" name="rdoUseAt_@idx" data-no="@idx" value="Y">
<label for="rdoUseAtY_@idx">사용</label>
</div>
<div class="custom-radio ml-10">
<input type="radio" id="rdoUseAtN_@idx" name="rdoUseAt_@idx" data-no="@idx" value="N">
<label for="rdoUseAtN_@idx">미사용</label>
</div>
<input type="hidden" id="useAt_@idx" name="intrstVO.arrUseAt" value="">
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<!-- 쿠폰찾기팝업 -->
<div id="modalDiv">
</div>
<form id="listForm" name="listForm">
<input type="hidden" id="bnfInnb" name ="bnfInnb"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="srchPdDv" name="srchPdDv" value="${ resultMap.paramVO.srchPdDv }">
<input type="hidden" id="srchStartDt" name="srchStartDt" value="${ resultMap.paramVO.srchStartDt }">
<input type="hidden" id="srchEndDt" name="srchEndDt" value="${ resultMap.paramVO.srchEndDt }">
<input type="hidden" id="srchSttDv" name="srchSttDv" value="${ resultMap.paramVO.srchSttDv }"/>
<input type="hidden" id="srchUseAt" name="srchUseAt" value="${ resultMap.paramVO.srchUseAt }"/>
<input type="hidden" id="srchDv" name="srchDv" value="${ resultMap.paramVO.srchDv }"/>
<input type="hidden" id="srchKeyword" name="srchKeyword" value="${ resultMap.paramVO.srchKeyword }"/>
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultMap.paramVO.pageIndex }"/>
<input type="hidden" id="recordCountPerPage" name="recordCountPerPage" value="${ resultMap.paramVO.recordCountPerPage }"/>
<input type="hidden" id="pageUnit" name="pageUnit" value="${ resultMap.paramVO.pageUnit }"/>
</form>
</body>
</html>

View File

@@ -0,0 +1,524 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : IntakchlRegistForm.jsp
Description : 섭취챌린지 혜택 등록 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-08-14 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
fn_create_ckeditor('#bnfWordsCn');
//진행기간 from to 체크(현재 날짜 보다 작을 시 alert)
$(document).on('change', '.datepicker', function () {
fn_check_fromTo('#bnfBgnDe', '#bnfEndDe', "date");
});
// 보상 마일리지/쿠폰선택시 초기화
$('[name^="rdoGodsDv_"]').click(function() {
var gdvcd = $(this).val();
var seqno = $(this).data('no');
if(gdvcd == '010') {
$('#couponInnb_' + seqno).val('');
$('#couponName_' + seqno).val('');
} else {
$('#mlgRwdAmt_' + seqno).val('');
}
$('#bnfRwdGodsDv_' + seqno).val(gdvcd);
});
// 마일리지, 할인율, 할인금액 숫자입력 체크
$('input[id^="mlgRwdAmt_"]').on('input', function() {
this.value = this.value.replace(/[^0-9]/g, '');
});
var bnfInnb = $('#regForm #bnfInnb').val();
fn_set_detail(bnfInnb);
});
/**
* 수정상세 정보 조회
*/
const fn_set_detail = function(bnfInnb) {
const url = '<c:url value="/mngr/bnft/selectBnftDtlUpdtInqire"/>';
if(bnfInnb){
$.ajax({
type: 'post',
url: url,
data : {
'bnfInnb' : bnfInnb
},
success: function (result) {
const data = JSON.parse(result.resBody.result);
const bnftData = data.bnftData;
const bnftRwdList = data.bnftRwdList;
$('[name=useAt][value=' + bnftData.useAt + ']').prop('checked',true);
$('#bnfBgnDe').val(bnftData.bnfBgnDe);
$('#bnfBgnTme').val(bnftData.bnfBgnTme);
$('#bnfEndDe').val(bnftData.bnfEndDe);
$('#bnfEndTme').val(bnftData.bnfEndTme);
$('#bnfSj').val(bnftData.bnfSj);
fn_set_editor_data('#bnfWordsCn', bnftData.bnfWordsCn);
for(var i=0; i < bnftRwdList.length; i++) {
var rwdData = bnftRwdList[i]
var seq = i + 1;
$('#bnfRwdCateDv_' + seq).val(rwdData.bnfRwdCateDvCd);
if(rwdData.bnfRwdCateDvCd == '10010') {
$('#mlgRwdAmt_' + seq).val(rwdData.mlgRwdAmt);
} else {
$('#bnfRwdGodsDv_' + seq).val(rwdData.bnfRwdGodsDvCd);
if(rwdData.bnfRwdGodsDvCd == '010') {
$('#rdoGodsDvM_' + seq).prop("checked", true);
$('#couponInnb_' + seq).val('');
$('#couponName_' + seq).val('');
$('#mlgRwdAmt_' + seq).val(rwdData.mlgRwdAmt);
} else if(rwdData.bnfRwdGodsDvCd == '020') {
$('#rdoGodsDvC_' + seq).prop("checked", true);
$('#couponInnb_' + seq).val(rwdData.couponInnb);
$('#couponName_' + seq).val(rwdData.couponName);
$('#mlgRwdAmt_' + seq).val('');
}
}
}
}
});
} else {
$('#bnfBgnTme, #bnfEndTme').val('00:00');
}
}
/**
* 등록
*/
const fn_regist = function() {
var bnfInnb = $('#regForm #bnfInnb').val();
var checked = fn_check_valid(bnfInnb);
if(checked) {
var url = '<c:url value="/mngr/bnft/insertBnftInfo"/>';
var msg1 = '섭취챌린지 혜택을 <spring:message code="confirm.common.insert"/>';
var msg2 = '<spring:message code="success.common.insert"/>';
var msg3 = '<spring:message code="fail.common.insert"/>';
if(bnfInnb) {
url = '<c:url value="/mngr/bnft/updateBnftInfo"/>';
msg1 = '섭취챌린지 혜택을 <spring:message code="confirm.common.update"/>';
msg2 = '<spring:message code="success.common.insert"/>';
msg3 = '<spring:message code="fail.common.update"/>';
}
const formData = new FormData();
$('#regForm').serializeArray().forEach(function (item) {
formData.append(item.name, item.value);
});
$(".dropzone").each(function(index) {
var dropzoneID = "#my-dropzone" + (index + 1);
var myDropzone = Dropzone.forElement(dropzoneID);
myDropzone.files.forEach(function(file) {
formData.append('cnFiles', file);
});
});
if (confirm(msg1)) {
$.ajax({
type: 'post',
enctype: 'multipart/form-data',
url: url,
data: formData,
contentType: false,
processData: false,
success: function (data) {
var str = JSON.parse(data.resBody.result);
if (str.result == 'success') {
alert(msg2);
//저장 후 수정화면으로 이동
if(fn_is_empty(bnfInnb)) {
fn_move_dtl_uptpage(data.resBody.result.replace(/[^0-9]/g, ""));
} else {
fn_move_dtl_uptpage(bnfInnb);
}
} else {
alert(msg3);
}
}
});
}
}
};
/**
* 입력값 체크
*/
function fn_check_valid(bnfInnb) {
var bgnDe = $('#bnfBgnDe').val();
var bgnTme = $('#bnfBgnTme').val();
var endDe = $('#bnfEndDe').val();
var endTme = $('#bnfEndTme').val();
$('#bnfWordsCn').val(fn_get_editor_data('#bnfWordsCn'));
if(fn_is_empty($('input[name=useAt]:checked').val())) {
alert('사용여부를 선택하세요.');
return false;
} else if(fn_is_empty(bgnDe)) {
alert('진행기간 시작일을 입력하세요.');
return false;
} else if(fn_is_empty(endDe)) {
alert('진행기간 종료일을 입력하세요.');
return false;
} else if(!fn_check_date(bgnDe, endDe)) {
alert('진행기간 종료일이 시작일보다 작습니다.');
return false;
} else if (!fn_check_date(bgnDe + ' ' + bgnTme, endDe + ' ' + endTme)) {
alert('진행기간 종료일이 시작일보다 작습니다.');
return false;
} else if(fn_is_empty($('#bnfWordsCn').val())) {
alert('참여방법 안내를 입력하세요.');
return false;
}
// 보상 체크
for (var i = 1; i <= 2; i++) {
var bnfRwdGodsDv = $('#bnfRwdGodsDv_' + i).val();
var mlgRwdAmt = $('#mlgRwdAmt_' + i).val();
var couponInnb = $('#couponInnb_' + i).val();
const strs = ['1일 100% 성공시', '30일 연속 성공시'];
var str = strs[i - 1];
if(fn_is_empty(bnfRwdGodsDv)) {
alert(str + ' 보상 종류을 선택하세요.');
return false;
} else if (bnfRwdGodsDv == '010' && fn_is_empty(mlgRwdAmt)) {
alert(str + ' 보상 마일리지를 입력하세요.');
return false;
} else if (bnfRwdGodsDv == '020' && fn_is_empty(couponInnb)) {
alert(str + ' 보상 쿠폰을 입력하세요.');
return false;
}
}
// 진행일시 중복 체크
var isValid = false;
$.ajax({
url: '<c:url value="/mngr/bnft/selectBnftDtOvlCnt"/>',
type: 'POST',
data: {
bnfInnb: $('#regForm #bnfInnb').val(),
bnfDvCd: $('#regForm #bnfDvCd').val(),
bnfBgnDt: bgnDe + ' ' + bgnTme + ':01',
bnfEndDt: endDe + ' ' + endTme + ':00'
},
async: false,
success: function(result) {
const data = JSON.parse(result.resBody.result);
var ovlCnt = data.ovlCnt;
if (ovlCnt > 0) {
alert('입력하신 진행기간에 이미 등록된 섭취챌린지 혜택이 있습니다.\n\n확인후 다시 입력하세요.');
isValid = false;
} else {
isValid = true;
}
},
error: function() {
alert('진행일시 중복 체크 중 오류가 발생했습니다.');
isValid = false;
}
});
return isValid;
}
/**
* 목록 이동
*/
function fn_select_list() {
$('#listForm').attr('action', '<c:url value="/mngr/bnft/selectBnftListInqireForm"/>');
$('#listForm').attr('method', 'post');
$('#listForm').submit();
};
/**
* 수정폼 이동
*/
const fn_move_dtl_uptpage = function(Innb) {
const url = '<c:url value="/mngr/bnft/selectBnftDtlUpdtForm"/>';
$('#listForm').attr('action', url);
$('#listForm').attr('method', 'post');
$('#pageIndex').val(1);
$('#listForm #bnfInnb').val(Innb);
$('#listForm').submit();
}
/**
* 수정폼 등록이미지 삭제
*/
function fn_img_delete(tgtId) {
$('#' + tgtId).find('img').attr('src', '');
}
/**
* 쿠폰찾기 모달 오픈
*/
const fn_open_modal_coupon = function(pIdx){
var modalDivSltr = '#modalDiv';
var modalSlrt = '#findCouponPopup';
var modalUrl = '<c:url value="/mngr/bnft/findCouponPopupForm"/>';
var param = '';
$('#rwdSeqno').val(pIdx);
$.ajax({
type: 'post',
url: modalUrl,
data: {
param
},
success: function (data) {
$(modalSlrt).remove();
$(modalDivSltr).html(data);
$(modalSlrt).modal();
}
});
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">섭취챌린지 상세</h2>
<div class="page-title__btn-container">
<a href="#selectCouponListInqire" class="btn outline" onclick="fn_select_list('1'); return false;"><spring:message code="button.list"/></a>
<button class="btn primary" onclick="fn_regist(); return false;" ><spring:message code="button.save"/></button>
</div>
</div>
<form id="regForm" name="regForm" class="common-form" method="post" action="" enctype="multipart/form-data">
<input type="hidden" id="bnfInnb" name="bnfInnb" value="<c:out value="${ resultMap.paramVO.bnfInnb }"/>"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<input type="hidden" id="rwdSeqno" name="rwdSeqno" value="">
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
<input type="hidden" id="cdnurl" value="${cdnurl}"/>
<section id="section01" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">기본설정</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>기본설정 상세내용</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 88%">
</colgroup>
<tbody>
<tr>
<th>사용여부 <span class="red-7">*</span></th>
<td>
<div class="custom-radio-container">
<div class="custom-radio">
<input type="radio" id="useAtY" name="useAt" value="Y">
<label for="useAtY">사용</label>
</div>
<div class="custom-radio ml-10">
<input type="radio" id="useAtN" name="useAt" value="N">
<label for="useAtN">미사용</label>
</div>
<p class="fyi gray-7 ml-10">‘미사용’ 선택시 사용자 참여 불가능</p>
</div>
</td>
</tr>
<tr>
<th>진행기간<span class="red-7">*</span></th>
<td>
<div class="td-inner">
<input type="text" id="bnfBgnDe" name="bnfBgnDe" class="datepicker" title="시작 날짜 선택" value="" autocomplete="off" readonly>
<div class="timepicker-container">
<input type="text" id="bnfBgnTme" name="bnfBgnTme" class="bs-timepicker" title="시작 시간 설정" value="" readonly>
</div>
<span class="tilde">~</span>
<input type="text" id="bnfEndDe" name="bnfEndDe" class="datepicker" title="종료 날짜 선택" value="" autocomplete="off" readonly>
<div class="timepicker-container">
<input type="text" id="bnfEndTme" name="bnfEndTme" class="bs-timepicker" title="종료 시간 설정" value="" readonly>
</div>
<p class="fyi gray-7 ml-10"></p>
</div>
</td>
</tr>
<tr>
<th>제목(관리용)</th>
<td>
<div class="input-container">
<input type="text" id="bnfSj" name="bnfSj" class="input-text wd580" value="" title="">
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
<section id="section02" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">보상설정</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>목록</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 88%">
</colgroup>
<tbody>
<tr>
<th>1일 100% 성공시</th>
<td>
<div class="input-container">
<input type="hidden" id="bnfRwdCateDv_1" name="rwdVO.arrBnfRwdCateDvCd" value="10010"/>
<input type="hidden" id="bnfRwdGodsDv_1" name="rwdVO.arrBnfRwdGodsDvCd" value="010"/>
<input type="hidden" id="couponInnb_2" name="rwdVO.arrCouponInnb" value="">
<span class="mr-20">마일리지</span>
<input type="text" class="input-text wd100" id="mlgRwdAmt_1" name="rwdVO.arrMlgRwdAmt" value="" placeholder="0">
<p class="gray-7 ml-10">원</p>
</div>
</td>
</tr>
<tr>
<th>30일 연속 성공시 추가보상</th>
<td>
<div class="input-container wd300">
<input type="hidden" id="bnfRwdCateDv_2" name="rwdVO.arrBnfRwdCateDvCd" value="10020"/>
<input type="hidden" id="bnfRwdGodsDv_2" name="rwdVO.arrBnfRwdGodsDvCd" value=""/>
<div class="custom-radio wd100 mr-20">
<input type="radio" id="rdoGodsDvM_2" name="rdoGodsDv_2" data-no="2" value="010">
<label for="rdoGodsDvM_2">마일리지</label>
</div>
<input type="text" class="input-text right" id="mlgRwdAmt_2" name="rwdVO.arrMlgRwdAmt" value="" placeholder="0">
</div>
<div class="input-container wd300">
<div class="custom-radio wd100 mr-20">
<input type="radio" id="rdoGodsDvC_2" name="rdoGodsDv_2" data-no="2" value="020">
<label for="rdoGodsDvC_2">쿠폰</label>
</div>
<input type="hidden" id="couponInnb_2" name="rwdVO.arrCouponInnb" value="">
<input type="text" class="input-text wd250" id="couponName_2" name="couponName_2" value="" readonly>
<a href="#" class="btn xsm gray ml-5" onclick="fn_open_modal_coupon('2'); return false;">찾기</a>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
<section id="section03" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">참여방법 안내</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper vertical">
<table class="table">
<caption>목록</caption>
<colgroup>
<col style="width: 12%;">
<col>
</colgroup>
<tbody>
<tr>
<th>설명</th>
<td>
<div class="form-control-container mb-5">
<div class="left"> &nbsp; </div>
<div class="center"> &nbsp; </div>
<div class="right">
<!--<button class="btn xsm light-gray"> 이전내용 불러오기 </button>-->
</div>
</div>
<div class="td-inner">
<textarea class="textarea" id="bnfWordsCn" name="bnfWordsCn" title="" cols="30" rows="2"></textarea>
</div>
</td>
</tr>
</tbody>
</table>
<div class="form-control-container mt-10">
<div class="left">
<p class="fyi gray-7">참여 방법, 경품, 당첨자 발표 방식, 관련 법규 등 이벤트에 대해 사용자에게 인내할 내용을 적어주세요.</p>
</div>
<div class="center">
</div>
<div class="right">
<!--<button class="btn outline mr-10"> 삭제 </button>-->
</div>
</div>
</div>
</div>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
<!-- 쿠폰찾기팝업 -->
<div id="modalDiv">
</div>
<form id="listForm" name="listForm">
<input type="hidden" id="bnfInnb" name ="bnfInnb"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="srchPdDv" name="srchPdDv" value="${ resultMap.paramVO.srchPdDv }">
<input type="hidden" id="srchStartDt" name="srchStartDt" value="${ resultMap.paramVO.srchStartDt }">
<input type="hidden" id="srchEndDt" name="srchEndDt" value="${ resultMap.paramVO.srchEndDt }">
<input type="hidden" id="srchSttDv" name="srchSttDv" value="${ resultMap.paramVO.srchSttDv }"/>
<input type="hidden" id="srchUseAt" name="srchUseAt" value="${ resultMap.paramVO.srchUseAt }"/>
<input type="hidden" id="srchDv" name="srchDv" value="${ resultMap.paramVO.srchDv }"/>
<input type="hidden" id="srchKeyword" name="srchKeyword" value="${ resultMap.paramVO.srchKeyword }"/>
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultMap.paramVO.pageIndex }"/>
<input type="hidden" id="recordCountPerPage" name="recordCountPerPage" value="${ resultMap.paramVO.recordCountPerPage }"/>
<input type="hidden" id="pageUnit" name="pageUnit" value="${ resultMap.paramVO.pageUnit }"/>
</form>
</body>
</html>

View File

@@ -0,0 +1,832 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : LucklottRegistForm.jsp
Description : 행운복권 혜택 등록 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-07-25 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
fn_create_ckeditor('#bnfWordsCn');
//진행기간 from to 체크(현재 날짜 보다 작을 시 alert)
$(document).on('change', '.datepicker', function () {
fn_check_fromTo('#bnfBgnDe', '#bnfEndDe', "date");
});
// 보상 마일리지/쿠폰선택시 초기화
$('[name^="rdoGodsDv_"]').click(function() {
var gdvcd = $(this).val();
var seqno = $(this).data('no');
if(gdvcd == '010') {
$('#couponInnb_' + seqno).val('');
$('#couponName_' + seqno).val('');
} else {
$('#mlgRwdAmt_' + seqno).val('');
}
$('#bnfRwdGodsDv_' + seqno).val(gdvcd);
});
// 마일리지, 상품수량, 당첨확률 숫자입력 체크
$('input[id^="mlgRwdAmt_"], input[id^="przwinQy_"], input[id^="przwinPrc_"]').on('input', function() {
if (this.id.startsWith('przwinPrc_')) {
this.value = this.value.replace(/[^0-9.]/g, '');
// 소수점이 여러 번 입력되지 않도록 함
if ((this.value.match(/\./g) || []).length > 1) {
this.value = this.value.slice(0, -1);
}
} else {
this.value = this.value.replace(/[^0-9]/g, '');
}
});
var bnfInnb = $('#regForm #bnfInnb').val();
fn_set_detail(bnfInnb);
});
/**
* 수정상세 정보 조회
*/
const fn_set_detail = function(bnfInnb) {
const url = '<c:url value="/mngr/bnft/selectBnftDtlUpdtInqire"/>';
if(bnfInnb){
$.ajax({
type: 'post',
url: url,
data : {
'bnfInnb' : bnfInnb,
'bnfDvCd' : $('#bnfDvCd').val()
},
success: function (result) {
const data = JSON.parse(result.resBody.result);
const bnftData = data.bnftData;
const bnftRwdList = data.bnftRwdList;
const bnftRmnList = data.bnftRemainList;
$('[name=useAt][value=' + bnftData.useAt + ']').prop('checked',true);
$('#bnfBgnDe').val(bnftData.bnfBgnDe);
$('#bnfBgnTme').val(bnftData.bnfBgnTme);
$('#bnfEndDe').val(bnftData.bnfEndDe);
$('#bnfEndTme').val(bnftData.bnfEndTme);
$('#bnfSj').val(bnftData.bnfSj);
$('#scrRwdLinkUrl').val(bnftData.scrRwdLinkUrl);
fn_set_editor_data('#bnfWordsCn', bnftData.bnfWordsCn);
for(var i=0; i < bnftRwdList.length; i++) {
var rwdData = bnftRwdList[i]
var seq = i + 1;
$('#bnfRwdCateDv_' + seq).val(rwdData.bnfRwdCateDvCd);
$('#bnfRwdGodsDv_' + seq).val(rwdData.bnfRwdGodsDvCd);
$('#itmNm_' + seq).val(rwdData.itmNm);
$('#przwinQy_' + seq).val(rwdData.przwinQy);
$('#przwinPrc_' + seq).val(rwdData.przwinPrc);
if(rwdData.bnfRwdGodsDvCd == '010') {
$('#rdoGodsDvM_' + seq).prop("checked", true);
$('#couponInnb_' + seq).val('');
$('#couponName_' + seq).val('');
$('#mlgRwdAmt_' + seq).val(rwdData.mlgRwdAmt);
} else if(rwdData.bnfRwdGodsDvCd == '020') {
$('#rdoGodsDvC_' + seq).prop("checked", true);
$('#couponInnb_' + seq).val(rwdData.couponInnb);
$('#couponName_' + seq).val(rwdData.couponName);
$('#mlgRwdAmt_' + seq).val('');
}
if(bnftRmnList.length > 0) {
$('[name="tdRemain"]').show();
for(var j=0; j < bnftRmnList.length; j++) {
var rmnData = bnftRmnList[i];
if(rwdData.bnfRwdCateDvCd = rmnData.bnfRwdCateDvCd) {
$('#remainQy_' + seq).text(rmnData.remainQy);
break;
}
}
}
}
if(!fn_is_empty(bnftData.scrReprsntImg)) {
var imgPath = $('#cdnurl').val() + bnftData.scrReprsntImg;
$('#scrReprsntImgView').find('img').attr('src', imgPath);
$('#scrReprsntImgView').css('display', 'block');
}
if(!fn_is_empty(bnftData.scrRwdImg)) {
var imgPath = $('#cdnurl').val() + bnftData.scrRwdImg;
$('#scrRwdImgView').find('img').attr('src', imgPath);
$('#scrRwdImgView').css('display', 'block');
}
}
});
} else {
$('#bnfBgnTme, #bnfEndTme').val('00:00');
}
}
/**
* 등록
*/
const fn_regist = function() {
var bnfInnb = $('#regForm #bnfInnb').val();
var checked = fn_check_valid(bnfInnb);
if(checked) {
var url = '<c:url value="/mngr/bnft/insertBnftInfo"/>';
var msg1 = '행운복권 혜택을 <spring:message code="confirm.common.insert"/>';
var msg2 = '<spring:message code="success.common.insert"/>';
var msg3 = '<spring:message code="fail.common.insert"/>';
if(bnfInnb) {
url = '<c:url value="/mngr/bnft/updateBnftInfo"/>';
msg1 = '행운복권 혜택을 <spring:message code="confirm.common.update"/>';
msg2 = '<spring:message code="success.common.insert"/>';
msg3 = '<spring:message code="fail.common.update"/>';
}
const formData = new FormData();
$('#regForm').serializeArray().forEach(function (item) {
formData.append(item.name, item.value);
});
$(".dropzone").each(function(index) {
var dropzoneID = "#my-dropzone" + (index + 1);
var myDropzone = Dropzone.forElement(dropzoneID);
myDropzone.files.forEach(function(file) {
formData.append('files', file);
});
});
if (confirm(msg1)) {
$.ajax({
type: 'post',
enctype: 'multipart/form-data',
url: url,
data: formData,
contentType: false,
processData: false,
success: function (data) {
var str = JSON.parse(data.resBody.result);
if (str.result == 'success') {
alert(msg2);
//저장 후 수정화면으로 이동
if(fn_is_empty(bnfInnb)) {
fn_move_dtl_uptpage(data.resBody.result.replace(/[^0-9]/g, ""));
} else {
fn_move_dtl_uptpage(bnfInnb);
}
} else {
alert(msg3);
}
}
});
}
}
};
/**
* 입력값 체크
*/
function fn_check_valid(bnfInnb) {
var myDropzone1 = Dropzone.forElement('#my-dropzone1');
var myDropzone2 = Dropzone.forElement('#my-dropzone2');
var scrReprsntImgSrc = $('#scrReprsntImgView').find('img').attr('src');
var scrRwdImgSrc = $('#scrRwdImgView').find('img').attr('src');
if(scrReprsntImgSrc.indexOf('image_placeholder.png') > -1) {
scrReprsntImgSrc = '';
}
if(scrRwdImgSrc.indexOf('image_placeholder.png') > -1) {
scrRwdImgSrc = '';
}
var bgnDe = $('#bnfBgnDe').val();
var bgnTme = $('#bnfBgnTme').val();
var endDe = $('#bnfEndDe').val();
var endTme = $('#bnfEndTme').val();
$('#bnfWordsCn').val(fn_get_editor_data('#bnfWordsCn'));
if(fn_is_empty($('input[name=useAt]:checked').val())) {
alert('사용여부를 선택하세요.');
return false;
} else if(fn_is_empty(bgnDe)) {
alert('진행기간 시작일을 입력하세요.');
return false;
} else if(fn_is_empty(endDe)) {
alert('진행기간 종료일을 입력하세요.');
return false;
} else if(!fn_check_date(bgnDe, endDe)) {
alert('진행기간 종료일이 시작일보다 작습니다.');
return false;
} else if (!fn_check_date(bgnDe + ' ' + bgnTme, endDe + ' ' + endTme)) {
alert('진행기간 종료일이 시작일보다 작습니다.');
return false;
} else if(fn_is_empty($('#bnfSj').val())) {
alert('제목을 입력하세요.');
return false;
}
// 보상 체크
for (var i = 1; i <= 4; i++) {
var itmNm = $('#itmNm_' + i).val();
var przwinQy = $('#przwinQy_' + i).val();
var przwinPrc = $('#przwinPrc_' + i).val();
var bnfRwdGodsDv = $('#bnfRwdGodsDv_' + i).val();
var mlgRwdAmt = $('#mlgRwdAmt_' + i).val();
var couponInnb = $('#couponInnb_' + i).val();
const strs = ['1등', '2등', '3등', '행운상'];
var str = strs[i - 1];
if(fn_is_empty(itmNm)) {
alert(str + ' 보상 상품명을 입력하세요.');
return false;
} else if(fn_is_empty(przwinQy)) {
alert(str + ' 보상 수량을 입력하세요.');
return false;
} else if(fn_is_empty(przwinPrc)) {
alert(str + ' 보상 당첨확률을 입력하세요.');
return false;
} else if(fn_is_empty(bnfRwdGodsDv)) {
alert(str + ' 보상 종류을 선택하세요.');
return false;
} else if (bnfRwdGodsDv == '010' && fn_is_empty(mlgRwdAmt)) {
alert(str + ' 보상 마일리지를 입력하세요.');
return false;
} else if (bnfRwdGodsDv == '020' && fn_is_empty(couponInnb)) {
alert(str + ' 보상 쿠폰을 입력하세요.');
return false;
}
}
if(fn_is_empty(scrReprsntImgSrc) && myDropzone1.files.length < 1) {
alert('대표이미지를 첨부하세요.');
return false;
} else if(fn_is_empty(scrRwdImgSrc) && myDropzone2.files.length < 1) {
alert('보상이미지를 첨부하세요.');
return false;
} else if(fn_is_empty($('#bnfWordsCn').val())) {
alert('참여방법 안내를 입력하세요.');
return false;
}
// 진행일시 중복 체크
var isValid = false;
$.ajax({
url: '<c:url value="/mngr/bnft/selectBnftDtOvlCnt"/>',
type: 'POST',
data: {
bnfInnb: $('#regForm #bnfInnb').val(),
bnfDvCd: $('#regForm #bnfDvCd').val(),
bnfBgnDt: bgnDe + ' ' + bgnTme + ':01',
bnfEndDt: endDe + ' ' + endTme + ':00'
},
async: false,
success: function(result) {
const data = JSON.parse(result.resBody.result);
var ovlCnt = data.ovlCnt;
if (ovlCnt > 0) {
alert('입력하신 진행기간에 이미 등록된 행운복권 혜택이 있습니다.\n\n확인후 다시 입력하세요.');
isValid = false;
} else {
isValid = true;
}
},
error: function() {
alert('진행일시 중복 체크 중 오류가 발생했습니다.');
isValid = false;
}
});
return isValid;
}
/**
* 목록 이동
*/
function fn_select_list() {
$('#listForm').attr('action', '<c:url value="/mngr/bnft/selectBnftListInqireForm"/>');
$('#listForm').attr('method', 'post');
$('#listForm').submit();
};
/**
* 수정폼 이동
*/
const fn_move_dtl_uptpage = function(Innb) {
const url = '<c:url value="/mngr/bnft/selectBnftDtlUpdtForm"/>';
$('#listForm').attr('action', url);
$('#listForm').attr('method', 'post');
$('#pageIndex').val(1);
$('#listForm #bnfInnb').val(Innb);
$('#listForm').submit();
}
/**
* 수정폼 등록이미지 삭제
*/
function fn_img_delete(tgtId) {
$('#' + tgtId).find('img').attr('src', '');
}
/**
* 쿠폰찾기 모달 오픈
*/
const fn_open_modal_coupon = function(pIdx){
var modalDivSltr = '#modalDiv';
var modalSlrt = '#findCouponPopup';
var modalUrl = '<c:url value="/mngr/bnft/findCouponPopupForm"/>';
var param = '';
$('#rwdSeqno').val(pIdx);
$.ajax({
type: 'post',
url: modalUrl,
data: {
param
},
success: function (data) {
$(modalSlrt).remove();
$(modalDivSltr).html(data);
$(modalSlrt).modal();
}
});
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">행운복권 상세</h2>
<div class="page-title__btn-container">
<a href="#selectCouponListInqire" class="btn outline" onclick="fn_select_list('1'); return false;"><spring:message code="button.list"/></a>
<button class="btn primary" onclick="fn_regist(); return false;" ><spring:message code="button.save"/></button>
</div>
</div>
<div class="content-tab content-tab__fixed">
<a href="#section01" class="content-tab__scroll-btn">기본설정</a>
<a href="#section02" class="content-tab__scroll-btn">보상설정</a>
<a href="#section03" class="content-tab__scroll-btn">화면설정</a>
<a href="#section04" class="content-tab__scroll-btn">참여방법 안내</a>
</div>
<form id="regForm" name="regForm" class="common-form" method="post" action="" enctype="multipart/form-data">
<input type="hidden" id="bnfInnb" name="bnfInnb" value="<c:out value="${ resultMap.paramVO.bnfInnb }"/>"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<input type="hidden" id="rwdSeqno" name="rwdSeqno" value="">
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
<input type="hidden" id="cdnurl" value="${cdnurl}"/>
<section id="section01" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">기본설정</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>기본설정 상세내용</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 88%">
</colgroup>
<tbody>
<tr>
<th>사용여부 <span class="red-7">*</span></th>
<td>
<div class="custom-radio-container">
<div class="custom-radio">
<input type="radio" id="useAtY" name="useAt" value="Y">
<label for="useAtY">사용</label>
</div>
<div class="custom-radio ml-10">
<input type="radio" id="useAtN" name="useAt" value="N">
<label for="useAtN">미사용</label>
</div>
<p class="fyi gray-7 ml-10">‘미사용’ 선택시 사용자 참여 불가능</p>
</div>
</td>
</tr>
<tr>
<th>진행기간<span class="red-7">*</span></th>
<td>
<div class="td-inner">
<input type="text" id="bnfBgnDe" name="bnfBgnDe" class="datepicker" title="시작 날짜 선택" value="" autocomplete="off" readonly>
<div class="timepicker-container">
<input type="text" id="bnfBgnTme" name="bnfBgnTme" class="bs-timepicker" title="시작 시간 설정" value="" readonly>
</div>
<span class="tilde">~</span>
<input type="text" id="bnfEndDe" name="bnfEndDe" class="datepicker" title="종료 날짜 선택" value="" autocomplete="off" readonly>
<div class="timepicker-container">
<input type="text" id="bnfEndTme" name="bnfEndTme" class="bs-timepicker" title="종료 시간 설정" value="" readonly>
</div>
<p class="fyi gray-7 ml-10"></p>
</div>
</td>
</tr>
<tr>
<th>제목(관리용)</th>
<td>
<div class="input-container">
<input type="text" id="bnfSj" name="bnfSj" class="input-text wd580" value="" title="">
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
<section id="section02" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">보상설정(일)</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<hr class="horizontal-line">
<p class="fyi gray-7 mt-15">당첨확률: 총 합이 100%가 되도록 설정</p>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>보상설정 상세내용</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 48%;">
<col style="width: 20%;">
<col style="width: 20%;">
</colgroup>
<tbody>
<tr>
<th rowspan="2">1등</th>
<td>
<input type="hidden" id="bnfRwdCateDv_1" name="rwdVO.arrBnfRwdCateDvCd" value="03010"/>
<input type="hidden" id="bnfRwdGodsDv_1" name="rwdVO.arrBnfRwdGodsDvCd" value=""/>
<div class="input-container">
<span class="wd100">상품명</span>
<input type="text" class="input-text xsm wd580" id="itmNm_1" name="rwdVO.arrItmNm" value="" title="상품명">
</div>
</td>
<td>
<div class="td-inner">
<div class="input-container">
<span class="wd60">수량</span>
<input type="text" class="input-text right wd100 mr-5" id="przwinQy_1" name="rwdVO.arrPrzwinQy" value=""> 개
</div>
</div>
</td>
<td>
<div class="td-inner">
<div class="input-container">
<span class="wd60">당첨확률</span>
<input type="text" class="input-text right wd100 mr-5" id="przwinPrc_1" name="rwdVO.arrPrzwinPrc" value=""> %
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="custom-radio-container">
<div class="custom-radio wd90">
<input type="radio" id="rdoGodsDvM_1" name="rdoGodsDv_1" data-no="1" value="010">
<label for="rdoGodsDvM_1">마일리지</label>
</div>
<input type="text" class="input-text right" id="mlgRwdAmt_1" name="rwdVO.arrMlgRwdAmt" value="" placeholder="0">
<div class="custom-radio ml-10">
<input type="radio" id="rdoGodsDvC_1" name="rdoGodsDv_1" data-no="1" value="020">
<label for="rdoGodsDvC_1">쿠폰</label>
</div>
<input type="hidden" id="couponInnb_1" name="rwdVO.arrCouponInnb" value="">
<input type="text" class="input-text wd250" id="couponName_1" name="couponName_1" value="" readonly>
<a href="#" class="btn xsm gray ml-5" onclick="fn_open_modal_coupon('1'); return false;">찾기</a>
</div>
</td>
<td name="tdRemain" style="display:none;">
<span class="wd60">잔여수량 </span><span id="remainQy_1"></span>개
</td>
</tr>
<tr>
<th rowspan="2">2등</th>
<td>
<input type="hidden" id="bnfRwdCateDv_2" name="rwdVO.arrBnfRwdCateDvCd" value="03020"/>
<input type="hidden" id="bnfRwdGodsDv_2" name="rwdVO.arrBnfRwdGodsDvCd" value=""/>
<div class="input-container">
<span class="wd100">상품명</span>
<input type="text" class="input-text xsm wd580" id="itmNm_2" name="rwdVO.arrItmNm" value="" title="상품명">
</div>
</td>
<td>
<div class="td-inner">
<div class="input-container">
<span class="wd60">수량</span>
<input type="text" class="input-text right wd100 mr-5" id="przwinQy_2" name="rwdVO.arrPrzwinQy" value=""> 개
</div>
</div>
</td>
<td>
<div class="td-inner">
<div class="input-container">
<span class="wd60">당첨확률</span>
<input type="text" class="input-text right wd100 mr-5" id="przwinPrc_2" name="rwdVO.arrPrzwinPrc" value=""> %
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="custom-radio-container">
<div class="custom-radio wd90">
<input type="radio" id="rdoGodsDvM_2" name="rdoGodsDv_2" data-no="2" value="010">
<label for="rdoGodsDvM_2">마일리지</label>
</div>
<input type="text" class="input-text right" id="mlgRwdAmt_2" name="rwdVO.arrMlgRwdAmt" value="" placeholder="0">
<div class="custom-radio ml-10">
<input type="radio" id="rdoGodsDvC_2" name="rdoGodsDv_2" data-no="2" value="020">
<label for="rdoGodsDvC_2">쿠폰</label>
</div>
<input type="hidden" id="couponInnb_2" name="rwdVO.arrCouponInnb" value="">
<input type="text" class="input-text wd250" id="couponName_2" name="couponName_2" value="" readonly>
<a href="#" class="btn xsm gray ml-5" onclick="fn_open_modal_coupon('2'); return false;">찾기</a>
</div>
</td>
<td name="tdRemain" style="display:none;">
<span class="wd60">잔여수량 </span><span id="remainQy_2"></span>개
</td>
</tr>
<tr>
<th rowspan="2">3등</th>
<td>
<input type="hidden" id="bnfRwdCateDv_3" name="rwdVO.arrBnfRwdCateDvCd" value="03030"/>
<input type="hidden" id="bnfRwdGodsDv_3" name="rwdVO.arrBnfRwdGodsDvCd" value=""/>
<div class="input-container">
<span class="wd100">상품명</span>
<input type="text" class="input-text xsm wd580" id="itmNm_3" name="rwdVO.arrItmNm" value="" title="상품명">
</div>
</td>
<td>
<div class="td-inner">
<div class="input-container">
<span class="wd60">수량</span>
<input type="text" class="input-text right wd100 mr-5" id="przwinQy_3" name="rwdVO.arrPrzwinQy" value=""> 개
</div>
</div>
</td>
<td>
<div class="td-inner">
<div class="input-container">
<span class="wd60">당첨확률</span>
<input type="text" class="input-text right wd100 mr-5" id="przwinPrc_3" name="rwdVO.arrPrzwinPrc" value=""> %
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="custom-radio-container">
<div class="custom-radio wd90">
<input type="radio" id="rdoGodsDvM_3" name="rdoGodsDv_3" data-no="3" value="010">
<label for="rdoGodsDvM_3">마일리지</label>
</div>
<input type="text" class="input-text right" id="mlgRwdAmt_3" name="rwdVO.arrMlgRwdAmt" value="" placeholder="0">
<div class="custom-radio ml-10">
<input type="radio" id="rdoGodsDvC_3" name="rdoGodsDv_3" data-no="3" value="020">
<label for="rdoGodsDvC_3">쿠폰</label>
</div>
<input type="hidden" id="couponInnb_3" name="rwdVO.arrCouponInnb" value="">
<input type="text" class="input-text wd250" id="couponName_3" name="couponName_3" value="" readonly>
<a href="#" class="btn xsm gray ml-5" onclick="fn_open_modal_coupon('3'); return false;">찾기</a>
</div>
</td>
<td name="tdRemain" style="display:none;">
<span class="wd60">잔여수량 </span><span id="remainQy_3"></span>개
</td>
</tr>
<tr>
<th rowspan="2">행운상</th>
<td>
<input type="hidden" id="bnfRwdCateDv_4" name="rwdVO.arrBnfRwdCateDvCd" value="03040"/>
<input type="hidden" id="bnfRwdGodsDv_4" name="rwdVO.arrBnfRwdGodsDvCd" value=""/>
<div class="input-container">
<span class="wd100">상품명</span>
<input type="text" class="input-text xsm wd580" id="itmNm_4" name="rwdVO.arrItmNm" value="" title="상품명">
</div>
</td>
<td>
<div class="td-inner">
<div class="input-container">
<span class="wd60">수량</span>
<input type="text" class="input-text right wd100 mr-5" id="przwinQy_4" name="rwdVO.arrPrzwinQy" value=""> 개
</div>
</div>
</td>
<td>
<div class="td-inner">
<div class="input-container">
<span class="wd60">당첨확률</span>
<input type="text" class="input-text right wd100 mr-5" id="przwinPrc_4" name="rwdVO.arrPrzwinPrc" value=""> %
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="custom-radio-container">
<div class="custom-radio wd90">
<input type="radio" id="rdoGodsDvM_4" name="rdoGodsDv_4" data-no="4" value="010">
<label for="rdoGodsDvM_4">마일리지</label>
</div>
<input type="text" class="input-text right" id="mlgRwdAmt_4" name="rwdVO.arrMlgRwdAmt" value="" placeholder="0">
<div class="custom-radio ml-10">
<input type="radio" id="rdoGodsDvC_4" name="rdoGodsDv_4" data-no="4" value="020">
<label for="rdoGodsDvC_4">쿠폰</label>
</div>
<input type="hidden" id="couponInnb_4" name="rwdVO.arrCouponInnb" value="">
<input type="text" class="input-text wd250" id="couponName_4" name="couponName_4" value="" readonly>
<a href="#" class="btn xsm gray ml-5" onclick="fn_open_modal_coupon('4'); return false;">찾기</a>
</div>
</td>
<td name="tdRemain" style="display:none;">
<span class="wd60">잔여수량 </span><span id="remainQy_4"></span>개
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
<section id="section03" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">화면 설정</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 88%;">
</colgroup>
<tbody>
<tr>
<th>대표 이미지<br>(행운복권배경)</th>
<td>
<div class="td-inner nowrap">
<div class="dropzone-wrapper">
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.extensions.images')" var="acceptFileExtensions"/>
<div class="dropzone" id="my-dropzone1">
</div>
</div>
<div class="file-preview__container" id="scrReprsntImgView" style="display:none;">
<div class="file-preview">
<span class="file-preview__number">등록한 사진</span>
<button type="button" class="file-preview__delete" onclick="fn_img_delete('scrReprsntImgView'); return false;"><span class="visually-hidden">삭제</span></button>
<div class="file-preview__image wd200">
<img src="" alt="대표 이미지" onerror="this.src='/mngr/images/image_placeholder.png'">
</div>
</div>
</div>
</div>
</td>
</tr>
<tr>
<th>보상 이미지</th>
<td>
<div class="td-inner nowrap">
<div class="dropzone-wrapper">
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.extensions.images')" var="acceptFileExtensions"/>
<div class="dropzone" id="my-dropzone2">
</div>
</div>
<div class="file-preview__container" id="scrRwdImgView" style="display:none;">
<div class="file-preview">
<span class="file-preview__number">등록한 사진</span>
<button type="button" class="file-preview__delete" onclick="fn_img_delete('scrRwdImgView'); return false;"><span class="visually-hidden">삭제</span></button>
<div class="file-preview__image wd200">
<img src="" alt="보상 이미지" onerror="this.src='/mngr/images/image_placeholder.png'">
</div>
</div>
</div>
</div>
<div class="td-inner">
<span class="ml-10">이미지링크 [URL] &nbsp;</span>
<input class="input-text lg" type="text" id="scrRwdLinkUrl" name="scrRwdLinkUrl" title="해당 인풋에 대한 설명">
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
<section id="section04" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">참여방법 안내</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 12%;">
<col>
</colgroup>
<tbody>
<tr>
<th>설명</th>
<td>
<div class="form-control-container mb-5">
<div class="left"> &nbsp; </div>
<div class="center"> &nbsp; </div>
<div class="right">
<!--<button class="btn xsm light-gray"> 이전내용 불러오기 </button>-->
</div>
</div>
<div class="td-inner">
<textarea class="textarea" id="bnfWordsCn" name="bnfWordsCn" title="" cols="30" rows="2"></textarea>
</div>
</td>
</tr>
</tbody>
</table>
<div class="form-control-container mt-10">
<div class="left">
<p class="fyi gray-7">참여 방법, 경품, 당첨자 발표 방식, 관련 법규 등 이벤트에 대해 사용자에게 인내할 내용을 적어주세요.</p>
</div>
<div class="center">
</div>
<!-- <div class="right">
<button class="btn outline mr-10"> 삭제 </button>
</div> -->
</div>
</div>
</div>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
<!-- 쿠폰찾기팝업 -->
<div id="modalDiv">
</div>
<form id="listForm" name="listForm">
<input type="hidden" id="bnfInnb" name ="bnfInnb"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="srchPdDv" name="srchPdDv" value="${ resultMap.paramVO.srchPdDv }">
<input type="hidden" id="srchStartDt" name="srchStartDt" value="${ resultMap.paramVO.srchStartDt }">
<input type="hidden" id="srchEndDt" name="srchEndDt" value="${ resultMap.paramVO.srchEndDt }">
<input type="hidden" id="srchSttDv" name="srchSttDv" value="${ resultMap.paramVO.srchSttDv }"/>
<input type="hidden" id="srchUseAt" name="srchUseAt" value="${ resultMap.paramVO.srchUseAt }"/>
<input type="hidden" id="srchDv" name="srchDv" value="${ resultMap.paramVO.srchDv }"/>
<input type="hidden" id="srchKeyword" name="srchKeyword" value="${ resultMap.paramVO.srchKeyword }"/>
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultMap.paramVO.pageIndex }"/>
<input type="hidden" id="recordCountPerPage" name="recordCountPerPage" value="${ resultMap.paramVO.recordCountPerPage }"/>
<input type="hidden" id="pageUnit" name="pageUnit" value="${ resultMap.paramVO.pageUnit }"/>
</form>
</body>
</html>

View File

@@ -0,0 +1,458 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : LvshopRegistForm.jsp
Description : 라이브쇼핑 혜택 등록 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-07-30 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
fn_create_ckeditor('#wordsCn');
//진행기간 from to 체크(현재 날짜 보다 작을 시 alert)
$(document).on('change', '.datepicker', function () {
fn_check_fromTo('#bnfBgnDe', '#bnfEndDe', "date");
fn_check_fromTo('#cnBgnDe', '#cnEndDe', "date");
});
// 마일리지, 필수열람시간(초) 숫자입력 체크 , #tmeSecnd
$('input[id^="mlgRwdAmt_"]').on('input', function() {
this.value = this.value.replace(/[^0-9]/g, '');
});
var bnfInnb = $('#regForm #bnfInnb').val();
fn_set_detail(bnfInnb);
});
/**
* 수정상세 정보 조회
*/
const fn_set_detail = function(bnfInnb) {
const url = '<c:url value="/mngr/bnft/selectBnftDtlUpdtInqire"/>';
if(bnfInnb){
$.ajax({
type: 'post',
url: url,
data : {
'bnfInnb' : bnfInnb
},
success: function (result) {
const data = JSON.parse(result.resBody.result);
const bnftData = data.bnftData;
const bnftRwdList = data.bnftRwdList;
$('[name=useAt][value=' + bnftData.useAt + ']').prop('checked',true);
$('#bnfBgnDe').val(bnftData.bnfBgnDe);
$('#bnfBgnTme').val(bnftData.bnfBgnTme);
$('#bnfEndDe').val(bnftData.bnfEndDe);
$('#bnfEndTme').val(bnftData.bnfEndTme);
$('#cnSj').val(bnftData.cnSj);
$('#cnBgnDe').val(bnftData.cnBgnDe);
$('#cnEndDe').val(bnftData.cnEndDe);
$('#cnBgnTme').val(bnftData.cnBgnTme);
$('#cnEndTme').val(bnftData.cnEndTme);
$('#linkUrl').val(bnftData.linkUrl);
//$('#tmeSecnd').val(bnftData.tmeSecnd);
for(var i=0; i < bnftRwdList.length; i++) {
var rwdData = bnftRwdList[i]
$('#mlgRwdAmt_1').val(rwdData.mlgRwdAmt);
}
if(!fn_is_empty(bnftData.imgFilCours)) {
var imgPath = $('#cdnurl').val() + bnftData.imgFilCours;
$('#cnImgView').find('img').attr('src', imgPath);
$('#cnImgView').css('display', 'block');
}
fn_set_editor_data('#wordsCn', bnftData.wordsCn);
}
});
} else {
$('#bnfBgnTme, #bnfEndTme, #cnBgnTme, #cnEndTme').val('00:00');
}
}
/**
* 등록
*/
const fn_regist = function() {
var bnfInnb = $('#regForm #bnfInnb').val();
var checked = fn_check_valid(bnfInnb);
if(checked) {
var url = '<c:url value="/mngr/bnft/insertBnftInfo"/>';
var msg1 = '라이브쇼핑 혜택을 <spring:message code="confirm.common.insert"/>';
var msg2 = '<spring:message code="success.common.insert"/>';
var msg3 = '<spring:message code="fail.common.insert"/>';
if(bnfInnb) {
url = '<c:url value="/mngr/bnft/updateBnftInfo"/>';
msg1 = '라이브쇼핑 혜택을 <spring:message code="confirm.common.update"/>';
msg2 = '<spring:message code="success.common.insert"/>';
msg3 = '<spring:message code="fail.common.update"/>';
}
const formData = new FormData();
$('#regForm').serializeArray().forEach(function (item) {
formData.append(item.name, item.value);
});
$(".dropzone").each(function(index) {
var dropzoneID = "#my-dropzone" + (index + 1);
var myDropzone = Dropzone.forElement(dropzoneID);
myDropzone.files.forEach(function(file) {
formData.append('cnFiles', file);
});
});
if (confirm(msg1)) {
$.ajax({
type: 'post',
enctype: 'multipart/form-data',
url: url,
data: formData,
contentType: false,
processData: false,
success: function (data) {
var str = JSON.parse(data.resBody.result);
if (str.result == 'success') {
alert(msg2);
//저장 후 수정화면으로 이동
if(fn_is_empty(bnfInnb)) {
fn_move_dtl_uptpage(data.resBody.result.replace(/[^0-9]/g, ""));
} else {
fn_move_dtl_uptpage(bnfInnb);
}
} else {
alert(msg3);
}
}
});
}
}
};
/**
* 입력값 체크
*/
function fn_check_valid(bnfInnb) {
var myDropzone1 = Dropzone.forElement('#my-dropzone1');
var cnImgSrc = $('#cnImgView').find('img').attr('src');
if(cnImgSrc.indexOf('image_placeholder.png') > -1) {
cnImgSrc = '';
}
$('#wordsCn').val(fn_get_editor_data('#wordsCn'));
var bgnDe = $('#bnfBgnDe').val();
var bgnTme = $('#bnfBgnTme').val();
var endDe = $('#bnfEndDe').val();
var endTme = $('#bnfEndTme').val();
var cnBgnDe = $('#cnBgnDe').val();
var cnEndDe = $('#cnEndDe').val();
var cnBgnTme = $('#cnBgnTme').val();
var cnEndTme = $('#cnEndTme').val();
if(fn_is_empty($('input[name=useAt]:checked').val())) {
alert('사용여부를 선택하세요.');
return false;
} else if(fn_is_empty(bgnDe)) {
alert('진행기간 시작일을 입력하세요.');
return false;
} else if(fn_is_empty(endDe)) {
alert('진행기간 종료일을 입력하세요.');
return false;
} else if(!fn_check_date(bgnDe, endDe)) {
alert('진행기간 종료일이 시작일보다 작습니다.');
return false;
} else if (!fn_check_date(bgnDe + ' ' + bgnTme, endDe + ' ' + endTme)) {
alert('진행기간 종료일이 시작일보다 작습니다.');
return false;
} else if(fn_is_empty($('#cnSj').val())) {
alert('방송명을 입력하세요.');
return false;
} else if(fn_is_empty(cnBgnDe)) {
alert('방송일시 시작일을 입력하세요.');
return false;
} else if(fn_is_empty(cnEndDe)) {
alert('방송일시 종료일을 입력하세요.');
return false;
} else if(!fn_check_date(cnBgnDe, cnEndDe)) {
alert('방송일시 종료일이 시작일보다 작습니다.');
return false;
} else if (!fn_check_date(cnBgnDe + ' ' + cnBgnTme, cnEndDe + ' ' + cnEndTme)) {
alert('방송일시 종료일이 시작일보다 작습니다.');
return false;
} else if(fn_is_empty($('#linkUrl').val())) {
alert('방송URL을 입력하세요.');
return false;
//} else if (fn_is_empty($('#tmeSecnd').val())) {
// alert('참여시간을 입력하세요.');
// return false;
} else if (fn_is_empty($('#mlgRwdAmt_1').val())) {
alert('보상 마일리지를 입력하세요.');
return false;
}
if(fn_is_empty(cnImgSrc) && myDropzone1.files.length < 1) {
alert('방송썸네일을 첨부하세요.');
return false;
} else if(fn_is_empty($('#wordsCn').val())) {
alert('방송소개를 입력하세요.');
return false;
}
$('#bnfSj').val($('#cnSj').val());
return true;
}
/**
* 목록 이동
*/
function fn_select_list() {
$('#listForm').attr('action', '<c:url value="/mngr/bnft/selectBnftListInqireForm"/>');
$('#listForm').attr('method', 'post');
$('#listForm').submit();
};
/**
* 수정폼 이동
*/
const fn_move_dtl_uptpage = function(Innb) {
const url = '<c:url value="/mngr/bnft/selectBnftDtlUpdtForm"/>';
$('#listForm').attr('action', url);
$('#listForm').attr('method', 'post');
$('#pageIndex').val(1);
$('#listForm #bnfInnb').val(Innb);
$('#listForm').submit();
}
/**
* 수정폼 등록이미지 삭제
*/
function fn_img_delete(tgtId) {
$('#' + tgtId).find('img').attr('src', '');
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">라이브쇼핑 상세</h2>
<div class="page-title__btn-container">
<a href="#selectCouponListInqire" class="btn outline" onclick="fn_select_list('1'); return false;"><spring:message code="button.list"/></a>
<button class="btn primary" onclick="fn_regist(); return false;" ><spring:message code="button.save"/></button>
</div>
</div>
<form id="regForm" name="regForm" class="common-form" method="post" action="" enctype="multipart/form-data">
<input type="hidden" id="bnfInnb" name="bnfInnb" value="<c:out value="${ resultMap.paramVO.bnfInnb }"/>"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<input type="hidden" id="bnfSj" name="bnfSj" value="">
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
<input type="hidden" id="cdnurl" value="${cdnurl}"/>
<section id="section01" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">기본설정</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>기본설정 상세내용</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 88%">
</colgroup>
<tbody>
<tr>
<th>사용여부 <span class="red-7">*</span></th>
<td>
<div class="custom-radio-container">
<div class="custom-radio">
<input type="radio" id="useAtY" name="useAt" value="Y">
<label for="useAtY">사용</label>
</div>
<div class="custom-radio ml-10">
<input type="radio" id="useAtN" name="useAt" value="N">
<label for="useAtN">미사용</label>
</div>
<p class="fyi gray-7 ml-10">‘미사용’ 선택시 사용자 참여 불가능</p>
</div>
</td>
</tr>
<tr>
<th>진행기간<span class="red-7">*</span></th>
<td>
<div class="td-inner">
<input type="text" id="bnfBgnDe" name="bnfBgnDe" class="datepicker" title="시작 날짜 선택" value="" autocomplete="off" readonly>
<div class="timepicker-container">
<input type="text" id="bnfBgnTme" name="bnfBgnTme" class="bs-timepicker" title="시작 시간 설정" value="" readonly>
</div>
<span class="tilde">~</span>
<input type="text" id="bnfEndDe" name="bnfEndDe" class="datepicker" title="종료 날짜 선택" value="" autocomplete="off" readonly>
<div class="timepicker-container">
<input type="text" id="bnfEndTme" name="bnfEndTme" class="bs-timepicker" title="종료 시간 설정" value="" readonly>
</div>
<p class="fyi gray-7 ml-10"></p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
<section id="section02" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">내용설정</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>목록</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 88%">
</colgroup>
<tbody>
<tr>
<th>방송명</th>
<td>
<div class="input-container">
<input type="text" class="input-text wd580" id="cnSj" name="cnSj" value="">
<p class="gray-7 ml-10"> 최대50자</p>
</div>
</td>
</tr>
<tr>
<th>방송썸네일</th>
<td>
<div class="td-inner nowrap">
<div class="dropzone-wrapper">
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.extensions.images')" var="acceptFileExtensions"/>
<div class="dropzone" id="my-dropzone1">
</div>
</div>
<div class="file-preview__container" id="cnImgView" style="display:none;">
<div class="file-preview">
<span class="file-preview__number">등록한 사진</span>
<button class="file-preview__delete" onclick="fn_img_delete('cnImgView'); return false;"><span class="visually-hidden">삭제</span></button>
<div class="file-preview__image wd200">
<img src="" alt="로고" onerror="this.src='/mngr/images/image_placeholder.png'">
</div>
</div>
</div>
</div>
</td>
</tr>
<tr>
<th>방송일시</th>
<td>
<div class="td-inner">
<input type="text" id="cnBgnDe" name="cnBgnDe" class="datepicker" title="" autocomplete="off" readonly>
<div class="timepicker-container">
<input type="text" id="cnBgnTme" name="cnBgnTme" class="bs-timepicker" title="" value="" readonly>
</div>
~
<input type="text" id="cnEndDe" name="cnEndDe" class="datepicker" title="" autocomplete="off" readonly>
<div class="timepicker-container">
<input type="text" id="cnEndTme" name="cnEndTme" class="bs-timepicker" title="" value="" readonly>
</div>
<p class="fyi gray-7 ml-10"> 지정시간이 되면 '라이브' 중으로 자동 표시됩니다.('사용' 설정시) </p>
</div>
</td>
</tr>
<tr>
<th>방송소개</th>
<td>
<div class="td-inner">
<textarea class="textarea" id="wordsCn" name="wordsCn" title="" cols="30" rows="2"></textarea>
</div>
</td>
</tr>
<tr>
<th>방송 URL</th>
<td>
<div class="td-inner">
<input type="text" class="input-text wd580" id="linkUrl" name="linkUrl" value="" title="">
</div>
<p class="gray-7 mt-10">ex) https://naver.me/Gq8P4GY3</p>
</td>
</tr>
<tr>
<th>보상</th>
<td>
<div class="input-container">
<!--<input type="text" class="input-text wd100" id="tmeSecnd" name="tmeSecnd" value="" placeholder="0">
<p class="gray-7 ml-10 mr-10"> 초 이상 참여 시--> 마일리지</p>
<input type="hidden" id="bnfRwdCateDv_1" name="rwdVO.arrBnfRwdCateDvCd" value="07010"/>
<input type="hidden" id="bnfRwdGodsDv_1" name="rwdVO.arrBnfRwdGodsDvCd" value="010"/>
<input type="text" class="input-text wd100" id="mlgRwdAmt_1" name="rwdVO.arrMlgRwdAmt" value="" placeholder="0">
<p class="gray-7 ml-10">원</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
<form id="listForm" name="listForm">
<input type="hidden" id="bnfInnb" name ="bnfInnb"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="srchPdDv" name="srchPdDv" value="${ resultMap.paramVO.srchPdDv }">
<input type="hidden" id="srchStartDt" name="srchStartDt" value="${ resultMap.paramVO.srchStartDt }">
<input type="hidden" id="srchEndDt" name="srchEndDt" value="${ resultMap.paramVO.srchEndDt }">
<input type="hidden" id="srchSttDv" name="srchSttDv" value="${ resultMap.paramVO.srchSttDv }"/>
<input type="hidden" id="srchUseAt" name="srchUseAt" value="${ resultMap.paramVO.srchUseAt }"/>
<input type="hidden" id="srchDv" name="srchDv" value="${ resultMap.paramVO.srchDv }"/>
<input type="hidden" id="srchKeyword" name="srchKeyword" value="${ resultMap.paramVO.srchKeyword }"/>
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultMap.paramVO.pageIndex }"/>
<input type="hidden" id="recordCountPerPage" name="recordCountPerPage" value="${ resultMap.paramVO.recordCountPerPage }"/>
<input type="hidden" id="pageUnit" name="pageUnit" value="${ resultMap.paramVO.pageUnit }"/>
</form>
</body>
</html>

View File

@@ -0,0 +1,391 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : MngBannerRegistForm.jsp
Description : 배너관리 등록 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-09-09 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
// 노출순서 숫자입력 체크
$(document).on('input', 'input[id^="sortOrdr_"]', function() {
this.value = this.value.replace(/[^0-9]/g, '');
});
fn_set_detail();
// 배너 사용여부
$(document).on('click', '[name^="rdoUseAt_"]', function() {
var useAt = $(this).val();
var seqno = $(this).data('no');
$('#useAt_' + seqno).val(useAt);
});
});
/**
* 수정상세 정보 조회
*/
const fn_set_detail = function() {
const url = '<c:url value="/mngr/bnft/selectBnftMngBannerListInqire"/>';
$.ajax({
type: 'post',
url: url,
data : {
'sopmalCd' : $('#sopmalCd').val()
},
success: function (result) {
const data = JSON.parse(result.resBody.result);
const bnftBannerList = data.bnftBannerList;
for(var i=0; i < bnftBannerList.length; i++) {
var bannerData = bnftBannerList[i]
var idx = i + 1;
const divTmp = $('#divBannerTmpl').html().replace(/@idx/g, idx);
$('#divBannerArea').append(divTmp);
var dropzoneID = "my-dropzone" + idx;
fn_init_dropzone(dropzoneID);
$('#bnfBannerInnb_' + idx).val(bannerData.bnfBannerInnb);
$('#imgFilCours_' + idx).val(bannerData.imgFilCours);
$('#imgFilNm_' + idx).val(bannerData.imgFilNm);
$('#bannerSj_' + idx).val(bannerData.bannerSj);
$('#sortOrdr_' + idx).val(bannerData.sortOrdr);
$('#linkUrl_' + idx).val(bannerData.linkUrl);
$('#useAt_' + idx).val(bannerData.useAt);
$('#delAt_' + idx).val(bannerData.delAt);
if(!fn_is_empty(bannerData.imgFilCours)) {
var imgPath = $('#cdnurl').val() + bannerData.imgFilCours;
$('#imgFilView_' + idx).find('img').attr('src', imgPath);
$('#imgFilView_' + idx).css('display', 'block');
}
if(bannerData.useAt == 'Y') {
$('#rdoUseAtY_' + idx).prop("checked", true);
} else if(bannerData.useAt == 'N') {
$('#rdoUseAtN_' + idx).prop("checked", true);
}
}
if(bnftBannerList.length < 1) {
var idx = 1;
const divTmp = $('#divBannerTmpl').html().replace(/@idx/g, idx);
$('#divBannerArea').append(divTmp);
var dropzoneID = "my-dropzone" + idx;
fn_init_dropzone(dropzoneID);
}
}
});
}
/**
* 등록
*/
const fn_regist = function() {
var checked = fn_check_valid();
if(checked) {
var url = '<c:url value="/mngr/bnft/insupdBnftBanner"/>';
var msg1 = '배너를 <spring:message code="confirm.common.insert"/>';
var msg2 = '<spring:message code="success.common.insert"/>';
var msg3 = '<spring:message code="fail.common.insert"/>';
const formData = new FormData();
$('#regForm').serializeArray().forEach(function (item) {
formData.append(item.name, item.value);
});
for(var i=0; i<$('#divBannerArea div[id^="divBanner_"]').length; i++) {
var currDivId = $('#divBannerArea div[id^="divBanner_"]').eq(i).attr('id');
var idx = $('#' + currDivId).data('idx');
var dropzoneID = "#my-dropzone" + idx;
var myDropzone = Dropzone.forElement(dropzoneID);
if (myDropzone.files.length > 0) {
myDropzone.files.forEach(function(file) {
formData.append('files_' + idx, file);
});
} else {
formData.append('files_' + idx, null); // 빈 파일 정보 추가
}
formData.append('dzIdx_' + idx, idx);
}
if (confirm(msg1)) {
$.ajax({
type: 'post',
enctype: 'multipart/form-data',
url: url,
data: formData,
contentType: false,
processData: false,
success: function (data) {
var str = JSON.parse(data.resBody.result);
if (str.result == 'success') {
alert(msg2);
fn_move_dtl_uptpage();
} else {
alert(msg3);
}
}
});
}
}
};
/**
* 입력값 체크
*/
function fn_check_valid() {
for(var i=0; i<$('#divBannerArea div[id^="divBanner_"]').length; i++) {
var currDivId = $('#divBannerArea div[id^="divBanner_"]').eq(i).attr('id');
var idx = $('#' + currDivId).data('idx');
var divDisplay = $('#' + currDivId).css('display');
if(divDisplay !== 'none') {
var bannerSj = $('#bannerSj_' + idx).val();
var imgFile = $('#imgFilCours_' + idx).val();
var dropzone = Dropzone.forElement('#my-dropzone' + idx);
var sortOrdr = $('#sortOrdr_' + idx).val();
var useAt = $('#useAt_' + idx).val();
var linkUrl = $('#linkUrl_' + idx).val();
var imgSrc = $('#imgFilView_' + idx).find('img').attr('src');
if(imgSrc.indexOf('image_placeholder.png') > -1) {
imgSrc = '';
}
var myDropzone = Dropzone.forElement('#my-dropzone' + idx);
if(fn_is_empty(bannerSj)) {
alert(idx + '번째 배너의 제목을 입력하세요.');
return false;
}
if(fn_is_empty(imgFile) && dropzone.files.length < 1) {
alert(idx + '번째 배너의 이미지를 입력하세요.');
return false;
}
if(fn_is_empty(sortOrdr)) {
alert(idx + '번째 배너의 노출순서를 입력하세요.');
return false;
}
if(fn_is_empty(useAt)) {
alert(idx + '번째 배너의 사용여부를 선택하세요.');
return false;
}
if(fn_is_empty(linkUrl)) {
alert(idx + '번째 배너의 링크를 입력하세요.');
return false;
}
if(fn_is_empty(imgSrc) && myDropzone.files.length < 1) {
alert(idx + '번째 배너의 이미지를 첨부하세요.');
return false;
}
}
}
// 고유번호가 없고 delAt가 'Y'인 것은 신규 추가된 배너을 삭제한것이므로..
// formData.append에서 제외되도록 remove()
for(var i=0; i<$('#divBannerArea div[id^="divBanner_"]').length; i++) {
var currDivId = $('#divBannerArea div[id^="divBanner_"]').eq(i).attr('id');
var idx = $('#' + currDivId).data('idx');
var bannerInnb = $('#bnfBannerInnb_' + idx).val();
var delAt = $('#delAt_' + idx).val();
if(fn_is_empty(bannerInnb) && delAt == 'Y') {
$('#' + currDivId).remove();
}
}
return true;
}
/**
* 수정폼 이동
*/
const fn_move_dtl_uptpage = function(Innb) {
const url = '<c:url value="/mngr/bnft/selectBnftMngBannerRegistForm"/>';
$('#listForm').attr('action', url);
$('#listForm').attr('method', 'post');
$('#listForm').submit();
}
/**
* 배너 추가
*/
function fn_banner_add(e) {
event.preventDefault();
var cnt = $('#divBannerArea div[id^="divBanner_"]').length;
var idx = cnt + 1;
const divTmp = $('#divBannerTmpl').html().replace(/@idx/g, idx);
$('#divBannerArea').append(divTmp);
var dropzoneID = "my-dropzone" + idx;
fn_init_dropzone(dropzoneID);
//$('#sortOrdr_' + idx).val(idx);
}
/**
* 배너 삭제
*/
function fn_banner_del(pIdx) {
$('#divBanner_' + pIdx).css('display', 'none');
$('#delAt_' + pIdx).val('Y');
$('#useAt_' + pIdx).val('N');
}
/**
* 등록이미지 삭제
*/
function fn_img_delete(tgtId) {
$('#' + tgtId).find('img').attr('src', '');
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">배너 관리</h2>
<div class="page-title__btn-container">
<button class="btn primary" onclick="fn_regist(); return false;" ><spring:message code="button.save"/></button>
</div>
</div>
<form id="regForm" name="regForm" class="common-form" method="post" action="" enctype="multipart/form-data">
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
<input type="hidden" id="cdnurl" value="${cdnurl}"/>
<section id="section01" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">배너설정</h3>
<div class="right">
<button class="btn xsm outline primary" onclick="fn_banner_add(event); return false;">+ 추가</button>
</div>
</div>
<div id="divBannerArea">
</div>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
<!-- 배너 템플릿 -->
<div id="divBannerTmpl" style="display:none;">
<div class="content-fold__content" id="divBanner_@idx" data-idx="@idx">
<input type="hidden" id="bnfBannerInnb_@idx" name="arrBnfBannerInnb" value="">
<input type="hidden" id="imgFilCours_@idx" name="arrImgFilCours" value="">
<input type="hidden" id="imgFilNm_@idx" name="arrImgFilNm" value="">
<input type="hidden" id="delAt_@idx" name="arrDelAt" value="N">
<input type="hidden" id="divIdx_@idx" name="arrDivIdx" value="@idx">
<div class="alignR mb5">
<button class="btn xsm outline delete" onclick="fn_banner_del('@idx'); return false;">- 삭제</button>
</div>
<div class="table-wrapper">
<table class="table">
<caption>배너항목설정</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 38%;">
<col style="width: 12%;">
<col style="width: 38%;">
</colgroup>
<tbody>
<tr>
<th>제목(관리용)</th>
<td>
<div class="input-container">
<input type="text" class="input-text wd300" id="bannerSj_@idx" name="arrBannerSj" value="" title="" maxlength="20">
<p class="gray-7 ml-10"> 최대20자</p>
</div>
</td>
<th rowspan="3">이미지</th>
<td rowspan="3">
<div class="td-inner nowrap">
<div class="dropzone-wrapper sm">
<div class="dropzone" id="my-dropzone@idx"></div>
</div>
<div class="file-preview__container" id="imgFilView_@idx" style="display:none;">
<div class="file-preview">
<span class="file-preview__number">등록한 사진</span>
<button class="file-preview__delete" onclick="fn_img_delete('imgFilView_@idx'); return false;">
<span class="visually-hidden">삭제</span>
</button>
<div class="file-preview__image wd100">
<img src="" onerror="this.src='/mngr/images/image_placeholder.png'">
</div>
</div>
</div>
</div>
</td>
</tr>
<tr>
<th>노출순서</th>
<td class="center">
<div class="input-container">
<input type="text" class="input-text wd200" id="sortOrdr_@idx" name="arrSortOrdr" value="" title="">
<div class="custom-radio ml-10">
<input type="radio" id="rdoUseAtY_@idx" name="rdoUseAt_@idx" data-no="@idx" value="Y">
<label for="rdoUseAtY_@idx">사용</label>
</div>
<div class="custom-radio ml-10">
<input type="radio" id="rdoUseAtN_@idx" name="rdoUseAt_@idx" data-no="@idx" value="N">
<label for="rdoUseAtN_@idx">미사용</label>
</div>
<input type="hidden" id="useAt_@idx" name="arrUseAt" value="">
</div>
</td>
</tr>
<tr>
<th>링크</th>
<td>
<div class="input-container">
<input type="text" class="input-text wd300" id="linkUrl_@idx" name="arrLinkUrl" value="" title="">
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<form id="listForm" name="listForm">
</form>
</body>
</html>

View File

@@ -0,0 +1,231 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : MngMenuRegistForm.jsp
Description : 혜택 메뉴관리 등록 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-09-08 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
// 노출순서 숫자입력 체크
$(document).on('input', 'input[id^="sortOrdr_"]', function() {
this.value = this.value.replace(/[^0-9]/g, '');
});
});
/**
* 등록
*/
const fn_regist = function() {
var checked = fn_check_valid();
if(checked) {
var url = '<c:url value="/mngr/bnft/insupdBnftMngMenu"/>';
var msg1 = '메뉴관리 정보를 <spring:message code="confirm.common.insert"/>';
var msg2 = '<spring:message code="success.common.insert"/>';
var msg3 = '<spring:message code="fail.common.insert"/>';
const formData = new FormData();
$('#regForm').serializeArray().forEach(function (item) {
formData.append(item.name, item.value);
});
if (confirm(msg1)) {
$.ajax({
type: 'post',
enctype: 'multipart/form-data',
url: url,
data: formData,
contentType: false,
processData: false,
success: function (data) {
var str = JSON.parse(data.resBody.result);
if (str.result == 'success') {
alert(msg2);
//저장 후 수정화면으로 이동
fn_move_dtl_uptpage();
} else {
alert(msg3);
}
}
});
}
}
};
/**
* 입력값 체크
*/
function fn_check_valid() {
for(var i=0; i<$('input[id^="bnfDvCd_"]').length; i++) {
var currId = $('input[id^="bnfDvCd_"]').eq(i).attr('id');
var seq = $('#' + currId).data('seq');
var bnfDvNm = $('#bnfDvNm_' + seq).text();
var menuSj1 = $('#menuSj1_' + seq).val();
var menuSj2 = $('#menuSj2_' + seq).val();
var sortOrdr = $('#sortOrdr_' + seq).val();
var indictAtChk = $('#indictAtChk_' + seq).is(':checked');
if(fn_is_empty(menuSj1) && indictAtChk) {
alert(bnfDvNm + '의 제목1을 입력하세요.');
return false;
}
if(fn_is_empty(menuSj2) && indictAtChk) {
alert(bnfDvNm + '의 제목2를 입력하세요.');
return false;
}
if(fn_is_empty(sortOrdr) && indictAtChk) {
alert(bnfDvNm + '의 노출순서를 입력하세요.');
return false;
}
if(indictAtChk) {
$('#indictAt_' + seq).val('Y');
} else {
$('#indictAt_' + seq).val('N');
}
}
return true;
}
/**
* 수정폼 이동
*/
const fn_move_dtl_uptpage = function() {
const url = '<c:url value="/mngr/bnft/selectBnftMngMenuRegistForm"/>';
$('#listForm').attr('action', url);
$('#listForm').attr('method', 'post');
$('#listForm').submit();
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">메뉴관리</h2>
<div class="page-title__btn-container">
<button class="btn primary" onclick="fn_regist(); return false;" ><spring:message code="button.save"/></button>
</div>
</div>
<form id="regForm" name="regForm" class="common-form" method="post" action="" enctype="multipart/form-data">
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<section id="section01" class="content-section content-scroll-detect content-fold">
<div class="content-fold__content">
<div class="form-control-container">
<div class="left">
<span class="blue-8">
<label class="b-checkbox checkbox is-medium">
<input type="checkbox" value="" checked="checked" disabled>
<span class="check"></span>
</label>
표시한 메뉴만 사용자 화면에 노출됩니다.</span>
</div>
<div class="center">
</div>
<div class="right">
</div>
</div>
<div class="table-wrapper mt-10">
<table class="table">
<caption></caption>
<colgroup>
<col style="width: 20%;">
<col style="width: 8%;">
<col style="width: 46%;">
<col style="width: 10%;">
<col style="width: 16%;">
</colgroup>
<tbody>
<c:choose>
<c:when test="${ not empty resultMap.bnftMenuList && fn:length(resultMap.bnftMenuList) > 0 }">
<c:forEach items="${ resultMap.bnftMenuList }" var="menuList" varStatus="status">
<tr>
<th rowspan="2">
<label class="b-checkbox checkbox is-medium check-all">
<input type="checkbox" id="indictAtChk_${status.count}" value="Y" ${ f:setChecked(menuList.indictAt,"Y") }>
<span class="check"></span>
<span class="ml-10" id="bnfDvNm_${status.count}"><c:out value="${ menuList.bnfDvNm }"/></span>
<input type="hidden" id="bnfDvCd_${status.count}" name="arrBnfDvCd" data-seq="${ status.count }" value="${ menuList.bnfDvCd }">
<input type="hidden" id="indictAt_${status.count}" name="arrIndictAt" value="${ menuList.indictAt }">
</label>
</th>
<td>
<span>제목1</span>
</td>
<td>
<div class="input-container">
<input type="text" class="input-text wd500" id="menuSj1_${status.count}" name="arrMenuSj1" value="${menuList.menuSj1}" title="">
</div>
</td>
<th rowspan="2">노출순서</th>
<td rowspan="2">
<div class="input-container">
<input type="text" class="input-text wd100 alignC" id="sortOrdr_${status.count}" name="arrSortOrdr" value="${menuList.sortOrdr}" title="">
</div>
</td>
</tr>
<tr>
<td>
<span>제목2</span>
</td>
<td>
<div class="input-container">
<input type="text" class="input-text wd500" id="menuSj2_${status.count}" name="arrMenuSj2" value="${menuList.menuSj2}" title="">
</div>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise></c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</div>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
<form id="listForm" name="listForm">
</form>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,767 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : OxquizRegistForm.jsp
Description : 도전OX퀴즈 혜택 등록 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-08-28 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
fn_create_ckeditor('#bnfWordsCn');
//진행기간 from to 체크(현재 날짜 보다 작을 시 alert)
$(document).on('change', '.datepicker', function () {
fn_check_fromTo('#bnfBgnDe', '#bnfEndDe', "date");
});
// 보상 마일리지/쿠폰선택시 초기화
$('[name="rdoGodsDv"]').click(function() {
var gdvcd = $(this).val();
if(gdvcd == '010') {
$('#couponInnb_3').val('');
$('#couponName_3').val('');
} else {
$('#mlgRwdAmt_3').val('');
}
$('#bnfRwdGodsDv_3').val(gdvcd);
});
// 마일리지 숫자입력 체크
$('input[id^="mlgRwdAmt_"]').on('input', function() {
this.value = this.value.replace(/[^0-9]/g, '');
});
var bnfInnb = $('#regForm #bnfInnb').val();
fn_set_detail(bnfInnb);
// 항목 사용여부
$(document).on('click', '[name^="rdoQuizCnsr_"]', function() {
var quizCnsr = $(this).val();
var seqno = $(this).data('no');
$('#quizCnsr_' + seqno).val(quizCnsr);
});
});
/**
* 수정상세 정보 조회
*/
const fn_set_detail = function(bnfInnb) {
const url = '<c:url value="/mngr/bnft/selectBnftDtlUpdtInqire"/>';
if(bnfInnb){
$.ajax({
type: 'post',
url: url,
data : {
'bnfInnb' : bnfInnb,
'bnfDvCd' : $('#bnfDvCd').val()
},
success: function (result) {
const data = JSON.parse(result.resBody.result);
const bnftData = data.bnftData;
const bnftRwdList = data.bnftRwdList;
const bnftQuizList = data.bnftQuizList;
$('[name=useAt][value=' + bnftData.useAt + ']').prop('checked',true);
$('#bnfBgnDe').val(bnftData.bnfBgnDe);
$('#bnfBgnTme').val(bnftData.bnfBgnTme);
$('#bnfEndDe').val(bnftData.bnfEndDe);
$('#bnfEndTme').val(bnftData.bnfEndTme);
$('#bnfSj').val(bnftData.bnfSj);
for(var i=0; i < bnftRwdList.length; i++) {
var rwdData = bnftRwdList[i]
var seq = i + 1;
$('#bnfRwdCateDv_' + seq).val(rwdData.bnfRwdCateDvCd);
$('#bnfRwdGodsDv_' + seq).val(rwdData.bnfRwdGodsDvCd);
if(rwdData.bnfRwdCateDvCd == '13030') {
if(rwdData.bnfRwdGodsDvCd == '010') {
$('#rdoGodsDvM').prop("checked", true);
$('#couponInnb_' + seq).val('');
$('#couponName_' + seq).val('');
$('#mlgRwdAmt_' + seq).val(rwdData.mlgRwdAmt);
} else if(rwdData.bnfRwdGodsDvCd == '020') {
$('#rdoGodsDvC').prop("checked", true);
$('#couponInnb_' + seq).val(rwdData.couponInnb);
$('#couponName_' + seq).val(rwdData.couponName);
$('#mlgRwdAmt_' + seq).val('');
}
} else {
$('#mlgRwdAmt_' + seq).val(rwdData.mlgRwdAmt);
}
}
if(!fn_is_empty(bnftData.scrReprsntImg)) {
var imgPath = $('#cdnurl').val() + bnftData.scrReprsntImg;
$('#scrReprsntImgView').find('img').attr('src', imgPath);
$('#scrReprsntImgView').css('display', 'block');
}
for(var i=0; i < bnftQuizList.length; i++) {
var quizData = bnftQuizList[i]
var idx = i + 1;
const divTmp = $('#divQuizTmpl').html().replace(/@idx/g, idx);
$('#divQuizArea').append(divTmp);
$('#bnfQuizInnb_' + idx).val(quizData.bnfQuizInnb);
$('#quizCn_' + idx).val(quizData.quizCn);
$('#quizCnsr_' + idx).val(quizData.quizCnsr);
$('#hintUrl_' + idx).val(quizData.hintUrl);
$('#delAt_' + idx).val(quizData.delAt);
if(quizData.quizCnsr == 'O') {
$('#rdoQuizCnsrO_' + idx).prop("checked", true);
} else if(quizData.quizCnsr == 'X') {
$('#rdoQuizCnsrX_' + idx).prop("checked", true);
}
}
fn_set_editor_data('#bnfWordsCn', bnftData.bnfWordsCn);
}
});
} else {
// 신규등록시 기본 한개문항 표시
for(var i=0; i < 1; i++) {
var idx = i + 1;
const divTmp = $('#divQuizTmpl').html().replace(/@idx/g, idx);
$('#divQuizArea').append(divTmp);
}
$('#bnfBgnTme, #bnfEndTme').val('00:00');
}
}
/**
* 등록
*/
const fn_regist = function() {
var bnfInnb = $('#regForm #bnfInnb').val();
var checked = fn_check_valid(bnfInnb);
if(checked) {
var url = '<c:url value="/mngr/bnft/insupdBnftQuiz"/>';
var msg1 = '도전OX퀴즈 혜택을 <spring:message code="confirm.common.insert"/>';
var msg2 = '<spring:message code="success.common.insert"/>';
var msg3 = '<spring:message code="fail.common.insert"/>';
if(bnfInnb) {
msg1 = '도전OX퀴즈 혜택을 <spring:message code="confirm.common.update"/>';
msg2 = '<spring:message code="success.common.insert"/>';
msg3 = '<spring:message code="fail.common.update"/>';
}
const formData = new FormData();
$('#regForm').serializeArray().forEach(function (item) {
formData.append(item.name, item.value);
});
$(".dropzone").each(function(index) {
var dropzoneID = "#my-dropzone" + (index + 1);
var myDropzone = Dropzone.forElement(dropzoneID);
myDropzone.files.forEach(function(file) {
formData.append('files', file);
});
});
if (confirm(msg1)) {
$.ajax({
type: 'post',
enctype: 'multipart/form-data',
url: url,
data: formData,
contentType: false,
processData: false,
success: function (data) {
var str = JSON.parse(data.resBody.result);
if (str.result == 'success') {
alert(msg2);
//저장 후 수정화면으로 이동
if(fn_is_empty(bnfInnb)) {
fn_move_dtl_uptpage(data.resBody.result.replace(/[^0-9]/g, ""));
} else {
fn_move_dtl_uptpage(bnfInnb);
}
} else {
alert(msg3);
}
}
});
}
}
};
/**
* 입력값 체크
*/
function fn_check_valid(bnfInnb) {
var myDropzone1 = Dropzone.forElement('#my-dropzone1');
var scrReprsntImgSrc = $('#scrReprsntImgView').find('img').attr('src');
if(scrReprsntImgSrc.indexOf('image_placeholder.png') > -1) {
scrReprsntImgSrc = '';
}
var bgnDe = $('#bnfBgnDe').val();
var bgnTme = $('#bnfBgnTme').val();
var endDe = $('#bnfEndDe').val();
var endTme = $('#bnfEndTme').val();
$('#bnfWordsCn').val(fn_get_editor_data('#bnfWordsCn'));
if(fn_is_empty($('input[name=useAt]:checked').val())) {
alert('사용여부를 선택하세요.');
return false;
} else if(fn_is_empty(bgnDe)) {
alert('진행기간 시작일을 입력하세요.');
return false;
} else if(fn_is_empty(endDe)) {
alert('진행기간 종료일을 입력하세요.');
return false;
} else if(!fn_check_date(bgnDe, endDe)) {
alert('진행기간 종료일이 시작일보다 작습니다.');
return false;
} else if (!fn_check_date(bgnDe + ' ' + bgnTme, endDe + ' ' + endTme)) {
alert('진행기간 종료일이 시작일보다 작습니다.');
return false;
} else if(fn_is_empty($('#bnfSj').val())) {
alert('제목을 입력하세요.');
return false;
}
// 보상 체크
for (var i = 1; i <= 3; i++) {
var bnfRwdGodsDv = $('#bnfRwdGodsDv_' + i).val();
var mlgRwdAmt = $('#mlgRwdAmt_' + i).val();
var couponInnb = $('#couponInnb_' + i).val();
const strs = ['문항별 정답', '문항별 오답', '전체 정답시'];
var str = strs[i - 1];
if(fn_is_empty(bnfRwdGodsDv)) {
alert(str + ' 보상 종류을 선택하세요.');
return false;
} else if (bnfRwdGodsDv == '010' && fn_is_empty(mlgRwdAmt)) {
alert(str + ' 보상 마일리지를 입력하세요.');
return false;
} else if (bnfRwdGodsDv == '020' && fn_is_empty(couponInnb)) {
alert(str + ' 보상 쿠폰을 입력하세요.');
return false;
}
}
for(var i=0; i<$('#divQuizArea div[id^="divQuiz_"]').length; i++) {
var currDivId = $('#divQuizArea div[id^="divQuiz_"]').eq(i).attr('id');
var idx = $('#' + currDivId).data('idx');
var divDisplay = $('#' + currDivId).css('display');
if(divDisplay !== 'none') {
var quizCn = $('#quizCn_' + idx).val();
var quizCnsr = $('#quizCnsr_' + idx).val();
var hintUrl = $('#hintUrl_' + idx).val();
if(fn_is_empty(quizCn)) {
alert(idx + '번째 문제의 내용을 입력하세요.');
return false;
}
if(fn_is_empty(quizCnsr)) {
alert(idx + '번째 문제의 정답을 선택하세요.');
return false;
}
if(fn_is_empty(hintUrl)) {
alert(idx + '번째 문제의 힌트보기URL을 입력하세요.');
return false;
}
}
}
if(fn_is_empty(scrReprsntImgSrc) && myDropzone1.files.length < 1) {
alert('대표이미지를 첨부하세요.');
return false;
} else if(fn_is_empty($('#bnfWordsCn').val())) {
alert('참여방법 안내를 입력하세요.');
return false;
}
// 진행일시 중복 체크
var isValid = false;
$.ajax({
url: '<c:url value="/mngr/bnft/selectBnftDtOvlCnt"/>',
type: 'POST',
data: {
bnfInnb: $('#regForm #bnfInnb').val(),
bnfDvCd: $('#regForm #bnfDvCd').val(),
bnfBgnDt: bgnDe + ' ' + bgnTme + ':01',
bnfEndDt: endDe + ' ' + endTme + ':00'
},
async: false,
success: function(result) {
const data = JSON.parse(result.resBody.result);
var ovlCnt = data.ovlCnt;
if (ovlCnt > 0) {
alert('입력하신 진행기간에 이미 등록된 도전OX퀴즈 혜택이 있습니다.\n\n확인후 다시 입력하세요.');
isValid = false;
} else {
// 퀴즈 고유번호가 없고 delAt가 'Y'인 것은 신규 추가된 항목을 삭제한것이므로..
// formData.append에서 제외되도록 remove()
for(var i=0; i<$('#divQuizArea div[id^="divQuiz_"]').length; i++) {
var currDivId = $('#divQuizArea div[id^="divQuiz_"]').eq(i).attr('id');
var idx = $('#' + currDivId).data('idx');
var quizInnb = $('#bnfQuizInnb_' + idx).val();
var delAt = $('#delAt_' + idx).val();
if(fn_is_empty(quizInnb) && delAt == 'Y') {
$('#' + currDivId).remove();
}
}
isValid = true;
}
},
error: function() {
alert('진행일시 중복 체크 중 오류가 발생했습니다.');
isValid = false;
}
});
return isValid;
}
/**
* 목록 이동
*/
function fn_select_list() {
$('#listForm').attr('action', '<c:url value="/mngr/bnft/selectBnftListInqireForm"/>');
$('#listForm').attr('method', 'post');
$('#listForm').submit();
};
/**
* 수정폼 이동
*/
const fn_move_dtl_uptpage = function(Innb) {
const url = '<c:url value="/mngr/bnft/selectBnftDtlUpdtForm"/>';
$('#listForm').attr('action', url);
$('#listForm').attr('method', 'post');
$('#pageIndex').val(1);
$('#listForm #bnfInnb').val(Innb);
$('#listForm').submit();
}
/**
* 항목 추가
*/
function fn_quiz_add(e) {
event.preventDefault();
// 삭제상태 div 카운트
var delcnt = 0;
for(var i=0; i<$('#divQuizArea div[id^="divQuiz_"]').length; i++) {
var currDivId = $('#divQuizArea div[id^="divQuiz_"]').eq(i).attr('id');
var divDisplay = $('#' + currDivId).css('display');
if(divDisplay == 'none') {
delcnt++;
}
}
var cnt = $('#divQuizArea div[id^="divQuiz_"]').length;
if((cnt - delcnt) >= 7) {
alert('문항의 최대갯수는 7개입니다.');
return;
}
var idx = cnt + 1;
const divTmp = $('#divQuizTmpl').html().replace(/@idx/g, idx);
$('#divQuizArea').append(divTmp);
}
/**
* 항목 삭제
*/
function fn_quiz_del(pIdx) {
$('#divQuiz_' + pIdx).css('display', 'none');
$('#delAt_' + pIdx).val('Y');
}
/**
* 등록이미지 삭제
*/
function fn_img_delete(tgtId) {
$('#' + tgtId).find('img').attr('src', '');
}
/**
* 쿠폰찾기 모달 오픈
*/
const fn_open_modal_coupon = function(pIdx){
var modalDivSltr = '#modalDiv';
var modalSlrt = '#findCouponPopup';
var modalUrl = '<c:url value="/mngr/bnft/findCouponPopupForm"/>';
var param = '';
$('#rwdSeqno').val(pIdx);
$.ajax({
type: 'post',
url: modalUrl,
data: {
param
},
success: function (data) {
$(modalSlrt).remove();
$(modalDivSltr).html(data);
$(modalSlrt).modal();
}
});
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">도전OX퀴즈 관리</h2>
<div class="page-title__btn-container">
<a href="#selectCouponListInqire" class="btn outline" onclick="fn_select_list('1'); return false;"><spring:message code="button.list"/></a>
<button class="btn primary" onclick="fn_regist(); return false;" ><spring:message code="button.save"/></button>
</div>
</div>
<div class="content-tab content-tab__fixed">
<a href="#section01" class="content-tab__scroll-btn">기본설정</a>
<a href="#section02" class="content-tab__scroll-btn">보상설정</a>
<a href="#section03" class="content-tab__scroll-btn">문항관리</a>
<a href="#section04" class="content-tab__scroll-btn">화면설정</a>
<a href="#section05" class="content-tab__scroll-btn">참여방법 안내</a>
</div>
<form id="regForm" name="regForm" class="common-form" method="post" action="" enctype="multipart/form-data">
<input type="hidden" id="bnfInnb" name="bnfInnb" value="<c:out value="${ resultMap.paramVO.bnfInnb }"/>"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
<input type="hidden" id="cdnurl" value="${cdnurl}"/>
<input type="hidden" id="rwdSeqno" name="rwdSeqno" value="">
<section id="section01" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">기본설정</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>기본설정 상세내용</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 88%">
</colgroup>
<tbody>
<tr>
<th>사용여부 <span class="red-7">*</span></th>
<td>
<div class="custom-radio-container">
<div class="custom-radio">
<input type="radio" id="useAtY" name="useAt" value="Y">
<label for="useAtY">사용</label>
</div>
<div class="custom-radio ml-10">
<input type="radio" id="useAtN" name="useAt" value="N">
<label for="useAtN">미사용</label>
</div>
<p class="fyi gray-7 ml-10">‘미사용’ 선택시 사용자 참여 불가능</p>
</div>
</td>
</tr>
<tr>
<th>진행기간<span class="red-7">*</span></th>
<td>
<div class="td-inner">
<input type="text" id="bnfBgnDe" name="bnfBgnDe" class="datepicker" title="시작 날짜 선택" value="" autocomplete="off" readonly>
<div class="timepicker-container">
<input type="text" id="bnfBgnTme" name="bnfBgnTme" class="bs-timepicker" title="시작 시간 설정" value="" readonly>
</div>
<span class="tilde">~</span>
<input type="text" id="bnfEndDe" name="bnfEndDe" class="datepicker" title="종료 날짜 선택" value="" autocomplete="off" readonly>
<div class="timepicker-container">
<input type="text" id="bnfEndTme" name="bnfEndTme" class="bs-timepicker" title="종료 시간 설정" value="" readonly>
</div>
<p class="fyi gray-7 ml-10"></p>
</div>
</td>
</tr>
<tr>
<th>제목(관리용)</th>
<td>
<div class="input-container">
<input type="text" id="bnfSj" name="bnfSj" class="input-text wd580" value="" title="">
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
<section id="section02" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">보상설정</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>목록</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 88%">
</colgroup>
<tbody>
<tr>
<th>문항별</th>
<td>
<div class="td-inner">
<div class="input-container wd300">
<input type="hidden" id="bnfRwdCateDv_1" name="rwdVO.arrBnfRwdCateDvCd" value="13010"/>
<input type="hidden" id="bnfRwdGodsDv_1" name="rwdVO.arrBnfRwdGodsDvCd" value="010"/>
<input type="hidden" id="couponInnb_1" name="rwdVO.arrCouponInnb" value="">
<span class="mr-20 wd100">[정답] 마일리지</span>
<input type="text" class="input-text sm right" id="mlgRwdAmt_1" name="rwdVO.arrMlgRwdAmt" value="" placeholder="0">
<span class="ml-4">원</span>
</div>
<div class="input-container wd300">
<input type="hidden" id="bnfRwdCateDv_2" name="rwdVO.arrBnfRwdCateDvCd" value="13020"/>
<input type="hidden" id="bnfRwdGodsDv_2" name="rwdVO.arrBnfRwdGodsDvCd" value="010"/>
<input type="hidden" id="couponInnb_2" name="rwdVO.arrCouponInnb" value="">
<span class="mr-20 wd100">[오답] 마일리지</span>
<input type="text" class="input-text sm right" id="mlgRwdAmt_2" name="rwdVO.arrMlgRwdAmt" value="" placeholder="0">
<span class="ml-4">원</span>
</div>
</div>
</td>
</tr>
<tr>
<th>전체 정답시 추가보상</th>
<td>
<div class="custom-radio-container">
<input type="hidden" id="bnfRwdCateDv_3" name="rwdVO.arrBnfRwdCateDvCd" value="13030"/>
<input type="hidden" id="bnfRwdGodsDv_3" name="rwdVO.arrBnfRwdGodsDvCd" value=""/>
<div class="custom-radio wd90">
<input type="radio" id="rdoGodsDvM" name="rdoGodsDv" value="010">
<label for="rdoGodsDvM">마일리지</label>
</div>
<input type="text" class="input-text right" id="mlgRwdAmt_3" name="rwdVO.arrMlgRwdAmt" value="" placeholder="0">
<div class="custom-radio ml-10">
<input type="radio" id="rdoGodsDvC" name="rdoGodsDv" value="020">
<label for="rdoGodsDvC">쿠폰</label>
</div>
<input type="hidden" id="couponInnb_3" name="rwdVO.arrCouponInnb" value="">
<input type="text" class="input-text wd250" id="couponName_3" name="couponName_3" value="" readonly>
<a href="#" class="btn xsm gray ml-5" onclick="fn_open_modal_coupon('3'); return false;">찾기</a>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
<section id="section03" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">문항관리</h3>
<div class="right">
<button class="btn xsm outline primary" onclick="fn_quiz_add(event); return false;">+ 추가</button>
</div>
</div>
<div id="divQuizArea">
</div>
</section>
<section id="section04" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">화면 설정</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 88%;">
</colgroup>
<tbody>
<tr>
<th>대표 이미지<br>(상단비주얼)</th>
<td>
<div class="td-inner nowrap">
<div class="dropzone-wrapper">
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.extensions.images')" var="acceptFileExtensions"/>
<div class="dropzone" id="my-dropzone1">
</div>
</div>
<div class="file-preview__container" id="scrReprsntImgView" style="display:none;">
<div class="file-preview">
<span class="file-preview__number">등록한 사진</span>
<button type="button" class="file-preview__delete" onclick="fn_img_delete('scrReprsntImgView'); return false;"><span class="visually-hidden">삭제</span></button>
<div class="file-preview__image wd200">
<img src="" alt="대표 이미지" onerror="this.src='/mngr/images/image_placeholder.png'">
</div>
</div>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
<section id="section05" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">참여방법 안내</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper vertical">
<table class="table">
<caption>목록</caption>
<colgroup>
<col style="width: 12%;">
<col>
</colgroup>
<tbody>
<tr>
<th>설명</th>
<td>
<div class="td-inner">
<textarea class="textarea" id="bnfWordsCn" name="bnfWordsCn" title="" cols="30" rows="2"></textarea>
</div>
</td>
</tr>
</tbody>
</table>
<div class="form-control-container mt-10">
<div class="left">
<p class="fyi gray-7">참여 방법, 경품, 당첨자 발표 방식, 관련 법규 등 이벤트에 대해 사용자에게 인내할 내용을 적어주세요.</p>
</div>
<div class="center"></div>
<div class="right"></div>
</div>
</div>
</div>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
<!-- 항목 템플릿 -->
<div id="divQuizTmpl" style="display:none;">
<div class="content-fold__content" id="divQuiz_@idx" data-idx="@idx" style="padding-top:10px;">
<input type="hidden" id="bnfQuizInnb_@idx" name="quizVO.arrBnfQuizInnb" value="">
<input type="hidden" id="delAt_@idx" name="quizVO.arrDelAt" value="N">
<div class="alignR mb5">
<button class="btn xsm outline delete" onclick="fn_quiz_del('@idx'); return false;">- 삭제</button>
</div>
<div class="table-wrapper">
<table class="table">
<caption>퀴즈</caption>
<colgroup>
<col style="width: 10%;">
<col style="width: 20%;">
<col style="width: 70%">
</colgroup>
<tbody>
<tr>
<th rowspan="3">문제 @idx</th>
<th>내용</th>
<td>
<div class="input-container">
<input type="text" class="input-text wd580" id="quizCn_@idx" name="quizVO.arrQuizCn" value="" title="" maxlength="50">
<p class="gray-7 ml-10"> 최대50자</p>
</div>
</td>
</tr>
<tr>
<th>정답</th>
<td>
<div class="custom-radio-container">
<div class="custom-radio wd100">
<input type="radio" id="rdoQuizCnsrO_@idx" name="rdoQuizCnsr_@idx" data-no="@idx" value="O">
<label for="rdoQuizCnsrO_@idx">O</label>
</div>
<div class="custom-radio wd100">
<input type="radio" id="rdoQuizCnsrX_@idx" name="rdoQuizCnsr_@idx" data-no="@idx" value="X">
<label for="rdoQuizCnsrX_@idx">X</label>
</div>
<input type="hidden" id="quizCnsr_@idx" name="quizVO.arrQuizCnsr" value="">
</div>
</td>
</tr>
<tr>
<th>힌트보기 URL</th>
<td>
<div class="input-container">
<input type="text" class="input-text wd580" id="hintUrl_@idx" name="quizVO.arrHintUrl" value="" title="">
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<!-- 쿠폰찾기팝업 -->
<div id="modalDiv">
</div>
<form id="listForm" name="listForm">
<input type="hidden" id="bnfInnb" name ="bnfInnb"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="srchPdDv" name="srchPdDv" value="${ resultMap.paramVO.srchPdDv }">
<input type="hidden" id="srchStartDt" name="srchStartDt" value="${ resultMap.paramVO.srchStartDt }">
<input type="hidden" id="srchEndDt" name="srchEndDt" value="${ resultMap.paramVO.srchEndDt }">
<input type="hidden" id="srchSttDv" name="srchSttDv" value="${ resultMap.paramVO.srchSttDv }"/>
<input type="hidden" id="srchUseAt" name="srchUseAt" value="${ resultMap.paramVO.srchUseAt }"/>
<input type="hidden" id="srchDv" name="srchDv" value="${ resultMap.paramVO.srchDv }"/>
<input type="hidden" id="srchKeyword" name="srchKeyword" value="${ resultMap.paramVO.srchKeyword }"/>
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultMap.paramVO.pageIndex }"/>
<input type="hidden" id="recordCountPerPage" name="recordCountPerPage" value="${ resultMap.paramVO.recordCountPerPage }"/>
<input type="hidden" id="pageUnit" name="pageUnit" value="${ resultMap.paramVO.pageUnit }"/>
</form>
</body>
</html>

View File

@@ -0,0 +1,376 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : PurstmpRegistForm.jsp
Description : 모바일스탬프 혜택 등록 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-09-04 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
fn_create_ckeditor('#wordsCn');
var bnfInnb = $('#regForm #bnfInnb').val();
fn_set_detail(bnfInnb);
$('#amtForChg').on('input', function() {
this.value = this.value.replace(/[^0-9]/g, '');
});
});
/**
* 수정상세 정보 조회
*/
const fn_set_detail = function(bnfInnb) {
const url = '<c:url value="/mngr/bnft/selectBnftDtlUpdtInqire"/>';
if(bnfInnb){
$.ajax({
type: 'post',
url: url,
data : {
'bnfInnb' : bnfInnb,
'bnfDvCd' : $('#bnfDvCd').val()
},
success: function (result) {
const data = JSON.parse(result.resBody.result);
if(data.bnftData !== null) {
const bnftData = data.bnftData;
const bnftRwdList = data.bnftRwdList;
const bnftChgData = data.bnftChgData;
$('#cnSj').val(bnftData.cnSj);
if(!fn_is_empty(bnftData.imgFilCours)) {
var imgPath = $('#cdnurl').val() + bnftData.imgFilCours;
$('#cnImgView').find('img').attr('src', imgPath);
$('#cnImgView').css('display', 'block');
}
for(var i=0; i < bnftRwdList.length; i++) {
var rwdData = bnftRwdList[i]
$('#couponInnb_1').val(rwdData.couponInnb);
$('#couponName_1').val(rwdData.couponName);
$('#rwdCndCnt').val(rwdData.rwdCndCnt);
}
fn_set_editor_data('#wordsCn', bnftData.wordsCn);
$('#amtForChg').val(bnftChgData.amtForChg);
}
}
});
}
}
/**
* 등록
*/
const fn_regist = function() {
var bnfInnb = $('#regForm #bnfInnb').val();
var checked = fn_check_valid();
if(checked) {
var url = '<c:url value="/mngr/bnft/insertBnftInfo"/>';
var msg1 = '모바일 스탬프 기본설정을 <spring:message code="confirm.common.insert"/>';
var msg2 = '<spring:message code="success.common.insert"/>';
var msg3 = '<spring:message code="fail.common.insert"/>';
if(bnfInnb) {
url = '<c:url value="/mngr/bnft/updateBnftInfo"/>';
msg1 = '모바일 스탬프 기본설정을 <spring:message code="confirm.common.update"/>';
msg2 = '<spring:message code="success.common.insert"/>';
msg3 = '<spring:message code="fail.common.update"/>';
}
const formData = new FormData();
$('#regForm').serializeArray().forEach(function (item) {
formData.append(item.name, item.value);
});
$(".dropzone").each(function(index) {
var dropzoneID = "#my-dropzone" + (index + 1);
var myDropzone = Dropzone.forElement(dropzoneID);
myDropzone.files.forEach(function(file) {
formData.append('cnFiles', file);
});
});
if (confirm(msg1)) {
$.ajax({
type: 'post',
enctype: 'multipart/form-data',
url: url,
data: formData,
contentType: false,
processData: false,
success: function (data) {
var str = JSON.parse(data.resBody.result);
if (str.result == 'success') {
alert(msg2);
if(fn_is_empty(bnfInnb)) {
fn_move_dtl_uptpage(data.resBody.result.replace(/[^0-9]/g, ""));
} else {
fn_move_dtl_uptpage(bnfInnb);
}
} else {
alert(msg3);
}
}
});
}
}
};
/**
* 입력값 체크
*/
function fn_check_valid() {
var myDropzone1 = Dropzone.forElement('#my-dropzone1');
var cnImgSrc = $('#cnImgView').find('img').attr('src');
if(cnImgSrc.indexOf('image_placeholder.png') > -1) {
cnImgSrc = '';
}
$('#wordsCn').val(fn_get_editor_data('#wordsCn'));
var amtForChg = $('#amtForChg').val();
if(fn_is_empty($('#cnSj').val())) {
alert('제품명을 입력하세요.');
return false;
} else if (fn_is_empty($('#couponInnb_1').val())) {
alert('쿠폰를 입력하세요.');
return false;
} else if(fn_is_empty(cnImgSrc) && myDropzone1.files.length < 1) {
alert('썸네일을 첨부하세요.');
return false;
} else if(fn_is_empty($('#wordsCn').val())) {
alert('사용방법 안내를 입력하세요.');
return false;
} else if(fn_is_empty(amtForChg)) {
alert('스탬프 설정을 위한 구매금액을 입력하세요.');
return false;
}
return true;
}
/**
* 수정폼 이동
*/
const fn_move_dtl_uptpage = function(Innb) {
const url = '<c:url value="/mngr/bnft/selectBnftDtlUpdtForm"/>';
$('#listForm').attr('action', url);
$('#listForm').attr('method', 'post');
$('#pageIndex').val(1);
$('#listForm #bnfInnb').val(Innb);
$('#listForm').submit();
}
/**
* 수정폼 등록이미지 삭제
*/
function fn_img_delete(tgtId) {
$('#' + tgtId).find('img').attr('src', '');
}
/**
* 쿠폰찾기 모달 오픈
*/
const fn_open_modal_coupon = function(pIdx){
var modalDivSltr = '#modalDiv';
var modalSlrt = '#findCouponPopup';
var modalUrl = '<c:url value="/mngr/bnft/findCouponPopupForm"/>';
var param = '';
$('#rwdSeqno').val(pIdx);
$.ajax({
type: 'post',
url: modalUrl,
data: {
param
},
success: function (data) {
$(modalSlrt).remove();
$(modalDivSltr).html(data);
$(modalSlrt).modal();
}
});
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">기본설정 관리</h2>
<div class="page-title__btn-container">
<button class="btn primary" onclick="fn_regist(); return false;" ><spring:message code="button.save"/></button>
</div>
</div>
<form id="regForm" name="regForm" class="common-form" method="post" action="" enctype="multipart/form-data">
<input type="hidden" id="bnfInnb" name="bnfInnb" value="<c:out value="${ resultMap.paramVO.bnfInnb }"/>"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<input type="hidden" id="bnfSj" name="bnfSj" value="">
<input type="hidden" id="rwdSeqno" name="rwdSeqno" value="">
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
<input type="hidden" id="cdnurl" value="${cdnurl}"/>
<section id="section01" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">선물 설정</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>목록</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 88%">
</colgroup>
<tbody>
<tr>
<th>제품명(노출용)</th>
<td>
<div class="input-container">
<input type="text" class="input-text wd580" id="cnSj" name="cnSj" value="" maxlength="50">
<p class="gray-7 ml-10"> 최대50자</p>
</div>
</td>
</tr>
<tr>
<th>쿠폰</th>
<td>
<div class="td-inner">
<div class="input-container">
<input type="hidden" id="bnfRwdCateDv_1" name="rwdVO.arrBnfRwdCateDvCd" value="14010"/>
<input type="hidden" id="bnfRwdGodsDv_1" name="rwdVO.arrBnfRwdGodsDvCd" value="020"/>
<input type="hidden" id="mlgRwdAmt_1" name="rwdVO.arrMlgRwdAmt" value=""/>
<input type="hidden" id="itmNm_1" name="rwdVO.arrItmNm" value=""/>
<input type="hidden" id="couponInnb_1" name="rwdVO.arrCouponInnb" value="">
<input type="text" class="input-text wd580" id="couponName_1" name="couponName_1" value="" title="쿠폰찾기" readonly>
<a href="#" class="btn xsm gray ml-5" onclick="fn_open_modal_coupon('1'); return false;">찾기</a>
</div>
</div>
</td>
</tr>
<tr>
<th>썸네일</th>
<td>
<div class="td-inner nowrap">
<div class="dropzone-wrapper">
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.extensions.images')" var="acceptFileExtensions"/>
<div class="dropzone" id="my-dropzone1">
</div>
</div>
<div class="file-preview__container" id="cnImgView" style="display:none;">
<div class="file-preview">
<span class="file-preview__number">등록한 사진</span>
<button class="file-preview__delete" onclick="fn_img_delete('cnImgView'); return false;"><span class="visually-hidden">삭제</span></button>
<div class="file-preview__image wd200">
<img src="" alt="로고" onerror="this.src='/mngr/images/image_placeholder.png'">
</div>
</div>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
<section id="section02" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">사용방법 안내</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="td-inner">
<textarea class="textarea" id="wordsCn" name="wordsCn" cols="30" rows="10"></textarea>
</div>
<p class="fyi gray-7 mt-15">참여 방법, 경품, 당첨자 발표 방식, 관련 법규 등 이벤트에 대해 사용자에게 안내할 내용을 적어주세요.</p>
</div>
</section>
<section id="section03" class="content-section content-scroll-detect content-fold">
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>설정</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 88%">
</colgroup>
<tbody>
<tr>
<th>스탬프 설정</th>
<td>
<div class="input-container">
구매금액
<input type="text" id="amtForChg" name="amtForChg" class="input-text right wd100 ml-10 mr-10" title="">
원마다 1 스탬프
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
<!-- 쿠폰찾기팝업 -->
<div id="modalDiv">
</div>
<form id="listForm" name="listForm">
<input type="hidden" id="bnfInnb" name ="bnfInnb"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="srchPdDv" name="srchPdDv" value="${ resultMap.paramVO.srchPdDv }">
<input type="hidden" id="srchStartDt" name="srchStartDt" value="${ resultMap.paramVO.srchStartDt }">
<input type="hidden" id="srchEndDt" name="srchEndDt" value="${ resultMap.paramVO.srchEndDt }">
<input type="hidden" id="srchSttDv" name="srchSttDv" value="${ resultMap.paramVO.srchSttDv }"/>
<input type="hidden" id="srchUseAt" name="srchUseAt" value="${ resultMap.paramVO.srchUseAt }"/>
<input type="hidden" id="srchDv" name="srchDv" value="${ resultMap.paramVO.srchDv }"/>
<input type="hidden" id="srchKeyword" name="srchKeyword" value="${ resultMap.paramVO.srchKeyword }"/>
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultMap.paramVO.pageIndex }"/>
<input type="hidden" id="recordCountPerPage" name="recordCountPerPage" value="${ resultMap.paramVO.recordCountPerPage }"/>
<input type="hidden" id="pageUnit" name="pageUnit" value="${ resultMap.paramVO.pageUnit }"/>
</form>
</body>
</html>

View File

@@ -0,0 +1,201 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : PushDtlsForm.jsp
Description : 알림보내기 상세 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-09-23 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
if(!fn_is_empty($('#imgFilCours').val())) {
var imgPath = $('#cdnurl').val() + $('#imgFilCours').val();
$('#imgView').attr('src', imgPath);
}
});
/**
* 목록 이동
*/
function fn_select_list() {
$('#listForm').attr('action', '<c:url value="/mngr/bnft/selectBnftPushListInqireForm"/>');
$('#listForm').attr('method', 'post');
$('#listForm').submit();
};
/**
* 수정폼 이동
*/
const fn_move_dtl_uptpage = function(Innb) {
const url = '<c:url value="/mngr/bnft/selectBnftPushRegistForm"/>';
$('#listForm').attr('action', url);
$('#listForm').attr('method', 'post');
$('#pageIndex').val(1);
$('#listForm #bnfPushInfoInnb').val(Innb);
$('#listForm').submit();
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">알림메시지 상세</h2>
<div class="page-title__btn-container">
<a href="#selectCouponListInqire" class="btn outline" onclick="fn_select_list('1'); return false;"><spring:message code="button.list"/></a>
</div>
</div>
<form id="regForm" name="regForm" class="common-form" method="post" action="" enctype="multipart/form-data">
<input type="hidden" id="bnfPushInfoInnb" name="bnfPushInfoInnb" value="<c:out value="${ resultMap.paramVO.bnfPushInfoInnb }"/>"/>
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<input type="hidden" id="bnfPushTrgetDvCd" name="bnfPushTrgetDvCd" value="<c:out value="${ resultMap.bnftPushData.bnfPushTrgetDvCd }"/>"/>
<input type="hidden" id="imgFilCours" name="imgFilCours" value="<c:out value="${ resultMap.bnftPushData.imgFilCours }"/>"/>
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
<input type="hidden" id="cdnurl" value="${cdnurl}"/>
<section id="section01" class="content-section content-scroll-detect content-fold" style="">
<div class="content-fold__header">
<h3 class="content-section__title">발송결과</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>테이블 내용</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 38%">
<col style="width: 12%;">
<col style="width: 38%">
</colgroup>
<tbody>
<tr>
<th>발송일시</th>
<td>
<span> ${ resultMap.bnftPushData.pushSendDt } (${ resultMap.bnftPushData.resveSttus })</span>
</td>
<th>대상</th>
<td colspan="3">
<span> ${ resultMap.bnftPushData.bnfPushTrgetDvNm } </span>
<span class="blue-8">(${ resultMap.bnftPushData.trgetAllCnt }명)</span>
</td>
</tr>
<tr>
<th>상태</th>
<td colspan="3">
<c:if test="${ empty resultMap.bnftPushData.sndngAt or resultMap.bnftPushData.sndngAt eq 'N' }">
<span> ${ resultMap.bnftPushData.sndngSttus } </span>
<a href="#" onclick="fn_move_dtl_uptpage(${ resultMap.bnftPushData.bnfPushInfoInnb }); return false;" class="btn xsm outline primary ml-10"> 수정하기</a>
</c:if>
<c:if test="${ resultMap.bnftPushData.sndngAt eq 'Y' }">
<span> ${ resultMap.bnftPushData.sndngSttus } </span>
(
<span class="bar_right"> 총 ${ resultMap.bnftPushData.sndngTrgetCnt }건 </span>
<span class="blue-8 bar_right"> 성공 ${ resultMap.bnftPushData.sndngSuccesCnt }건 </span>
<span class="red-8"> 실패 ${ resultMap.bnftPushData.sndngFailrCnt }건 </span>
)
</c:if>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
<section id="section02" class="content-section content-scroll-detect content-fold" style="">
<div class="content-fold__header">
<h3 class="content-section__title">메시지 내용</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>테이블 내용</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 88%">
</colgroup>
<tbody>
<tr>
<th>제목</th>
<td>
<span> ${ resultMap.bnftPushData.pushSj }</span>
</td>
</tr>
<tr>
<th>내용</th>
<td>
<span> ${ resultMap.bnftPushData.pushCnRpl }</span>
</td>
</tr>
<tr>
<th>이미지</th>
<td>
<span><img src="" id="imgView" alt="" onerror="this.src='/mngr/images/image_placeholder.png'"></span>
</td>
</tr>
</tbody>
</table>
<div class="form-control-container mt-30">
<div class="left">
</div>
<div class="center">
</div>
<div class="right">
<!-- <button class="btn outline"> 삭제 </button> -->
</div>
</div>
</div>
</div>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
<form id="listForm" name="listForm">
<input type="hidden" id="bnfPushInfoInnb" name ="bnfPushInfoInnb"/>
<input type="hidden" id="srchPdDv" name="srchPdDv" value="${ resultMap.paramVO.srchPdDv }">
<input type="hidden" id="srchStartDt" name="srchStartDt" value="${ resultMap.paramVO.srchStartDt }">
<input type="hidden" id="srchEndDt" name="srchEndDt" value="${ resultMap.paramVO.srchEndDt }">
<input type="hidden" id="srchSttDv" name="srchSttDv" value="${ resultMap.paramVO.srchSttDv }"/>
<input type="hidden" id="srchDv" name="srchDv" value="${ resultMap.paramVO.srchDv }"/>
<input type="hidden" id="srchKeyword" name="srchKeyword" value="${ resultMap.paramVO.srchKeyword }"/>
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultMap.paramVO.pageIndex }"/>
<input type="hidden" id="recordCountPerPage" name="recordCountPerPage" value="${ resultMap.paramVO.recordCountPerPage }"/>
<input type="hidden" id="pageUnit" name="pageUnit" value="${ resultMap.paramVO.pageUnit }"/>
</form>
</body>
</html>

View File

@@ -0,0 +1,732 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : PushRegistForm.jsp
Description : 알림보내기 등록 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-09-23 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
var bnfPushInfoInnb = $('#regForm #bnfPushInfoInnb').val();
fn_set_detail(bnfPushInfoInnb);
$(document).on('click', '[name="trgetDv"]', function() {
if($(this).val() == 'A') {
fn_set_trget_cnt($(this).val(), '');
} else if($(this).val() == 'E'){
var dvcd = $('#bnfPushTrgetDv').val();
if(dvcd != '') {
fn_set_trget_cnt($(this).val(), dvcd);
}
}
});
$(document).on('change', '#bnfPushTrgetDv', function() {
var dvcd = $(this).val();
if(dvcd != '') {
fn_set_trget_cnt('E', dvcd);
}
});
// 제목
$('#pushSj').on('input', function() {
updateByteCount($(this), $('#sjByte'), 100);
});
// 내용
$('#pushCn').on('input', function() {
updateByteCount($(this), $('#cnByte'), 500);
});
// 테스트발송 전체선택
$(document).on('click', '#btnChkAll', function() {
$('input[name="testers"]').prop('checked', true);
$(this).attr('id', 'btnChkNon').text('선택해제');
$(this).removeClass('primary').addClass('outline');
});
// 테스트발송 선택해제
$(document).on('click', '#btnChkNon', function() {
$('input[name="testers"]').prop('checked', false);
$(this).attr('id', 'btnChkAll').text('전체선택');
$(this).removeClass('outline').addClass('primary');
});
});
/**
* 수정상세 정보 조회
*/
const fn_set_detail = function(bnfPushInfoInnb) {
const url = '<c:url value="/mngr/bnft/selectBnftPushDtlUpdtInqire"/>';
if(bnfPushInfoInnb){
$.ajax({
type: 'post',
url: url,
data : {
'bnfPushInfoInnb' : bnfPushInfoInnb
},
success: function (result) {
const data = JSON.parse(result.resBody.result);
const pushData = data.bnftPushData;
$('[name=trgetDv][value=' + pushData.trgetDv + ']').prop('checked',true);
$('#bnfPushTrgetDv').val(pushData.bnfPushTrgetDvCd).prop('selected', true).niceSelect('update');
$('#pushSj').val(pushData.pushSj);
$('#pushCn').val(pushData.pushCn);
//$('[name=resveAt][value=' + pushData.resveAt + ']').prop('checked',true);
$('#pushSendDe').val(pushData.pushSendDe);
$('#pushSendTme').val(pushData.pushSendTme);
$('#dataUrl').val(pushData.dataUrl);
if(!fn_is_empty(pushData.imgFilCours)) {
//console.log(pushData.imgFilCours)
var imgPath = $('#cdnurl').val() + pushData.imgFilCours;
$('#imgView').find('img').attr('src', imgPath);
$('#imgView').css('display', 'block');
$('#pushImgLink').val(imgPath);
}
$('#trgetAllCnt').text(pushData.trgetAllCnt);
if(pushData.trgetDv == 'E') {
fn_set_trget_cnt('E', pushData.bnfPushTrgetDvCd);
}
updateByteCount($('#pushSj'), $('#sjByte'), 100);
updateByteCount($('#pushCn'), $('#cnByte'), 500);
}
});
} else {
$('#trgetDvA').prop('checked',true);
$('#pushSendTme').val('00:00');
fn_set_trget_cnt('A', '');
}
}
const fn_set_trget_cnt = function(trgetDv, bnfDvCd) {
const url = '<c:url value="/mngr/bnft/selectBnftPushTrgetCnt"/>';
if(trgetDv) {
$.ajax({
type: 'post',
url: url,
data : {
'trgetDv' : trgetDv,
'bnfDvCd' : bnfDvCd
},
success: function (result) {
const data = JSON.parse(result.resBody.result);
const trgetData = data.bnftTrgetData;
if(trgetData) {
if(trgetDv == 'A') {
$('#trgetAllCnt').text(trgetData.trgetCnt);
} else {
$('#trgetCnt').text(trgetData.agreCnt);
}
} else {
if(trgetDv == 'A') {
$('#trgetAllCnt').text('0');
} else {
$('#trgetCnt').text('0');
}
}
}
});
}
}
/**
* 등록
*/
const fn_regist = function() {
var bnfPushInfoInnb = $('#regForm #bnfPushInfoInnb').val();
var checked = fn_check_valid(bnfPushInfoInnb);
if(checked) {
var url = '<c:url value="/mngr/bnft/insertBnftPushInfo"/>';
var msg1 = '알림메세지를 <spring:message code="confirm.common.insert"/>';
var msg2 = '<spring:message code="success.common.insert"/>';
var msg3 = '<spring:message code="fail.common.insert"/>';
if(bnfPushInfoInnb) {
url = '<c:url value="/mngr/bnft/updateBnftPushInfo"/>';
msg1 = '알림메세지를 <spring:message code="confirm.common.update"/>';
msg2 = '<spring:message code="success.common.update"/>';
msg3 = '<spring:message code="fail.common.update"/>';
}
const formData = new FormData();
$('#regForm').serializeArray().forEach(function (item) {
formData.append(item.name, item.value);
});
$(".dropzone").each(function(index) {
var dropzoneID = "#my-dropzone" + (index + 1);
var myDropzone = Dropzone.forElement(dropzoneID);
myDropzone.files.forEach(function(file) {
formData.append('files', file);
});
});
if (confirm(msg1)) {
$.ajax({
type: 'post',
enctype: 'multipart/form-data',
url: url,
data: formData,
contentType: false,
processData: false,
success: function (data) {
var str = JSON.parse(data.resBody.result);
if (str.result == 'success') {
alert(msg2);
//저장 후 수정화면으로 이동
if(fn_is_empty(bnfPushInfoInnb)) {
fn_move_dtl_uptpage(data.resBody.result.replace(/[^0-9]/g, ""));
} else {
fn_move_dtl_uptpage(bnfPushInfoInnb);
}
} else {
alert(msg3);
}
}
});
}
}
};
/**
* 입력값 체크
*/
function fn_check_valid(bnfPushInfoInnb) {
var myDropzone1 = Dropzone.forElement('#my-dropzone1');
var imgSrc = $('#imgView').find('img').attr('src');
if(imgSrc.indexOf('image_placeholder.png') > -1) {
imgSrc = '';
}
var sendDe = $('#pushSendDe').val();
var sendTme = $('#pushSendTme').val();
var trgetDv = $('input[name=trgetDv]:checked').val();
var resveAt = $('#resveAt').val();
if(fn_is_empty(trgetDv)) {
alert('대상을 선택하세요.');
return false;
} else if(trgetDv == 'E' && fn_is_empty($('#bnfPushTrgetDv').val())) {
alert('개별이벤트를 선택하세요.');
return false;
} else if(fn_is_empty($('#pushSj').val())) {
alert('제목을 입력하세요.');
return false;
} else if(fn_is_empty($('#pushCn').val())) {
alert('내용을 입력하세요.');
return false;
} else if(fn_is_empty(resveAt)) {
alert('발송기준을 선택하세요.');
return false;
} else if(resveAt == 'Y' && fn_is_empty(sendDe)) {
alert('발송 일자을 입력하세요.');
return false;
} else if(resveAt == 'Y' && fn_is_empty(sendTme)) {
alert('발송 시간을 입력하세요.');
return false;
}
if(resveAt == 'Y') {
const pushT = sendTme;
const lmttBgn = $('#lmttBgnTme1').val();
const lmttEnd = $('#lmttEndTme1').val();
// 시간 비교를 위해 숫자로 변환: "HH:mm" → minutes
const toMinutes = (t) => {
const [h, m] = t.split(':').map(Number);
return h * 60 + m;
};
const pushMin = toMinutes(pushT);
const bgnMin = toMinutes(lmttBgn);
const endMin = toMinutes(lmttEnd);
const isLimitTime = bgnMin < endMin
? (pushMin >= bgnMin && pushMin < endMin)
: (pushMin >= bgnMin || pushMin < endMin);
if (isLimitTime) {
alert('설정한 발송시간이 발송제한시간에 해당됩니다.');
return false;
}
// 오늘 날짜이며, 현재시간 + 여유시간보다 발송 시간이 빠른 경우
const today = new Date();
const pushDate = new Date(sendDe + 'T' + sendTme + ':00');
const delayMinutes = 10; // 최소여유시간을 10분으로 설정 (배치주기등 고려)
const nowWithDelay = new Date(today.getTime() + delayMinutes * 60000);
if (sendDe === today.toISOString().slice(0, 10) && pushDate.getTime() < nowWithDelay.getTime()) {
alert('설정시간이 현재시간 기준 너무 촉박하여 발송이 어려울 수 있습니다.');
return false;
}
}
if(trgetDv == 'A') {
$('#bnfPushTrgetDvCd').val('000');
} else {
$('#bnfPushTrgetDvCd').val($('#bnfPushTrgetDv').val());
}
return true;
}
/**
* 삭제
*/
const fn_delete = function() {
var bnfPushInfoInnb = $('#regForm #bnfPushInfoInnb').val();
if(bnfPushInfoInnb) {
var url = '<c:url value="/mngr/bnft/deleteBnftPushInfo"/>';
var msg1 = '알림메세지를 <spring:message code="confirm.common.delete"/>';
var msg2 = '<spring:message code="success.common.delete"/>';
var msg3 = '<spring:message code="fail.common.delete"/>';
const formData = new FormData();
$('#regForm').serializeArray().forEach(function (item) {
formData.append(item.name, item.value);
});
if (confirm(msg1)) {
$.ajax({
type: 'post',
enctype: 'multipart/form-data',
url: url,
data: formData,
contentType: false,
processData: false,
success: function (data) {
var str = JSON.parse(data.resBody.result);
if (str.result == 'success') {
alert(msg2);
//삭제 후 목록화면으로 이동
fn_select_list();
} else {
alert(msg3);
}
}
});
}
}
};
/**
* 목록 이동
*/
function fn_select_list() {
$('#listForm').attr('action', '<c:url value="/mngr/bnft/selectBnftPushListInqireForm"/>');
$('#listForm').attr('method', 'post');
$('#listForm').submit();
};
/**
* 수정폼 이동
*/
const fn_move_dtl_uptpage = function(Innb) {
const url = '<c:url value="/mngr/bnft/selectBnftPushRegistForm"/>';
$('#listForm').attr('action', url);
$('#listForm').attr('method', 'post');
$('#pageIndex').val(1);
$('#listForm #bnfPushInfoInnb').val(Innb);
$('#listForm').submit();
}
/**
* 수정폼 등록이미지 삭제
*/
function fn_img_delete(tgtId) {
$('#' + tgtId).find('img').attr('src', '');
}
/**
* 테스트 발송대상 모달 오픈
*/
const fn_open_modal_tester = function(){
const formData = new FormData();
$(".dropzone").each(function(index) {
var dropzoneID = "#my-dropzone" + (index + 1);
var myDropzone = Dropzone.forElement(dropzoneID);
myDropzone.files.forEach(function(file) {
formData.append('files', file);
});
});
// 모달오픈전 이미지 저장
if(formData.has('files')) {
const url = '<c:url value="/mngr/bnft/uploadPushImgFile"/>';
$.ajax({
type: 'post',
enctype: 'multipart/form-data',
url: url,
data: formData,
contentType: false,
processData: false,
success: function (data) {
var str = JSON.parse(data.resBody.result);
//console.log(str);
if (str.result == 'success') {
if(!fn_is_empty(str.imgFilCours)) {
var imgPath = $('#cdnurl').val() + str.imgFilCours.replace(/\\/g, '/');
$('#pushImgLink').val(imgPath);
}
$('#selTesterPopup').modal();
} else {
alert('이미지 저장에 실패하였습니다.');
}
}
});
} else {
$('#selTesterPopup').modal();
}
}
/**
* 테스트 발송대상 메세지 보내기
*/
const fn_push_send = function(){
const testers = $('input[name="testers"]:checked'); // 선택된 체크박스만 가져옴
const arrMbrDeviceInnb = [];
const arrFcmToken = [];
testers.each(function() {
arrMbrDeviceInnb.push($(this).val()); // mbrDeviceInnb 값 추가
arrFcmToken.push($(this).data('token')); // fcmToken 값 추가
});
var pushType = "notice";
var pushSj = $('#pushSj').val();
var pushCn = $('#pushCn').val();
var imgFilCours = $('#pushImgLink').val();
console.log('imgFilCours : ' + imgFilCours);
//var imgFilCours = "https://img.gcone.co.kr/AF/board/event/202411/AF28052334352ZCA76TI.jpg";
var dataUrl = $('#dataUrl').val();
var dataKey = $('#dataKey').val();
var dataExt = $('#dataExt').val();
const url = '<c:url value="/mngr/bnft/procTestPushNotification"/>';
$.ajax({
type: 'post',
url: url,
contentType: 'application/json; charset=UTF-8',
data : JSON.stringify({
arrMbrDeviceInnb: arrMbrDeviceInnb,
arrFcmToken: arrFcmToken,
pushSj: pushSj,
pushCn: pushCn,
pushType: pushType,
imgFilCours: imgFilCours,
dataUrl: dataUrl,
dataKey: dataKey,
dataExt: dataExt
}),
success: function (result) {
const str = JSON.parse(result.resBody.result);
//console.log(str);
if (str.result == 'success') {
alert('테스트 알림을 발송하였습니다.');
$('a[href="#close-modal"]').click();
}
}
});
}
/**
* 문자열 byte수 반환
*/
function getBytes(str) {
return new Blob([str]).size; // 문자열을 바이트로 계산
}
/**
* 문자열 byte수 표시 & 제한
*/
function updateByteCount($el, $byteEl, maxBytes) {
let text = $el.val();
let bytes = getBytes(text);
if (bytes > maxBytes) {
// 최대 바이트 초과 시 마지막 입력을 자름
while (getBytes(text) > maxBytes) {
text = text.slice(0, -1);
}
$el.val(text);
}
$byteEl.text(getBytes($el.val()));
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">알림메시지 등록</h2>
<div class="page-title__btn-container">
<a href="#selectCouponListInqire" class="btn outline" onclick="fn_select_list('1'); return false;"><spring:message code="button.list"/></a>
<button class="btn dark" onclick="fn_delete(); return false;"><spring:message code="button.delete"/></button>
<button class="btn primary" onclick="fn_regist(); return false;" ><spring:message code="button.save"/></button>
</div>
</div>
<form id="regForm" name="regForm" class="common-form" method="post" action="" enctype="multipart/form-data">
<input type="hidden" id="bnfPushInfoInnb" name="bnfPushInfoInnb" value="<c:out value="${ resultMap.paramVO.bnfPushInfoInnb }"/>"/>
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<input type="hidden" id="bnfPushTrgetDvCd" name="bnfPushTrgetDvCd" value="<c:out value="${ resultMap.paramVO.bnfPushTrgetDvCd }"/>"/>
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
<input type="hidden" id="cdnurl" value="${cdnurl}"/>
<input type="hidden" id="imgCdnurl" name="imgCdnurl" value="${cdnurl}"/>
<input type="hidden" id="pushImgLink" value=""/>
<input type="hidden" id="lmttBgnTme1" value="<c:out value="${ resultMap.bnftPushSetupData.lmttBgnTme1 }"/>"/>
<input type="hidden" id="lmttEndTme1" value="<c:out value="${ resultMap.bnftPushSetupData.lmttEndTme1 }"/>"/>
<section id="section01" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">메세지 설정</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>목록</caption>
<colgroup>
<col style="width: 15%;">
<col style="width: 85%">
</colgroup>
<tbody>
<tr>
<th>대상</th>
<td>
<div class="td-inner">
<div class="custom-radio-container">
<div class="custom-radio">
<input type="radio" id="trgetDvA" name="trgetDv" value="A">
<label for="trgetDvA">이벤트 공통</label>
</div>
<p class="fyi blue-8 ml-10"> 대상인원: <span id="trgetAllCnt"></span>명</p>
<div class="custom-radio ml-10">
<input type="radio" id="trgetDvE" name="trgetDv" value="E">
<label for="trgetDvE">개별 이벤트</label>
</div>
</div>
<div class="select-box ml-10">
<select id="bnfPushTrgetDv" name="bnfPushTrgetDv">
<option value="">선택</option>
<option value="010">출석체크</option>
<option value="050">캡슐만들기</option>
<option value="070">라이브쇼핑참여</option>
<option value="100">섭취챌린지</option>
<option value="130">도전OX퀴즈</option>
</select>
</div>
<p class="fyi blue-8 ml-10"> 대상인원: <span id="trgetCnt"></span>명</p>
</div>
</td>
</tr>
<tr>
<th>제목 (선택)</th>
<td>
<div class="input-container">
<input type="text" class="input-text wd600" id="pushSj" name="pushSj" value="">
<p class="gray-7 ml-10"><span id="sjByte">0</span> / 100 byte 이내</p>
</div>
</td>
</tr>
<tr>
<th>내용 (선택)</th>
<td>
<div class="td-inner">
<div class="textarea_form wd600">
<textarea class="textarea" id="pushCn" name="pushCn" rows="5"></textarea>
</div>
<p class="gray-7 ml-10"><span id="cnByte">0</span> / 500 byte 이내</p>
</div>
</td>
</tr>
<tr>
<th>이미지 (선택)</th>
<td>
<div class="td-inner nowrap">
<div class="dropzone-wrapper">
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.extensions.images')" var="acceptFileExtensions"/>
<div class="dropzone wd580" id="my-dropzone1">
</div>
</div>
<div class="file-preview__container" id="imgView" style="display:none;">
<div class="file-preview" style="margin-top:10px">
<span class="file-preview__number">등록한 사진</span>
<button class="file-preview__delete" onclick="fn_img_delete('imgView'); return false;"><span class="visually-hidden">삭제</span></button>
<div class="file-preview__image wd200">
<img src="" id="imgFilCours" name="imgFilCours" alt="로고" onerror="this.src='/mngr/images/image_placeholder.png'">
</div>
</div>
</div>
</div>
</td>
</tr>
<tr>
<th>타겟페이지 링크 (선택)</th>
<td>
<div class="input-container">
<input type="text" class="input-text wd600" id="dataUrl" name="dataUrl" value="" placeholder="">
<input type="hidden" id="dataKey" name="dataKey" value=""/>
<input type="hidden" id="dataExt" name="dataExt" value=""/>
</div>
<p class="gray-7 ml-10" style="margin-top:10px;">
※ 알림을 눌렀을 때 연결될 페이지의 URL 경로를 입력하세요. 도메인은 생략하고, /로 시작하는 경로만 입력합니다.
(ex. /sopmal/goods/selectGoodsDtl?goodsInnb=986)
</p>
</td>
</tr>
</tbody>
</table>
<div class="form-control-container mt-30">
<div class="center">
<a href="#" class="btn outline lg primary" onclick="fn_open_modal_tester(); return false;">테스트 발송</a>
</div>
</div>
</div>
</div>
</section>
<section id="section02" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">발송 설정</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption></caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 88%">
</colgroup>
<tbody>
<tr>
<th>발송시간</th>
<td>
<div class="td-inner">
<div class="custom-radio-container">
<!--<div class="custom-radio">
<input type="radio" id="resveAtN" name="resveAt" value="N">
<label for="resveAtN">즉시발송</label>
</div>
<div class="custom-radio ml-15">
<input type="radio" id="resveAtY" name="resveAt" value="Y">
<label for="resveAtY">예약발송</label>
</div>-->
<input type="hidden" id="resveAt" name="resveAt" value="Y">
<div class="input-container">
<input type="text" id="pushSendDe" name="pushSendDe" class="datepicker" value="" autocomplete="off" readonly>
</div>
<div class="timepicker-container">
<input type="text" id="pushSendTme" name="pushSendTme" class="bs-timepicker" value="" readonly>
<span style="margin-left:20px;">※ 발송시간 : 현재일의 경우 최소 10분이후 발송시간 지정, &nbsp;&nbsp;발송제한시간 : ${ resultMap.bnftPushSetupData.lmttBgnTme1 } ~ ${ resultMap.bnftPushSetupData.lmttEndTme1 } </span>
</div>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
<!-- 테스트 발송대상 팝업 -->
<div id="selTesterPopup" class="modal">
<div class="modal-header">
<h4>테스트 발송 수신 대상 선택</h4>
</div>
<div class="modal-content">
<p class="blue-8">‘설정’에서 등록대상을 추가할 수 있습니다.</p>
<div class="messege-check-listWrap">
<ul class="messege-check-list">
<c:choose>
<c:when test="${ not empty resultMap.testerList && fn:length(resultMap.testerList) > 0 }">
<c:forEach items="${ resultMap.testerList }" var="testerList" varStatus="status">
<li>
<label class="b-checkbox checkbox">
<input type="checkbox" id="tester_${testerList.mbrDeviceInnb}" name="testers" data-token="${testerList.fcmToken}" value="${testerList.mbrDeviceInnb}">
<span class="check"></span>
<span class="control-label">
${ testerList.mbrNm } (ID : ${ testerList.mbrId }<%-- , &nbsp;FCM Token : ${ testerList.fcmToken } --%>)
</span>
</label>
</li>
</c:forEach>
</c:when>
<c:otherwise></c:otherwise>
</c:choose>
</ul>
</div>
<div class="form-control-container">
<div class="left">
<button class="btn primary sm" id="btnChkAll">전체선택</button>
</div>
<div class="center">
</div>
<div class="right">
<a href="#" rel="modal:close" class="btn outline">취소</a>
<button class="btn primary" onclick="fn_push_send();">보내기</button>
</div>
</div>
</div>
</div>
<form id="listForm" name="listForm">
<input type="hidden" id="bnfPushInfoInnb" name ="bnfPushInfoInnb"/>
<input type="hidden" id="srchPdDv" name="srchPdDv" value="${ resultMap.paramVO.srchPdDv }">
<input type="hidden" id="srchStartDt" name="srchStartDt" value="${ resultMap.paramVO.srchStartDt }">
<input type="hidden" id="srchEndDt" name="srchEndDt" value="${ resultMap.paramVO.srchEndDt }">
<input type="hidden" id="srchSttDv" name="srchSttDv" value="${ resultMap.paramVO.srchSttDv }"/>
<input type="hidden" id="srchDv" name="srchDv" value="${ resultMap.paramVO.srchDv }"/>
<input type="hidden" id="srchKeyword" name="srchKeyword" value="${ resultMap.paramVO.srchKeyword }"/>
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultMap.paramVO.pageIndex }"/>
<input type="hidden" id="recordCountPerPage" name="recordCountPerPage" value="${ resultMap.paramVO.recordCountPerPage }"/>
<input type="hidden" id="pageUnit" name="pageUnit" value="${ resultMap.paramVO.pageUnit }"/>
</form>
<form id="sendForm" name="sendForm">
<input type="hidden" id="testerInnbs" name ="testerInnbs"/>
</form>
</body>
</html>

View File

@@ -0,0 +1,222 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : PushRegistForm.jsp
Description : 알림보내기 등록 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-09-23 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
});
/**
* 등록
*/
const fn_regist = function() {
var checked = fn_check_valid();
if(checked) {
var emptyYn = $('#emptyYn').val();
var url = '<c:url value="/mngr/bnft/insupdBnftPushSetup"/>';
var msg1 = '알림설정을 <spring:message code="confirm.common.insert"/>';
var msg2 = '<spring:message code="success.common.insert"/>';
var msg3 = '<spring:message code="fail.common.insert"/>';
if(emptyYn == 'N') {
url = '<c:url value="/mngr/bnft/updateBnftPushSetup"/>';
msg1 = '알림설정을 <spring:message code="confirm.common.update"/>';
msg2 = '<spring:message code="success.common.update"/>';
msg3 = '<spring:message code="fail.common.update"/>';
}
const formData = new FormData();
$('#regForm').serializeArray().forEach(function (item) {
formData.append(item.name, item.value);
});
if (confirm(msg1)) {
$.ajax({
type: 'post',
enctype: 'multipart/form-data',
url: url,
data: formData,
contentType: false,
processData: false,
success: function (data) {
var str = JSON.parse(data.resBody.result);
if (str.result == 'success') {
alert(msg2);
//저장 후 페이지 리로딩
fn_move_dtl_uptpage();
} else {
alert(msg3);
}
}
});
}
}
};
/**
* 입력값 체크
*/
function fn_check_valid() {
var trgetMbrIds = $('#trgetMbrIds').val();
var lmttBgnTme1 = $('#lmttBgnTme1').val();
var lmttEndTme1 = $('#lmttEndTme1').val();
//var lmttBgnTme2 = $('#lmttBgnTme2').val();
//var lmttEndTme2 = $('#lmttEndTme2').val();
if(fn_is_empty(trgetMbrIds)) {
alert('수신계정 아이디를 입력하세요.');
return false;
}
if ((!fn_is_empty(lmttBgnTme1) && fn_is_empty(lmttEndTme1)) || (fn_is_empty(lmttBgnTme1) && !fn_is_empty(lmttEndTme1))) {
alert('발송제한시간의 시작시간과 종료시간을 모두 입력하세요.');
return false;
}
//if ((!fn_is_empty(lmttBgnTme2) && fn_is_empty(lmttEndTme2)) || (fn_is_empty(lmttBgnTme2) && !fn_is_empty(lmttEndTme2))) {
// alert('두번째 발송제한시간의 시작시간과 종료시간을 모두 입력하세요.');
// return false;
//}
return true;
}
/**
* 페이지 리로드
*/
const fn_move_dtl_uptpage = function() {
window.location.reload();
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">알림설정</h2>
<div class="page-title__btn-container">
<button class="btn primary" onclick="fn_regist(); return false;" ><spring:message code="button.save"/></button>
</div>
</div>
<form id="regForm" name="regForm" class="common-form" method="post" action="" enctype="multipart/form-data">
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<c:if test="${ empty resultMap.bnftPushSetupData }"><c:set var="emptyYn" value="Y"/></c:if>
<c:if test="${ not empty resultMap.bnftPushSetupData }"><c:set var="emptyYn" value="N"/></c:if>
<input type="hidden" id="emptyYn" name="emptyYn" value="${ emptyYn }"/>
<section id="section01" class="content-section content-scroll-detect content-fold" style="">
<div class="content-fold__header">
<h3 class="content-section__title">테스트 발송 메시지 수신 계정</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>테이블 내용</caption>
<colgroup>
<col style="width: 15%;">
<col style="width: 85%">
</colgroup>
<tbody>
<tr>
<th>아이디 (';'로 구분)</th>
<td>
<div class="input-container">
<input type="text" class="input-text wd580" id="trgetMbrIds" name="trgetMbrIds" value="${ resultMap.bnftPushSetupData.trgetMbrIds }" title="">
<p class="gray-7 ml-10"> ex) tester1;tester2;</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
<section id="section02" class="content-section content-scroll-detect content-fold" style="">
<div class="content-fold__header">
<h3 class="content-section__title">자동 발송 시간 설정</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>테이블 내용</caption>
<colgroup>
<col style="width: 15%;">
<col style="width: 85%">
</colgroup>
<tbody>
<tr>
<th rowspan="1">발송 제한 시간</th>
<td>
<div class="td-inner">
<div class="timepicker-container">
<input type="text" class="bs-timepicker" id="lmttBgnTme1" name="lmttBgnTme1" value="${ resultMap.bnftPushSetupData.lmttBgnTme1 }">
<span class="ml-10">부터</span>
<input type="text" class="bs-timepicker ml-10" id="lmttEndTme1" name="lmttEndTme1" value="${ resultMap.bnftPushSetupData.lmttEndTme1 }">
<span class="ml-10">까지 발송하지 않음</span>
</div>
</div>
</td>
</tr>
<!--
<tr>
<td>
<div class="td-inner">
<div class="timepicker-container">
<input type="text" class="bs-timepicker" id="lmttBgnTme2" name="lmttBgnTme2" value="${ resultMap.bnftPushSetupData.lmttBgnTme2 }">
<span class="ml-10">부터</span>
<input type="text" class="bs-timepicker ml-10" id="lmttEndTme2" name="lmttEndTme2" value="${ resultMap.bnftPushSetupData.lmttEndTme2 }">
<span class="ml-10">까지 발송하지 않음</span>
</div>
</div>
</td>
</tr>
-->
</tbody>
</table>
</div>
</div>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
</body>
</html>

View File

@@ -0,0 +1,208 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : QrcodeMakeForm.jsp
Description : QR코드 생성 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2025-07-03 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.min.js"></script>
<script>
$( document ).ready(function() {
});
const fn_makeqr = function() {
var strInnb = $('#strInnb').val();
if (!strInnb) {
alert("먼저 매장을 선택하세요.");
return;
}
var finalUrl = $('#qrUrl').text() + $('#qrSub').text();
var $qrDiv = $('#qrImg');
$qrDiv.empty(); // 기존 QR 코드 제거
new QRCode($qrDiv[0], {
text: finalUrl,
width: 200,
height: 200,
colorDark : "#000000",
colorLight : "#ffffff",
correctLevel : QRCode.CorrectLevel.H
});
setTimeout(function() {
var imgSrc = $qrDiv.find('img').attr('src');
if (imgSrc) {
var $btn = $('#qrDownloadBtn');
// 1. 동적 파일명 생성 (예: qr_쿠폰번호_날짜.png)
var today = new Date();
var ymd = today.getFullYear().toString() +
('0' + (today.getMonth() + 1)).slice(-2) +
('0' + today.getDate()).slice(-2);
var filename = 'qr_' + strInnb + '_' + ymd + '.png';
// 2. 버튼 속성 세팅
$btn.attr('href', imgSrc);
$btn.attr('download', filename);
$btn.show();
}
}, 500);
}
/**
* 입력값 체크
*/
function fn_check_valid(bnfInnb) {
var bgnDe = $('#bnfBgnDe').val();
var bgnTme = $('#bnfBgnTme').val();
var endDe = $('#bnfEndDe').val();
var endTme = $('#bnfEndTme').val();
if(fn_is_empty($('input[name=useAt]:checked').val())) {
alert('사용여부를 선택하세요.');
return false;
} else if(fn_is_empty(bgnDe)) {
alert('진행기간 시작일을 입력하세요.');
return false;
}
return isValid;
}
/**
* 매장찾기 모달 오픈
*/
const fn_open_modal_store = function(pIdx){
var modalDivSltr = '#modalDiv';
var modalSlrt = '#findStorePopup';
var modalUrl = '<c:url value="/mngr/bnft/findStorePopupForm"/>';
var param = '';
$.ajax({
type: 'post',
url: modalUrl,
data: {
param
},
success: function (data) {
$(modalSlrt).remove();
$(modalDivSltr).html(data);
$(modalSlrt).modal();
}
});
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">QR코드 만들기</h2>
<div class="page-title__btn-container">
</div>
</div>
<form id="regForm" name="regForm" class="common-form" method="post" action="" enctype="multipart/form-data">
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${sopmalCd}"/>"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${bnfDvCd}"/>"/>
<input type="hidden" id="reqUrl" name="reqUrl" value="<c:out value="${reqUrl}"/>"/>
<input type="hidden" id="strInnb" name="strInnb" value="">
<section id="section01" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">URL 설정</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>보상설정 상세내용</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 88%;">
</colgroup>
<tbody>
<tr>
<th>매장찾기</th>
<td>
<div class="td-inner mt-10">
<div class="input-container">
<input type="text" class="input-text wd300" id="strName" name="strName" value="" readonly>
<a href="#" class="btn xsm gray ml-5" onclick="fn_open_modal_store(); return false;">찾기</a>
<a href="#" class="btn xsm complete ml-15" onclick="fn_makeqr(); return false;">QR생성</a>
</div>
</div>
</td>
</tr>
<tr>
<th>URL</th>
<td>
<div class="td-inner">
<div class="input-container">
<span id="qrUrl" class="blue-8">${reqUrl}/sopmal/app/openApp?linkType=reward&bnfDvCd=${bnfDvCd}&strInnb=</span>
<span id="qrSub" class="blue-8"></span>
</div>
</div>
</td>
</tr>
<tr>
<th>QR코드</th>
<td>
<div class="td-inner">
<div id="qrImg" class="input-container"></div>
<a id="qrDownloadBtn" href="#" download="qr.png" class="btn xsm complete ml-15" style="display:none;">QR 다운로드</a>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
<!-- 쿠폰찾기팝업 -->
<div id="modalDiv">
</div>
</body>
</html>

View File

@@ -0,0 +1,487 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : QrevntRegistForm.jsp
Description : QR코드 이벤트 혜택 등록 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-09-07 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
fn_create_ckeditor('#bnfWordsCn');
//진행기간 from to 체크(현재 날짜 보다 작을 시 alert)
$(document).on('change', '.datepicker', function () {
fn_check_fromTo('#bnfBgnDe', '#bnfEndDe', "date");
});
// 마일리지, 상품수량, 당첨확률 숫자입력 체크
$('#przwinQy_1, #przwinPrc_1').on('input', function() {
if (this.id.startsWith('przwinPrc_')) {
this.value = this.value.replace(/[^0-9.]/g, '');
// 소수점이 여러 번 입력되지 않도록 함
if ((this.value.match(/\./g) || []).length > 1) {
this.value = this.value.slice(0, -1);
}
} else {
this.value = this.value.replace(/[^0-9]/g, '');
}
});
var bnfInnb = $('#regForm #bnfInnb').val();
fn_set_detail(bnfInnb);
});
/**
* 수정상세 정보 조회
*/
const fn_set_detail = function(bnfInnb) {
const url = '<c:url value="/mngr/bnft/selectBnftDtlUpdtInqire"/>';
if(bnfInnb){
$.ajax({
type: 'post',
url: url,
data : {
'bnfInnb' : bnfInnb
},
success: function (result) {
const data = JSON.parse(result.resBody.result);
const bnftData = data.bnftData;
const bnftRwdList = data.bnftRwdList;
$('[name=useAt][value=' + bnftData.useAt + ']').prop('checked',true);
$('#bnfBgnDe').val(bnftData.bnfBgnDe);
$('#bnfBgnTme').val(bnftData.bnfBgnTme);
$('#bnfEndDe').val(bnftData.bnfEndDe);
$('#bnfEndTme').val(bnftData.bnfEndTme);
$('#bnfSj').val(bnftData.bnfSj);
for(var i=0; i < bnftRwdList.length; i++) {
var rwdData = bnftRwdList[i]
var seq = i + 1;
$('#przwinQy_' + seq).val(rwdData.przwinQy);
$('#przwinPrc_' + seq).val(rwdData.przwinPrc);
$('#couponInnb_' + seq).val(rwdData.couponInnb);
$('#couponName_' + seq).val(rwdData.couponName);
}
fn_set_editor_data('#bnfWordsCn', bnftData.bnfWordsCn);
}
});
} else {
$('#bnfBgnTme, #bnfEndTme').val('00:00');
}
}
/**
* 등록
*/
const fn_regist = function() {
var bnfInnb = $('#regForm #bnfInnb').val();
var checked = fn_check_valid(bnfInnb);
if(checked) {
var url = '<c:url value="/mngr/bnft/insertBnftInfo"/>';
var msg1 = 'QR코드 이벤트 혜택을 <spring:message code="confirm.common.insert"/>';
var msg2 = '<spring:message code="success.common.insert"/>';
var msg3 = '<spring:message code="fail.common.insert"/>';
if(bnfInnb) {
url = '<c:url value="/mngr/bnft/updateBnftInfo"/>';
msg1 = 'QR코드 이벤트 혜택을 <spring:message code="confirm.common.update"/>';
msg2 = '<spring:message code="success.common.insert"/>';
msg3 = '<spring:message code="fail.common.update"/>';
}
const formData = new FormData();
$('#regForm').serializeArray().forEach(function (item) {
formData.append(item.name, item.value);
});
if (confirm(msg1)) {
$.ajax({
type: 'post',
enctype: 'multipart/form-data',
url: url,
data: formData,
contentType: false,
processData: false,
success: function (data) {
var str = JSON.parse(data.resBody.result);
if (str.result == 'success') {
alert(msg2);
//저장 후 수정화면으로 이동
if(fn_is_empty(bnfInnb)) {
fn_move_dtl_uptpage(data.resBody.result.replace(/[^0-9]/g, ""));
} else {
fn_move_dtl_uptpage(bnfInnb);
}
} else {
alert(msg3);
}
}
});
}
}
};
/**
* 입력값 체크
*/
function fn_check_valid(bnfInnb) {
var bgnDe = $('#bnfBgnDe').val();
var bgnTme = $('#bnfBgnTme').val();
var endDe = $('#bnfEndDe').val();
var endTme = $('#bnfEndTme').val();
$('#bnfWordsCn').val(fn_get_editor_data('#bnfWordsCn'));
var przwinQy = $('#przwinQy_1').val();
var przwinPrc = $('#przwinPrc_1').val();
var couponInnb = $('#couponInnb_1').val();
if(fn_is_empty($('input[name=useAt]:checked').val())) {
alert('사용여부를 선택하세요.');
return false;
} else if(fn_is_empty(bgnDe)) {
alert('진행기간 시작일을 입력하세요.');
return false;
} else if(fn_is_empty(endDe)) {
alert('진행기간 종료일을 입력하세요.');
return false;
} else if(!fn_check_date(bgnDe, endDe)) {
alert('진행기간 종료일이 시작일보다 작습니다.');
return false;
} else if (!fn_check_date(bgnDe + ' ' + bgnTme, endDe + ' ' + endTme)) {
alert('진행기간 종료일이 시작일보다 작습니다.');
return false;
} else if(fn_is_empty($('#bnfSj').val())) {
alert('제목을 입력하세요.');
return false;
} else if (fn_is_empty(couponInnb)) {
alert('보상 쿠폰을 입력하세요.');
return false;
} else if(fn_is_empty(przwinPrc)) {
alert('당첨확률을 입력하세요.');
return false;
} /*else if(fn_is_empty(przwinQy)) {
alert('당첨수량을 입력하세요.');
return false;
}*/ else if(fn_is_empty($('#bnfWordsCn').val())) {
alert('안내를 입력하세요.');
return false;
}
// 진행일시 중복 체크
var isValid = false;
$.ajax({
url: '<c:url value="/mngr/bnft/selectBnftDtOvlCnt"/>',
type: 'POST',
data: {
bnfInnb: $('#regForm #bnfInnb').val(),
bnfDvCd: $('#regForm #bnfDvCd').val(),
bnfBgnDt: bgnDe + ' ' + bgnTme + ':01',
bnfEndDt: endDe + ' ' + endTme + ':00'
},
async: false,
success: function(result) {
const data = JSON.parse(result.resBody.result);
var ovlCnt = data.ovlCnt;
if (ovlCnt > 0) {
alert('입력하신 진행기간에 이미 등록된 QR코드 이벤트 혜택이 있습니다.\n\n확인후 다시 입력하세요.');
isValid = false;
} else {
isValid = true;
}
},
error: function() {
alert('진행일시 중복 체크 중 오류가 발생했습니다.');
isValid = false;
}
});
return isValid;
}
/**
* 목록 이동
*/
function fn_select_list() {
$('#listForm').attr('action', '<c:url value="/mngr/bnft/selectBnftListInqireForm"/>');
$('#listForm').attr('method', 'post');
$('#listForm').submit();
};
/**
* 수정폼 이동
*/
const fn_move_dtl_uptpage = function(Innb) {
const url = '<c:url value="/mngr/bnft/selectBnftDtlUpdtForm"/>';
$('#listForm').attr('action', url);
$('#listForm').attr('method', 'post');
$('#pageIndex').val(1);
$('#listForm #bnfInnb').val(Innb);
$('#listForm').submit();
}
/**
* 쿠폰찾기 모달 오픈
*/
const fn_open_modal_coupon = function(pIdx){
var modalDivSltr = '#modalDiv';
var modalSlrt = '#findCouponPopup';
var modalUrl = '<c:url value="/mngr/bnft/findCouponPopupForm"/>';
var param = '';
$('#rwdSeqno').val(pIdx);
$.ajax({
type: 'post',
url: modalUrl,
data: {
param
},
success: function (data) {
$(modalSlrt).remove();
$(modalDivSltr).html(data);
$(modalSlrt).modal();
}
});
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">QR코드 이벤트 상세</h2>
<div class="page-title__btn-container">
<a href="#selectCouponListInqire" class="btn outline" onclick="fn_select_list('1'); return false;"><spring:message code="button.list"/></a>
<button class="btn primary" onclick="fn_regist(); return false;" ><spring:message code="button.save"/></button>
</div>
</div>
<!-- <div class="content-tab content-tab__fixed">
<a href="#section01" class="content-tab__scroll-btn">기본설정</a>
<a href="#section02" class="content-tab__scroll-btn">보상설정</a>
<a href="#section03" class="content-tab__scroll-btn">화면설정</a>
<a href="#section04" class="content-tab__scroll-btn">참여방법 안내</a>
</div> -->
<form id="regForm" name="regForm" class="common-form" method="post" action="" enctype="multipart/form-data">
<input type="hidden" id="bnfInnb" name="bnfInnb" value="<c:out value="${ resultMap.paramVO.bnfInnb }"/>"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<input type="hidden" id="rwdSeqno" name="rwdSeqno" value="">
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
<input type="hidden" id="cdnurl" value="${cdnurl}"/>
<section id="section01" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">기본설정</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>기본설정 상세내용</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 88%">
</colgroup>
<tbody>
<tr>
<th>사용여부 <span class="red-7">*</span></th>
<td>
<div class="custom-radio-container">
<div class="custom-radio">
<input type="radio" id="useAtY" name="useAt" value="Y">
<label for="useAtY">사용</label>
</div>
<div class="custom-radio ml-10">
<input type="radio" id="useAtN" name="useAt" value="N">
<label for="useAtN">미사용</label>
</div>
<p class="fyi gray-7 ml-10">‘미사용’ 선택시 사용자 참여 불가능</p>
</div>
</td>
</tr>
<tr>
<th>진행기간<span class="red-7">*</span></th>
<td>
<div class="td-inner">
<input type="text" id="bnfBgnDe" name="bnfBgnDe" class="datepicker" title="시작 날짜 선택" value="" autocomplete="off" readonly>
<div class="timepicker-container">
<input type="text" id="bnfBgnTme" name="bnfBgnTme" class="bs-timepicker" title="시작 시간 설정" value="" readonly>
</div>
<span class="tilde">~</span>
<input type="text" id="bnfEndDe" name="bnfEndDe" class="datepicker" title="종료 날짜 선택" value="" autocomplete="off" readonly>
<div class="timepicker-container">
<input type="text" id="bnfEndTme" name="bnfEndTme" class="bs-timepicker" title="종료 시간 설정" value="" readonly>
</div>
<p class="fyi gray-7 ml-10"></p>
</div>
</td>
</tr>
<tr>
<th>제목(관리용)</th>
<td>
<div class="input-container">
<input type="text" id="bnfSj" name="bnfSj" class="input-text wd580" value="" title="">
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
<section id="section02" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">보상설정</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>보상설정 상세내용</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 88%;">
</colgroup>
<tbody>
<tr>
<th>쿠폰</th>
<td>
<div class="td-inner mt-10">
<div class="input-container">
<input type="hidden" id="bnfRwdCateDv_1" name="rwdVO.arrBnfRwdCateDvCd" value="15010"/>
<input type="hidden" id="bnfRwdGodsDv_1" name="rwdVO.arrBnfRwdGodsDvCd" value="020"/>
<input type="hidden" id="couponInnb_1" name="rwdVO.arrCouponInnb" value="">
<input type="text" class="input-text wd300" id="couponName_1" name="couponName_1" value="" readonly>
<a href="#" class="btn xsm gray ml-5" onclick="fn_open_modal_coupon('1'); return false;">찾기</a>
</div>
</div>
</td>
</tr>
<tr>
<th>당첨확률</th>
<td>
<div class="td-inner">
<div class="input-container wd300">
<input type="text" class="input-text right" id="przwinPrc_1" name="rwdVO.arrPrzwinPrc" value="" placeholder="0">
<span class="ml-4">%</span>
</div>
</div>
<!--<div class="td-inner mt-5">
<div class="input-container wd300">
<input type="text" class="input-text right" id="przwinQy_1" name="rwdVO.arrPrzwinQy" value="" placeholder="0">
<span class="ml-4">건</span>
</div>
</div>-->
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
<section id="section03" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">참여방법 안내</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 12%;">
<col>
</colgroup>
<tbody>
<tr>
<th>설명</th>
<td>
<div class="form-control-container mb-5">
<div class="left"> &nbsp; </div>
<div class="center"> &nbsp; </div>
<div class="right">
<!-- <button class="btn xsm light-gray"> 이전내용 불러오기 </button> -->
</div>
</div>
<div class="td-inner">
<textarea class="textarea" id="bnfWordsCn" name="bnfWordsCn" title="" cols="30" rows="2"></textarea>
</div>
</td>
</tr>
</tbody>
</table>
<div class="form-control-container mt-10">
<div class="left">
<p class="fyi gray-7">참여 방법, 경품, 당첨자 발표 방식, 관련 법규 등 이벤트에 대해 사용자에게 인내할 내용을 적어주세요.</p>
</div>
<div class="center">
</div>
<!-- <div class="right">
<button class="btn outline mr-10"> 삭제 </button>
</div> -->
</div>
</div>
</div>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
<!-- 쿠폰찾기팝업 -->
<div id="modalDiv">
</div>
<form id="listForm" name="listForm">
<input type="hidden" id="bnfInnb" name ="bnfInnb"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="srchPdDv" name="srchPdDv" value="${ resultMap.paramVO.srchPdDv }">
<input type="hidden" id="srchStartDt" name="srchStartDt" value="${ resultMap.paramVO.srchStartDt }">
<input type="hidden" id="srchEndDt" name="srchEndDt" value="${ resultMap.paramVO.srchEndDt }">
<input type="hidden" id="srchSttDv" name="srchSttDv" value="${ resultMap.paramVO.srchSttDv }"/>
<input type="hidden" id="srchUseAt" name="srchUseAt" value="${ resultMap.paramVO.srchUseAt }"/>
<input type="hidden" id="srchDv" name="srchDv" value="${ resultMap.paramVO.srchDv }"/>
<input type="hidden" id="srchKeyword" name="srchKeyword" value="${ resultMap.paramVO.srchKeyword }"/>
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultMap.paramVO.pageIndex }"/>
<input type="hidden" id="recordCountPerPage" name="recordCountPerPage" value="${ resultMap.paramVO.recordCountPerPage }"/>
<input type="hidden" id="pageUnit" name="pageUnit" value="${ resultMap.paramVO.pageUnit }"/>
</form>
</body>
</html>

View File

@@ -0,0 +1,144 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : RougameRegistForm.jsp
Description : 룰렛게임 기회충전 설정 등록 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2025-04-15 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
$('#amtForChg').on('input', function() {
this.value = this.value.replace(/[^0-9]/g, '');
});
});
/**
* 등록
*/
const fn_regist = function() {
var checked = fn_check_valid();
if(checked) {
var url = '<c:url value="/mngr/bnft/insertBnftChargeInfo"/>';
var msg1 = '룰렛게임 기회충전을 위한 구매확정금액을 <spring:message code="confirm.common.insert"/>';
var msg2 = '<spring:message code="success.common.insert"/>';
var msg3 = '<spring:message code="fail.common.insert"/>';
const formData = new FormData();
$('#regForm').serializeArray().forEach(function (item) {
formData.append(item.name, item.value);
});
if (confirm(msg1)) {
$.ajax({
type: 'post',
enctype: 'multipart/form-data',
url: url,
data: formData,
contentType: false,
processData: false,
success: function (data) {
var str = JSON.parse(data.resBody.result);
if (str.result == 'success') {
alert(msg2);
} else {
alert(msg3);
}
}
});
}
}
};
/**
* 입력값 체크
*/
function fn_check_valid() {
var amtForChg = $('#amtForChg').val();
if(fn_is_empty(amtForChg)) {
alert('기회충전을 위한 구매확정금액을 입력하세요.');
return false;
}
return true;
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">기회충전 설정</h2>
<div class="page-title__btn-container">
<button class="btn primary" onclick="fn_regist(); return false;" ><spring:message code="button.save"/></button>
</div>
</div>
<form id="regForm" name="regForm" class="common-form" method="post" action="" enctype="multipart/form-data">
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<section id="section01" class="content-section content-scroll-detect content-fold">
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>기본설정 상세내용</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 88%">
</colgroup>
<tbody>
<tr>
<th>기회 충전</th>
<td>
<div class="input-container">
구매 확정금액
<input type="text" id="amtForChg" name="amtForChg" class="input-text right wd100 ml-10 mr-10" value="${ resultMap.bnftChargeData.amtForChg }" title="">
원 마다 1회
<!--<p class="fyi gray-7 ml-10"> (30일 경과시 기회 자동소멸) </p>-->
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,852 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : StepcntRegistForm.jsp
Description : 만보기 혜택 등록 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-07-15 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
fn_create_ckeditor('#bnfWordsCn');
//진행기간 from to 체크(현재 날짜 보다 작을 시 alert)
$(document).on('change', '.datepicker', function () {
fn_check_fromTo('#bnfBgnDe', '#bnfEndDe', "date");
});
// 일별깜작보상 마일리지/쿠폰선택시 초기화
$('[name^="rdoGodsDv_"]').click(function() {
var gdvcd = $(this).val();
var seqno = $(this).data('no');
if(gdvcd == '010') {
$('#couponInnb_' + seqno).val('');
$('#couponName_' + seqno).val('');
} else {
$('#mlgRwdAmt_' + seqno).val('');
}
$('#bnfRwdGodsDv_' + seqno).val(gdvcd);
});
// 마일리지, 걸음수 숫자입력 체크
$('input[id^="mlgRwdAmt_"], input[id^="rwdCndCnt_"]').on('input', function() {
this.value = this.value.replace(/[^0-9]/g, '');
});
var bnfInnb = $('#regForm #bnfInnb').val();
fn_set_detail(bnfInnb);
});
/**
* 수정상세 정보 조회
*/
const fn_set_detail = function(bnfInnb) {
const url = '<c:url value="/mngr/bnft/selectBnftDtlUpdtInqire"/>';
if(bnfInnb){
$.ajax({
type: 'post',
url: url,
data : {
'bnfInnb' : bnfInnb
},
success: function (result) {
const data = JSON.parse(result.resBody.result);
const bnftData = data.bnftData;
const bnftRwdList = data.bnftRwdList;
$('[name=useAt][value=' + bnftData.useAt + ']').prop('checked',true);
$('#bnfBgnDe').val(bnftData.bnfBgnDe);
$('#bnfBgnTme').val(bnftData.bnfBgnTme);
$('#bnfEndDe').val(bnftData.bnfEndDe);
$('#bnfEndTme').val(bnftData.bnfEndTme);
$('#bnfSj').val(bnftData.bnfSj);
$('#scrRwdLinkUrl').val(bnftData.scrRwdLinkUrl);
fn_set_editor_data('#bnfWordsCn', bnftData.bnfWordsCn);
for(var i=0; i < bnftRwdList.length; i++) {
var rwdData = bnftRwdList[i]
var seq = i + 1;
if(seq < 3) {
$('#bnfRwdCateDv_' + seq).val(rwdData.bnfRwdCateDvCd);
$('#bnfRwdGodsDv_' + seq).val(rwdData.bnfRwdGodsDvCd);
$('#couponInnb_' + seq).val(rwdData.couponInnb);
$('#itmNm_' + seq).val(rwdData.itmNm);
$('#mlgRwdAmt_' + seq).val(rwdData.mlgRwdAmt);
$('#rwdCndCnt_' + seq).val(rwdData.rwdCndCnt);
} else {
$('#bnfRwdCateDv_' + seq).val(rwdData.bnfRwdCateDvCd);
$('#bnfRwdGodsDv_' + seq).val(rwdData.bnfRwdGodsDvCd);
$('#itmNm_' + seq).val(rwdData.itmNm);
$('#rwdCndCnt_' + seq).val(rwdData.rwdCndCnt);
if(rwdData.bnfRwdGodsDvCd == '010') {
$('#rdoGodsDvM_' + seq).prop("checked", true);
$('#couponInnb_' + seq).val('');
$('#couponName_' + seq).val('');
$('#mlgRwdAmt_' + seq).val(rwdData.mlgRwdAmt);
} else if(rwdData.bnfRwdGodsDvCd == '020') {
$('#rdoGodsDvC_' + seq).prop("checked", true);
$('#couponInnb_' + seq).val(rwdData.couponInnb);
$('#couponName_' + seq).val(rwdData.couponName);
$('#mlgRwdAmt_' + seq).val('');
}
}
}
if(!fn_is_empty(bnftData.scrReprsntImg)) {
var imgPath = $('#cdnurl').val() + bnftData.scrReprsntImg;
$('#scrReprsntImgView').find('img').attr('src', imgPath);
$('#scrReprsntImgView').css('display', 'block');
}
if(!fn_is_empty(bnftData.scrRwdImg)) {
var imgPath = $('#cdnurl').val() + bnftData.scrRwdImg;
$('#scrRwdImgView').find('img').attr('src', imgPath);
$('#scrRwdImgView').css('display', 'block');
}
}
});
} else {
$('#bnfBgnTme, #bnfEndTme').val('00:00');
}
}
/**
* 등록
*/
const fn_regist = function() {
var bnfInnb = $('#regForm #bnfInnb').val();
var checked = fn_check_valid(bnfInnb);
if(checked) {
var url = '<c:url value="/mngr/bnft/insertBnftInfo"/>';
var msg1 = '만보기 혜택을 <spring:message code="confirm.common.insert"/>';
var msg2 = '<spring:message code="success.common.insert"/>';
var msg3 = '<spring:message code="fail.common.insert"/>';
if(bnfInnb) {
url = '<c:url value="/mngr/bnft/updateBnftInfo"/>';
msg1 = '만보기 혜택을 <spring:message code="confirm.common.update"/>';
msg2 = '<spring:message code="success.common.insert"/>';
msg3 = '<spring:message code="fail.common.update"/>';
}
const formData = new FormData();
$('#regForm').serializeArray().forEach(function (item) {
formData.append(item.name, item.value);
});
$(".dropzone").each(function(index) {
var dropzoneID = "#my-dropzone" + (index + 1);
var myDropzone = Dropzone.forElement(dropzoneID);
myDropzone.files.forEach(function(file) {
formData.append('files', file);
});
});
if (confirm(msg1)) {
$.ajax({
type: 'post',
enctype: 'multipart/form-data',
url: url,
data: formData,
contentType: false,
processData: false,
success: function (data) {
var str = JSON.parse(data.resBody.result);
if (str.result == 'success') {
alert(msg2);
//저장 후 수정화면으로 이동
if(fn_is_empty(bnfInnb)) {
fn_move_dtl_uptpage(data.resBody.result.replace(/[^0-9]/g, ""));
} else {
fn_move_dtl_uptpage(bnfInnb);
}
} else {
alert(msg3);
}
}
});
}
}
};
/**
* 입력값 체크
*/
function fn_check_valid(bnfInnb) {
var myDropzone1 = Dropzone.forElement('#my-dropzone1');
var scrRwdImgSrc = $('#scrRwdImgView').find('img').attr('src');
if(scrRwdImgSrc.indexOf('image_placeholder.png') > -1) {
scrRwdImgSrc = '';
}
var bgnDe = $('#bnfBgnDe').val();
var bgnTme = $('#bnfBgnTme').val();
var endDe = $('#bnfEndDe').val();
var endTme = $('#bnfEndTme').val();
$('#bnfWordsCn').val(fn_get_editor_data('#bnfWordsCn'));
if(fn_is_empty($('input[name=useAt]:checked').val())) {
alert('사용여부를 선택하세요.');
return false;
} else if(fn_is_empty(bgnDe)) {
alert('진행기간 시작일을 입력하세요.');
return false;
} else if(fn_is_empty(endDe)) {
alert('진행기간 종료일을 입력하세요.');
return false;
} else if(!fn_check_date(bgnDe, endDe)) {
alert('진행기간 종료일이 시작일보다 작습니다.');
return false;
} else if (!fn_check_date(bgnDe + ' ' + bgnTme, endDe + ' ' + endTme)) {
alert('진행기간 종료일이 시작일보다 작습니다.');
return false;
} else if(fn_is_empty($('#bnfSj').val())) {
alert('제목을 입력하세요.');
return false;
} else if(fn_is_empty($('#mlgRwdAmt_1').val())) {
alert('일일 보상을 입력하세요.');
return false;
} else if(fn_is_empty($('#mlgRwdAmt_2').val())) {
alert('누적10회시 보상을 입력하세요.');
return false;
} else if(fn_is_empty(scrRwdImgSrc) && myDropzone1.files.length < 1) {
alert('보상이미지를 첨부하세요.');
return false;
} else if(fn_is_empty($('#bnfWordsCn').val())) {
alert('참여방법 안내를 입력하세요.');
return false;
}
// 요일별 깜짝보상 체크 : 걸음수가 있으면 보상을 체크한다
for (var i = 3; i <= 9; i++) {
var rwdCndCnt = $('#rwdCndCnt_' + i).val();
var bnfRwdGodsDv = $('#bnfRwdGodsDv_' + i).val();
var mlgRwdAmt = $('#mlgRwdAmt_' + i).val();
var couponInnb = $('#couponInnb_' + i).val();
const days = ['월요일', '화요일', '수요일', '목요일', '금요일', '토요일', '일요일'];
var day = days[i - 3];
if(!fn_is_empty(rwdCndCnt)) {
if(fn_is_empty(bnfRwdGodsDv)) {
alert(day + ' 일별깜짝보상 종류을 선택하세요.');
return false;
} else if (bnfRwdGodsDv == '010' && fn_is_empty(mlgRwdAmt)) {
alert(day + ' 일별깜짝보상 마일리지를 입력하세요.');
return false;
} else if (bnfRwdGodsDv == '020' && fn_is_empty(couponInnb)) {
alert(day + ' 일별깜짝보상 쿠폰을 입력하세요.');
return false;
}
}
}
// 진행일시 중복 체크
var isValid = false;
$.ajax({
url: '<c:url value="/mngr/bnft/selectBnftDtOvlCnt"/>',
type: 'POST',
data: {
bnfInnb: $('#regForm #bnfInnb').val(),
bnfDvCd: $('#regForm #bnfDvCd').val(),
bnfBgnDt: bgnDe + ' ' + bgnTme + ':01',
bnfEndDt: endDe + ' ' + endTme + ':00'
},
async: false,
success: function(result) {
const data = JSON.parse(result.resBody.result);
var ovlCnt = data.ovlCnt;
if (ovlCnt > 0) {
alert('입력하신 진행기간에 이미 등록된 만보기 혜택이 있습니다.\n\n확인후 다시 입력하세요.');
isValid = false;
} else {
for(var i=0; i<9; i++) {
var seq = i+1;
$('#mlgRwdAmt_' + seq).val($('#mlgRwdAmt_' + seq).val().replace(/,/g, ''));
$('#rwdCndCnt_' + seq).val($('#rwdCndCnt_' + seq).val().replace(/,/g, ''));
}
isValid = true;
}
},
error: function() {
alert('진행일시 중복 체크 중 오류가 발생했습니다.');
isValid = false;
}
});
return isValid;
}
/**
* 목록 이동
*/
function fn_select_list() {
$('#listForm').attr('action', '<c:url value="/mngr/bnft/selectBnftListInqireForm"/>');
$('#listForm').attr('method', 'post');
$('#listForm').submit();
};
/**
* 수정폼 이동
*/
const fn_move_dtl_uptpage = function(Innb) {
const url = '<c:url value="/mngr/bnft/selectBnftDtlUpdtForm"/>';
$('#listForm').attr('action', url);
$('#listForm').attr('method', 'post');
$('#pageIndex').val(1);
$('#listForm #bnfInnb').val(Innb);
$('#listForm').submit();
}
/**
* 수정폼 등록이미지 삭제
*/
function fn_img_delete(tgtId) {
$('#' + tgtId).find('img').attr('src', '');
}
/**
* 쿠폰찾기 모달 오픈
*/
const fn_open_modal_coupon = function(pIdx){
var modalDivSltr = '#modalDiv';
var modalSlrt = '#findCouponPopup';
var modalUrl = '<c:url value="/mngr/bnft/findCouponPopupForm"/>';
var param = '';
$('#rwdSeqno').val(pIdx);
$.ajax({
type: 'post',
url: modalUrl,
data: {
param
},
success: function (data) {
$(modalSlrt).remove();
$(modalDivSltr).html(data);
$(modalSlrt).modal();
}
});
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">만보기 상세</h2>
<div class="page-title__btn-container">
<a href="#selectCouponListInqire" class="btn outline" onclick="fn_select_list('1'); return false;"><spring:message code="button.list"/></a>
<button class="btn primary" onclick="fn_regist(); return false;" ><spring:message code="button.save"/></button>
</div>
</div>
<div class="content-tab content-tab__fixed">
<a href="#section01" class="content-tab__scroll-btn">기본설정</a>
<a href="#section02" class="content-tab__scroll-btn">보상설정</a>
<a href="#section03" class="content-tab__scroll-btn">화면설정</a>
<a href="#section04" class="content-tab__scroll-btn">참여방법 안내</a>
</div>
<form id="regForm" name="regForm" class="common-form" method="post" action="" enctype="multipart/form-data">
<input type="hidden" id="bnfInnb" name="bnfInnb" value="<c:out value="${ resultMap.paramVO.bnfInnb }"/>"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<input type="hidden" id="rwdSeqno" name="rwdSeqno" value="">
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
<input type="hidden" id="cdnurl" value="${cdnurl}"/>
<section id="section01" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">기본설정</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>기본설정 상세내용</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 88%">
</colgroup>
<tbody>
<tr>
<th>사용여부 <span class="red-7">*</span></th>
<td>
<div class="custom-radio-container">
<div class="custom-radio">
<input type="radio" id="useAtY" name="useAt" value="Y">
<label for="useAtY">사용</label>
</div>
<div class="custom-radio ml-10">
<input type="radio" id="useAtN" name="useAt" value="N">
<label for="useAtN">미사용</label>
</div>
<p class="fyi gray-7 ml-10">‘미사용’ 선택시 사용자 참여 불가능</p>
</div>
</td>
</tr>
<tr>
<th>진행기간<span class="red-7">*</span></th>
<td>
<div class="td-inner">
<input type="text" id="bnfBgnDe" name="bnfBgnDe" class="datepicker" title="시작 날짜 선택" value="" autocomplete="off" readonly>
<div class="timepicker-container">
<input type="text" id="bnfBgnTme" name="bnfBgnTme" class="bs-timepicker" title="시작 시간 설정" value="" readonly>
</div>
<span class="tilde">~</span>
<input type="text" id="bnfEndDe" name="bnfEndDe" class="datepicker" title="종료 날짜 선택" value="" autocomplete="off" readonly>
<div class="timepicker-container">
<input type="text" id="bnfEndTme" name="bnfEndTme" class="bs-timepicker" title="종료 시간 설정" value="" readonly>
</div>
<p class="fyi gray-7 ml-10"> 월 기준 기간설정 필수 </p>
</div>
</td>
</tr>
<tr>
<th>제목(관리용)</th>
<td>
<div class="input-container">
<input type="text" id="bnfSj" name="bnfSj" class="input-text wd580" value="" title="">
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
<section id="section02" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">보상설정</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>보상설정 상세내용</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 88%">
</colgroup>
<tbody>
<tr>
<th>만보 1회/일</th>
<td>
<div class="td-inner">
<div class="input-container">
<input type="hidden" id="bnfRwdCateDv_1" name="rwdVO.arrBnfRwdCateDvCd" value="02010"/>
<input type="hidden" id="bnfRwdGodsDv_1" name="rwdVO.arrBnfRwdGodsDvCd" value="010"/>
<input type="hidden" id="couponInnb_1" name="rwdVO.arrCouponInnb" value=""/>
<input type="hidden" id="itmNm_1" name="rwdVO.arrItmNm" value=""/>
<input type="hidden" id="rwdCndCnt_1" name="rwdVO.arrRwdCndCnt" value=""/>
<span class="wd100">마일리지</span>
<input type="text" class="input-text sm right" id="mlgRwdAmt_1" name="rwdVO.arrMlgRwdAmt" value="" placeholder="0" title="마일리지">
<span class="ml-4">원</span>
</div>
</div>
</td>
</tr>
<tr>
<th rowspan="2">만보 누적 10회/월</th>
<td>
<div class="td-inner">
<input type="hidden" id="bnfRwdCateDv_2" name="rwdVO.arrBnfRwdCateDvCd" value="02020"/>
<input type="hidden" id="bnfRwdGodsDv_2" name="rwdVO.arrBnfRwdGodsDvCd" value="010"/>
<input type="hidden" id="couponInnb_2" name="rwdVO.arrCouponInnb" value=""/>
<input type="hidden" id="rwdCndCnt_2" name="rwdVO.arrRwdCndCnt" value=""/>
<div class="input-container">
<span class="wd100">마일리지</span>
<input type="text" class="input-text sm right" id="mlgRwdAmt_2" name="rwdVO.arrMlgRwdAmt" value="" placeholder="0" title="마일리지">
<span class="ml-4">원</span>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="td-inner">
<div class="input-container">
<span class="wd100">추가보상</span>
<input type="text" class="input-text wd400" id="itmNm_2" name="rwdVO.arrItmNm" value="" title="추가보상내용 입력">
<p class="fyi gray-7 ml-10">구체적인 보상내용 입력 ex. 쿠폰명, 제품명 등</p>
</div>
</div>
</td>
</tr>
<tr>
<th>일별 깜짝 보상</th>
<td>
<div class="td-inner">
<div class="table-wrapper">
<table class="table" style="width: 100%;">
<caption>일별 만보기 보상 입력 테이블</caption>
<colgroup>
<col style="width: 10%;">
<col style="width: 15%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<th class="border-right text-center">월요일</th>
<td>
<input type="hidden" id="bnfRwdCateDv_3" name="rwdVO.arrBnfRwdCateDvCd" value="02030"/>
<input type="hidden" id="bnfRwdGodsDv_3" name="rwdVO.arrBnfRwdGodsDvCd" value=""/>
<input type="hidden" id="itmNm_3" name="rwdVO.arrItmNm" value=""/>
<div class="input-container">
<span class="mr-5 ml-5">걸음수</span>
<input type="text" class="input-text xsm right" id="rwdCndCnt_3" name="rwdVO.arrRwdCndCnt" value="" placeholder="0" title="걸음수">
</div>
</td>
<td>
<div class="custom-radio-container">
<div class="custom-radio">
<input type="radio" id="rdoGodsDvM_3" name="rdoGodsDv_3" data-no="3" value="010">
<label for="rdoGodsDvM_3">마일리지</label>
</div>
<input type="text" class="input-text right" id="mlgRwdAmt_3" name="rwdVO.arrMlgRwdAmt" value="" placeholder="0" title="마일리지">
<div class="custom-radio">
<input type="radio" id="rdoGodsDvC_3" name="rdoGodsDv_3" data-no="3" value="020">
<label for="rdoGodsDvC_3">쿠폰</label>
</div>
<input type="hidden" id="couponInnb_3" name="rwdVO.arrCouponInnb" value="">
<input type="text" class="input-text" id="couponName_3" name="couponName_3" value="" readonly>
<a href="#" class="btn xsm gray ml-5" onclick="fn_open_modal_coupon('3'); return false;">찾기</a>
</div>
</td>
</tr>
<tr>
<th class="border-right text-center">화요일</th>
<td>
<input type="hidden" id="bnfRwdCateDv_4" name="rwdVO.arrBnfRwdCateDvCd" value="02031"/>
<input type="hidden" id="bnfRwdGodsDv_4" name="rwdVO.arrBnfRwdGodsDvCd" value=""/>
<input type="hidden" id="itmNm_4" name="rwdVO.arrItmNm" value=""/>
<div class="input-container">
<span class="mr-5 ml-5">걸음수</span>
<input type="text" class="input-text xsm right" id="rwdCndCnt_4" name="rwdVO.arrRwdCndCnt" value="" placeholder="0" title="걸음수">
</div>
</td>
<td>
<div class="custom-radio-container">
<div class="custom-radio">
<input type="radio" id="rdoGodsDvM_4" name="rdoGodsDv_4" data-no="4" value="010">
<label for="rdoGodsDvM_4">마일리지</label>
</div>
<input type="text" class="input-text right" id="mlgRwdAmt_4" name="rwdVO.arrMlgRwdAmt" value="" placeholder="0" title="마일리지">
<div class="custom-radio">
<input type="radio" id="rdoGodsDvC_4" name="rdoGodsDv_4" data-no="4" value="020">
<label for="rdoGodsDvC_4">쿠폰</label>
</div>
<input type="hidden" id="couponInnb_4" name="rwdVO.arrCouponInnb" value="">
<input type="text" class="input-text" id="couponName_4" name="couponName_4" value="" readonly>
<a href="#" class="btn xsm gray ml-5" onclick="fn_open_modal_coupon('4'); return false;">찾기</a>
</div>
</td>
</tr>
<tr>
<th class="border-right text-center">수요일</th>
<td>
<input type="hidden" id="bnfRwdCateDv_5" name="rwdVO.arrBnfRwdCateDvCd" value="02032"/>
<input type="hidden" id="bnfRwdGodsDv_5" name="rwdVO.arrBnfRwdGodsDvCd" value=""/>
<input type="hidden" id="itmNm_5" name="rwdVO.arrItmNm" value=""/>
<div class="input-container">
<span class="mr-5 ml-5">걸음수</span>
<input type="text" class="input-text xsm right" id="rwdCndCnt_5" name="rwdVO.arrRwdCndCnt" value="" placeholder="0" title="걸음수">
</div>
</td>
<td>
<div class="custom-radio-container">
<div class="custom-radio">
<input type="radio" id="rdoGodsDvM_5" name="rdoGodsDv_5" data-no="5" value="010">
<label for="rdoGodsDvM_5">마일리지</label>
</div>
<input type="text" class="input-text right" id="mlgRwdAmt_5" name="rwdVO.arrMlgRwdAmt" value="" placeholder="0" title="마일리지">
<div class="custom-radio">
<input type="radio" id="rdoGodsDvC_5" name="rdoGodsDv_5" data-no="5" value="020">
<label for="rdoGodsDvC_5">쿠폰</label>
</div>
<input type="hidden" id="couponInnb_5" name="rwdVO.arrCouponInnb" value="">
<input type="text" class="input-text" id="couponName_5" name="couponName_5" value="" readonly>
<a href="#" class="btn xsm gray ml-5" onclick="fn_open_modal_coupon('5'); return false;">찾기</a>
</div>
</td>
</tr>
<tr>
<th class="border-right text-center">목요일</th>
<td>
<input type="hidden" id="bnfRwdCateDv_6" name="rwdVO.arrBnfRwdCateDvCd" value="02033"/>
<input type="hidden" id="bnfRwdGodsDv_6" name="rwdVO.arrBnfRwdGodsDvCd" value=""/>
<input type="hidden" id="itmNm_6" name="rwdVO.arrItmNm" value=""/>
<div class="input-container">
<span class="mr-5 ml-5">걸음수</span>
<input type="text" class="input-text xsm right" id="rwdCndCnt_6" name="rwdVO.arrRwdCndCnt" value="" placeholder="0" title="걸음수">
</div>
</td>
<td>
<div class="custom-radio-container">
<div class="custom-radio">
<input type="radio" id="rdoGodsDvM_6" name="rdoGodsDv_6" data-no="6" value="010">
<label for="rdoGodsDvM_6">마일리지</label>
</div>
<input type="text" class="input-text right" id="mlgRwdAmt_6" name="rwdVO.arrMlgRwdAmt" value="" placeholder="0" title="마일리지">
<div class="custom-radio">
<input type="radio" id="rdoGodsDvC_6" name="rdoGodsDv_6" data-no="6" value="020">
<label for="rdoGodsDvC_6">쿠폰</label>
</div>
<input type="hidden" id="couponInnb_6" name="rwdVO.arrCouponInnb" value="">
<input type="text" class="input-text" id="couponName_6" name="couponName_6" value="" readonly>
<a href="#" class="btn xsm gray ml-5" onclick="fn_open_modal_coupon('6'); return false;">찾기</a>
</div>
</td>
</tr>
<tr>
<th class="border-right text-center">금요일</th>
<td>
<input type="hidden" id="bnfRwdCateDv_7" name="rwdVO.arrBnfRwdCateDvCd" value="02034"/>
<input type="hidden" id="bnfRwdGodsDv_7" name="rwdVO.arrBnfRwdGodsDvCd" value=""/>
<input type="hidden" id="itmNm_7" name="rwdVO.arrItmNm" value=""/>
<div class="input-container">
<span class="mr-5 ml-5">걸음수</span>
<input type="text" class="input-text xsm right" id="rwdCndCnt_7" name="rwdVO.arrRwdCndCnt" value="" placeholder="0" title="걸음수">
</div>
</td>
<td>
<div class="custom-radio-container">
<div class="custom-radio">
<input type="radio" id="rdoGodsDvM_7" name="rdoGodsDv_7" data-no="7" value="010">
<label for="rdoGodsDvM_7">마일리지</label>
</div>
<input type="text" class="input-text right" id="mlgRwdAmt_7" name="rwdVO.arrMlgRwdAmt" value="" placeholder="0" title="마일리지">
<div class="custom-radio">
<input type="radio" id="rdoGodsDvC_7" name="rdoGodsDv_7" data-no="7" value="020">
<label for="rdoGodsDvC_7">쿠폰</label>
</div>
<input type="hidden" id="couponInnb_7" name="rwdVO.arrCouponInnb" value="">
<input type="text" class="input-text" id="couponName_7" name="couponName_7" value="" readonly>
<a href="#" class="btn xsm gray ml-5" onclick="fn_open_modal_coupon('7'); return false;">찾기</a>
</div>
</td>
</tr>
<tr>
<th class="border-right text-center">토요일</th>
<td>
<input type="hidden" id="bnfRwdCateDv_8" name="rwdVO.arrBnfRwdCateDvCd" value="02035"/>
<input type="hidden" id="bnfRwdGodsDv_8" name="rwdVO.arrBnfRwdGodsDvCd" value=""/>
<input type="hidden" id="itmNm_8" name="rwdVO.arrItmNm" value=""/>
<div class="input-container">
<span class="mr-5 ml-5">걸음수</span>
<input type="text" class="input-text xsm right" id="rwdCndCnt_8" name="rwdVO.arrRwdCndCnt" value="" placeholder="0" title="걸음수">
</div>
</td>
<td>
<div class="custom-radio-container">
<div class="custom-radio">
<input type="radio" id="rdoGodsDvM_8" name="rdoGodsDv_8" data-no="8" value="010">
<label for="rdoGodsDvM_8">마일리지</label>
</div>
<input type="text" class="input-text right" id="mlgRwdAmt_8" name="rwdVO.arrMlgRwdAmt" value="" placeholder="0" title="마일리지">
<div class="custom-radio">
<input type="radio" id="rdoGodsDvC_8" name="rdoGodsDv_8" data-no="8" value="020">
<label for="rdoGodsDvC_8">쿠폰</label>
</div>
<input type="hidden" id="couponInnb_8" name="rwdVO.arrCouponInnb" value="">
<input type="text" class="input-text" id="couponName_8" name="couponName_8" value="" readonly>
<a href="#" class="btn xsm gray ml-5" onclick="fn_open_modal_coupon('8'); return false;">찾기</a>
</div>
</td>
</tr>
<tr>
<th class="border-right text-center">일요일</th>
<td>
<input type="hidden" id="bnfRwdCateDv_9" name="rwdVO.arrBnfRwdCateDvCd" value="02036"/>
<input type="hidden" id="bnfRwdGodsDv_9" name="rwdVO.arrBnfRwdGodsDvCd" value=""/>
<input type="hidden" id="itmNm_9" name="rwdVO.arrItmNm" value=""/>
<div class="input-container">
<span class="mr-5 ml-5">걸음수</span>
<input type="text" class="input-text xsm right" id="rwdCndCnt_9" name="rwdVO.arrRwdCndCnt" value="" placeholder="0" title="걸음수">
</div>
</td>
<td>
<div class="custom-radio-container">
<div class="custom-radio">
<input type="radio" id="rdoGodsDvM_9" name="rdoGodsDv_9" data-no="9" value="010">
<label for="rdoGodsDvM_9">마일리지</label>
</div>
<input type="text" class="input-text right" id="mlgRwdAmt_9" name="rwdVO.arrMlgRwdAmt" value="" placeholder="0" title="마일리지">
<div class="custom-radio">
<input type="radio" id="rdoGodsDvC_9" name="rdoGodsDv_9" data-no="9" value="020">
<label for="rdoGodsDvC_9">쿠폰</label>
</div>
<input type="hidden" id="couponInnb_9" name="rwdVO.arrCouponInnb" value="">
<input type="text" class="input-text" id="couponName_9" name="couponName_9" value="" readonly>
<a href="#" class="btn xsm gray ml-5" onclick="fn_open_modal_coupon('9'); return false;">찾기</a>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
<section id="section03" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">화면 설정</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 88%;">
</colgroup>
<tbody>
<tr>
<th>보상 이미지<br>(만보 누적 100% 혜택)</th>
<td>
<div class="td-inner nowrap">
<div class="dropzone-wrapper">
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.extensions.images')" var="acceptFileExtensions"/>
<div class="dropzone" id="my-dropzone1">
</div>
</div>
<div class="file-preview__container" id="scrRwdImgView" style="display:none;">
<div class="file-preview">
<span class="file-preview__number">등록한 사진</span>
<button type="button" class="file-preview__delete" onclick="fn_img_delete('scrRwdImgView'); return false;"><span class="visually-hidden">삭제</span></button>
<div class="file-preview__image wd200">
<img src="" alt="보상 이미지" onerror="this.src='/mngr/images/image_placeholder.png'">
</div>
</div>
</div>
</div>
<div class="td-inner">
<span class="ml-10">이미지링크 [URL] &nbsp;</span>
<input class="input-text lg" type="text" id="scrRwdLinkUrl" name="scrRwdLinkUrl" title="해당 인풋에 대한 설명">
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
<section id="section04" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">참여방법 안내</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 12%;">
<col>
</colgroup>
<tbody>
<tr>
<th>설명</th>
<td>
<div class="form-control-container mb-5">
<div class="left"> &nbsp; </div>
<div class="center"> &nbsp; </div>
<div class="right">
<!--<button class="btn xsm light-gray"> 이전내용 불러오기 </button>-->
</div>
</div>
<div class="td-inner">
<textarea class="textarea" id="bnfWordsCn" name="bnfWordsCn" title="" cols="30" rows="2"></textarea>
</div>
</td>
</tr>
</tbody>
</table>
<div class="form-control-container mt-10">
<div class="left">
<p class="fyi gray-7">참여 방법, 경품, 당첨자 발표 방식, 관련 법규 등 이벤트에 대해 사용자에게 인내할 내용을 적어주세요.</p>
</div>
<div class="center">
</div>
<!-- <div class="right">
<button class="btn outline mr-10"> 삭제 </button>
</div> -->
</div>
</div>
</div>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
<!-- 쿠폰찾기팝업 -->
<div id="modalDiv">
</div>
<form id="listForm" name="listForm">
<input type="hidden" id="bnfInnb" name ="bnfInnb"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="srchPdDv" name="srchPdDv" value="${ resultMap.paramVO.srchPdDv }">
<input type="hidden" id="srchStartDt" name="srchStartDt" value="${ resultMap.paramVO.srchStartDt }">
<input type="hidden" id="srchEndDt" name="srchEndDt" value="${ resultMap.paramVO.srchEndDt }">
<input type="hidden" id="srchSttDv" name="srchSttDv" value="${ resultMap.paramVO.srchSttDv }"/>
<input type="hidden" id="srchUseAt" name="srchUseAt" value="${ resultMap.paramVO.srchUseAt }"/>
<input type="hidden" id="srchDv" name="srchDv" value="${ resultMap.paramVO.srchDv }"/>
<input type="hidden" id="srchKeyword" name="srchKeyword" value="${ resultMap.paramVO.srchKeyword }"/>
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultMap.paramVO.pageIndex }"/>
<input type="hidden" id="recordCountPerPage" name="recordCountPerPage" value="${ resultMap.paramVO.recordCountPerPage }"/>
<input type="hidden" id="pageUnit" name="pageUnit" value="${ resultMap.paramVO.pageUnit }"/>
</form>
</body>
</html>

View File

@@ -0,0 +1,227 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : AtendMbrSttusForm.jsp
Description : 출석 회원별내역 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-10-14 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function(){
$('#listForm').on('keydown', function(e) {
if (e.keyCode == 13) {
e.preventDefault();
$('#searchBtn').trigger("click");
}
});
// 검색년월 설정
var currYear = new Date().getFullYear();
var currMonth = new Date().getMonth() + 1;
for (var year = 2025; year <= currYear; year++) {
$('#srchYear').append('<option value="' + year + '">' + year + '년</option>');
}
$('#srchMonth').append('<option value="">전체</option>');
for (var month = 1; month <= 12; month++) {
var monthText = String(month).padStart(2, '0');
$('#srchMonth').append('<option value="' + monthText + '">' + month + '월</option>');
}
$('#srchYear').val(currYear);
$('#srchMonth').val(currMonth);
if('<c:out value="${ resultMap.paramVO.srchYear }"/>' !== '') {
$('#srchYear').val('<c:out value="${ resultMap.paramVO.srchYear }"/>');
$('#srchMonth').val('<c:out value="${ resultMap.paramVO.srchMonth }"/>');
} else {
$('#srchMonth').val('');
}
$('#srchYear').niceSelect('update');
$('#srchMonth').niceSelect('update');
// 출석체크수 선택에 따라..
$('#srchPart').change(function() {
var srchPart = $(this).val();
if(srchPart === 'alday') {
$('#srchNum').attr('disabled', false);
$('#srchNumRng').attr('disabled', false);
$('#srchNumRng').niceSelect('update');
} else {
$('#srchNum').attr('disabled', true);
$('#srchNumRng').attr('disabled', true);
$('#srchNumRng').niceSelect('update');
}
});
let pageIndex = '<c:out value="${ resultMap.paramVO.pageIndex }"/>';
let pageUnit = '<c:out value="${ resultMap.paramVO.pageUnit }"/>';
fn_select_list(pageIndex, pageUnit);
});
const fn_select_list = function(pageIndex, pageUnit) {
let dataStr;
if(!pageIndex) {
$('#pageIndex').val(1);
} else {
$('#pageIndex').val(pageIndex);
}
if(!pageUnit) {
dataStr = $('#listForm').serialize();
} else {
if($('#pageUnit').length){
$('#pageUnit').val(pageUnit);
dataStr = $('#listForm').serialize();
} else {
dataStr = $('#listForm').serialize()+'&pageUnit='+pageUnit;
}
}
$('#pageIndex').val(pageIndex);
$.ajax({
type: "post",
url : "<c:url value="/mngr/bnft/sttus/selectBnftAtendMbrSttusInqire"/>",
data : dataStr,
success:function(resultHtml) {
$('#pageDiv').html(resultHtml);
$('#pageUnit').niceSelect();
}
});
}
/**
* 회원상세정보
*/
const fn_move_mbr_dtlpage = function(mbrInnb, mbrDvCd) {
return;
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">회원별 내역</h2>
</div>
<form id="listForm" name="listForm" method="post" action="<c:url value="/mngr/bnft/sttus/selectBnftAtendMbrSttusForm"/>">
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value="${ resultMap.paramVO.pageIndex }"/>"/>
<input type="hidden" id="recordCountPerPage" name="recordCountPerPage" value="<c:out value="${ resultMap.paramVO.recordCountPerPage }"/>"/>
<section class="content-section" id="search-section">
<div class="table-wrapper vertical">
<table class="table">
<caption>출석체크 회원별 검색 옵션</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr class="search-hide">
<th>기간</th>
<td>
<div class="td-inner">
<div class="select-box">
<select name="srchYear" id="srchYear">
</select>
</div>
<div class="select-box">
<select name="srchMonth" id="srchMonth">
</select>
</div>
</div>
</td>
</tr>
<%-- <tr class="search-hide">
<th>출석체크 수</th>
<td>
<div class="td-inner">
<div class="select-box">
<select name="srchPart" id="srchPart">
<option value="today" ${ f:setSelected(resultMap.paramVO.srchPart,"today") }>오늘출석</option>
<option value="alday" ${ f:setSelected(resultMap.paramVO.srchPart,"alday") }>누적출석</option>
</select>
</div>
<div class="input-container">
<input type="text" class="input-text sm right number" name="srchNum" id="srchNum" value="" placeholder="0" disabled>
<span class="tilde">회</span>
<div class="select-box">
<select name="srchNumRng" id="srchNumRng" disabled>
<option value="more" ${ f:setSelected(resultMap.paramVO.srchNumRng,"more") }>이상</option>
<option value="less" ${ f:setSelected(resultMap.paramVO.srchNumRng,"less") }>이하</option>
</select>
</div>
</div>
</div>
</td>
</tr> --%>
<tr>
<th>검색어</th>
<td>
<div class="td-inner">
<div class="select-box">
<select name="srchDv" id="srchDv">
<option value="mbrId" ${ f:setSelected(resultMap.paramVO.srchDv,"mbrId") }>아이디</option>
<option value="mbrNm" ${ f:setSelected(resultMap.paramVO.srchDv,"mbrNm") }>이름</option>
</select>
</div>
<input class="input-text xl" type="text" id="srchKeyword" name="srchKeyword" value="${ resultMap.paramVO.srchKeyword }">
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="form-control-container">
<div class="left"></div>
<div class="center">
<button class="btn outline" id="resetBtn" type="button" onclick="fn_reset_form('search-section');">초기화</button>
<button class="btn primary" id="searchBtn" type="button" onkeypress="this.onclick();" onclick="fn_select_list(1); return false;">검색</button>
</div>
<div class="right">
<!-- <button class="btn outline search-detail">상세검색</button> -->
</div>
</div>
</section>
<%-- 목록 영역 --%>
<div id="pageDiv">
</div>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
</body>
</html>

View File

@@ -0,0 +1,112 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : AtendMbrSttusList.jsp
Description : 출석 회원별내역 목록 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-10-14 이훈영 최초 생성
--%>
<%-- 목록 조회 영역 START --%>
<section class="content-section">
<div class="form-control-container">
<div class="left">
<div class="search-number">
<span class="search-number__text">총 <strong><c:out value="${ resultMap.paginationInfo.totalRecordCount }"/></strong>건</span>
</div>
</div>
<div class="center">
</div>
<div class="right">
<!--<button class="btn outline mr-10">
<i class="icon icon_excel"></i>
엑셀다운로드
</button>
<div class="select-box">
<select title="정렬방식">
<option value="">최근 출석체크순</option>
<option value="">누적출석 수 많은 순</option>
<option value="">출석 마일리지 높은 순</option>
</select>
</div> -->
<div class="select-box">
<select id="pageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_list('1');">
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paginationInfo.recordCountPerPage eq pageUnit}">selected="selected"</c:if>><c:out value="${ pageUnit }"/>개씩</option>
</c:forEach>
</select>
</div>
</div>
</div>
<div class="table-wrapper mt-10">
<table class="table vertical">
<caption>회원별 출석내역 테이블</caption>
<colgroup>
<col style="width: 10%;">
<col style="width: 20%;">
<col style="width: 10%;">
<col style="width: 20%;">
<col style="width: 20%;">
<col style="width: 20%;">
</colgroup>
<thead>
<tr>
<th>No.</th>
<th>아이디</th>
<th>이름</th>
<th>누적출석수(월)</th>
<th>최종 출석체크 일시</th>
<th>출석 마일리지(월)</th>
</tr>
</thead>
<tbody>
<c:choose>
<c:when test="${ not empty resultMap.resultList && fn:length(resultMap.resultList) > 0 }">
<c:forEach items="${ resultMap.resultList }" var="resultList" varStatus="status">
<tr>
<td>
<span><c:out value="${ resultMap.paginationInfo.totalRecordCount - resultList.rnum + 1 }" /></span>
</td>
<td>
<span class="blue-8" onclick="fn_move_mbr_dtlpage(<c:out value="${ resultList.mbrInnb }" />, '<c:out value="${ resultList.mbrDvCd }" />')">
<c:out value="${ resultList.mbrId }"/>
</span>
</td>
<td>
<span><c:out value="${ resultList.mbrNm }"/></span>
</td>
<td>
<span><fmt:formatNumber value="${ resultList.prtCnt }" pattern="#,###" /></span>
</td>
<td>
<span><c:out value="${ resultList.lastPrtDt }"/></span>
</td>
<td>
<span> <fmt:formatNumber value="${ resultList.sumMlgAmt }" pattern="#,###" />원</span>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="100%" ><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</section>
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_list" />
</div>
<%-- 목록 조회 영역 END --%>

View File

@@ -0,0 +1,203 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : AtendPdSttusForm.jsp
Description : 출석 기간별내역 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-10-14 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
// 검색년월 설정
var currYear = new Date().getFullYear();
var currMonth = new Date().getMonth() + 1;
for (var year = 2025; year <= currYear; year++) {
$('#srchYear').append('<option value="' + year + '">' + year + '년</option>');
}
for (var month = 1; month <= 12; month++) {
var monthText = String(month).padStart(2, '0');
$('#srchMonth').append('<option value="' + monthText + '">' + month + '월</option>');
}
$('#srchYear').val(currYear);
$('#srchMonth').val(currMonth);
if('<c:out value="${ resultMap.paramVO.srchYear }"/>' !== '') {
$('#srchYear').val('<c:out value="${ resultMap.paramVO.srchYear }"/>');
$('#srchMonth').val('<c:out value="${ resultMap.paramVO.srchMonth }"/>');
}
$('#srchYear').niceSelect('update');
$('#srchMonth').niceSelect('update');
$('#srchYear, #srchMonth').change(function() {
fn_select_sttus();
});
fn_select_sttus();
});
const fn_select_sttus = function() {
const url = '<c:url value="/mngr/bnft/sttus/selectBnftAtendPdMonSttusInqire"/>';
$.ajax({
type: 'post',
url: url,
data : {
'bnfDvCd' : $('#bnfDvCd').val(),
'srchYear' : $('#srchYear').val(),
'srchMonth' : $('#srchMonth').val()
},
success: function (result) {
const data = JSON.parse(result.resBody.result);
const sttusList = data.sttusList;
$('#tblList tbody').empty();
if (sttusList !== null) {
for (var i = 0; i < sttusList.length; i++) {
var sttusData = sttusList[i];
var todayAttCnt = Number(sttusData.todayAttCnt).toLocaleString();
var cnt100 = Number(sttusData.cnt100).toLocaleString();
var newRow = $('<tr></tr>');
var th = $('<th></th>').text(sttusData.attDate); // 날짜
var td1 = $('<td></td>').append($('<span></span>').text(todayAttCnt));
var td2 = $('<td></td>').append($('<span></span>').text(cnt100));
// tr에 th와 td를 추가
newRow.append(th).append(td1).append(td2);
$('#tblList tbody').append(newRow);
}
}
}
});
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">기간별 내역</h2>
</div>
<form id="sttusForm" name="sttusForm" class="common-form" method="post" action="">
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<section id="section01" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title blue-9">${ resultMap.paramVO.srchYear }년 ${ resultMap.paramVO.srchMonth }월</h3>
</div>
<div class="content-fold__content">
<div class="count-wrapper">
<div class="count_box">
<a href="#">
<p class="cnt_top">오늘</p>
<p class="cnt_bm"><fmt:formatNumber value="${ resultMap.pdSumry.todayCnt }" pattern="#,###" /></p>
</a>
</div>
<div class="count_box">
<a href="#">
<p class="cnt_top">누적 10회</p>
<p class="cnt_bm"><fmt:formatNumber value="${ resultMap.pdSumry.cnt10 }" pattern="#,###" /></p>
</a>
</div>
<div class="count_box">
<a href="#">
<p class="cnt_top">누적 20회</p>
<p class="cnt_bm"><fmt:formatNumber value="${ resultMap.pdSumry.cnt20 }" pattern="#,###" /></p>
</a>
</div>
<div class="count_box">
<a href="#">
<p class="cnt_top">100%</p>
<p class="cnt_bm"><fmt:formatNumber value="${ resultMap.pdSumry.cnt100 }" pattern="#,###" /></p>
</a>
</div>
<div class="count_box last">
<a href="#">
<p class="cnt_top">지난달 100%</p>
<p class="cnt_bm"><fmt:formatNumber value="${ resultMap.pdSumry.prevMonth.prevCnt100 }" pattern="#,###" /></p>
</a>
</div>
</div>
</div>
</section>
<section id="section02" class="content-section content-scroll-detect content-fold">
<div class="form-control-container">
<div class="left">
<h3 class="content-section__title">월별내역</h3>
</div>
<div class="center">
</div>
<div class="right">
<div class="select-box">
<select name="srchYear" id="srchYear">
</select>
</div>
<div class="select-box">
<select name="srchMonth" id="srchMonth">
</select>
</div>
</div>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table vertical" id="tblList">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 20%;">
<col style="width: 40%">
<col style="width: 40%">
</colgroup>
<thead>
<tr>
<th>날짜</th>
<th>오늘 출석체크</th>
<th>100% 출석체크</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
</body>
</html>

View File

@@ -0,0 +1,178 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : ConrevSttusForm.jsp
Description : 베스트리뷰 참여현황 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-10-14 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
//검색폼 데이트피커 제어
fn_set_dateRange_function("#dateRange","srchStartDt","srchEndDt","srchStartDt");
let pageIndex = '<c:out value="${ resultMap.paramVO.pageIndex }"/>';
let pageUnit = '<c:out value="${ resultMap.paramVO.pageUnit }"/>';
fn_select_list(pageIndex, pageUnit);
$('#listForm').on('keydown', function(e) {
if (e.keyCode == 13) {
e.preventDefault();
$('#searchBtn').trigger("click");
}
});
});
const fn_select_list = function(pageIndex, pageUnit) {
let dataStr;
if(!pageIndex) {
$('#pageIndex').val(1);
} else {
$('#pageIndex').val(pageIndex);
}
if(!pageUnit) {
dataStr = $('#listForm').serialize();
} else {
if($('#pageUnit').length){
$('#pageUnit').val(pageUnit);
dataStr = $('#listForm').serialize();
} else {
dataStr = $('#listForm').serialize()+'&pageUnit='+pageUnit;
}
}
$('#pageIndex').val(pageIndex);
$.ajax({
type: "post",
url : "<c:url value="/mngr/bnft/sttus/selectBnftConrevSttusInqire"/>",
data : dataStr,
success:function(resultHtml) {
$('#pageDiv').html(resultHtml);
$('#pageUnit').niceSelect();
}
});
}
const fn_move_dtlpage = function(bnfInnb) {
return;
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">참여현황</h2>
</div>
<form id="listForm" name="listForm" method="post" action="<c:url value="/mngr/bnft/sttus/selectBnftConrevSttusForm"/>">
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value="${ resultMap.paramVO.pageIndex }"/>"/>
<input type="hidden" id="recordCountPerPage" name="recordCountPerPage" value="<c:out value="${ resultMap.paramVO.recordCountPerPage }"/>"/>
<section class="content-section" id="search-section">
<div class="table-wrapper vertical">
<table class="table">
<caption>검색 옵션</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr class="search-hide">
<th>기간</th>
<td>
<div class="td-inner">
<div class="input-container">
<input type="text" name="srchStartDt" id="srchStartDt" class="datepicker" title="시작 날짜 선택" value="${ resultMap.paramVO.srchStartDt }" autocomplete="off">
<span class="tilde">~</span>
<input type="text" name="srchEndDt" id="srchEndDt" class="datepicker" title="종료 날짜 선택" value="${ resultMap.paramVO.srchEndDt }" autocomplete="off">
</div>
<div class="dateRange-btnContainer" id="dateRange">
<button class="dateRange-btn">어제</button>
<button class="dateRange-btn">오늘</button>
<button class="dateRange-btn">3일간</button>
<button class="dateRange-btn">일주일</button>
<button class="dateRange-btn">1개월</button>
<button class="dateRange-btn">3개월</button>
<button class="dateRange-btn">6개월</button>
<button class="dateRange-btn">1년</button>
<button class="dateRange-btn selected">전체</button>
</div>
</div>
</td>
</tr>
<tr>
<th>검색어</th>
<td>
<div class="td-inner">
<div class="select-box">
<select name="srchDv" id="srchDv">
<option value="bnfSj" ${ f:setSelected(resultMap.paramVO.srchDv,"bnfSj") }>상품명</option>
<option value="mbrId" ${ f:setSelected(resultMap.paramVO.srchDv,"mbrId") }>아이디</option>
<option value="mbrNm" ${ f:setSelected(resultMap.paramVO.srchDv,"mbrNm") }>이름</option>
</select>
</div>
<input class="input-text xl" type="text" id="srchKeyword" name="srchKeyword" value="${ resultMap.paramVO.srchKeyword }">
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="form-control-container">
<div class="left"></div>
<div class="center">
<button class="btn outline" id="resetBtn" type="button" onclick="fn_reset_form('search-section');">초기화</button>
<button class="btn primary" id="searchBtn" type="button" onkeypress="this.onclick();" onclick="fn_select_list(1); return false;">검색</button>
</div>
<div class="right">
<!-- <button class="btn outline search-detail">상세검색</button> -->
</div>
</div>
</section>
<%-- 목록 영역 --%>
<div id="pageDiv">
</div>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
</body>
</html>

View File

@@ -0,0 +1,104 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%--
Class Name : ConrevSttusList.jsp
Description : 베스트리뷰 참여현황 목록조회 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2025-05-12 이훈영 최초 생성
--%>
<%-- 목록 조회 영역 START --%>
<section id="section02" class="content-section">
<div class="form-control-container">
<div class="left">
<div class="search-number">
<span class="search-number__text">총 <strong><c:out value="${ resultMap.paginationInfo.totalRecordCount }"/></strong>건</span>
(<span class="search-number__text">마일리지 합계 <strong><fmt:formatNumber value="${ resultMap.resultSmry.mlgSum }" pattern="#,###"/></strong>원</span>)
</div>
</div>
<div class="center">
</div>
<div class="right">
<div class="select-box">
<select id="pageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_list('1');">
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paginationInfo.recordCountPerPage eq pageUnit}">selected="selected"</c:if>><c:out value="${ pageUnit }"/>개씩</option>
</c:forEach>
</select>
</div>
</div>
</div>
<div class="table-wrapper mt-10">
<table class="table vertical">
<caption>테이블</caption>
<colgroup>
<col style="width: 7%;">
<col style="width: 12%;">
<col style="width: 12%;">
<col style="width: 120px;">
<col style="width: auto;">
<col style="width: 10%;">
<col style="width: 15%;">
</colgroup>
<thead>
<tr>
<th>No.</th>
<th>아이디</th>
<th>이름</th>
<th colspan="2">리뷰상품</th>
<th>마일리지</th>
<th>지급일시</th>
</thead>
<tbody>
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
<c:choose>
<c:when test="${ not empty resultMap.resultList && fn:length(resultMap.resultList) > 0 }">
<c:forEach items="${ resultMap.resultList }" var="resultList" varStatus="status">
<tr>
<td>
<span><c:out value="${ resultMap.paginationInfo.totalRecordCount - resultList.rnum + 1 }" /></span>
</td>
<td>
<span class="blue-8"><c:out value="${ resultList.mbrId }"/></span>
</td>
<td>
<span><c:out value="${ resultList.mbrNm }"/></span>
</td>
<td class="left">
<img src="<c:out value='${cdnurl}${resultList.imgFilCours}'/>" id="cnImgView" width="80" height="80" alt="" onerror="this.src='/mngr/images/image_placeholder.png'">
</td>
<td class="left">
<span class="blue-8"><c:out value="${ resultList.bnfSj }"/></span>
</td>
<td class="right">
<span><c:out value="${ resultList.mlgRwdAmt }"/>원</span>
</td>
<td>
<span><c:out value="${ resultList.bnfPrtDt }"/></span>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="100%" ><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</section>
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_list" />
</div>
<%-- 목록 조회 영역 END --%>

View File

@@ -0,0 +1,187 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : CpslmknSttusDtlsForm.jsp
Description : 캡슐만들기 참여현황 상세 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-10-14 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
});
/**
* 목록 이동
*/
function fn_select_list() {
$('#listForm').attr('action', '<c:url value="/mngr/bnft/sttus/selectBnftCpslmknSttusForm"/>');
$('#listForm').attr('method', 'post');
$('#listForm').submit();
};
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">참여현황 상세</h2>
<div class="page-title__btn-container">
<a href="#" class="btn outline" onclick="fn_select_list('1'); return false;"><spring:message code="button.list"/></a>
</div>
</div>
<form id="sttusForm" name="sttusForm" class="common-form" method="post" action="">
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<section id="section01" class="content-section">
<form>
<div class="table-wrapper vertical">
<table class="table">
<caption>내용</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 38%;">
<col style="width: 12%;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th>제품명</th>
<td colspan="3">
<div class="td_inner">
<span class="blue-8">${ resultMap.resultData.bnfSj }</span>
<!--<a href="" class="btn xsm outline primary ml-10"> 제품보기</a>-->
</div>
</td>
</tr>
<tr>
<th>기간 (선택가능 기간)</th>
<td colspan="3">${ resultMap.resultData.bnfBgnDt } ~ ${ resultMap.resultData.bnfEndDt }
(${ resultMap.resultData.bnfSttus })</td>
</tr>
<tr>
<th>쿠폰명</th>
<td>
<div class="td_inner">
<span class="blue-8">${ resultMap.resultData.couponName }</span>
<!--<a href="" class="btn xsm outline primary ml-10"> 쿠폰상세보기</a>-->
</div>
</td>
<th>필요한 초록잎</th>
<td><fmt:formatNumber value="${ resultMap.resultData.rwdCndCnt }" pattern="#,###"/> 개</td>
</tr>
<tr>
<th>현재 진행중인 인원</th>
<td><fmt:formatNumber value="${ resultMap.resultData.mbrYCnt }" pattern="#,###"/> 명</td>
<th>취소</th>
<td><fmt:formatNumber value="${ resultMap.resultData.mbrNCnt }" pattern="#,###"/> 건</td>
</tr>
<tr>
<th>참여인원 전체 합계</th>
<td><fmt:formatNumber value="${ resultMap.resultData.mbrTCnt }" pattern="#,###"/> 명</td>
<th>보상 완료 건수</th>
<td><fmt:formatNumber value="${ resultMap.resultData.rcvCnt }" pattern="#,###"/> 건</td>
</tr>
</tbody>
</table>
</div>
</form>
</section>
<section id="section02" class="content-section">
<div class="content-fold__header">
<h3 class="content-section__title">단계별 현황</h3>
</div>
<div class="bar_chart">
<!-- 퍼센트 계산 -->
<c:set var="mbrStep1Pct" value="${resultMap.resultData.mbrStep1Cnt == 0 ? 0 : (resultMap.resultData.mbrStep1Cnt * 100.0) / resultMap.resultData.mbrYCnt}" />
<c:set var="mbrStep2Pct" value="${resultMap.resultData.mbrStep2Cnt == 0 ? 0 : (resultMap.resultData.mbrStep2Cnt * 100.0) / resultMap.resultData.mbrYCnt}" />
<c:set var="mbrStep3Pct" value="${resultMap.resultData.mbrStep3Cnt == 0 ? 0 : (resultMap.resultData.mbrStep3Cnt * 100.0) / resultMap.resultData.mbrYCnt}" />
<c:set var="mbrStep4Pct" value="${resultMap.resultData.mbrStep4Cnt == 0 ? 0 : (resultMap.resultData.mbrStep4Cnt * 100.0) / resultMap.resultData.mbrYCnt}" />
<c:set var="mbrStep5Pct" value="${resultMap.resultData.mbrStep5Cnt == 0 ? 0 : (resultMap.resultData.mbrStep5Cnt * 100.0) / resultMap.resultData.mbrTCnt}" />
<div class="barWrap">
<span class="tit">1단계</span>
<div class="bar"><span style='width:<fmt:formatNumber value="${mbrStep1Pct}" type="number" maxFractionDigits="0" />%'></span></div>
<span class="per"><fmt:formatNumber value="${resultMap.resultData.mbrStep1Cnt}" pattern="#,###"/> 명 (<fmt:formatNumber value="${mbrStep1Pct}" type="number" maxFractionDigits="2" />%)</span>
</div><!--//barWrap-->
<div class="barWrap">
<span class="tit">2단계</span>
<div class="bar"><span style='width:<fmt:formatNumber value="${mbrStep2Pct}" type="number" maxFractionDigits="0" />%'></span></div>
<span class="per"><fmt:formatNumber value="${resultMap.resultData.mbrStep2Cnt}" pattern="#,###"/> 명 (<fmt:formatNumber value="${mbrStep2Pct}" type="number" maxFractionDigits="2" />%)</span>
</div><!--//barWrap-->
<div class="barWrap">
<span class="tit">3단계</span>
<div class="bar"><span style='width:<fmt:formatNumber value="${mbrStep3Pct}" type="number" maxFractionDigits="0" />%'></span></div>
<span class="per"><fmt:formatNumber value="${resultMap.resultData.mbrStep3Cnt}" pattern="#,###"/> 명 (<fmt:formatNumber value="${mbrStep3Pct}" type="number" maxFractionDigits="2" />%)</span>
</div><!--//barWrap-->
<div class="barWrap">
<span class="tit">4단계</span>
<div class="bar"><span style='width:<fmt:formatNumber value="${mbrStep4Pct}" type="number" maxFractionDigits="0" />%'></span></div>
<span class="per"><fmt:formatNumber value="${resultMap.resultData.mbrStep4Cnt}" pattern="#,###"/> 명 (<fmt:formatNumber value="${mbrStep4Pct}" type="number" maxFractionDigits="2" />%)</span>
</div><!--//barWrap-->
<div class="barWrap">
<span class="tit blue-8">완료</span>
<div class="bar"><span style='width:<fmt:formatNumber value="${mbrStep5Pct}" type="number" maxFractionDigits="0" />%'></span></div>
<span class="per"><fmt:formatNumber value="${resultMap.resultData.mbrStep5Cnt}" pattern="#,###"/> 명 (<fmt:formatNumber value="${mbrStep5Pct}" type="number" maxFractionDigits="2" />%)</span>
</div><!--//barWrap-->
</div><!--//bar_chart-->
<p class="barWrapSum">
진행중:<b class="blue-8"><fmt:formatNumber value="${resultMap.resultData.mbrYCnt}" pattern="#,###"/></b> 명 &nbsp;&nbsp;
완료:<b class="blue-8"><fmt:formatNumber value="${resultMap.resultData.mbrStep5Cnt}" pattern="#,###"/></b> 명
</p>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
<form id="listForm" name="listForm">
<input type="hidden" id="bnfInnb" name ="bnfInnb"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="srchPdDv" name="srchPdDv" value="${ resultMap.paramVO.srchPdDv }">
<input type="hidden" id="srchStartDt" name="srchStartDt" value="${ resultMap.paramVO.srchStartDt }">
<input type="hidden" id="srchEndDt" name="srchEndDt" value="${ resultMap.paramVO.srchEndDt }">
<input type="hidden" id="srchSttDv" name="srchSttDv" value="${ resultMap.paramVO.srchSttDv }"/>
<input type="hidden" id="srchUseAt" name="srchUseAt" value="${ resultMap.paramVO.srchUseAt }"/>
<input type="hidden" id="srchDv" name="srchDv" value="${ resultMap.paramVO.srchDv }"/>
<input type="hidden" id="srchKeyword" name="srchKeyword" value="${ resultMap.paramVO.srchKeyword }"/>
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultMap.paramVO.pageIndex }"/>
<input type="hidden" id="recordCountPerPage" name="recordCountPerPage" value="${ resultMap.paramVO.recordCountPerPage }"/>
<input type="hidden" id="pageUnit" name="pageUnit" value="${ resultMap.paramVO.pageUnit }"/>
</form>
</body>
</html>

View File

@@ -0,0 +1,219 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : CpslmknSttusForm.jsp
Description : 캡슐만들기 참여현황 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-10-14 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
//검색폼 데이트피커 제어
fn_set_dateRange_function("#dateRange","srchStartDt","srchEndDt","srchStartDt");
let pageIndex = '<c:out value="${ resultMap.paramVO.pageIndex }"/>';
let pageUnit = '<c:out value="${ resultMap.paramVO.pageUnit }"/>';
fn_select_list(pageIndex, pageUnit);
$('#listForm').on('keydown', function(e) {
if (e.keyCode == 13) {
e.preventDefault();
$('#searchBtn').trigger("click");
}
});
});
const fn_select_list = function(pageIndex, pageUnit) {
let dataStr;
if(!pageIndex) {
$('#pageIndex').val(1);
} else {
$('#pageIndex').val(pageIndex);
}
if(!pageUnit) {
dataStr = $('#listForm').serialize();
} else {
if($('#pageUnit').length){
$('#pageUnit').val(pageUnit);
dataStr = $('#listForm').serialize();
} else {
dataStr = $('#listForm').serialize()+'&pageUnit='+pageUnit;
}
}
$('#pageIndex').val(pageIndex);
$.ajax({
type: "post",
url : "<c:url value="/mngr/bnft/sttus/selectBnftCpslmknSttusInqire"/>",
data : dataStr,
success:function(resultHtml) {
$('#pageDiv').html(resultHtml);
$('#pageUnit').niceSelect();
}
});
}
const fn_move_dtlpage = function(bnfInnb) {
const url = '<c:url value="/mngr/bnft/sttus/selectBnftCpslmknSttusDtlsForm"/>';
$('#listForm').attr('action', url);
$('#listForm').attr('method', 'post');
$('#pageIndex').val(1);
$('#listForm #bnfInnb').val(bnfInnb);
$('#listForm').submit();
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">참여현황</h2>
</div>
<section id="section01" class="content-section content-scroll-detect content-fold">
<div class="content-fold__content">
<div class="count-wrapper">
<div class="count_box">
<a href="#">
<p class="cnt_top">오늘 신규 참여</p>
<p class="cnt_bm"><fmt:formatNumber value="${ resultMap.resultSumry.mbrCnt3 }" pattern="#,###"/> 명</p>
</a>
</div>
<div class="count_box">
<a href="#">
<p class="cnt_top">오늘 보상 지급</p>
<p class="cnt_bm"><fmt:formatNumber value="${ resultMap.resultSumry.rcvCnt2 }" pattern="#,###"/> 건</p>
</a>
</div>
<div class="count_box">
<a href="#">
<p class="cnt_top">현재 진행중 인원</p>
<p class="cnt_bm"><fmt:formatNumber value="${ resultMap.resultSumry.mbrCnt2 }" pattern="#,###"/> 명</p>
</a>
</div>
<div class="count_box last">
<a href="#">
<p class="cnt_top">참여인원 전체 합계</p>
<p class="cnt_bm"><fmt:formatNumber value="${ resultMap.resultSumry.mbrCnt1 }" pattern="#,###"/> 명</p>
</a>
</div>
<div class="count_box last">
<a href="#">
<p class="cnt_top">보상 완료 전체 합계</p>
<p class="cnt_bm"><fmt:formatNumber value="${ resultMap.resultSumry.rcvCnt1 }" pattern="#,###"/> 건</p>
</a>
</div>
</div>
</div>
</section>
<form id="listForm" name="listForm" method="post" action="<c:url value="/mngr/bnft/sttus/selectBnftCpslmknSttusForm"/>">
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value="${ resultMap.paramVO.pageIndex }"/>"/>
<input type="hidden" id="recordCountPerPage" name="recordCountPerPage" value="<c:out value="${ resultMap.paramVO.recordCountPerPage }"/>"/>
<input type="hidden" id="bnfInnb" name="bnfInnb" value=""/>
<section id="search-section" class="content-section">
<div class="table-wrapper vertical">
<table class="table">
<caption>검색 옵션</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr class="search-hide">
<th>기간</th>
<td>
<div class="td-inner">
<div class="input-container">
<input type="text" name="srchStartDt" id="srchStartDt" class="datepicker" title="시작 날짜 선택" value="${ resultMap.paramVO.srchStartDt }" autocomplete="off">
<span class="tilde">~</span>
<input type="text" name="srchEndDt" id="srchEndDt" class="datepicker" title="종료 날짜 선택" value="${ resultMap.paramVO.srchEndDt }" autocomplete="off">
</div>
<div class="dateRange-btnContainer" id="dateRange">
<button class="dateRange-btn">어제</button>
<button class="dateRange-btn">오늘</button>
<button class="dateRange-btn">3일간</button>
<button class="dateRange-btn">일주일</button>
<button class="dateRange-btn">1개월</button>
<button class="dateRange-btn">3개월</button>
<button class="dateRange-btn">6개월</button>
<button class="dateRange-btn">1년</button>
<button class="dateRange-btn selected">전체</button>
</div>
</div>
</td>
</tr>
<tr>
<th>검색어</th>
<td>
<div class="td-inner">
<div class="select-box">
<select name="srchDv" id="srchDv">
<option value="bnfSj" ${ f:setSelected(resultMap.paramVO.srchDv,"bnfSj") }>제품명</option>
</select>
</div>
<input class="input-text xl" type="text" id="srchKeyword" name="srchKeyword" value="${ resultMap.paramVO.srchKeyword }">
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="form-control-container">
<div class="left"></div>
<div class="center">
<button class="btn outline" id="resetBtn" type="button" onclick="fn_reset_form('search-section');">초기화</button>
<button class="btn primary" id="searchBtn" type="button" onkeypress="this.onclick();" onclick="fn_select_list(1); return false;">검색</button>
</div>
<div class="right">
<!-- <button class="btn outline search-detail">상세검색</button> -->
</div>
</div>
</section>
<%-- 목록 영역 --%>
<div id="pageDiv">
</div>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
</body>
</html>

View File

@@ -0,0 +1,127 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : CpslmknSttusList.jsp
Description : 캡슐만들기 현황내역 목록
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2025-04-25 이훈영 최초 생성
--%>
<%-- 목록 조회 영역 START --%>
<section id="section03" class="content-section">
<div class="form-control-container">
<div class="left">
<div class="search-number">
<span class="search-number__text">총 <strong><c:out value="${ resultMap.paginationInfo.totalRecordCount }"/></strong>건</span>
</div>
</div>
<div class="center">
</div>
<div class="right">
<!-- <button class="btn outline">
<i class="icon icon_excel"></i>
엑셀다운로드
</button>
<div class="select-box">
<select title="정렬방식">
<option value="">최근 당첨순</option>
<option value="">최근 당첨순</option>
<option value="">최근 당첨순</option>
</select>
</div> -->
<div class="select-box">
<select id="pageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_list('1');">
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paginationInfo.recordCountPerPage eq pageUnit}">selected="selected"</c:if>><c:out value="${ pageUnit }"/>개씩</option>
</c:forEach>
</select>
</div>
</div>
</div>
<div class="table-wrapper mt-10">
<table class="table vertical">
<caption>내역 테이블</caption>
<colgroup>
<col style="width: 10%;">
<col style="width: 20%;">
<col style="width: 20%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 10%;">
</colgroup>
<thead>
<tr>
<th>No.</th>
<th>제품명</th>
<th>기간</th>
<th>상태</th>
<th>사용여부</th>
<th>필요 초록잎</th>
<th>참여인원</th>
<th>보상 완료 건수</th>
</tr>
</thead>
<tbody>
<c:choose>
<c:when test="${ not empty resultMap.resultList && fn:length(resultMap.resultList) > 0 }">
<c:forEach items="${ resultMap.resultList }" var="resultList" varStatus="status">
<tr>
<td>
<span><c:out value="${ resultMap.paginationInfo.totalRecordCount - resultList.rnum + 1 }" /></span>
</td>
<td class="left">
<a href="#" class="under-line blue-8">
<span class="under-line" onclick="fn_move_dtlpage('<c:out value="${ resultList.bnfInnb }" />')">
<c:out value="${ resultList.bnfSj }"/>
</span>
</a>
</td>
<td>
<span>
<c:out value="${ resultList.bnfBgnDt }"/> ~
<c:out value="${ resultList.bnfEndDt }"/>
</span>
</td>
<td>
<span><c:out value="${ resultList.bnfSttus }"/></span>
</td>
<td>
<span><c:out value="${ resultList.useAtNm }"/></span>
</td>
<td>
<span><fmt:formatNumber value="${resultList.rwdCndCnt}" pattern="#,###"/>개</span>
</td>
<td>
<span><fmt:formatNumber value="${resultList.mbrCnt}" pattern="#,###"/></span>
</td>
<td>
<span><fmt:formatNumber value="${resultList.rcvCnt}" pattern="#,###"/></span>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="100%" ><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</section>
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_list" />
</div>
<%-- 목록 조회 영역 END --%>

View File

@@ -0,0 +1,385 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : DiscsharSttusForm.jsp
Description : 할인소식공유 참여현황 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-10-14 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
});
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">참여현황</h2>
</div>
<form id="sttusForm" name="sttusForm" class="common-form" method="post" action="">
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<section class="content-section">
<form>
<div class="table-wrapper vertical">
<table class="table">
<caption>출석체크 회원별 검색 옵션</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th>기간</th>
<td>
<div class="td-inner">
<div class="input-container">
<input type="text" id="datepicker_3" class="datepicker" title="시작 날짜 선택" autocomplete="off">
<span class="tilde">~</span>
<input type="text" id="datepicker_4" class="datepicker" title="종료 날짜 선택" autocomplete="off">
</div>
<div class="dateRange-btnContainer">
<button class="dateRange-btn">어제</button>
<button class="dateRange-btn">오늘</button>
<button class="dateRange-btn">3일간</button>
<button class="dateRange-btn">일주일</button>
<button class="dateRange-btn">1개월</button>
<button class="dateRange-btn">3개월</button>
<button class="dateRange-btn">6개월</button>
<button class="dateRange-btn selected">전체</button>
</div>
</div>
</td>
</tr>
<tr>
<th>검색어</th>
<td>
<div class="td-inner">
<div class="select-box">
<select title="회원별 검색">
<option value="">아이디</option>
<option value="">아이디</option>
<option value="">아이디</option>
</select>
</div>
<input class="input-text xl wd540" type="text" title="" placeholder="">
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="form-control-container">
<div class="left"></div>
<div class="center">
<button class="btn outline">초기화</button>
<button class="btn primary">검색</button>
</div>
<div class="right">
<!-- <button class="btn outline search-detail">상세검색</button> -->
</div>
</div>
</form>
</section>
<section class="content-section">
<form>
<div class="form-control-container">
<div class="left">
<div class="search-number">
<span class="search-number__text">총 <strong>1,720</strong>건</span>
(<span class="search-number__text">총 <strong>1,720</strong>건</span>)
</div>
</div>
<div class="center">
</div>
<div class="right">
<button class="btn outline mr-10">
<i class="icon icon_excel"></i>
엑셀다운로드
</button>
<div class="select-box">
<select title="정렬방식">
<option value="">최근 지급일순</option>
<option value="">최근 지급일순</option>
<option value="">최근 지급일순</option>
</select>
</div>
<div class="select-box">
<select title="테이블 열 갯수">
<option value="">10개씩</option>
<option value="">50개씩</option>
<option value="">100개씩</option>
<option value="">200개씩</option>
</select>
</div>
</div>
</div>
<div class="table-wrapper mt-10">
<table class="table vertical">
<caption>회원별 출석내역 테이블</caption>
<colgroup>
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 120px;">
<col style="width: auto;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 10%;">
</colgroup>
<thead>
<tr>
<th>No.</th>
<th>아이디</th>
<th>이름</th>
<th colspan="2">상품명</th>
<th>구매자</th>
<th>구매일시</th>
<th>마일리지</th>
<th>지급일시</th>
</thead>
<tbody>
<tr>
<td>
<span>248</span>
</td>
<td>
<a href="#" class="under-line blue-8">abcdedd</a>
</td>
<td>
<span>김가나</span>
</td>
<td>
<img src="../resources/images/image_placeholder.png" width="80" height="80" alt="">
</td>
<td class="left">
<a href="#" class="under-line blue-8">뉴트리코어 비타민B 콤플렉스 60정 (2개)</a>
</td>
<td>
<a href="#" class="under-line blue-8">cdcd</a>
</td>
<td>
<span>2024-05-01 23:22</span>
</td>
<td>
<span>5,000</span> 원
</td>
<td>
<span>2024-05-01 23:22</span>
</td>
</tr>
<tr>
<td>
<span>248</span>
</td>
<td>
<a href="#" class="under-line blue-8">abcdedd</a>
</td>
<td>
<span>김가나</span>
</td>
<td>
<img src="../resources/images/상품이미지01.png" width="80" height="80" alt="">
</td>
<td class="left">
<a href="#" class="under-line blue-8">뉴트리코어 비타민B 콤플렉스 60정 (2개)</a>
</td>
<td>
<a href="#" class="under-line blue-8">cdcd</a>
</td>
<td>
<span>2024-05-01 23:22</span>
</td>
<td>
<span>5,000</span> 원
</td>
<td>
<span>2024-05-01 23:22</span>
</td>
</tr>
<tr>
<td>
<span>248</span>
</td>
<td>
<a href="#" class="under-line blue-8">abcdedd</a>
</td>
<td>
<span>김가나</span>
</td>
<td>
<img src="../resources/images/상품이미지01.png" width="80" height="80" alt="">
</td>
<td class="left">
<a href="#" class="under-line blue-8">뉴트리코어 비타민B 콤플렉스 60정 (2개)</a>
</td>
<td>
<a href="#" class="under-line blue-8">cdcd</a>
</td>
<td>
<span>2024-05-01 23:22</span>
</td>
<td>
<span>5,000</span> 원
</td>
<td>
<span>2024-05-01 23:22</span>
</td>
</tr>
<tr>
<td>
<span>248</span>
</td>
<td>
<a href="#" class="under-line blue-8">abcdedd</a>
</td>
<td>
<span>김가나</span>
</td>
<td>
<img src="../resources/images/상품이미지01.png" width="80" height="80" alt="">
</td>
<td class="left">
<a href="#" class="under-line blue-8">뉴트리코어 비타민B 콤플렉스 60정 (2개)</a>
</td>
<td>
<a href="#" class="under-line blue-8">cdcd</a>
</td>
<td>
<span>2024-05-01 23:22</span>
</td>
<td>
<span>5,000</span> 원
</td>
<td>
<span>2024-05-01 23:22</span>
</td>
</tr>
<tr>
<td>
<span>248</span>
</td>
<td>
<a href="#" class="under-line blue-8">abcdedd</a>
</td>
<td>
<span>김가나</span>
</td>
<td>
<img src="../resources/images/상품이미지01.png" width="80" height="80" alt="">
</td>
<td class="left">
<a href="#" class="under-line blue-8">뉴트리코어 비타민B 콤플렉스 60정 (2개)</a>
</td>
<td>
<a href="#" class="under-line blue-8">cdcd</a>
</td>
<td>
<span>2024-05-01 23:22</span>
</td>
<td>
<span>5,000</span> 원
</td>
<td>
<span>2024-05-01 23:22</span>
</td>
</tr>
<tr>
<td>
<span>248</span>
</td>
<td>
<a href="#" class="under-line blue-8">abcdedd</a>
</td>
<td>
<span>김가나</span>
</td>
<td>
<img src="../resources/images/상품이미지01.png" width="80" height="80" alt="">
</td>
<td class="left">
<a href="#" class="under-line blue-8">뉴트리코어 비타민B 콤플렉스 60정 (2개)</a>
</td>
<td>
<a href="#" class="under-line blue-8">cdcd</a>
</td>
<td>
<span>2024-05-01 23:22</span>
</td>
<td>
<span>5,000</span> 원
</td>
<td>
<span>2024-05-01 23:22</span>
</td>
</tr>
</tbody>
</table>
</div>
</form>
</section>
<div class="pagination__container">
<div class="pagination">
<button disabled="" class="pagination__item first"><span class="visually-hidden">첫
페이지로</span></button>
<button disabled="" class="pagination__item prev"><span class="visually-hidden">이전
페이지로</span></button>
<ol class="pagination__number-group">
<li><button class="pagination__item active"><span>1</span></button></li>
<li><button class="pagination__item"><span>2</span></button></li>
<li><button class="pagination__item"><span>3</span></button></li>
<li><button class="pagination__item"><span>4</span></button></li>
<li><button class="pagination__item"><span>5</span></button></li>
<li><button class="pagination__item"><span>6</span></button></li>
<li><button class="pagination__item"><span>7</span></button></li>
<li><button class="pagination__item"><span>8</span></button></li>
<li><button class="pagination__item"><span>9</span></button></li>
<li><button class="pagination__item"><span>10</span></button></li>
</ol>
<button class="pagination__item next"><span class="visually-hidden">다음 페이지로</span></button>
<button class="pagination__item last"><span class="visually-hidden">마지막 페이지로</span></button>
</div>
</div>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
</body>
</html>

View File

@@ -0,0 +1,177 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : EvntviewSttusForm.jsp
Description : 이벤트보기 참여현황 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-10-14 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
//검색폼 데이트피커 제어
fn_set_dateRange_function("#dateRange","srchStartDt","srchEndDt","srchStartDt");
let pageIndex = '<c:out value="${ resultMap.paramVO.pageIndex }"/>';
let pageUnit = '<c:out value="${ resultMap.paramVO.pageUnit }"/>';
fn_select_list(pageIndex, pageUnit);
$('#listForm').on('keydown', function(e) {
if (e.keyCode == 13) {
e.preventDefault();
$('#searchBtn').trigger("click");
}
});
});
const fn_select_list = function(pageIndex, pageUnit) {
let dataStr;
if(!pageIndex) {
$('#pageIndex').val(1);
} else {
$('#pageIndex').val(pageIndex);
}
if(!pageUnit) {
dataStr = $('#listForm').serialize();
} else {
if($('#pageUnit').length){
$('#pageUnit').val(pageUnit);
dataStr = $('#listForm').serialize();
} else {
dataStr = $('#listForm').serialize()+'&pageUnit='+pageUnit;
}
}
$('#pageIndex').val(pageIndex);
$.ajax({
type: "post",
url : "<c:url value="/mngr/bnft/sttus/selectBnftEvntviewSttusInqire"/>",
data : dataStr,
success:function(resultHtml) {
$('#pageDiv').html(resultHtml);
$('#pageUnit').niceSelect();
}
});
}
const fn_move_dtlpage = function(bnfInnb) {
return;
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">참여현황</h2>
</div>
<form id="listForm" name="listForm" method="post" action="<c:url value="/mngr/bnft/sttus/selectBnftEvntviewSttusForm"/>">
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value="${ resultMap.paramVO.pageIndex }"/>"/>
<input type="hidden" id="recordCountPerPage" name="recordCountPerPage" value="<c:out value="${ resultMap.paramVO.recordCountPerPage }"/>"/>
<section class="content-section" id="search-section">
<div class="table-wrapper vertical">
<table class="table">
<caption>검색 옵션</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr class="search-hide">
<th>기간</th>
<td>
<div class="td-inner">
<div class="input-container">
<input type="text" name="srchStartDt" id="srchStartDt" class="datepicker" title="시작 날짜 선택" value="${ resultMap.paramVO.srchStartDt }" autocomplete="off">
<span class="tilde">~</span>
<input type="text" name="srchEndDt" id="srchEndDt" class="datepicker" title="종료 날짜 선택" value="${ resultMap.paramVO.srchEndDt }" autocomplete="off">
</div>
<div class="dateRange-btnContainer" id="dateRange">
<button class="dateRange-btn">어제</button>
<button class="dateRange-btn">오늘</button>
<button class="dateRange-btn">3일간</button>
<button class="dateRange-btn">일주일</button>
<button class="dateRange-btn">1개월</button>
<button class="dateRange-btn">3개월</button>
<button class="dateRange-btn">6개월</button>
<button class="dateRange-btn">1년</button>
<button class="dateRange-btn selected">전체</button>
</div>
</div>
</td>
</tr>
<tr>
<th>검색어</th>
<td>
<div class="td-inner">
<div class="select-box">
<select name="srchDv" id="srchDv">
<option value="bnfSj" ${ f:setSelected(resultMap.paramVO.srchDv,"bnfSj") }>이벤트명</option>
<option value="mbrId" ${ f:setSelected(resultMap.paramVO.srchDv,"mbrId") }>아이디</option>
<option value="mbrNm" ${ f:setSelected(resultMap.paramVO.srchDv,"mbrNm") }>이름</option>
</select>
</div>
<input class="input-text xl" type="text" id="srchKeyword" name="srchKeyword" value="${ resultMap.paramVO.srchKeyword }">
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="form-control-container">
<div class="left"></div>
<div class="center">
<button class="btn outline" id="resetBtn" type="button" onclick="fn_reset_form('search-section');">초기화</button>
<button class="btn primary" id="searchBtn" type="button" onkeypress="this.onclick();" onclick="fn_select_list(1); return false;">검색</button>
</div>
<div class="right">
<!-- <button class="btn outline search-detail">상세검색</button> -->
</div>
</div>
</section>
<%-- 목록 영역 --%>
<div id="pageDiv">
</div>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
</body>
</html>

View File

@@ -0,0 +1,99 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%--
Class Name : EvntviewSttusList.jsp
Description : 이벤트보기 참여현황 목록조회 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2025-05-02 이훈영 최초 생성
--%>
<%-- 목록 조회 영역 START --%>
<section id="section02" class="content-section">
<div class="form-control-container">
<div class="left">
<div class="search-number">
<span class="search-number__text">총 <strong><c:out value="${ resultMap.paginationInfo.totalRecordCount }"/></strong>건</span>
(<span class="search-number__text">마일리지 합계 <strong><fmt:formatNumber value="${ resultMap.resultSmry.mlgSum }" pattern="#,###"/></strong>원</span>)
</div>
</div>
<div class="center">
</div>
<div class="right">
<div class="select-box">
<select id="pageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_list('1');">
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paginationInfo.recordCountPerPage eq pageUnit}">selected="selected"</c:if>><c:out value="${ pageUnit }"/>개씩</option>
</c:forEach>
</select>
</div>
</div>
</div>
<div class="table-wrapper mt-10">
<table class="table vertical">
<caption>테이블</caption>
<colgroup>
<col style="width: 10%;">
<col style="width: 15%;">
<col style="width: 15%;">
<col style="width: 25%;">
<col style="width: 15%;">
<col style="width: 20%;">
</colgroup>
<thead>
<tr>
<th>No.</th>
<th>아이디</th>
<th>이름</th>
<th>이벤트명</th>
<th>마일리지</th>
<th>지급일시</th>
</thead>
<tbody>
<c:choose>
<c:when test="${ not empty resultMap.resultList && fn:length(resultMap.resultList) > 0 }">
<c:forEach items="${ resultMap.resultList }" var="resultList" varStatus="status">
<tr>
<td>
<span><c:out value="${ resultMap.paginationInfo.totalRecordCount - resultList.rnum + 1 }" /></span>
</td>
<td>
<span class="blue-8"><c:out value="${ resultList.mbrId }"/></span>
</td>
<td>
<span><c:out value="${ resultList.mbrNm }"/></span>
</td>
<td class="left">
<span class="blue-8"><c:out value="${ resultList.bnfSj }"/></span>
</td>
<td class="right">
<span><c:out value="${ resultList.mlgRwdAmt }"/>원</span>
</td>
<td>
<span><c:out value="${ resultList.bnfPrtDt }"/></span>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="100%" ><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</section>
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_list" />
</div>
<%-- 목록 조회 영역 END --%>

View File

@@ -0,0 +1,213 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : HlthsetMonSttusForm.jsp
Description : 관심분야 월별내역 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-10-14 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
// 검색년월 설정
var currYear = new Date().getFullYear();
for (var year = 2025; year <= currYear; year++) {
$('#srchYear').append('<option value="' + year + '">' + year + '년</option>');
}
$('#srchYear').val(currYear);
if('<c:out value="${ resultMap.paramVO.srchYear }"/>' !== '') {
$('#srchYear').val('<c:out value="${ resultMap.paramVO.srchYear }"/>');
}
$('#srchYear').niceSelect('update');
$('#srchYear').change(function() {
fn_select_sttus();
});
fn_select_sttus();
});
const fn_select_sttus = function() {
const url = '<c:url value="/mngr/bnft/sttus/selectBnftHlthsetMonSttusInqire"/>';
$.ajax({
type: 'post',
url: url,
data : {
'bnfDvCd' : $('#bnfDvCd').val(),
'srchYear' : $('#srchYear').val()
},
success: function (result) {
const data = JSON.parse(result.resBody.result);
const sttusList = data.sttusList;
$('#tblList tbody').empty();
var totalCnt = 0;
var totalMlg = 0;
if (sttusList !== null) {
for (var i = 0; i < sttusList.length; i++) {
var sttusData = sttusList[i];
var monthSetCnt = Number(sttusData.monthSetCnt).toLocaleString() + '명';
var monthMlgSum = Number(sttusData.monthMlgSum).toLocaleString() + '원';
var newRow = $('<tr></tr>');
var th = $('<th></th>').text(sttusData.yearMon); // 날짜
var td1 = $('<td class="right"></td>').append($('<span></span>').text(monthSetCnt));
var td2 = $('<td class="right"></td>').append($('<span></span>').text(monthMlgSum));
// tr에 th와 td를 추가
newRow.append(th).append(td1).append(td2);
$('#tblList tbody').append(newRow);
totalCnt = totalCnt + Number(sttusData.monthSetCnt);
totalMlg = totalMlg + Number(sttusData.monthMlgSum);
}
}
$('#totalCnt').text(totalCnt.toLocaleString() + "명");
$('#totalMlg').text(totalMlg.toLocaleString() + "원");
}
});
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">월별내역</h2>
</div>
<form id="sttusForm" name="sttusForm" class="common-form" method="post" action="">
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<section id="section01" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">설정요약</h3>
</div>
<div class="content-fold__content">
<form>
<div class="count-wrapper">
<div class="count_box">
<a href="#">
<p class="cnt_top">오늘 신규</p>
<p class="cnt_bm"><fmt:formatNumber value="${ resultMap.pdSumry.todaySetCnt }" pattern="#,###" />명</p>
</a>
</div>
<div class="count_box">
<a href="#">
<p class="cnt_top">오늘 수정</p>
<p class="cnt_bm"><fmt:formatNumber value="${ resultMap.pdSumry.todayModCnt }" pattern="#,###" />명</p>
</a>
</div>
<div class="count_box">
<a href="#">
<p class="cnt_top">오늘 마일리지</p>
<p class="cnt_bm"><fmt:formatNumber value="${ resultMap.pdSumry.todayMlgSum }" pattern="#,###" />원</p>
</a>
</div>
<div class="count_box last">
<a href="#">
<p class="cnt_top">전체 설정 인원</p>
<p class="cnt_bm"><fmt:formatNumber value="${ resultMap.pdSumry.totalMbrCnt }" pattern="#,###" />명</p>
</a>
</div>
<div class="count_box last">
<a href="#">
<p class="cnt_top">전체 마일리지</p>
<p class="cnt_bm"><fmt:formatNumber value="${ resultMap.pdSumry.totalMlgSum }" pattern="#,###" />원</p>
</a>
</div>
</div>
</form>
</div>
</section>
<section id="section02" class="content-section content-scroll-detect content-fold">
<div class="form-control-container">
<div class="left">
<h3 class="content-section__title">월별내역</h3>
</div>
<div class="center">
</div>
<div class="right">
<div class="select-box">
<select name="srchYear" id="srchYear">
</select>
</div>
</div>
</div>
<div class="content-fold__content">
<form>
<div class="table-wrapper">
<table class="table vertical tf-bg" id="tblList">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 20%;">
<col style="width: 40%">
<col style="width: 40%">
</colgroup>
<thead>
<tr>
<th>기간</th>
<th>설정(월1회 이상)</th>
<th>지급 마일리지</th>
</thead>
<tbody>
</tbody>
<tfoot>
<tr>
<th>합계</th>
<td class="right">
<span id="totalCnt"></span>
</td>
<td class="right">
<span id="totalMlg"></span>
</td>
</tr>
</tfoot>
</table>
</div>
</form>
</div>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
</body>
</html>

View File

@@ -0,0 +1,162 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : HlthsetSttusForm.jsp
Description : 관심분야 설정현황 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-10-14 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
});
function fn_detail(innb) {
return;
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">설정현황</h2>
</div>
<form id="sttusForm" name="sttusForm" class="common-form" method="post" action="">
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<section id="section01" class="content-section content-scroll-detect content-fold">
<div class="content-chart">
<div class="left_area">
<div class="form-control-container">
<div class="left">
<h3 class="content-section__title">관심분야 설정</h3>
</div>
<div class="center">
</div>
<div class="right">
</div>
</div>
<div class="content-fold__content">
<form>
<div class="table-wrapper">
<table class="table vertical">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 20%;">
<col style="width: 40%">
<col style="width: 40%">
</colgroup>
<thead>
<tr>
<th>no</th>
<th>관심분야명</th>
<th>설정수</th>
<!--<th>분석</th>-->
</tr>
</thead>
<tbody>
<c:choose>
<c:when test="${ not empty resultMap.resultList && fn:length(resultMap.resultList) > 0 }">
<c:forEach items="${ resultMap.resultList }" var="resultList" varStatus="status">
<tr>
<th>${status.count}</th>
<td><span>${resultList.intrstNm}</span></td>
<td class="right">
<span class="mr-15">${resultList.intrstCnt} 건</span>
</td>
<!--<td>
<a href="#" class="btn xsm gray ml-5" onclick="fn_detail('${resultList.bnfIntrstInnb}')">차트보기</a>
</td>-->
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="100%" ><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</form>
</div>
</div>
<div class="right_area" style="display:none;">
<div class="form-control-container">
<div class="left">
<h3 class="content-section__title blue-8">혈행/혈압</h3>
</div>
<div class="center">
</div>
<div class="right">
</div>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table vertical tight">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width:100%;">
</colgroup>
<tbody>
<tr>
<th>[성별]</th>
</tr>
<tr>
<td> <div class="chart-wrapper">차트</div> </td>
</tr>
<tr>
<th>[연령별]</th>
</tr>
<tr>
<td> <div class="chart-wrapper">차트</div> </td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
</body>
</html>

View File

@@ -0,0 +1,212 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : IntakchlSttusDtlsForm.jsp
Description : 섭취챌린지 참여현황 상세 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-10-14 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
});
/**
* 목록 이동
*/
function fn_select_list() {
$('#listForm').attr('action', '<c:url value="/mngr/bnft/sttus/selectBnftIntakchlSttusForm"/>');
$('#listForm').attr('method', 'post');
$('#listForm').submit();
};
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">참여현황 상세</h2>
<div class="page-title__btn-container">
<a href="#" class="btn outline" onclick="fn_select_list('1'); return false;"><spring:message code="button.list"/></a>
</div>
</div>
<form id="sttusForm" name="sttusForm" class="common-form" method="post" action="">
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
<input type="hidden" id="cdnurl" value="${cdnurl}"/>
<section id="section01" class="content-section">
<div class="table-wrapper vertical">
<table class="table">
<caption>내용</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 38%;">
<col style="width: 12%;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th>제목</th>
<td colspan="3">
<div class="td_inner">
<span class="blue-8">${ resultMap.resultData.bnfSj }</span>
<!--<a href="" class="btn xsm outline primary ml-10"> 상세보기</a>-->
</div>
</td>
</tr>
<tr>
<th>기간</th>
<td colspan="3">${ resultMap.resultData.bnfBgnDt } ~ ${ resultMap.resultData.bnfEndDt } (${ resultMap.resultData.bnfSttus })</td>
</tr>
<tr>
<th>참여인원</th>
<td><fmt:formatNumber value="${ resultMap.resultData.prtCnt }" pattern="#,###"/> 명</td>
<th>지급 마일리지</th>
<td><fmt:formatNumber value="${ resultMap.resultData.mlgAmt }" pattern="#,###"/> 원</td>
</tr>
<tr>
<th>성공 기준일수</th>
<td>${ resultMap.resultData.dayCnt } 일</td>
<th>성공 인원</th>
<td><fmt:formatNumber value="${ resultMap.resultData.goodsCnt }" pattern="#,###"/> 명</td>
</tr>
</tbody>
</table>
</div>
</section>
<!--
<section id="section02" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">참여인원 분석</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<div class="grp-wrap">
<div class="grp-inbox wd50p">
<p class="grp-tit">성별</p>
<div class="grp_wrap">
그래프
</div>
</div>
<div class="grp-inbox wd50p">
<p class="grp-tit">연령별</p>
<div class="grp_wrap">
그래프
</div>
</div>
</div>
</div>
</section>
-->
<section id="section03" class="content-section">
<div class="form-control-container">
<div class="left">
<h3 class="content-section__title">섭취챌린지 대상제품</h3>
</div>
<div class="center">
</div>
<div class="right">
</div>
</div>
<div class="table-wrapper mt-10">
<table class="table vertical tf-bg">
<caption>테이블</caption>
<colgroup>
<col style="width: 10%;">
<col style="width: 120px;">
<col style="width: auto;">
<col style="width: 20%;">
</colgroup>
<thead>
<tr>
<th>NO.</th>
<th colspan="2">제품명</th>
<th>제품선택 인원수</th>
</tr>
</thead>
<tbody>
<c:choose>
<c:when test="${ not empty resultMap.resultGoodsList && fn:length(resultMap.resultGoodsList) > 0 }">
<c:forEach items="${ resultMap.resultGoodsList }" var="resultList" varStatus="status">
<tr>
<td>
<span>${status.count}</span>
</td>
<td>
<img src="${cdnurl}${resultList.goodsImg}" width="80" height="80" onerror="this.src='/mngr/images/image_placeholder.png'">
</td>
<td class="left">
<span class="blue-8">${resultList.goodsNm}</span>
</td>
<td>
<span><fmt:formatNumber value="${ resultList.mbrCnt }" pattern="#,###"/> 명</span>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="100%" ><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</table>
</div>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
<form id="listForm" name="listForm">
<input type="hidden" id="bnfInnb" name ="bnfInnb"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="srchPdDv" name="srchPdDv" value="${ resultMap.paramVO.srchPdDv }">
<input type="hidden" id="srchStartDt" name="srchStartDt" value="${ resultMap.paramVO.srchStartDt }">
<input type="hidden" id="srchEndDt" name="srchEndDt" value="${ resultMap.paramVO.srchEndDt }">
<input type="hidden" id="srchSttDv" name="srchSttDv" value="${ resultMap.paramVO.srchSttDv }"/>
<input type="hidden" id="srchUseAt" name="srchUseAt" value="${ resultMap.paramVO.srchUseAt }"/>
<input type="hidden" id="srchDv" name="srchDv" value="${ resultMap.paramVO.srchDv }"/>
<input type="hidden" id="srchKeyword" name="srchKeyword" value="${ resultMap.paramVO.srchKeyword }"/>
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultMap.paramVO.pageIndex }"/>
<input type="hidden" id="recordCountPerPage" name="recordCountPerPage" value="${ resultMap.paramVO.recordCountPerPage }"/>
<input type="hidden" id="pageUnit" name="pageUnit" value="${ resultMap.paramVO.pageUnit }"/>
</form>
</body>
</html>

View File

@@ -0,0 +1,179 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : IntakchlSttusForm.jsp
Description : 섭취챌린지 참여현황 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-10-14 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
//검색폼 데이트피커 제어
fn_set_dateRange_function("#dateRange","srchStartDt","srchEndDt","srchStartDt");
let pageIndex = '<c:out value="${ resultMap.paramVO.pageIndex }"/>';
let pageUnit = '<c:out value="${ resultMap.paramVO.pageUnit }"/>';
fn_select_list(pageIndex, pageUnit);
$('#listForm').on('keydown', function(e) {
if (e.keyCode == 13) {
e.preventDefault();
$('#searchBtn').trigger("click");
}
});
});
const fn_select_list = function(pageIndex, pageUnit) {
let dataStr;
if(!pageIndex) {
$('#pageIndex').val(1);
} else {
$('#pageIndex').val(pageIndex);
}
if(!pageUnit) {
dataStr = $('#listForm').serialize();
} else {
if($('#pageUnit').length){
$('#pageUnit').val(pageUnit);
dataStr = $('#listForm').serialize();
} else {
dataStr = $('#listForm').serialize()+'&pageUnit='+pageUnit;
}
}
$('#pageIndex').val(pageIndex);
$.ajax({
type: "post",
url : "<c:url value="/mngr/bnft/sttus/selectBnftIntakchlSttusInqire"/>",
data : dataStr,
success:function(resultHtml) {
$('#pageDiv').html(resultHtml);
$('#pageUnit').niceSelect();
}
});
}
const fn_move_dtlpage = function(bnfInnb) {
$('#listForm').attr('action', '<c:url value="/mngr/bnft/sttus/selectBnftIntakchlSttusDtlsForm"/>');
$('#listForm').attr('method', 'post');
$('#bnfInnb').val(bnfInnb);
$('#listForm').submit();
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">참여현황</h2>
</div>
<form id="listForm" name="listForm" method="post" action="<c:url value="/mngr/bnft/sttus/selectBnftIntakchlSttusForm"/>">
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="bnfInnb" name="bnfInnb" value=""/>
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value="${ resultMap.paramVO.pageIndex }"/>"/>
<input type="hidden" id="recordCountPerPage" name="recordCountPerPage" value="<c:out value="${ resultMap.paramVO.recordCountPerPage }"/>"/>
<section class="content-section" id="search-section">
<div class="table-wrapper vertical">
<table class="table">
<caption>검색 옵션</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr class="search-hide">
<th>기간</th>
<td>
<div class="td-inner">
<div class="input-container">
<input type="text" name="srchStartDt" id="srchStartDt" class="datepicker" title="시작 날짜 선택" value="${ resultMap.paramVO.srchStartDt }" autocomplete="off">
<span class="tilde">~</span>
<input type="text" name="srchEndDt" id="srchEndDt" class="datepicker" title="종료 날짜 선택" value="${ resultMap.paramVO.srchEndDt }" autocomplete="off">
</div>
<div class="dateRange-btnContainer" id="dateRange">
<button class="dateRange-btn">어제</button>
<button class="dateRange-btn">오늘</button>
<button class="dateRange-btn">3일간</button>
<button class="dateRange-btn">일주일</button>
<button class="dateRange-btn">1개월</button>
<button class="dateRange-btn">3개월</button>
<button class="dateRange-btn">6개월</button>
<button class="dateRange-btn">1년</button>
<button class="dateRange-btn selected">전체</button>
</div>
</div>
</td>
</tr>
<tr>
<th>검색어</th>
<td>
<div class="td-inner">
<div class="select-box">
<select name="srchDv" id="srchDv">
<option value="bnfSj" ${ f:setSelected(resultMap.paramVO.srchDv,"bnfSj") }>제목</option>
</select>
</div>
<input class="input-text xl" type="text" id="srchKeyword" name="srchKeyword" value="${ resultMap.paramVO.srchKeyword }">
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="form-control-container">
<div class="left"></div>
<div class="center">
<button class="btn outline" id="resetBtn" type="button" onclick="fn_reset_form('search-section');">초기화</button>
<button class="btn primary" id="searchBtn" type="button" onkeypress="this.onclick();" onclick="fn_select_list(1); return false;">검색</button>
</div>
<div class="right">
<!-- <button class="btn outline search-detail">상세검색</button> -->
</div>
</div>
</section>
<%-- 목록 영역 --%>
<div id="pageDiv">
</div>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
</body>
</html>

View File

@@ -0,0 +1,109 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%--
Class Name : IntakchlSttusList.jsp
Description : 섭취챌린지 참여현황 목록조회 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2025-05-12 이훈영 최초 생성
--%>
<%-- 목록 조회 영역 START --%>
<section id="section02" class="content-section">
<div class="form-control-container">
<div class="left">
<div class="search-number">
<span class="search-number__text">총 <strong><c:out value="${ resultMap.paginationInfo.totalRecordCount }"/></strong>건</span>
</div>
</div>
<div class="center">
</div>
<div class="right">
<div class="select-box">
<select id="pageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_list('1');">
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paginationInfo.recordCountPerPage eq pageUnit}">selected="selected"</c:if>><c:out value="${ pageUnit }"/>개씩</option>
</c:forEach>
</select>
</div>
</div>
</div>
<div class="table-wrapper mt-10">
<table class="table vertical">
<caption>테이블</caption>
<colgroup>
<col style="width: 7%;">
<col style="width: 20%;">
<col style="width: 25%;">
<col style="width: 10%;">
<col style="width: 14%;">
<!--<col style="width: 15%;">-->
<col style="width: 14%;">
</colgroup>
<thead>
<tr>
<th>No.</th>
<th>제목</th>
<th>기간</th>
<th>상태</th>
<th>참여인원</th>
<!--<th>연속 성공 건수</th>-->
<th>지급 마일리지</th>
</tr>
</thead>
<tbody>
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
<c:choose>
<c:when test="${ not empty resultMap.resultList && fn:length(resultMap.resultList) > 0 }">
<c:forEach items="${ resultMap.resultList }" var="resultList" varStatus="status">
<tr>
<td>
<span><c:out value="${ resultMap.paginationInfo.totalRecordCount - resultList.rnum + 1 }" /></span>
</td>
<td class="left">
<a href="#" class="under-line blue-8">
<span class="under-line" onclick="fn_move_dtlpage('<c:out value="${ resultList.bnfInnb }" />')">
<c:out value="${ resultList.bnfSj }"/>
</span>
</a>
</td>
<td>
<span>
<c:out value="${ resultList.bnfBgnDt }"/> ~
<c:out value="${ resultList.bnfEndDt }"/>
</span>
</td>
<td>
<span><c:out value="${ resultList.bnfSttus }"/></span>
</td>
<td>
<span><fmt:formatNumber value="${resultList.prtCnt}" pattern="#,###"/>명</span>
</td>
<td>
<span><fmt:formatNumber value="${resultList.mlgAmt}" pattern="#,###"/>원</span>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="100%" ><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</section>
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_list" />
</div>
<%-- 목록 조회 영역 END --%>

View File

@@ -0,0 +1,252 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : LucklottSttusForm.jsp
Description : 행운복권 당첨자내역 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-10-14 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
//검색폼 데이트피커 제어
fn_set_dateRange_function("#dateRange","srchStartDt","srchEndDt","srchStartDt");
let pageIndex = '<c:out value="${ resultMap.paramVO.pageIndex }"/>';
let pageUnit = '<c:out value="${ resultMap.paramVO.pageUnit }"/>';
fn_select_list(pageIndex, pageUnit);
$('#listForm').on('keydown', function(e) {
if (e.keyCode == 13) {
e.preventDefault();
$('#searchBtn').trigger("click");
}
});
});
const fn_select_list = function(pageIndex, pageUnit) {
let dataStr;
if(!pageIndex) {
$('#pageIndex').val(1);
} else {
$('#pageIndex').val(pageIndex);
}
if(!pageUnit) {
dataStr = $('#listForm').serialize();
} else {
if($('#pageUnit').length){
$('#pageUnit').val(pageUnit);
dataStr = $('#listForm').serialize();
} else {
dataStr = $('#listForm').serialize()+'&pageUnit='+pageUnit;
}
}
$('#pageIndex').val(pageIndex);
$.ajax({
type: "post",
url : "<c:url value="/mngr/bnft/sttus/selectBnftLucklottSttusInqire"/>",
data : dataStr,
success:function(resultHtml) {
$('#pageDiv').html(resultHtml);
$('#pageUnit').niceSelect();
}
});
}
/**
* 회원상세정보
*/
const fn_move_mbr_dtlpage = function(mbrInnb, mbrDvCd) {
return;
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">당첨자 내역</h2>
</div>
<section id="section01" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title blue-9"><span class="ic_today">오늘</span> <c:out value="${ resultMap.paramVO.srchCurrDt }"/> 기준</h3>
</div>
<div class="content-fold__content">
<div class="count-wrapper">
<div class="count_box">
<a href="#">
<p class="cnt_top">전체 참여수</p>
<p class="cnt_bm">${ resultMap.przwinSumry.totCnt }</p>
</a>
</div>
<div class="count_box st-01">
<a href="#">
<p class="cnt_top">1등</p>
<p class="cnt_bm"><span class="cc">${ resultMap.przwinSumry.no1Cnt }</span></p>
</a>
</div>
<div class="count_box st-01">
<a href="#">
<p class="cnt_top">2등</p>
<p class="cnt_bm"><span class="cc">${ resultMap.przwinSumry.no2Cnt }</span></p>
</a>
</div>
<div class="count_box st-01">
<a href="#">
<p class="cnt_top">3등</p>
<p class="cnt_bm"><span class="cc">${ resultMap.przwinSumry.no3Cnt }</span></p>
</a>
</div>
<div class="count_box">
<a href="#">
<p class="cnt_top">행운상</p>
<p class="cnt_bm"><span class="cc">${ resultMap.przwinSumry.no4Cnt }</span></p>
</a>
</div>
</div>
</div>
</section>
<form id="listForm" name="listForm" method="post" action="<c:url value="/mngr/bnft/sttus/selectBnftAtendMbrSttusForm"/>">
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value="${ resultMap.paramVO.pageIndex }"/>"/>
<input type="hidden" id="recordCountPerPage" name="recordCountPerPage" value="<c:out value="${ resultMap.paramVO.recordCountPerPage }"/>"/>
<section class="content-section" id="search-section">
<div class="table-wrapper vertical">
<table class="table">
<caption>검색</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr class="search-hide">
<th>기간</th>
<td>
<div class="td-inner">
<div class="input-container">
<input type="text" name="srchStartDt" id="srchStartDt" class="datepicker" title="시작 날짜 선택" value="${ resultMap.paramVO.srchStartDt }" autocomplete="off">
<span class="tilde">~</span>
<input type="text" name="srchEndDt" id="srchEndDt" class="datepicker" title="종료 날짜 선택" value="${ resultMap.paramVO.srchEndDt }" autocomplete="off">
</div>
<div class="dateRange-btnContainer" id="dateRange">
<button class="dateRange-btn">어제</button>
<button class="dateRange-btn">오늘</button>
<button class="dateRange-btn">3일간</button>
<button class="dateRange-btn">일주일</button>
<button class="dateRange-btn">1개월</button>
<button class="dateRange-btn">3개월</button>
<button class="dateRange-btn">6개월</button>
<button class="dateRange-btn">1년</button>
<button class="dateRange-btn selected">전체</button>
</div>
</div>
</td>
</tr>
<tr class="search-hide">
<th>당첨내용</th>
<td>
<div class="td-inner">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox wd60">
<input type="checkbox" id="srchRwdCateDv_1" name="srchRwdCateDv" value="03010">
<span class="check"></span>
<span class="control-label">1등</span>
</label>
<label class="b-checkbox checkbox wd60">
<input type="checkbox" id="srchRwdCateDv_2" name="srchRwdCateDv" value="03020">
<span class="check"></span>
<span class="control-label">2등</span>
</label>
<label class="b-checkbox checkbox wd60">
<input type="checkbox" id="srchRwdCateDv_3" name="srchRwdCateDv" value="03030">
<span class="check"></span>
<span class="control-label">3등</span>
</label>
<label class="b-checkbox checkbox wd60">
<input type="checkbox" id="srchRwdCateDv_4" name="srchRwdCateDv" value="03040">
<span class="check"></span>
<span class="control-label">행운상</span>
</label>
</div>
</div>
</td>
</tr>
<tr>
<th>검색어</th>
<td>
<div class="td-inner">
<div class="select-box">
<select name="srchDv" id="srchDv">
<option value="mbrId" ${ f:setSelected(resultMap.paramVO.srchDv,"mbrId") }>아이디</option>
<option value="mbrNm" ${ f:setSelected(resultMap.paramVO.srchDv,"mbrNm") }>이름</option>
</select>
</div>
<input class="input-text xl" type="text" id="srchKeyword" name="srchKeyword" value="${ resultMap.paramVO.srchKeyword }">
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="form-control-container">
<div class="left"></div>
<div class="center">
<button class="btn outline" id="resetBtn" type="button" onclick="fn_reset_form('search-section');">초기화</button>
<button class="btn primary" id="searchBtn" type="button" onkeypress="this.onclick();" onclick="fn_select_list(1); return false;">검색</button>
</div>
<div class="right">
<!-- <button class="btn outline search-detail">상세검색</button> -->
</div>
</div>
</section>
<%-- 목록 영역 --%>
<div id="pageDiv">
</div>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
</body>
</html>

View File

@@ -0,0 +1,111 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : LucklottSttusList.jsp
Description : 행운복권 당첨자내역 목록
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-10-14 이훈영 최초 생성
--%>
<%-- 목록 조회 영역 START --%>
<section id="section03" class="content-section">
<div class="form-control-container">
<div class="left">
<div class="search-number">
<span class="search-number__text">총 <strong><c:out value="${ resultMap.paginationInfo.totalRecordCount }"/></strong>건</span>
</div>
</div>
<div class="center">
</div>
<div class="right">
<!-- <button class="btn outline">
<i class="icon icon_excel"></i>
엑셀다운로드
</button>
<div class="select-box">
<select title="정렬방식">
<option value="">최근 당첨순</option>
<option value="">최근 당첨순</option>
<option value="">최근 당첨순</option>
</select>
</div> -->
<div class="select-box">
<select id="pageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_list('1');">
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paginationInfo.recordCountPerPage eq pageUnit}">selected="selected"</c:if>><c:out value="${ pageUnit }"/>개씩</option>
</c:forEach>
</select>
</div>
</div>
</div>
<div class="table-wrapper mt-10">
<table class="table vertical">
<caption>회원별 출석내역 테이블</caption>
<colgroup>
<col style="width: 10%;">
<col style="width: 20%;">
<col style="width: 10%;">
<col style="width: 15%;">
<col style="width: 25%;">
<col style="width: 20%;">
</colgroup>
<thead>
<tr>
<th>No.</th>
<th>아이디</th>
<th>이름</th>
<th>당첨내용</th>
<th>상품명</th>
<th>당첨일시</th>
</thead>
<tbody>
<c:choose>
<c:when test="${ not empty resultMap.resultList && fn:length(resultMap.resultList) > 0 }">
<c:forEach items="${ resultMap.resultList }" var="resultList" varStatus="status">
<tr>
<td>
<span><c:out value="${ resultMap.paginationInfo.totalRecordCount - resultList.rnum + 1 }" /></span>
</td>
<td>
<span class="blue-8" onclick="fn_move_mbr_dtlpage(<c:out value="${ resultList.mbrInnb }" />, '<c:out value="${ resultList.mbrDvCd }" />')">
<c:out value="${ resultList.mbrId }"/>
</span>
</td>
<td>
<span><c:out value="${ resultList.mbrNm }"/></span>
</td>
<td>
<span><c:out value="${ resultList.przwinType }"/></span>
</td>
<td class="left">
<span><c:out value="${ resultList.itmNm }"/></span>
</td>
<td>
<span><c:out value="${ resultList.bnfPrtDt }"/></span>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="100%" ><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</section>
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_list" />
</div>
<%-- 목록 조회 영역 END --%>

View File

@@ -0,0 +1,201 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : LvshopSttusForm.jsp
Description : 라이브쇼핑 참여현황 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-10-14 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
//검색폼 데이트피커 제어
fn_set_dateRange_function("#dateRange","srchStartDt","srchEndDt","srchStartDt");
let pageIndex = '<c:out value="${ resultMap.paramVO.pageIndex }"/>';
let pageUnit = '<c:out value="${ resultMap.paramVO.pageUnit }"/>';
fn_select_list(pageIndex, pageUnit);
$('#listForm').on('keydown', function(e) {
if (e.keyCode == 13) {
e.preventDefault();
$('#searchBtn').trigger("click");
}
});
});
const fn_select_list = function(pageIndex, pageUnit) {
let dataStr;
if(!pageIndex) {
$('#pageIndex').val(1);
} else {
$('#pageIndex').val(pageIndex);
}
if(!pageUnit) {
dataStr = $('#listForm').serialize();
} else {
if($('#pageUnit').length){
$('#pageUnit').val(pageUnit);
dataStr = $('#listForm').serialize();
} else {
dataStr = $('#listForm').serialize()+'&pageUnit='+pageUnit;
}
}
$('#pageIndex').val(pageIndex);
$.ajax({
type: "post",
url : "<c:url value="/mngr/bnft/sttus/selectBnftLvshopSttusInqire"/>",
data : dataStr,
success:function(resultHtml) {
$('#pageDiv').html(resultHtml);
$('#pageUnit').niceSelect();
}
});
}
const fn_move_dtl_uptpage = function(bnfInnb) {
return;
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">참여현황</h2>
</div>
<form id="listForm" name="listForm" method="post" action="<c:url value="/mngr/bnft/sttus/selectBnftLvshopSttusForm"/>">
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value="${ resultMap.paramVO.pageIndex }"/>"/>
<input type="hidden" id="recordCountPerPage" name="recordCountPerPage" value="<c:out value="${ resultMap.paramVO.recordCountPerPage }"/>"/>
<input type="hidden" id="bnfInnb" name="bnfInnb" value=""/>
<section id="search-section" class="content-section">
<div class="table-wrapper vertical">
<table class="table">
<caption>검색 옵션</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th>기간</th>
<td>
<div class="td-inner">
<div class="input-container">
<input type="text" name="srchStartDt" id="srchStartDt" class="datepicker" title="시작 날짜 선택" value="${ resultMap.paramVO.srchStartDt }" autocomplete="off">
<span class="tilde">~</span>
<input type="text" name="srchEndDt" id="srchEndDt" class="datepicker" title="종료 날짜 선택" value="${ resultMap.paramVO.srchEndDt }" autocomplete="off">
</div>
<div class="dateRange-btnContainer" id="dateRange">
<button class="dateRange-btn">어제</button>
<button class="dateRange-btn">오늘</button>
<button class="dateRange-btn">3일간</button>
<button class="dateRange-btn">일주일</button>
<button class="dateRange-btn">1개월</button>
<button class="dateRange-btn">3개월</button>
<button class="dateRange-btn">6개월</button>
<button class="dateRange-btn">1년</button>
<button class="dateRange-btn selected">전체</button>
</div>
</div>
</td>
</tr>
<tr>
<th>상태</th>
<td>
<div class="td-inner">
<div class="custom-radio-container">
<div class="custom-radio">
<input type="radio" id="srchSttDvA" name="srchSttDv" value="" ${ f:setChecked(resultMap.paramVO.srchSttDv,"") }>
<label for="srchSttDvA">전체</label>
</div>
<div class="custom-radio">
<input type="radio" id="srchSttDvI" name="srchSttDv" value="ING" ${ f:setChecked(resultMap.paramVO.srchSttDv,"ING") }>
<label for="srchSttDvI">라이브중</label>
</div>
<div class="custom-radio">
<input type="radio" id="srchSttDvP" name="srchSttDv" value="PRE" ${ f:setChecked(resultMap.paramVO.srchSttDv,"PRE") }>
<label for="srchSttDvP">예정</label>
</div>
<div class="custom-radio">
<input type="radio" id="srchSttDvN" name="srchSttDv" value="END" ${ f:setChecked(resultMap.paramVO.srchSttDv,"END") }>
<label for="srchSttDvN">종료</label>
</div>
</div>
</div>
</td>
</tr>
<tr>
<th>검색어</th>
<td>
<div class="td-inner">
<div class="select-box">
<select name="srchDv" id="srchDv" title="검색">
<option value="cnSj" ${ f:setSelected(resultMap.paramVO.srchDv,"cnSj") }>방송명</option>
</select>
</div>
<input class="input-text xl" type="text" name="srchKeyword" id="srchKeyword" title="" value="${ resultMap.paramVO.srchKeyword }" placeholder="">
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="form-control-container">
<div class="left"></div>
<div class="center">
<button class="btn outline" id="resetBtn" type="button" onclick="fn_reset_form('search-section');">초기화</button>
<button class="btn primary" id="searchBtn" type="button" onkeypress="this.onclick();" onclick="fn_select_list(1); return false;">검색</button>
</div>
<div class="right">
<!-- <button class="btn outline search-detail">상세검색</button> -->
</div>
</div>
</section>
<%-- 목록 영역 --%>
<div id="pageDiv">
</div>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
</body>
</html>

View File

@@ -0,0 +1,118 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%--
Class Name : LvshopSttusList.jsp
Description : 라이브쇼핑 참여현황 목록
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2025-06-18 이훈영 최초 생성
--%>
<%-- 목록 조회 영역 START --%>
<section id="section02" class="content-section">
<div class="form-control-container">
<div class="left">
<div class="search-number">
<span class="search-number__text">총 <strong><c:out value="${ resultMap.paginationInfo.totalRecordCount }"/></strong>건</span>
</div>
</div>
<div class="center">
</div>
<div class="right">
<div class="select-box">
<select id="pageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_list('1');">
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paginationInfo.recordCountPerPage eq pageUnit}">selected="selected"</c:if>><c:out value="${ pageUnit }"/>개씩</option>
</c:forEach>
</select>
</div>
</div>
</div>
<div class="table-wrapper mt-10">
<table class="table vertical">
<caption>테이블</caption>
<colgroup>
<col style="width: 7%;">
<col style="width: 30%;">
<col style="width: 20%;">
<col style="width: 11%;">
<col style="width: 11%;">
<col style="width: 11%;">
<col style="width: 10%;">
</colgroup>
<thead>
<tr>
<th>No.</th>
<th>방송명</th>
<th>방송일시</th>
<th>상태</th>
<th>참여인원</th>
<th>지급 마일리지</th>
<th>알림 발송수</th>
</tr>
</thead>
<tbody>
<c:choose>
<c:when test="${ not empty resultMap.resultList && fn:length(resultMap.resultList) > 0 }">
<c:forEach items="${ resultMap.resultList }" var="resultList" varStatus="status">
<tr>
<td>
<span><c:out value="${ resultMap.paginationInfo.totalRecordCount - resultList.rnum + 1 }" /></span>
</td>
<td class="left">
<span class="blue-8" onclick="fn_move_dtl_uptpage(<c:out value="${ resultList.bnfInnb }" />, <c:out value="${resultMap.paramVO.pageIndex}" />, <c:out value="${resultMap.paramVO.recordCountPerPage}" />, <c:out value="${resultMap.paramVO.pageUnit}" />)">
<c:out value="${ resultList.bnfSj }"/>
</span>
</td>
<td>
<span>
<c:out value="${ resultList.cnBgnDt }"/> ~ <c:out value="${ resultList.cnEndDt }"/>
</span>
</td>
<td>
<c:choose>
<c:when test="${resultList.bnfCnSttus eq '예정'}">
<span class="orange-5"><c:out value="${ resultList.bnfCnSttus }"/></span>
</c:when>
<c:when test="${resultList.bnfCnSttus eq '라이브중'}">
<span class="blue-8"><c:out value="${ resultList.bnfCnSttus }"/></span>
</c:when>
<c:otherwise>
<span><c:out value="${ resultList.bnfCnSttus }"/></span>
</c:otherwise>
</c:choose>
</td>
<td>
<span><c:out value="${ resultList.prtCnt }"/></span>
</td>
<td>
<span><c:out value="${ resultList.mlgAmt }"/></span>
</td>
<td>
<span><c:out value="${ resultList.sndngCnt }"/></span>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="100%" ><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</section>
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_list" />
</div>
<%-- 목록 조회 영역 END --%>

View File

@@ -0,0 +1,258 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : OxquizSttusDtlsForm.jsp
Description : OX퀴즈 참여현황 상세 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-10-14 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
});
/**
* 목록 이동
*/
function fn_select_list() {
$('#listForm').attr('action', '<c:url value="/mngr/bnft/sttus/selectBnftOxquizSttusForm"/>');
$('#listForm').attr('method', 'post');
$('#listForm').submit();
};
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">참여현황 상세</h2>
<div class="page-title__btn-container">
<a href="#" class="btn outline" onclick="fn_select_list('1'); return false;"><spring:message code="button.list"/></a>
</div>
</div>
<form id="sttusForm" name="sttusForm" class="common-form" method="post" action="">
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<section id="section01" class="content-section">
<div class="table-wrapper vertical">
<table class="table">
<caption>내용</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 38%;">
<col style="width: 12%;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th>제목</th>
<td colspan="3">
<div class="td_inner">
<span class="blue-8">${ resultMap.resultData.bnfSj }</span>
<!--<a href="" class="btn xsm outline primary ml-10"> 상세보기</a>-->
</div>
</td>
</tr>
<tr>
<th>기간</th>
<td>${ resultMap.resultData.bnfBgnDt } ~ ${ resultMap.resultData.bnfEndDt } (${ resultMap.resultData.bnfSttus })</td>
<th>전체 문항 수</th>
<td>${ resultMap.resultData.quizCnt } 개</td>
</tr>
<tr>
<th>순 참여인원</th>
<td><fmt:formatNumber value="${ resultMap.resultData.prtCnt }" pattern="#,###"/> 명</td>
<th>누적 참여인원</th>
<td><fmt:formatNumber value="${ resultMap.resultData.totPrtCnt }" pattern="#,###"/> 명</td>
</tr>
<tr>
<th>전체 문항 참여</th>
<td>
<c:set var="quizPrtCnt" value="${resultMap.resultData.quizPrtCnt}" />
<c:set var="prtCnt" value="${resultMap.resultData.prtCnt}" />
<c:choose>
<c:when test="${prtCnt != 0}">
<c:set var="quizPrtRate" value="${(quizPrtCnt * 100.0) / prtCnt}" />
</c:when>
<c:otherwise>
<c:set var="quizPrtRate" value="0" />
</c:otherwise>
</c:choose>
<fmt:formatNumber value="${ resultMap.resultData.quizPrtCnt }" pattern="#,###"/> 명
(순 참여인원 중 <fmt:formatNumber value="${quizPrtRate}" pattern="#.##"/>%)
</td>
<th>100% 정답</th>
<td>
<c:set var="fullScoreCnt" value="${resultMap.resultData.fullScoreCnt}" />
<c:set var="quizPrtCnt" value="${resultMap.resultData.quizPrtCnt}" />
<c:choose>
<c:when test="${quizPrtCnt != 0}">
<c:set var="cnsrRate" value="${(fullScoreCnt * 100.0) / quizPrtCnt}" />
</c:when>
<c:otherwise>
<c:set var="cnsrRate" value="0" />
</c:otherwise>
</c:choose>
<fmt:formatNumber value="${ resultMap.resultData.fullScoreCnt }" pattern="#,###"/> 명
(전체 문항 참여인원 중 <fmt:formatNumber value="${cnsrRate}" pattern="#.##"/>%)
</td>
</tr>
</tbody>
</table>
</div>
</section>
<section id="section02" class="content-section">
<div class="form-control-container">
<div class="left">
<h3 class="content-section__title">문항별 내역</h3>
</div>
<div class="center">
</div>
<div class="right">
</div>
</div>
<div class="table-wrapper mt-10">
<table class="table vertical tf-bg">
<caption>테이블</caption>
<colgroup>
<col style="width: 8%;">
<col style="width: 40%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 12%;">
<col style="width: 20%;">
</colgroup>
<thead>
<tr>
<th>NO.</th>
<th>문제</th>
<th>참여인원</th>
<th>정답자 수</th>
<th>정답률</th>
<th>지급 마일리지</th>
</tr>
</thead>
<tbody>
<c:set var="sumPrtCnt" value="0" />
<c:set var="sumCnsrCnt" value="0" />
<c:set var="sumTotMlgSum" value="0" />
<c:set var="sumCnsrMlgSum" value="0" />
<c:choose>
<c:when test="${ not empty resultMap.resultQuizList && fn:length(resultMap.resultQuizList) > 0 }">
<c:forEach items="${ resultMap.resultQuizList }" var="resultList" varStatus="status">
<tr>
<td><span>${status.count}</span></td>
<td class="left">${resultList.quizCn}</td>
<td class="right">
<span><fmt:formatNumber value="${ resultList.prtCnt }" pattern="#,###"/> 명</span>
</td>
<td class="right">
<span><fmt:formatNumber value="${ resultList.cnsrCnt }" pattern="#,###"/> 명</span>
</td>
<td class="right">
<span><fmt:formatNumber value="${ resultList.cnsrRate }" pattern="#,###"/> %</span>
</td>
<td class="right">
<span><fmt:formatNumber value="${ resultList.totMlgSum }" pattern="#,###"/> 원</span>
</td>
</tr>
<c:set var="sumPrtCnt" value="${sumPrtCnt + resultList.prtCnt}" />
<c:set var="sumCnsrCnt" value="${sumCnsrCnt + resultList.cnsrCnt}" />
<c:set var="sumTotMlgSum" value="${sumTotMlgSum + resultList.totMlgSum}" />
<c:set var="sumCnsrMlgSum" value="${sumCnsrMlgSum + resultList.cnsrMlgSum}" />
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="100%" ><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
<tfoot>
<tr>
<th colspan="2">
<span>합계</span>
</th>
<td class="right">
<span><fmt:formatNumber value="${ sumPrtCnt }" pattern="#,###"/> 명</span>
</td>
<td class="right">
<span><fmt:formatNumber value="${ sumCnsrCnt }" pattern="#,###"/> 명</span>
</td>
<td class="right">
<c:choose>
<c:when test="${sumPrtCnt != 0}">
<c:set var="sumCnsrRate" value="${(sumCnsrCnt * 100.0) / sumPrtCnt}" />
</c:when>
<c:otherwise>
<c:set var="sumCnsrRate" value="0" />
</c:otherwise>
</c:choose>
<span><fmt:formatNumber value="${sumCnsrRate}" pattern="#.##"/> %</span>
</td>
<td class="right">
<p><fmt:formatNumber value="${ sumTotMlgSum }" pattern="#,###"/> 원</p>
<p>(100% 정답자 보상 <fmt:formatNumber value="${ sumCnsrMlgSum }" pattern="#,###"/> 원 포함)</p>
</td>
</tr>
</tfoot>
</table>
</div>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
<form id="listForm" name="listForm">
<input type="hidden" id="bnfInnb" name ="bnfInnb"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="srchPdDv" name="srchPdDv" value="${ resultMap.paramVO.srchPdDv }">
<input type="hidden" id="srchStartDt" name="srchStartDt" value="${ resultMap.paramVO.srchStartDt }">
<input type="hidden" id="srchEndDt" name="srchEndDt" value="${ resultMap.paramVO.srchEndDt }">
<input type="hidden" id="srchSttDv" name="srchSttDv" value="${ resultMap.paramVO.srchSttDv }"/>
<input type="hidden" id="srchUseAt" name="srchUseAt" value="${ resultMap.paramVO.srchUseAt }"/>
<input type="hidden" id="srchDv" name="srchDv" value="${ resultMap.paramVO.srchDv }"/>
<input type="hidden" id="srchKeyword" name="srchKeyword" value="${ resultMap.paramVO.srchKeyword }"/>
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultMap.paramVO.pageIndex }"/>
<input type="hidden" id="recordCountPerPage" name="recordCountPerPage" value="${ resultMap.paramVO.recordCountPerPage }"/>
<input type="hidden" id="pageUnit" name="pageUnit" value="${ resultMap.paramVO.pageUnit }"/>
</form>
</body>
</html>

View File

@@ -0,0 +1,180 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : OxquizSttusForm.jsp
Description : OX퀴즈 참여현황 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-10-14 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
//검색폼 데이트피커 제어
fn_set_dateRange_function("#dateRange","srchStartDt","srchEndDt","srchStartDt");
let pageIndex = '<c:out value="${ resultMap.paramVO.pageIndex }"/>';
let pageUnit = '<c:out value="${ resultMap.paramVO.pageUnit }"/>';
fn_select_list(pageIndex, pageUnit);
$('#listForm').on('keydown', function(e) {
if (e.keyCode == 13) {
e.preventDefault();
$('#searchBtn').trigger("click");
}
});
});
const fn_select_list = function(pageIndex, pageUnit) {
let dataStr;
if(!pageIndex) {
$('#pageIndex').val(1);
} else {
$('#pageIndex').val(pageIndex);
}
if(!pageUnit) {
dataStr = $('#listForm').serialize();
} else {
if($('#pageUnit').length){
$('#pageUnit').val(pageUnit);
dataStr = $('#listForm').serialize();
} else {
dataStr = $('#listForm').serialize()+'&pageUnit='+pageUnit;
}
}
$('#pageIndex').val(pageIndex);
$.ajax({
type: "post",
url : "<c:url value="/mngr/bnft/sttus/selectBnftOxquizSttusInqire"/>",
data : dataStr,
success:function(resultHtml) {
$('#pageDiv').html(resultHtml);
$('#pageUnit').niceSelect();
}
});
}
const fn_move_dtlpage = function(bnfInnb) {
$('#listForm').attr('action', '<c:url value="/mngr/bnft/sttus/selectBnftOxquizSttusDtlsForm"/>');
$('#listForm').attr('method', 'post');
$('#bnfInnb').val(bnfInnb);
$('#listForm').submit();
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">참여현황</h2>
</div>
<form id="listForm" name="listForm" method="post" action="<c:url value="/mngr/bnft/sttus/selectBnftIntakchlSttusForm"/>">
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="bnfInnb" name="bnfInnb" value=""/>
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value="${ resultMap.paramVO.pageIndex }"/>"/>
<input type="hidden" id="recordCountPerPage" name="recordCountPerPage" value="<c:out value="${ resultMap.paramVO.recordCountPerPage }"/>"/>
<section class="content-section" id="search-section">
<div class="table-wrapper vertical">
<table class="table">
<caption>검색 옵션</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr class="search-hide">
<th>기간</th>
<td>
<div class="td-inner">
<div class="input-container">
<input type="text" name="srchStartDt" id="srchStartDt" class="datepicker" title="시작 날짜 선택" value="${ resultMap.paramVO.srchStartDt }" autocomplete="off">
<span class="tilde">~</span>
<input type="text" name="srchEndDt" id="srchEndDt" class="datepicker" title="종료 날짜 선택" value="${ resultMap.paramVO.srchEndDt }" autocomplete="off">
</div>
<div class="dateRange-btnContainer" id="dateRange">
<button class="dateRange-btn">어제</button>
<button class="dateRange-btn">오늘</button>
<button class="dateRange-btn">3일간</button>
<button class="dateRange-btn">일주일</button>
<button class="dateRange-btn">1개월</button>
<button class="dateRange-btn">3개월</button>
<button class="dateRange-btn">6개월</button>
<button class="dateRange-btn">1년</button>
<button class="dateRange-btn selected">전체</button>
</div>
</div>
</td>
</tr>
<tr>
<th>검색어</th>
<td>
<div class="td-inner">
<div class="select-box">
<select name="srchDv" id="srchDv">
<option value="bnfSj" ${ f:setSelected(resultMap.paramVO.srchDv,"bnfSj") }>제목</option>
</select>
</div>
<input class="input-text xl" type="text" id="srchKeyword" name="srchKeyword" value="${ resultMap.paramVO.srchKeyword }">
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="form-control-container">
<div class="left"></div>
<div class="center">
<button class="btn outline" id="resetBtn" type="button" onclick="fn_reset_form('search-section');">초기화</button>
<button class="btn primary" id="searchBtn" type="button" onkeypress="this.onclick();" onclick="fn_select_list(1); return false;">검색</button>
</div>
<div class="right">
<!-- <button class="btn outline search-detail">상세검색</button> -->
</div>
</div>
</section>
<%-- 목록 영역 --%>
<div id="pageDiv">
</div>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
</body>
</html>

View File

@@ -0,0 +1,117 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%--
Class Name : OxquizSttusList.jsp
Description : OX퀴즈 참여현황 목록조회 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2025-05-13 이훈영 최초 생성
--%>
<%-- 목록 조회 영역 START --%>
<section id="section02" class="content-section">
<div class="form-control-container">
<div class="left">
<div class="search-number">
<span class="search-number__text">총 <strong><c:out value="${ resultMap.paginationInfo.totalRecordCount }"/></strong>건</span>
</div>
</div>
<div class="center">
</div>
<div class="right">
<div class="select-box">
<select id="pageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_list('1');">
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paginationInfo.recordCountPerPage eq pageUnit}">selected="selected"</c:if>><c:out value="${ pageUnit }"/>개씩</option>
</c:forEach>
</select>
</div>
</div>
</div>
<div class="table-wrapper mt-10">
<table class="table vertical">
<caption>테이블</caption>
<colgroup>
<col style="width: 10%;">
<col style="width: 20%;">
<col style="width: 20%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 10%;">
</colgroup>
<thead>
<tr>
<th>No.</th>
<th>이벤트명</th>
<th>기간</th>
<th>상태</th>
<th>문항수</th>
<th>순 참여인원</th>
<th>전체 문항 참여</th>
<th>100% 정답</th>
</tr>
</thead>
<tbody>
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
<c:choose>
<c:when test="${ not empty resultMap.resultList && fn:length(resultMap.resultList) > 0 }">
<c:forEach items="${ resultMap.resultList }" var="resultList" varStatus="status">
<tr>
<td>
<span><c:out value="${ resultMap.paginationInfo.totalRecordCount - resultList.rnum + 1 }" /></span>
</td>
<td class="left">
<a href="#" class="under-line blue-8">
<span class="under-line" onclick="fn_move_dtlpage('<c:out value="${ resultList.bnfInnb }" />')">
<c:out value="${ resultList.bnfSj }"/>
</span>
</a>
</td>
<td>
<span>
<c:out value="${ resultList.bnfBgnDt }"/> ~
<c:out value="${ resultList.bnfEndDt }"/>
</span>
</td>
<td>
<span><c:out value="${ resultList.bnfSttus }"/></span>
</td>
<td>
<span><fmt:formatNumber value="${resultList.quizCnt}" pattern="#,###"/>개</span>
</td>
<td>
<span><fmt:formatNumber value="${resultList.prtCnt}" pattern="#,###"/>명</span>
</td>
<td>
<span><fmt:formatNumber value="${resultList.quizPrtCnt}" pattern="#,###"/>명</span>
</td>
<td>
<span><fmt:formatNumber value="${resultList.fullScoreCnt}" pattern="#,###"/>원</span>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="100%" ><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</section>
<div class="pagination__container">
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_list" />
</div>
<%-- 목록 조회 영역 END --%>

View File

@@ -0,0 +1,181 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : PurstmpPdSttusDtlsForm.jsp
Description : 모바일스탬프 기간별내역 상세 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-10-14 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
});
const fn_select_store = function(sel) {
const selected = $(sel).val();
const $hidden = $('#srchStrInnb');
const $form = $('#sttusForm');
$hidden.val(selected);
$form.attr('action', '/mngr/bnft/sttus/selectBnftPurstmpPdSttusDtlsForm');
$form.submit();
};
/**
* 목록 이동
*/
function fn_select_list() {
const $hidden = $('#srchStrInnb');
$hidden.val('');
const $form = $('#sttusForm');
$form.attr('action', '/mngr/bnft/sttus/selectBnftPurstmpPdSttusForm');
$form.submit();
};
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">기간별 내역 상세</h2>
<div class="page-title__btn-container">
<a href="#" class="btn outline" onclick="fn_select_list(); return false;"><spring:message code="button.list"/></a>
</div>
</div>
<form id="sttusForm" name="sttusForm" class="common-form" method="post" action="">
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<input type="hidden" id="srchYear" name="srchYear" value="<c:out value="${ resultMap.paramVO.srchYear }"/>"/>
<input type="hidden" id="srchMonth" name="srchMonth" value="<c:out value="${ resultMap.paramVO.srchMonth }"/>"/>
<input type="hidden" id="srchSttYear" name="srchSttYear" value="${ resultMap.paramVO.srchSttYear }">
<input type="hidden" id="srchSttMonth" name="srchSttMonth" value="${ resultMap.paramVO.srchSttMonth }">
<input type="hidden" id="srchEndYear" name="srchEndYear" value="${ resultMap.paramVO.srchEndYear }">
<input type="hidden" id="srchEndMonth" name="srchEndMonth" value="${ resultMap.paramVO.srchEndMonth }"/>
<input type="hidden" id="srchStrInnb" name="srchStrInnb" value="${ resultMap.paramVO.srchStrInnb }"/>
<section id="section01" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<div class="left">
<div class="select-box">
<select id="strInnb" onchange="fn_select_store(this); return false;">
<option value="">매장전체</option>
<c:forEach var="storeList" items="${ resultMap.storeList }" varStatus="status">
<option value="<c:out value="${ storeList.strInnb }"/>"
<c:if test="${ resultMap.paramVO.srchStrInnb eq storeList.strInnb}"> selected="selected"</c:if>>
<c:out value="${ storeList.tentcpnNm }"/>
</option>
</c:forEach>
</select>
</div>
</div>
<div class="center">
</div>
<div class="right">
<!--<a href="#" class="btn outline sm"><i class="icon icon_excel"></i> 다운로드</a>-->
</div>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table vertical tf-bg">
<caption>테이블</caption>
<colgroup>
<col style="width: auto;">
<col style="width: 28%;">
<col style="width: 28%;">
<col style="width: 28%;">
</colgroup>
<thead>
<tr>
<th>날짜</th>
<th>스탬프 발급수</th>
<th>적립카드 발급수</th>
<th>교환권(쿠폰) 지급수</th>
</tr>
</thead>
<tbody>
<c:set var="sumDayStmpCnt" value="0" />
<c:set var="sumDayExtkCnt" value="0" />
<c:set var="sumDayExchgCnt" value="0" />
<c:choose>
<c:when test="${ not empty resultMap.sttusList && fn:length(resultMap.sttusList) > 0 }">
<c:forEach items="${ resultMap.sttusList }" var="sttusList" varStatus="status">
<tr>
<td><span class="blue-8">${sttusList.ymd}</span></td>
<td class="right">
<span><fmt:formatNumber value="${ sttusList.dayStmpCnt }" pattern="#,###"/> 건</span>
</td>
<td class="right">
<span><fmt:formatNumber value="${ sttusList.dayExtkCnt }" pattern="#,###"/> 건</span>
</td>
<td class="right">
<span><fmt:formatNumber value="${ sttusList.dayExchgCnt }" pattern="#,###"/> 건</span>
</td>
</tr>
<c:set var="sumDayStmpCnt" value="${sumDayStmpCnt + sttusList.dayStmpCnt}" />
<c:set var="sumDayExtkCnt" value="${sumDayExtkCnt + sttusList.dayExtkCnt}" />
<c:set var="sumDayExchgCnt" value="${sumDayExchgCnt + sttusList.dayExchgCnt}" />
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="100%" ><spring:message code="common.nodata"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
<tfoot>
<tr>
<td>합계</td>
<td class="right">
<span><fmt:formatNumber value="${ sumDayStmpCnt }" pattern="#,###"/> 건</span>
</td>
<td class="right">
<span><fmt:formatNumber value="${ sumDayExtkCnt }" pattern="#,###"/> 건</span>
</td>
<td class="right">
<span><fmt:formatNumber value="${ sumDayExchgCnt }" pattern="#,###"/> 건</span>
</td>
</tr>
</tfoot>
</table>
</div>
</div>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
</body>
</html>

View File

@@ -0,0 +1,259 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : PurstmpPdSttusForm.jsp
Description : 모바일스탬프 기간별내역 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-10-14 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
// 시작 검색년월 설정
var currYear = new Date().getFullYear();
var currMonth = new Date().getMonth() + 1;
for (var year = 2025; year <= currYear; year++) {
$('#srchSttYear').append('<option value="' + year + '">' + year + '년</option>');
}
for (var month = 1; month <= 12; month++) {
var monthText = String(month).padStart(2, '0');
$('#srchSttMonth').append('<option value="' + monthText + '">' + month + '월</option>');
}
$('#srchSttYear').val(currYear);
$('#srchSttMonth').val('01');
if ('<c:out value="${ resultMap.paramVO.srchSttYear }"/>' !== '') {
$('#srchSttYear').val('<c:out value="${ resultMap.paramVO.srchSttYear }"/>');
$('#srchSttMonth').val('<c:out value="${ resultMap.paramVO.srchSttMonth }"/>');
}
$('#srchSttYear').niceSelect('update');
$('#srchSttMonth').niceSelect('update');
// 종료 검색년월 설정
for (var year = 2025; year <= currYear; year++) {
$('#srchEndYear').append('<option value="' + year + '">' + year + '년</option>');
}
for (var month = 1; month <= 12; month++) {
var monthText = String(month).padStart(2, '0');
$('#srchEndMonth').append('<option value="' + monthText + '">' + month + '월</option>');
}
$('#srchEndYear').val(currYear);
$('#srchEndMonth').val(String(currMonth).padStart(2, '0'));
if ('<c:out value="${ resultMap.paramVO.srchEndYear }"/>' !== '') {
$('#srchEndYear').val('<c:out value="${ resultMap.paramVO.srchEndYear }"/>');
$('#srchEndMonth').val('<c:out value="${ resultMap.paramVO.srchEndMonth }"/>');
}
$('#srchEndYear').niceSelect('update');
$('#srchEndMonth').niceSelect('update');
fn_select_sttus();
});
const fn_select_sttus = function() {
const url = '<c:url value="/mngr/bnft/sttus/selectBnftPurstmpPdSttusInqire"/>';
$.ajax({
type: 'post',
url: url,
data : {
'bnfDvCd' : $('#bnfDvCd').val(),
'srchSttYear' : $('#srchSttYear').val(),
'srchSttMonth' : $('#srchSttMonth').val(),
'srchEndYear' : $('#srchEndYear').val(),
'srchEndMonth' : $('#srchEndMonth').val()
},
success: function (result) {
const data = JSON.parse(result.resBody.result);
const sttusList = data.sttusList;
$('#tblList tbody').empty();
if (sttusList !== null) {
for (var i = 0; i < sttusList.length; i++) {
var sttusData = sttusList[i];
var monthStmpCnt = Number(sttusData.monthStmpCnt).toLocaleString();
var monthExtkCnt = Number(sttusData.monthExtkCnt).toLocaleString();
var monthExchgCnt = Number(sttusData.monthExchgCnt).toLocaleString();
var link = $('<a></a>')
.attr('href', '#')
.addClass('under-line blue-8')
.text(sttusData.yyyyMm)
.on('click', function(e) {
e.preventDefault();
fn_move_dtlpage($(this).text());
});
var newRow = $('<tr></tr>');
var th = $('<td></td>').append(link);
var td1 = $('<td></td>').append($('<span></span>').text(monthStmpCnt));
var td2 = $('<td></td>').append($('<span></span>').text(monthExtkCnt));
var td3 = $('<td></td>').append($('<span></span>').text(monthExchgCnt));
// tr에 th와 td를 추가
newRow.append(th).append(td1).append(td2).append(td3);
$('#tblList tbody').append(newRow);
}
}
}
});
}
const fn_move_dtlpage = function(yyyyMm) {
const srchYear = yyyyMm.split('-')[0];
const srchMonth = yyyyMm.split('-')[1];
$('#sttusForm').attr('action', '<c:url value="/mngr/bnft/sttus/selectBnftPurstmpPdSttusDtlsForm"/>');
$('#sttusForm').attr('method', 'post');
$('#srchYear').val(srchYear);
$('#srchMonth').val(srchMonth);
$('#sttusForm').submit();
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">기간별 내역</h2>
</div>
<form id="sttusForm" name="sttusForm" class="common-form" method="post" action="">
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<input type="hidden" id="bnfDvCd" name="bnfDvCd" value="<c:out value="${ resultMap.paramVO.bnfDvCd }"/>"/>
<input type="hidden" id="srchYear" name="srchYear" value=""/>
<input type="hidden" id="srchMonth" name="srchMonth" value=""/>
<section id="section01" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">요약</h3>
</div>
<div class="content-fold__content">
<div class="count-wrapper">
<div class="count_box">
<a href="#">
<p class="cnt_top">오늘 스탬프 발급수</p>
<p class="cnt_bm"><fmt:formatNumber value="${ resultMap.stmpSumry.todayStmpCnt }" pattern="#,###" /> 건</p>
</a>
</div>
<div class="count_box">
<a href="#">
<p class="cnt_top">오늘 적립카드 발급수</p>
<p class="cnt_bm"><fmt:formatNumber value="${ resultMap.extkSumry.todayExtkCnt }" pattern="#,###" /> 건</p>
</a>
</div>
<div class="count_box">
<a href="#">
<p class="cnt_top">오늘 교환권(쿠폰) 지급수</p>
<p class="cnt_bm"><fmt:formatNumber value="${ resultMap.extkSumry.todayExchgCnt }" pattern="#,###" /> 건</p>
</a>
</div>
<div class="count_box last">
<a href="#">
<p class="cnt_top">총 스탬프 발급수</p>
<p class="cnt_bm"><fmt:formatNumber value="${ resultMap.stmpSumry.totStmpCnt }" pattern="#,###" /> 건</p>
</a>
</div>
<div class="count_box last">
<a href="#">
<p class="cnt_top">총 적립카드 발급수</p>
<p class="cnt_bm"><fmt:formatNumber value="${ resultMap.extkSumry.totExtkCnt }" pattern="#,###" /> 건</p>
</a>
</div>
<div class="count_box last">
<a href="#">
<p class="cnt_top">총 교환권(쿠폰) 지급수</p>
<p class="cnt_bm"><fmt:formatNumber value="${ resultMap.extkSumry.totExchgCnt }" pattern="#,###" /> 건</p>
</a>
</div>
</div>
</div>
</section>
<section id="section02" class="content-section">
<div class="form-control-container">
<div class="left">
<h3 class="content-section__title">월별내역</h3>
</div>
<div class="center">
<div class="select-box">
<select name="srchSttYear" id="srchSttYear">
</select>
</div>
<div class="select-box">
<select name="srchSttMonth" id="srchSttMonth">
</select>
</div>
~
<div class="select-box">
<select name="srchEndYear" id="srchEndYear">
</select>
</div>
<div class="select-box">
<select name="srchEndMonth" id="srchEndMonth">
</select>
</div>
<a href="#" class="btn xsm gray" onclick="fn_select_sttus();">조회</a>
</div>
<div class="right">
<!--<a href="#" class="btn outline sm"><i class="icon icon_excel"></i> 다운로드</a>-->
</div>
</div>
<div class="table-wrapper mt-10">
<table class="table vertical tf-bg" id="tblList">
<caption>테이블</caption>
<colgroup>
<col style="width: auto;">
<col style="width: 28%;">
<col style="width: 28%;">
<col style="width: 28%;">
</colgroup>
<thead>
<tr>
<th>년월</th>
<th>스탬프 발급수</th>
<th>적립카드 발급수</th>
<th>교환권(쿠폰) 지급수</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
</body>
</html>

View File

@@ -0,0 +1,173 @@
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : PurstmpStrSttusForm.jsp
Description : 모바일스탬프 매장별현황 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-10-14 이훈영 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GC ONE 관리자</title>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
<link rel="stylesheet" href="/mngr/css/bnft/style.css">
<script src="<c:url value='/mngr/js/bnft/script.js'/>" defer></script>
<script>
$( document ).ready(function() {
fn_select_sttus();
});
const fn_select_sttus = function() {
const url = '<c:url value="/mngr/bnft/sttus/selectBnftPurstmpStrSttusInqire"/>';
$.ajax({
type: 'post',
url: url,
data : {
'srchOrder' : $('#srchOrder').val()
},
success: function (result) {
const data = JSON.parse(result.resBody.result);
const sttusList = data.sttusList;
$('#tblList tbody').empty();
$('#tblList tfoot').empty();
if (sttusList !== null) {
var sumStmpCnt = 0;
var sumExtkCnt = 0;
var sumExchgCnt = 0;
for (var i = 0; i < sttusList.length; i++) {
var sttusData = sttusList[i];
sumStmpCnt = sumStmpCnt + sttusData.totStmpCnt;
sumExtkCnt = sumExtkCnt + sttusData.totExtkCnt;
sumExchgCnt = sumExchgCnt + sttusData.totExchgCnt;
var tentcpnNm = sttusData.tentcpnNm
var totStmpCnt = Number(sttusData.totStmpCnt).toLocaleString() + ' 건';
var totExtkCnt = Number(sttusData.totExtkCnt).toLocaleString() + ' 건';
var totExchgCnt = Number(sttusData.totExchgCnt).toLocaleString() + ' 건';
var newRow = $('<tr></tr>');
var th = $('<td></td>').append($('<span></span>').text(tentcpnNm));
var td1 = $('<td></td>').append($('<span></span>').text(totStmpCnt));
var td2 = $('<td></td>').append($('<span></span>').text(totExtkCnt));
var td3 = $('<td></td>').append($('<span></span>').text(totExchgCnt));
// tr에 th와 td를 추가
newRow.append(th).append(td1).append(td2).append(td3);
$('#tblList tbody').append(newRow);
}
var sumRow = $('<tr></tr>');
var th = $('<td></td>').append($('<span></span>').text('합계'));
var td1 = $('<td></td>').append($('<span></span>').text(sumStmpCnt.toLocaleString() + ' 건'));
var td2 = $('<td></td>').append($('<span></span>').text(sumExtkCnt.toLocaleString() + ' 건'));
var td3 = $('<td></td>').append($('<span></span>').text(sumExchgCnt.toLocaleString() + ' 건'));
sumRow.append(th).append(td1).append(td2).append(td3);
$('#tblList tfoot').append(sumRow);
}
}
});
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">매장별 현황</h2>
</div>
<form id="sttusForm" name="sttusForm" class="common-form" method="post" action="">
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.paramVO.sopmalCd }"/>"/>
<section id="section01" class="content-section content-scroll-detect content-fold">
<div class="content-fold__header">
<div class="left">
<div class="select-box">
<select id="srchOrder" name="srchOrder" onchange="fn_select_sttus();return false;">
<option value="TENTCPN_NM">매장명순</option>
<option value="TOT_STMP_CNT">스탬프 발급수</option>
<option value="TOT_EXTK_CNT">적립카드 발급수</option>
<option value="TOT_EXCHG_CNT">교환권(쿠폰) 지급수</option>
</select>
</div>
</div>
<div class="center">
</div>
<div class="right">
<!--<a href="#purchase-limit" class="btn outline sm"><i class="icon icon_excel"></i> 다운로드</a>-->
</div>
</div>
<div class="content-fold__content">
<div class="table-wrapper">
<table class="table vertical tf-bg" id="tblList">
<caption>테이블</caption>
<colgroup>
<col style="width: 20%;">
<col style="width: 20%;">
<col style="width: 20%;">
<col style="width: 20%;">
</colgroup>
<thead>
<tr>
<th>매장명</th>
<th>스탬프 발급수</th>
<th>적립카드 발급수</th>
<th>교환권(쿠폰) 지급수</th>
</tr>
</thead>
<tbody>
</tbody>
<tfoot>
<tr>
<td>합계</td>
<td class="right">
<span>100,000 건</span>
</td>
<td class="right">
<span>100,000 건</span>
</td>
<td class="right">
<span>100,000 건</span>
</td>
</tr>
</tfoot>
</table>
</div>
</div>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show More