초기소스
This commit is contained in:
172
src/main/webapp/WEB-INF/views/mngr/analytics/ErpGoods.jsp
Normal file
172
src/main/webapp/WEB-INF/views/mngr/analytics/ErpGoods.jsp
Normal 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>
|
||||
<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>
|
||||
200
src/main/webapp/WEB-INF/views/mngr/analytics/ErpGoodsR.jsp
Normal file
200
src/main/webapp/WEB-INF/views/mngr/analytics/ErpGoodsR.jsp
Normal 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>
|
||||
183
src/main/webapp/WEB-INF/views/mngr/analytics/ErpSetGoods.jsp
Normal file
183
src/main/webapp/WEB-INF/views/mngr/analytics/ErpSetGoods.jsp
Normal 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>
|
||||
<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>
|
||||
125
src/main/webapp/WEB-INF/views/mngr/analytics/ErpSetGoodsR.jsp
Normal file
125
src/main/webapp/WEB-INF/views/mngr/analytics/ErpSetGoodsR.jsp
Normal 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>
|
||||
221
src/main/webapp/WEB-INF/views/mngr/analytics/SalesJournal.jsp
Normal file
221
src/main/webapp/WEB-INF/views/mngr/analytics/SalesJournal.jsp
Normal 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>
|
||||
43
src/main/webapp/WEB-INF/views/mngr/api/OrderApiPage.jsp
Normal file
43
src/main/webapp/WEB-INF/views/mngr/api/OrderApiPage.jsp
Normal 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>
|
||||
2392
src/main/webapp/WEB-INF/views/mngr/bbs/bbsmngr/BbsCopyC.jsp
Normal file
2392
src/main/webapp/WEB-INF/views/mngr/bbs/bbsmngr/BbsCopyC.jsp
Normal file
File diff suppressed because it is too large
Load Diff
2850
src/main/webapp/WEB-INF/views/mngr/bbs/bbsmngr/BbsDtlUpdtU.jsp
Normal file
2850
src/main/webapp/WEB-INF/views/mngr/bbs/bbsmngr/BbsDtlUpdtU.jsp
Normal file
File diff suppressed because it is too large
Load Diff
158
src/main/webapp/WEB-INF/views/mngr/bbs/bbsmngr/BbsListR.jsp
Normal file
158
src/main/webapp/WEB-INF/views/mngr/bbs/bbsmngr/BbsListR.jsp
Normal 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>
|
||||
489
src/main/webapp/WEB-INF/views/mngr/bbs/bbsmngr/BbsListRForm.jsp
Normal file
489
src/main/webapp/WEB-INF/views/mngr/bbs/bbsmngr/BbsListRForm.jsp
Normal 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>
|
||||
2081
src/main/webapp/WEB-INF/views/mngr/bbs/bbsmngr/BbsRegistC.jsp
Normal file
2081
src/main/webapp/WEB-INF/views/mngr/bbs/bbsmngr/BbsRegistC.jsp
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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>
|
||||
@@ -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> <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>
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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>
|
||||
314
src/main/webapp/WEB-INF/views/mngr/bbs/gnrlsctt/CmListR.jsp
Normal file
314
src/main/webapp/WEB-INF/views/mngr/bbs/gnrlsctt/CmListR.jsp
Normal 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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
197
src/main/webapp/WEB-INF/views/mngr/bbs/gnrlsctt/FaqListR.jsp
Normal file
197
src/main/webapp/WEB-INF/views/mngr/bbs/gnrlsctt/FaqListR.jsp
Normal 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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
204
src/main/webapp/WEB-INF/views/mngr/bbs/gnrlsctt/MgzListR.jsp
Normal file
204
src/main/webapp/WEB-INF/views/mngr/bbs/gnrlsctt/MgzListR.jsp
Normal 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>
|
||||
225
src/main/webapp/WEB-INF/views/mngr/bbs/gnrlsctt/NoticeListR.jsp
Normal file
225
src/main/webapp/WEB-INF/views/mngr/bbs/gnrlsctt/NoticeListR.jsp
Normal 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>
|
||||
@@ -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>
|
||||
328
src/main/webapp/WEB-INF/views/mngr/bbs/rvw/RvwDtlPopupR.jsp
Normal file
328
src/main/webapp/WEB-INF/views/mngr/bbs/rvw/RvwDtlPopupR.jsp
Normal 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>
|
||||
290
src/main/webapp/WEB-INF/views/mngr/bbs/rvw/RvwListR.jsp
Normal file
290
src/main/webapp/WEB-INF/views/mngr/bbs/rvw/RvwListR.jsp
Normal 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>
|
||||
1664
src/main/webapp/WEB-INF/views/mngr/bbs/rvw/RvwListRForm.jsp
Normal file
1664
src/main/webapp/WEB-INF/views/mngr/bbs/rvw/RvwListRForm.jsp
Normal file
File diff suppressed because it is too large
Load Diff
342
src/main/webapp/WEB-INF/views/mngr/bbs/rvw/RvwRegistPopupC.jsp
Normal file
342
src/main/webapp/WEB-INF/views/mngr/bbs/rvw/RvwRegistPopupC.jsp
Normal 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>
|
||||
570
src/main/webapp/WEB-INF/views/mngr/bbs/rvw/RvwUpdtPopupU.jsp
Normal file
570
src/main/webapp/WEB-INF/views/mngr/bbs/rvw/RvwUpdtPopupU.jsp
Normal 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>
|
||||
129
src/main/webapp/WEB-INF/views/mngr/bnft/BnftListConrevR.jsp
Normal file
129
src/main/webapp/WEB-INF/views/mngr/bnft/BnftListConrevR.jsp
Normal 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 --%>
|
||||
113
src/main/webapp/WEB-INF/views/mngr/bnft/BnftListCpslmknR.jsp
Normal file
113
src/main/webapp/WEB-INF/views/mngr/bnft/BnftListCpslmknR.jsp
Normal 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 --%>
|
||||
135
src/main/webapp/WEB-INF/views/mngr/bnft/BnftListDiscsharR.jsp
Normal file
135
src/main/webapp/WEB-INF/views/mngr/bnft/BnftListDiscsharR.jsp
Normal 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 --%>
|
||||
113
src/main/webapp/WEB-INF/views/mngr/bnft/BnftListEvntviewR.jsp
Normal file
113
src/main/webapp/WEB-INF/views/mngr/bnft/BnftListEvntviewR.jsp
Normal 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 --%>
|
||||
283
src/main/webapp/WEB-INF/views/mngr/bnft/BnftListFormR.jsp
Normal file
283
src/main/webapp/WEB-INF/views/mngr/bnft/BnftListFormR.jsp
Normal 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>
|
||||
|
||||
127
src/main/webapp/WEB-INF/views/mngr/bnft/BnftListLvshopR.jsp
Normal file
127
src/main/webapp/WEB-INF/views/mngr/bnft/BnftListLvshopR.jsp
Normal 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 --%>
|
||||
113
src/main/webapp/WEB-INF/views/mngr/bnft/BnftListOxquizR.jsp
Normal file
113
src/main/webapp/WEB-INF/views/mngr/bnft/BnftListOxquizR.jsp
Normal 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 --%>
|
||||
108
src/main/webapp/WEB-INF/views/mngr/bnft/BnftListR.jsp
Normal file
108
src/main/webapp/WEB-INF/views/mngr/bnft/BnftListR.jsp
Normal 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 --%>
|
||||
219
src/main/webapp/WEB-INF/views/mngr/bnft/BnftPushListFormR.jsp
Normal file
219
src/main/webapp/WEB-INF/views/mngr/bnft/BnftPushListFormR.jsp
Normal 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>
|
||||
|
||||
110
src/main/webapp/WEB-INF/views/mngr/bnft/BnftPushListR.jsp
Normal file
110
src/main/webapp/WEB-INF/views/mngr/bnft/BnftPushListR.jsp
Normal 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 --%>
|
||||
144
src/main/webapp/WEB-INF/views/mngr/bnft/FindCouponFormPopupR.jsp
Normal file
144
src/main/webapp/WEB-INF/views/mngr/bnft/FindCouponFormPopupR.jsp
Normal 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>
|
||||
100
src/main/webapp/WEB-INF/views/mngr/bnft/FindCouponListR.jsp
Normal file
100
src/main/webapp/WEB-INF/views/mngr/bnft/FindCouponListR.jsp
Normal 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>
|
||||
286
src/main/webapp/WEB-INF/views/mngr/bnft/FindStoreFormPopupR.jsp
Normal file
286
src/main/webapp/WEB-INF/views/mngr/bnft/FindStoreFormPopupR.jsp
Normal 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>
|
||||
91
src/main/webapp/WEB-INF/views/mngr/bnft/FindStoreListR.jsp
Normal file
91
src/main/webapp/WEB-INF/views/mngr/bnft/FindStoreListR.jsp
Normal 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>
|
||||
@@ -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] </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"> </div>
|
||||
<div class="center"> </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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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"> </div>
|
||||
<div class="center"> </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>
|
||||
@@ -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] </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"> </div>
|
||||
<div class="center"> </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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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
@@ -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>
|
||||
@@ -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>
|
||||
201
src/main/webapp/WEB-INF/views/mngr/bnft/regist/PushDtlsForm.jsp
Normal file
201
src/main/webapp/WEB-INF/views/mngr/bnft/regist/PushDtlsForm.jsp
Normal 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>
|
||||
@@ -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분이후 발송시간 지정, 발송제한시간 : ${ 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 }<%-- , 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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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"> </div>
|
||||
<div class="center"> </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>
|
||||
@@ -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>
|
||||
1005
src/main/webapp/WEB-INF/views/mngr/bnft/regist/RougameRegistForm.jsp
Normal file
1005
src/main/webapp/WEB-INF/views/mngr/bnft/regist/RougameRegistForm.jsp
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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] </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"> </div>
|
||||
<div class="center"> </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>
|
||||
@@ -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>
|
||||
@@ -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 --%>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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 --%>
|
||||
@@ -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> 명
|
||||
완료:<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>
|
||||
@@ -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>
|
||||
@@ -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 --%>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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 --%>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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 --%>
|
||||
@@ -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>
|
||||
@@ -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 --%>
|
||||
@@ -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>
|
||||
@@ -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 --%>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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 --%>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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
Reference in New Issue
Block a user