초기소스
This commit is contained in:
30
src/main/webapp/WEB-INF/tlds/f.tld
Normal file
30
src/main/webapp/WEB-INF/tlds/f.tld
Normal file
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<taglib version="3.0" xmlns="https://jakarta.ee/xml/ns/jakartaee" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-jsptaglibrary_3_0.xsd ">
|
||||
<tlib-version>3.0</tlib-version>
|
||||
<short-name>f</short-name>
|
||||
|
||||
<function>
|
||||
<name>setChecked</name>
|
||||
<function-class> com.wb.domainserver.util.util.Util</function-class>
|
||||
<function-signature>
|
||||
java.lang.String setChecked(java.lang.String,java.lang.String)
|
||||
</function-signature>
|
||||
</function>
|
||||
|
||||
<function>
|
||||
<name>setSelected</name>
|
||||
<function-class> com.wb.domainserver.util.util.Util</function-class>
|
||||
<function-signature>
|
||||
java.lang.String setSelected(java.lang.String,java.lang.String)
|
||||
</function-signature>
|
||||
</function>
|
||||
|
||||
<function>
|
||||
<name>setCheckedArray</name>
|
||||
<function-class> com.wb.domainserver.util.util.Util</function-class>
|
||||
<function-signature>
|
||||
java.lang.String setCheckedArray(java.lang.String[], java.lang.String)
|
||||
</function-signature>
|
||||
</function>
|
||||
|
||||
</taglib>
|
||||
35
src/main/webapp/WEB-INF/tlds/taglib.tld
Normal file
35
src/main/webapp/WEB-INF/tlds/taglib.tld
Normal file
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
|
||||
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
|
||||
|
||||
<taglib>
|
||||
<tlib-version>1.0</tlib-version>
|
||||
<jsp-version>1.2</jsp-version>
|
||||
<short-name>ui</short-name>
|
||||
<uri>http://www.winbit.kr/ctl/ui</uri>
|
||||
<display-name>UI</display-name>
|
||||
<description>UI Tag Library</description>
|
||||
|
||||
<tag>
|
||||
<name>pagination</name>
|
||||
<tag-class> com.wb.domainserver.common.mvc.tags.ui.PaginationTag</tag-class>
|
||||
|
||||
<body-content>empty</body-content>
|
||||
<description>Pagination Tag</description>
|
||||
<attribute>
|
||||
<name>paginationInfo</name>
|
||||
<required>true</required>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
</attribute>
|
||||
<attribute>
|
||||
<name>type</name>
|
||||
<required>false</required>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
</attribute>
|
||||
<attribute>
|
||||
<name>jsFunction</name>
|
||||
<required>false</required>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
</attribute>
|
||||
</tag>
|
||||
</taglib>
|
||||
79
src/main/webapp/WEB-INF/views/MobileIndex.jsp
Normal file
79
src/main/webapp/WEB-INF/views/MobileIndex.jsp
Normal file
@@ -0,0 +1,79 @@
|
||||
<%@ 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"%>
|
||||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<title>Welcome nutricore</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>사용자 인덱스 화면 Today : <%= new Date()%></h1>
|
||||
<button style="padding: 10px 30px; background-color: #ffc9c9;" type="button" onclick="location.href='/index'">pc</button>
|
||||
<button style="padding: 10px 30px; background-color: #5ac5d4;" type="button" onclick="location.href='/mobileIndex'">mobile</button>
|
||||
<br><br>
|
||||
고객센터,서브페이지(/sopmal/csc) >
|
||||
<br><br>
|
||||
<button type="button" onclick="location.href='/sopmal/csc/selectCscMainForm'">고객센터 메인</button>
|
||||
<button type="button" onclick="location.href='/sopmal/csc/selectBbscttAuth?authDv=REDNG&reqUrl=subPage&bbsId=magazine'">매거진</button>
|
||||
<button type="button" onclick="location.href='/sopmal/csc/selectBbscttAuth?authDv=REDNG&reqUrl=subPage&bbsId=Event_board'">이벤트</button>
|
||||
<button type="button" onclick="location.href='/sopmal/csc/selectBbscttAuth?authDv=REDNG&reqUrl=subPage&bbsId=Event_result'">당첨자발표</button>
|
||||
<button type="button" onclick="location.href='/sopmal/csc/selectBbscttAuth?authDv=REDNG&reqUrl=subPage&bbsId=test_bbs'">일반게시판(리스트)</button>
|
||||
<button type="button" onclick="location.href='/sopmal/csc/selectBbscttAuth?authDv=REDNG&reqUrl=subPage&bbsId=influencer'">일반게시판(갤러리)</button>
|
||||
<button type="button" onclick="location.href='/sopmal/csc/selectBbscttAuth?authDv=REDNG&reqUrl=subPage&bbsId=faq'">일반게시판(아코디언)</button>
|
||||
<hr><br>
|
||||
|
||||
메인 (/sopmal/main) >
|
||||
<br><br>
|
||||
<button type="button" onclick="location.href='/sopmal/main/selectStrListForm'">매장안내 이동</button>
|
||||
<hr><br>
|
||||
|
||||
마이페이지 활동 (/sopmal/mpage/act) >
|
||||
<br><br>
|
||||
<button type="button" onclick="location.href='/sopmal/mpage/act/selectGoodsQnaInqire?bbsId=goods_qna'">상품Q&A조회</button>
|
||||
<button type="button" onclick="location.href='/sopmal/mpage/act/selectMyRvwInqireForm'">나의리뷰조회</button>
|
||||
<hr><br>
|
||||
|
||||
마이페이지 혜택 (/sopmal/mpage/bnef) >
|
||||
<br><br>
|
||||
<button type="button" onclick="location.href='/sopmal/mpage/bnef/selectMbrGradInqire'">회원 등급 이동</button>
|
||||
<button type="button" onclick="location.href='/sopmal/mpage/bnef/selectMlgDtlsInqireForm'">마일리지 이동</button>
|
||||
<button type="button" onclick="location.href='/sopmal/mpage/bnef/selectCouponDtlsForm'">쿠폰 내역 이동</button>
|
||||
<hr><br>
|
||||
|
||||
마이페이지 정보 (/sopmal/mpage/mbr) >
|
||||
<br><br>
|
||||
<button type="button" onclick="location.href='/sopmal/mpage/mbr/selectDlvylcManagePopupForm'">배송지 관리</button>
|
||||
<button type="button" onclick="location.href='/sopmal/mpage/mbr/selectMbrInfoUpdtPasswordCnfirmForm'">회원 정보 수정 비밀번호 확인 이동</button>
|
||||
<button type="button" onclick="location.href='/sopmal/mpage/mbr/selectMbrInfoUpdtForm'">회원 정보 수정 이동</button>
|
||||
<button type="button" onclick="location.href='/sopmal/mpage/mbr/selectMbrSecsnForm'">회원 탈퇴 이동</button>
|
||||
<hr><br>
|
||||
|
||||
마이페이지 쇼핑(/sopmal/mpage/ordr) >
|
||||
<br><br>
|
||||
<button type="button" onclick="location.href='/sopmal/mpage/ordr/selectWslistInqireForm'">위시리스트 이동</button>
|
||||
<button type="button" onclick="location.href='/sopmal/mpage/ordr/selectRtngudCanclRefndForm'">반품/환불 목록 이동</button>
|
||||
<hr><br>
|
||||
|
||||
구매(/sopmal/ordr) >
|
||||
<br><br>
|
||||
<button type="button" onclick="location.href='/sopmal/ordr/selectMbrPurchsForm'">회원구매(배송지관리팝업)</button>
|
||||
|
||||
<hr><br>
|
||||
상품(/sopmal/goods) >
|
||||
<br><br>
|
||||
<button type="button" onclick="location.href='/sopmal/goods/selectGoodsSrchForm'">상품 검색</button>
|
||||
<button type="button" onclick="location.href='/sopmal/goods/selectGoodsListForm'">상품 목록</button>
|
||||
<button type="button" onclick="location.href='/sopmal/goods/selectGoodsDtl?goodsInnb=59&sopmalCd=NC'">상품 상세</button>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
</script>
|
||||
</html>
|
||||
56
src/main/webapp/WEB-INF/views/admin/index.jsp
Normal file
56
src/main/webapp/WEB-INF/views/admin/index.jsp
Normal file
@@ -0,0 +1,56 @@
|
||||
<%@ 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" %>
|
||||
|
||||
<!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 --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
|
||||
</head>
|
||||
<style>
|
||||
.page-title {
|
||||
background-color: #ffffff;
|
||||
box-shadow: 0 1px 6px 0 rgba(0, 0, 0, 0.1);
|
||||
padding: 12px 24px;
|
||||
justify-content: flex-start;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
|
||||
});
|
||||
</script>
|
||||
<body>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Left.jsp" %>
|
||||
<div class="content">
|
||||
<div class="content__inner">
|
||||
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
|
||||
<div class="page-title">
|
||||
<h3 class="page-title__title">${resultMap.access.mngrId}</h3>
|
||||
<h4>님 GCONE 통합관리자 페이지에 접속하셨습니다.</h4>
|
||||
<div class="page-title__btn-container">
|
||||
</div>
|
||||
</div>
|
||||
<section class="content-section">
|
||||
마지막 접속 시간은 [${resultMap.access.lastConectDt}] 입니다.
|
||||
</section>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,88 @@
|
||||
<%@ 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 : maItcSleHistInfoInqireR.jsp
|
||||
Description : 부정 판매 대상자 상세화면 > 지정 이력 목록
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023-01-29 김혜인 최초생성
|
||||
--%>
|
||||
|
||||
<form id = "histForm">
|
||||
<section class="content-section">
|
||||
<h3 class="content-section__title">부정판매 설정 이력</h3>
|
||||
<div class="form-control-container">
|
||||
<div class="left">
|
||||
<div class="search-number">
|
||||
<span class="search-number__text">총 <strong><c:out value="${ resultFO3.paginationInfo.totalRecordCount }"/></strong>건</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="center">
|
||||
</div>
|
||||
<div class="right">
|
||||
<div class="select-box">
|
||||
<select id="histPageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_histList(1);">
|
||||
<c:forEach items="${ resultFO3.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
|
||||
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultFO3.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>
|
||||
<colgroup>
|
||||
<col style="width: 4%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: auto;">
|
||||
</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 resultFO3.histInfo }">
|
||||
<c:forEach items="${ resultFO3.histInfo }" var="list" varStatus="status">
|
||||
<tr>
|
||||
<td><c:out value="${resultFO3.paginationInfo.totalRecordCount - list.rnum + 1 }" /></td>
|
||||
<td><c:out value="${list.registDt}"/></td>
|
||||
<td><c:out value="${list.sopmalNm}"/></td>
|
||||
<td><c:out value="${list.appnDvCdNm}"/></td>
|
||||
<td><c:out value="${list.mngrId}"/></td>
|
||||
<td><c:out value="${list.appnMemo}"/></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>
|
||||
<div class="pagination__container">
|
||||
<ui:pagination paginationInfo="${resultFO3.paginationInfo}" type="image" jsFunction="fn_select_histList"/>
|
||||
</div>
|
||||
<input type = "hidden" id = "histPageIndex" name = "pageIndex" value = "<c:out value ='${resultFO3.boMaMtngVO.pageIndex}'/>">
|
||||
</section>
|
||||
</form>
|
||||
@@ -0,0 +1,181 @@
|
||||
<%@ 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 : maItcSleMtngDtlInqireR.jsp
|
||||
Description : 부정 판매 대상자 상세
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023-01-29 김혜인 최초생성
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
</head>
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
// 지정 이력 목록 조회
|
||||
let histPageIndex = '<c:out value="${ resultFO3.boMaMtngVO.pageIndex }"/>';
|
||||
let histpageUnit = '<c:out value="${ resultFO3.boMaMtngVO.pageUnit }"/>';
|
||||
fn_select_histList(histPageIndex, histpageUnit);
|
||||
// 주문 이력 목록 조회
|
||||
let ordrPageIndex = '<c:out value="${ resultFO2.boMaMtngVO.pageIndex }"/>';
|
||||
let ordrpageUnit = '<c:out value="${ resultFO2.boMaMtngVO.pageUnit }"/>';
|
||||
fn_select_ordrList(ordrPageIndex, ordrpageUnit);
|
||||
});
|
||||
// 지정 이력 목록 조회
|
||||
fn_select_histList = function (pageIndex, pageUnit) {
|
||||
let dataStr;
|
||||
const idntfcInfo = $("#idntfcInfo").val();
|
||||
if(!pageIndex) {
|
||||
$('#histPageIndex').val(1);
|
||||
} else {
|
||||
$('#histPageIndex').val(pageIndex);
|
||||
}
|
||||
if(!pageUnit) {
|
||||
dataStr = $('#histForm').serialize();
|
||||
} else {
|
||||
if($('#histPageUnit').length){
|
||||
$('#histPageUnit').val(pageUnit);
|
||||
dataStr = $('#histForm').serialize();
|
||||
} else {
|
||||
dataStr = $('#histForm').serialize()+'&pageUnit='+pageUnit;
|
||||
}
|
||||
}
|
||||
//idntfcInfo param 넘기기
|
||||
dataStr = dataStr+'&idntfcInfo='+idntfcInfo;
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url : "<c:url value="/admin/instcSle/mtng/selectItcSleHistInfoInqire"/>",
|
||||
data : dataStr,
|
||||
success:function(resultHtml) {
|
||||
$('#histDiv').html(resultHtml);
|
||||
$('#histPageUnit').niceSelect();
|
||||
}
|
||||
});
|
||||
}
|
||||
// 주문 이력 목록 조회
|
||||
fn_select_ordrList = function (pageIndex, pageUnit) {
|
||||
let dataStr;
|
||||
const idntfcInfo = $("#idntfcInfo").val();
|
||||
const mbrDvCd = $("#mbrDvCd").val();
|
||||
if(!pageIndex) {
|
||||
$('#ordrPageIndex').val(1);
|
||||
} else {
|
||||
$('#ordrPageIndex').val(pageIndex);
|
||||
}
|
||||
if(!pageUnit) {
|
||||
dataStr = $('#ordrForm').serialize();
|
||||
} else {
|
||||
if($('#ordrPageUnit').length){
|
||||
$('#ordrPageUnit').val(pageUnit);
|
||||
dataStr = $('#ordrForm').serialize();
|
||||
} else {
|
||||
dataStr = $('#ordrForm').serialize()+'&pageUnit='+pageUnit;
|
||||
}
|
||||
}
|
||||
//idntfcInfo param 넘기기
|
||||
dataStr = dataStr+'&idntfcInfo='+idntfcInfo+'&mbrDvCd='+mbrDvCd;
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url : "<c:url value="/admin/instcSle/mtng/selectItcSleOrdrInfoInqire"/>",
|
||||
data : dataStr,
|
||||
success:function(resultHtml) {
|
||||
$('#ordrDiv').html(resultHtml);
|
||||
$('#ordrPageUnit').niceSelect();
|
||||
}
|
||||
});
|
||||
}
|
||||
/* ********************************************************
|
||||
* 부정판매 대상자 목록 조회 이동
|
||||
******************************************************** */
|
||||
const fn_move_dtl_page = function() {
|
||||
const url = '<c:url value="/admin/instcSle/mtng/selectItcSleMtngListInqireForm"/>';
|
||||
$('#srchCndForm').attr('action', url);
|
||||
$('#srchCndForm').attr('method', 'post');
|
||||
$('#srchCndForm').submit();
|
||||
}
|
||||
</script>
|
||||
<body>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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 type = "button" id = "listBtn" class="btn outline" onclick = "fn_move_dtl_page()">목록</button>
|
||||
</div>
|
||||
</div>
|
||||
<section class="content-section" id="search-section">
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical">
|
||||
<caption>사업자 조회</caption>
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col style="width: auto;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 21%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 21%;">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>사용자 명</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<c:out value = "${resultFO1.mbrInfo.mbrNm}"/>
|
||||
</div>
|
||||
</td>
|
||||
<th>아이디</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<c:out value = "${resultFO1.mbrInfo.mbrId}"/>
|
||||
</div>
|
||||
</td>
|
||||
<th>등급</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<c:out value = "${resultFO1.mbrInfo.mbrGradNm}"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
<div id="histDiv">
|
||||
</div>
|
||||
<div id="ordrDiv">
|
||||
</div>
|
||||
<input type = "hidden" value = "${maMtngSrchVO.idntfcInfo}" name = "idntfcInfo" id = "idntfcInfo"/>
|
||||
<input type = "hidden" value = "${maMtngSrchVO.mbrDvCd}" name = "mbrDvCd" id = "mbrDvCd"/>
|
||||
<%--목록 이동시 검색 조건 유지--%>
|
||||
<form id = "srchCndForm">
|
||||
<input type = "hidden" value = "${maMtngSrchVO.pageIndex}" name = "pageIndex" id = "pageIndex"/>
|
||||
<input type = "hidden" value = "${maMtngSrchVO.srchType}" name = "srchType" id = "srchType"/>
|
||||
<input type = "hidden" value = "${maMtngSrchVO.srchStr}" name = "srchStr" id = "srchStr"/>
|
||||
<input type = "hidden" value = "${maMtngSrchVO.srchShop}" name = "srchShop" id = "srchShop"/>
|
||||
<input type = "hidden" value = "${maMtngSrchVO.srchAppn}" name = "srchAppn" id = "srchAppn"/>
|
||||
<input type = "hidden" value = "${maMtngSrchVO.srchStrtRegDt}" name = "srchStrtRegDt" id = "srchStrtRegDt"/>
|
||||
<input type = "hidden" value = "${maMtngSrchVO.srchEndRegDt}" name = "srchEndRegDt" id = "srchEndRegDt"/>
|
||||
<c:forEach var = "srchIdntfcDvCd" items = "${maMtngSrchVO.srchIdntfcDvCd}">
|
||||
<input type = "hidden" value = "${srchIdntfcDvCd}" name = "srchIdntfcDvCd" id = "srchIdntfcDvCd"/>
|
||||
</c:forEach>
|
||||
<input type = "hidden" value = "${maMtngSrchVO.pageUnit}" name = "pageUnit" id = "pageUnit"/>
|
||||
</form>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,198 @@
|
||||
<%@ 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 : MaItcSleMtngListInqireRForm.jsp
|
||||
Description : 부정 판매 대상자 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023-01-29 김혜인 최초생성
|
||||
--%>
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
$(".mbtlnb").each(function(){
|
||||
console.log($(this).text().trim());
|
||||
$(this).text(fn_format_mbtlnb($(this).text().trim()));
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
<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="${ resultListMap.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="${ resultListMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
|
||||
<option value="<c:out value="${ pageUnit }"/>" ${f:setSelected(resultListMap.paginationInfo.recordCountPerPage, pageUnit) }><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">
|
||||
<button class="btn outline sm" type = "button" id = "excelDwldBtn" onclick = "fn_excel_download()">
|
||||
<i class="icon icon_excel"></i>다운로드
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="spacing">
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical">
|
||||
<caption>부정판매 대상자 목록</caption>
|
||||
<colgroup>
|
||||
<col style="width: 5%;">
|
||||
<col style="width: 11%;">
|
||||
<col style="width: auto;">
|
||||
<col style="width: 8%;">
|
||||
<col style="width: 8%;">
|
||||
<col style="width: 11%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 7%">
|
||||
<col style="width: 16%;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>번호</th>
|
||||
<th>식별기준</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 resultListMap.resultMap }">
|
||||
<c:forEach items="${ resultListMap.resultMap }" var="list" varStatus="status">
|
||||
<tr>
|
||||
<td><c:out value="${resultListMap.paginationInfo.totalRecordCount - list.rnum + 1 }" /></td>
|
||||
<td><c:out value="${list.idntfcStdrCdNm}"/></td>
|
||||
<td class="<c:if test = "${list.idntfcStdrCd eq 'order_mbtlnb'}">mbtlnb</c:if>">
|
||||
<c:choose>
|
||||
<c:when test = "${list.idntfcStdrCd eq 'mbr_innb'}">
|
||||
<c:out value="${list.mbrId}"/>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:out value="${list.idntfcInfo}"/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</td>
|
||||
<td><c:out value="${list.originDvCdNm}"/></td>
|
||||
<td>
|
||||
<c:choose>
|
||||
<c:when test = "${list.sopmalCd eq 'CM'}">
|
||||
공통
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:out value="${list.sopmalNm}"/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</td>
|
||||
<td><c:out value="${list.appnDvCdNm}"/></td>
|
||||
<td><c:out value="${list.registDt}"/></td>
|
||||
<td>
|
||||
<c:if test = "${list.idntfcStdrCd eq 'mbr_innb'}">
|
||||
<button type = "button" class="btn xsm outline primary dtlBtn" value = "<c:out value="${list.idntfcInfo}"/>">조회</button>
|
||||
<input type = "hidden" name = "mbrDvCd" value = "<c:out value="${list.mbrDvCd}"/>">
|
||||
<input type = "hidden" name = "sopmalCd" value = "<c:out value="${list.sopmalCd}"/>">
|
||||
</c:if>
|
||||
</td>
|
||||
<td>
|
||||
<c:if test="${ list.originDvCd ne '03' }">
|
||||
<c:choose>
|
||||
<%-- <c:when test="${ list.appnDvCd eq '01' }"> --%>
|
||||
<%-- <button class="origin_btn btn sm dark" onclick="fn_update_MbrRslrList('${list.mbrIdntfcInfo}', '02', this); return false;">블랙리스트</button> --%>
|
||||
<%-- <button class="origin_btn btn outline sm" onclick="fn_update_MbrRslrList('${list.mbrIdntfcInfo}', '03', this); return false;">화이트리스트</button> --%>
|
||||
<%-- </c:when> --%>
|
||||
<%-- <c:when test="${ list.appnDvCd eq '02' }"> --%>
|
||||
<%-- <button class="origin_btn btn outline sm" onclick="fn_update_MbrRslrList('${list.mbrIdntfcInfo}', '01', this); return false;">일반</button> --%>
|
||||
<%-- <button class="origin_btn btn outline sm" onclick="fn_update_MbrRslrList('${list.mbrIdntfcInfo}', '03', this); return false;">화이트리스트</button> --%>
|
||||
<%-- </c:when> --%>
|
||||
<%-- <c:when test="${ list.appnDvCd eq '03' }"> --%>
|
||||
<%-- <button class="origin_btn btn outline sm" onclick="fn_update_MbrRslrList('${list.mbrIdntfcInfo}', '01', this); return false;">일반</button> --%>
|
||||
<%-- <button class="origin_btn btn sm dark" onclick="fn_update_MbrRslrList('${list.mbrIdntfcInfo}', '02', this); return false;">블랙리스트</button> --%>
|
||||
<%-- </c:when> --%>
|
||||
<c:when test="${ list.appnDvCd eq '01' }">
|
||||
<button class="origin_btn btn sm dark" onclick="fn_open_appn_dv_modal('${list.mbrIdntfcInfo}', '02', this.innerText, '${list.sopmalCd}'); return false;">블랙리스트</button>
|
||||
<button class="origin_btn btn outline sm" onclick="fn_open_appn_dv_modal('${list.mbrIdntfcInfo}', '03', this.innerText, '${list.sopmalCd}'); return false;">화이트리스트</button>
|
||||
</c:when>
|
||||
<c:when test="${ list.appnDvCd eq '02' }">
|
||||
<button class="origin_btn btn outline sm" onclick="fn_open_appn_dv_modal('${list.mbrIdntfcInfo}', '01', this.innerText, '${list.sopmalCd}'); return false;">일반</button>
|
||||
<button class="origin_btn btn outline sm" onclick="fn_open_appn_dv_modal('${list.mbrIdntfcInfo}', '03', this.innerText, '${list.sopmalCd}'); return false;">화이트리스트</button>
|
||||
</c:when>
|
||||
<c:when test="${ list.appnDvCd eq '03' }">
|
||||
<button class="origin_btn btn outline sm" onclick="fn_open_appn_dv_modal('${list.mbrIdntfcInfo}', '01', this.innerText, '${list.sopmalCd}'); return false;">일반</button>
|
||||
<button class="origin_btn btn sm dark" onclick="fn_open_appn_dv_modal('${list.mbrIdntfcInfo}', '02', this.innerText, '${list.sopmalCd}'); return false;">블랙리스트</button>
|
||||
</c:when>
|
||||
</c:choose>
|
||||
</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>
|
||||
|
||||
|
||||
|
||||
<!-- 리셀러 해제, 등록, 탈퇴 사유 모달 -->
|
||||
<div id="resnModal" class="modal" style="max-width: 500px;">
|
||||
<div class="modal-header">
|
||||
<h4>사유 작성</h4>
|
||||
</div>
|
||||
<div class="modal-content">
|
||||
<div class="table-wrapper">
|
||||
<textarea id = "resnTextArea"class="textarea" title="리셀러 해제, 등록, 탈퇴 사유" rows="10"></textarea>
|
||||
</div>
|
||||
<input type = "hidden" id = "mbrIdntfcInfo">
|
||||
<input type = "hidden" id = "appnDvCd">
|
||||
<input type = "hidden" id = "appnDvCdNm">
|
||||
<input type = "hidden" id = "sopmalCd">
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#" rel="modal:close" class="btn outline" id="closeBtn"><spring:message code="button.cancel"/></a>
|
||||
<button class="btn primary outline" id = "registBtn" ><spring:message code="button.insert"/></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="pagination__container">
|
||||
<ui:pagination paginationInfo="${resultListMap.paginationInfo}" type="image" jsFunction="fn_select_list"/>
|
||||
</div>
|
||||
@@ -0,0 +1,431 @@
|
||||
<%@ 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 : MaItcSleMtngListInqireRForm.jsp
|
||||
Description : 부정 판매 대상자 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023-01-29 김혜인 최초생성
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
</head>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
//검색폼 데이트피커 제어
|
||||
fn_set_dateRange_function("#dateRange","srchStrtRegDt","srchEndRegDt","srchStrtRegDt");
|
||||
|
||||
/*전체 체크박스 클릭시 체크박스 전체 체크*/
|
||||
$("#idntfcStdrA").on("click", function () {
|
||||
if ($(this).is(":checked")) {
|
||||
$("input[name='srchIdntfcDvCd']").each(function () {
|
||||
$(this).prop("checked", true);
|
||||
});
|
||||
} else {
|
||||
$("input[name='srchIdntfcDvCd']").each(function () {
|
||||
$(this).prop("checked", false);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
/* 체크박스 클릭 시 전체 체크박스 체크 해제 */
|
||||
$("input[name='srchIdntfcDvCd']").on("click", function () {
|
||||
// 현재 체크된 상태를 기준으로 전체 체크 여부 확인
|
||||
let allChecked = $("input[name='srchIdntfcDvCd']").length === $("input[name='srchIdntfcDvCd']:checked").length;
|
||||
|
||||
// 만약 모든 체크박스가 체크되지 않았으면, 전체 선택 체크박스 해제
|
||||
if (!allChecked) {
|
||||
$("#idntfcStdrA").prop("checked", false);
|
||||
}else{
|
||||
$("#idntfcStdrA").prop("checked", true);
|
||||
}
|
||||
});
|
||||
|
||||
/*식별기준 vo에 없을시 전체 체크*/
|
||||
let srchIdntfcDvCd = '<c:out value="${resultSrchMap.boMaMtngSrchVO.srchIdntfcDvCd}"/>';
|
||||
if (srchIdntfcDvCd === '') {
|
||||
$("#idntfcStdrA").click();
|
||||
}
|
||||
|
||||
/*초기화시 식별기준 전체 체크*/
|
||||
$("#resetBtn").on("click",function(){
|
||||
$("#idntfcStdrA").click();
|
||||
});
|
||||
|
||||
/*지정일 vo에 없을시 전체 버튼 클릭*/
|
||||
let srchStrtRegDt = '<c:out value="${resultSrchMap.boMaMtngSrchVO.srchStrtRegDt}"/>';
|
||||
let srchEndRegDt = '<c:out value="${resultSrchMap.boMaMtngSrchVO.srchEndRegDt}"/>';
|
||||
if (srchStrtRegDt === '' && srchEndRegDt === '') {
|
||||
$(".dateRange-btn").last().click();
|
||||
}
|
||||
|
||||
let pageIndex = '<c:out value="${ resultSrchMap.boMaMtngSrchVO.pageIndex }"/>';
|
||||
let pageUnit = '<c:out value="${ resultSrchMap.boMaMtngSrchVO.pageUnit }"/>';
|
||||
fn_select_list(pageIndex, pageUnit);
|
||||
|
||||
//검색 엔터 클릭시 목록 조회
|
||||
$('#srchStr').on('keydown', function(event) {
|
||||
if (event.keyCode === 13) {
|
||||
event.preventDefault();
|
||||
fn_select_list('1');
|
||||
}
|
||||
});
|
||||
|
||||
//버튼 클릭시 상세 조회 이동
|
||||
$(document).on('click','.dtlBtn',function(){
|
||||
const targetTd = $(this).closest("td");
|
||||
/*회원 고유번호*/
|
||||
const idntfcInfo = $(this).val();
|
||||
/*회원 구분 코드*/
|
||||
const mbrDvCd = targetTd.find("input[name='mbrDvCd']").val();
|
||||
/*쇼핑몰 코드*/
|
||||
const sopmalCd = targetTd.find("input[name='sopmalCd']").val();
|
||||
fn_move_dtl_page(idntfcInfo,mbrDvCd,sopmalCd);
|
||||
});
|
||||
});
|
||||
|
||||
/**********************************************************
|
||||
* 검색 조건 이벤트 설정
|
||||
***********************************************************/
|
||||
/*
|
||||
* 검색조건 > 날짜 전체 클릭 시 날짜 설정 초기화
|
||||
*/
|
||||
const fn_reset_date = function (strtDate, endDate) {
|
||||
$('#' + strtDate).datepicker().datepicker("setDate", '');
|
||||
$('#' + endDate).datepicker().datepicker("setDate", '');
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 목록 조회
|
||||
******************************************************** */
|
||||
const fn_select_list = function(pageIndex, pageUnit) {
|
||||
|
||||
if(!pageIndex) {
|
||||
$('#pageIndex').val(1);
|
||||
} else {
|
||||
$('#pageIndex').val(pageIndex);
|
||||
}
|
||||
|
||||
let dataStr = $('#listForm').serialize();
|
||||
if(!pageUnit){
|
||||
dataStr += '&pageUnit=' + $('#pageUnit').val();
|
||||
} else {
|
||||
|
||||
dataStr += '&pageUnit=' + pageUnit;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url : "<c:url value='/admin/instcSle/mtng/selectItcSleMtngListInqire'/>",
|
||||
data : dataStr,
|
||||
success:function(resultHtml) {
|
||||
$('#pageDiv').empty();
|
||||
$('#pageDiv').html(resultHtml);
|
||||
$('#pageUnit').niceSelect();
|
||||
}
|
||||
});
|
||||
}
|
||||
/* ********************************************************
|
||||
* 부정판매 대상자 이력조회 이동
|
||||
******************************************************** */
|
||||
const fn_move_dtl_page = function(idntfcInfo,mbrDvCd,sopmalCd) {
|
||||
let form = $('<form></form>').attr({
|
||||
method: 'post',
|
||||
action: '<c:url value="/admin/instcSle/mtng/selectItcSleMtngDtlInqire"/>'
|
||||
});
|
||||
|
||||
/*회원고유번호*/
|
||||
fn_create_input('idntfcInfo',idntfcInfo,form);
|
||||
|
||||
/*회원구분코드*/
|
||||
fn_create_input('mbrDvCd',mbrDvCd,form);
|
||||
|
||||
/*쇼핑몰코드*/
|
||||
fn_create_input('sopmalCd',sopmalCd,form);
|
||||
|
||||
/*pageUnit*/
|
||||
fn_create_input('pageUnit', $("#pageUnit").val(),form);
|
||||
|
||||
/*pageIndex*/
|
||||
fn_create_input('pageIndex',$("#pageIndex").val(),form);
|
||||
|
||||
/*검색폼 데이터 유지 값 form에 set*/
|
||||
$("#search-section").find("input,select").each(function(){
|
||||
const tag = this.tagName.toLowerCase();
|
||||
if(tag === 'input'){
|
||||
const type = $(this).attr("type");
|
||||
if(type !== 'radio'){ //라디오를 제외한 input 값
|
||||
if($(this).val()){
|
||||
fn_create_input($(this).attr("name"),$(this).val(),form);
|
||||
}
|
||||
}else{
|
||||
if($(this).prop("checked")){//라디오 체크 값
|
||||
fn_create_input($(this).attr("name"),$(this).val(),form);
|
||||
}
|
||||
}
|
||||
}else{//셀렉트 값
|
||||
fn_create_input($(this).attr("name"),$(this).val(),form);
|
||||
}
|
||||
});
|
||||
|
||||
form.appendTo('body').submit();
|
||||
}
|
||||
/*input 생성 함수*/
|
||||
const fn_create_input = (name, value, form) => {
|
||||
$('<input>').attr({
|
||||
type: 'hidden',
|
||||
name: name,
|
||||
value: value
|
||||
}).appendTo(form);
|
||||
}
|
||||
/*********************************************************
|
||||
* 엑셀 다운로드
|
||||
*********************************************************/
|
||||
const fn_excel_download = function() {
|
||||
$('#listForm').attr('action', '<c:url value="/admin/instcSle/mtng/selectItcSleMtngListExcelDwld"/>');
|
||||
$('#listForm').attr('method', 'post');
|
||||
$('#listForm').submit();
|
||||
}
|
||||
history.replaceState({}, null, location.pathname);
|
||||
|
||||
|
||||
/**
|
||||
* mbrIdntfcInfo : 회원식별
|
||||
* appnDvCd : 출처구분
|
||||
* ele : this
|
||||
*/
|
||||
const fn_update_MbrRslrList = function(mbrIdntfcInfo, appnDvCd, ele, test) {
|
||||
let pageIndex = $('#pageIndex').val();
|
||||
let alertMessage = ele.innerText;
|
||||
|
||||
if(confirm(alertMessage+"(으)로 바꾸시겠습니까?") ) {
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url : '/admin/instcSle/mtng/updateMbrRslrList',
|
||||
data : {
|
||||
mbrIdntfcInfo : mbrIdntfcInfo
|
||||
,appnDvCd : appnDvCd
|
||||
},
|
||||
success:function(result) {
|
||||
alert('<spring:message code="success.common.update"/>');
|
||||
fn_select_list(pageIndex);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* mbrIdntfcInfo : 회원식별
|
||||
* appnDvCd : 출처구분
|
||||
* ele : this
|
||||
*/
|
||||
const fn_open_appn_dv_modal = function(mbrIdntfcInfo, appnDvCd, appnDvCdNm, sopmalCd) {
|
||||
$('#resnTextArea').val('');
|
||||
$('#mbrIdntfcInfo').val('');
|
||||
$('#appnDvCd').val('');
|
||||
$('#appnDvCdNm').val('');
|
||||
$('#sopmalCd').val('');
|
||||
|
||||
$("#resnModal").modal("show");
|
||||
|
||||
$('#mbrIdntfcInfo').val(mbrIdntfcInfo);
|
||||
$('#appnDvCd').val(appnDvCd);
|
||||
$('#appnDvCdNm').val(appnDvCdNm);
|
||||
$('#sopmalCd').val(sopmalCd);
|
||||
}
|
||||
|
||||
$(document).on("click", "#registBtn", function(e) {
|
||||
|
||||
let resnTextArea = $('#resnTextArea').val();
|
||||
let mbrIdntfcInfo = $('#mbrIdntfcInfo').val();
|
||||
let appnDvCd = $('#appnDvCd').val();
|
||||
let appnDvCdNm = $('#appnDvCdNm').val();
|
||||
let pageIndex = $('#pageIndex').val();
|
||||
let sopmalCd = $('#sopmalCd').val();
|
||||
|
||||
if(confirm(appnDvCdNm+"(으)로 바꾸시겠습니까?") ) {
|
||||
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url : '/admin/instcSle/mtng/updateMbrRslrList',
|
||||
data : {
|
||||
mbrIdntfcInfo : mbrIdntfcInfo,
|
||||
appnDvCd : appnDvCd,
|
||||
appnMemo : resnTextArea,
|
||||
sopmalCd : sopmalCd,
|
||||
},
|
||||
success:function(result) {
|
||||
alert('<spring:message code="success.common.update"/>');
|
||||
|
||||
$('#closeBtn').click();
|
||||
$("#resnModal").remove();
|
||||
|
||||
fn_select_list(pageIndex);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
<body>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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="/admin/instcSle/mtng/selectItcSleMtngListInqireForm"/>">
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultSrchMap.boMaMtngSrchVO.pageIndex }"/>
|
||||
<section class="content-section" id="search-section">
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>부정판매 대상자 조회</caption>
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 50%;">
|
||||
<col style="width: 12%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>검색어</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select title="검색타입" id="srchType" name="srchType" >
|
||||
<option value="ID" ${f:setSelected(resultSrchMap.boMaMtngSrchVO.srchType, 'ID')}>아이디</option>
|
||||
<option value="NAME" ${f:setSelected(resultSrchMap.boMaMtngSrchVO.srchType, 'NAME')}>이름</option>
|
||||
<option value="EMAIL" ${f:setSelected(resultSrchMap.boMaMtngSrchVO.srchType, 'ADRES')}>주소</option>
|
||||
<option value="AGENT" ${f:setSelected(resultSrchMap.boMaMtngSrchVO.srchType, 'AGENT')}>AGENT</option>
|
||||
<option value="MBTLNB" ${f:setSelected(resultSrchMap.boMaMtngSrchVO.srchType, 'MBTLNB')}>주문자 휴대번호('-'미포함)</option>
|
||||
</select>
|
||||
</div>
|
||||
<input class="input-text md" type="text" title="검색어" id="srchStr" name="srchStr" placeholder="검색어를 입력해 주십시요."
|
||||
value="<c:out value="${ resultSrchMap.boMaMtngSrchVO.srchStr }" />" >
|
||||
</div>
|
||||
</td>
|
||||
<th>쇼핑몰</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select title="쇼핑몰" id="srchShop" name="srchShop">
|
||||
<option value="">전체</option>
|
||||
<c:forEach var = "brand" items = "${resultSrchMap.brand}">
|
||||
<option value="${brand.sopmalCd}" ${f:setSelected(resultSrchMap.boMaMtngSrchVO.srchShop, brand.sopmalCd)}><c:out value = '${brand.sopmalNm}'/></option>
|
||||
</c:forEach>
|
||||
<option value="CM" ${f:setSelected(resultSrchMap.boMaMtngSrchVO.srchShop, 'CM')}>ERP</option>
|
||||
</select>
|
||||
</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="appenA" name="srchAppn" value = "" checked>
|
||||
<label for="appenA">전체</label>
|
||||
</div>
|
||||
<c:forEach var = "appn" items = "${resultSrchMap.appen}">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="${appn.cd}" name="srchAppn" value="${appn.cd}" ${f:setChecked(resultSrchMap.boMaMtngSrchVO.srchAppn,appn.cd)}/>
|
||||
<label for="${appn.cd}">${appn.cdNm}</label>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>식별기준</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="b-checkbox-container">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" name="" class="idntfcStdr" id="idntfcStdrA" ${f:setChecked(fn:length(resultSrchMap.boMaMtngSrchVO.srchIdntfcDvCd),4)}>
|
||||
<span class="check"></span>
|
||||
<span class="control-label">전체</span>
|
||||
</label>
|
||||
<c:forEach var = "idntfcStdr" items = "${resultSrchMap.idntfcStdr}">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" class="idntfcStdr" name="srchIdntfcDvCd" value="<c:out value="${idntfcStdr.cd}"/>"
|
||||
<c:forEach var = "srchIdntfcDvCd" items = "${resultSrchMap.boMaMtngSrchVO.srchIdntfcDvCd}">
|
||||
${f:setChecked(srchIdntfcDvCd,idntfcStdr.cd)}
|
||||
</c:forEach>>
|
||||
<span class="check"></span>
|
||||
<span class="control-label"><c:out value="${idntfcStdr.cdNm}"/></span>
|
||||
</label>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>지정일</th>
|
||||
<td colspan = "2">
|
||||
<div class="td-inner">
|
||||
<div class="input-container">
|
||||
<input type="text" id="srchStrtRegDt" class="datepicker" title="시작 날짜 선택" name = "srchStrtRegDt" value="${resultSrchMap.boMaMtngSrchVO.srchStrtRegDt}"
|
||||
autocomplete="off" >
|
||||
<span class="tilde">~</span>
|
||||
<input type="text" id="srchEndRegDt" class="datepicker" title="종료 날짜 선택" name = "srchEndRegDt" value="${resultSrchMap.boMaMtngSrchVO.srchEndRegDt}"
|
||||
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">전체</button>
|
||||
</div>
|
||||
</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'); return false;">초기화</button>
|
||||
<button class="btn primary" id="searchBtn" type="button" onclick="fn_select_list(1); return false;">검색</button>
|
||||
</div>
|
||||
<div class="right"></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,105 @@
|
||||
<%@ 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 : maItcSleOrdrInfoInqireR.jsp
|
||||
Description : 부정 판매 대상자 상세화면 > 주문 목록
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2022-01-29 김혜인 최초생성
|
||||
--%>
|
||||
<form id="ordrForm">
|
||||
<section class="content-section">
|
||||
<h2 class="content-section__title">구매 이력</h2>
|
||||
<div class="form-control-container">
|
||||
<div class="left">
|
||||
<div class="search-number">
|
||||
<span class="search-number__text">총 <strong><c:out
|
||||
value="${resultFO2.paginationInfo.totalRecordCount}"/></strong>건</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="center">
|
||||
</div>
|
||||
<div class="right">
|
||||
<div class="select-box">
|
||||
<select id="ordrPageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_ordrList(1);">
|
||||
<c:forEach items="${ resultFO2.paginationInfo.pageUnitArr }" var="pageUnit"
|
||||
varStatus="pageUnitStatus">
|
||||
<option value="<c:out value="${ pageUnit }"/>"
|
||||
<c:if test="${resultFO2.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: 4%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 7%;">
|
||||
<col style="width: auto;">
|
||||
<col style="width: 8%">
|
||||
<col style="width: 8%">
|
||||
<col style="width: 8%">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>번호</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 resultFO2.ordrInfo }">
|
||||
<c:forEach items="${ resultFO2.ordrInfo }" var="list" varStatus="status">
|
||||
<tr>
|
||||
<td><c:out value="${resultFO2.paginationInfo.totalRecordCount - list.rnum + 1 }"/></td>
|
||||
<td><c:out value="${list.ordrRceptDt}"/></td>
|
||||
<td><c:out value="${list.sopmalNm}"/></td>
|
||||
<td><c:out value="${list.sleEnvrnNm}"/></td>
|
||||
<td><c:out value="${list.goodsNm}"/><c:if test="${list.cnt > 1}">외 <c:out
|
||||
value="${list.minusCnt}"/>종</c:if>
|
||||
<br>
|
||||
(<c:out value="${list.ordrInnb}"/>)
|
||||
</td>
|
||||
<td><c:out value="${list.goodsSum}"/>(<c:out value="${list.cnt}"/>종)</td>
|
||||
<td><fmt:formatNumber value="${list.setleAmt}" pattern="#,###"/></td>
|
||||
<td><c:out value="${list.ordrSttusNm}"/></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>
|
||||
<div class="pagination__container">
|
||||
<ui:pagination paginationInfo="${resultFO2.paginationInfo}" type="image" jsFunction="fn_select_ordrList"/>
|
||||
</div>
|
||||
<input type="hidden" id="ordrPageIndex" name="pageIndex"
|
||||
value="<c:out value ='${resultFO2.boMaMtngVO.pageIndex}'/>">
|
||||
</section>
|
||||
</form>
|
||||
@@ -0,0 +1,353 @@
|
||||
<%@ 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"%>
|
||||
<%@ page import="java.util.Date" %>
|
||||
<%--
|
||||
Class Name : MaAtmcSndngListR.jsp
|
||||
Description : 자동 발송 관리 > 자동 발송 관리
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-10-29 이운산 최초 생성
|
||||
--%>
|
||||
<style>
|
||||
.nice-select {
|
||||
max-width: 128px !important;
|
||||
min-width: 10px !important;
|
||||
}
|
||||
|
||||
option {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.td-inner{
|
||||
justify-content: flex-start;
|
||||
}
|
||||
|
||||
.td-inner .item1 {
|
||||
text-align: left;
|
||||
flex-basis: 100%;
|
||||
}
|
||||
|
||||
</style>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
//알림톡, 문자 체크박스 라디오버튼처럼 처리
|
||||
$(".radio-checkbox").each(function () {
|
||||
$(this).on("change", function () {
|
||||
if($(this).is(":checked")) {
|
||||
//선택 체크박스
|
||||
const checkBox = $(this).closest("tr").find(".radio-checkbox");
|
||||
//선택 체크박스 Y 처리
|
||||
checkBox.find('.useAtChk').val("Y");
|
||||
//선택하지 않은 체크박스
|
||||
const otherCheckBox = checkBox.not(this);
|
||||
//체크 해제
|
||||
otherCheckBox.prop("checked", false);
|
||||
//선택하지 않은 체크박스 N 처리
|
||||
otherCheckBox.closest('td').find('.useAtChk').val("N")
|
||||
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
/* 자동발송 사용여부 체크박스 */
|
||||
const checkboxContainers = $('.b-checkbox-container');
|
||||
|
||||
checkboxContainers.each(function() {
|
||||
const checkbox = $(this).find('input[type="checkbox"]');
|
||||
const checkboxVal = $(this).prev('input[type="hidden"]');
|
||||
|
||||
checkbox.change(function() {
|
||||
if ($(this).prop('checked')) {
|
||||
checkboxVal.val('Y');
|
||||
} else {
|
||||
checkboxVal.val('N');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$("#atmcTable tr").each(function () {
|
||||
let content9 = $(this).find("td:eq(9)").text().trim();
|
||||
let content7 = $(this).find("td:eq(7)").text().trim();
|
||||
content7 = content7.replace(/\n/g, '<br>'); // \n을 <br>로 변환
|
||||
content9 = content9.replace(/\n/g, '<br>'); // \n을 <br>로 변환
|
||||
$(this).find("td:eq(7)").html(content7);
|
||||
$(this).find("td:eq(9)").html(content9);
|
||||
})
|
||||
|
||||
});
|
||||
|
||||
$(".select-box > select").niceSelect();
|
||||
|
||||
// 마케팅 사용 체크에 따른 화면 처리
|
||||
$(".marktAt").each(function(){
|
||||
const checkboxVal = $(this);
|
||||
checkboxVal.change(function(){
|
||||
const isChecked = $(this).is(':checked') ? 'Y' : 'N';
|
||||
|
||||
// 체크박스에서 가장 가까운 <label>을 찾고, 그 다음에 오는 <input>을 선택
|
||||
const outerInput = $(this).closest('label').next('input');
|
||||
|
||||
// 외부 입력 필드의 값을 'Y' 또는 'N'으로 설정
|
||||
outerInput.val(isChecked);
|
||||
|
||||
})
|
||||
|
||||
});
|
||||
|
||||
// 모든 select 요소에 대해 disabled 속성 다시 적용
|
||||
$('select:disabled').each(function() {
|
||||
$(this).next('.nice-select').addClass('disabled');
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
<section 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 class="select-box">
|
||||
<select title="쇼핑몰" name = "sopmalCd" id = "sopmalCd" onchange = "fn_select_AtmcSndng();return false;">
|
||||
<c:forEach var="sopmal" items="${ sopmal }" varStatus="status">
|
||||
<option value="<c:out value="${ sopmal.sopmalCd }"/>"
|
||||
<c:if test="${ bOAtmcSndngVO.sopmalCd eq sopmal.sopmalCd}">selected="selected"</c:if>>
|
||||
<c:out value="${ sopmal.sopmalNm }"/>
|
||||
</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="horizontal-line">
|
||||
<hr class="spacing">
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical" id="atmcTable">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 5%;">
|
||||
<col style="width: 11%;">
|
||||
<col style="width: 2%;">
|
||||
<col style="width: 2%;">
|
||||
<col style="width: 2%;">
|
||||
<col style="width: 2%;">
|
||||
<col style="width: 1%;">
|
||||
<col style="width: 10%;">
|
||||
<col style="width: 2%;">
|
||||
<col style="width: 5%;">
|
||||
<col style="width: 1%;">
|
||||
<col style="width: 2%;">
|
||||
<col style="width: 2%;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<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>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<input type="hidden" id="atmcSndngList" name="atmcSndngList" value=''>
|
||||
<input type="hidden" name="pageIndex" value='0'>
|
||||
<c:choose>
|
||||
<c:when test="${ not empty resultListMap}">
|
||||
<c:forEach items="${ resultListMap }" var="list" varStatus="status">
|
||||
<tr>
|
||||
<td>
|
||||
<c:out value="${list.groupCdNm}"/>
|
||||
<input type="hidden" id="formDvCd" name="formDvCd" value='<c:out value="${list.formDvCd}"/>'>
|
||||
</td>
|
||||
<td>
|
||||
<c:out value="${list.cdNm}"/>
|
||||
<input type="hidden" id="formDtlDvCd" name="formDtlDvCd" value='<c:out value="${list.formDtlDvCd}"/>'>
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<div class="input-container">
|
||||
<div class="select-box">
|
||||
<select class="" name="useAt" title="해당 셀렉트에 대한 설명">
|
||||
<option value="Y" <c:if test="${list.useAt eq 'Y'}">selected</c:if>>사용함</option>
|
||||
<option value="N" <c:if test="${list.useAt ne 'Y'}">selected</c:if>>사용안함</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<div class="manage-btn-container gap-10">
|
||||
<input type="hidden" class="useAtChk" name="ntcntalkUseAt" value="<c:out value="${list.ntcntalkUseAt}"/>">
|
||||
<c:if test="${not empty list.ntcntalkSndngFormInnb}">
|
||||
<div class="b-checkbox-container">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" class="radio-checkbox" value="" <c:if test="${list.ntcntalkUseAt eq 'Y'}">checked</c:if>>
|
||||
<span class="check"></span>
|
||||
<span class="control-label">발송</span>
|
||||
</label>
|
||||
</div>
|
||||
<a href="/admin/ntcn/tmplt/selectAtmcSndngTmplatManage?ntcntalkChange=${list.formDvCd}" class="btn xsm gray">보기</a>
|
||||
</c:if>
|
||||
<c:if test="${empty list.ntcntalkSndngFormInnb}">
|
||||
<div class="b-checkbox-container">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="" onclick="fn_click_NoTemplate()" <c:if test="${list.ntcntalkUseAt eq 'Y'}">checked</c:if>>
|
||||
<span class="check"></span>
|
||||
<span class="control-label">발송</span>
|
||||
</label>
|
||||
</div>
|
||||
<span class="btn xsm" style="border: 1px solid;">미정</span>
|
||||
</c:if>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="manage-btn-container gap-10">
|
||||
<input type="hidden" class="useAtChk" name="smsUseAt" value="<c:out value="${list.smsUseAt}"/>">
|
||||
<c:if test="${not empty list.smsSndngFormInnb}">
|
||||
<div class="b-checkbox-container">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" class="radio-checkbox" value="" <c:if test="${list.smsUseAt eq 'Y'}">checked</c:if>>
|
||||
<span class="check"></span>
|
||||
<span class="control-label">발송</span>
|
||||
</label>
|
||||
</div>
|
||||
<a href="/admin/ntcn/tmplt/selectAtmcSndngTmplatManage?mssageChange=${list.formDvCd}" class="btn xsm gray">보기</a>
|
||||
</c:if>
|
||||
<c:if test="${empty list.smsSndngFormInnb}">
|
||||
<div class="b-checkbox-container">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="" onclick="fn_click_NoTemplate()" <c:if test="${list.smsUseAt eq 'Y'}">checked</c:if>>
|
||||
<span class="check"></span>
|
||||
<span class="control-label">발송</span>
|
||||
</label>
|
||||
</div>
|
||||
<span class="btn xsm" style="border: 1px solid;">미정</span>
|
||||
</c:if>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="manage-btn-container gap-10">
|
||||
<input type="hidden" name="emailUseAt" value="<c:out value="${list.emailUseAt}"/>">
|
||||
<c:if test="${not empty list.emailSndngFormInnb}">
|
||||
<div class="b-checkbox-container">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="" <c:if test="${list.emailUseAt eq 'Y'}">checked</c:if>>
|
||||
<span class="check"></span>
|
||||
<span class="control-label">발송</span>
|
||||
</label>
|
||||
</div>
|
||||
<a href="/admin/ntcn/tmplt/selectAtmcSndngTmplatManage?emailChange=${list.formDvCd}%26${list.formDtlDvCd}" class="btn xsm gray">보기</a>
|
||||
</c:if>
|
||||
<c:if test="${empty list.emailSndngFormInnb}">
|
||||
<div class="b-checkbox-container">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="" onclick="fn_click_NoTemplate()" <c:if test="${list.emailUseAt eq 'Y'}">checked</c:if>>
|
||||
<span class="check"></span>
|
||||
<span class="control-label">발송</span>
|
||||
</label>
|
||||
</div>
|
||||
<span class="btn xsm" style="border: 1px solid;">미정</span>
|
||||
</c:if>
|
||||
</div>
|
||||
</td>
|
||||
<td class="">
|
||||
<label class="b-checkbox checkbox is-medium">
|
||||
<input type="checkbox" class="marktAt" value=""
|
||||
<c:if test="${list.marktAt == 'Y'}">
|
||||
checked
|
||||
</c:if>
|
||||
onclick="return false;"
|
||||
>
|
||||
<span class="check"></span>
|
||||
</label>
|
||||
<input type="hidden" name="marktAt" value="<c:out value="${list.marktAt}"/>">
|
||||
</td>
|
||||
<td class="">
|
||||
<c:out value="${list.colctPd}"/>
|
||||
</td>
|
||||
<td>
|
||||
<c:choose>
|
||||
<c:when test="${not empty list.sndngStdrDe}">
|
||||
<div class="input-container">
|
||||
<div class="select-box">
|
||||
<select name="sndngStdrDe" title="발송기준일자">
|
||||
<c:forEach var="i" begin="0"
|
||||
end="30">
|
||||
<option value="<fmt:formatNumber value="${i}" pattern="0"/>"
|
||||
<c:if test="${list.sndngStdrDe eq i}">selected</c:if>>
|
||||
<fmt:formatNumber value="${i}" pattern="0"/>
|
||||
</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</td>
|
||||
<td class=text-center">
|
||||
<c:out value="${list.suffcnStdr}"/>
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<c:choose>
|
||||
<c:when test="${list.dplctSndngAt eq 'N'}">
|
||||
불가
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
가능
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<c:out value="${list.sndngDc}"/>
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<c:choose>
|
||||
<c:when test="${list.marktAt == 'Y'}">
|
||||
<div class="input-container">
|
||||
<div class="select-box">
|
||||
<select name="sndngStdrTme" title="발송시간">
|
||||
<c:forEach var="i" begin="${shopAtmcSndntTme.smsAtmcSndngLmttBgntme}"
|
||||
end="${shopAtmcSndntTme.smsAtmcSndngLmttEndtme}">
|
||||
<option value="<fmt:formatNumber value="${i}" pattern="00"/>"
|
||||
<c:if test="${list.sndngStdrTme eq i}">selected</c:if>>
|
||||
<fmt:formatNumber value="${i}" pattern="00"/>
|
||||
</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
</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>
|
||||
@@ -0,0 +1,157 @@
|
||||
<%@ 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"%>
|
||||
<%@ page import="java.util.Date" %>
|
||||
<%--
|
||||
Class Name : MaAtmcSndngManage.jsp
|
||||
Description : 자동 발송 관리
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-03-04 리브가 최초 생성
|
||||
2024-05-01 이대환 내용 수정
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
</head>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
fn_select_AtmcSndng() ;
|
||||
|
||||
$('#listForm').on('keydown', function(e) {
|
||||
if (e.keyCode == 13) {
|
||||
e.preventDefault();
|
||||
$('#searchBtn').click();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
/* ********************************************************
|
||||
* 자동 발송 관리 TAB
|
||||
******************************************************** */
|
||||
const fn_select_AtmcSndng = function () {
|
||||
const sopmalCd = $("#sopmalCd").val();
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: '/admin/ntcn/atmcsndng/selectAtmcSndngManageListInqire',
|
||||
data: {
|
||||
'sopmalCd' : sopmalCd
|
||||
},
|
||||
success: function (resultHtml) {
|
||||
$("#selectMssageAtmcSndngBtn").removeClass("active");
|
||||
$("#selectEmailAtmcSndngBtn").removeClass("active");
|
||||
$("#selectNtcntalkAtmcSndngBtn").removeClass("active");
|
||||
$("#selectListInqireForm").removeClass("active");
|
||||
|
||||
$("#selectAtmcSndngBtn").addClass("active");
|
||||
$("#selectAtmcSndng").addClass("active");
|
||||
$('#selectAtmcSndng').html(resultHtml);
|
||||
|
||||
$("#atmcSndngUpdateBtn").css("display" ,"block");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 자동 발송 템플릿 미존재 알림
|
||||
******************************************************** */
|
||||
const fn_click_NoTemplate = function () {
|
||||
event.preventDefault();
|
||||
alert('정의되지 않은 템플릿입니다.');
|
||||
}
|
||||
|
||||
/**********************************************
|
||||
* 자동 발송 관리 수정
|
||||
***********************************************/
|
||||
const fn_update_AtmcSndng = function() {
|
||||
|
||||
if (confirm('자동 발송 관리를 <spring:message code="confirm.common.update"/>')) {
|
||||
|
||||
let dataArr = [];
|
||||
$("tr").each(function () {
|
||||
let dataObj = {};
|
||||
$(this).find("input, select").each(function(){
|
||||
const name = $(this).attr("name");
|
||||
const value = $(this).val();
|
||||
|
||||
if(name) {
|
||||
dataObj[name] = value;
|
||||
}
|
||||
dataArr.push(dataObj);
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
const atmcSndngList = JSON.stringify(dataArr);
|
||||
|
||||
$("#atmcSndngList").val(atmcSndngList);
|
||||
|
||||
$.ajax({
|
||||
type : 'post',
|
||||
url : '/admin/ntcn/atmcsndng/updateAtmcSndngManage',
|
||||
data : $('form').serialize(),
|
||||
// dataType: 'text',
|
||||
success : function(data) {
|
||||
const str = JSON.parse(data.resBody.result);
|
||||
if (str.status === '0') {
|
||||
alert('<spring:message code="success.common.update"/>');
|
||||
} else {
|
||||
alert('<spring:message code="fail.common.update"/>');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
<body>
|
||||
<%-- 상단메뉴 공통화 적용 : 2023-11-30 / 박철민 추가 --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%-- 좌측메뉴 공통화 적용 : 2023-11-30 / 박철민 추가 --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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_update_AtmcSndng()" id="atmcSndngUpdateBtn">저장하기
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<%-- <div class="content-tab">--%>
|
||||
<%-- <button class="content-tab__btn active" id="selectAtmcSndngBtn" onclick="fn_select_AtmcSndng()">자동 발송 관리</button>--%>
|
||||
<%-- <button class="content-tab__btn" id="selectMssageAtmcSndngBtn" onclick="fn_select_MssageAtmcSndng()">메시지 발송 내역</button>--%>
|
||||
<%-- <button class="content-tab__btn" id="selectEmailAtmcSndngBtn" onclick="fn_select_EmailAtmcSndng()">이메일 발송 내역</button>--%>
|
||||
<%-- <button class="content-tab__btn" id="selectNtcntalkAtmcSndngBtn" onclick="fn_select_NtcntalkAtmcSndng()">알림톡 발송 내역</button>--%>
|
||||
<%-- </div>--%>
|
||||
<form>
|
||||
<div class="content-tab__content active" id="selectAtmcSndng">
|
||||
<%--자동 발송 관리--%>
|
||||
</div>
|
||||
</form>
|
||||
<form id='listForm' name="listForm">
|
||||
<input type="hidden" id="pageIndex" name="pageIndex"/>
|
||||
<div class="content-tab__content" id="selectListInqireForm">
|
||||
<%--자동 발송 내역--%>
|
||||
</div>
|
||||
</form>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<div id="MessageAtmcSndngDtlDiv"></div>
|
||||
<div id="EmailAtmcSndngDtlDiv"></div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,413 @@
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<%-- <link rel="stylesheet" href="<c:url value='/daumeditor/css/content_view.css'/>"> --%>
|
||||
<%-- <link rel="stylesheet" href="<c:url value='/daumeditor/css/content_wysiwyg.css'/>"> --%>
|
||||
<%-- <link rel="stylesheet" href="<c:url value='/daumeditor/css/editor.css'/>"> --%>
|
||||
<%-- <link rel="stylesheet" href="<c:url value='/daumeditor/css/popup.css'/>"> --%>
|
||||
<style>
|
||||
#tx_horizontalrule_menu a{
|
||||
width: 150px; height: 29px;
|
||||
}
|
||||
</style>
|
||||
<!-- <div class="body"> -->
|
||||
<!-- 에디터 시작 -->
|
||||
<!--
|
||||
@decsription
|
||||
등록하기 위한 Form으로 상황에 맞게 수정하여 사용한다. Form 이름은 에디터를 생성할 때 설정값으로 설정한다.
|
||||
-->
|
||||
<!-- <form name="tx_editor_form" id="tx_editor_form" action="http://posttestserver.com/post.php" method="post" accept-charset="utf-8"> -->
|
||||
<!-- 에디터 컨테이너 시작 -->
|
||||
<div id="tx_trex_container" class="tx-editor-container" style="width: 100%">
|
||||
|
||||
<!-- 툴바 - 기본 시작 -->
|
||||
<!--
|
||||
@decsription
|
||||
툴바 버튼의 그룹핑의 변경이 필요할 때는 위치(왼쪽, 가운데, 오른쪽) 에 따라 <li> 아래의 <div>의 클래스명을 변경하면 된다.
|
||||
tx-btn-lbg: 왼쪽, tx-btn-bg: 가운데, tx-btn-rbg: 오른쪽, tx-btn-lrbg: 독립적인 그룹
|
||||
|
||||
드롭다운 버튼의 크기를 변경하고자 할 경우에는 넓이에 따라 <li> 아래의 <div>의 클래스명을 변경하면 된다.
|
||||
tx-slt-70bg, tx-slt-59bg, tx-slt-42bg, tx-btn-43lrbg, tx-btn-52lrbg, tx-btn-57lrbg, tx-btn-71lrbg
|
||||
tx-btn-48lbg, tx-btn-48rbg, tx-btn-30lrbg, tx-btn-46lrbg, tx-btn-67lrbg, tx-btn-49lbg, tx-btn-58bg, tx-btn-46bg, tx-btn-49rbg
|
||||
-->
|
||||
<div id="tx_toolbar_basic" class="tx-toolbar tx-toolbar-basic"><div class="tx-toolbar-boundary">
|
||||
<ul class="tx-bar tx-bar-left">
|
||||
<li class="tx-list">
|
||||
<div id="tx_fontfamily" unselectable="on" class="tx-slt-70bg tx-fontfamily">
|
||||
<a href="javascript:;" title="글꼴">굴림</a>
|
||||
</div>
|
||||
<div id="tx_fontfamily_menu" class="tx-fontfamily-menu tx-menu" unselectable="on"></div>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="tx-bar tx-bar-left">
|
||||
<li class="tx-list">
|
||||
<div unselectable="on" class="tx-slt-42bg tx-fontsize" id="tx_fontsize">
|
||||
<a href="javascript:;" title="글자크기">9pt</a>
|
||||
</div>
|
||||
<div id="tx_fontsize_menu" class="tx-fontsize-menu tx-menu" unselectable="on"></div>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="tx-bar tx-bar-left tx-group-font">
|
||||
|
||||
<li class="tx-list">
|
||||
<div unselectable="on" class=" tx-btn-lbg tx-bold" id="tx_bold">
|
||||
<a href="javascript:;" class="tx-icon" title="굵게 (Ctrl+B)">굵게</a>
|
||||
</div>
|
||||
</li>
|
||||
<li class="tx-list">
|
||||
<div unselectable="on" class=" tx-btn-bg tx-underline" id="tx_underline">
|
||||
<a href="javascript:;" class="tx-icon" title="밑줄 (Ctrl+U)">밑줄</a>
|
||||
</div>
|
||||
</li>
|
||||
<li class="tx-list">
|
||||
<div unselectable="on" class=" tx-btn-bg tx-italic" id="tx_italic">
|
||||
<a href="javascript:;" class="tx-icon" title="기울임 (Ctrl+I)">기울임</a>
|
||||
</div>
|
||||
</li>
|
||||
<li class="tx-list">
|
||||
<div unselectable="on" class=" tx-btn-bg tx-strike" id="tx_strike">
|
||||
<a href="javascript:;" class="tx-icon" title="취소선 (Ctrl+D)">취소선</a>
|
||||
</div>
|
||||
</li>
|
||||
<li class="tx-list">
|
||||
<div unselectable="on" class=" tx-slt-tbg tx-forecolor" id="tx_forecolor">
|
||||
<a href="javascript:;" class="tx-icon" title="글자색">글자색</a>
|
||||
<a href="javascript:;" class="tx-arrow" title="글자색 선택">글자색 선택</a>
|
||||
</div>
|
||||
<div id="tx_forecolor_menu" class="tx-menu tx-forecolor-menu tx-colorpallete"
|
||||
unselectable="on"></div>
|
||||
</li>
|
||||
<li class="tx-list">
|
||||
<div unselectable="on" class=" tx-slt-brbg tx-backcolor" id="tx_backcolor">
|
||||
<a href="javascript:;" class="tx-icon" title="글자 배경색">글자 배경색</a>
|
||||
<a href="javascript:;" class="tx-arrow" title="글자 배경색 선택">글자 배경색 선택</a>
|
||||
</div>
|
||||
<div id="tx_backcolor_menu" class="tx-menu tx-backcolor-menu tx-colorpallete"
|
||||
unselectable="on"></div>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="tx-bar tx-bar-left tx-group-align">
|
||||
<li class="tx-list">
|
||||
<div unselectable="on" class=" tx-btn-lbg tx-alignleft" id="tx_alignleft">
|
||||
<a href="javascript:;" class="tx-icon" title="왼쪽정렬 (Ctrl+,)">왼쪽정렬</a>
|
||||
</div>
|
||||
</li>
|
||||
<li class="tx-list">
|
||||
<div unselectable="on" class=" tx-btn-bg tx-aligncenter" id="tx_aligncenter">
|
||||
<a href="javascript:;" class="tx-icon" title="가운데정렬 (Ctrl+.)">가운데정렬</a>
|
||||
</div>
|
||||
</li>
|
||||
<li class="tx-list">
|
||||
<div unselectable="on" class=" tx-btn-bg tx-alignright" id="tx_alignright">
|
||||
<a href="javascript:;" class="tx-icon" title="오른쪽정렬 (Ctrl+/)">오른쪽정렬</a>
|
||||
</div>
|
||||
</li>
|
||||
<li class="tx-list">
|
||||
<div unselectable="on" class=" tx-btn-rbg tx-alignfull" id="tx_alignfull">
|
||||
<a href="javascript:;" class="tx-icon" title="양쪽정렬">양쪽정렬</a>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="tx-bar tx-bar-left tx-group-tab">
|
||||
<li class="tx-list">
|
||||
<div unselectable="on" class=" tx-btn-lbg tx-indent" id="tx_indent">
|
||||
<a href="javascript:;" title="들여쓰기 (Tab)" class="tx-icon">들여쓰기</a>
|
||||
</div>
|
||||
</li>
|
||||
<li class="tx-list">
|
||||
<div unselectable="on" class=" tx-btn-rbg tx-outdent" id="tx_outdent">
|
||||
<a href="javascript:;" title="내어쓰기 (Shift+Tab)" class="tx-icon">내어쓰기</a>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="tx-bar tx-bar-left tx-group-list">
|
||||
<li class="tx-list">
|
||||
<div unselectable="on" class="tx-slt-31lbg tx-lineheight" id="tx_lineheight">
|
||||
<a href="javascript:;" class="tx-icon" title="줄간격">줄간격</a>
|
||||
<a href="javascript:;" class="tx-arrow" title="줄간격">줄간격 선택</a>
|
||||
</div>
|
||||
<div id="tx_lineheight_menu" class="tx-lineheight-menu tx-menu" unselectable="on"></div>
|
||||
</li>
|
||||
<li class="tx-list">
|
||||
<div unselectable="on" class="tx-slt-31rbg tx-styledlist" id="tx_styledlist">
|
||||
<a href="javascript:;" class="tx-icon" title="리스트">리스트</a>
|
||||
<a href="javascript:;" class="tx-arrow" title="리스트">리스트 선택</a>
|
||||
</div>
|
||||
<div id="tx_styledlist_menu" class="tx-styledlist-menu tx-menu" unselectable="on"></div>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="tx-bar tx-bar-left tx-group-etc">
|
||||
<li class="tx-list">
|
||||
<div unselectable="on" class=" tx-btn-lbg tx-emoticon" id="tx_emoticon">
|
||||
<a href="javascript:;" class="tx-icon" title="이모티콘">이모티콘</a>
|
||||
</div>
|
||||
<div id="tx_emoticon_menu" class="tx-emoticon-menu tx-menu" unselectable="on"></div>
|
||||
</li>
|
||||
<li class="tx-list">
|
||||
<div unselectable="on" class=" tx-btn-bg tx-link" id="tx_link">
|
||||
<a href="javascript:;" class="tx-icon" title="링크 (Ctrl+K)">링크</a>
|
||||
</div>
|
||||
<div id="tx_link_menu" class="tx-link-menu tx-menu"></div>
|
||||
</li>
|
||||
<li class="tx-list">
|
||||
<div unselectable="on" class=" tx-btn-bg tx-specialchar" id="tx_specialchar">
|
||||
<a href="javascript:;" class="tx-icon" title="특수문자">특수문자</a>
|
||||
</div>
|
||||
<div id="tx_specialchar_menu" class="tx-specialchar-menu tx-menu"></div>
|
||||
</li>
|
||||
<li class="tx-list">
|
||||
<div unselectable="on" class=" tx-btn-bg tx-table" id="tx_table">
|
||||
<a href="javascript:;" class="tx-icon" title="표만들기">표만들기</a>
|
||||
</div>
|
||||
<div id="tx_table_menu" class="tx-table-menu tx-menu" unselectable="on">
|
||||
<div class="tx-menu-inner">
|
||||
<div class="tx-menu-preview"></div>
|
||||
<div class="tx-menu-rowcol"></div>
|
||||
<div class="tx-menu-deco"></div>
|
||||
<div class="tx-menu-enter"></div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="tx-list">
|
||||
<div unselectable="on" class=" tx-btn-rbg tx-horizontalrule" id="tx_horizontalrule">
|
||||
<a href="javascript:;" class="tx-icon" title="구분선">구분선</a>
|
||||
</div>
|
||||
<div id="tx_horizontalrule_menu" class="tx-horizontalrule-menu tx-menu" unselectable="on"></div>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="tx-bar tx-bar-left">
|
||||
<li class="tx-list">
|
||||
<div unselectable="on" class=" tx-btn-lbg tx-richtextbox" id="tx_richtextbox">
|
||||
<a href="javascript:;" class="tx-icon" title="글상자">글상자</a>
|
||||
</div>
|
||||
<div id="tx_richtextbox_menu" class="tx-richtextbox-menu tx-menu">
|
||||
<div class="tx-menu-header">
|
||||
<div class="tx-menu-preview-area">
|
||||
<div class="tx-menu-preview"></div>
|
||||
</div>
|
||||
<div class="tx-menu-switch">
|
||||
<div class="tx-menu-simple tx-selected"><a><span>간단 선택</span></a></div>
|
||||
<div class="tx-menu-advanced"><a><span>직접 선택</span></a></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tx-menu-inner">
|
||||
</div>
|
||||
<div class="tx-menu-footer">
|
||||
<img class="tx-menu-confirm"
|
||||
src="/daumeditor/images/icon/editor/btn_confirm.gif?rv=1.0.1" alt=""/>
|
||||
<img class="tx-menu-cancel" hspace="3"
|
||||
src="/daumeditor/images/icon/editor/btn_cancel.gif?rv=1.0.1" alt=""/>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="tx-list">
|
||||
<div unselectable="on" class=" tx-btn-bg tx-quote" id="tx_quote">
|
||||
<a href="javascript:;" class="tx-icon" title="인용구 (Ctrl+Q)">인용구</a>
|
||||
</div>
|
||||
<div id="tx_quote_menu" class="tx-quote-menu tx-menu" unselectable="on"></div>
|
||||
</li>
|
||||
<li class="tx-list">
|
||||
<div unselectable="on" class=" tx-btn-bg tx-background" id="tx_background">
|
||||
<a href="javascript:;" class="tx-icon" title="배경색">배경색</a>
|
||||
</div>
|
||||
<div id="tx_background_menu" class="tx-menu tx-background-menu tx-colorpallete"
|
||||
unselectable="on"></div>
|
||||
</li>
|
||||
<li class="tx-list">
|
||||
<div unselectable="on" class=" tx-btn-rbg tx-dictionary" id="tx_dictionary">
|
||||
<a href="javascript:;" class="tx-icon" title="사전">사전</a>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="tx-bar tx-bar-left tx-group-undo">
|
||||
<li class="tx-list">
|
||||
<div unselectable="on" class=" tx-btn-lbg tx-undo" id="tx_undo">
|
||||
<a href="javascript:;" class="tx-icon" title="실행취소 (Ctrl+Z)">실행취소</a>
|
||||
</div>
|
||||
</li>
|
||||
<li class="tx-list">
|
||||
<div unselectable="on" class=" tx-btn-rbg tx-redo" id="tx_redo">
|
||||
<a href="javascript:;" class="tx-icon" title="다시실행 (Ctrl+Y)">다시실행</a>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="tx-bar tx-bar-left">
|
||||
<li class="tx-list">
|
||||
<div unselectable="on" id="tx_image" class="tx-image tx-btn-trans">
|
||||
<a href="javascript:;" title="사진" class="tx-text">사진</a>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="tx-bar tx-bar-right">
|
||||
<li class="tx-list">
|
||||
<div unselectable="on" class="tx-btn-nlrbg tx-advanced" id="tx_advanced">
|
||||
<a href="javascript:;" class="tx-icon" title="툴바 더보기">툴바 더보기</a>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="tx-bar tx-bar-right">
|
||||
<li class="tx-list">
|
||||
<div unselectable="on" class="tx-btn-lrbg tx-fullscreen" id="tx_fullscreen">
|
||||
<a href="javascript:;" class="tx-icon" title="넓게쓰기 (Ctrl+M)">넓게쓰기</a>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="tx-bar tx-bar-right">
|
||||
<li class="tx-list" style="padding-top: 0">
|
||||
<div unselectable="on" class="tx-switchtoggle" id="tx_switchertoggle">
|
||||
<a href="javascript:;" title="에디터 타입">에디터</a>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div></div>
|
||||
<!-- 툴바 - 기본 끝 -->
|
||||
<!-- 툴바 - 더보기 시작 -->
|
||||
<div id="tx_toolbar_advanced" class="tx-toolbar tx-toolbar-advanced"><div class="tx-toolbar-boundary">
|
||||
<ul class="tx-bar tx-bar-left">
|
||||
<li class="tx-list">
|
||||
<div class="tx-tableedit-title"></div>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<ul class="tx-bar tx-bar-left tx-group-align">
|
||||
<li class="tx-list">
|
||||
<div unselectable="on" class="tx-btn-lbg tx-mergecells" id="tx_mergecells">
|
||||
<a href="javascript:;" class="tx-icon2" title="병합">병합</a>
|
||||
</div>
|
||||
<div id="tx_mergecells_menu" class="tx-mergecells-menu tx-menu" unselectable="on"></div>
|
||||
</li>
|
||||
<li class="tx-list">
|
||||
<div unselectable="on" class="tx-btn-bg tx-insertcells" id="tx_insertcells">
|
||||
<a href="javascript:;" class="tx-icon2" title="삽입">삽입</a>
|
||||
</div>
|
||||
<div id="tx_insertcells_menu" class="tx-insertcells-menu tx-menu" unselectable="on"></div>
|
||||
</li>
|
||||
<li class="tx-list">
|
||||
<div unselectable="on" class="tx-btn-rbg tx-deletecells" id="tx_deletecells">
|
||||
<a href="javascript:;" class="tx-icon2" title="삭제">삭제</a>
|
||||
</div>
|
||||
<div id="tx_deletecells_menu" class="tx-deletecells-menu tx-menu" unselectable="on"></div>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<ul class="tx-bar tx-bar-left tx-group-align">
|
||||
<li class="tx-list">
|
||||
<div id="tx_cellslinepreview" unselectable="on" class="tx-slt-70lbg tx-cellslinepreview">
|
||||
<a href="javascript:;" title="선 미리보기"></a>
|
||||
</div>
|
||||
<div id="tx_cellslinepreview_menu" class="tx-cellslinepreview-menu tx-menu"
|
||||
unselectable="on"></div>
|
||||
</li>
|
||||
<li class="tx-list">
|
||||
<div id="tx_cellslinecolor" unselectable="on" class="tx-slt-tbg tx-cellslinecolor">
|
||||
<a href="javascript:;" class="tx-icon2" title="선색">선색</a>
|
||||
|
||||
<div class="tx-colorpallete" unselectable="on"></div>
|
||||
</div>
|
||||
<div id="tx_cellslinecolor_menu" class="tx-cellslinecolor-menu tx-menu tx-colorpallete"
|
||||
unselectable="on"></div>
|
||||
</li>
|
||||
<li class="tx-list">
|
||||
<div id="tx_cellslineheight" unselectable="on" class="tx-btn-bg tx-cellslineheight">
|
||||
<a href="javascript:;" class="tx-icon2" title="두께">두께</a>
|
||||
|
||||
</div>
|
||||
<div id="tx_cellslineheight_menu" class="tx-cellslineheight-menu tx-menu"
|
||||
unselectable="on"></div>
|
||||
</li>
|
||||
<li class="tx-list">
|
||||
<div id="tx_cellslinestyle" unselectable="on" class="tx-btn-bg tx-cellslinestyle">
|
||||
<a href="javascript:;" class="tx-icon2" title="스타일">스타일</a>
|
||||
</div>
|
||||
<div id="tx_cellslinestyle_menu" class="tx-cellslinestyle-menu tx-menu" unselectable="on"></div>
|
||||
</li>
|
||||
<li class="tx-list">
|
||||
<div id="tx_cellsoutline" unselectable="on" class="tx-btn-rbg tx-cellsoutline">
|
||||
<a href="javascript:;" class="tx-icon2" title="테두리">테두리</a>
|
||||
|
||||
</div>
|
||||
<div id="tx_cellsoutline_menu" class="tx-cellsoutline-menu tx-menu" unselectable="on"></div>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="tx-bar tx-bar-left">
|
||||
<li class="tx-list">
|
||||
<div id="tx_tablebackcolor" unselectable="on" class="tx-btn-lrbg tx-tablebackcolor"
|
||||
style="background-color:#9aa5ea;">
|
||||
<a href="javascript:;" class="tx-icon2" title="테이블 배경색">테이블 배경색</a>
|
||||
</div>
|
||||
<div id="tx_tablebackcolor_menu" class="tx-tablebackcolor-menu tx-menu tx-colorpallete"
|
||||
unselectable="on"></div>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="tx-bar tx-bar-left">
|
||||
<li class="tx-list">
|
||||
<div id="tx_tabletemplate" unselectable="on" class="tx-btn-lrbg tx-tabletemplate">
|
||||
<a href="javascript:;" class="tx-icon2" title="테이블 서식">테이블 서식</a>
|
||||
</div>
|
||||
<div id="tx_tabletemplate_menu" class="tx-tabletemplate-menu tx-menu tx-colorpallete"
|
||||
unselectable="on"></div>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div></div>
|
||||
<!-- 툴바 - 더보기 끝 -->
|
||||
<!-- 편집영역 시작 -->
|
||||
<!-- 에디터 Start -->
|
||||
<div id="tx_canvas" class="tx-canvas">
|
||||
<div id="tx_loading" class="tx-loading"><div><img src="/daumeditor/images/icon/editor/loading2.png" width="113" height="21" align="absmiddle"/></div></div>
|
||||
<div id="tx_canvas_wysiwyg_holder" class="tx-holder" style="display:block;">
|
||||
<iframe id="tx_canvas_wysiwyg" name="tx_canvas_wysiwyg" allowtransparency="true" frameborder="0"></iframe>
|
||||
</div>
|
||||
<div class="tx-source-deco">
|
||||
<div id="tx_canvas_source_holder" class="tx-holder">
|
||||
<textarea id="tx_canvas_source" rows="30" cols="30"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div id="tx_canvas_text_holder" class="tx-holder">
|
||||
<textarea id="tx_canvas_text" rows="30" cols="30"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 높이조절 Start -->
|
||||
<div id="tx_resizer" class="tx-resize-bar">
|
||||
<div class="tx-resize-bar-bg"></div>
|
||||
<img id="tx_resize_holder" src="/daumeditor/images/icon/editor/skin/01/btn_drag01.gif" width="58" height="12" unselectable="on" alt="" />
|
||||
</div>
|
||||
<!-- 편집영역 끝 -->
|
||||
<!-- 첨부박스 시작 -->
|
||||
<!-- 파일첨부박스 Start -->
|
||||
<div id="tx_attach_div" class="tx-attach-div">
|
||||
<div id="tx_attach_txt" class="tx-attach-txt">파일 첨부</div>
|
||||
<div id="tx_attach_box" class="tx-attach-box">
|
||||
<div class="tx-attach-box-inner">
|
||||
<div id="tx_attach_preview" class="tx-attach-preview"><p></p><img src="/daumeditor/images/icon/editor/pn_preview.gif" width="147" height="108" unselectable="on"/></div>
|
||||
<div class="tx-attach-main">
|
||||
<div id="tx_upload_progress" class="tx-upload-progress"><div>0%</div><p>파일을 업로드하는 중입니다.</p></div>
|
||||
<ul class="tx-attach-top">
|
||||
<li id="tx_attach_delete" class="tx-attach-delete"><a>전체삭제</a></li>
|
||||
<li id="tx_attach_size" class="tx-attach-size">
|
||||
파일: <span id="tx_attach_up_size" class="tx-attach-size-up"></span>/<span id="tx_attach_max_size"></span>
|
||||
</li>
|
||||
<li id="tx_attach_tools" class="tx-attach-tools">
|
||||
</li>
|
||||
</ul>
|
||||
<ul id="tx_attach_list" class="tx-attach-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 첨부박스 끝 -->
|
||||
</div>
|
||||
<!-- 에디터 컨테이너 끝 -->
|
||||
<!-- </form> -->
|
||||
<!-- </div> -->
|
||||
<!-- 에디터 끝 -->
|
||||
<script src="/daumeditor/js/editor_default_set.js">
|
||||
// Editor.modify({
|
||||
// "attachments": function () { /* 저장된 첨부가 있을 경우 배열로 넘김, 위의 부분을 수정하고 아래 부분은 수정없이 사용 */
|
||||
// var allattachments = [];
|
||||
// for (var i in attachments) {
|
||||
// allattachments = allattachments.concat(attachments[i]);
|
||||
// }
|
||||
// return allattachments;
|
||||
// }(),
|
||||
// "content": document.getElementById("sample_contents_source") /* 내용 문자열, 주어진 필드(textarea) 엘리먼트 */
|
||||
// });
|
||||
</script>
|
||||
@@ -0,0 +1,130 @@
|
||||
<%@ 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 : MaEmailSndngDtlPopupMbrTb.jsp
|
||||
Description : 이메일 상세 조회 팝업 > 수신자 정보
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023-01-29 김혜인 최초생성
|
||||
2024-04-04 이대환 내용 수정
|
||||
--%>
|
||||
<script>
|
||||
</script>
|
||||
|
||||
<hr class="horizontal-line">
|
||||
<section class="content-section">
|
||||
<h2 class="content-section__title">수신 내역</h2>
|
||||
<div class="form-control-container">
|
||||
<div class="left">
|
||||
<div class="search-number">
|
||||
<span class="search-number__text">총 <strong><c:out value="${ resultListMapMbr.paginationInfo.totalRecordCount }"/></strong>건</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="center">
|
||||
</div>
|
||||
<div class="right">
|
||||
<div class="select-box">
|
||||
<select id="mbrPageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_mbrInfo(1);">
|
||||
<c:forEach items="${ resultListMapMbr.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
|
||||
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultListMapMbr.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">
|
||||
</div>
|
||||
</div>
|
||||
<hr class="spacing">
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical">
|
||||
<caption>수신 내역</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 6%;">
|
||||
<col style="width: auto">
|
||||
<col style="width: 15%;">
|
||||
<col style="width: 15%;">
|
||||
<col style="width: 20%;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>번호</th>
|
||||
<th>수신주소</th>
|
||||
<th>수신자명</th>
|
||||
<th>수신상태</th>
|
||||
<th>발송일자</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:choose>
|
||||
<c:when test="${ not empty resultListMapMbr.boCtrlMap}">
|
||||
<c:forEach items="${ resultListMapMbr.boCtrlMap }" var="list" varStatus="status">
|
||||
<tr>
|
||||
<td><c:out value="${resultListMapMbr.paginationInfo.totalRecordCount - list.rnum + 1 }" /></td>
|
||||
<td>
|
||||
<span class="table-ellipsis">
|
||||
<c:out value = "${list.recpntEmail}"/>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<c:out value = "${list.recpntNm}"/>
|
||||
</td>
|
||||
<td>
|
||||
<c:choose>
|
||||
<c:when test="${list.sttus eq 'REG'}">
|
||||
등록
|
||||
</c:when>
|
||||
<c:when test="${list.sttus eq 'BAD'}">
|
||||
불량
|
||||
</c:when>
|
||||
<c:when test="${list.sttus eq 'WAIT'}">
|
||||
대기
|
||||
</c:when>
|
||||
<c:when test="${list.sttus eq 'SEND'}">
|
||||
전송
|
||||
</c:when>
|
||||
<c:when test="${list.sttus eq 'FAIL'}">
|
||||
실패
|
||||
</c:when>
|
||||
<c:when test="${list.sttus eq 'OK'}">
|
||||
성공
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
정의되지 않음
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</td>
|
||||
<td>
|
||||
<c:out value = "${list.sndngDt}"/>
|
||||
</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>
|
||||
<input type = "hidden" id = "mbrPageIndex" name = "pageIndex" value = "${resultListMapMbr.bOMaEmailSrchVO.pageIndex}"/>
|
||||
<input type = "hidden" id = "emailSndngInnb" name = "emailSndngInnb" value = "${resultListMapMbr.bOMaEmailSrchVO.emailSndngInnb}"/>
|
||||
<div class="pagination__container">
|
||||
<ui:pagination paginationInfo="${resultListMapMbr.paginationInfo}" type="image" jsFunction="fn_select_mbrInfo"/>
|
||||
</div>
|
||||
@@ -0,0 +1,80 @@
|
||||
<%@ 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 : MaEmailSndngDtlPopupR.jsp
|
||||
Description : 이메일 상세 조회 팝업 (발신 정보)
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023-01-29 김혜인 최초생성
|
||||
2024-04-04 이대환 내용 수정
|
||||
--%>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
let encodedCn = '${ resultMapDtl.boCtrlMap.cn }';
|
||||
let decodedCn = $('<textarea/>').html(encodedCn).text();
|
||||
$("#emailCn").html(decodedCn);
|
||||
});
|
||||
</script>
|
||||
<!-- 이메일 본문 조회 모달 -->
|
||||
<div id="email-check-pop" class="modal" style="max-width: 900px;">
|
||||
<div class="modal-header">
|
||||
<h4>이메일 본문 조회</h4>
|
||||
</div>
|
||||
<div class="modal-content">
|
||||
<h2 class="content-section__title">발신 정보</h2>
|
||||
<div class="table-wrapper">
|
||||
<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>
|
||||
<div class="td-inner">
|
||||
<c:out value="${ resultMapDtl.boCtrlMap.snder }"/>
|
||||
</div>
|
||||
</td>
|
||||
<th>발송일시</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<c:out value="${ resultMapDtl.boCtrlMap.registDt }"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>제목</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<c:out value="${ resultMapDtl.boCtrlMap.sj }"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<h2 class="content-section__title">내용</h2>
|
||||
<div class="table-wrapper overflow-y-auto" style = "height: 400px;" >
|
||||
<div class="ck-content" id="emailCn" style="padding-left : 25px;">
|
||||
<c:out value="${ resultMapDtl.boCtrlMap.cn }" escapeXml="false"/>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <hr class="spacing">
|
||||
<form id = "popupForm">
|
||||
<div id = "mbrInfoDiv"></div>
|
||||
</form> -->
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#" rel="modal:close" class="btn outline">닫기</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,126 @@
|
||||
<%@ 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 : MaEmailSndngDtlsListInqireR.jsp
|
||||
Description : 이메일 발송 내역 목록
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023-01-29 김혜인 최초생성
|
||||
2024-04-04 이대환 내용 수정
|
||||
--%>
|
||||
<script>
|
||||
</script>
|
||||
<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="${ resultListMap.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="${ resultListMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
|
||||
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultListMap.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">
|
||||
<button class="btn outline sm" type = "button" id = "excelDwldBtn" onclick = "fn_excel_download()">
|
||||
<i class="icon icon_excel"></i>
|
||||
다운로드
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="spacing">
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 6%;">
|
||||
<col style="width: auto">
|
||||
<col style="width: 15%;">
|
||||
<col style="width: 15%;">
|
||||
<%-- <col style="width: 6%;"> --%>
|
||||
<col style="width: 14%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 8%;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>번호</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 resultListMap.boCtrlMap}">
|
||||
<c:forEach items="${ resultListMap.boCtrlMap }" var="list" varStatus="status">
|
||||
<tr>
|
||||
<td><c:out value="${resultListMap.paginationInfo.totalRecordCount - list.rnum + 1 }" /></td>
|
||||
<td class="left">
|
||||
<span class="table-ellipsis">
|
||||
<c:out value = "${list.sj}"/>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<c:out value = "${list.email}"/>
|
||||
</td>
|
||||
<td>
|
||||
<c:out value = "${list.sndngEmail}"/>
|
||||
</td>
|
||||
<%-- <td>
|
||||
<c:out value = "${list.sndngCnt}"/>명
|
||||
</td> --%>
|
||||
<td>
|
||||
<c:out value = "${list.sopmalNm}"/>
|
||||
</td>
|
||||
<td>
|
||||
<c:out value = "${list.registDt}"/>
|
||||
</td>
|
||||
<td>
|
||||
<div class="manage-btn-container">
|
||||
<button type = "button" class="btn xsm primary outline" onclick = "fn_move_dtl_page(<c:out value = "${list.emailLogInnb}"/>)">
|
||||
조회
|
||||
</button>
|
||||
</div>
|
||||
</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="${resultListMap.paginationInfo}" type="image" jsFunction="fn_select_list"/>
|
||||
</div>
|
||||
@@ -0,0 +1,375 @@
|
||||
<%@ 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 : MaEmailSndngDtlsListInqireRForm.jsp
|
||||
Description : 이메일 발송 내역 목록 조회 검색 폼
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-02-01 김혜인 최초생성
|
||||
2024-04-04 이대환 내용 수정
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
</head>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
//form메소드에서 pageIndex, pageUnit 갖고옴
|
||||
let pageIndex = '<c:out value="${ resultListMap.bOMaEmailSrchVO.pageIndex }"/>';
|
||||
let pageUnit = '<c:out value="${ resultListMap.bOMaEmailSrchVO.pageUnit }"/>';
|
||||
|
||||
//초기 날짜 세팅
|
||||
const today = new Date();
|
||||
$('#srchStrtSndngDt').datepicker().datepicker("setDate",today);
|
||||
$('#srchEndSndngDt').datepicker().datepicker("setDate",today);
|
||||
|
||||
fn_select_list(pageIndex, pageUnit);
|
||||
|
||||
//지정일
|
||||
// fn_set_date('srchStrtSndngDt','srchEndSndngDt','srchEndSndngDt');
|
||||
|
||||
fn_set_date_email('srchStrtSndngDt','srchEndSndngDt','srchEndSndngDt');
|
||||
|
||||
$('#listForm').on('keydown', function(e) {
|
||||
if (e.keyCode == 13) {
|
||||
e.preventDefault();
|
||||
$('#searchBtn').click();
|
||||
}
|
||||
});
|
||||
|
||||
// 페이징 제자리 새로고침(Submit) 방지
|
||||
$('body').on('click', 'button.pagination__item.active', function(event) {
|
||||
event.preventDefault();
|
||||
});
|
||||
});
|
||||
/**********************************************************
|
||||
* 검색 조건 이벤트 설정
|
||||
***********************************************************/
|
||||
/*
|
||||
* 검색조건 > 날짜 전체 클릭 시 날짜 설정 초기화
|
||||
*/
|
||||
const fn_reset_date = function(strtDate,endDate){
|
||||
$('#'+strtDate).datepicker().datepicker("setDate",'');
|
||||
$('#'+endDate).datepicker().datepicker("setDate",'');
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 목록 조회
|
||||
******************************************************** */
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url : "<c:url value="/admin/ntcn/email/selectEmailSndngDtlsListInqire"/>",
|
||||
data : dataStr,
|
||||
success:function(resultHtml) {
|
||||
$('#pageDiv').html(resultHtml);
|
||||
$('#pageUnit').niceSelect();
|
||||
}
|
||||
});
|
||||
}
|
||||
/* ********************************************************
|
||||
* 이메일 발송 상세조회
|
||||
******************************************************** */
|
||||
const fn_move_dtl_page = function(emailLogInnb) {
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url : '/admin/ntcn/email/selectEmailSndngDtlPopup',
|
||||
data : {emailLogInnb : emailLogInnb},
|
||||
success:function(resultHtml) {
|
||||
fn_close_modal('email-check-pop');
|
||||
$('#modalDiv').html(resultHtml);
|
||||
//form메소드에서 pageIndex, pageUnit 갖고옴
|
||||
/* let pageIndex = '<c:out value="${ resultListMapMbr.bOMaEmailSrchVO.pageIndex }"/>';
|
||||
let pageUnit = '<c:out value="${ resultListMapMbr.bOMaEmailSrchVO.pageUnit }"/>';
|
||||
fn_select_mbrInfo(pageIndex,pageUnit,emailLogInnb); */
|
||||
$('#email-check-pop').modal();
|
||||
}
|
||||
});
|
||||
}
|
||||
/* ********************************************************
|
||||
* 이메일 발송 상세조회 발신조회
|
||||
******************************************************** */
|
||||
const fn_select_mbrInfo = function(pageIndex, pageUnit,emailLogInnb) {
|
||||
let dataStr;
|
||||
if(!pageIndex) {
|
||||
$('#mbrPageIndex').val(1);
|
||||
} else {
|
||||
$('#mbrPageIndex').val(pageIndex);
|
||||
}
|
||||
|
||||
if(!pageUnit) {
|
||||
dataStr = $('#popupForm').serialize();
|
||||
} else {
|
||||
if($('#mbrPageUnit').length){
|
||||
$('#mbrPageUnit').val(pageUnit);
|
||||
dataStr = $('#popupForm').serialize();
|
||||
} else {
|
||||
dataStr = $('#popupForm').serialize()+'&pageUnit='+pageUnit;
|
||||
}
|
||||
}
|
||||
dataStr = dataStr+'&emailLogInnb='+emailLogInnb
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url : "<c:url value="/admin/ntcn/email/selectEmailSndngDtlPopupMbrTb"/>",
|
||||
data : dataStr,
|
||||
success:function(resultHtml) {
|
||||
$('#mbrInfoDiv').html(resultHtml);
|
||||
$('#mbrPageUnit').niceSelect();
|
||||
}
|
||||
});
|
||||
}
|
||||
/*********************************************************
|
||||
* 엑셀 다운로드
|
||||
*********************************************************/
|
||||
const fn_excel_download = function() {
|
||||
$('#listForm').attr('action', '<c:url value="/admin/ntcn/email/selectEmailSndngDtlsListExcelDwld"/>');
|
||||
$('#listForm').attr('method', 'post');
|
||||
$('#listForm').submit();
|
||||
}
|
||||
history.replaceState({}, null, location.pathname);
|
||||
|
||||
const fn_reset_form_email = function(formId){
|
||||
if($('#'+formId)[0]){
|
||||
const radioArr = [];
|
||||
$('#'+formId).eq(0).find('input,select,textarea').each(function(){
|
||||
let type = this.type;
|
||||
let tag = this.tagName.toLowerCase();
|
||||
let numberArr = $('#'+formId).find('.number'); //20240223수정
|
||||
if (type === 'text') {
|
||||
if(type === 'text' || tag === 'textarea'){
|
||||
this.value = '';
|
||||
}
|
||||
if(numberArr.length > 0){//20240223수정
|
||||
numberArr.each(function(idx){
|
||||
numberArr.eq(idx).val('0');
|
||||
});
|
||||
}
|
||||
} else if (type === 'checkbox') {
|
||||
this.checked = false;
|
||||
} else if (type === 'radio') {
|
||||
this.checked = false;
|
||||
if(!radioArr.includes($(this).prop('name'))) {
|
||||
radioArr.push($(this).prop('name'));
|
||||
radioArr.forEach((element) => $('input[name='+element+']').eq(0).prop('checked', 'checked'));
|
||||
}
|
||||
} else if (tag === 'select') {
|
||||
this.selectedIndex = 0;//20240223수정
|
||||
$(".select-box > select").niceSelect('update');
|
||||
}
|
||||
});
|
||||
|
||||
//20240418 기능추가=> 20240604코드 수정
|
||||
/*버튼 초기화*/
|
||||
let dateRangeBtn = $('#' + formId).find('.dateRange-btnContainer');
|
||||
|
||||
if (dateRangeBtn.length > 0) {
|
||||
dateRangeBtn.each(function (idx) {
|
||||
let notBtn = dateRangeBtn.eq(idx).find(".dateRange-btn");
|
||||
notBtn.each(function (idx1) {
|
||||
if (idx1 === 1) {
|
||||
notBtn.eq(idx1).addClass("selected");
|
||||
} else {
|
||||
notBtn.eq(idx1).removeClass("selected");
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
//$('#'+formId)[0].reset();
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************************
|
||||
* 검색 날짜 지정시 날짜 변경
|
||||
* 파라미터 설명{
|
||||
* fromObjId : 시작일
|
||||
* toObjId : 종료일
|
||||
* stdObjeId : 기준일(시작일'fromObjId' or 종료일'toObjId')
|
||||
* date : 계산할 날짜 => '-(전) or +(후)' + '계산할 숫자' + 'D(일) or M(월) or Y(년)'
|
||||
* Ex) 현재 날짜에서 하루 전(후) => -1D(+1D)
|
||||
* 현재 날짜는 0
|
||||
* }
|
||||
****************************************************************/
|
||||
const fn_set_date_email = function (fromObjId, toObjId, stdObjeId, date) {
|
||||
/* fromObj, toObj 값 변경 시 일자선택 버튼 초기화 추가 */
|
||||
$('#' + fromObjId).on('change', function () {
|
||||
$(this).parent().parent().find('.dateRange-btn').each(function () {
|
||||
$(this).removeClass('selected');
|
||||
});
|
||||
fn_check_fromTo('#' + fromObjId, '#' + toObjId, 'date');
|
||||
});
|
||||
$('#' + toObjId).on('change', function () {
|
||||
$(this).parent().parent().find('.dateRange-btn').each(function () {
|
||||
$(this).removeClass('selected');
|
||||
});
|
||||
fn_check_fromTo('#' + fromObjId, '#' + toObjId, 'date');
|
||||
});
|
||||
/* 기준일 기본값 설정(종료일이 기준일)
|
||||
* ※toObjId or fromObjId로 설정 가능*/
|
||||
if (!stdObjeId) {
|
||||
stdObjeId = toObjId;
|
||||
}
|
||||
/* 계산할 숫자 기본값 설정(현재 날짜가 기본값) 및 date 유효성 검사*/
|
||||
if (!date) {
|
||||
/* onready시 전체 버튼 셀렉티드 class 부여*/
|
||||
//date = '0';
|
||||
$('#' + fromObjId).parent().parent().find('.dateRange-btn').eq(1).addClass("selected");
|
||||
} else {
|
||||
//date의 형태가 숫자+'D, M, Y'경우인지 확인
|
||||
let regex = /^\d+[DMY]$/;
|
||||
if (!regex.test(date)) {
|
||||
date = '0';
|
||||
}
|
||||
}
|
||||
if (date != null) {
|
||||
/* 기준일을 현재 날짜로 설정*/
|
||||
$('#' + stdObjeId).datepicker().datepicker("setDate", new Date());
|
||||
/* 기준일에 따라 계산 방법 분기
|
||||
stdObjeId = toObjId => '-'+date
|
||||
= fromObjId => date*/
|
||||
if (stdObjeId == toObjId) {
|
||||
date = '-' + date;
|
||||
$('#' + fromObjId).datepicker().datepicker("setDate", date);
|
||||
} else {
|
||||
$('#' + toObjId).datepicker().datepicker("setDate", date);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
</script>
|
||||
<body>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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" action="<c:url value='/admin/ntcn/email/selectEmailSndngDtlsListInqire'/>">
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultSrchMap.bOMaEmailSrchVO.pageIndex }"/>
|
||||
<section class="content-section">
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col style="width: auto;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 25%;">
|
||||
</colgroup>
|
||||
<tr>
|
||||
<th>검색어</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select title="검색 타입" name = "srchType">
|
||||
<option value="">전체</option>
|
||||
<option value="SJ">이메일 제목</option>
|
||||
<option value="sndEml">발송주소</option>
|
||||
<option value="rcvEml">수신주소</option>
|
||||
</select>
|
||||
</div>
|
||||
<input class="input-text lg" type="text" title="검색어" name = "srchStr">
|
||||
</div>
|
||||
</td>
|
||||
<th>쇼핑몰</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select title="쇼핑몰" id="srchShop" name="srchShop">
|
||||
<option value="ALL">전체</option>
|
||||
<c:forEach var = "brand" items = "${ resultSrchMap.code}">
|
||||
<option value="${brand.sopmalCd}">${brand.sopmalNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>발송일</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<div class="input-container">
|
||||
<input type="text" id="srchStrtSndngDt" class="datepicker" title="시작 날짜 선택" name = "srchStrtSndngDt"
|
||||
autocomplete="off">
|
||||
<span class="tilde">~</span>
|
||||
<input type="text" id="srchEndSndngDt" class="datepicker" title="종료 날짜 선택" name = "srchEndSndngDt"
|
||||
autocomplete="off">
|
||||
</div>
|
||||
<div class="dateRange-btnContainer" id = "searchDateRange">
|
||||
<button type="button" class="dateRange-btn" id = "yesterday"
|
||||
onclick = "fn_set_date_email('srchStrtSndngDt','srchEndSndngDt','srchEndSndngDt','1D')">어제</button>
|
||||
<button type="button" class="dateRange-btn selected" id = "today"
|
||||
onclick = "fn_set_date_email('srchStrtSndngDt','srchEndSndngDt','srchEndSndngDt','0')" >오늘</button>
|
||||
<button type="button" class="dateRange-btn" id = "threeDays"
|
||||
onclick = "fn_set_date_email('srchStrtSndngDt','srchEndSndngDt','srchEndSndngDt','3D')">3일간</button>
|
||||
<button type="button" class="dateRange-btn" id = "sevenDays"
|
||||
onclick = "fn_set_date_email('srchStrtSndngDt','srchEndSndngDt','srchEndSndngDt','7D')">일주일</button>
|
||||
<button type="button" class="dateRange-btn" id = "oneMonth"
|
||||
onclick = "fn_set_date_email('srchStrtSndngDt','srchEndSndngDt','srchEndSndngDt','1M')">1개월</button>
|
||||
<button type="button" class="dateRange-btn" id = "threeMonth"
|
||||
onclick = "fn_set_date_email('srchStrtSndngDt','srchEndSndngDt','srchEndSndngDt','3M')">3개월</button>
|
||||
<button type="button" class="dateRange-btn" id = "sixMonth"
|
||||
onclick = "fn_set_date_email('srchStrtSndngDt','srchEndSndngDt','srchEndSndngDt','6M')">6개월</button>
|
||||
<button type="button" class="dateRange-btn" id = "year"
|
||||
onclick = "fn_set_date_email('srchStrtSndngDt','srchEndSndngDt','srchEndSndngDt','1Y')">1년</button>
|
||||
<button type="button" class="dateRange-btn"
|
||||
onclick = "fn_reset_date('srchStrtSndngDt','srchEndSndngDt')">전체</button>
|
||||
</div>
|
||||
</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_email('listForm'); return false;">초기화</button>
|
||||
<button class="btn primary" id="searchBtn" type="button" onclick="fn_select_list(1); return false;">검색</button>
|
||||
</div>
|
||||
<div class="right"></div>
|
||||
</div>
|
||||
</section>
|
||||
<div id="pageDiv">
|
||||
</div>
|
||||
</form>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="modalDiv">
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,100 @@
|
||||
<%@ 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" %>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
//전화번호 처리
|
||||
$(".recptnNb").each(function () {
|
||||
const recptnNbStr = $(this).text();
|
||||
const recptnNb = fn_format_mbtlnb(recptnNbStr.replace(/\s+/g, ''));
|
||||
$(this).text(recptnNb);
|
||||
})
|
||||
});
|
||||
</script>
|
||||
<!-- 문자메시지 조회 모달 -->
|
||||
<div id="sms-check-pop" class="modal" style="max-width: 900px;">
|
||||
<div class="modal-header">
|
||||
<h4>문자메시지 조회</h4>
|
||||
</div>
|
||||
<div class="modal-content">
|
||||
<h2 class="content-section__title">발신 정보</h2>
|
||||
<div class="table-wrapper">
|
||||
<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>
|
||||
<div class="td-inner">
|
||||
<c:out value="${ resultMap.mssageDtlMap.sndngNb }"/>
|
||||
</div>
|
||||
</td>
|
||||
<th>수신번호</th>
|
||||
<td>
|
||||
<div class="td-inner recptnNb">
|
||||
<c:out value="${ resultMap.mssageDtlMap.recptnNb }"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>발송상태</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<c:choose>
|
||||
<c:when test="${resultMap.mssageDtlMap.sttus eq 'REG'}">
|
||||
등록
|
||||
</c:when>
|
||||
<c:when test="${resultMap.mssageDtlMap.sttus eq 'BAD'}">
|
||||
불량
|
||||
</c:when>
|
||||
<c:when test="${resultMap.mssageDtlMap.sttus eq 'WAIT'}">
|
||||
대기
|
||||
</c:when>
|
||||
<c:when test="${resultMap.mssageDtlMap.sttus eq 'SEND'}">
|
||||
전송
|
||||
</c:when>
|
||||
<c:when test="${resultMap.mssageDtlMap.sttus eq 'CAN'}">
|
||||
취소
|
||||
</c:when>
|
||||
<c:when test="${resultMap.mssageDtlMap.sttus eq 'FAIL'}">
|
||||
실패
|
||||
</c:when>
|
||||
<c:when test="${resultMap.mssageDtlMap.sttus eq 'OK'}">
|
||||
성공
|
||||
</c:when>
|
||||
</c:choose>
|
||||
</div>
|
||||
</td>
|
||||
<th>발송일시</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<c:out value="${ resultMap.mssageDtlMap.sndngDt }"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<h2 class="content-section__title">내용</h2>
|
||||
<div class="table-wrapper overflow-y-auto" style = "height: 400px;" >
|
||||
<pre><c:out value="${ resultMap.mssageDtlMap.head }"/></pre>
|
||||
<pre><c:out value="${ resultMap.mssageDtlMap.cn }"/></pre>
|
||||
<pre><c:out value="${ resultMap.mssageDtlMap.tail }"/></pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#" rel="modal:close" class="btn outline">닫기</a>
|
||||
</div>
|
||||
</div>
|
||||
</html>
|
||||
@@ -0,0 +1,195 @@
|
||||
<%@ 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 : MaSmsSndngDtlsListInqireR.jsp
|
||||
Description : 문자메시지 발송 내역 목록 조회
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-02-19 김혜인 최초생성
|
||||
2024-06-20 이대환 내용수정
|
||||
--%>
|
||||
<style>
|
||||
.table.vertical th.left, .table.vertical td.left {
|
||||
white-space: normal;
|
||||
max-width: 850px;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
//전화번호 처리
|
||||
$(".recptnNb").each(function () {
|
||||
const recptnNbStr = $(this).text();
|
||||
const recptnNb = fn_format_mbtlnb(recptnNbStr.replace(/\s+/g, ''));
|
||||
$(this).text(recptnNb);
|
||||
})
|
||||
});
|
||||
</script>
|
||||
<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="${ resultListMap.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_list(1);">
|
||||
<c:forEach items="${ resultListMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
|
||||
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultListMap.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">
|
||||
<!-- <button class="btn outline sm" type = "button" id = "excelDwldBtn" onclick = "fn_excel_download()">
|
||||
<i class="icon icon_excel"></i>
|
||||
다운로드
|
||||
</button> -->
|
||||
</div>
|
||||
</div>
|
||||
<hr class="spacing">
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 1%;">
|
||||
<col style="width: 8%;">
|
||||
<col style="width: 8%;">
|
||||
<col style="width: 5%;">
|
||||
<col style="width: 8%;">
|
||||
<col style="width: 50%">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 8%;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>번호</th>
|
||||
<th>발송번호</th>
|
||||
<th>수신번호</th>
|
||||
<th>종류</th>
|
||||
<th>쇼핑몰</th>
|
||||
<th>내용요약</th>
|
||||
<th>
|
||||
등록일시
|
||||
<br>
|
||||
발송일시
|
||||
</th>
|
||||
<th>발송상태</th>
|
||||
<th>결과코드</th>
|
||||
<th>본문</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:if test="${ !empty resultListMap.mssageMap.smsSndngList}">
|
||||
<c:forEach var="list" items="${ resultListMap.mssageMap.smsSndngList }" varStatus="status">
|
||||
<tr>
|
||||
<td><c:out value="${ list.rnum }"/></td>
|
||||
<td>
|
||||
<c:out value="${ list.sndngNb }"/>
|
||||
</td>
|
||||
<td class="recptnNb">
|
||||
<c:out value="${ list.recptnNb }"/>
|
||||
</td>
|
||||
<td>
|
||||
<c:choose>
|
||||
<c:when test="${list.dv eq 'SMS'}">
|
||||
SMS
|
||||
</c:when>
|
||||
<c:when test="${list.dv eq 'LMS' or list.dv eq 'MMS'}">
|
||||
LMS/MMS
|
||||
</c:when>
|
||||
<c:when test="${list.dv eq 'AT'}">
|
||||
알림톡
|
||||
</c:when>
|
||||
<c:when test="${list.dv eq 'AI'}">
|
||||
알림톡
|
||||
</c:when>
|
||||
</c:choose>
|
||||
</td>
|
||||
<td>
|
||||
<c:out value="${ list.sopmalNm }"/>
|
||||
</td>
|
||||
<td class="left">
|
||||
<c:out value="${ list.cn }"/>
|
||||
</td>
|
||||
<td>
|
||||
<c:out value="${ list.registDt }"/>
|
||||
<br>
|
||||
<c:out value="${ list.sndngDt}"/>
|
||||
</td>
|
||||
<td>
|
||||
<c:choose>
|
||||
<c:when test="${list.sttus eq 'REG'}">
|
||||
등록
|
||||
</c:when>
|
||||
<c:when test="${list.sttus eq 'BAD'}">
|
||||
불량
|
||||
</c:when>
|
||||
<c:when test="${list.sttus eq 'WAIT'}">
|
||||
대기
|
||||
</c:when>
|
||||
<c:when test="${list.sttus eq 'SEND'}">
|
||||
전송
|
||||
</c:when>
|
||||
<c:when test="${list.sttus eq 'CAN'}">
|
||||
취소
|
||||
</c:when>
|
||||
<c:when test="${list.sttus eq 'FAIL'}">
|
||||
실패
|
||||
</c:when>
|
||||
<c:when test="${list.sttus eq 'OK'}">
|
||||
성공
|
||||
</c:when>
|
||||
</c:choose>
|
||||
</td>
|
||||
<td>
|
||||
<c:out value="${ list.rsltCd }"/>
|
||||
</td>
|
||||
<td>
|
||||
<div class="manage-btn-container">
|
||||
<button type = "button" class="btn xsm primary outline"
|
||||
onclick = "fn_move_dtl_page(
|
||||
'<c:out value="${ list.sopmalCd }"/>',
|
||||
'<c:out value="${ list.smsInnb }"/>',
|
||||
'<c:out value="${ list.recptnNb }"/>',
|
||||
'<c:out value="${ list.smsToInnb }"/>')">
|
||||
조회
|
||||
</button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
<c:if test="${ empty resultListMap.mssageMap.smsSndngList }">
|
||||
<tr>
|
||||
<td class="row-no-data" colspan="12">조회된 데이터가 없습니다.</td>
|
||||
</tr>
|
||||
</c:if>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
<div class="pagination__container">
|
||||
<ui:pagination paginationInfo="${ resultListMap.paginationInfo}" type="image" jsFunction="fn_select_list"/>
|
||||
</div>
|
||||
<script src="/admin/js/script.js" defer=""></script>
|
||||
@@ -0,0 +1,380 @@
|
||||
<%@ 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 : MaSmsSndngDtlsListInqireRForm.jsp
|
||||
Description : 문자메시지 발송 내역 목록 조회 검색 폼
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-02-19 김혜인 최초생성
|
||||
2024-06-20 이대환 내용수정
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
</head>
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
//form메소드에서 pageIndex, pageUnit 갖고옴
|
||||
let pageIndex = '<c:out value="${ resultListMap.bOMssageSrchVO.pageIndex }"/>';
|
||||
let pageUnit = '<c:out value="${ resultListMap.bOMssageSrchVO.pageUnit }"/>';
|
||||
|
||||
//초기 날짜 세팅
|
||||
const today = new Date();
|
||||
$('#srchStrtSndngDt').datepicker().datepicker("setDate",today);
|
||||
$('#srchEndSndngDt').datepicker().datepicker("setDate",today);
|
||||
|
||||
fn_select_list(pageIndex, pageUnit);
|
||||
//검색 조건 발송일
|
||||
// fn_set_date('srchStrtSndngDt','srchEndSndngDt','srchEndSndngDt');
|
||||
|
||||
fn_set_date_sms('srchStrtSndngDt','srchEndSndngDt','srchEndSndngDt');
|
||||
|
||||
//검색 조건 종류 항목 체크 여부에 따른 체크 해제
|
||||
$(".tyChk").on("click",function(){
|
||||
fn_ctr_pCheckbox("#tyChkAll",".tyChk");
|
||||
});
|
||||
//검색 조건 상태 항목 체크 여부에 따른 체크 해제
|
||||
$(".sttusChk").on("click",function(){
|
||||
fn_ctr_pCheckbox("#sttusChkAll",".sttusChk");
|
||||
});
|
||||
|
||||
$('#listForm').on('keydown', function(e) {
|
||||
if (e.keyCode == 13) {
|
||||
e.preventDefault();
|
||||
$('#searchBtn').click();
|
||||
}
|
||||
});
|
||||
|
||||
// 페이징 제자리 새로고침(Submit) 방지
|
||||
$('body').on('click', 'button.pagination__item.active', function(event) {
|
||||
event.preventDefault();
|
||||
});
|
||||
});
|
||||
/**********************************************************
|
||||
* 검색 조건 이벤트 설정
|
||||
***********************************************************/
|
||||
/*
|
||||
* 검색조건 > 날짜 전체 클릭 시 날짜 설정 초기화
|
||||
*/
|
||||
const fn_reset_date = function(strtDate,endDate){
|
||||
$('#'+strtDate).datepicker().datepicker("setDate",'');
|
||||
$('#'+endDate).datepicker().datepicker("setDate",'');
|
||||
}
|
||||
/* ********************************************************
|
||||
* 목록 조회
|
||||
******************************************************** */
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url : "/admin/ntcn/sms/selectSmsSndngDtlsListInqire",
|
||||
data : dataStr,
|
||||
success:function(resultHtml) {
|
||||
$('#pageDiv').html(resultHtml);
|
||||
$('#pageUnit').niceSelect();
|
||||
}
|
||||
});
|
||||
}
|
||||
/* ********************************************************
|
||||
* 상세 조회
|
||||
******************************************************** */
|
||||
const fn_move_dtl_page = function(srchSopmalCd, srchSmsInnb, srchRecptnNb, srchSmsToInnb) {
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url : '/admin/ntcn/sms/selectSmsSndngDtlPopup',
|
||||
data : {
|
||||
srchSopmalCd : srchSopmalCd,
|
||||
srchSmsInnb : srchSmsInnb,
|
||||
srchRecptnNb : srchRecptnNb,
|
||||
srchSmsToInnb : srchSmsToInnb
|
||||
},
|
||||
success:function(resultHtml) {
|
||||
fn_close_modal('sms-check-pop');
|
||||
$('#modalDiv').html(resultHtml);
|
||||
//form메소드에서 pageIndex, pageUnit 갖고옴
|
||||
$('#sms-check-pop').modal();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/*********************************************************
|
||||
* 엑셀 다운로드
|
||||
*********************************************************/
|
||||
const fn_excel_download = function() {
|
||||
$('#listForm').attr('action', '<c:url value="/admin/ntcn/sms/selectSmsSndngDtlsListExcelDwld"/>');
|
||||
$('#listForm').attr('method', 'post');
|
||||
$('#listForm').submit();
|
||||
}
|
||||
|
||||
history.replaceState({}, null, location.pathname);
|
||||
|
||||
/**************************************************************
|
||||
* 검색 날짜 지정시 날짜 변경
|
||||
* 파라미터 설명{
|
||||
* fromObjId : 시작일
|
||||
* toObjId : 종료일
|
||||
* stdObjeId : 기준일(시작일'fromObjId' or 종료일'toObjId')
|
||||
* date : 계산할 날짜 => '-(전) or +(후)' + '계산할 숫자' + 'D(일) or M(월) or Y(년)'
|
||||
* Ex) 현재 날짜에서 하루 전(후) => -1D(+1D)
|
||||
* 현재 날짜는 0
|
||||
* }
|
||||
****************************************************************/
|
||||
const fn_set_date_sms = function (fromObjId, toObjId, stdObjeId, date) {
|
||||
/* fromObj, toObj 값 변경 시 일자선택 버튼 초기화 추가 */
|
||||
$('#' + fromObjId).on('change', function () {
|
||||
$(this).parent().parent().find('.dateRange-btn').each(function () {
|
||||
$(this).removeClass('selected');
|
||||
});
|
||||
fn_check_fromTo('#' + fromObjId, '#' + toObjId, 'date');
|
||||
});
|
||||
$('#' + toObjId).on('change', function () {
|
||||
$(this).parent().parent().find('.dateRange-btn').each(function () {
|
||||
$(this).removeClass('selected');
|
||||
});
|
||||
fn_check_fromTo('#' + fromObjId, '#' + toObjId, 'date');
|
||||
});
|
||||
/* 기준일 기본값 설정(종료일이 기준일)
|
||||
* ※toObjId or fromObjId로 설정 가능*/
|
||||
if (!stdObjeId) {
|
||||
stdObjeId = toObjId;
|
||||
}
|
||||
/* 계산할 숫자 기본값 설정(현재 날짜가 기본값) 및 date 유효성 검사*/
|
||||
if (!date) {
|
||||
/* onready시 전체 버튼 셀렉티드 class 부여*/
|
||||
//date = '0';
|
||||
$('#' + fromObjId).parent().parent().find('.dateRange-btn').eq(1).addClass("selected");
|
||||
} else {
|
||||
//date의 형태가 숫자+'D, M, Y'경우인지 확인
|
||||
let regex = /^\d+[DMY]$/;
|
||||
if (!regex.test(date)) {
|
||||
date = '0';
|
||||
}
|
||||
}
|
||||
if (date != null) {
|
||||
/* 기준일을 현재 날짜로 설정*/
|
||||
$('#' + stdObjeId).datepicker().datepicker("setDate", new Date());
|
||||
/* 기준일에 따라 계산 방법 분기
|
||||
stdObjeId = toObjId => '-'+date
|
||||
= fromObjId => date*/
|
||||
if (stdObjeId == toObjId) {
|
||||
date = '-' + date;
|
||||
$('#' + fromObjId).datepicker().datepicker("setDate", date);
|
||||
} else {
|
||||
$('#' + toObjId).datepicker().datepicker("setDate", date);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
</script>
|
||||
<body>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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" action="<c:url value='selectSmsSndngDtlsListInqire'/>">
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultMap.bOSmsSrchVO.pageIndex }"/>
|
||||
<section class="content-section" id="search-section">
|
||||
<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>
|
||||
<tr>
|
||||
<th>검색어</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select title="해당 셀렉트에 대한 설명" name = "srchType">
|
||||
<option value="cn">발송 내용
|
||||
</option>
|
||||
<option value="recpntNb">수신 번호
|
||||
</option>
|
||||
<option value="sndngNb">회신 번호
|
||||
</option>
|
||||
<option value="cstmrIdnb">수신자명
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
<input class="input-text md" type="text" title="해당 인풋에 대한 설명" name = "srchStr">
|
||||
</div>
|
||||
</td>
|
||||
<th>쇼핑몰</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select title="해당 셀렉트에 대한 설명" name = "srchSopmalCd">
|
||||
<c:forEach var = "brand" items = "${resultMap.brand}">
|
||||
<option value="${brand.sopmalCd}"><c:out value = "${brand.sopmalNm}"/></option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</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" value="" id = "tyChkAll">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">전체</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="SMS" class = "tyChk" name="srchDv">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">SMS</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="LMS" class = "tyChk" name="srchDv">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">LMS/MMS</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="AT" class = "tyChk" name="srchDv">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">알림톡</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<th>발송상태</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="b-checkbox-container">
|
||||
<label class="b-checkbox checkbox check-all">
|
||||
<input type="checkbox" value="" id = "sttusChkAll">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">전체</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" class="sttusChk" name="srchSttus" value="ok">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">성공</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" class="sttusChk" name="srchSttus" value="fail">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">실패</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" class="sttusChk" name="srchSttus" value="reg">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">등록</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" class="sttusChk" name="srchSttus" value="wait">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">대기</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" class="sttusChk" name="srchSttus" value="send">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">전송</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" class="sttusChk" name="srchSttus" value="bad">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">불량</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>조회 기간</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select title="조회기간조건" name="srchDtDv" id="srchDtDv">
|
||||
<option value="sndngDt">발송일
|
||||
</option>
|
||||
<option value="registDt">등록일
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="input-container">
|
||||
<input type="text" id="srchStrtSndngDt" name="srchStrtSndngDt" class="datepicker"
|
||||
title="시작 날짜 선택" autocomplete="off">
|
||||
<span class="tilde">~</span>
|
||||
<input type="text" id="srchEndSndngDt" name="srchEndSndngDt" class="datepicker"
|
||||
title="종료 날짜 선택" autocomplete="off">
|
||||
</div>
|
||||
<div class="dateRange-btnContainer">
|
||||
<button type="button" class="dateRange-btn" id = "yesterday"
|
||||
onclick = "fn_set_date_sms('srchStrtSndngDt','srchEndSndngDt','srchEndSndngDt','1D')">어제</button>
|
||||
<button type="button" class="dateRange-btn" id = "today"
|
||||
onclick = "fn_set_date_sms('srchStrtSndngDt','srchEndSndngDt','srchEndSndngDt','0')">오늘</button>
|
||||
<button type="button" class="dateRange-btn" id = "threeDays"
|
||||
onclick = "fn_set_date_sms('srchStrtSndngDt','srchEndSndngDt','srchEndSndngDt','3D')">3일간</button>
|
||||
<button type="button" class="dateRange-btn" id = "sevenDays"
|
||||
onclick = "fn_set_date_sms('srchStrtSndngDt','srchEndSndngDt','srchEndSndngDt','7D')">일주일</button>
|
||||
<button type="button" class="dateRange-btn" id = "oneMonth"
|
||||
onclick = "fn_set_date_sms('srchStrtSndngDt','srchEndSndngDt','srchEndSndngDt','1M')">1개월</button>
|
||||
<button type="button" class="dateRange-btn" id = "threeMonth"
|
||||
onclick = "fn_set_date_sms('srchStrtSndngDt','srchEndSndngDt','srchEndSndngDt','3M')">3개월</button>
|
||||
</div>
|
||||
</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('search-section'); return false;">초기화
|
||||
</button>
|
||||
<button class="btn primary" id="searchBtn" type="button" onclick="fn_select_list(1); return false;">검색
|
||||
</button>
|
||||
</div>
|
||||
<div class="right"></div>
|
||||
</div>
|
||||
</section>
|
||||
<div id="pageDiv">
|
||||
</div>
|
||||
</form>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="modalDiv">
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,166 @@
|
||||
<%@ 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"%>
|
||||
<%@ page import="java.util.Date" %>
|
||||
<%--
|
||||
Class Name : MaStlMssageListInqireR.jsp.jsp
|
||||
Description : 통합관리자 문자 정산 페이지
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-05-10 이운산 최초 생성
|
||||
--%>
|
||||
<script>
|
||||
$('#excelDwld').on('click', function(){
|
||||
$('#listForm').attr('action', '<c:url value="/admin/ntcn/stl/excelFileDownload"/>');
|
||||
$('#listForm').attr('method', 'post');
|
||||
$('#listForm').submit();
|
||||
});
|
||||
</script>
|
||||
<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>
|
||||
<button type="button" class="btn outline sm excelDwld" id="excelDwld">
|
||||
<i class="icon icon_excel"></i>정산다운로드
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="center">
|
||||
</div>
|
||||
<div class="right">
|
||||
|
||||
<div class="select-box">
|
||||
<select id="pageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_mbr_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">
|
||||
<hr class="spacing">
|
||||
<div class="table-wrapper table-wrapper--scroll">
|
||||
<table class="table vertical">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 5%;">
|
||||
<col style="width: 10%;">
|
||||
<col style="width: 25%;">
|
||||
<col style="width: auto;">
|
||||
<col style="width: auto;">
|
||||
<col style="width: auto;">
|
||||
<col style="width: auto;">
|
||||
<col style="width: auto;">
|
||||
<col style="width: auto;">
|
||||
<col style="width: 12%;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>번호</th>
|
||||
<th>년월</th>
|
||||
<th>매장</th>
|
||||
<th>SMS</th>
|
||||
<th>LMS</th>
|
||||
<th>MMS</th>
|
||||
<th>알림톡</th>
|
||||
<th>친구톡(TXT)</th>
|
||||
<th>친구톡(TXT+IMG)</th>
|
||||
<th>금액</th>
|
||||
<%-- <th>상태</th>--%>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:choose>
|
||||
<c:when test = "${not empty resultMap.strInfo.chargeList}">
|
||||
<c:forEach var = "chargeList" items = "${resultMap.strInfo.chargeList}" varStatus="status">
|
||||
<tr>
|
||||
<td>
|
||||
${status.count}
|
||||
</td>
|
||||
<td>
|
||||
<!-- 년월 -->
|
||||
<%-- <c:out value="${resultList.tentcpnNm}"/>--%>
|
||||
</td>
|
||||
<td>
|
||||
<!-- 매장 -->
|
||||
<c:choose>
|
||||
<c:when test="${chargeList.regusr eq '02'}">
|
||||
관리자
|
||||
</c:when>
|
||||
<c:when test="${chargeList.regusr eq '03'}">
|
||||
시스템
|
||||
</c:when>
|
||||
<c:when test="${chargeList.regusr eq 'event'}">
|
||||
광고
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:out value="${chargeList.regusr}"/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</td>
|
||||
<td class="mbtlnb">
|
||||
<!-- SMS -->
|
||||
<c:out value="${chargeList.sms}"/> 건
|
||||
</td>
|
||||
<td>
|
||||
<!-- LMS -->
|
||||
<c:out value="${chargeList.lms}"/> 건
|
||||
</td>
|
||||
<td>
|
||||
<!-- MMS -->
|
||||
<c:out value="${chargeList.mms}"/> 건
|
||||
</td>
|
||||
<td>
|
||||
<!-- 알림톡 -->
|
||||
<c:out value="${chargeList.at}"/> 건
|
||||
</td>
|
||||
<td>
|
||||
<!-- 친구톡 -->
|
||||
<c:out value="${chargeList.ft}"/> 건
|
||||
<%-- <span class="comma"><fmt:formatNumber value="${resultList.totOrdrAmt}" pattern="#,###"/></span>--%>
|
||||
</td>
|
||||
<td>
|
||||
<!-- 친구톡 -->
|
||||
<c:out value="${chargeList.fti}"/> 건
|
||||
<%-- <span class="comma"><fmt:formatNumber value="${resultList.mileage}" pattern="#,###"/></span>--%>
|
||||
</td>
|
||||
<td>
|
||||
<!-- 금액 -->
|
||||
<c:out value="${chargeList.totCost}"/> 원
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
<tr>
|
||||
<td colspan="3">합계 :</td>
|
||||
<td> <c:out value="${resultMap.strInfo.totSmsCnt}"/> 건</td>
|
||||
<td> <c:out value="${resultMap.strInfo.totLmsCnt}"/> 건</td>
|
||||
<td> <c:out value="${resultMap.strInfo.totMmsCnt}"/> 건</td>
|
||||
<td> <c:out value="${resultMap.strInfo.totAtCnt}"/> 건</td>
|
||||
<td> <c:out value="${resultMap.strInfo.totFtCnt}"/> 건</td>
|
||||
<td> <c:out value="${resultMap.strInfo.totFtiCnt}"/> 건</td>
|
||||
<td> <c:out value="${resultMap.strInfo.totSumCost}"/> 원</td>
|
||||
</tr>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<tr>
|
||||
<td colspan="10"><spring:message code="common.nodata"/></td>
|
||||
</tr>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="pagination__container">
|
||||
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_mbr_list"/>
|
||||
</div>
|
||||
</section>
|
||||
@@ -0,0 +1,243 @@
|
||||
<%@ 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"%>
|
||||
<%@ page import="java.util.Date" %>
|
||||
<%--
|
||||
Class Name : MaStlMssageListInqireRForm.jsp
|
||||
Description : 정산 내역 폼
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-07-05 이운산 최초 생성
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
</head>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
/* ********************************************************
|
||||
* 정산 내역 조회
|
||||
******************************************************** */
|
||||
$("#searchBtn").on("click", function (){
|
||||
fn_select_stl_list(1);
|
||||
})
|
||||
|
||||
const fn_select_stl_list = function(pageIndex, pageUnit) {
|
||||
let dataStr = null;
|
||||
console.log(pageIndex);
|
||||
if(!pageIndex || pageIndex === '') {
|
||||
$('#pageIndex').val(1);
|
||||
} else {
|
||||
$('#pageIndex').val(pageIndex);
|
||||
}
|
||||
pageUnit = $("#pageUnit").val();
|
||||
console.log(pageUnit);
|
||||
if(!pageUnit) {
|
||||
dataStr = $('#listForm').serialize();
|
||||
} else {
|
||||
if($('#pageUnit').length){
|
||||
$('#pageUnit').val(pageUnit);
|
||||
dataStr = $('#listForm').serialize() + '&pageIndex=' + pageIndex + '&pageUnit='+pageUnit;
|
||||
} else {
|
||||
dataStr = $('#listForm').serialize() + '&pageIndex=' + pageIndex;
|
||||
}
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url : "<c:url value="/admin/ntcn/stl/selectMaStlMssageListInqire"/>",
|
||||
data : dataStr,
|
||||
success:function(resultHtml) {
|
||||
$('#pageDiv').html(resultHtml);
|
||||
$('#pageUnit').niceSelect();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
let pageIndex = '<c:out value="${ resultMap.pageIndex }"/>';
|
||||
let pageUnit = '<c:out value="${ resultMap.pageUnit }"/>';
|
||||
fn_select_stl_list(pageIndex, pageUnit);
|
||||
fn_set_dateRange_function('.dateRange-btnContainer', 'srchStrtSndngDt','srchEndSndngDt');
|
||||
|
||||
//검색 조건 종류 항목 체크 여부에 따른 체크 해제
|
||||
$(".kindChk").on("click",function(){
|
||||
fn_ctr_pCheckbox("#kindChkAll",".kindChk");
|
||||
});
|
||||
//검색 조건 상태 항목 체크 여부에 따른 체크 해제
|
||||
$(".sttusChk").on("click",function(){
|
||||
fn_ctr_pCheckbox("#sttusChkAll",".sttusChk");
|
||||
});
|
||||
|
||||
/**********************
|
||||
* 엔터 키 입력 처리
|
||||
***********************/
|
||||
$("input").keydown(function(event) {
|
||||
if(event.key === "Enter" || event.keyCode === 13) {
|
||||
event.preventDefault();
|
||||
fn_select_list_mssage(1);
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
<%--/**--%>
|
||||
<%--* 매장 목록 처리--%>
|
||||
<%-- */--%>
|
||||
<%--const storeList = "${resultMap.storeList}";--%>
|
||||
<%--console.log(storeList);--%>
|
||||
<%--const jsonString = storeList.replace(/=/g, ':') // =을 :로 변환--%>
|
||||
<%-- .replace(/(\w+):/g, '"$1":') // 키를 "키"로 변환--%>
|
||||
<%-- .replace(/'/g, '"');--%>
|
||||
<%--console.log(jsonString)--%>
|
||||
|
||||
<%--const jsonList = JSON.parse(jsonString)--%>
|
||||
<%--console.log(jsonList)--%>
|
||||
<%--$("#strDv").on("change", function () {--%>
|
||||
<%-- const selectStrDv = $(this).val();--%>
|
||||
<%-- console.log(selectStrDv)--%>
|
||||
<%-- const listSelect = $("#storeList");--%>
|
||||
<%-- console.log(listSelect)--%>
|
||||
<%-- const filterdStoreList = storeList.filter(store => store)--%>
|
||||
<%--})--%>
|
||||
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
<body>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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 class="content-section" id="search-section">
|
||||
<h3 class="content-section__title">메시지 정산</h3>
|
||||
<form id="listForm">
|
||||
<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 colspan="5">
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select title="검색어 구분" name="regusrDv" id="regusrDv">
|
||||
<option value="">사용자구분</option>
|
||||
<c:forEach var="regusrDv" items="${resultMap.regusrDv}" varStatus="status">
|
||||
<option value="${regusrDv.cd}" class="tgtDsb">${regusrDv.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select title="검색어 구분" name="strDv" id="strDv">
|
||||
<option value="">전체</option>
|
||||
<c:forEach var="strDv" items="${resultMap.strDv}" varStatus="status">
|
||||
<option value="${strDv.cd}" class="tgtDsb">${strDv.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select title="검색어 구분" name="strInnb" id="storeList">
|
||||
<option value="">전체</option>
|
||||
<c:forEach var="store" items="${resultMap.storeList}" varStatus="status">
|
||||
<option value="${store.strInnb}" class="tgtDsb">
|
||||
${store.tentcpnNm}(${store.tentcpnId})
|
||||
</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>법인</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select title="조회기간조건" name="srchCrp" id="srchCrp">
|
||||
<option value="gcbio">지씨바이오</option>
|
||||
<option value="tradithbio">트래디스바이오</option>
|
||||
<option value="divinebio">디바인바이오</option>
|
||||
<option value="slbiotech">에스엘바이오텍</option>
|
||||
<option value="cosnature">코스네이처</option>
|
||||
<option value="naturefull">네이처풀</option>
|
||||
<option value="inssoft">아이엔에스소프트</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>검색 기간</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select title="조회기간조건" name="srchYear" id="srchYear">
|
||||
<c:forEach var="year" begin="2010" end="${resultMap.currentYear}">
|
||||
<option value="${year}">${year} 년</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select title="조회기간달" name="srchMnt" id="srchMnt">
|
||||
<c:forEach var="mnt" begin="1" end="12">
|
||||
<option value="${mnt}">${mnt} 월</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>검색 조건</th>
|
||||
<td colspan="5">
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select title="검색 조건" name="srchDv">
|
||||
<option value="">상태</option>
|
||||
<option value="mbrNm" class="tgtDsb">청구</option>
|
||||
<option value="mbrId" class="tgtDsb">납부</option>
|
||||
</select>
|
||||
</div>
|
||||
</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'); return false;">초기화</button>
|
||||
<button class="btn primary" id="searchBtn" type="button">검색</button>
|
||||
</div>
|
||||
<div class="right"></div>
|
||||
</div>
|
||||
</section>
|
||||
<div id="pageDiv">
|
||||
</div>
|
||||
</form>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
@@ -0,0 +1,810 @@
|
||||
<%@ 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" %>
|
||||
<%@ page import="java.util.Date" %>
|
||||
<%--
|
||||
Class Name : MaAtmcSndngTmplatManage.jsp
|
||||
Description : 자동발송 템플릿 관리
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-02-21 리브가 최초 생성
|
||||
2024-04-17 이대환 Email>Manage 분리
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
<link rel="stylesheet" href="<c:url value='/daumeditor/css/editor.css'/>">
|
||||
<script src="<c:url value='/daumeditor/js/editor_loader.js?environment=development'/>"></script>
|
||||
</head>
|
||||
<script>
|
||||
//회원 검색 윈도우 팝업 화면중앙 열기
|
||||
/* function PopupCenter(url, title, w, h) {
|
||||
const dualScreenLeft = window.screenLeft != undefined ? window.screenLeft : screen.left;
|
||||
const dualScreenTop = window.screenTop != undefined ? window.screenTop : screen.top;
|
||||
|
||||
width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width;
|
||||
height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height;
|
||||
|
||||
const left = ((width / 2) - (w / 2)) + dualScreenLeft;
|
||||
const top = ((height / 2) - (h / 2)) + dualScreenTop;
|
||||
const newWindow = window.open(url, title, 'scrollbars=yes, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left);
|
||||
|
||||
if (window.focus) {
|
||||
newWindow.focus();
|
||||
}
|
||||
} */
|
||||
|
||||
$(document).ready(function () {
|
||||
var urlParams = new URLSearchParams(window.location.search);
|
||||
|
||||
/* 자동발송관리 URL 파라미터 체크 */
|
||||
if (urlParams.has('emailChange')) {
|
||||
var paramValue = urlParams.get('emailChange');
|
||||
fn_select_EmailTmplatForm(paramValue);
|
||||
} else if (urlParams.has('mssageChange')) {
|
||||
var paramValue = urlParams.get('mssageChange');
|
||||
fn_select_MssageTmplatForm(paramValue);
|
||||
} else if (urlParams.has('ntcntalkChange')) {
|
||||
var paramValue = urlParams.get('ntcntalkChange');
|
||||
fn_select_NtcntalkTmplatForm(paramValue);
|
||||
} else {
|
||||
let emailFormDvCd = $("[name='r-group01']:checked").val();
|
||||
if(emailFormDvCd == null || emailFormDvCd == 'undefined') {
|
||||
emailFormDvCd = 'FORM_DV_CMMN&01';
|
||||
}
|
||||
fn_select_EmailTmplatForm(emailFormDvCd);
|
||||
}
|
||||
|
||||
fn_swith_CommonSubModal();
|
||||
|
||||
$('form').on('keydown', function(e) {
|
||||
if (e.keyCode == 13) {
|
||||
e.preventDefault();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$("#selectEmailTmplatBtn").on("click", function () {
|
||||
fn_select_tmplat_sopmal();
|
||||
})
|
||||
|
||||
$("#selectMssageTmplatBtn").on("click", function () {
|
||||
fn_select_tmplat_sopmal();
|
||||
})
|
||||
|
||||
$("#selectNtcntalkTmplatBtn").on("click", function () {
|
||||
fn_select_tmplat_sopmal();
|
||||
})
|
||||
});
|
||||
|
||||
const fn_select_tmplat_sopmal = function () {
|
||||
|
||||
if($("#selectEmailTmplat").hasClass("active")) {
|
||||
let emailFormDvCd = $("[name='r-group01']:checked").val();
|
||||
if(emailFormDvCd == null || emailFormDvCd === undefined) {
|
||||
emailFormDvCd = $("[name='r-group01']").first().val();
|
||||
}
|
||||
|
||||
if(emailFormDvCd === undefined) {
|
||||
emailFormDvCd = 'FORM_DV_CMMN';
|
||||
}
|
||||
|
||||
fn_select_EmailTmplatForm(emailFormDvCd)
|
||||
}
|
||||
|
||||
if($("#selectMssageTmplat").hasClass("active")) {
|
||||
let mssageFormDvCd = $(".tab-box__btn.current").val();
|
||||
if(mssageFormDvCd == null || mssageFormDvCd === undefined) {
|
||||
mssageFormDvCd = $(".tab-box__btn").first().val();
|
||||
}
|
||||
|
||||
if(mssageFormDvCd === undefined) {
|
||||
mssageFormDvCd = 'FORM_DV_CMMN';
|
||||
}
|
||||
|
||||
fn_select_MssageTmplatForm(mssageFormDvCd);
|
||||
}
|
||||
|
||||
if($("#selectNtcntalkTmplat").hasClass("active")) {
|
||||
let ntcnTalkFormDvCd = $(".tab-box__btn.current").val();
|
||||
if(ntcnTalkFormDvCd == null || ntcnTalkFormDvCd === undefined) {
|
||||
ntcnTalkFormDvCd = $(".tab-box__btn").first().val();
|
||||
}
|
||||
|
||||
if(ntcnTalkFormDvCd === undefined) {
|
||||
ntcnTalkFormDvCd = 'FORM_DV_CMMN';
|
||||
}
|
||||
|
||||
fn_select_NtcntalkTmplatForm(ntcnTalkFormDvCd);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 이메일 템플릿 목록 TAB
|
||||
******************************************************** */
|
||||
let emailfirst = 0;
|
||||
const fn_select_EmailTmplatForm = function (templatIndex) {
|
||||
$("#selectMssageTmplatBtn").removeClass("active");
|
||||
$("#selectNtcntalkTmplatBtn").removeClass("active");
|
||||
$("#selectMssageTmplat").removeClass("active");
|
||||
$("#selectNtcntalkTmplat").removeClass("active");
|
||||
|
||||
$("#selectEmailTmplatBtn").addClass("active");
|
||||
$("#selectEmailTmplat").addClass("active");
|
||||
|
||||
$("#tmpltUpdateBtn").css("display" ,"block");
|
||||
if(!emailfirst){
|
||||
fn_select_AtmcSndngTmplat(templatIndex);
|
||||
emailfirst = 1;
|
||||
}else{
|
||||
$('#formDvCd').val(templatIndex);
|
||||
fn_select_EmailTmplat(templatIndex);
|
||||
}
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 메시지 템플릿 목록 TAB
|
||||
******************************************************** */
|
||||
const fn_select_MssageTmplatForm = function (templatDv) {
|
||||
$("#selectEmailTmplatBtn").removeClass("active");
|
||||
$("#selectNtcntalkTmplatBtn").removeClass("active");
|
||||
$("#selectEmailTmplat").removeClass("active");
|
||||
$("#selectNtcntalkTmplat").removeClass("active");
|
||||
|
||||
$("#selectMssageTmplatBtn").addClass("active");
|
||||
$("#selectMssageTmplat").addClass("active");
|
||||
|
||||
$("#tmpltUpdateBtn").css("display" ,"block");
|
||||
fn_select_AtmcSndngTmplat(templatDv);
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 알림톡 템플릿 목록 TAB
|
||||
******************************************************** */
|
||||
const fn_select_NtcntalkTmplatForm = function (templatDv) {
|
||||
$("#selectEmailTmplatBtn").removeClass("active");
|
||||
$("#selectMssageTmplatBtn").removeClass("active");
|
||||
$("#selectEmailTmplat").removeClass("active");
|
||||
$("#selectMssageTmplat").removeClass("active");
|
||||
|
||||
$("#selectNtcntalkTmplatBtn").addClass("active");
|
||||
$("#selectNtcntalkTmplat").addClass("active");
|
||||
|
||||
$("#tmpltUpdateBtn").css("display" ,"none");
|
||||
fn_select_AtmcSndngTmplat(templatDv);
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 자동발송 템플릿 목록 조회
|
||||
******************************************************** */
|
||||
const fn_select_AtmcSndngTmplat = function(templatIndex) {
|
||||
let dataStr;
|
||||
let url;
|
||||
let target;
|
||||
|
||||
$('#formDvCd').val(templatIndex);
|
||||
// dataStr = $('#formDvCd').serialize();
|
||||
const sopmalCd = $("#sopmalCdList").val();
|
||||
$('#srchFormDvCd').val(templatIndex);
|
||||
$("#srchSopmalCd").val(sopmalCd);
|
||||
dataStr = $("#listForm").serialize();
|
||||
if ($('#selectEmailTmplat').hasClass('active')) {
|
||||
//이메일 템플릿의 경우 단건 조회
|
||||
url = '/admin/ntcn/tmplt/selectEmailAtmcSndngTmplatOneInqireForm';
|
||||
target = $('#selectEmailTmplat');
|
||||
} else if ($('#selectMssageTmplat').hasClass('active')) {
|
||||
url = '/admin/ntcn/tmplt/selectMssageAtmcSndngTmplatInqireForm';
|
||||
target = $('#selectMssageTmplat');
|
||||
} else if ($('#selectNtcntalkTmplat').hasClass('active')) {
|
||||
url = '/admin/ntcn/tmplt/selectNtcntalkAtmcSndngTmplatInqireForm';
|
||||
target = $('#selectNtcntalkTmplat');
|
||||
}
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url : url,
|
||||
data: dataStr,
|
||||
success : function (resultHtml) {
|
||||
target.html(resultHtml);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**********************************************
|
||||
* 자동발송 템플릿 수정
|
||||
***********************************************/
|
||||
const fn_update_AtmcSndngTmplatForm = function(formId) {
|
||||
let confirmation;
|
||||
let url;
|
||||
let dataStr;
|
||||
let dataArr = [];
|
||||
let tmplatList = null;
|
||||
if ($('#selectEmailTmplat').hasClass('active')) {
|
||||
$("#emailCn").val(Editor.getContent());
|
||||
confirmation = confirm('이메일 자동 발송 템플릿을 <spring:message code="confirm.common.update"/>');
|
||||
url = '/admin/ntcn/tmplt/updateEmailAtmcSndngTmplatUpdt';
|
||||
} else if ($('#selectMssageTmplat').hasClass('active')) {
|
||||
confirmation = confirm('메시지 자동 발송 템플릿을 <spring:message code="confirm.common.update"/>');
|
||||
url = '/admin/ntcn/tmplt/updateMssageAtmcSndngTmplatUpdt';
|
||||
|
||||
$(".sms-manage").each(function () {
|
||||
let dataObj = {};
|
||||
$(this).find("input, .textarea").each(function(){
|
||||
const name = $(this).attr("name");
|
||||
const value = $(this).val();
|
||||
|
||||
if(name) {
|
||||
dataObj[name] = value;
|
||||
}
|
||||
|
||||
})
|
||||
dataArr.push(dataObj);
|
||||
})
|
||||
|
||||
|
||||
tmplatList = JSON.stringify(dataArr);
|
||||
|
||||
$("#tmplatList").val(tmplatList);
|
||||
} else if ($('#selectNtcntalkTmplat').hasClass('active')) {
|
||||
confirmation = confirm('알림톡 자동 발송 템플릿을 <spring:message code="confirm.common.update"/>');
|
||||
url = '/admin/ntcn/tmplt/updateNtcntalkAtmcSndngTmplatUpdt';
|
||||
|
||||
$("#ntcntalkPopup").each(function () {
|
||||
let dataObj = {};
|
||||
$(this).find("input, .textarea, select").each(function(){
|
||||
const name = $(this).attr("name");
|
||||
const value = $(this).val();
|
||||
|
||||
if(name) {
|
||||
dataObj[name] = value;
|
||||
}
|
||||
|
||||
})
|
||||
dataArr.push(dataObj);
|
||||
})
|
||||
|
||||
|
||||
tmplatList = JSON.stringify(dataArr);
|
||||
$("#ntcntalkPopup").find("#ntcnTmplatList").val(tmplatList);
|
||||
|
||||
}
|
||||
|
||||
dataStr = formId ? $('#' + formId).serialize() : $('form').serialize();
|
||||
if (confirmation) {
|
||||
$.ajax({
|
||||
type : 'post',
|
||||
url : url,
|
||||
data : dataStr,
|
||||
success : function(data) {
|
||||
alert('<spring:message code="success.common.update"/>');
|
||||
if(formId){
|
||||
location.replace('/admin/ntcn/tmplt/selectAtmcSndngTmplatManage?ntcntalkChange='+$('#formDvCd').val());
|
||||
}
|
||||
},
|
||||
error : function(request, status, error) {
|
||||
console.log(error)
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 치환코드 팝업 내용 수정
|
||||
******************************************************** */
|
||||
const fn_swith_SubModal = function (substitutionList) {
|
||||
$.each(substitutionList, function(index, value) {
|
||||
switch (value) {
|
||||
/* 템플릿 개별 치환코드(빈도 높음) */
|
||||
case "sopmalCd":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "쇼핑몰코드"};
|
||||
break;
|
||||
case "shopName":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "쇼핑몰명"};
|
||||
break;
|
||||
case "bbsNm":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "게시판명"};
|
||||
break;
|
||||
case "userid":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "회원id"};
|
||||
break;
|
||||
case "user_name":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "회원명"};
|
||||
break;
|
||||
case "coupon_count":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "만료쿠폰 종수"};
|
||||
break;
|
||||
case "mypage_short_url":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "마이페이지 바로가기URL"};
|
||||
break;
|
||||
case "mileage_rest":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "소멸예정마일리지"};
|
||||
break;
|
||||
case "goodsNm":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "장바구니상품명 <br>→ 여러건일 경우 + \"외 xxx건\""};
|
||||
break;
|
||||
case "cscTelnb":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "고객센터전화번호"};
|
||||
break;
|
||||
case "rejectTelnb":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "수신거부전화번호"};
|
||||
break;
|
||||
case "ordrInnb":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "주문번호"};
|
||||
break;
|
||||
case "mbrgradNm":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "회원등급명"};
|
||||
break;
|
||||
case "coupNm":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "쿠폰명"};
|
||||
break;
|
||||
case "validpdBgnDt":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "쿠폰유효기간 시작일"};
|
||||
break;
|
||||
case "validpdEndDt":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "쿠폰유효기간 종료일"};
|
||||
break;
|
||||
case "shopDomain":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "도메인주소"};
|
||||
break;
|
||||
case "marktRecptnAgreAt":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "수신동의상태 (광고수신동의여부)"};
|
||||
break;
|
||||
case "marktRecptnAgreUpdtDt":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "수신동의일 (광고수신동의변경일시)"};
|
||||
break;
|
||||
case "Nm":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "이름"};
|
||||
break;
|
||||
case "agree_short_url":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "수신동의 URL"};
|
||||
break;
|
||||
case "ordno":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "주문번호"};
|
||||
break;
|
||||
case "go_Item":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "주문한 상품명 <br>→ 여러건일 경우 + \"외 xxx건\""};
|
||||
break;
|
||||
case "delivery_company":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "배송회사"};
|
||||
break;
|
||||
case "delivery_number":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "운송장번호"};
|
||||
break;
|
||||
case "order_user":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "주문자"};
|
||||
break;
|
||||
case "recipient_user":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "배송받는자"};
|
||||
break;
|
||||
case "passsword":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "비밀번호"};
|
||||
break;
|
||||
case "authnum":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "인증번호"};
|
||||
break;
|
||||
case "ord_Item":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "주문한 상품명 <br>→ 여러건일 경우 + \"외 xxx건\""};
|
||||
break;
|
||||
case "bank_Account":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "은행명+계좌번호+예금주명"};
|
||||
break;
|
||||
case "settleprice":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "결제금액"};
|
||||
break;
|
||||
case "orderUser":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "주문자"};
|
||||
break;
|
||||
case "ordDate":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "주문일"};
|
||||
break;
|
||||
case "ordPrice":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "결제금액"};
|
||||
break;
|
||||
case "withdrawalDt":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "탈퇴일시"};
|
||||
break;
|
||||
|
||||
case "NONE":
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}", nm : "치환코드 미사용"};
|
||||
break;
|
||||
default:
|
||||
if (!substitutionList[index].cd) {
|
||||
substitutionList[index] = {cd : "{"+substitutionList[index]+"}" ,nm : "치환 내용"};
|
||||
}
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
var tableBody = $('#substitution-pop .modal-content .table-wrapper table tbody');
|
||||
tableBody.empty();
|
||||
|
||||
if(substitutionList.length == 0){
|
||||
var row = $('<tr></tr>');
|
||||
row.append($('<td></td>').text('정의되지 않음'));
|
||||
row.append($('<td></td>').text('치환코드 추가 예정'));
|
||||
tableBody.append(row);
|
||||
}else {
|
||||
$.each(substitutionList, function(index, substitution) {
|
||||
var row = $('<tr></tr>');
|
||||
row.append($('<td></td>').text(substitution.cd));
|
||||
row.append($('<td></td>').html(substitution.nm));
|
||||
tableBody.append(row);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 공통치환코드 팝업 내용 수정
|
||||
******************************************************** */
|
||||
const fn_swith_CommonSubModal = function () {
|
||||
|
||||
let commonSubstitutionList = [];
|
||||
/* 템플릿 공통 치환코드(빈도 낮음) */
|
||||
commonSubstitutionList.push({cd : "{reprsntTelnb}", nm : "대표전화번호"});
|
||||
commonSubstitutionList.push({cd : "{shopName}", nm : "쇼핑몰 이름"});
|
||||
commonSubstitutionList.push({cd : "{shopDomain}", nm : "쇼핑몰 도메인"});
|
||||
commonSubstitutionList.push({cd : "{reprsntEmail}", nm : "대표 이메일"});
|
||||
commonSubstitutionList.push({cd : "{ascEntrpsNm}", nm : "AS센터 업체명"});
|
||||
commonSubstitutionList.push({cd : "{ascWkdayWorkTme}", nm : "AS센터 평일근무시간"});
|
||||
commonSubstitutionList.push({cd : "{ascLunchTme}", nm : "AS센터 점심시간"});
|
||||
commonSubstitutionList.push({cd : "{ascZip}", nm : "AS센터 우편번호"});
|
||||
commonSubstitutionList.push({cd : "{ascAdres}", nm : "AS센터 주소"});
|
||||
commonSubstitutionList.push({cd : "{ascDtlAdres}", nm : "AS센터 상세 주소"});
|
||||
commonSubstitutionList.push({cd : "{cscWkdayWorkTme}", nm : "고객센터 평일 근무시간"});
|
||||
commonSubstitutionList.push({cd : "{cscLunchTme}", nm : "고객센터 점심시간"});
|
||||
commonSubstitutionList.push({cd : "{cscRstde}", nm : "고객센터 휴무일"});
|
||||
commonSubstitutionList.push({cd : "{cscTelnb}", nm : "고객센터 전화번호"});
|
||||
commonSubstitutionList.push({cd : "{sleBsnmNm}", nm : "판매사 사업자명"});
|
||||
commonSubstitutionList.push({cd : "{sleBizrnb}", nm : "판매사 사업자 등록번호"});
|
||||
commonSubstitutionList.push({cd : "{sleMobDclNb}", nm : "판매사 통신판매업신고번호"});
|
||||
commonSubstitutionList.push({cd : "{sleReprsntvnm}", nm : "판매사 대표자명"});
|
||||
commonSubstitutionList.push({cd : "{sleIndvdlinfoPrtcRspnberNm}", nm : "판매사 개인정보보호책임자명"});
|
||||
commonSubstitutionList.push({cd : "{sleTelnb}", nm : "판매사 전화번호"});
|
||||
commonSubstitutionList.push({cd : "{sleFxnb}", nm : "판매사 팩스번호"});
|
||||
commonSubstitutionList.push({cd : "{sleEmail}", nm : "판매사 이메일"});
|
||||
commonSubstitutionList.push({cd : "{sleBsnDclNb}", nm : "판매사 영업신고번호"});
|
||||
commonSubstitutionList.push({cd : "{sleZip}", nm : "판매사 우편번호"});
|
||||
commonSubstitutionList.push({cd : "{sleLnbAdres}", nm : "판매사 지번주소"});
|
||||
commonSubstitutionList.push({cd : "{sleRnmAdres}", nm : "판매사 도로명주소"});
|
||||
commonSubstitutionList.push({cd : "{sleDtlAdres}", nm : "판매사 상세주소"});
|
||||
commonSubstitutionList.push({cd : "{operBsnmNm}", nm : "운영사 사업자명"});
|
||||
commonSubstitutionList.push({cd : "{operBizrnb}", nm : "운영사 사업자 등록번호"});
|
||||
commonSubstitutionList.push({cd : "{operMobDclNb}", nm : "운영사 통신판매업신고번호"});
|
||||
commonSubstitutionList.push({cd : "{operReprsntvnm}", nm : "운영사 대표자명"});
|
||||
commonSubstitutionList.push({cd : "{operIndvdlinfoPrtcRspnberNm}", nm : "운영사 개인정보보호책임자명"});
|
||||
commonSubstitutionList.push({cd : "{operTelnb}", nm : "운영사 전화번호"});
|
||||
commonSubstitutionList.push({cd : "{operFxnb}", nm : "운영사 팩스번호"});
|
||||
commonSubstitutionList.push({cd : "{operEmail}", nm : "운영사 이메일"});
|
||||
commonSubstitutionList.push({cd : "{operBsnDclNb}", nm : "운영사 영업신고번호"});
|
||||
commonSubstitutionList.push({cd : "{operZip}", nm : "운영사 우편번호"});
|
||||
commonSubstitutionList.push({cd : "{operLnbAdres}", nm : "운영사 지번주소"});
|
||||
commonSubstitutionList.push({cd : "{operRnmAdres}", nm : "운영사 도로명주소"});
|
||||
commonSubstitutionList.push({cd : "{operDtlAdres}", nm : "운영사 상세주소"});
|
||||
|
||||
var tableBody = $('#common-substitution-pop .modal-content .table-wrapper table tbody');
|
||||
|
||||
$.each(commonSubstitutionList, function(index, commonSubstitution) {
|
||||
var row = $('<tr></tr>');
|
||||
row.append($('<td></td>').text(commonSubstitution.cd));
|
||||
row.append($('<td></td>').html(commonSubstitution.nm));
|
||||
tableBody.append(row);
|
||||
});
|
||||
}
|
||||
|
||||
/**********************************************
|
||||
* 문자 기본 메시지
|
||||
***********************************************/
|
||||
const fn_set_defaultMessage = function(button, defaultText) {
|
||||
var smsManage = $(button).closest('.template-message').find('.sms-manage');
|
||||
smsManage.find('textarea[name="smsCn"]').val(defaultText);
|
||||
smsManage.find('.number').text(byteCount(defaultText));
|
||||
}
|
||||
|
||||
/**********************************************
|
||||
* 알림톡 대체문자 사용여부
|
||||
***********************************************/
|
||||
const fn_switch_smsRplcAt = function(button) {
|
||||
var ntcnTmplt = $(button).parent().parent();
|
||||
var smsRplcAt = ntcnTmplt.find('input[name="smsRplcAt"]');
|
||||
var smsRplcDiv = ntcnTmplt.find('.smsRplc');
|
||||
|
||||
if ($(button).hasClass('primary')) {
|
||||
$(button).removeClass('primary').addClass('dark').text('문자 OFF');
|
||||
smsRplcAt.val('N');
|
||||
smsRplcDiv.css('background-color', '#f8f9fa');
|
||||
} else {
|
||||
$(button).removeClass('dark').addClass('primary').text('문자 ON');
|
||||
smsRplcAt.val('Y');
|
||||
smsRplcDiv.css('background-color', '');
|
||||
}
|
||||
|
||||
var smsRplcCn = ntcnTmplt.find('textarea[name="smsRplcCn"]');
|
||||
smsRplcCn.prop('readonly', !smsRplcCn.prop('readonly'));
|
||||
smsRplcCn.css('cursor', smsRplcCn.css('cursor') === 'not-allowed' ? '' : 'not-allowed');
|
||||
}
|
||||
|
||||
/**********************************************
|
||||
* 알림톡 팝업 - 버튼 추가
|
||||
***********************************************/
|
||||
const fn_add_buttonRow = function() {
|
||||
if($('.modal .message-edit__wrapper .talk-edit-row').length == 0){
|
||||
var script = document.createElement('script');
|
||||
script.src = '/admin/js/script.js';
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
if($('.modal .message-edit__wrapper .talk-edit-row').length < 5){
|
||||
let rowLength = $('.modal .message-edit__wrapper .talk-edit-row').length + 1;
|
||||
$('.modal .message-edit__wrapper .message-edit-preview__footer').append($('<a href="#" class="message-edit-preview__footer-item">버튼 링크</a>'));
|
||||
$('.modal .message-edit__wrapper tbody').append($(
|
||||
'<tr><td><div class="talk-edit-row">' +
|
||||
'<div class="select-box select-show-trigger">' +
|
||||
'<select name="btnType" title="해당 셀렉트에 대한 설명" style="display: none;">' +
|
||||
'<option value="WL" selected="">버튼 링크</option>' +
|
||||
'<option value="DS">배송 조회</option>' +
|
||||
'</select>' +
|
||||
'<div class="nice-select">' +
|
||||
'<span class="current">버튼 링크</span>' +
|
||||
'<ul class="list">' +
|
||||
'<li data-value="WL" class="option selected">버튼 링크</li>' +
|
||||
'<li data-value="DS" class="option">배송 조회</li>' +
|
||||
'</ul>' +
|
||||
'</div>' +
|
||||
'</div>' +
|
||||
'<input class="WL input-text" type="text" name="btnNm" title="해당 인풋에 대한 설명" placeholder="버튼명(최대 28자)" maxlength="28">' +
|
||||
'<input class="WL input-text xl" type="text" name="btnPcUrl" title="해당 인풋에 대한 설명" placeholder="링크주소">' +
|
||||
'<input class="WL input-text xl" type="text" name="btnMUrl" title="해당 인풋에 대한 설명" placeholder="모바일 링크주소">' +
|
||||
'<span class="DS w-full" style="display: none;">배송조회는 버튼 링크를 포함하지 않습니다.</span>' +
|
||||
'<button class="circle-btn delete" onclick="fn_remove_buttonRow(this)">' +
|
||||
'<span class="visually-hidden">삭제</span>' +
|
||||
'</button>' +
|
||||
'</div></td></tr>'));
|
||||
}else{
|
||||
alert('버튼은 최대 5개까지 사용 가능합니다.');
|
||||
}
|
||||
}
|
||||
|
||||
/**********************************************
|
||||
* 알림톡 팝업 - 버튼 타입 변경
|
||||
***********************************************/
|
||||
$(document).on('change', 'select[name="btnType"]', function() {
|
||||
var count = 0;
|
||||
$("select[name='btnType']").each(function() {
|
||||
$(this).val()=='DS' ? count++ : count;
|
||||
});
|
||||
|
||||
var tr = $(this).closest('tr');
|
||||
if(count > 1){
|
||||
alert('배송조회 버튼은 메세지당 한개만 가능합니다.');
|
||||
$(this).val('WL');
|
||||
tr.find('span.current').html('버튼 링크');
|
||||
tr.find('li[data-value="WL"]').addClass('selected');
|
||||
tr.find('li[data-value="DS"]').removeClass('selected');
|
||||
}else{
|
||||
var btnRow = $(this).closest('.talk-edit-row');
|
||||
btnRow.find('.WL, .DS').hide();
|
||||
btnRow.find('.' + $(this).val()).show();
|
||||
|
||||
var index = tr.index()-2;
|
||||
var previewBtn = $('.modal .message-edit__wrapper .message-edit-preview__footer-item');
|
||||
var btnNm = btnRow.find('input[name="btnNm"]').val();
|
||||
previewBtn.eq(index).html($(this).val() == 'DS' ? '배송 조회' : (btnNm?btnNm:'버튼 링크'));
|
||||
}
|
||||
});
|
||||
|
||||
/**********************************************
|
||||
* 알림톡 팝업 - 버튼 이름 변경(미리보기)
|
||||
***********************************************/
|
||||
$(document).on('change', 'input[name="btnNm"]', function() {
|
||||
var btnNm = $(this).val();
|
||||
var index = $(this).closest('tr').index()-2;
|
||||
var previewBtn = $('.modal .message-edit__wrapper .message-edit-preview__footer-item');
|
||||
previewBtn.eq(index).html(btnNm || " ");
|
||||
});
|
||||
|
||||
/**********************************************
|
||||
* 알림톡 팝업 - 버튼 삭제(미리보기)
|
||||
***********************************************/
|
||||
const fn_remove_buttonRow = function(button) {
|
||||
var index = $(button).closest('tr').index()-2;
|
||||
var previewBtn = $('.modal .message-edit__wrapper .message-edit-preview__footer-item');
|
||||
previewBtn.eq(index).remove();
|
||||
}
|
||||
|
||||
/**********************************************
|
||||
* 알림톡 미리보기 반영
|
||||
***********************************************/
|
||||
const updatePreview = function() {
|
||||
$(".message-edit-preview__content textarea").val($(this).val());
|
||||
};
|
||||
|
||||
/**********************************************
|
||||
* 데이터 크기(byte) 계산
|
||||
***********************************************/
|
||||
const byteCount = function(text) {
|
||||
return encodeURI(text).split(/%..|./).length - 1;
|
||||
}
|
||||
|
||||
/**********************************************
|
||||
* 데이터 크기(byte) 반영
|
||||
***********************************************/
|
||||
const updateByteCount = function() {
|
||||
$(this).closest('.sms-manage').find('.number').text(byteCount($(this).val()));
|
||||
if ($('#selectNtcntalkTmplat').hasClass('active')) {
|
||||
//알림톡 수정 팝업화면의 경우 글자수 반영
|
||||
$(this).closest('.sms-manage').find('.count').text($(this).val().length);
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<body>
|
||||
<%-- 상단메뉴 공통화 적용 : 2023-11-30 / 박철민 추가 --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%-- 좌측메뉴 공통화 적용 : 2023-11-30 / 박철민 추가 --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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="form-control-container" style="width:83%">
|
||||
<div class="left">
|
||||
</div>
|
||||
<div class="center">
|
||||
</div>
|
||||
<div class="right">
|
||||
<div class="select-box">
|
||||
<select title="쇼핑몰" name = "sopmalCd" id = "sopmalCdList" onchange = "fn_select_tmplat_sopmal(); return false;">
|
||||
<c:forEach var="sopmal" items="${ resultMap.sopmalCdList }" varStatus="status">
|
||||
<option value="<c:out value="${ sopmal.sopmalCd }"/>"
|
||||
<c:if test="${ boMaTmpltVo.sopmalCd eq sopmal.sopmalCd}">selected="selected"</c:if>>
|
||||
<c:out value="${ sopmal.sopmalNm }"/>
|
||||
</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="page-title__btn-container">
|
||||
<button class="btn primary" onclick="fn_update_AtmcSndngTmplatForm()" id="tmpltUpdateBtn">저장하기</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content-tab">
|
||||
<button class="content-tab__btn active" id="selectEmailTmplatBtn">이메일</button>
|
||||
<button class="content-tab__btn" id="selectMssageTmplatBtn">메시지</button>
|
||||
<button class="content-tab__btn" id="selectNtcntalkTmplatBtn">알림톡</button>
|
||||
</div>
|
||||
<form id="listForm">
|
||||
<input type="hidden" id="srchFormDvCd" name="formDvCd">
|
||||
<input type="hidden" id="srchSopmalCd" name="sopmalCd">
|
||||
</form>
|
||||
<form id='tx_editor_form' name="tx_editor_form">
|
||||
<input type="hidden" id="tmplatList" name="tmplatList">
|
||||
<input type="hidden" id="formDvCd" name="formDvCd">
|
||||
<div class="content-tab__content active" id="selectEmailTmplat">
|
||||
<%--이메일 자동발송 템플릿--%>
|
||||
</div>
|
||||
<div class="content-tab__content" id="selectMssageTmplat">
|
||||
<%--메시지 자동발송 템플릿--%>
|
||||
</div>
|
||||
<div class="content-tab__content" id="selectNtcntalkTmplat">
|
||||
<%--알림톡 자동발송 템플릿--%>
|
||||
</div>
|
||||
</form>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<!-- 치환코드 모달 -->
|
||||
<div id="substitution-pop" class="modal" style="max-width: 400px;">
|
||||
<div class="modal-header">
|
||||
<h4>사용 가능한 치환코드</h4>
|
||||
</div>
|
||||
<div class="modal-content">
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical tight">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 33%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>치환코드</th>
|
||||
<th>설명</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!-- 치환코드 내용 삽입 -->
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 공통치환코드 모달 -->
|
||||
<div id="common-substitution-pop" class="modal" style="max-width: 400px;">
|
||||
<div class="modal-header">
|
||||
<h4>사용 가능한 치환코드</h4>
|
||||
</div>
|
||||
<div class="modal-content">
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical tight">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 33%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>치환코드</th>
|
||||
<th>설명</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!-- 치환코드 내용 삽입 -->
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 알림톡 메시지 수정 모달 -->
|
||||
<div id="ntcntalkAtmcSndngTmplatUpdtPopupDiv">
|
||||
</div>
|
||||
<!-- 알림톡 치환코드 모달(모달속 모달) -->
|
||||
<div id="substitution-talk-pop" class="modal" style="max-width: 400px;">
|
||||
<div class="modal-header">
|
||||
<h4>사용 가능한 치환코드</h4>
|
||||
</div>
|
||||
<div class="modal-content">
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical tight">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 33%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>치환코드</th>
|
||||
<th>설명</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!-- 치환코드 내용 삽입 -->
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="info01" class="mini-info-content" style="width: 280px;">
|
||||
<div class="mini-info-content__header">
|
||||
<h5 class="mini-info-content__title">버튼 안내</h5>
|
||||
<button class="mini-info-content__close"><span class="visually-hidden">닫기</span></button>
|
||||
</div>
|
||||
<div class="mini-info-content__content">
|
||||
<p>버튼명은 '배송 조회하기'로 자동 노출 됩니다.<p>
|
||||
<p>알림톡 메시지 파싱을 통해 배송조회 링크가 자동 생성 됩니다.</p>
|
||||
<p>지원 택배사 : CJ대한통운, FedEx, GTX로지스, KG로지스, 경동택배, 로젠택배, 우체국택배, 일양로지스, 한진택배, 합동택배, 롯데택배</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="info02" class="modal" style="width: 280px;">
|
||||
<div class="mini-info-content__header">
|
||||
<h5 class="mini-info-content__title">버튼 안내</h5>
|
||||
<a href="#" rel="modal:close" class="mini-info-content__close"><span class="visually-hidden">닫기</span></a>
|
||||
</div>
|
||||
<div class="mini-info-content__content">
|
||||
<p>버튼명은 '배송 조회하기'로 자동 노출 됩니다.<p>
|
||||
<p>알림톡 메시지 파싱을 통해 배송조회 링크가 자동 생성 됩니다.</p>
|
||||
<p>지원 택배사 : CJ대한통운, FedEx, GTX로지스, KG로지스, 경동택배, 로젠택배, 우체국택배, 일양로지스, 한진택배, 합동택배, 롯데택배</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,259 @@
|
||||
<%@ 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"%>
|
||||
<%@ page import="java.util.Date" %>
|
||||
<%--
|
||||
Class Name : MaEmailAtmcSndngTmplatU.jsp
|
||||
Description : 이메일 템플릿 관리
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-02-21 리브가 최초 생성
|
||||
2024-04-17 이대환 Email>Email 분리
|
||||
--%>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
fn_select_EmailTmplat($("#formDvCd").val());
|
||||
|
||||
/* 치환코드 하드코딩 */
|
||||
var modalLink = $('a[href="#substitution-pop"]');
|
||||
modalLink.click(function() {
|
||||
var formDvCdValue = $("#srchFormDvCd").val();
|
||||
var formDtlDvCd = parseInt(formDvCdValue.split("&")[1]);
|
||||
|
||||
switch(formDvCdValue.split("&")[0]){
|
||||
case "FORM_DV_BBS":
|
||||
fn_swith_SubModal(substitutionList[formDtlDvCdLength[0]+formDtlDvCd-1]);
|
||||
break;
|
||||
case "FORM_DV_CMMN":
|
||||
fn_swith_SubModal(substitutionList[formDtlDvCdLength[1]+formDtlDvCd-1]);
|
||||
break;
|
||||
case "FORM_DV_DLVY":
|
||||
fn_swith_SubModal(substitutionList[formDtlDvCdLength[2]+formDtlDvCd-1]);
|
||||
break;
|
||||
case "FORM_DV_MBR":
|
||||
fn_swith_SubModal(substitutionList[formDtlDvCdLength[3]+formDtlDvCd-1]);
|
||||
break;
|
||||
case "FORM_DV_ORDR":
|
||||
fn_swith_SubModal(substitutionList[formDtlDvCdLength[4]+formDtlDvCd-1]);
|
||||
break;
|
||||
case "FORM_DV_REMND":
|
||||
fn_swith_SubModal(substitutionList[formDtlDvCdLength[5]+formDtlDvCd-1]);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
let substitutionList = [];
|
||||
let formDtlDvCdLength = [];
|
||||
|
||||
/*게시판(FORM_DV_BBS)*/
|
||||
formDtlDvCdLength.push(substitutionList.length);
|
||||
//게시글 등록(01)
|
||||
substitutionList.push(["sopmalCd", "shopName", "bbsNm"]);
|
||||
//게시글 답변(02)
|
||||
substitutionList.push(["sopmalCd", "shopName", "bbsNm"]);
|
||||
|
||||
/*공통(FORM_DV_CMMN)*/
|
||||
formDtlDvCdLength.push(substitutionList.length);
|
||||
//혜택 정보 수신동의 여부 확인(01)
|
||||
substitutionList.push(["sopmalCd", "shopName", "shopDomain", "user_name", "marktRecptnAgreAt", "marktRecptnAgreUpdtDt", "cscTelnb", "rejectTelnb"]);
|
||||
//혜택 정보 수신동의 변경 결과(02)
|
||||
substitutionList.push(["sopmalCd", "shopName", "shopDomain", "user_name", "marktRecptnAgreAt", "marktRecptnAgreUpdtDt", "cscTelnb", "rejectTelnb"]);
|
||||
//(비회원 구매자) 혜택 정보 수신동의 요청(03)
|
||||
substitutionList.push(["sopmalCd", "shopName", "shopDomain", "Nm", "agree_short_url"]);
|
||||
//(비회원 구매자) 혜택 정보 수신동의 결과(04)
|
||||
substitutionList.push(["NONE"]);
|
||||
|
||||
/*배송(FORM_DV_DLVY)*/
|
||||
formDtlDvCdLength.push(substitutionList.length);
|
||||
//출고 완료(주문자)(01)
|
||||
substitutionList.push(["sopmalCd", "shopName", "ordno", "go_Item", "delivery_company", "delivery_number", "order_user", "recipient_user"]);
|
||||
//배송완료(주문자)(02)
|
||||
substitutionList.push(["sopmalCd", "shopName", "ordno", "go_Item", "delivery_company", "delivery_number", "order_user", "recipient_user"]);
|
||||
//출고 완료(받는분)(03)
|
||||
substitutionList.push(["sopmalCd", "shopName", "ordno", "go_Item", "delivery_company", "delivery_number", "order_user", "recipient_user"]);
|
||||
//배송완료(받는분)(04)
|
||||
substitutionList.push(["sopmalCd", "shopName", "ordno", "go_Item", "delivery_company", "delivery_number", "order_user", "recipient_user"]);
|
||||
|
||||
/*회원(FORM_DV_MBR)*/
|
||||
formDtlDvCdLength.push(substitutionList.length);
|
||||
//회원 가입(01)
|
||||
substitutionList.push(["sopmalCd", "shopName", "user_name", "userid"]);
|
||||
//회원 탈퇴(02)
|
||||
substitutionList.push(["sopmalCd", "shopName", "userid", "withdrawalDt"]);
|
||||
//아이디 찾기(03)
|
||||
substitutionList.push(["sopmalCd", "shopName", "userid"]);
|
||||
//비밀번호 찾기(04)
|
||||
substitutionList.push(["sopmalCd", "shopName", "passsword"]);
|
||||
//개인인증번호 확인(05)
|
||||
substitutionList.push(["sopmalCd", "shopName", "authnum"]);
|
||||
//장기 미구매 고객 대상 쿠폰(06)
|
||||
substitutionList.push(["NONE"]);
|
||||
//생일 쿠폰(07)
|
||||
substitutionList.push(["NONE"]);
|
||||
|
||||
/*주문(FORM_DV_ORDR)*/
|
||||
formDtlDvCdLength.push(substitutionList.length);
|
||||
//주문 접수(01)
|
||||
substitutionList.push(["sopmalCd", "shopName", "ord_Item", "ordno", "bank_Account", "settleprice"]);
|
||||
//결제 확인(02)
|
||||
substitutionList.push(["sopmalCd", "shopName", "orderUser", "ord_Item", "ordno", "ordDate", "ordPrice"]);
|
||||
//환불 완료(취소)(03)
|
||||
substitutionList.push(["sopmalCd", "shopName"]);
|
||||
//환불 완료(반품)(04)
|
||||
substitutionList.push(["sopmalCd", "shopName"]);
|
||||
//입금 요청(05)
|
||||
substitutionList.push(["sopmalCd", "shopName", "ord_Item", "ordno", "bank_Account", "settleprice"]);
|
||||
//선물하기 안내(06)
|
||||
substitutionList.push(["NONE"]);
|
||||
|
||||
/*고객리마인드(FORM_DV_REMND)*/
|
||||
formDtlDvCdLength.push(substitutionList.length);
|
||||
//회원 멤버쉽 등급변경(01)
|
||||
substitutionList.push(["shopName", "user_name", "mbrgradNm", "mypage_short_url", "cscTelnb", "rejectTelnb"]);
|
||||
//상품 리뷰 작성 유도(02)
|
||||
substitutionList.push(["shopName", "user_name", "ordrInnb", "goodsNm", "mypage_short_url", "cscTelnb", "rejectTelnb"]);
|
||||
//만료 쿠폰(03)
|
||||
substitutionList.push(["shopName", "userid", "user_name", "coupon_count", "mypage_short_url"]);
|
||||
//소멸 예정 마일리지(04)
|
||||
substitutionList.push(["shopName", "user_name", "mileage_rest", "mypage_short_url"]);
|
||||
//생일 축하(05)
|
||||
substitutionList.push(["shopName", "user_name", "coupNm", "validpdBgnDt", "validpdEndDt", "mypage_short_url", "cscTelnb", "rejectTelnb"]);
|
||||
//장바구니 상품(06)
|
||||
substitutionList.push(["shopName", "user_name", "goodsNm", "mypage_short_url", "cscTelnb", "rejectTelnb"]);
|
||||
//정수기 필터 교체 알림(07)
|
||||
substitutionList.push(["NONE"]);
|
||||
//장바구니 타임세일(08)
|
||||
substitutionList.push(["shopName", "user_name", "goodsNm", "mypage_short_url", "cscTelnb", "rejectTelnb"]);
|
||||
});
|
||||
|
||||
const fn_select_EmailTmplat = function (templatIndex) {
|
||||
$('#srchFormDvCd').val(templatIndex);
|
||||
$('#srchSopmalCd').val($('#sopmalCdList').val());
|
||||
|
||||
/* 라디오버튼 임시방편 */
|
||||
var radioButtons = $("input[name='r-group01']");
|
||||
|
||||
radioButtons.each(function() {
|
||||
if ($(this).val() === $("#srchFormDvCd").val()) {
|
||||
$(this).prop("checked", true);
|
||||
}
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url : '/admin/ntcn/tmplt/selectEmailAtmcSndngTmplatOne',
|
||||
data: $("#listForm").serialize(),
|
||||
success : function (Data) {
|
||||
let boCtrlMap = JSON.parse(Data.resBody.result).boCtrlMap;
|
||||
let dsptchAdres = JSON.parse(Data.resBody.result).dsptchAdres;
|
||||
|
||||
$('#dsptchAdres').text(dsptchAdres);
|
||||
$('#emailSj').val(boCtrlMap.emailSj);
|
||||
$('#emailCn').val((boCtrlMap.emailCn != null && boCtrlMap.emailCn.trim() != '') ? boCtrlMap.emailCn : ' ');
|
||||
|
||||
Editor.modify({
|
||||
"content": document.getElementById("emailCn")
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<section class="content-section">
|
||||
<h3 class="content-section__title">이메일</h3>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 12%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<c:choose>
|
||||
<c:when test="${ not empty resultListMap.groupCd}">
|
||||
<c:forEach items="${ resultListMap.groupCd }" var="list" varStatus="status">
|
||||
<c:set var = "index" scope = "session" value = "${status.index}"/>
|
||||
<tr>
|
||||
<c:if test="${status.index == 0}">
|
||||
<th rowspan="<c:out value="${fn:length(resultListMap.groupCd)}"/>" class="border-right">이메일 선택</th>
|
||||
</c:if>
|
||||
<c:if test="${list.groupCd eq 'FORM_DV'}">
|
||||
<c:set var = "groupDtl" scope = "session" value = "${list.groupCd}_${list.cd}"/>
|
||||
<th>
|
||||
<c:out value="${list.cdNm}"/>
|
||||
</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<c:forEach items="${ resultListMap.formDvCd }" var="list" varStatus="status">
|
||||
<c:if test="${list.groupCd eq groupDtl}">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="r-${status.index}" name="r-group01" value="<c:out value="${list.groupCd}"/>&<c:out value="${list.cd}"/>" onchange="fn_select_EmailTmplat(this.value)">
|
||||
<label for="r-${status.index}"><c:out value="${list.cdNm}"/></label>
|
||||
</div>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</c:if>
|
||||
</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>
|
||||
<h3 class="content-section__title">작성</h3>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>보내는 메일</th>
|
||||
<td>
|
||||
<div id="dsptchAdres" class="td-inner">
|
||||
<c:out value = "${resultListMap.dsptchAdres}"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>제목</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text xl" type="text" title="이메일제목" id="emailSj" name="emailSj"
|
||||
placeholder="" value="<c:out value = "${resultListMap.boCtrlMap.emailSj}"/>">
|
||||
<a href="#substitution-pop" rel="modal:open"
|
||||
class="btn sm outline">
|
||||
<i class="icon icon_info"></i>
|
||||
치환 코드
|
||||
</a>
|
||||
<a href="#common-substitution-pop" rel="modal:open"
|
||||
class="btn sm outline">
|
||||
<i class="icon icon_info"></i>
|
||||
공통 치환 코드
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<h3 class="content-section__title">내용</h3>
|
||||
<%@ include file="../email/EmailPassivSndngEditor.jsp" %>
|
||||
<textarea class="textarea" id="emailCn" name="emailCn" style="display: none"><c:out value = "${resultListMap.boCtrlMap.emailCn}"/></textarea>
|
||||
</section>
|
||||
@@ -0,0 +1,278 @@
|
||||
<%@ 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"%>
|
||||
<%@ page import="java.util.Date" %>
|
||||
<%--
|
||||
Class Name : MaMssageAtmcSndngTmplatU.jsp
|
||||
Description : 메시지 템플릿 관리
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-02-21 리브가 최초 생성
|
||||
2024-04-17 이대환 Email>Mssage 분리
|
||||
--%>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$('.textarea').each(updateByteCount);
|
||||
|
||||
/* 탭 박스 임시방편 */
|
||||
var formDvCd = $("#formDvCd").val();
|
||||
var radioButtons = $(".tab-box__btn");
|
||||
|
||||
radioButtons.each(function() {
|
||||
if ($(this).val() === formDvCd) {
|
||||
$(this).addClass("current")
|
||||
}else{
|
||||
$(this).removeClass("current")
|
||||
}
|
||||
});
|
||||
|
||||
/* 치환코드 하드코딩 */
|
||||
var modalLink = $('a[href="#substitution-pop"]');
|
||||
modalLink.click(function() {
|
||||
var formDtlDvCd = parseInt($(this).data('value'));
|
||||
|
||||
switch(formDvCd){
|
||||
case "FORM_DV_BBS":
|
||||
fn_swith_SubModal(substitutionList[formDtlDvCdLength[0]+formDtlDvCd-1]);
|
||||
break;
|
||||
case "FORM_DV_CMMN":
|
||||
fn_swith_SubModal(substitutionList[formDtlDvCdLength[1]+formDtlDvCd-1]);
|
||||
break;
|
||||
case "FORM_DV_DLVY":
|
||||
fn_swith_SubModal(substitutionList[formDtlDvCdLength[2]+formDtlDvCd-1]);
|
||||
break;
|
||||
case "FORM_DV_MBR":
|
||||
fn_swith_SubModal(substitutionList[formDtlDvCdLength[3]+formDtlDvCd-1]);
|
||||
break;
|
||||
case "FORM_DV_ORDR":
|
||||
fn_swith_SubModal(substitutionList[formDtlDvCdLength[4]+formDtlDvCd-1]);
|
||||
break;
|
||||
case "FORM_DV_REMND":
|
||||
fn_swith_SubModal(substitutionList[formDtlDvCdLength[5]+formDtlDvCd-1]);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
/* 기본 메시지 버튼 */
|
||||
var defaultButton = $('.template-message__footer .manage-btn-container button');
|
||||
defaultButton.click(function() {
|
||||
var formDtlDvCd = parseInt($(this).data('value'));
|
||||
|
||||
switch(formDvCd){
|
||||
case "FORM_DV_BBS":
|
||||
fn_set_defaultMessage($(this), defaultMsgList[formDtlDvCdLength[0]+formDtlDvCd-1]);
|
||||
break;
|
||||
case "FORM_DV_CMMN":
|
||||
fn_set_defaultMessage($(this), defaultMsgList[formDtlDvCdLength[1]+formDtlDvCd-1]);
|
||||
break;
|
||||
case "FORM_DV_DLVY":
|
||||
fn_set_defaultMessage($(this), defaultMsgList[formDtlDvCdLength[2]+formDtlDvCd-1]);
|
||||
break;
|
||||
case "FORM_DV_MBR":
|
||||
fn_set_defaultMessage($(this), defaultMsgList[formDtlDvCdLength[3]+formDtlDvCd-1]);
|
||||
break;
|
||||
case "FORM_DV_ORDR":
|
||||
fn_set_defaultMessage($(this), defaultMsgList[formDtlDvCdLength[4]+formDtlDvCd-1]);
|
||||
break;
|
||||
case "FORM_DV_REMND":
|
||||
fn_set_defaultMessage($(this), defaultMsgList[formDtlDvCdLength[5]+formDtlDvCd-1]);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
let substitutionList = [];
|
||||
let defaultMsgList = [];
|
||||
let formDtlDvCdLength = [];
|
||||
|
||||
/*게시판(FORM_DV_BBS)*/
|
||||
formDtlDvCdLength.push(substitutionList.length);
|
||||
//게시글 등록(01)
|
||||
substitutionList.push(["sopmalCd", "shopName", "bbsNm"]);
|
||||
defaultMsgList.push("기본 메시지 정의되지 않음");
|
||||
//게시글 답변(02)
|
||||
substitutionList.push(["sopmalCd", "shopName", "bbsNm"]);
|
||||
defaultMsgList.push("기본 메시지 정의되지 않음");
|
||||
|
||||
/*공통(FORM_DV_CMMN)*/
|
||||
formDtlDvCdLength.push(substitutionList.length);
|
||||
//혜택 정보 수신동의 여부 확인(01)
|
||||
substitutionList.push(["sopmalCd", "shopName", "shopDomain", "user_name", "marktRecptnAgreAt", "marktRecptnAgreUpdtDt", "cscTelnb", "rejectTelnb"]);
|
||||
defaultMsgList.push("기본 메시지 정의되지 않음");
|
||||
//혜택 정보 수신동의 변경 결과(02)
|
||||
substitutionList.push(["sopmalCd", "shopName", "shopDomain", "user_name", "marktRecptnAgreAt", "marktRecptnAgreUpdtDt", "cscTelnb", "rejectTelnb"]);
|
||||
defaultMsgList.push("기본 메시지 정의되지 않음");
|
||||
//(비회원 구매자) 혜택 정보 수신동의 요청(03)
|
||||
substitutionList.push(["sopmalCd", "shopName", "shopDomain", "Nm", "agree_short_url"]);
|
||||
defaultMsgList.push("기본 메시지 정의되지 않음");
|
||||
//(비회원 구매자) 혜택 정보 수신동의 결과(04)
|
||||
substitutionList.push(["NONE"]);
|
||||
defaultMsgList.push("기본 메시지 정의되지 않음");
|
||||
|
||||
/*배송(FORM_DV_DLVY)*/
|
||||
formDtlDvCdLength.push(substitutionList.length);
|
||||
//출고 완료(주문자)(01)
|
||||
substitutionList.push(["sopmalCd", "shopName", "ordno", "go_Item", "delivery_company", "delivery_number", "order_user", "recipient_user"]);
|
||||
defaultMsgList.push("[{shopName}] 주문({ordno})하신 상품({go_item})이 발송({delivery_company} {delivery_number})되었습니다.");
|
||||
//배송완료(주문자)(02)
|
||||
substitutionList.push(["sopmalCd", "shopName", "ordno", "go_Item", "delivery_company", "delivery_number", "order_user", "recipient_user"]);
|
||||
defaultMsgList.push("[{shopName}] 주문({ordno})하신 상품({go_item})이 배송되었습니다.");
|
||||
//출고 완료(받는분)(03)
|
||||
substitutionList.push(["sopmalCd", "shopName", "ordno", "go_Item", "delivery_company", "delivery_number", "order_user", "recipient_user"]);
|
||||
defaultMsgList.push("[{shopName}]에서 {order_user}님이 {recipient_user}에게 주문한 상품이 발송되었습니다.");
|
||||
//배송완료(받는분)(04)
|
||||
substitutionList.push(["sopmalCd", "shopName", "ordno", "go_Item", "delivery_company", "delivery_number", "order_user", "recipient_user"]);
|
||||
defaultMsgList.push("[{shopName}]에서 {order_user}님이 {recipient_user}에게 주문한 상품이 배송완료되었습니다.");
|
||||
|
||||
/*회원(FORM_DV_MBR)*/
|
||||
formDtlDvCdLength.push(substitutionList.length);
|
||||
//회원 가입(01)
|
||||
substitutionList.push(["sopmalCd", "shopName", "user_name"]);
|
||||
defaultMsgList.push("[{shopName}] 회원 가입을 환영합니다.");
|
||||
//회원 탈퇴(02)
|
||||
substitutionList.push(["sopmalCd", "shopName", "userid", "withdrawalDt"]);
|
||||
defaultMsgList.push("[{shopName}] 회원 탈퇴가 처리되었습니다.");
|
||||
//아이디 찾기(03)
|
||||
substitutionList.push(["sopmalCd", "shopName", "userid"]);
|
||||
defaultMsgList.push("[{shopName}] 문의하신 아이디는 {userid} 입니다.");
|
||||
//비밀번호 찾기(04)
|
||||
substitutionList.push(["sopmalCd", "shopName", "passsword"]);
|
||||
defaultMsgList.push("[{shopName}] 요청하신 임시 비밀번호는 {password} 입니다.");
|
||||
//개인인증번호 확인(05)
|
||||
substitutionList.push(["sopmalCd", "shopName", "authnum"]);
|
||||
defaultMsgList.push("기본 메시지 정의되지 않음");
|
||||
//장기 미구매 고객 대상 쿠폰(06)
|
||||
substitutionList.push(["NONE"]);
|
||||
defaultMsgList.push("기본 메시지 정의되지 않음");
|
||||
//생일 쿠폰(07)
|
||||
substitutionList.push(["NONE"]);
|
||||
defaultMsgList.push("기본 메시지 정의되지 않음");
|
||||
|
||||
/*주문(FORM_DV_ORDR)*/
|
||||
formDtlDvCdLength.push(substitutionList.length);
|
||||
//주문 접수(01)
|
||||
substitutionList.push(["sopmalCd", "shopName", "ord_Item", "ordno", "bank_Account", "settleprice"]);
|
||||
defaultMsgList.push("[{shopName}] {ord_item}의 주문({ordno})이 접수되었습니다."+"\n입금안내 : {bank_account} {settleprice}");
|
||||
//결제 확인(02)
|
||||
substitutionList.push(["sopmalCd", "shopName", "orderUser", "ord_Item", "ordno", "ordDate", "ordPrice"]);
|
||||
defaultMsgList.push("[{shopName}] {ord_item}의 주문({ordno})이 결제확인({settle_kind} {settleprice})되었습니다.");
|
||||
//환불 완료(취소)(03)
|
||||
substitutionList.push(["sopmalCd", "shopName"]);
|
||||
defaultMsgList.push("[{shopName}] 결제취소 상품({repay_item})이 취소되었습니다.");
|
||||
//환불 완료(반품)(04)
|
||||
substitutionList.push(["sopmalCd", "shopName"]);
|
||||
defaultMsgList.push("[{shopName}] 반품 상품({repay_item})이 환불되었습니다.");
|
||||
//입금 요청(05)
|
||||
substitutionList.push(["sopmalCd", "shopName", "ord_Item", "ordno", "bank_Account", "settleprice"]);
|
||||
defaultMsgList.push("기본 메시지 정의되지 않음");
|
||||
//선물하기 안내(06)
|
||||
substitutionList.push(["NONE"]);
|
||||
defaultMsgList.push("기본 메시지 정의되지 않음");
|
||||
|
||||
/*고객리마인드(FORM_DV_REMND)*/
|
||||
formDtlDvCdLength.push(substitutionList.length);
|
||||
//회원 멤버쉽 등급변경(01)
|
||||
substitutionList.push(["shopName", "user_name", "mbrgradNm", "mypage_short_url", "cscTelnb", "rejectTelnb"]);
|
||||
defaultMsgList.push("기본 메시지 정의되지 않음");
|
||||
//상품 리뷰 작성 유도(02)
|
||||
substitutionList.push(["shopName", "user_name", "ordrInnb", "goodsNm", "mypage_short_url", "cscTelnb", "rejectTelnb"]);
|
||||
defaultMsgList.push("기본 메시지 정의되지 않음");
|
||||
//만료 쿠폰(03)
|
||||
substitutionList.push(["shopName", "userid", "user_name", "coupon_count", "mypage_short_url"]);
|
||||
defaultMsgList.push("기본 메시지 정의되지 않음");
|
||||
//소멸 예정 마일리지(04)
|
||||
substitutionList.push(["shopName", "user_name", "mileage_rest", "mypage_short_url"]);
|
||||
defaultMsgList.push("기본 메시지 정의되지 않음");
|
||||
//생일 축하(05)
|
||||
substitutionList.push(["shopName", "user_name", "coupNm", "validpdBgnDt", "validpdEndDt", "mypage_short_url", "cscTelnb", "rejectTelnb"]);
|
||||
defaultMsgList.push("기본 메시지 정의되지 않음");
|
||||
//장바구니 상품(06)
|
||||
substitutionList.push(["shopName", "user_name", "goodsNm", "mypage_short_url", "cscTelnb", "rejectTelnb"]);
|
||||
defaultMsgList.push("기본 메시지 정의되지 않음");
|
||||
//정수기 필터 교체 알림(07)
|
||||
substitutionList.push(["NONE"]);
|
||||
defaultMsgList.push("기본 메시지 정의되지 않음");
|
||||
//장바구니 타임세일(08)
|
||||
substitutionList.push(["shopName", "user_name", "goodsNm", "mypage_short_url", "cscTelnb", "rejectTelnb"]);
|
||||
defaultMsgList.push("기본 메시지 정의되지 않음");
|
||||
});
|
||||
|
||||
$('.textarea').on('input', updateByteCount);
|
||||
</script>
|
||||
<section class="content-section">
|
||||
<div class="tab-box">
|
||||
<c:choose>
|
||||
<c:when test="${ not empty resultListMap.groupCd}">
|
||||
<c:forEach items="${ resultListMap.groupCd }" var="list" varStatus="status">
|
||||
<button type="button" class="tab-box__btn" onclick="fn_select_AtmcSndngTmplat(this.value)" value="<c:out value="${list.groupCd}"/>_<c:out value="${list.cd}"/>"><c:out value="${list.cdNm}"/></button>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<tr>
|
||||
<td colspan="100%"><spring:message code="common.nodata"/></td>
|
||||
</tr>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<a href="#common-substitution-pop" rel="modal:open"
|
||||
class="btn sm outline" style="margin-left: auto;">
|
||||
<i class="icon icon_info"></i>
|
||||
공통 치환 코드
|
||||
</a>
|
||||
</div>
|
||||
<div class="tab-box__content">
|
||||
<div class="template-message__container">
|
||||
<c:choose>
|
||||
<c:when test="${ not empty resultListMap.boCtrlMap}">
|
||||
<c:forEach items="${ resultListMap.boCtrlMap }" var="list" varStatus="status">
|
||||
<div class="template-message">
|
||||
<div class="template-message__header">
|
||||
<c:out value="${list.cdNm}"/>
|
||||
<!-- <span class="btn gray ml-2 xxsm">알림톡 X</span> -->
|
||||
</div>
|
||||
<div class="template-message__body">
|
||||
<div class="sms-manage">
|
||||
<input type="hidden" name="formDtlDvCd" value="<c:out value="${list.formDtlDvCd}"/>">
|
||||
<input type="hidden" name="formDvCd" value="<c:out value="${list.formDvCd}"/>">
|
||||
<input type="hidden" name="sopmalCd" value="<c:out value="${list.sopmalCd}"/>">
|
||||
<textarea class="default" title="sms 기본 메시지" style="display : none"><c:out value="${list.smsCn}"/></textarea>
|
||||
<textarea class="textarea" title="sms 입력" name="smsCn"><c:out value="${list.smsCn}"/></textarea>
|
||||
<div class="sms-manage__byte">
|
||||
<span class="number">0</span>
|
||||
<span class="text">byte</span>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div class="b-checkbox-container justify-end mt-8 mb-5 mr-2">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">고객</span>
|
||||
</label>
|
||||
</div> -->
|
||||
</div>
|
||||
<div class="template-message__footer">
|
||||
<div class="manage-btn-container">
|
||||
<a href="#substitution-pop" rel="modal:open" class="btn sm outline" data-value="<c:out value="${list.formDtlDvCd}"/>">
|
||||
<i class="icon icon_info"></i>
|
||||
치환 코드
|
||||
</a>
|
||||
<button type="button" class="btn sm dark" data-value="<c:out value="${list.formDtlDvCd}"/>">
|
||||
기본 메시지
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<tr>
|
||||
<td colspan="100%"><spring:message code="common.nodata"/></td>
|
||||
</tr>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -0,0 +1,104 @@
|
||||
<%@ 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"%>
|
||||
<%@ page import="java.util.Date" %>
|
||||
<%--
|
||||
Class Name : MaNtcntalkAtmcSndngTmplatU.jsp
|
||||
Description : 알림톡 템플릿 관리
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-02-21 리브가 최초 생성
|
||||
2024-05-07 이대환 Email>Ntcntalk 분리
|
||||
--%>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$('.textarea').each(updateByteCount);
|
||||
|
||||
/* 탭 박스 임시방편 */
|
||||
var formDvCd = $("#formDvCd").val();
|
||||
var radioButtons = $(".tab-box__btn");
|
||||
|
||||
radioButtons.each(function() {
|
||||
if ($(this).val() === formDvCd) {
|
||||
$(this).addClass("current")
|
||||
}else{
|
||||
$(this).removeClass("current")
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$('.textarea').on('input', updateByteCount);
|
||||
</script>
|
||||
<section class="content-section">
|
||||
<div class="tab-box">
|
||||
<c:choose>
|
||||
<c:when test="${ not empty resultListMap.groupCd}">
|
||||
<c:forEach items="${ resultListMap.groupCd }" var="list" varStatus="status">
|
||||
<button type="button" class="tab-box__btn" onclick="fn_select_AtmcSndngTmplat(this.value)" value="<c:out value="${list.groupCd}"/>_<c:out value="${list.cd}"/>"><c:out value="${list.cdNm}"/></button>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<tr>
|
||||
<td colspan="100%"><spring:message code="common.nodata"/></td>
|
||||
</tr>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</div>
|
||||
<div class="tab-box__content">
|
||||
<div class="template-message__container">
|
||||
<c:choose>
|
||||
<c:when test="${ not empty resultListMap.boCtrlMap}">
|
||||
<c:forEach items="${ resultListMap.boCtrlMap }" var="list" varStatus="status">
|
||||
<div class="template-message">
|
||||
<div class="template-message__header">
|
||||
<c:out value="${list.cdNm}"/>
|
||||
<%-- <c:if test="${list.smsRplcAt eq 'Y'}"><button type="button" class="btn primary outline ml-2 xxsm" onclick="fn_switch_smsRplcAt(this)">문자 ON</button></c:if>
|
||||
<c:if test="${list.smsRplcAt ne 'Y'}"><button type="button" class="btn dark outline ml-2 xxsm" onclick="fn_switch_smsRplcAt(this)">문자 OFF</button></c:if> --%>
|
||||
<c:if test="${list.smsRplcAt eq 'Y'}"><span class="btn primary outline ml-2 xxsm">문자 ON</span></c:if>
|
||||
<c:if test="${list.smsRplcAt ne 'Y'}"><span class="btn dark outline ml-2 xxsm">문자 OFF</span></c:if>
|
||||
</div>
|
||||
<div class="template-message__body">
|
||||
<div class="sms-manage">
|
||||
<%-- <textarea class="textarea" title="알림톡 입력" name="msg"><c:out value="${list.msg}"/></textarea> --%>
|
||||
<textarea class="textarea" title="알림톡 입력" name="msg" readonly><c:out value="${list.msg}"/></textarea>
|
||||
</div>
|
||||
<br>
|
||||
알림톡 실패시 대체 SMS 사용
|
||||
<%-- <div class="sms-manage smsRplc" <c:if test="${list.smsRplcAt ne 'Y'}">style="background-color : #f8f9fa"</c:if>> --%>
|
||||
<div class="sms-manage smsRplc">
|
||||
<%-- <textarea class="textarea" title="대체문자 입력" name="smsRplcCn" <c:if test="${list.smsRplcAt ne 'Y'}">style="cursor: not-allowed" readonly</c:if>><c:out value="${list.smsCn}"/></textarea> --%>
|
||||
<textarea class="textarea" title="대체문자 입력" name="smsRplcCn" readonly><c:out value="${list.smsCn}"/></textarea>
|
||||
<div class="sms-manage__byte">
|
||||
<span class="number">0</span>
|
||||
<span class="text">byte</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="template-message__footer">
|
||||
<div class="manage-btn-container">
|
||||
<a class="btn sm dark" onclick="fn_open_modal('#ntcntalkAtmcSndngTmplatUpdtPopupDiv',
|
||||
'#ntcntalkAtmcSndngTmplatUpdtPopup',
|
||||
'/admin/ntcn/tmplt/selectNtcntalkAtmcSndngTmplatUpdtPopupForm',
|
||||
'formDvCd=${list.formDvCd}&formDtlDvCd=${list.formDtlDvCd}&sopmalCd='+$('#srchSopmalCd').val()); return false;" style="cursor : pointer;">
|
||||
<i class="icon icon_pencil"></i>
|
||||
메시지 수정
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<tr>
|
||||
<td colspan="100%"><spring:message code="common.nodata"/></td>
|
||||
</tr>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -0,0 +1,316 @@
|
||||
<%@ 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"%>
|
||||
<%@ page import="java.util.Date" %>
|
||||
<%--
|
||||
Class Name : MaNtcntalkAtmcSndngTmplatUpdtPopupU.jsp
|
||||
Description : 메시지 자동 발송 상세
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024.05.16 이대환 최초 생성
|
||||
--%>
|
||||
<script src="<c:url value='/mngr/js/script.js'/>" defer></script> <!-- MNGR 스크립트 함수 -->
|
||||
<script src="<c:url value='/js/gcone.js'/>"></script> <!-- 공통 스크립트 함수 -->
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$('.textarea').each(updateByteCount);
|
||||
$('textarea[name="msg"]').each(updatePreview);
|
||||
|
||||
/* 알림톡 대체문자 사용여부 체크박스 */
|
||||
var checkboxContainer = $('.modal .b-checkbox-container');
|
||||
var checkbox = checkboxContainer.find('input[type="checkbox"]');
|
||||
var checkboxVal = checkboxContainer.find('input[type="hidden"]');
|
||||
var smsRplcDiv = checkboxContainer.parent().find('.smsRplc');
|
||||
|
||||
checkbox.change(function() {
|
||||
if ($(this).prop('checked')) {
|
||||
checkboxVal.val('Y');
|
||||
smsRplcDiv.css('background-color', '');
|
||||
} else {
|
||||
checkboxVal.val('N');
|
||||
smsRplcDiv.css('background-color', '#f8f9fa');
|
||||
}
|
||||
|
||||
var smsRplcCn = smsRplcDiv.find('textarea[name="smsCn"]');
|
||||
smsRplcCn.prop('readonly', !smsRplcCn.prop('readonly'));
|
||||
smsRplcCn.css('cursor', smsRplcCn.css('cursor') === 'not-allowed' ? '' : 'not-allowed');
|
||||
});
|
||||
|
||||
/* 치환코드 하드코딩 */
|
||||
var modalLink = $('a[href="#substitution-pop"]');
|
||||
modalLink.click(function() {
|
||||
var formDtlDvCd = parseInt($(this).data('value'));
|
||||
|
||||
switch($("#formDvCd").val()){
|
||||
case "FORM_DV_BBS":
|
||||
fn_swith_SubModal(substitutionList[formDtlDvCdLength[0]+formDtlDvCd-1]);
|
||||
break;
|
||||
case "FORM_DV_CMMN":
|
||||
fn_swith_SubModal(substitutionList[formDtlDvCdLength[1]+formDtlDvCd-1]);
|
||||
break;
|
||||
case "FORM_DV_DLVY":
|
||||
fn_swith_SubModal(substitutionList[formDtlDvCdLength[2]+formDtlDvCd-1]);
|
||||
break;
|
||||
case "FORM_DV_MBR":
|
||||
fn_swith_SubModal(substitutionList[formDtlDvCdLength[3]+formDtlDvCd-1]);
|
||||
break;
|
||||
case "FORM_DV_ORDR":
|
||||
fn_swith_SubModal(substitutionList[formDtlDvCdLength[4]+formDtlDvCd-1]);
|
||||
break;
|
||||
case "FORM_DV_REMND":
|
||||
fn_swith_SubModal(substitutionList[formDtlDvCdLength[5]+formDtlDvCd-1]);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
let substitutionList = [];
|
||||
let formDtlDvCdLength = [];
|
||||
|
||||
/*게시판(FORM_DV_BBS)*/
|
||||
formDtlDvCdLength.push(substitutionList.length);
|
||||
//게시글 등록(01)
|
||||
substitutionList.push(["sopmalCd", "shopName", "bbsNm"]);
|
||||
//게시글 답변(02)
|
||||
substitutionList.push(["sopmalCd", "shopName", "bbsNm"]);
|
||||
|
||||
/*공통(FORM_DV_CMMN)*/
|
||||
formDtlDvCdLength.push(substitutionList.length);
|
||||
//혜택 정보 수신동의 여부 확인(01)
|
||||
substitutionList.push(["sopmalCd", "shopName", "shopDomain", "user_name", "marktRecptnAgreAt", "marktRecptnAgreUpdtDt", "cscTelnb", "rejectTelnb"]);
|
||||
//혜택 정보 수신동의 변경 결과(02)
|
||||
substitutionList.push(["sopmalCd", "shopName", "shopDomain", "user_name", "marktRecptnAgreAt", "marktRecptnAgreUpdtDt", "cscTelnb", "rejectTelnb"]);
|
||||
//(비회원 구매자) 혜택 정보 수신동의 요청(03)
|
||||
substitutionList.push(["sopmalCd", "shopName", "shopDomain", "Nm", "agree_short_url"]);
|
||||
//(비회원 구매자) 혜택 정보 수신동의 결과(04)
|
||||
substitutionList.push(["NONE"]);
|
||||
|
||||
/*배송(FORM_DV_DLVY)*/
|
||||
formDtlDvCdLength.push(substitutionList.length);
|
||||
//출고 완료(주문자)(01)
|
||||
substitutionList.push(["sopmalCd", "shopName", "ordno", "go_Item", "delivery_company", "delivery_number", "order_user", "recipient_user"]);
|
||||
//배송완료(주문자)(02)
|
||||
substitutionList.push(["sopmalCd", "shopName", "ordno", "go_Item", "delivery_company", "delivery_number", "order_user", "recipient_user"]);
|
||||
//출고 완료(받는분)(03)
|
||||
substitutionList.push(["sopmalCd", "shopName", "ordno", "go_Item", "delivery_company", "delivery_number", "order_user", "recipient_user"]);
|
||||
//배송완료(받는분)(04)
|
||||
substitutionList.push(["sopmalCd", "shopName", "ordno", "go_Item", "delivery_company", "delivery_number", "order_user", "recipient_user"]);
|
||||
|
||||
/*회원(FORM_DV_MBR)*/
|
||||
formDtlDvCdLength.push(substitutionList.length);
|
||||
//회원 가입(01)
|
||||
substitutionList.push(["sopmalCd", "shopName", "user_name"]);
|
||||
//회원 탈퇴(02)
|
||||
substitutionList.push(["sopmalCd", "shopName", "userid", "withdrawalDt"]);
|
||||
//아이디 찾기(03)
|
||||
substitutionList.push(["sopmalCd", "shopName", "userid"]);
|
||||
//비밀번호 찾기(04)
|
||||
substitutionList.push(["sopmalCd", "shopName", "passsword"]);
|
||||
//개인인증번호 확인(05)
|
||||
substitutionList.push(["sopmalCd", "shopName", "authnum"]);
|
||||
//장기 미구매 고객 대상 쿠폰(06)
|
||||
substitutionList.push(["NONE"]);
|
||||
//생일 쿠폰(07)
|
||||
substitutionList.push(["NONE"]);
|
||||
|
||||
/*주문(FORM_DV_ORDR)*/
|
||||
formDtlDvCdLength.push(substitutionList.length);
|
||||
//주문 접수(01)
|
||||
substitutionList.push(["sopmalCd", "shopName", "ord_Item", "ordno", "bank_Account", "settleprice"]);
|
||||
//결제 확인(02)
|
||||
substitutionList.push(["sopmalCd", "shopName", "orderUser", "ord_Item", "ordno", "ordDate", "ordPrice"]);
|
||||
//환불 완료(취소)(03)
|
||||
substitutionList.push(["sopmalCd", "shopName"]);
|
||||
//환불 완료(반품)(04)
|
||||
substitutionList.push(["sopmalCd", "shopName"]);
|
||||
//입금 요청(05)
|
||||
substitutionList.push(["sopmalCd", "shopName", "ord_Item", "ordno", "bank_Account", "settleprice"]);
|
||||
//선물하기 안내(06)
|
||||
substitutionList.push(["NONE"]);
|
||||
|
||||
/*고객리마인드(FORM_DV_REMND)*/
|
||||
formDtlDvCdLength.push(substitutionList.length);
|
||||
//회원 멤버쉽 등급변경(01)
|
||||
substitutionList.push(["shopName", "user_name", "mbrgradNm", "mypage_short_url", "cscTelnb", "rejectTelnb"]);
|
||||
//상품 리뷰 작성 유도(02)
|
||||
substitutionList.push(["shopName", "user_name", "ordrInnb", "goodsNm", "mypage_short_url", "cscTelnb", "rejectTelnb"]);
|
||||
//만료 쿠폰(03)
|
||||
substitutionList.push(["shopName", "userid", "user_name", "coupon_count", "mypage_short_url"]);
|
||||
//소멸 예정 마일리지(04)
|
||||
substitutionList.push(["shopName", "user_name", "mileage_rest", "mypage_short_url"]);
|
||||
//생일 축하(05)
|
||||
substitutionList.push(["shopName", "user_name", "coupNm", "validpdBgnDt", "validpdEndDt", "mypage_short_url", "cscTelnb", "rejectTelnb"]);
|
||||
//장바구니 상품(06)
|
||||
substitutionList.push(["shopName", "user_name", "goodsNm", "mypage_short_url", "cscTelnb", "rejectTelnb"]);
|
||||
//정수기 필터 교체 알림(07)
|
||||
substitutionList.push(["NONE"]);
|
||||
//장바구니 타임세일(08)
|
||||
substitutionList.push(["shopName", "user_name", "goodsNm", "mypage_short_url", "cscTelnb", "rejectTelnb"]);
|
||||
});
|
||||
|
||||
$('.textarea').on('input', updateByteCount);
|
||||
$('textarea[name="msg"]').on('input', updatePreview);
|
||||
$('select[name="btnType"]').trigger('change');
|
||||
</script>
|
||||
<div id="ntcntalkAtmcSndngTmplatUpdtPopup" class="modal" style="max-width: 960px;">
|
||||
<div class="modal-header">
|
||||
<h4>알림톡 메시지 수정</h4>
|
||||
</div>
|
||||
<div class="modal-content">
|
||||
<div class="message-edit__wrapper">
|
||||
<div class="table-wrapper">
|
||||
<form id="ntcntalkPopup">
|
||||
<input type="hidden" name="tmplatList" id="ntcnTmplatList" value=""/>
|
||||
<input type="hidden" name="formDvCd" value="<c:out value="${resultMap.bOTmpltVO.formDvCd}"/>">
|
||||
<input type="hidden" name="formDtlDvCd" value="<c:out value="${resultMap.bOTmpltVO.formDtlDvCd}"/>">
|
||||
<input type="hidden" name="sopmalCd" value="<c:out value="${resultMap.bOTmpltVO.sopmalCd}"/>">
|
||||
<table class="table vertical">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<c:set var="boCtrlMap" value="${resultMap.boCtrlMap}"/>
|
||||
<c:out value="${boCtrlMap.cdNm}"/>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="form-control-container mb-5">
|
||||
<div class="left">
|
||||
<h3 class="content-section__inner-title mb-0">내용</h3>
|
||||
</div>
|
||||
<div class="center">
|
||||
</div>
|
||||
<div class="right">
|
||||
<a href="#substitution-pop" rel="modal:open" class="btn sm outline" data-value="<c:out value="${resultMap.bOTmpltVO.formDtlDvCd}"/>">
|
||||
<i class="icon icon_info"></i>
|
||||
치환 코드
|
||||
</a>
|
||||
<a href="#common-substitution-pop" rel="modal:open"
|
||||
class="btn sm outline">
|
||||
<i class="icon icon_info"></i>
|
||||
공통 치환 코드
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sms-manage">
|
||||
<textarea class="textarea" title="sms 입력" name="msg"><c:out value="${boCtrlMap.msg}"/></textarea>
|
||||
<div class="d-flex justify-end gray-7">
|
||||
<span class="count">0</span>
|
||||
<span class="mx-4">/</span>
|
||||
<span>1000</span>
|
||||
<span class="ml-4">자</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="b-checkbox-container mt-8 ml-2">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="" <c:if test="${boCtrlMap.smsRplcAt eq 'Y'}">checked</c:if>>
|
||||
<span class="check"></span>
|
||||
<span class="control-label">알림톡 실패시 대체 SMS 사용</span>
|
||||
</label>
|
||||
<input type="hidden" name="smsRplcAt" value="<c:out value="${boCtrlMap.smsRplcAt}"/>">
|
||||
</div>
|
||||
<div class="sms-manage smsRplc" <c:if test="${boCtrlMap.smsRplcAt ne 'Y'}">style="background-color : #f8f9fa"</c:if>>
|
||||
<textarea class="textarea" title="대체문자 입력" name="smsCn" <c:if test="${boCtrlMap.smsRplcAt ne 'Y'}">style="cursor: not-allowed" readonly</c:if>><c:out value="${boCtrlMap.smsCn}"/></textarea>
|
||||
<div class="sms-manage__byte">
|
||||
<span class="number">0</span>
|
||||
<span class="text">byte</span>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="100%">
|
||||
<div style="float : left; display: inline-block;">
|
||||
<span>버튼은 최대 5개까지 사용 가능합니다.</span>
|
||||
<!-- (modal:
|
||||
<a href="#info02" rel="modal:open">
|
||||
<i class="mini-info-btn mb-3" style="font-style: normal;">?</i>
|
||||
</a>
|
||||
info:
|
||||
<button class="mini-info-btn mb-3" data-info="info01">?</button>
|
||||
버튼안내 팝업 삭제) -->
|
||||
</div>
|
||||
<div style="float:right; display: inline-block;">
|
||||
<button type="button" class="circle-btn add" onclick="fn_add_buttonRow()"><span class="visually-hidden">추가</span></button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<c:forEach var="i" begin="1" end="5">
|
||||
<c:set var="btnType" value="btnType0${i}"/>
|
||||
<c:set var="btnNm" value="btnNm0${i}"/>
|
||||
<c:set var="btnUrl01" value="btn0${i}Url01"/>
|
||||
<c:set var="btnUrl02" value="btn0${i}Url02"/>
|
||||
<c:if test="${not empty boCtrlMap[btnType]}">
|
||||
<tr>
|
||||
<td>
|
||||
<div class="talk-edit-row">
|
||||
<div class="select-box select-show-trigger">
|
||||
<select name="btnType" title="해당 셀렉트에 대한 설명">
|
||||
<option value="WL" <c:if test="${boCtrlMap[btnType] eq 'WL'}">selected</c:if>>버튼 링크</option>
|
||||
<option value="DS" <c:if test="${boCtrlMap[btnType] eq 'DS'}">selected</c:if>>배송 조회</option>
|
||||
</select>
|
||||
</div>
|
||||
<input class="WL input-text" type="text" name="btnNm" title="해당 인풋에 대한 설명" placeholder="버튼명(최대 28자)" maxlength="28"
|
||||
value="<c:out value="${boCtrlMap[btnNm]}"/>" <c:if test="${boCtrlMap[btnType] eq 'DS'}">style="display: none;"</c:if>>
|
||||
<input class="WL input-text xl" type="text" name="btnPcUrl" title="해당 인풋에 대한 설명" placeholder="링크주소"
|
||||
value="<c:out value="${boCtrlMap[btnUrl02]}"/>" <c:if test="${boCtrlMap[btnType] eq 'DS'}">style="display: none;"</c:if>>
|
||||
<input class="WL input-text xl" type="text" name="btnMUrl" title="해당 인풋에 대한 설명" placeholder="모바일 링크주소"
|
||||
value="<c:out value="${boCtrlMap[btnUrl01]}"/>" <c:if test="${boCtrlMap[btnType] eq 'DS'}">style="display: none;"</c:if>>
|
||||
<span class="DS w-full" <c:if test="${boCtrlMap[btnType] eq 'WL'}">style="display: none;"</c:if>>배송조회는 버튼 링크를 포함하지 않습니다.</span>
|
||||
<button class="circle-btn delete" onclick="fn_remove_buttonRow(this)"><span class="visually-hidden">삭제</span></button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
<div class="message-edit__right">
|
||||
<div class="message-edit-preview">
|
||||
<div class="message-edit-preview__image">
|
||||
<img src="/mngr/images/image_talk.jpg" alt="">
|
||||
</div>
|
||||
<div class="message-edit-preview__content">
|
||||
<div class="message-edit-preview__header">알림톡 도착</div>
|
||||
<div class="message-edit-preview__body">
|
||||
<textarea title="알림톡 내용" readonly></textarea>
|
||||
</div>
|
||||
<div class="message-edit-preview__footer">
|
||||
<c:forEach var="i" begin="1" end="5">
|
||||
<c:set var="btnType" value="btnType0${i}"/>
|
||||
<c:set var="btnNm" value="btnNm0${i}"/>
|
||||
<c:if test="${not empty boCtrlMap[btnType]}">
|
||||
<a href="#" class="message-edit-preview__footer-item">
|
||||
<c:if test="${boCtrlMap[btnType] eq 'WL'}">
|
||||
<c:if test="${not empty boCtrlMap[btnNm]}">
|
||||
<c:out value="${boCtrlMap[btnNm]}"/>
|
||||
</c:if>
|
||||
<c:if test="${empty boCtrlMap[btnNm]}">버튼 링크</c:if>
|
||||
</c:if>
|
||||
<c:if test="${boCtrlMap[btnType] eq 'DS'}">배송 조회</c:if>
|
||||
</a>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#" rel="modal:close" class="btn outline">취소</a>
|
||||
<button class="btn primary" onclick="fn_update_AtmcSndngTmplatForm('ntcntalkPopup')">저장하기</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,234 @@
|
||||
<%@ 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">
|
||||
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
||||
fn_set_dateRange_function('#dataRangeBtn', 'srchStrtSndngDt','srchEndSndngDt', 'srchEndSndngDt');
|
||||
fn_set_date('srchStrtSndngDt', 'srchEndSndngDt','srchEndSndngDt', '7D');
|
||||
|
||||
// 표 조회
|
||||
fn_select_table_data(null, null);
|
||||
|
||||
// 날짜 검색
|
||||
$("#srchBtn").on("click", function(){
|
||||
fn_select_table_data(null, null);
|
||||
});
|
||||
|
||||
|
||||
// 표
|
||||
// $("#").on("click", function() {
|
||||
// fn_select_table_data(null, '', 'coupNm', 'ASC');
|
||||
// });
|
||||
|
||||
// 페이징 제자리 새로고침(Submit) 방지
|
||||
$('body').on('click', 'button.pagination__item.active', function(event) {
|
||||
event.preventDefault();
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
/**
|
||||
* 테이블 데이터 조회
|
||||
* pageIndex
|
||||
* unitFlag
|
||||
* - 없음 : ''
|
||||
*
|
||||
* ordrStand
|
||||
* - fn_select_ordrStandMapping() 참조
|
||||
*
|
||||
* ordrType
|
||||
* - 오름차순 : 'ASC'
|
||||
* - 내림차순 : 'DESC'
|
||||
*/
|
||||
let PordrStand;
|
||||
let TordrType;
|
||||
const fn_select_table_data = function(pageIndex, unitFlag, ordrStand, ordrType) {
|
||||
// console.log("fn_select_table_data() sopmalCd : ", sopmalCdFlag);
|
||||
|
||||
const srchStrtSndngDt = $("#srchStrtSndngDt").val();
|
||||
const srchEndSndngDt = $("#srchEndSndngDt").val();
|
||||
const sopmalCdFlag = $('#select_box').val();
|
||||
const pageUnit = $("#pageUnit").val();
|
||||
const recordCountPerPage = '50';
|
||||
|
||||
if(!pageIndex) {
|
||||
$('#pageIndex').val(1);
|
||||
} else {
|
||||
$('#pageIndex').val(pageIndex);
|
||||
}
|
||||
const pageIndexValue = $("#pageIndex").val();
|
||||
|
||||
if(!unitFlag) {
|
||||
// if ($('#').hasClass('selected')) {
|
||||
unitFlag = '';
|
||||
// }
|
||||
}
|
||||
|
||||
if(!pageIndex){
|
||||
if (!ordrType && PordrStand == ordrStand) {
|
||||
//정렬 방식 변경 (정렬 기준 파라미터가 이전과 동일)
|
||||
TordrType = (TordrType == 'ASC') ? 'DESC' : 'ASC';
|
||||
}else if(!ordrType){
|
||||
//정렬 방식 기본값으로 지정 (정렬 기준 변경)
|
||||
TordrType = 'ASC';
|
||||
}else{
|
||||
//정렬 방식 초기화 (표 조회)
|
||||
TordrType = ordrType;
|
||||
}
|
||||
|
||||
if(!ordrStand){
|
||||
//정렬 기준 기본값으로 지정
|
||||
PordrStand = 'couponNm';
|
||||
}else{
|
||||
//정렬 기준 변경
|
||||
PordrStand = ordrStand;
|
||||
}
|
||||
}
|
||||
|
||||
const data = {
|
||||
srchStrtSndngDt : srchStrtSndngDt,
|
||||
srchEndSndngDt : srchEndSndngDt,
|
||||
sopmalCd : sopmalCdFlag,
|
||||
unitFlag : unitFlag,
|
||||
pageUnit : pageUnit,
|
||||
ordrStand : PordrStand,
|
||||
ordrType : TordrType,
|
||||
pageIndex : pageIndexValue,
|
||||
recordCountPerPage : recordCountPerPage
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url : "/admin/stats/marktAnals/selectAdminMbrNdMlgStatsTableInqire",
|
||||
data : data,
|
||||
success:function(resultHtml) {
|
||||
// console.log('success');
|
||||
$('#pageDiv').empty();
|
||||
$('#pageDiv').html(resultHtml);
|
||||
|
||||
// $('.reorder_' + PordrStand).text(fn_select_ordrStandMapping()[PordrStand] + (TordrType === 'ASC' ? ' ▲' : ' ▼'));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 테이블 정렬 조건(행)
|
||||
*/
|
||||
const fn_select_ordrStandMapping = function() {
|
||||
let ordrStandMapping;
|
||||
|
||||
ordrStandMapping = {
|
||||
'couponNm': '쿠폰명',
|
||||
'couponDv': '쿠폰구분',
|
||||
'discountAmt': '쿠폰할인금액',
|
||||
'couponDwldCnt': '발급건수',
|
||||
'couponUseCnt': '사용건수(중복)',
|
||||
'couponUseDcnt': '사용건수'
|
||||
};
|
||||
|
||||
return ordrStandMapping;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Left.jsp" %>
|
||||
|
||||
<div class="content">
|
||||
<div class="content__inner">
|
||||
|
||||
<input type="hidden" id="pageIndex" value="${ resultMap.pageIndex }"/>
|
||||
<input type="hidden" id="pageUnit" value="${ resultMap.pageUnit }"/>
|
||||
|
||||
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
|
||||
<div class="page-title">
|
||||
<h3 class="page-title__title">회원 및 마일리지</h3>
|
||||
</div>
|
||||
|
||||
<section class="content-section">
|
||||
|
||||
<div class="table-wrapper">
|
||||
<table class="table dashboardSearch">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>검색조건</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="input-container">
|
||||
<input type="text" class="datepicker"
|
||||
id="srchStrtSndngDt" name="srchStrtSndngDt" title="시작 날짜 선택"
|
||||
autocomplete="off">
|
||||
<span class="tilde">~</span>
|
||||
<input type="text" class="datepicker"
|
||||
id="srchEndSndngDt" name="srchEndSndngDt" title="종료 날짜 선택"
|
||||
autocomplete="off">
|
||||
</div>
|
||||
<div class="dateRange-btnContainer" id="dataRangeBtn">
|
||||
<button type="button" class="dateRange-btn" id="yesterday">어제</button>
|
||||
<button type="button" class="dateRange-btn" id="today" >오늘</button>
|
||||
<button type="button" class="dateRange-btn" id="threeDays">3일간</button>
|
||||
<button type="button" class="dateRange-btn selected" id="sevenDays">일주일</button>
|
||||
<button type="button" class="dateRange-btn" id="oneMonth">1개월</button>
|
||||
<button type="button" class="dateRange-btn" id="threeMonth">3개월</button>
|
||||
<button type="button" class="dateRange-btn" id="sixMonth">6개월</button>
|
||||
<button type="button" class="dateRange-btn" id="year">1년</button>
|
||||
</div>
|
||||
<button class="btn sm primary ml-5" type="button" id="srchBtn">검색</button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="table-wrapper">
|
||||
<table class="table dashboardSearch">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select id="select_box" title="" onchange="fn_select_table_data(null, null)">
|
||||
<c:forEach items="${ cond.resultList }" var="list" varStatus="status">
|
||||
<option value="${ list.sopmalCd }"> ${ list.sopmalNm } </option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div id="pageDiv">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,79 @@
|
||||
<%@ 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="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
|
||||
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui" %>
|
||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
// $('th[class^="reorder_"]').click(function() {
|
||||
// var className = $(this).attr('class');
|
||||
// var ordrStand = className.replace('reorder_', '');
|
||||
// fn_select_table_data(null, null, ordrStand);
|
||||
// });
|
||||
});
|
||||
</script>
|
||||
<style>
|
||||
/*th[class^="reorder_"] {*/
|
||||
/* cursor: pointer;*/
|
||||
/*}*/
|
||||
</style>
|
||||
<section class="content-section">
|
||||
|
||||
<table class="table vertical">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: auto;">
|
||||
</colgroup>
|
||||
<thead id="tableHeader">
|
||||
<tr>
|
||||
<th class="reorder_t">gubun</th>
|
||||
<th class="reorder_t">union_cust_cnt</th>
|
||||
<th class="reorder_t">NC_CU_CNT</th>
|
||||
<th class="reorder_t">CH_CU_CNT</th>
|
||||
<th class="reorder_t">TZ_CU_CNT</th>
|
||||
<th class="reorder_t">PL_CU_CNT</th>
|
||||
<th class="reorder_t">NB_CU_CNT</th>
|
||||
<th class="reorder_t">DT_CU_CNT</th>
|
||||
<th class="reorder_t">DL_CU_CNT</th>
|
||||
<th class="reorder_t">AF_CU_CNT</th>
|
||||
<th class="reorder_t">BD_CU_CNT</th>
|
||||
<th class="reorder_t">LF_CU_CNT</th>
|
||||
<th class="reorder_t">JM_CU_CNT</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="tableBody">
|
||||
<c:if test="${ empty resultMap.resultList }">
|
||||
<tr>
|
||||
<td class="row-no-data" colspan="20">조회된 데이터가 없습니다.</td>
|
||||
</tr>
|
||||
</c:if>
|
||||
|
||||
<c:forEach items="${ resultMap.resultList }" var="list" varStatus="status">
|
||||
<tr>
|
||||
<td>${ list.gubun }</td>
|
||||
<td>${ list.unionCustCnt }</td>
|
||||
<td>${ list.ncCuCnt }</td>
|
||||
<td>${ list.chCuCnt }</td>
|
||||
<td>${ list.tzCuCnt }</td>
|
||||
<td>${ list.plCuCnt }</td>
|
||||
<td>${ list.nbCuCnt }</td>
|
||||
<td>${ list.dtCuCnt }</td>
|
||||
<td>${ list.dlCuCnt }</td>
|
||||
<td>${ list.afCuCnt }</td>
|
||||
<td>${ list.bdCuCnt }</td>
|
||||
<td>${ list.lfCuCnt }</td>
|
||||
<td>${ list.jmCuCnt }</td>
|
||||
<%-- <td><fmt:formatNumber value="${ list.slepricSum }" pattern="#,###"/></td>--%>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</section>
|
||||
|
||||
<%--<div class="pagination__container">--%>
|
||||
<%-- <ui:pagination paginationInfo="${ resultMap.paginationInfo }" type="image" jsFunction="fn_select_table_data" />--%>
|
||||
<%--</div>--%>
|
||||
@@ -0,0 +1,118 @@
|
||||
<%@ 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">
|
||||
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
</head>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
||||
fn_set_dateRange_function('#dataRangeBtn', 'srchStrtSndngDt','srchEndSndngDt', 'srchEndSndngDt');
|
||||
fn_set_date('srchStrtSndngDt', 'srchEndSndngDt','srchEndSndngDt', '7D');
|
||||
|
||||
// 표 조회
|
||||
fn_select_table_data();
|
||||
|
||||
// 날짜 검색
|
||||
$("#srchBtn").on("click", function(){
|
||||
fn_select_table_data();
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
/**
|
||||
* 테이블 데이터 조회
|
||||
*/
|
||||
const fn_select_table_data = function() {
|
||||
const srchYear = $("#srchYear").val();
|
||||
const srchMnt = $("#srchMnt").val();
|
||||
|
||||
const data = {
|
||||
srchYear : srchYear,
|
||||
srchMnt : srchMnt,
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url : "/admin/stats/marktAnals/selectAdminMlgStlListInqire",
|
||||
data : data,
|
||||
success:function(resultHtml) {
|
||||
$('#pageDiv').empty();
|
||||
$('#pageDiv').html(resultHtml);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<body>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Left.jsp" %>
|
||||
|
||||
<div class="content">
|
||||
<div class="content__inner">
|
||||
|
||||
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
|
||||
<div class="page-title">
|
||||
<h3 class="page-title__title">마일리지 정산</h3>
|
||||
</div>
|
||||
|
||||
<section class="content-section">
|
||||
|
||||
<div class="table-wrapper">
|
||||
<table class="table dashboardSearch">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>검색조건</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select title="조회기간조건" name="srchYear" id="srchYear">
|
||||
<c:forEach var="year" begin="2010" end="${resultMap.currentYear}">
|
||||
<option value="${year}">${year} 년</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select title="조회기간달" name="srchMnt" id="srchMnt">
|
||||
<c:forEach var="mnt" begin="1" end="12">
|
||||
<option value="${mnt}">${mnt} 월</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
<button class="btn sm primary ml-5" type="button" id="srchBtn">검색</button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="table-wrapper">
|
||||
<div id="pageDiv">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
</div>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,220 @@
|
||||
<%@ 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" %>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
<body>
|
||||
<section class="content-section">
|
||||
<table class="table vertical">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: auto;">
|
||||
</colgroup>
|
||||
<thead id="tableHeader">
|
||||
<tr>
|
||||
<th>법인</th>
|
||||
<th>GC</th>
|
||||
<th>TB</th>
|
||||
<th>SL</th>
|
||||
<th>NP</th>
|
||||
<th>CN</th>
|
||||
<th>DB</th>
|
||||
<th>CN</th>
|
||||
<th>CN</th>
|
||||
<th>CN</th>
|
||||
<th>DB</th>
|
||||
<th>TB</th>
|
||||
<th>IS</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="tableBody">
|
||||
<tr>
|
||||
<td>
|
||||
사이트
|
||||
</td>
|
||||
<td>
|
||||
CH
|
||||
</td>
|
||||
<td>
|
||||
TZ
|
||||
</td>
|
||||
<td>
|
||||
NC
|
||||
</td>
|
||||
<td>
|
||||
PL
|
||||
</td>
|
||||
<td>
|
||||
NB
|
||||
</td>
|
||||
<td>
|
||||
OY
|
||||
</td>
|
||||
<td>
|
||||
KL
|
||||
</td>
|
||||
<td>
|
||||
DT
|
||||
</td>
|
||||
<td>
|
||||
CB
|
||||
</td>
|
||||
<td>
|
||||
AP
|
||||
</td>
|
||||
<td>
|
||||
LF
|
||||
</td>
|
||||
<td>
|
||||
GO
|
||||
</td>
|
||||
</tr>
|
||||
<c:choose>
|
||||
<c:when test="${not empty resultMap.mlgStatList}">
|
||||
<c:forEach var = "result" items = "${resultMap.mlgStatList}">
|
||||
<tr>
|
||||
<td>
|
||||
<c:out value="${result.sGroup}"/>
|
||||
</td>
|
||||
<td>
|
||||
<fmt:formatNumber value="${result.sumCh}" type="number" pattern="#,###"/>
|
||||
</td>
|
||||
<td>
|
||||
<fmt:formatNumber value="${result.sumTz}" type="number" pattern="#,###"/>
|
||||
</td>
|
||||
<td>
|
||||
<fmt:formatNumber value="${result.sumNc}" type="number" pattern="#,###"/>
|
||||
</td>
|
||||
<td>
|
||||
<fmt:formatNumber value="${result.sumPl}" type="number" pattern="#,###"/>
|
||||
</td>
|
||||
<td>
|
||||
<fmt:formatNumber value="${result.sumNb}" type="number" pattern="#,###"/>
|
||||
</td>
|
||||
<td>
|
||||
<fmt:formatNumber value="${result.sumOy}" type="number" pattern="#,###"/>
|
||||
</td>
|
||||
<td>
|
||||
<fmt:formatNumber value="${result.sumKl}" type="number" pattern="#,###"/>
|
||||
</td>
|
||||
<td>
|
||||
<fmt:formatNumber value="${result.sumDt}" type="number" pattern="#,###"/>
|
||||
</td>
|
||||
<td>
|
||||
<fmt:formatNumber value="${result.sumCb}" type="number" pattern="#,###"/>
|
||||
</td>
|
||||
<td>
|
||||
<fmt:formatNumber value="${result.sumAp}" type="number" pattern="#,###"/>
|
||||
</td>
|
||||
<td>
|
||||
<fmt:formatNumber value="${result.sumLf}" type="number" pattern="#,###"/>
|
||||
</td>
|
||||
<td>
|
||||
<fmt:formatNumber value="${result.sumGc}" type="number" pattern="#,###"/>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<tr>
|
||||
<td colspan="13"><spring:message code="common.nodata"/></td>
|
||||
</tr>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
<section class="content-section">
|
||||
<table class="table vertical">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: auto;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>순서</th>
|
||||
<th>사이트</th>
|
||||
<th>CH</th>
|
||||
<th>TZ</th>
|
||||
<th>NC</th>
|
||||
<th>PL</th>
|
||||
<th>NB</th>
|
||||
<th>OY</th>
|
||||
<th>KL</th>
|
||||
<th>DT</th>
|
||||
<th>CB</th>
|
||||
<th>AP</th>
|
||||
<th>LF</th>
|
||||
<th>GC</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:choose>
|
||||
<c:when test="${not empty resultMap.mlgStlList}">
|
||||
<c:forEach var = "result" items = "${resultMap.mlgStlList}">
|
||||
<tr>
|
||||
<td>
|
||||
<c:out value="${result.sSeq}"/>
|
||||
</td>
|
||||
<td>
|
||||
<c:out value="${result.sGroup}"/>
|
||||
</td>
|
||||
<td>
|
||||
<fmt:formatNumber value="${result.ch}" type="number" pattern="#,###"/>
|
||||
</td>
|
||||
<td>
|
||||
<fmt:formatNumber value="${result.tz}" type="number" pattern="#,###"/>
|
||||
</td>
|
||||
<td>
|
||||
<fmt:formatNumber value="${result.nc}" type="number" pattern="#,###"/>
|
||||
</td>
|
||||
<td>
|
||||
<fmt:formatNumber value="${result.pl}" type="number" pattern="#,###"/>
|
||||
</td>
|
||||
<td>
|
||||
<fmt:formatNumber value="${result.nb}" type="number" pattern="#,###"/>
|
||||
</td>
|
||||
<td>
|
||||
<fmt:formatNumber value="${result.oy}" type="number" pattern="#,###"/>
|
||||
</td>
|
||||
<td>
|
||||
<fmt:formatNumber value="${result.kl}" type="number" pattern="#,###"/>
|
||||
</td>
|
||||
<td>
|
||||
<fmt:formatNumber value="${result.dt}" type="number" pattern="#,###"/>
|
||||
</td>
|
||||
<td>
|
||||
<fmt:formatNumber value="${result.cb}" type="number" pattern="#,###"/>
|
||||
</td>
|
||||
<td>
|
||||
<fmt:formatNumber value="${result.ap}" type="number" pattern="#,###"/>
|
||||
</td>
|
||||
<td>
|
||||
<fmt:formatNumber value="${result.lf}" type="number" pattern="#,###"/>
|
||||
</td>
|
||||
<td>
|
||||
<fmt:formatNumber value="${result.gc}" type="number" pattern="#,###"/>
|
||||
</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>
|
||||
</section>
|
||||
|
||||
124
src/main/webapp/WEB-INF/views/admin/stats/marktAnals/mlg.jsp
Normal file
124
src/main/webapp/WEB-INF/views/admin/stats/marktAnals/mlg.jsp
Normal file
@@ -0,0 +1,124 @@
|
||||
<%@ 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">
|
||||
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
</head>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
||||
fn_set_dateRange_function('#dataRangeBtn', 'srchStrtSndngDt','srchEndSndngDt', 'srchEndSndngDt');
|
||||
fn_set_date('srchStrtSndngDt', 'srchEndSndngDt','srchEndSndngDt', '7D');
|
||||
|
||||
// 표 조회
|
||||
fn_select_table_data();
|
||||
|
||||
// 날짜 검색
|
||||
$("#srchBtn").on("click", function(){
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
/**
|
||||
* 테이블 데이터 조회
|
||||
*/
|
||||
const fn_select_table_data = function() {
|
||||
const srchStrtSndngDt = $("#srchStrtSndngDt").val();
|
||||
const srchEndSndngDt = $("#srchEndSndngDt").val();
|
||||
|
||||
const data = {
|
||||
srchStrtSndngDt : srchStrtSndngDt,
|
||||
srchEndSndngDt : srchEndSndngDt,
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url : "/admin/stats/marktAnals/selectAdminMlgTableInqire",
|
||||
data : data,
|
||||
success:function(resultHtml) {
|
||||
console.log('success');
|
||||
$('#pageDiv').empty();
|
||||
$('#pageDiv').html(resultHtml);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<body>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Left.jsp" %>
|
||||
|
||||
<div class="content">
|
||||
<div class="content__inner">
|
||||
|
||||
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
|
||||
<div class="page-title">
|
||||
<h3 class="page-title__title">회원 및 마일리지</h3>
|
||||
</div>
|
||||
|
||||
<section class="content-section">
|
||||
|
||||
<div class="table-wrapper">
|
||||
<table class="table dashboardSearch">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>검색조건</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="input-container">
|
||||
<input type="text" class="datepicker"
|
||||
id="srchStrtSndngDt" name="srchStrtSndngDt" title="시작 날짜 선택"
|
||||
autocomplete="off">
|
||||
<span class="tilde">~</span>
|
||||
<input type="text" class="datepicker"
|
||||
id="srchEndSndngDt" name="srchEndSndngDt" title="종료 날짜 선택"
|
||||
autocomplete="off">
|
||||
</div>
|
||||
<div class="dateRange-btnContainer" id="dataRangeBtn">
|
||||
<button type="button" class="dateRange-btn" id="yesterday">어제</button>
|
||||
<button type="button" class="dateRange-btn" id="today" >오늘</button>
|
||||
<button type="button" class="dateRange-btn" id="threeDays">3일간</button>
|
||||
<button type="button" class="dateRange-btn selected" id="sevenDays">일주일</button>
|
||||
<button type="button" class="dateRange-btn" id="oneMonth">1개월</button>
|
||||
<button type="button" class="dateRange-btn" id="threeMonth">3개월</button>
|
||||
<button type="button" class="dateRange-btn" id="sixMonth">6개월</button>
|
||||
<button type="button" class="dateRange-btn" id="year">1년</button>
|
||||
</div>
|
||||
<button class="btn sm primary ml-5" type="button" id="srchBtn">검색</button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="table-wrapper">
|
||||
<div id="pageDiv">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
</div>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,111 @@
|
||||
<%@ 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" %>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
<body>
|
||||
|
||||
<section class="content-section">
|
||||
<table class="table vertical">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: auto;">
|
||||
</colgroup>
|
||||
<thead id="tableHeader">
|
||||
<tr>
|
||||
<th>회수</th>
|
||||
<th>발송날짜</th>
|
||||
<th>소멸 월</th>
|
||||
<th>대상</th>
|
||||
<th>문자발송성공건수</th>
|
||||
<th>구매자수</th>
|
||||
<th>매출</th>
|
||||
<th>사용마일리지</th>
|
||||
<th>비율</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="tableBody">
|
||||
|
||||
<tr>
|
||||
<td rowspan='4'>-</td>
|
||||
<td rowspan='4'>-</td>
|
||||
<td rowspan='4'>-</td>
|
||||
<td>폐점매장 회원</td>
|
||||
<td>42,554</td>
|
||||
<td>250</td>
|
||||
<td>₩32,420,029</td>
|
||||
<td>₩4,207,881</td>
|
||||
<td>12%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>매장 회원</td>
|
||||
<td>51,780</td>
|
||||
<td>250</td>
|
||||
<td>₩32,420,029</td>
|
||||
<td>₩4,207,881</td>
|
||||
<td>12%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>온라인 회원</td>
|
||||
<td>212,770</td>
|
||||
<td>250</td>
|
||||
<td>₩32,420,029</td>
|
||||
<td>₩4,207,881</td>
|
||||
<td>12%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>합계</td>
|
||||
<td>212,770</td>
|
||||
<td>250</td>
|
||||
<td>₩32,420,029</td>
|
||||
<td>₩4,207,881</td>
|
||||
<td>12%</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
|
||||
|
||||
<section class="content-section">
|
||||
<table class="table vertical">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: auto;">
|
||||
</colgroup>
|
||||
<thead id="tableHeader">
|
||||
<tr>
|
||||
<th>날짜</th>
|
||||
<th>내용</th>
|
||||
<th>숫자</th>
|
||||
<th>비율</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="tableBody">
|
||||
|
||||
<tr>
|
||||
<td rowspan='2'>발송기간</td>
|
||||
<td>구매한 회원중 안내문자 받기전 1년 이상 구매 하지 않은 회원수</td>
|
||||
<td>-</td>
|
||||
<td>발송 대상 대비 비율</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>구매한 회원중 안내문자 받기전에도 1년안에 구매이력 있던 회원수</td>
|
||||
<td>-</td>
|
||||
<td>발송 대상 대비 비율</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
|
||||
@@ -0,0 +1,134 @@
|
||||
<%@ 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" %>
|
||||
<%--
|
||||
Class Name : MaBsnmInqirePopupR.jsp
|
||||
Description : 사업자 상세조회 팝업
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
since : 2023.12.19 rvg 최초 생성
|
||||
--%>
|
||||
<div id="business-info-modal" class="modal" style="max-width: 900px;">
|
||||
<div class="modal-header">
|
||||
<h4>사업자 조회</h4>
|
||||
</div>
|
||||
<div class="modal-content">
|
||||
<h3 class="content-section__title">사업자 정보</h3>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>사업자</caption>
|
||||
<colgroup>
|
||||
<col style="width: 15%;">
|
||||
<col style="width: 35%;">
|
||||
<col style="width: 15%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<c:choose>
|
||||
<c:when test="${ not empty resultMap.list }">
|
||||
<c:forEach items="${ resultMap.list }" var="list" varStatus="status">
|
||||
<tr>
|
||||
<th>사업자(회사명)</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<c:out value="${list.bsnmNm}"/>
|
||||
</div>
|
||||
</td>
|
||||
<th>업태/종목</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<c:out value="${list.bizcndCn}"/><span class="mx-5 gray-7">/</span><c:out value="${list.itemCn}"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>사업자등록번호</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<c:out value="${list.bizrnb.substring(0,3)}-${list.bizrnb.substring(3,5)}-${list.bizrnb.substring(5)}"/>
|
||||
</div>
|
||||
</td>
|
||||
<th>통신판매업 신고번호</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<c:out value="${list.mobDclNb}"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>대표자명</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<c:out value="${list.reprsntvnm}"/>
|
||||
</div>
|
||||
</td>
|
||||
<th>개인정보 보호책임자</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<c:out value="${list.indvdlinfoPrtcRspnberNm}"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>전화번호</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<c:out value="${list.telnb}"/>
|
||||
</div>
|
||||
</td>
|
||||
<th>팩스번호</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<c:out value="${list.fxnb}"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>이메일</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<c:out value="${list.email}"/>
|
||||
</div>
|
||||
</td>
|
||||
<th>영업신고증</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<c:out value="${list.bsnDclNb}"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>사업장 주소</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="address-group">
|
||||
<div class="address-line">
|
||||
<span class="left">우편번호 : </span>
|
||||
<c:out value="${list.zip}"/>
|
||||
</div>
|
||||
<div class="address-line">
|
||||
<span class="left">주소 : </span>
|
||||
<c:out value="${list.lnbAdres}"/>
|
||||
</div>
|
||||
<div class="address-line">
|
||||
<span class="left">상세주소 : </span>
|
||||
<c:out value="${list.dtlAdres}"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
</c:choose>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#" rel="modal:close" class="btn outline">닫기</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -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="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 : MaBsnmListInqireR.jsp
|
||||
Description : 사업자 목록조회 리스트
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023-12-14 박철민 최초 생성(퍼블리싱 적용)
|
||||
2023-12-19 리브가 수정
|
||||
2023-01-10 리브가 검색조건, 페이징정보 유지되도록 수정
|
||||
--%>
|
||||
<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="spacing">
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical">
|
||||
<caption>사업자 목록</caption>
|
||||
<colgroup>
|
||||
<col style="width: 6%;">
|
||||
<col style="width: auto;">
|
||||
<col style="width: 15%;">
|
||||
<col style="width: 10%;">
|
||||
<col style="width: 7%;">
|
||||
<col style="width: 10%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 10%">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>번호</th>
|
||||
<th>사업자명</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.list }">
|
||||
<c:forEach items="${ resultMap.list }" var="list" varStatus="status">
|
||||
<tr>
|
||||
<td><c:out value="${ resultMap.paginationInfo.totalRecordCount - list.rnum + 1 }" /></td>
|
||||
<td class="left">
|
||||
<a onclick="fn_open_modal('#modal','#business-info-modal','selectBsnmInqirePopup',{'bsnmInnb': <c:out value="${list.bsnmInnb}"/>}); return false;"
|
||||
class="under-line"><c:out value="${list.bsnmNm}"/></a></td>
|
||||
<td><c:out value="${list.bizcndCn}"/> <c:if test="${ not empty list.itemCn}">/</c:if> <c:out value="${list.itemCn}"/></td>
|
||||
<td><c:out value="${list.bizrnb}"/></td>
|
||||
<td><c:out value="${list.reprsntvnm}"/></td>
|
||||
<td><c:out value="${list.telnb}"/></td>
|
||||
<td><c:out value="${list.mobDclNb}"/></td>
|
||||
<td><c:out value="${list.bsnDclNb}"/></td>
|
||||
<td>
|
||||
<div class="manage-btn-container">
|
||||
<button class="btn xsm primary outline" type="button"
|
||||
onclick="fn_move_dtl_uptpage(<c:out value="${list.bsnmInnb}"/>)">
|
||||
<spring:message code="button.update"/></button>
|
||||
</div>
|
||||
</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>
|
||||
@@ -0,0 +1,154 @@
|
||||
<%@ 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 : MaBsnmListInqireRForm.jsp
|
||||
Description : 사업자 목록조회 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023-01-10 리브가 최초생성
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<%-- 공통 include --%>
|
||||
<head>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
</head>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
let pageIndex = '<c:out value="${ resultMap.BOBsnmVO.pageIndex }"/>';
|
||||
let pageUnit = '<c:out value="${ resultMap.BOBsnmVO.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;
|
||||
}
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url : "<c:url value="/admin/store/bsnm/selectBsnmListInqire"/>",
|
||||
data : dataStr,
|
||||
success:function(resultHtml) {
|
||||
$('#pageDiv').html(resultHtml);
|
||||
$('#pageUnit').niceSelect();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 수정폼 이동
|
||||
******************************************************** */
|
||||
const fn_move_dtl_uptpage = function(Innb) {
|
||||
const url = '<c:url value="/admin/store/bsnm/selectBsnmUpdtForm"/>';
|
||||
|
||||
$('#listForm').attr('action', url);
|
||||
$('#listForm').attr('method', 'post');
|
||||
$('#bsnmInnb').val(Innb);
|
||||
$('#listForm').submit();
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 등록폼 이동
|
||||
******************************************************** */
|
||||
const fn_move_regpage = function() {
|
||||
const url = '<c:url value="/admin/store/bsnm/selectBsnmRegistForm"/>';
|
||||
|
||||
$('#listForm').attr('action', url);
|
||||
$('#listForm').attr('method', 'post');
|
||||
$('#listForm').submit();
|
||||
};
|
||||
|
||||
history.replaceState({}, null, location.pathname);
|
||||
|
||||
</script>
|
||||
<body>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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 onclick="fn_move_regpage()" class="btn primary">사업자 <spring:message code="button.insert"/></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form id='listForm' name="listForm" method="post" action="<c:url value="/admin/store/bsnm/selectBsnmListInqireForm"/>">
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultMap.BOBsnmVO.pageIndex }"/>
|
||||
<input type="hidden" id="bsnmInnb" name="bsnmInnb"/>
|
||||
<section class="content-section" id="search-section">
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>사업자 조회</caption>
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>검색어</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select title="검색타입" id="srchType" name="srchType">
|
||||
<option value="BSNM_NM" <c:if test="${ resultMap.BOBsnmVO.srchType == 'BSNM_NM'}">selected="selected"</c:if>>사업자명</option>
|
||||
<option value="BIZRNB" <c:if test="${ resultMap.BOBsnmVO.srchType == 'BIZRNB'}">selected="selected"</c:if>>사업자등록번호</option>
|
||||
<option value="REPRSNTVNM" <c:if test="${ resultMap.BOBsnmVO.srchType == 'REPRSNTVNM'}">selected="selected"</c:if>>대표자명</option>
|
||||
<option value="MOB_DCL_NB" <c:if test="${ resultMap.BOBsnmVO.srchType == 'MOB_DCL_NB'}">selected="selected"</c:if>>통신판매업신고번호</option>
|
||||
</select>
|
||||
</div>
|
||||
<input class="input-text xl" type="text" title="검색어" id="srchStr" name="srchStr" value="<c:out value="${ resultMap.BOBsnmVO.srchStr }" />">
|
||||
</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'); return false;">초기화</button>
|
||||
<button class="btn primary" id="searchBtn" type="button" onclick="fn_select_list(1); return false;">검색</button>
|
||||
</div>
|
||||
<div class="right"></div>
|
||||
</div>
|
||||
</section>
|
||||
<div id="pageDiv">
|
||||
</div>
|
||||
</form>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
<%--모달--%>
|
||||
<div id="modal"/>
|
||||
|
||||
</html>
|
||||
398
src/main/webapp/WEB-INF/views/admin/store/bsnm/MaBsnmRegistC.jsp
Normal file
398
src/main/webapp/WEB-INF/views/admin/store/bsnm/MaBsnmRegistC.jsp
Normal file
@@ -0,0 +1,398 @@
|
||||
<%@ 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" %>
|
||||
<%--
|
||||
Class Name : MaBsnmRegistC.jsp
|
||||
Description : 사업자 등록
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023.12.19 리브가 최초 생성
|
||||
2023-01-10 리브가 검색조건, 페이징정보 유지되도록 수정
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
</head>
|
||||
<script>
|
||||
$( document ).ready(function() {
|
||||
|
||||
$('.bizrnb-container input').on('input', function () {
|
||||
// 사업자번호 필드 값 결합
|
||||
var combinedValue = $('#bizrnb1').val() + $('#bizrnb2').val() + $('#bizrnb3').val();
|
||||
$('#combiBizrnb').val(combinedValue);
|
||||
});
|
||||
|
||||
$('.email-container input').on('input', function () {
|
||||
fn_email_combinedValue();
|
||||
});
|
||||
|
||||
// 이메일 도메인
|
||||
$('#domain-list').change(function () {
|
||||
fn_updateEmailFields();
|
||||
fn_email_combinedValue();
|
||||
});
|
||||
|
||||
fn_replace_kr_eng('#reprsntvnm');
|
||||
fn_replace_kr('#indvdlinfoPrtcRspnberNm');
|
||||
|
||||
});
|
||||
|
||||
/* ********************************************************
|
||||
* 한글 영문 공백변환
|
||||
******************************************************** */
|
||||
const fn_replace_kr_eng = function(id) {
|
||||
$(id).keyup(function() {
|
||||
// 한글, 영문만 허용하고 그 외의 문자는 모두 제거
|
||||
var replace_text = $(this).val().replace(/[^가-힣a-zA-Z\s]/g, '');
|
||||
$(this).val(replace_text);
|
||||
});
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 한글 제외 공백변환
|
||||
******************************************************** */
|
||||
const fn_replace_kr = function(id){
|
||||
$(id).keyup(function() {
|
||||
var replace_text = $(this).val().replace( /[a-z0-9]|[ \[\]{}()<>?|`~!@#$%^&*-_+=,.;:\"'\\]/g, '');
|
||||
$(this).val(replace_text);
|
||||
});
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 이메일 아이디 + '@' + 도메인
|
||||
******************************************************** */
|
||||
const fn_email_combinedValue = function() {
|
||||
if($('#email1').val() != '' && $('#email2').val() != '') {
|
||||
var combinedValue = $('#email1').val() + '@' + $('#email2').val();
|
||||
$('#combiEmail').val(combinedValue);
|
||||
} else {
|
||||
$('#combiEmail').val('');
|
||||
}
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 이메일 도메인 선택
|
||||
******************************************************** */
|
||||
const fn_updateEmailFields = function() {
|
||||
$("#domain-list option:selected").each(function () {
|
||||
if ($(this).val() == '99') { //직접입력일 경우
|
||||
$("#email2").val(''); //값 초기화
|
||||
$("#email2").attr("disabled", false); //활성화
|
||||
} else { //직접입력이 아닐경우
|
||||
$("#email2").val($(this).text()); //선택값 입력
|
||||
$("#email2").attr("disabled", true); //비활성화
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 등록 AJAX
|
||||
******************************************************** */
|
||||
const fn_regist = function() {
|
||||
const url = '<c:url value="/admin/store/bsnm/insertBsnmRegist"/>';
|
||||
const data = $('#listForm').serializeArray();
|
||||
|
||||
data.push({ name: 'email', value: $('#combiEmail').val() });
|
||||
|
||||
const bizrnb1 = $('#bizrnb1').val()
|
||||
const bizrnb2 = $('#bizrnb2').val()
|
||||
const bizrnb3 = $('#bizrnb3').val()
|
||||
|
||||
|
||||
const bizrnb = bizrnb1+'-'+bizrnb2+'-'+bizrnb3
|
||||
data.push({ name: 'bizrnb', value: bizrnb });
|
||||
|
||||
|
||||
|
||||
if(confirm('사업자를 <spring:message code="confirm.common.insert"/>')) {
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: url,
|
||||
data: data,
|
||||
success: function (data) {
|
||||
let str = JSON.parse(data.resBody.result);
|
||||
if(str.result=='success'){
|
||||
alert('<spring:message code="success.common.insert"/>');
|
||||
//등록 후 수정화면으로 이동
|
||||
fn_move_dtl_uptpage(data.resBody.result.replace(/[^0-9]/g, ""));
|
||||
} else if(str.result=='dublechk'){
|
||||
alert("이미 등록된 사업자등록번호 입니다.");
|
||||
} else{
|
||||
alert('<spring:message code="fail.common.insert"/>');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
/* ********************************************************
|
||||
* 사업자등록번호 중복 조회 AJAX
|
||||
******************************************************** */
|
||||
function fn_id_doubleCheck() {
|
||||
const url = '<c:url value="/admin/store/bsnm/selectBizrnbDplctInqire"/>';
|
||||
var combiBizrnb = $('#combiBizrnb').val();
|
||||
|
||||
if(combiBizrnb.length != 10){
|
||||
alert("사업자등록번호는 10자리 입니다.");
|
||||
return false;
|
||||
}
|
||||
|
||||
const bizrnb1 = $('#bizrnb1').val()
|
||||
const bizrnb2 = $('#bizrnb2').val()
|
||||
const bizrnb3 = $('#bizrnb3').val()
|
||||
|
||||
|
||||
const bizrnb = bizrnb1+'-'+bizrnb2+'-'+bizrnb3
|
||||
let data = {
|
||||
'bizrnb': bizrnb
|
||||
};
|
||||
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url : url,
|
||||
data : JSON.stringify(data),
|
||||
contentType :'application/json',
|
||||
success:function(result) {
|
||||
const message = JSON.parse(result.resBody.result)
|
||||
if(message === 0){
|
||||
alert('사용가능한 사업자등록번호 입니다.');
|
||||
return false;
|
||||
}else{
|
||||
alert('이미 등록된 사업자등록번호 입니다.');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/* ********************************************************
|
||||
* 우편번호 찾기
|
||||
******************************************************** */
|
||||
const fn_set_postcode = function(data) {
|
||||
$('#postcode').val(data.postcode);
|
||||
if(data.addressType === '02') {
|
||||
$('#address').val(data.jibunAddress);
|
||||
} else {
|
||||
$('#address').val(data.roadAddress);
|
||||
}
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 수정폼 이동
|
||||
******************************************************** */
|
||||
const fn_move_dtl_uptpage = function(Innb) {
|
||||
const url = '<c:url value="/admin/store/bsnm/selectBsnmUpdtForm"/>';
|
||||
|
||||
$('#listForm').attr('action', url);
|
||||
$('#listForm').attr('method', 'get');
|
||||
$('#pageIndex').val(1);
|
||||
$('#bsnmInnb').val(Innb);
|
||||
$('#listForm').submit();
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 목록 조회
|
||||
******************************************************** */
|
||||
const fn_select_list = function() {
|
||||
const url = '<c:url value="/admin/store/bsnm/selectBsnmListInqireForm"/>';
|
||||
|
||||
$('#listForm').attr('action', url);
|
||||
$('#listForm').attr('method', 'post');
|
||||
$('#listForm').submit();
|
||||
};
|
||||
|
||||
/* ********************************************************
|
||||
* 숫자만 허용
|
||||
******************************************************** */
|
||||
function fn_only_num(input) {
|
||||
var regex = /[^0-9]/g;
|
||||
input.value = input.value.replace(regex, '');
|
||||
input.value = input.value.toUpperCase();
|
||||
}
|
||||
|
||||
</script>
|
||||
<body>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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 onclick="fn_select_list()" onkeypress="this.onclick" class="btn outline"><spring:message code="button.catalog"/></button>
|
||||
<button class="btn primary" onclick="fn_regist();" ><spring:message code="button.insert"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<section class="content-section">
|
||||
<form id="listForm" method="post" action="<c:url value="/admin/store/bsnm/insertBsnmRegist"/>">
|
||||
<input type="hidden" id="combiBizrnb" name="combiBizrnb" value="">
|
||||
<input type="hidden" id="combiEmail" name="combiEmail" value="">
|
||||
<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>사업자(회사명)<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text md" type="text" id="bsnmNm" name="bsnmNm" title="사업자(회사명)" maxlength="35">
|
||||
</div>
|
||||
</td>
|
||||
<th>업태/종목</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" id="bizcndCn" name="bizcndCn" title="업태" placeholder="예) 제조업" maxlength="20">
|
||||
<span class="mx-5 gray-7">/</span>
|
||||
<input class="input-text" type="text" id="itemCn" name="itemCn" title="종목" placeholder="예) 건강식품" maxlength="20">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>사업자등록번호<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="bizrnb-container">
|
||||
<input type="text" class="input-text xsm" oninput="fn_only_num(this)" id="bizrnb1" name="bizrnb1" min="0" maxlength=3 title="사업자등록번호1" required="required">
|
||||
<span class="mx-3 fs-16">-</span>
|
||||
<input type="text" class="input-text xsm" oninput="fn_only_num(this)" id="bizrnb2" name="bizrnb2" min="0" maxlength=2 title="사업자등록번호2" required="required">
|
||||
<span class="mx-3 fs-16">-</span>
|
||||
<input type="text" class="input-text xsm" oninput="fn_only_num(this)" id="bizrnb3" name="bizrnb3" min="0" maxlength=5 title="사업자등록번호3" required="required">
|
||||
</div>
|
||||
<button type="button"
|
||||
onclick="fn_id_doubleCheck(); return false;"
|
||||
class="address-line__find-btn"><spring:message code="button.doubleCheck"/>
|
||||
</button>
|
||||
</div>
|
||||
</td>
|
||||
<th>통신판매업 신고번호<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" id="mobDclNb" name="mobDclNb" title="통신판매업 신고번호" maxlength="35">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>대표자명<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" id="reprsntvnm" name="reprsntvnm" title="대표자명" maxlength="20">
|
||||
</div>
|
||||
</td>
|
||||
<th>개인정보 보호책임자<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" id="indvdlinfoPrtcRspnberNm" name="indvdlinfoPrtcRspnberNm" title="개인정보 보호책임자" maxlength="20">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>전화번호<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" id="telnb" oninput="fn_set_event(this, 'keyup', fn_fmt_telno)" name="telnb" title="전화번호" maxlength="13">
|
||||
</div>
|
||||
</td>
|
||||
<th>팩스번호</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" id="fxnb" name="fxnb" oninput="fn_set_event(this, 'keyup', fn_fmt_telno)" title="팩스번호" maxlength="13">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>이메일<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="email-container" id="email" name="email">
|
||||
<input type="text" class="input-text sm" id="email1" name="email1" title="이메일 아이디" maxlength="20" required="required">
|
||||
<span class="mx-3 gray-7 fs-16">@</span>
|
||||
<input type="text" class="input-text sm" id="email2" name="email2" title="이메일 도메인" maxlength="20" required="required">
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select title="도메인 선택" id="domain-list" name="domain-list">
|
||||
<c:forEach var="codeList" items="${ resultMap.codeList[0].emailAdres }" varStatus="">
|
||||
<c:choose>
|
||||
<c:when test="${codeList.cd eq '99'}">
|
||||
<option value="${codeList.cd}" selected>${codeList.cdNm}</option>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<option value="${codeList.cd}">${codeList.cdNm}</option>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<th>영업신고증</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" id="bsnDclNb" name="bsnDclNb" title="영업신고증" maxlength="20">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>사업장 주소<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="address-group">
|
||||
<div class="address-line">
|
||||
<span class="address-line__title">우편번호</span>
|
||||
<input type="text" id="postcode" class="input-text xsm mr-2" value="" readonly
|
||||
title="사업장 우편번호" name="zip">
|
||||
<button type="button"
|
||||
onclick="fn_select_postcode(fn_set_postcode); return false;"
|
||||
class="address-line__find-btn">주소찾기
|
||||
</button>
|
||||
</div>
|
||||
<div class="address-line">
|
||||
<span class="address-line__title">주소</span>
|
||||
<input type="text" id="address" class="input-text md" value="" readonly
|
||||
title="사업장 주소" name="lnbAdres">
|
||||
</div>
|
||||
<div class="address-line">
|
||||
<span class="address-line__title">상세주소</span>
|
||||
<input type="text" id="detailAddress" class="input-text md" value="" maxlength="35"
|
||||
title="사업장 상세주소" name="dtlAdres">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!--검색 조건 , 페이징 조건 -->
|
||||
<input type="hidden" id="bsnmInnb" name="bsnmInnb" value=""/>
|
||||
<input type="hidden" id="srchType" name="srchType" title="검색타입" value="<c:out value="${ resultMap.BOBsnmVO.srchType }"/>">
|
||||
<input type="hidden" id="srchStr" name="srchStr" title="검색어" value="<c:out value="${ resultMap.BOBsnmVO.srchStr }"/>">
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value="${ resultMap.BOBsnmVO.pageIndex }"/>"/>
|
||||
<input type="hidden" id="pageUnit" name="pageUnit" value="<c:out value="${ resultMap.BOBsnmVO.pageUnit }"/>"/>
|
||||
|
||||
|
||||
</form>
|
||||
</section>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
389
src/main/webapp/WEB-INF/views/admin/store/bsnm/MaBsnmUpdtU.jsp
Normal file
389
src/main/webapp/WEB-INF/views/admin/store/bsnm/MaBsnmUpdtU.jsp
Normal file
@@ -0,0 +1,389 @@
|
||||
<%@ page import="java.util.Date" %>
|
||||
<%@ page import="java.util.Arrays" %>
|
||||
<%@ page import="java.util.List" %>
|
||||
<%@ 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" %>
|
||||
<%--
|
||||
Class Name : MaBsnmUpdtU.jsp
|
||||
Description : 사업자 수정
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023.12.19 리브가 최초 생성
|
||||
2023-01-10 리브가 검색조건, 페이징정보 유지되도록 수정
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
</head>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
|
||||
$('.email-container input').on('input', function () {
|
||||
fn_email_combinedValue();
|
||||
});
|
||||
|
||||
// 이메일 도메인
|
||||
$('#domain-list').change(function () {
|
||||
fn_updateEmailFields();
|
||||
fn_email_combinedValue();
|
||||
});
|
||||
|
||||
fn_replace_kr('#reprsntvnm');
|
||||
fn_replace_kr('#indvdlinfoPrtcRspnberNm');
|
||||
|
||||
});
|
||||
|
||||
/* ********************************************************
|
||||
* 한글 제외 공백처리
|
||||
******************************************************** */
|
||||
const fn_replace_kr = function(id){
|
||||
$(id).keyup(function() {
|
||||
var replace_text = $(this).val().replace( /[a-z0-9]|[ \[\]{}()<>?|`~!@#$%^&*-_+=,.;:\"'\\]/g, '');
|
||||
$(this).val(replace_text);
|
||||
});
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 이메일 아이디 + '@' + 도메인
|
||||
******************************************************** */
|
||||
const fn_email_combinedValue = function() {
|
||||
if($('#email1').val() != '' && $('#email2').val() != '') {
|
||||
var combinedValue = $('#email1').val() + '@' + $('#email2').val();
|
||||
$('#combiEmail').val(combinedValue);
|
||||
} else {
|
||||
$('#combiEmail').val('');
|
||||
}
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 이메일 도메인 선택
|
||||
******************************************************** */
|
||||
const fn_updateEmailFields = function() {
|
||||
$("#domain-list option:selected").each(function () {
|
||||
if ($(this).val() == '99') { //직접입력일 경우
|
||||
$("#email2").val(''); //값 초기화
|
||||
$("#email2").attr("disabled", false); //활성화
|
||||
} else { //직접입력이 아닐경우
|
||||
$("#email2").val($(this).text()); //선택값 입력
|
||||
$("#email2").attr("disabled", true); //비활성화
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 수정 AJAX
|
||||
******************************************************** */
|
||||
const fn_update = function() {
|
||||
const url = '<c:url value="/admin/store/bsnm/updateBsnmUpdt"/>';
|
||||
const data = $('#listForm').serializeArray();
|
||||
|
||||
data.push({ name: 'email', value: $('#combiEmail').val() });
|
||||
data.push({ name: 'bizrnb', value: $('#combiBizrnb').val() });
|
||||
|
||||
if(confirm('사업자를 <spring:message code="confirm.common.update"/>')) {
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: url,
|
||||
data: data,
|
||||
success: function (data) {
|
||||
let str = JSON.parse(data.resBody.result);
|
||||
if(str.result=='success'){
|
||||
alert('<spring:message code="success.common.update"/>');
|
||||
// 수정 후 수정화면 유지
|
||||
fn_move_dtl_uptpage();
|
||||
} else {
|
||||
alert('<spring:message code="fail.common.update"/>');
|
||||
}
|
||||
}, error: function(data){
|
||||
$("#overlay").fadeOut();
|
||||
if(!data.responseJSON.resBody.message) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
if(fn_check_json(data.responseJSON.resBody.message)) {
|
||||
const errorObject = JSON.parse(data.responseJSON.resBody.message);
|
||||
if(!errorObject) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
if(!errorObject.errorMsg) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
alert(errorObject.errorMsg);
|
||||
let isMtched = false;
|
||||
$('.main').eq(0).find('input,select,textarea').each(function(){
|
||||
for(let idx=0; idx<errorObject.errorFields.length; idx++) {
|
||||
if(errorObject.errorFields[idx].indexOf($(this).prop('name')) >= 0) {
|
||||
isMtched = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(isMtched) {
|
||||
$(this).focus();
|
||||
return false;
|
||||
} $('[required]').each(function () {
|
||||
if ($(this).val() === '') {
|
||||
$(this).focus();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if(data.responseJSON.resBody.message) {
|
||||
alert(data.responseJSON.resBody.message);
|
||||
} else {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
/* ********************************************************
|
||||
* 삭제 AJAX
|
||||
******************************************************** */
|
||||
const fn_delete = function() {
|
||||
const url = '<c:url value="/admin/store/bsnm/deleteBsnmDel"/>';
|
||||
const data = $('#listForm').serialize();
|
||||
|
||||
if(confirm('사업자를 <spring:message code="confirm.common.delete"/>')) {
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: url,
|
||||
data: data,
|
||||
success: function (data) {
|
||||
let str = JSON.parse(data.resBody.result);
|
||||
if(str.result=='success'){
|
||||
alert('<spring:message code="success.common.delete"/>');
|
||||
// 삭제 후 목록 화면으로 이동
|
||||
fn_select_list(1);
|
||||
} else {
|
||||
alert('<spring:message code="fail.common.delete"/>');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
/* ********************************************************
|
||||
* 우편번호 찾기
|
||||
******************************************************** */
|
||||
const fn_set_postcode = function(data) {
|
||||
$('#postcode').val(data.postcode);
|
||||
if(data.addressType === '02') {
|
||||
$('#address').val(data.jibunAddress);
|
||||
} else {
|
||||
$('#address').val(data.roadAddress);
|
||||
}
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 목록 조회
|
||||
******************************************************** */
|
||||
const fn_select_list = function(pageIndex) {
|
||||
const url = '<c:url value="/admin/store/bsnm/selectBsnmListInqireForm"/>';
|
||||
|
||||
$('#listForm').attr('action', url);
|
||||
$('#listForm').attr('method', 'post');
|
||||
if(pageIndex) {
|
||||
$('#pageIndex').val(pageIndex);
|
||||
}
|
||||
$('#listForm').submit();
|
||||
};
|
||||
|
||||
/* ********************************************************
|
||||
* 수정폼 이동
|
||||
******************************************************** */
|
||||
const fn_move_dtl_uptpage = function() {
|
||||
const url = '<c:url value="/admin/store/bsnm/selectBsnmUpdtForm"/>';
|
||||
|
||||
$('#listForm').attr('action', url);
|
||||
$('#listForm').attr('method', 'get');
|
||||
$('#pageIndex').val(1);
|
||||
$('#listForm').submit();
|
||||
}
|
||||
|
||||
</script>
|
||||
<body>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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 onclick="fn_select_list()" onkeypress="this.onclick" class="btn outline"><spring:message code="button.catalog"/></button>
|
||||
<button class="btn dark" onclick="fn_delete();"><spring:message code="button.delete"/></button>
|
||||
<button class="btn primary outline" onclick="fn_update(); return false;"><spring:message code="button.update"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<section class="content-section">
|
||||
<form id="listForm" method="post" action="/admin/store/bsnm/selectSopThemaUpdtForm">
|
||||
<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>
|
||||
<c:choose>
|
||||
<c:when test="${ not empty resultMap.list }">
|
||||
<c:forEach items="${ resultMap.list }" var="list" varStatus="status">
|
||||
<input type="hidden" id="bizrnb" name="bizrnb" value="<c:out value="${list.bizrnb}"/>"/>
|
||||
<input type="hidden" id="bsnmInnb" name="bsnmInnb" value="<c:out value="${list.bsnmInnb}"/>"/>
|
||||
<input type="hidden" id="combiEmail" name="combiEmail" value="<c:out value="${list.email}"/>">
|
||||
<tr>
|
||||
<th>사업자(회사명)<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text md" type="text" id="bsnmNm" name="bsnmNm" value="<c:out value="${list.bsnmNm}"/>" title="사업자(회사명)" maxlength="35">
|
||||
</div>
|
||||
</td>
|
||||
<th>업태/종목</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" id="bizcndCn" name="bizcndCn" value="<c:out value="${list.bizcndCn}"/>" title="업태" placeholder="예) 제조업" maxlength="20">
|
||||
<span class="mx-5 gray-7">/</span>
|
||||
<input class="input-text" type="text" id="itemCn" name="itemCn" value="<c:out value="${list.itemCn}"/>" title="종목" placeholder="예) 건강식품" maxlength="20">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>사업자등록번호<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="bizrnb-container">
|
||||
<c:out value="${list.bizrnb}"/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<th>통신판매업 신고번호<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" id="mobDclNb" name="mobDclNb" value="<c:out value="${list.mobDclNb}"/>" title="통신판매업 신고번호" maxlength="35">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>대표자명<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" id="reprsntvnm" name="reprsntvnm" value="<c:out value="${list.reprsntvnm}"/>" title="대표자명" maxlength="20">
|
||||
</div>
|
||||
</td>
|
||||
<th>개인정보 보호책임자<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" id="indvdlinfoPrtcRspnberNm" name="indvdlinfoPrtcRspnberNm" value="<c:out value="${list.indvdlinfoPrtcRspnberNm}"/>" title="개인정보 보호책임자" maxlength="20">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>전화번호<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" id="telnb" name="telnb" oninput="fn_set_event(this, 'keyup', fn_fmt_telno)" value="<c:out value="${list.telnb}"/>" title="전화번호" maxlength="13">
|
||||
</div>
|
||||
</td>
|
||||
<th>팩스번호</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" id="fxnb" name="fxnb" oninput="fn_set_event(this, 'keyup', fn_fmt_telno)" value="<c:out value="${list.fxnb}"/>" title="팩스번호" maxlength="13">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>이메일<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="email-container">
|
||||
<input type="text" class="input-text sm" id="email1" name="email1" value="<c:out value="${list.email1}"/>" title="이메일 아이디" maxlength="20" required="required">
|
||||
<span class="mx-3 gray-7 fs-16">@</span>
|
||||
<input type="text" class="input-text sm" id="email2" name="email2" value="<c:out value="${list.email2}"/>" title="이메일 도메인" maxlength="20" required="required">
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select title="도메인 선택" id="domain-list" name="domain-list">
|
||||
<c:forEach var="codeList" items="${ resultMap.codeList[0].emailAdres }" varStatus="">
|
||||
<c:choose>
|
||||
<c:when test="${codeList.cd eq '99'}">
|
||||
<option value="${codeList.cd}" selected>${codeList.cdNm}</option>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<option value="${codeList.cd}">${codeList.cdNm}</option>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<th>영업신고증</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" id="bsnDclNb" name="bsnDclNb" value="<c:out value="${list.bsnDclNb}"/>" title="영업신고증" maxlength="20">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>사업장 주소<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="address-group">
|
||||
<div class="address-line">
|
||||
<span class="address-line__title">우편번호</span>
|
||||
<input type="text" id="postcode" class="input-text xsm mr-2" value="<c:out value="${list.zip}"/>" readonly
|
||||
title="사업장 우편번호" name="zip">
|
||||
<button type="button"
|
||||
onclick="fn_select_postcode(fn_set_postcode); return false;"
|
||||
class="address-line__find-btn">주소찾기
|
||||
</button>
|
||||
</div>
|
||||
<div class="address-line">
|
||||
<span class="address-line__title">주소</span>
|
||||
<input type="text" id="address" class="input-text md" value="<c:out value="${list.lnbAdres}"/>" readonly
|
||||
title="사업장 주소" name="lnbAdres">
|
||||
</div>
|
||||
<div class="address-line">
|
||||
<span class="address-line__title">상세주소</span>
|
||||
<input type="text" id="detailAddress" class="input-text md" value="<c:out value="${list.dtlAdres}"/>" maxlength="35"
|
||||
title="사업장 상세주소" name="dtlAdres">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
</c:choose>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!--검색 조건 , 페이징 조건 -->
|
||||
<input type="hidden" id="srchType" name="srchType" title="검색타입" value="<c:out value="${ resultMap.BOBsnmVO.srchType }"/>">
|
||||
<input type="hidden" id="srchStr" name="srchStr" title="검색어" value="<c:out value="${ resultMap.BOBsnmVO.srchStr }"/>">
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value="${ resultMap.BOBsnmVO.pageIndex }"/>"/>
|
||||
<input type="hidden" id="pageUnit" name="pageUnit" value="<c:out value="${ resultMap.BOBsnmVO.pageUnit }"/>"/>
|
||||
|
||||
</form>
|
||||
</section>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
191
src/main/webapp/WEB-INF/views/admin/store/extlink/maExtLinkC.jsp
Normal file
191
src/main/webapp/WEB-INF/views/admin/store/extlink/maExtLinkC.jsp
Normal file
@@ -0,0 +1,191 @@
|
||||
<%@ 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 : maExtLinkC.jsp
|
||||
Description : 외부연동 등록 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024.04.15 전일찬 최초 생성
|
||||
--%>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
</head>
|
||||
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
||||
});
|
||||
|
||||
/* ********************************************************
|
||||
* 외부연동 목록 이동
|
||||
******************************************************** */
|
||||
const fn_goto_list = function() {
|
||||
|
||||
$('#backUpData').attr('action', '<c:url value="/admin/store/extlink/selectExtLinkListForm"/>');
|
||||
$('#backUpData').submit();
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<body>
|
||||
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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 type="button" class="btn outline" onclick="fn_goto_list()"><spring:message code="button.catalog"/></button>
|
||||
<button type="button" class="btn primary" onclick="fn_regist_extlink();"><spring:message code="button.save"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<section class="content-section">
|
||||
<form class="common-form" id="regForm">
|
||||
<input type="hidden" name="srchExtrlNm" value="${resultMap.srchData.srchExtrlNm }" />
|
||||
<input type="hidden" name="srchExtrlSystem" value="${resultMap.srchData.srchExtrlSystem }" />
|
||||
<input type="hidden" name="pageUnit" value="${resultMap.srchData.pageUnit }" />
|
||||
<input type="hidden" name="pageIndex" value="${resultMap.srchData.pageIndex }" />
|
||||
<input type="hidden" name="pageDv" value="" />
|
||||
<input type="hidden" name="useAt" value="Y" />
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 15%;">
|
||||
<col style="width: 35%;">
|
||||
<col style="width: 15%;">
|
||||
<col style="width: 35%;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>외부연동 명<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text xl" type="text" id="extrlNm" name="extrlNm" title="외부연동명" maxlength="48"/>
|
||||
</div>
|
||||
</td>
|
||||
<th>연동 시스템<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select class="md" id="extrlSystem" name="extrlSystem" title="외부연동시스템" >
|
||||
<c:forEach var="extlinkSystemList" items="${ resultMap.extLinkSystemList }" varStatus="">
|
||||
<option value="${extlinkSystemList.extlinkSystemCd}"> ${extlinkSystemList.extlinkSystemNm} </option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>외부연동 기능</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="b-checkbox-container">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" id="extrlFunctionLogin" name="extrlFunctionLogin" value="Y">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">가입 및 로그인</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" id="extrlFunctionBuy" name="extrlFunctionBuy" value="Y">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">구매</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Client ID<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text xl" type="text" name="extrlClientId" title="clientId" maxlength="150"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Cleint Secret<span class="red-7">*</span></th>
|
||||
<td colspan="2">
|
||||
<div class="td-inner">
|
||||
<textarea class="textarea" name="extrlClientSecret" title="secret" rows="6" maxlength="300"></textarea>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Cleint Pay Secret Key</th>
|
||||
<td colspan="2">
|
||||
<div class="td-inner">
|
||||
<textarea class="textarea" name="extrlClientSecretKey" title="secretKey" rows="6" maxlength="300"></textarea>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form id="backUpData" method="post" >
|
||||
<input type="hidden" name="srchExtrlNm" value="${resultMap.srchData.srchExtrlNm }" />
|
||||
<input type="hidden" name="srchExtrlSystem" value="${resultMap.srchData.srchExtrlSystem }" />
|
||||
<input type="hidden" name="pageUnit" value="${resultMap.srchData.pageUnit }" />
|
||||
<input type="hidden" name="pageIndex" value="${resultMap.srchData.pageIndex }" />
|
||||
<input type="hidden" name="extrlInnb" value="" />
|
||||
<input type="hidden" name="pageDv" value="" />
|
||||
</form>
|
||||
</main>
|
||||
</body>
|
||||
<script>
|
||||
/* ********************************************************
|
||||
* 외부연동 등록
|
||||
******************************************************** */
|
||||
const fn_regist_extlink = function() {
|
||||
|
||||
if(!confirm('외부연동을 <spring:message code="confirm.common.insert"/>')) return;
|
||||
|
||||
let params = $('#regForm').serialize();
|
||||
|
||||
$.ajax({
|
||||
type : 'post',
|
||||
url : '<c:url value="/admin/store/extlink/insertExtLinkRegist"/>',
|
||||
data : params,
|
||||
success : function (result) {
|
||||
let data = JSON.parse(result.resBody.result);
|
||||
if (data.result === 'fail') {
|
||||
alert('<spring:message code="fail.common.insert"/>');
|
||||
return;
|
||||
}
|
||||
if (data.result === "success") {
|
||||
alert('<spring:message code="success.common.insert"/>');
|
||||
$('#backUpData').find('[name=pageDv]').val('I');
|
||||
$('#backUpData').find('[name=extrlInnb]').val(data.extrlInnb);
|
||||
$('#backUpData').attr('action', '<c:url value="/admin/store/extlink/selectExtLinkUpdtForm"/>');
|
||||
$('#backUpData').submit();
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,190 @@
|
||||
<%@ 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 : maExtLinkListForm.jsp
|
||||
Description : 쇼핑몰 외부연동 목록
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024.04.15 전일찬 최초생성
|
||||
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
|
||||
let pageIndex = '<c:out value="${ resultMap.paramVO.pageIndex }"/>';
|
||||
let pageUnit = '<c:out value="${ resultMap.paramVO.pageUnit }"/>';
|
||||
let pageDv = '<c:out value="${ resultMap.paramVO.pageDv }"/>';
|
||||
|
||||
if (pageDv == '') {
|
||||
fn_select_extlink_list(pageIndex, pageUnit);
|
||||
} else {
|
||||
fn_select_extlink_list('1', '10');
|
||||
}
|
||||
|
||||
$('[name=srchExtrlNm]').on('keydown', function(event) {
|
||||
if (event.keyCode === 13) {
|
||||
event.preventDefault();
|
||||
fn_select_extlink_list(1);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
/* ********************************************************
|
||||
* 외부연동 목록조회
|
||||
******************************************************** */
|
||||
const fn_select_extlink_list = function(pageIndex, pageUnit) {
|
||||
|
||||
if (pageIndex == undefined || pageUnit == '') {
|
||||
$('#pageIndex').val('1');
|
||||
} else {
|
||||
$('#pageIndex').val(pageIndex);
|
||||
}
|
||||
|
||||
let params = $('#srchForm').serialize();
|
||||
if (pageUnit != undefined || pageUnit == '') {
|
||||
|
||||
params += '&pageUnit=' + pageUnit;
|
||||
} else {
|
||||
params += '&pageUnit=' + $('#pageUnit').val();
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type : 'post',
|
||||
url : '<c:url value="/admin/store/extlink/selectExtLinkListInqire"/>',
|
||||
data : params,
|
||||
success : function(data) {
|
||||
$('#pageDiv').html(data);
|
||||
$('#pageUnit').niceSelect();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**********************************************
|
||||
* 외부연동 검색 초기화
|
||||
***********************************************/
|
||||
const fn_clear_input = function() {
|
||||
|
||||
$('[name=srchExtrlNm]').val('');
|
||||
$('#srchExtrlSystem').val('').niceSelect('update');
|
||||
};
|
||||
|
||||
/**********************************************
|
||||
* 외부연동 등록 화면 이동
|
||||
***********************************************/
|
||||
const fn_move_extlinkRegist = function() {
|
||||
|
||||
$('#srchForm').attr('action', '<c:url value="/admin/store/extlink/selectExtLinkRegistForm"/>');
|
||||
$('#srchForm').attr('method', 'post');
|
||||
$('#srchForm').submit();
|
||||
};
|
||||
/**********************************************
|
||||
* 외부연동 수정 화면 이동
|
||||
***********************************************/
|
||||
const fn_move_extlinkDetail = function(_extlinkInnb) {
|
||||
|
||||
$('#extrlInnb').val(_extlinkInnb);
|
||||
$('#srchForm').attr('action', '<c:url value="/admin/store/extlink/selectExtLinkUpdtForm"/>');
|
||||
$('#srchForm').attr('method', 'post');
|
||||
$('#srchForm').submit();
|
||||
};
|
||||
|
||||
/**********************************************
|
||||
* 외부연동 엑셀 다운로드
|
||||
***********************************************/
|
||||
const fn_down_excelFile = function() {
|
||||
|
||||
$('#srchForm').attr('action', '<c:url value="/admin/store/extlink/excelFileDownload"/>');
|
||||
$('#srchForm').attr('method', 'post');
|
||||
$('#srchForm').submit();
|
||||
};
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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_move_extlinkRegist();">외부연동 <spring:message code="button.insert"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<form id="srchForm">
|
||||
<input type="hidden" id="extrlInnb" name="extrlInnb" />
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" value="1"/>
|
||||
<%-- 검색 섹션 START --%>
|
||||
<section class="content-section" >
|
||||
<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="td-inner">
|
||||
<input class="input-text full" type="text" id="srchExtrlNm" name="srchExtrlNm" title="외부연동명" value="${resultMap.paramVO.srchExtrlNm }" />
|
||||
</div>
|
||||
</td>
|
||||
<th>외부연동 시스템</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select class="md" id="srchExtrlSystem" name="srchExtrlSystem" title="외부연동시스템" >
|
||||
<option value="">전체</option>
|
||||
<c:forEach var="extlinkSystemList" items="${ resultMap.extlinkSystemList }" varStatus="">
|
||||
<option value="${ extlinkSystemList.extlinkSystemCd }" ${f:setSelected(resultMap.paramVO.srchExtrlSystem, extlinkSystemList.extlinkSystemCd)}>${ extlinkSystemList.extlinkSystemNm }</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</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_clear_input();"><spring:message code="button.init"/></button>
|
||||
<button type="button" class="btn primary" onclick="fn_select_extlink_list('1');"><spring:message code="button.search"/></button>
|
||||
</div>
|
||||
<div class="right"></div>
|
||||
</div>
|
||||
</section>
|
||||
<%-- 검색 섹션 END --%>
|
||||
<%-- 리스트 출력 섹션 START --%>
|
||||
<div id="pageDiv"></div>
|
||||
</form>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,133 @@
|
||||
<%@ 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 : maExtLinkListR.jsp
|
||||
Description : 외부연동 목록 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024.04.15 전일찬 최초 생성
|
||||
--%>
|
||||
<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_extlink_list('1')">
|
||||
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
|
||||
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paramVO.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">
|
||||
<button type="button" class="btn outline sm" onclick="fn_down_excelFile();">
|
||||
<i class="icon icon_excel"></i>
|
||||
<spring:message code="button.excelDownload"/>
|
||||
</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: auto;">
|
||||
<col style="width: 16%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 8%;">
|
||||
<col style="width: 8%;">
|
||||
<col style="width: 7%">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>번호</th>
|
||||
<th>외부연동명</th>
|
||||
<th>연동시스템</th>
|
||||
<th>가입 및 로그인</th>
|
||||
<th>구매</th>
|
||||
<th>등록일자</th>
|
||||
<th>관리</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<%-- 리스트 BODY START --%>
|
||||
<tbody>
|
||||
<c:choose>
|
||||
<c:when test="${ not empty resultMap.resultList }">
|
||||
<c:forEach items="${resultMap.resultList }" var="extLinkList" varStatus="status">
|
||||
<tr>
|
||||
<td>
|
||||
<c:out value="${resultMap.paginationInfo.totalRecordCount - extLinkList.rnum + 1 }" />
|
||||
</td>
|
||||
<td class="left">
|
||||
<c:out value="${extLinkList.extrlNm }"/>
|
||||
</td>
|
||||
<td>
|
||||
<c:out value="${extLinkList.extrlSystemNm}"/>
|
||||
</td>
|
||||
<td>
|
||||
<c:choose>
|
||||
<c:when test="${ extLinkList.extrlFunctionLogin eq 'Y'}">
|
||||
<span>O</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span>X</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</td>
|
||||
<td>
|
||||
<c:choose>
|
||||
<c:when test="${ extLinkList.extrlFunctionBuy eq 'Y'}">
|
||||
<span>O</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span>X</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</td>
|
||||
<td>
|
||||
<c:out value="${extLinkList.registDt}"/>
|
||||
</td>
|
||||
<td>
|
||||
<div class="manage-btn-container re">
|
||||
<button type="button" class="btn xsm primary outline" onclick="fn_move_extlinkDetail('${extLinkList.extrlInnb }');"><spring:message code="button.update"/></button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<tr>
|
||||
<td class="row-no-data" colspan="8">조회된 데이터가 없습니다.</td>
|
||||
</tr>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</table>
|
||||
</div>
|
||||
<%-- 리스트 BODY END --%>
|
||||
</section>
|
||||
<div class="pagination__container">
|
||||
<ui:pagination paginationInfo="${ resultMap.paginationInfo }" type="image" jsFunction="fn_select_mbrgrad_list" />
|
||||
</div>
|
||||
219
src/main/webapp/WEB-INF/views/admin/store/extlink/maExtLinkU.jsp
Normal file
219
src/main/webapp/WEB-INF/views/admin/store/extlink/maExtLinkU.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 : maExtLinkU.jsp
|
||||
Description : 외부연동 수정 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024.04.15 전일찬 최초 생성
|
||||
--%>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
<%-- <c:import url="/comm/admin/include"/> --%>
|
||||
</head>
|
||||
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
||||
});
|
||||
|
||||
/* ********************************************************
|
||||
* 외부연동 목록 이동
|
||||
******************************************************** */
|
||||
const fn_goto_list = function() {
|
||||
|
||||
$('#backUpData').attr('action', '<c:url value="/admin/store/extlink/selectExtLinkListForm"/>');
|
||||
$('#backUpData').submit();
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 외부연동 삭제
|
||||
******************************************************** */
|
||||
const fn_delete_extlink = function(_value) {
|
||||
|
||||
if(!confirm('외부연동을 <spring:message code="confirm.common.delete"/>')) return;
|
||||
let params = {'extrlInnb' : _value};
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url : '<c:url value="/admin/store/extlink/deleteExtLinkDel"/>',
|
||||
data: params,
|
||||
success: function (result) {
|
||||
|
||||
let message = JSON.parse(result.resBody.result).result;
|
||||
if (message === 'fail') {
|
||||
alert('<spring:message code="fail.common.delete"/>');
|
||||
return;
|
||||
} else if(message === 'includeShop'){
|
||||
alert('현재 외부연동을 사용 중입니다. 다시 시도해 주세요.');
|
||||
return;
|
||||
} else {
|
||||
alert('<spring:message code="success.common.delete"/>');
|
||||
fn_goto_list();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<body>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<%-- <c:import url="/comm/admin/header"/> --%>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Left.jsp" %>
|
||||
<%-- <c:import url="/comm/admin/left"/> --%>
|
||||
<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 type="button" class="btn outline" onclick="fn_goto_list()"><spring:message code="button.catalog"/></button>
|
||||
<button type="button" class="btn dark regBtn" onclick="fn_delete_extlink('${resultMap.extLink.extrlInnb }');"><spring:message code="button.delete"/></button>
|
||||
<button type="button" class="btn primary" onclick="fn_update_extlink();"><spring:message code="button.save"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<form class="common-form" id="regForm">
|
||||
<section class="content-section">
|
||||
<input type="hidden" name="srchExtrlNm" value="${resultMap.srchData.srchExtrlNm }" />
|
||||
<input type="hidden" name="srchExtrlSystem" value="${resultMap.srchData.srchExtrlSystem }" />
|
||||
<input type="hidden" name="pageUnit" value="${resultMap.srchData.pageUnit }" />
|
||||
<input type="hidden" name="pageIndex" value="${resultMap.srchData.pageIndex }" />
|
||||
<input type="hidden" name="extrlInnb" value="${resultMap.extLink.extrlInnb }" />
|
||||
<input type="hidden" name="pageDv" value="" />
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 15%;">
|
||||
<col style="width: 35%;">
|
||||
<col style="width: 15%;">
|
||||
<col style="width: 35%;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>외부연동 명<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text xl" type="text" name="extrlNm" value="${resultMap.extLink.extrlNm }" title="외부연동명" maxlength="48"/>
|
||||
</div>
|
||||
</td>
|
||||
<th>연동 시스템<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select class="md" id="extrlSystem" name="extrlSystem" title="외부연동시스템" >
|
||||
<c:forEach var="extLinkSystemList" items="${ resultMap.extLinkSystemList }" varStatus="">
|
||||
<option value="${ extLinkSystemList.extlinkSystemCd }" ${f:setSelected(extLinkSystemList.extlinkSystemCd, resultMap.extLink.extrlSystem)}> ${ extLinkSystemList.extlinkSystemNm }</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>외부연동 기능</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="b-checkbox-container">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" id="extrlFunctionLogin" name="extrlFunctionLogin" ${f:setChecked(resultMap.extLink.extrlFunctionLogin, 'Y')} value="Y">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">가입 및 로그인</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" id="extrlFunctionBuy" name="extrlFunctionBuy" ${f:setChecked(resultMap.extLink.extrlFunctionBuy, 'Y')} value="Y">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">구매</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Client ID<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text xl" type="text" name="extrlClientId" value="${resultMap.extLink.extrlClientId }" title="clientId" maxlength="150"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Cleint Secret<span class="red-7">*</span></th>
|
||||
<td colspan="2">
|
||||
<div class="td-inner">
|
||||
<textarea class="textarea" name="extrlClientSecret" title="secret" rows="6" maxlength="300"><c:out value="${resultMap.extLink.extrlClientSecret }"/></textarea>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Cleint Pay Secret Key</th>
|
||||
<td colspan="2">
|
||||
<div class="td-inner">
|
||||
<textarea class="textarea" name="extrlClientSecretKey" title="secretKey" rows="6" maxlength="300"><c:out value="${resultMap.extLink.extrlClientSecretKey }"/></textarea>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form id="backUpData" method="post" >
|
||||
<input type="hidden" name="srchExtrlNm" value="${resultMap.srchData.srchExtrlNm }" />
|
||||
<input type="hidden" name="srchExtrlSystem" value="${resultMap.srchData.srchExtrlSystem }" />
|
||||
<input type="hidden" name="pageUnit" value="${resultMap.srchData.pageUnit }" />
|
||||
<input type="hidden" name="pageIndex" value="${resultMap.srchData.pageIndex }" />
|
||||
<input type="hidden" name="extrlInnb" value="${resultMap.extLink.extrlInnb }" />
|
||||
<input type="hidden" name="pageDv" value="" />
|
||||
</form>
|
||||
</main>
|
||||
</body>
|
||||
<script>
|
||||
/* ********************************************************
|
||||
* 외부연동 수정
|
||||
******************************************************** */
|
||||
const fn_update_extlink = function() {
|
||||
|
||||
if(!confirm('외부연동을 <spring:message code="confirm.common.update"/>')) return;
|
||||
|
||||
let params = $('#regForm').serialize();
|
||||
|
||||
$.ajax({
|
||||
type : 'post',
|
||||
url : '<c:url value="/admin/store/extlink/updateExtLinkUpdt"/>',
|
||||
data : params,
|
||||
success : function (result) {
|
||||
let data = JSON.parse(result.resBody.result);
|
||||
if (data.result === 'fail') {
|
||||
alert('<spring:message code="fail.common.update"/>');
|
||||
return;
|
||||
}
|
||||
if (data.result === "success") {
|
||||
alert('<spring:message code="success.common.update"/>');
|
||||
$('#backUpData').find('[name=pageDv]').val('I');
|
||||
$('#backUpData').attr('action', '<c:url value="/admin/store/extlink/selectExtLinkUpdtForm"/>');
|
||||
$('#backUpData').submit();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
</html>
|
||||
539
src/main/webapp/WEB-INF/views/admin/store/mbrgrad/maMbrGradC.jsp
Normal file
539
src/main/webapp/WEB-INF/views/admin/store/mbrgrad/maMbrGradC.jsp
Normal file
@@ -0,0 +1,539 @@
|
||||
<%@ 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 : maMbrGradC.jsp
|
||||
Description : 회원 등급 등록 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
since : 2023.12.22 최범식 최초 생성
|
||||
--%>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
</head>
|
||||
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
||||
fn_init();
|
||||
});
|
||||
|
||||
/* ********************************************************
|
||||
* 숫자만 입력 / 콤마찌긱
|
||||
******************************************************** */
|
||||
const fn_set_comma = function(_target) {
|
||||
|
||||
let str = _target.value;
|
||||
$(_target).val(str.replace(/[^0-9]/g,'').replace(/\B(?=(\d{3})+(?!\d))/g, ','));
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* file button show / file infor hide
|
||||
******************************************************** */
|
||||
const fn_delete_imgFile = function(_arg) {
|
||||
$('#divInfor-' + _arg).hide();
|
||||
$('#f-' + _arg).val('');
|
||||
$('#divFile-' + _arg).show();
|
||||
$('#divInfor-' + _arg).find('.filePh').attr('download', '');
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 파일 이름 가져오기
|
||||
******************************************************** */
|
||||
const fn_set_fileName = function(_target, _arg, event) {
|
||||
|
||||
let tmpPath = URL.createObjectURL(event.target.files[0]);
|
||||
let fileName = _target.files[0].name;
|
||||
let fileSize = '( ' + Math.round(_target.files[0].size / 1024) + ' KB )';
|
||||
|
||||
$(_target).closest('tr').find('.filePh').attr('href', tmpPath);
|
||||
$(_target).closest('tr').find('.fileNm').text(fileName);
|
||||
$(_target).closest('tr').find('.fileSz').text(fileSize);
|
||||
|
||||
$('#divInfor-' + _arg).show();
|
||||
$('#divFile-' + _arg).hide();
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 회원 등급 화면 초기 세팅
|
||||
******************************************************** */
|
||||
const fn_init = function() {
|
||||
|
||||
$('[name=rlSetleAmtArr]').prop('disabled', true);
|
||||
$('[name=purchsCntArr]').prop('disabled', true);
|
||||
$('#calcCndD1').prop('checked', true);
|
||||
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 등급 설정 추가
|
||||
******************************************************** */
|
||||
const fn_add_emptyBox = function() {
|
||||
|
||||
let count = $('#tableSorting').children('tr').length + 1;
|
||||
|
||||
let trClone = '<tr>'
|
||||
+ '<td>'
|
||||
+ ' <div>'
|
||||
+ ' <label class="b-checkbox checkbox is-medium center">'
|
||||
+ ' <input type="checkbox" name="gradChkbox" />'
|
||||
+ ' <span class="check"></span>'
|
||||
+ ' </label>'
|
||||
+ ' </div>'
|
||||
+ ' </td>'
|
||||
+ ' <td>'
|
||||
+ ' <div>'
|
||||
+ ' <input class="input-text left mm" type="text" name="gradNmArr" title="등급명" value="" placeholder="등급명" maxlength="40"/>'
|
||||
+ ' </div>'
|
||||
+ ' </td>'
|
||||
+ ' <td>'
|
||||
+ ' <div>'
|
||||
+ ' <div class="select-box">'
|
||||
+ ' <select name="gradMdatCndCdArr" title="조건">'
|
||||
+ ' <c:forEach var="gradMdatCnd" items="${resultMap.codeList[0].cgn006}" varStatus="status">'
|
||||
+ ' <option value="${gradMdatCnd.cd}"> ${gradMdatCnd.cdNm}</option>'
|
||||
+ ' </c:forEach>'
|
||||
+ ' </select>'
|
||||
+ ' </div>'
|
||||
+ ' </div>'
|
||||
+ ' </td>'
|
||||
+ ' <td>'
|
||||
+ ' <div class="td-inner">'
|
||||
+ ' <input class="input-text number right mm" type="text" name="purchsCntArr" title="구매건수" value="0" disabled placeholder="0" onkeyup="fn_set_comma(this);" maxlength="20"/>건'
|
||||
+ ' </div>'
|
||||
+ ' </td>'
|
||||
+ ' <td>'
|
||||
+ ' <div class="td-inner">'
|
||||
+ ' <input class="input-text number right mm" type="text" name="rlSetleAmtArr" title="실 결제금액" value="0" disabled placeholder="0" onkeyup="fn_set_comma(this);" maxlength="12"/>원'
|
||||
+ ' </div>'
|
||||
+ ' </td>'
|
||||
+ ' <td>'
|
||||
+ ' <div class="draggable-icon-container">'
|
||||
+ ' <i class="icon icon_draggable"></i>'
|
||||
+ ' <span class="visually-hidden">순서 바꾸기</span>'
|
||||
+ ' </div>'
|
||||
+ ' </td>'
|
||||
+ ' <td>'
|
||||
+ ' <div class="manage-btn-container fileInfor" id="divInfor-' + count + '" style="display: none;" >'
|
||||
+ ' <ul class="file-list">'
|
||||
+ ' <li>'
|
||||
+ ' <a href="" class="file-list__item filePh" download>'
|
||||
+ ' <i class="icon icon_file-list mr-2"></i>'
|
||||
+ ' <span class="file-list__item-title fileNm"></span>'
|
||||
+ ' <span class="file-list__item-size fileSz"></span>'
|
||||
+ ' </a>'
|
||||
+ ' <button type="button" class="file-list__delete" onclick="fn_delete_imgFile(\'' + count + '\');">'
|
||||
+ ' <span class="visually-hidden">파일 삭제</span>'
|
||||
+ ' </button>'
|
||||
+ ' </li>'
|
||||
+ ' </ul>'
|
||||
+ ' </div>'
|
||||
+ ' <div class="manage-btn-container" id="divFile-' + count + '">'
|
||||
+ ' <div class="input-file">'
|
||||
+ ' <spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.extensions.images')" var="acceptFileExtensions" />'
|
||||
+ ' <input type="hidden" name="mbrInnbArr" value="' + count + '" />'
|
||||
+ ' <input type="file" id="f-' + count + '" name="files" title="아이콘파일" accept="<c:out value="${ acceptFileExtensions }"/>" onchange="fn_set_fileName(this, \'' + count + '\', event);">'
|
||||
+ ' <label for="f-' + count + '">파일선택</label>'
|
||||
+ ' </div>'
|
||||
+ ' </div>'
|
||||
+ ' </td>'
|
||||
+ '</tr>';
|
||||
|
||||
$('#noData').hide();
|
||||
$('#tableSorting').append(trClone);
|
||||
//행 추가 후, tableDnd 업데이트
|
||||
$('#tableUpdate').tableDnDUpdate();
|
||||
fn_add_emptyBox_after();
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* niceSelect 설정
|
||||
******************************************************** */
|
||||
const fn_add_emptyBox_after = function() {
|
||||
if($('#purchsCntAt').is(':checked')){
|
||||
$('[name=purchsCntArr]').prop('disabled', false);
|
||||
}else{
|
||||
$('[name=purchsCntArr]').prop('disabled', true);
|
||||
}
|
||||
if($('#rlSetleAmtAt').is(':checked')){
|
||||
$('[name=rlSetleAmtArr]').prop('disabled', false);
|
||||
}else{
|
||||
$('[name=rlSetleAmtArr]').prop('disabled', true);
|
||||
}
|
||||
|
||||
$('[name=gradMdatCndCdArr]').niceSelect();
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 회원등급 선정조건에 따른 input event
|
||||
******************************************************** */
|
||||
const fn_mbr_grad_event = (elelment) => {
|
||||
|
||||
if(elelment.checked){
|
||||
if(elelment.getAttribute('id') == 'purchsCntAt'){
|
||||
$('[name=purchsCntArr]').prop('disabled', false);
|
||||
}
|
||||
else{
|
||||
$('[name=rlSetleAmtArr]').prop('disabled', false);
|
||||
}
|
||||
}
|
||||
else{
|
||||
if(elelment.getAttribute('id') == 'purchsCntAt') {
|
||||
$('[name=purchsCntArr]').prop('disabled', true);
|
||||
}
|
||||
else{
|
||||
$('[name=rlSetleAmtArr]').prop('disabled', true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 등급 설정 폼 삭제
|
||||
******************************************************** */
|
||||
const fn_remove_box = function() {
|
||||
|
||||
const target = $('[name=gradChkbox]:checked');
|
||||
if (target.length === 0) {
|
||||
alert('항목을 선택해 주세요.');
|
||||
} else {
|
||||
target.each(function() {
|
||||
$(this).parents('tr').remove();
|
||||
});
|
||||
}
|
||||
|
||||
$('#gradAll').prop('checked', false);
|
||||
if ($('[name=gradChkbox]').length === 0) {
|
||||
$('#noData').show();
|
||||
}
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 회원 등급 목록 이동
|
||||
******************************************************** */
|
||||
const fn_goto_list = function() {
|
||||
|
||||
$('#backUpData').attr('action', '<c:url value="/admin/store/mbrgrad/selectMbrGradListInqireForm"/>');
|
||||
$('#backUpData').submit();
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<body>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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 type="button" class="btn outline" onclick="fn_goto_list()"><spring:message code="button.catalog"/></button>
|
||||
<button type="button" class="btn primary" onclick="fn_regist_mbrgrad();"><spring:message code="button.save"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<section class="content-section">
|
||||
<spring:eval expression="@environment.getProperty('spring.servlet.multipart.max-file-size')" var="maxFileSize" />
|
||||
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.extensions.images')" var="acceptFileExtensions" />
|
||||
<form class="common-form" id="regForm" enctype="multipart/form-data">
|
||||
<input type="hidden" name="srchMbrGradNm" value="${resultMap.srchList[0].srchMbrGradNm }" />
|
||||
<input type="hidden" name="srchCalcCndDvCds" value="${resultMap.srchList[0].srchCalcCndDvCds }" />
|
||||
<input type="hidden" name="pageUnit" value="${resultMap.srchList[0].pageUnit }" />
|
||||
<input type="hidden" name="pageIndex" value="${resultMap.srchList[0].pageIndex }" />
|
||||
<input type="hidden" name="pageDv" value="" />
|
||||
<input type="hidden" name="useAt" value="Y" />
|
||||
<input type="hidden" name="trCnt" value="" />
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 21%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 21%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 21%;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>회원등급 그룹명<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text xl" type="text" name="mbrGradGroupNm" title="회원등급명" maxlength="48"/>
|
||||
</div>
|
||||
</td>
|
||||
<th>선정 조건<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="b-checkbox-container">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" id="purchsCntAt" name="purchsCntAt" value="Y" onclick="fn_mbr_grad_event(this)">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">구매건수</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" id="rlSetleAmtAt" name="rlSetleAmtAt" value="Y" onclick="fn_mbr_grad_event(this)">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">실 결제금액</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<th>쇼핑몰<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select title="쇼핑몰" name="sopmalCd" id="sopmalCd">
|
||||
<option value = ''>쇼핑몰 선택</option>
|
||||
<c:if test = "${not empty resultMap.srchList[0].sopmalList}">
|
||||
<c:forEach var="sopmal" items="${resultMap.srchList[0].sopmalList}">
|
||||
<option value="${sopmal.sopmalCd}">${sopmal.sopmalNm}</option>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<h3 class="content-section__inner-title">자동산정 설정</h3>
|
||||
<div class="table-wrapper">
|
||||
<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>산정기간<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
최근
|
||||
<div class="select-box">
|
||||
<select title="산정기간" name="calcPdMtCnt" id="calcPdMtCnt">
|
||||
<c:forEach var="calcPdMt" items="${resultMap.codeList[0].cgn005}" varStatus="status">
|
||||
<option value="${calcPdMt.cd}"> ${calcPdMt.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<th>등급 조정(정산)일<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
등급 기준 월
|
||||
<div class="select-box">
|
||||
<select title="등급 조정 월" name="gradMdatStdrMt" id="gradMdatStdrMt">
|
||||
<c:forEach var="mt" items="${resultMap.codeList[0].mtArr}" varStatus="status">
|
||||
<option value="${fn:trim(mt.cd)}">${mt.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select title="등급 조정 일" name="gradMdatStdrDe" id="gradMdatStdrDe">
|
||||
<c:forEach var="dt" items="${resultMap.codeList[0].dtArr}" varStatus="status">
|
||||
<option value="${dt.cd}">${dt.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>등급 조정 주기<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select title="등급 조정 주기" name="gradMdatCycleMtCnt" id="gradMdatCycleMtCnt">
|
||||
<c:forEach var="gradMdatCycle" items="${resultMap.codeList[0].cgn005}" varStatus="status">
|
||||
<option value="${gradMdatCycle.cd}"> ${gradMdatCycle.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<th>등급 유지 보장 기간<span class="red-7">*</span></th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select title="등급 유지 보장 기간" name="gradMntncPdMtCnt" id="gradMntncPdMtCnt">
|
||||
<c:forEach var="gradMntncPdMt" items="${resultMap.codeList[0].cgn005}" varStatus="status">
|
||||
<option value="${gradMntncPdMt.cd}"> ${gradMntncPdMt.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="page-title__btn-container">
|
||||
<button type="button" class="btn xsm dark" onclick="fn_add_emptyBox();">추가</button>
|
||||
<button type="button" class="btn xsm dark" onclick="fn_remove_box();">삭제</button>
|
||||
</div>
|
||||
<h3 class="content-section__inner-title">등급 설정</h3>
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical draggable" id="tableUpdate">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 60px;">
|
||||
<col>
|
||||
<col style="width: 18%;">
|
||||
<col style="width: 18%;">
|
||||
<col style="width: 18%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 16%;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<label class="b-checkbox checkbox is-medium check-all">
|
||||
<input type="checkbox" id="gradAll" value="">
|
||||
<span class="check"></span>
|
||||
</label>
|
||||
</th>
|
||||
<th>등급명<span class="red-7">*</span></th>
|
||||
<th>조건<span class="red-7">*</span></th>
|
||||
<th>구매건수</th>
|
||||
<th>실 결제금액</th>
|
||||
<th>순서</th>
|
||||
<th>등급아이콘</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="tableSorting">
|
||||
<tr id="noData">
|
||||
<td colspan="8" class="row-no-data">등급 설정 정보를 입력해 주세요.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form id="backUpData" method="post" >
|
||||
<input type="hidden" name="srchMbrGradNm" value="${resultMap.srchList[0].srchMbrGradNm }" />
|
||||
<input type="hidden" name="srchCalcCndDvCds" value="${resultMap.srchList[0].srchCalcCndDvCds }" />
|
||||
<input type="hidden" name="pageUnit" value="${resultMap.srchList[0].pageUnit }" />
|
||||
<input type="hidden" name="pageIndex" value="${resultMap.srchList[0].pageIndex }" />
|
||||
<input type="hidden" name="mbrGradGroupInnb" value="" />
|
||||
<input type="hidden" name="pageDv" value="" />
|
||||
</form>
|
||||
</main>
|
||||
</body>
|
||||
<script>
|
||||
/* ********************************************************
|
||||
* 회원 등급 등록
|
||||
******************************************************** */
|
||||
const fn_regist_mbrgrad = function() {
|
||||
|
||||
if(!confirm('회원등급을 <spring:message code="confirm.common.insert"/>')) return;
|
||||
|
||||
let trCnt = $('#tableSorting').find('tr').length - 1;
|
||||
$('[name=trCnt]').val(trCnt);
|
||||
|
||||
const f = new FormData();
|
||||
$('#regForm').serializeArray().forEach(function(item) {
|
||||
f.append(item.name, item.value);
|
||||
});
|
||||
|
||||
// let files = $('[name=files]');
|
||||
// for (let i = 0; i < files.length; i++) {
|
||||
// f.append('file' + i, files[i].files[0]);
|
||||
// }
|
||||
let fileNumber = [];
|
||||
let newFileNumber = '';
|
||||
$('[name=mbrInnbArr]').each(function(idx, item){
|
||||
fileNumber[idx] = $(this).val();
|
||||
});
|
||||
|
||||
let files = $('[name=files]');
|
||||
for (let i = 0; i < files.length; i++) {
|
||||
if (files[i].files[0] !== undefined) {
|
||||
f.append(fileNumber[i], files[i].files[0]);
|
||||
newFileNumber += '$' + fileNumber[i];
|
||||
}
|
||||
}
|
||||
newFileNumber = newFileNumber.substring(1);
|
||||
f.append('filesInnbs', newFileNumber);
|
||||
|
||||
|
||||
let gradMdatCndCdArr = ''
|
||||
|
||||
let purchsCnts = '';
|
||||
if ($('#purchsCntAt').is(':checked')) {
|
||||
$('[name=purchsCntArr]').each(function(){
|
||||
if ($(this).val() == '') return;
|
||||
purchsCnts += '$' + $(this).val();
|
||||
});
|
||||
purchsCnts = purchsCnts.substring(1);
|
||||
f.append('purchsCnts', purchsCnts);
|
||||
}
|
||||
|
||||
let rlSetleAmts = '';
|
||||
if ($('#rlSetleAmtAt').is(':checked')) {
|
||||
$('[name=rlSetleAmtArr]').each(function(){
|
||||
if ($(this).val() == '') return;
|
||||
rlSetleAmts += '$' + $(this).val();
|
||||
});
|
||||
rlSetleAmts = rlSetleAmts.substring(1);
|
||||
f.append('rlSetleAmts', rlSetleAmts);
|
||||
}
|
||||
|
||||
let tempArr = '';
|
||||
if($('#purchsCntAt').is(':checked')){
|
||||
tempArr += $('#purchsCntAt').val();
|
||||
}
|
||||
if($('#rlSetleAmtAt').is(':checked')){
|
||||
tempArr += $('#rlSetleAmtAt').val();
|
||||
}
|
||||
f.append('tempArr', tempArr);
|
||||
|
||||
$.ajax({
|
||||
type : 'post',
|
||||
enctype : 'multipart/form-data',
|
||||
url : '<c:url value="/admin/store/mbrgrad/insertMbrGradRegist"/>',
|
||||
data : f,
|
||||
contentType : false,
|
||||
processData : false,
|
||||
success : function (result) {
|
||||
if (result === 'fileUploadFail') {
|
||||
alert('파일업로드에 문제가 발생했습니다. 다시 시도해 주세요.');
|
||||
return;
|
||||
}
|
||||
let data = JSON.parse(result.resBody.result);
|
||||
if (data.result === 'fail') {
|
||||
alert('<spring:message code="fail.common.insert"/>');
|
||||
return;
|
||||
}
|
||||
|
||||
alert('<spring:message code="success.common.insert"/>');
|
||||
$('#backUpData').find('[name=pageDv]').val('I');
|
||||
$('#backUpData').find('[name=mbrGradGroupInnb]').val(data.mbrGradGroupInnb);
|
||||
$('#backUpData').attr('action', '<c:url value="/admin/store/mbrgrad/selectMbrGradUpdtForm"/>');
|
||||
$('#backUpData').submit();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,185 @@
|
||||
<%@ 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 : maMbrGradListInqireR.jsp
|
||||
Description : 회원 등급 목록 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023-12-20 김혜지 최초 생성(퍼블리싱 적용)
|
||||
--%>
|
||||
<!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 --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
let pageIndex = '<c:out value="${ resultMap.paramVO.pageIndex }"/>';
|
||||
let pageUnit = '<c:out value="${ resultMap.paramVO.pageUnit }"/>';
|
||||
let pageDv = '<c:out value="${ resultMap.paramVO.pageDv }"/>';
|
||||
|
||||
if (pageDv == '') {
|
||||
fn_select_mbrgrad_list(pageIndex, pageUnit);
|
||||
} else {
|
||||
fn_select_mbrgrad_list('1', '10');
|
||||
}
|
||||
|
||||
$('[name=srchMbrGradNm]').on('keydown', function(event) {
|
||||
if (event.keyCode === 13) {
|
||||
event.preventDefault();
|
||||
fn_select_mbrgrad_list(1);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
/* ********************************************************
|
||||
* 회원등급 목록조회
|
||||
******************************************************** */
|
||||
const fn_select_mbrgrad_list = function(pageIndex, pageUnit) {
|
||||
|
||||
if (pageIndex == undefined || pageUnit == '') {
|
||||
$('#pageIndex').val('1');
|
||||
} else {
|
||||
$('#pageIndex').val(pageIndex);
|
||||
}
|
||||
|
||||
let params = $('#srchForm').serialize();
|
||||
if (pageUnit != undefined || pageUnit == '') {
|
||||
|
||||
params += '&pageUnit=' + pageUnit;
|
||||
} else {
|
||||
params += '&pageUnit=' + $('#pageUnit').val();
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type : 'post',
|
||||
url : '<c:url value="/admin/store/mbrgrad/selectMbrGradListInqire"/>',
|
||||
data : params,
|
||||
success : function(data) {
|
||||
$('#pageDiv').html(data);
|
||||
$('#pageUnit').niceSelect();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**********************************************
|
||||
* 회원등급 검색 초기화
|
||||
***********************************************/
|
||||
const fn_clear_input = function() {
|
||||
$('[name=srchMbrGradNm]').val('');
|
||||
$('#srchPurchsCntAt').prop('checked', false);
|
||||
$('#srchRlSetleAmtAt').prop('checked', false);
|
||||
};
|
||||
|
||||
/**********************************************
|
||||
* 회원등급 수정 화면 이동
|
||||
***********************************************/
|
||||
const fn_move_mbrGradDetail = function(_mbrGradGroupInnb,sopmalCd) {
|
||||
$('#mbrGradnnb').val(_mbrGradGroupInnb);
|
||||
$('#sopmalCd').val(sopmalCd);
|
||||
$('#srchForm').attr('action', '<c:url value="/admin/store/mbrgrad/selectMbrGradUpdtForm"/>');
|
||||
$('#srchForm').attr('method', 'post');
|
||||
$('#srchForm').submit();
|
||||
};
|
||||
|
||||
/**********************************************
|
||||
* 회원등급 엑셀 다운로드
|
||||
***********************************************/
|
||||
const fn_down_excelFile = function() {
|
||||
$('#srchForm').attr('action', '<c:url value="/admin/store/mbrgrad/excelFileDownload"/>');
|
||||
$('#srchForm').attr('method', 'post');
|
||||
$('#srchForm').submit();
|
||||
};
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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="srchForm" >
|
||||
<input type="hidden" id="mbrGradnnb" name="mbrGradGroupInnb" />
|
||||
<input type="hidden" id="sopmalCd" name="sopmalCd" />
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value="${resultMap.paramVO.pageIndex}"/>"/>
|
||||
<%-- 검색 섹션 START --%>
|
||||
<section class="content-section" >
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>회원등급 목록</caption>
|
||||
<colgroup>
|
||||
<col style="width: 16%;">
|
||||
<col style="width: 34%;">
|
||||
<col style="width: 16%;">
|
||||
<col style="width: 34%;">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>회원등급 그룹명</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text full" type="text" name="srchMbrGradNm" title="회원등급명" value="<c:out value="${resultMap.paramVO.srchMbrGradNm}"/>" />
|
||||
</div>
|
||||
</td>
|
||||
<th>쇼핑몰</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select title="쇼핑몰" name="srchSopmalCd" id="srchSopmalCd">
|
||||
<option value=''>쇼핑몰 선택</option>
|
||||
<c:if test="${not empty resultMap.sopmalList}">
|
||||
<c:forEach var="sopmal" items="${resultMap.sopmalList}">
|
||||
<option value="${sopmal.sopmalCd}" <c:if test = "${resultMap.paramVO.srchSopmalCd eq sopmal.sopmalCd}">selected</c:if>>${sopmal.sopmalNm}</option>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
</select>
|
||||
</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_form('srchForm');"><spring:message code="button.init"/></button>
|
||||
<button type="button" class="btn primary" onclick="fn_select_mbrgrad_list('1');"><spring:message code="button.search"/></button>
|
||||
</div>
|
||||
<div class="right"></div>
|
||||
</div>
|
||||
</section>
|
||||
<%-- 검색 섹션 END --%>
|
||||
<%-- 리스트 출력 섹션 START --%>
|
||||
<div id="pageDiv"></div>
|
||||
</form>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,119 @@
|
||||
<%@ 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 : maMbrGradListInqireR.jsp
|
||||
Description : 회원 등급 목록 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023-12-20 김혜지 최초 생성(퍼블리싱 적용)
|
||||
--%>
|
||||
<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_mbrgrad_list('1')">
|
||||
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
|
||||
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paramVO.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">
|
||||
<button type="button" class="btn outline sm" onclick="fn_down_excelFile();">
|
||||
<i class="icon icon_excel"></i>
|
||||
<spring:message code="button.excelDownload"/>
|
||||
</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: 16%;">
|
||||
<col style="width: 16%;">
|
||||
<col style="width: 8%;">
|
||||
<col style="width: 11%;">
|
||||
<col style="width: 8%;">
|
||||
<col style="width: 7%">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>번호</th>
|
||||
<th>회원등급 그룹명</th>
|
||||
<th>쇼핑몰</th>
|
||||
<th>산정기간</th>
|
||||
<th>등급조정주기</th>
|
||||
<th>등록일자</th>
|
||||
<th>관리</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<%-- 리스트 BODY START --%>
|
||||
<tbody>
|
||||
<c:choose>
|
||||
<c:when test="${ not empty resultMap.resultList }">
|
||||
<c:forEach items="${resultMap.resultList }" var="mbrGradList" varStatus="status">
|
||||
<tr>
|
||||
<td>
|
||||
<c:out value="${resultMap.paginationInfo.totalRecordCount - mbrGradList.rnum + 1 }" />
|
||||
</td>
|
||||
<td class="left">
|
||||
<c:out value="${mbrGradList.mbrGradGroupNm }"/>
|
||||
</td>
|
||||
<td class="left">
|
||||
<c:out value="${mbrGradList.sopmalNm}"/>
|
||||
</td>
|
||||
<td>
|
||||
<c:out value="${mbrGradList.calcPdMtCntNm }"/>
|
||||
</td>
|
||||
<td>
|
||||
<c:out value="${mbrGradList.gradMdatCycleMtCntNm }"/>
|
||||
</td>
|
||||
<td>
|
||||
<c:out value="${mbrGradList.registDt}"/>
|
||||
</td>
|
||||
<td>
|
||||
<div class="manage-btn-container re">
|
||||
<button type="button" class="btn xsm primary outline" onclick="fn_move_mbrGradDetail('${mbrGradList.mbrGradGroupInnb }','<c:out value="${mbrGradList.sopmalCd}"/>');"><spring:message code="button.update"/></button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<tr>
|
||||
<td class="row-no-data" colspan="8">조회된 데이터가 없습니다.</td>
|
||||
</tr>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</table>
|
||||
</div>
|
||||
<%-- 리스트 BODY END --%>
|
||||
</section>
|
||||
<div class="pagination__container">
|
||||
<ui:pagination paginationInfo="${ resultMap.paginationInfo }" type="image" jsFunction="fn_select_mbrgrad_list" />
|
||||
</div>
|
||||
735
src/main/webapp/WEB-INF/views/admin/store/mbrgrad/maMbrGradU.jsp
Normal file
735
src/main/webapp/WEB-INF/views/admin/store/mbrgrad/maMbrGradU.jsp
Normal file
@@ -0,0 +1,735 @@
|
||||
<%@ 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 : maMbrGradU.jsp
|
||||
Description : 회원 등급 등록 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
since : 2023.12.19 김세엽 최초 생성
|
||||
--%>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
<script src="<c:url value='/js/fileupload_comm.js'/>"></script>
|
||||
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.extensions.images')" var="acceptFileExtensions"/>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
fn_init();
|
||||
/*전체 체크박스 클릭시 체크박스 전체 체크*/
|
||||
$("#gradAll").on("click",function(){
|
||||
if($(this).is(":checked")){
|
||||
$("input[name='gradChkbox']").each(function () {
|
||||
$(this).prop("checked", true);
|
||||
});
|
||||
}else{
|
||||
$("input[name='gradChkbox']").each(function () {
|
||||
$(this).prop("checked", false);
|
||||
});
|
||||
}
|
||||
});
|
||||
/* 체크박스 클릭 시 전체 체크박스 체크 해제 */
|
||||
$(document).on("click", "input[name='gradChkbox']", function() {
|
||||
// 현재 체크된 상태를 기준으로 전체 체크 여부 확인
|
||||
let allChecked = $("input[name='gradChkbox']").length === $("input[name='gradChkbox']:checked").length;
|
||||
|
||||
// 만약 모든 체크박스가 체크되지 않았으면, 전체 선택 체크박스 해제
|
||||
if (!allChecked) {
|
||||
$("#gradAll").prop("checked", false);
|
||||
} else {
|
||||
$("#gradAll").prop("checked", true);
|
||||
}
|
||||
});
|
||||
|
||||
$(".file-list__item-title").find("img").each(function(){
|
||||
$(this).css({
|
||||
width : "60px",
|
||||
height : "60px"
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
/* ********************************************************
|
||||
* 숫자만 입력 / 콤마찌긱
|
||||
******************************************************** */
|
||||
const fn_set_comma = function (_target) {
|
||||
let str = _target.value;
|
||||
$(_target).val(str.replace(/[^0-9]/g, '').replace(/\B(?=(\d{3})+(?!\d))/g, ','));
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 회원 등급 화면 초기 세팅
|
||||
******************************************************** */
|
||||
const fn_init = function () {
|
||||
$('#noData').hide();
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 등급 설정 추가
|
||||
* cd: 공통코드cd
|
||||
******************************************************** */
|
||||
const fn_add_emptyBox = function () {
|
||||
let count = $('#tableSorting').children('tr').length + 1; // tr 개수 +1
|
||||
const index = count-1;
|
||||
const mbrGradCnCdNm = $("#mbrGradCndCdNm").val(); // 회원 등급 코드
|
||||
const acceptFileExtensions = '${acceptFileExtensions}';
|
||||
// 마지막 행을 복제하여 추가
|
||||
let newRow = ` <tr class="mbrGradTr">
|
||||
<input type = "hidden" class= "mbrGradInnb" name = "mbrGradInnbArr" value="x"/>
|
||||
<input type = "hidden" class= "mbrGradCnt"/>
|
||||
<td>
|
||||
<div>
|
||||
<label class="b-checkbox checkbox is-medium center">
|
||||
<input type="checkbox" name="gradChkbox"/>
|
||||
<span class="check"></span>
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<input class="input-text full" type="text" name="mbrGradNmArr" title="등급명" value="" placeholder="등급명" maxlength="40"/>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
\${mbrGradCnCdNm}
|
||||
<input type = "hidden" name = "mbrGradCndCdArr" value = "02"/>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text number right mm" type="text" name="mbrGradAmtArr" title="실 결제금액" value="0" maxlength="10"/>원
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="manage-btn-container">
|
||||
<input type = "hidden" name = "filUploadAt" value = "0"/>
|
||||
<input type = "hidden" value = "x" name="mbrGradIconCoursArr" class="mbrGradIconCours"/>
|
||||
<div class="input-file">
|
||||
<input type="file" id="fileUpload-\${count}" name="files" title="대표이미지" accept="\${acceptFileExtensions}"
|
||||
onchange="fn_add_file_mbrGradNm(1,'fileUl\${count}',\${count})">
|
||||
<label for="fileUpload-\${count}">파일선택</label>
|
||||
</div>
|
||||
<ul class="file-list" id = "fileUl\${count}">
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
0(0)
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
-
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
-
|
||||
</div>
|
||||
</td>
|
||||
</tr>`;
|
||||
$('#tableSorting').append(newRow);
|
||||
//결제금액 이벤트 바인딩
|
||||
$("input[name='mbrGradAmtArr']").eq(index).on("input", function () {
|
||||
var input = $(this).val();
|
||||
$(this).val(input.replace(/[^0-9]/g, "").replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"));
|
||||
});
|
||||
};
|
||||
|
||||
/* ********************************************************
|
||||
* 등급 설정 삭제
|
||||
******************************************************** */
|
||||
const fn_remove_box = function () {
|
||||
const target = $('[name=gradChkbox]:checked');
|
||||
if (target.length === 0) {
|
||||
alert('삭제할 회원등급을 선택해주세요.');
|
||||
} else {
|
||||
/*등급 설정 조건 상태 확인*/
|
||||
const nonRemoveArr = [];
|
||||
target.each(function () {
|
||||
const mbrGradNmArr = $(this).closest("tr").find("input[name='mbrGradNmArr']").val();
|
||||
if(mbrGradNmArr === ''){ //새로 추가한 등급 삭제시
|
||||
$(this).closest("tr").remove();
|
||||
}else{//기존 등급 삭제시
|
||||
const mbrGradCnt = parseInt($(this).closest("tr").find(".mbrGradCnt").val(),10);
|
||||
if(mbrGradCnt > 0) {
|
||||
nonRemoveArr.push(mbrGradCnt);
|
||||
}else{
|
||||
$(this).closest("tr").hide();
|
||||
$(this).closest("tr").find(".useAt").val("N");
|
||||
}
|
||||
}
|
||||
});
|
||||
if (nonRemoveArr.length > 0) {
|
||||
alert("이미 회원에게 지정된 등급을 제외한 나머지 등급이 삭제됩니다.")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*동적 요소로 인한 이벤트 바인딩*/
|
||||
$(document).on("click", "#deleteBtn", function () {
|
||||
fn_remove_box();
|
||||
});
|
||||
|
||||
//파일 삭제시 아이콘 컬럼값 삭제
|
||||
const fn_delete_file = (index) => {
|
||||
$(".mbrGradIconCours").eq(index).val("x");
|
||||
$("input[name='filUploadAt']").eq(index).val("0");
|
||||
$('.input-file').eq(index).show();
|
||||
}
|
||||
|
||||
//파일 삭제
|
||||
$(document).on("click",".fileDel", function () {
|
||||
const liId = $(this).closest("li").attr("id");
|
||||
const idx = $(this).closest("tr").index();
|
||||
const sopmalCd = '<c:out value="${resultMap.maMbrGradVO.sopmalCd}"/>';
|
||||
if (liId.indexOf('temp') == 0) { //임시등록파일은 화면에서 삭제
|
||||
$(this).closest("li").remove();
|
||||
fn_delete_file(idx);
|
||||
} else { //업로드된 파일은 서버삭제
|
||||
if (confirm("파일을 삭제하시겠습니까?")) {
|
||||
$(this).closest("li").remove();
|
||||
ajaxFileDelete('', liId, sopmalCd, 'MBRG', 1, fn_delete_file, idx);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
/* ********************************************************
|
||||
* 회원 등급 목록 이동
|
||||
******************************************************** */
|
||||
const fn_goto_list = function () {
|
||||
$('#backUpData').attr('action', '<c:url value="/admin/store/mbrgrad/selectMbrGradListInqireForm"/>');
|
||||
$('#backUpData').submit();
|
||||
}
|
||||
const fn_add_file_mbrGradNm = (mode, targetFilListId, index) => {
|
||||
let target = $(event.target);
|
||||
let inputContainer = target.closest('.manage-btn-container').find("input[name='filUploadAt']");
|
||||
inputContainer.val("1");
|
||||
|
||||
let files = event.target.files;
|
||||
let filesArr = Array.prototype.slice.call(files); //file객체 array추가
|
||||
let filesArrLen = filesArr.length;
|
||||
let filesTempArrSize = filesTempArr.length * 1;
|
||||
|
||||
if (mode === 1 && $(targetFilListId + ' li').length > 0) {
|
||||
alert("파일은 한개만 첨부할 수 있습니다.");
|
||||
return false;
|
||||
}
|
||||
|
||||
let templist = '';
|
||||
for (let i = 0; i < filesArrLen; i++) {
|
||||
filesTempArr.push(filesArr[i]); // 임시 배열에 저장
|
||||
let file = filesArr[i];
|
||||
let reader = new FileReader();
|
||||
|
||||
reader.onload = function (e) {
|
||||
templist = `<li id="temp\${index}" class="fileLi">
|
||||
<a class="file-list__item">
|
||||
<span class="file-list__item-title">
|
||||
<img src="\${e.target.result}"
|
||||
onerror="this.src='/admin/images/image_placeholder.png'; this.style.width='60px'; this.style.height='60px';"
|
||||
style="width: 60px; height: 60px; margin-right: 16px;"/>
|
||||
</span>
|
||||
</a>
|
||||
<a class="file-list__delete fileDel" style="cursor:pointer;">
|
||||
<span class="visually-hidden">파일 삭제</span>
|
||||
</a>
|
||||
</li>`;
|
||||
$("#" + targetFilListId).append(templist);
|
||||
};
|
||||
reader.readAsDataURL(file);
|
||||
//파일선택 영역 hide 처리
|
||||
target.closest('.manage-btn-container').find(".input-file").hide();
|
||||
}
|
||||
}
|
||||
|
||||
const fn_show_fileUpload = (length) => {
|
||||
$(".input-file").eq(length).show();
|
||||
$(".manage-btn-container").eq(length).find("input[name='filUploadAt']").val("0");
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 회원 등급 수정
|
||||
******************************************************** */
|
||||
const fn_update_mbrgrad = function () {
|
||||
|
||||
if (!confirm('회원등급을 <spring:message code="confirm.common.update"/>')) return;
|
||||
let submitAt = true;
|
||||
//등급 설정 조건 확인
|
||||
//이름 중복 체크
|
||||
let gradNmArr = [];
|
||||
let index;
|
||||
let isDuplicate = false;
|
||||
let isNull = false;
|
||||
|
||||
$("input[name='mbrGradNmArr']").each(function () {
|
||||
let value = $(this).val(); // 현재 input의 값을 가져옴
|
||||
if(value !== ''){
|
||||
if (gradNmArr.includes(value)) {
|
||||
isDuplicate = true; // 중복이 있는 경우 플래그를 설정
|
||||
index = $(this).index("input[name='mbrGradNmArr']");
|
||||
}
|
||||
}else{
|
||||
isNull = true;
|
||||
index = $(this).index("input[name='mbrGradNmArr']");
|
||||
}
|
||||
gradNmArr.push(value); // 배열에 값을 추가
|
||||
});
|
||||
|
||||
if (isDuplicate) {
|
||||
submitAt = false;
|
||||
alert("중복된 등급명이 있습니다."); // 사용자에게 중복 알림
|
||||
$("input[name='mbrGradNmArr']").eq(index).focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
let visibleRows = $(".mbrGradTr:visible");
|
||||
let visibleArr = [];
|
||||
|
||||
visibleRows.each(function() {
|
||||
visibleArr.push($(this).index(".mbrGradTr"));
|
||||
});
|
||||
|
||||
// 각 보이는 tr 요소를 순회합니다.
|
||||
let lastVal = null; // 마지막 값을 저장할 변수를 초기화합니다.
|
||||
|
||||
visibleRows.each(function(rowIndex) {
|
||||
// 현재 tr 내의 모든 input[name='mbrGradAmtArr'] 요소를 가져옵니다.
|
||||
let inputs = $(this).find("input[name='mbrGradAmtArr']");
|
||||
|
||||
inputs.each(function(inputIndex) {
|
||||
// 현재 input의 값이 비어있는 경우
|
||||
if ($(this).val() === '') {
|
||||
submitAt = false;
|
||||
alert("실 결제금액에 입력되지 않은 값이 있습니다");
|
||||
$(this).focus();
|
||||
return false; // inputs.each()의 반복을 중단
|
||||
}
|
||||
|
||||
let currentVal = parseInt($(this).val().replace(/,/g, ""), 10);
|
||||
|
||||
// 이전 값이 있는 경우 비교 시작
|
||||
if (lastVal !== null) {
|
||||
|
||||
// 이전 값과 현재 값을 비교
|
||||
if (currentVal === lastVal) {
|
||||
submitAt = false;
|
||||
alert("전 회원등급 실 결제금액에 같은 값이 있습니다");
|
||||
$(this).focus();
|
||||
return false; // inputs.each()의 반복을 중단
|
||||
} else if (currentVal < lastVal) {
|
||||
submitAt = false;
|
||||
alert("전 회원등급 실 결제금액이 더 큽니다.");
|
||||
$(this).focus();
|
||||
return false; // inputs.each()의 반복을 중단
|
||||
}
|
||||
}
|
||||
|
||||
// 현재 값을 'lastVal'로 업데이트
|
||||
lastVal = currentVal;
|
||||
});
|
||||
|
||||
// 각 tr에 대해 체크를 중단하도록 하는 반환값
|
||||
if (!submitAt) {
|
||||
return false; // visibleRows.each()의 반복을 중단
|
||||
}
|
||||
});
|
||||
|
||||
if (submitAt) {
|
||||
//회원 등급 수정
|
||||
const formData = new FormData();
|
||||
|
||||
$('#udpForm').serializeArray().forEach(function (item) {
|
||||
formData.append(item.name, item.value);
|
||||
});
|
||||
|
||||
// formData에서 배열 데이터를 가져옵니다.
|
||||
const updatedAmounts = formData.getAll("mbrGradAmtArr").map(function(value) {
|
||||
// 쉼표를 제거한 값을 반환합니다.
|
||||
return value.replaceAll(",", "");
|
||||
});
|
||||
|
||||
// 기존의 "mbrGradAmtArr" 필드를 삭제합니다.
|
||||
formData.delete("mbrGradAmtArr");
|
||||
|
||||
// 수정된 값들을 다시 formData에 추가합니다.
|
||||
updatedAmounts.forEach(function(newValue) {
|
||||
formData.append("mbrGradAmtArr", newValue);
|
||||
});
|
||||
|
||||
//파일 data 추출
|
||||
$.each(filesTempArr, function (i, file) {
|
||||
if (file.upload != 'disable') {
|
||||
formData.append('files', file);
|
||||
}
|
||||
});
|
||||
|
||||
//수정 ajax
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: '<c:url value="/admin/store/mbrgrad/updateMbrGradUpdt"/>',
|
||||
data: formData,
|
||||
processData: false,
|
||||
contentType: false,
|
||||
success: function (result) {
|
||||
alert('<spring:message code="success.common.save"/>');
|
||||
$('#backUpData').attr('action', '<c:url value="/admin/store/mbrgrad/selectMbrGradUpdtForm"/>');
|
||||
$('#backUpData').attr('method', 'post');
|
||||
$('#backUpData').submit();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<%@include file="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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 outline" onclick="fn_goto_list()"><spring:message code="button.catalog"/></button>
|
||||
<button class="btn primary" onclick="fn_update_mbrgrad();"><spring:message code="button.save"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<section class="content-section">
|
||||
<form class="common-form" id="udpForm" enctype="multipart/form-data">
|
||||
<input type="hidden" name="mbrGradGroupInnb" value="${resultMap.maMbrGradVO.mbrGradGroupInnb }" />
|
||||
<input type="hidden" name="srchMbrGradNm" value="${resultMap.maMbrGradVO.srchMbrGradNm }" />
|
||||
<input type="hidden" name="srchCalcCndDvCds" value="${resultMap.maMbrGradVO.srchCalcCndDvCds }" />
|
||||
<input type="hidden" name="pageUnit" value="${resultMap.maMbrGradVO.pageUnit }" />
|
||||
<input type="hidden" name="pageIndex" value="${resultMap.maMbrGradVO.pageIndex }" />
|
||||
<input type="hidden" name="sopmalCd" value="${resultMap.maMbrGradVO.sopmalCd }" />
|
||||
<input type="hidden" name="pageDv" value="" />
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>회원등급 수정</caption>
|
||||
<colgroup>
|
||||
<col style="width: 16%;">
|
||||
<col style="width: 34%;">
|
||||
<col style="width: 16%;">
|
||||
<col style="width: 34%;">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<%--회원등급 그룹 정보--%>
|
||||
<c:set var = "mbrGradGroupInfo" value = "${resultMap.mbrGradInfo.mbrGradInfo}"/>
|
||||
<tr>
|
||||
<th>회원등급 그룹명<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text xl" type="text" name="mbrGradGroupNm" title="회원등급명" value="${mbrGradGroupInfo.mbrGradGroupNm}" maxlength="40"/>
|
||||
</div>
|
||||
</td>
|
||||
<th>쇼핑몰</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<c:out value="${mbrGradGroupInfo.sopmalNm}"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<h3 class="content-section__inner-title">자동산정 설정</h3>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>자동산정 설정</caption>
|
||||
<colgroup>
|
||||
<col style="width: 16%;">
|
||||
<col style="width: 34%;">
|
||||
<col style="width: 16%;">
|
||||
<col style="width: 34%;">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>등급 조정 주기</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select title="등급 조정 주기" name="gradMdatCycleMtCnt"
|
||||
id="gradMdatCycleMtCnt">
|
||||
<c:forEach var="gradMdatCycle"
|
||||
items="${resultMap.mbrGradInfo.codeMap.mtCd}"
|
||||
varStatus="status">
|
||||
<option value="${gradMdatCycle.cd}" ${f:setSelected(mbrGradGroupInfo.gradMdatCycleMtCnt, gradMdatCycle.cd)}> ${gradMdatCycle.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
마다 자동 조정
|
||||
</div>
|
||||
</td>
|
||||
<th>산정기간</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
등급 조정일로 부터
|
||||
<div class="select-box">
|
||||
<select title="산정기간" name="calcPdMtCnt" id="calcPdMtCnt">
|
||||
<c:forEach var="calcPdMt" items="${resultMap.mbrGradInfo.codeMap.mtCd}" varStatus="status">
|
||||
<option value="${calcPdMt.cd}"
|
||||
<c:if test = "${calcPdMt.cd eq mbrGradGroupInfo.calcPdMtCnt}">
|
||||
selected
|
||||
</c:if>> ${calcPdMt.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
동안 의 실 결제금액으로 산정
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="form-control-container mb-8">
|
||||
<div class="left">
|
||||
<h3 class="content-section__inner-title">등급 설정</h3>
|
||||
</div>
|
||||
<div class="center">
|
||||
</div>
|
||||
<div class="right">
|
||||
<button type = "button" class="btn dark xsm" id = "deleteBtn">삭제</button>
|
||||
<button type = "button" class="btn primary outline xsm" onclick="fn_add_emptyBox();">추가</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical">
|
||||
<caption>등급 설정</caption>
|
||||
<colgroup>
|
||||
<col style="width: 8%;">
|
||||
<col style="width: 17%;">
|
||||
<col style="width: 10%;">
|
||||
<col style="width: auto;">
|
||||
<col style="width: 10%;">
|
||||
<col style="width: 10%;">
|
||||
<col style="width: 15%;">
|
||||
<col style="width: 15%;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<label class="b-checkbox checkbox is-medium check-all">
|
||||
<input type="checkbox" id="gradAll" >
|
||||
<span class="check"></span>
|
||||
</label>
|
||||
</th>
|
||||
<th>등급명<span class="red-7">*</span></th>
|
||||
<th>조건</th>
|
||||
<th>실 결제금액<span class="red-7">*</span></th>
|
||||
<th>등급아이콘<span class="red-7">*</span></th>
|
||||
<th>현재 통계</th>
|
||||
<th>생성일시</th>
|
||||
<th>최근수정일시</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="tableSorting">
|
||||
<c:choose>
|
||||
<c:when test = "${not empty resultMap.mbrGradInfo.gradStdrList}">
|
||||
<c:forEach var="gradStdr" items="${resultMap.mbrGradInfo.gradStdrList}" varStatus="status">
|
||||
<tr class="mbrGradTr">
|
||||
<input type = "hidden" class= "mbrGradInnb" name = "mbrGradInnbArr" value = "<c:out value = "${gradStdr.mbrGradInnb}"/>"/>
|
||||
<input type = "hidden" class= "mbrGradCnt" value = "<c:out value = "${gradStdr.mbrGradCnt}"/>"/>
|
||||
<input type = "hidden" class= "useAt" name = "useAtArr" value = "<c:out value = "${gradStdr.useAt}"/>"/>
|
||||
<td>
|
||||
<c:choose>
|
||||
<c:when test = "${status.index eq 0}">
|
||||
-
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<div>
|
||||
<label class="b-checkbox checkbox is-medium center">
|
||||
<input type="checkbox" name="gradChkbox" />
|
||||
<span class="check"></span>
|
||||
</label>
|
||||
</div>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<input class="input-text full" type="text" name="mbrGradNmArr" title="등급명" value="${gradStdr.mbrGradNm}" placeholder="등급명" maxlength="40"/>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<c:forEach var = "mbrGradCnd" items = "${resultMap.mbrGradInfo.codeMap.mbrGradCnd}">
|
||||
<c:if test = "${mbrGradCnd.cd eq gradStdr.mbrGradCndCd}">
|
||||
<c:out value="${mbrGradCnd.cdNm}"/>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
<input type = "hidden" name = "mbrGradCndCdArr" value = "<c:out value="${gradStdr.mbrGradCndCd}"/>"/>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text number right mm" type="text" name="mbrGradAmtArr" title="실 결제금액"
|
||||
value="<fmt:formatNumber value="${gradStdr.mbrGradAmt}" pattern="#,###" />" maxlength="10"/>원
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="manage-btn-container">
|
||||
<c:choose>
|
||||
<c:when test="${gradStdr.mbrGradIconCours eq 'x'}">
|
||||
<c:set var = "mbrGradIconCours" value = ""/>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:set var = "mbrGradIconCours" value = "${gradStdr.mbrGradIconCours}"/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<input type = "hidden" name = "filUploadAt" value = "0"/>
|
||||
<input type="hidden" value= "<c:out value="${mbrGradIconCours}"/>" name="mbrGradIconCoursArr" class="mbrGradIconCours"/>
|
||||
<%--파일이 없는 경우--%>
|
||||
<div class="input-file" <c:if test = "${not empty mbrGradIconCours}">style="display:none"</c:if>>
|
||||
<input type="file" id="fileUpload-${status.index}" name="files" title="대표이미지" accept="<c:out value="${ acceptFileExtensions }"/>"
|
||||
onchange="fn_add_file_mbrGradNm(1,'fileUl${status.index}',${status.index})">
|
||||
<label for="fileUpload-${status.index}">파일선택</label>
|
||||
</div>
|
||||
<%--파일이 있는 경우--%>
|
||||
<c:choose>
|
||||
<c:when test = "${empty mbrGradIconCours}">
|
||||
<ul class="file-list" id = "fileUl${status.index}">
|
||||
</ul>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<ul class="file-list" id = 'fileUl${status.index}'>
|
||||
<li id = "<c:out value="${gradStdr.mbrGradInnb}"/>" class="fileLi">
|
||||
<a class="file-list__item">
|
||||
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
|
||||
<input type = "hidden" value="<c:out value="${cdnurl}${mbrGradIconCours}"/>"/>
|
||||
<span class="file-list__item-title">
|
||||
<img src = "<c:out value="${cdnurl}${mbrGradIconCours}"/>"
|
||||
onerror="this.src='/admin/images/image_placeholder.png'" />
|
||||
</span>
|
||||
</a>
|
||||
<a class="file-list__delete fileDel" style="cursor:pointer">
|
||||
<span class="visually-hidden">파일 삭제</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<fmt:formatNumber value="${gradStdr.mbrGradCnt}" pattern="#,###"/>(<c:out value="${gradStdr.mbrGradInnbPer}"/>)
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<c:out value="${gradStdr.registDt}"/>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<c:out value="${gradStdr.updtDt}"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<tr class="mbrGradTr">
|
||||
<input type = "hidden" class= "mbrGradInnb" name = "mbrGradInnbArr" value = "x"/>
|
||||
<input type = "hidden" class= "mbrGradCnt" value = ""/>
|
||||
<td>
|
||||
<div>
|
||||
<label class="b-checkbox checkbox is-medium center">
|
||||
<input type="checkbox" name="gradChkbox"/>
|
||||
<span class="check"></span>
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<input class="input-text full" type="text" name="mbrGradNmArr" title="등급명" value="" placeholder="등급명" maxlength="40"/>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<c:forEach var = "mbrGradCnd" items = "${resultMap.mbrGradInfo.codeMap.mbrGradCnd}">
|
||||
<c:if test = "${mbrGradCnd.cd eq '01'}"><c:out value="${mbrGradCnd.cdNm}"/></c:if>
|
||||
</c:forEach>
|
||||
<input type = "hidden" name = "mbrGradCndCdArr" value = "01"/>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text number right mm" type="text" name="mbrGradAmtArr" title="실 결제금액"
|
||||
value="0" placeholder="0" maxlength="10" readonly/>원
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="manage-btn-container">
|
||||
<input type = "hidden" name = "filUploadAt" value = "0"/>
|
||||
<input type = "hidden" value = "" name="mbrGradIconCours" class="mbrGradIconCours"/>
|
||||
<%--파일이 없는 경우--%>
|
||||
<div class="input-file">
|
||||
<input type="file" id="fileUpload-0" name="files" title="대표이미지" accept="<c:out value="${ acceptFileExtensions }"/>"
|
||||
onchange="fn_add_file_mbrGradNm(1,'fileUl0',0)">
|
||||
<label for="fileUpload-0">파일선택</label>
|
||||
</div>
|
||||
<ul class="file-list" id = "fileUl0">
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
0(0)
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
-
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
-
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
<%--복제시 clone값 set--%>
|
||||
<c:forEach var = "mbrGradCnd" items = "${resultMap.mbrGradInfo.codeMap.mbrGradCnd}">
|
||||
<c:if test = "${mbrGradCnd.cd eq '02'}">
|
||||
<input type="hidden" value="${mbrGradCnd.cd}" id="mbrGradCndCd"/>
|
||||
<input type="hidden" value="${mbrGradCnd.cdNm}" id="mbrGradCndCdNm"/>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
<form id="backUpData" method="post" >
|
||||
<input type="hidden" name="srchMbrGradNm" value="<c:out value="${resultMap.maMbrGradVO.srchMbrGradNm}"/>" />
|
||||
<input type="hidden" name="srchCalcCndDvCds" value="<c:out value="${resultMap.maMbrGradVO.srchCalcCndDvCds }"/>" />
|
||||
<input type="hidden" name="pageUnit" value="<c:out value="${resultMap.maMbrGradVO.pageUnit }"/>" />
|
||||
<input type="hidden" name="pageIndex" value="<c:out value="${resultMap.maMbrGradVO.pageIndex }"/>" />
|
||||
<input type="hidden" name="mbrGradGroupInnb" value="<c:out value="${resultMap.maMbrGradVO.mbrGradGroupInnb}"/>" />
|
||||
<input type="hidden" name="srchSopmalCd" value="<c:out value="${resultMap.maMbrGradVO.srchSopmalCd}"/>" />
|
||||
<input type="hidden" name="sopmalCd" value="<c:out value="${resultMap.maMbrGradVO.sopmalCd}"/>" />
|
||||
<input type="hidden" name="pageDv" />
|
||||
</form>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,132 @@
|
||||
<%@ 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" %>
|
||||
<%--
|
||||
Class Name : MaBsnmInqirePopupR.jsp
|
||||
Description : 사업자 상세조회 팝업
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
since : 2023.12.19 rvg 최초 생성
|
||||
--%>
|
||||
<div class="modal-header">
|
||||
<h4>사업자 조회</h4>
|
||||
</div>
|
||||
<div class="modal-content">
|
||||
<h3 class="content-section__title">사업자 정보</h3>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>사업자</caption>
|
||||
<colgroup>
|
||||
<col style="width: 15%;">
|
||||
<col style="width: 35%;">
|
||||
<col style="width: 15%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<c:choose>
|
||||
<c:when test="${ not empty resultSrchMap.list }">
|
||||
<c:forEach items="${ resultSrchMap.list }" var="list" varStatus="status">
|
||||
<tr>
|
||||
<th>사업자(회사명)</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<c:out value="${list.bsnmNm}"/>
|
||||
</div>
|
||||
</td>
|
||||
<th>업태/종목</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<c:out value="${list.bizcndCn}"/><span class="mx-5 gray-7">/</span><c:out value="${list.itemCn}"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>사업자등록번호</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<c:out value="${list.bizrnb}"/>
|
||||
</div>
|
||||
</td>
|
||||
<th>통신판매업 신고번호</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<c:out value="${list.mobDclNb}"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>대표자명</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<c:out value="${list.reprsntvnm}"/>
|
||||
</div>
|
||||
</td>
|
||||
<th>개인정보 보호책임자</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<c:out value="${list.indvdlinfoPrtcRspnberNm}"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>전화번호</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<c:out value="${list.telnb}"/>
|
||||
</div>
|
||||
</td>
|
||||
<th>팩스번호</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<c:out value="${list.fxnb}"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>이메일</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<c:out value="${list.email}"/>
|
||||
</div>
|
||||
</td>
|
||||
<th>영업신고증</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<c:out value="${list.bsnDclNb}"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>사업장 주소</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<div class="address-group">
|
||||
<div class="address-line">
|
||||
<span class="left">우편번호 : </span>
|
||||
<c:out value="${list.zip}"/>
|
||||
</div>
|
||||
<div class="address-line">
|
||||
<span class="left">주소 : </span>
|
||||
<c:out value="${list.lnbAdres}"/>
|
||||
</div>
|
||||
<div class="address-line">
|
||||
<span class="left">상세주소 : </span>
|
||||
<c:out value="${list.dtlAdres}"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
</c:choose>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#" rel="modal:close" class="btn outline" id="clsMd">닫기</a>
|
||||
</div>
|
||||
2022
src/main/webapp/WEB-INF/views/admin/store/sopmal/maSopmalC.jsp
Normal file
2022
src/main/webapp/WEB-INF/views/admin/store/sopmal/maSopmalC.jsp
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,229 @@
|
||||
<%@ 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 : maSopmalListInqireForm.jsp
|
||||
Description : 쇼핑몰 조회 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-02-05 최범식 최초 생성
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
|
||||
let pageIndex = '<c:out value="${ resultMap.paramVO.pageIndex }"/>';
|
||||
let pageUnit = '<c:out value="${ resultMap.paramVO.pageUnit }"/>';
|
||||
let pageDv = '<c:out value="${ resultMap.paramVO.pageDv }"/>';
|
||||
|
||||
if (pageDv == '') {
|
||||
fn_select_sopmal_list(pageIndex, pageUnit);
|
||||
} else {
|
||||
fn_select_sopmal_list('1', '10');
|
||||
}
|
||||
|
||||
$('#srchStr').on('keydown', function(event) {
|
||||
if (event.keyCode === 13) {
|
||||
event.preventDefault();
|
||||
fn_select_sopmal_list(1);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
/* ********************************************************
|
||||
* 쇼핑몰 목록조회
|
||||
******************************************************** */
|
||||
const fn_select_sopmal_list = function(pageIndex, pageUnit) {
|
||||
|
||||
if (pageIndex == undefined || pageUnit == '') {
|
||||
$('#pageIndex').val('1');
|
||||
} else {
|
||||
$('#pageIndex').val(pageIndex);
|
||||
}
|
||||
|
||||
let params = $('#srchForm').serialize();
|
||||
if (pageUnit != undefined || pageUnit == '') {
|
||||
|
||||
params += '&pageUnit=' + pageUnit;
|
||||
} else {
|
||||
params += '&pageUnit=' + $('#pageUnit').val();
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type : 'post',
|
||||
url : '<c:url value="/admin/store/sopmal/selectSopmalListInqire"/>',
|
||||
data : params,
|
||||
success : function(data) {
|
||||
$('#pageDiv').html(data);
|
||||
$('#pageUnit').niceSelect();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**********************************************
|
||||
* 쇼핑몰 검색 초기화
|
||||
***********************************************/
|
||||
const fn_clear_input = function() {
|
||||
$('#srchType').val('').niceSelect('update');
|
||||
$('#srchStr').val('');
|
||||
$('#srchSopmalTyCd').val('').niceSelect('update');
|
||||
$('#srchBsnmInnb').val('').niceSelect('update');
|
||||
$('#srchOperAt').val('').niceSelect('update');
|
||||
};
|
||||
|
||||
/**********************************************
|
||||
* 쇼핑몰 등록 화면 이동
|
||||
***********************************************/
|
||||
const fn_move_sopmalRegist = function() {
|
||||
|
||||
$('#srchForm').attr('action', '<c:url value="/admin/store/sopmal/selectSopmalRegistForm"/>');
|
||||
$('#srchForm').attr('method', 'post');
|
||||
$('#srchForm').submit();
|
||||
};
|
||||
/**********************************************
|
||||
* 쇼핑몰 수정 화면 이동
|
||||
***********************************************/
|
||||
const fn_move_sopmalDetail = function(_arg) {
|
||||
|
||||
$('#sopmalCd').val(_arg);
|
||||
$('#srchForm').attr('action', '<c:url value="/admin/store/sopmal/selectSopmalUpdtForm"/>');
|
||||
$('#srchForm').attr('method', 'post');
|
||||
$('#srchForm').submit();
|
||||
};
|
||||
|
||||
/**********************************************
|
||||
* 쇼핑몰 엑셀 다운로드
|
||||
***********************************************/
|
||||
const fn_down_excelFile = function() {
|
||||
|
||||
$('#srchForm').attr('action', '<c:url value="/admin/store/sopmal/excelFileDownload"/>');
|
||||
$('#srchForm').attr('method', 'post');
|
||||
$('#srchForm').submit();
|
||||
};
|
||||
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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_move_sopmalRegist();">쇼핑몰 <spring:message code="button.insert"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<form id="srchForm" >
|
||||
<input type="hidden" name="sopmalCd" id="sopmalCd"/>
|
||||
<input type="hidden" name="pageIndex" id="pageIndex"/>
|
||||
<%-- 검색 섹션 START --%>
|
||||
<section class="content-section" >
|
||||
<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 colspan="3">
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select class="serchSelectBox" name="srchType" id="srchType" title="검색타입" ">
|
||||
<option value="" ${f:setSelected(resultMap.paramVO.srchType, 'ALL') }>전체</option>
|
||||
<option value="SOPMALNM" ${f:setSelected(resultMap.paramVO.srchType, 'SOPMALNM') }>쇼핑몰명</option>
|
||||
<option value="DOMAIN" ${f:setSelected(resultMap.paramVO.srchType, 'DOMAIN') }>도메인</option>
|
||||
</select>
|
||||
</div>
|
||||
<input class="input-text lg" type="text" title="검색어" name="srchStr" id="srchStr" value="${resultMap.paramVO.srchStr }"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>쇼핑몰 구분</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select class="md" name="srchSopmalTyCd" id="srchSopmalTyCd" title="쇼핑몰 구분">
|
||||
<option value="" ${f:setSelected(resultMap.paramVO.srchSopmalTyCd, null) } >전체</option>
|
||||
<c:forEach var="sopmalTyCd" items="${resultMap.sopmalTyCdList}" varStatus="status">
|
||||
<option value="${sopmalTyCd.cd }" ${f:setSelected(resultMap.paramVO.srchSopmalTyCd, sopmalTyCd.cd) }><c:out value="${sopmalTyCd.cdNm }"/></option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<th>사업자</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select class="md" name="srchBsnmInnb" id="srchBsnmInnb" title="사업자">
|
||||
<option value="" ${f:setSelected(resultMap.paramVO.srchBsnmInnb, '') }>전체</option>
|
||||
<c:forEach var="company" items="${resultMap.companyAllList}" varStatus="status">
|
||||
<option value="${company.bsnmInnb}" ${f:setSelected(resultMap.paramVO.srchBsnmInnb, company.bsnmInnb) }> ${company.bsnmNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>상태</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select class="md" name="srchOperAt" id="srchOperAt" title="상태">
|
||||
<option value="" ${f:setSelected(resultMap.paramVO.srchOperAt, '') }>전체</option>
|
||||
<option value="Y" ${f:setSelected(resultMap.paramVO.srchOperAt, 'Y') }>운영</option>
|
||||
<option value="N" ${f:setSelected(resultMap.paramVO.srchOperAt, 'N') }>운영중지</option>
|
||||
</select>
|
||||
</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_clear_input();"><spring:message code="button.init"/></button>
|
||||
<button type="button" class="btn primary" onclick="fn_select_sopmal_list('1');"><spring:message code="button.search"/></button>
|
||||
</div>
|
||||
<div class="right"></div>
|
||||
</div>
|
||||
</section>
|
||||
<%-- 검색 섹션 END --%>
|
||||
<%-- 리스트 출력 섹션 START --%>
|
||||
<div id="pageDiv"></div>
|
||||
</form>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,124 @@
|
||||
<%@ 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 : maSopmalListInqireR.jsp
|
||||
Description : 몰 리스트
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-01-19 최범식 최초 생성
|
||||
--%>
|
||||
<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_sopmal_list('1')">
|
||||
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
|
||||
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paramVO.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">
|
||||
<button type="button" class="btn outline sm" onclick="fn_down_excelFile();">
|
||||
<i class="icon icon_excel"></i>
|
||||
<spring:message code="button.excelDownload"/>
|
||||
</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: auto;">
|
||||
<col style="width: 10%;">
|
||||
<col style="width: 24%;">
|
||||
<col style="width: 16%;">
|
||||
<col style="width: 7%;">
|
||||
<col style="width: 7%;">
|
||||
<col style="width: 7%;">
|
||||
<col style="width: 7%">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>번호</th>
|
||||
<th>쇼핑몰명</th>
|
||||
<th>구분</th>
|
||||
<th>도메인</th>
|
||||
<th>쇼핑몰운영사</th>
|
||||
<th>담당자</th>
|
||||
<th>최종수정일</th>
|
||||
<th>상태</th>
|
||||
<th>관리</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<%-- 리스트 BODY START --%>
|
||||
<tbody>
|
||||
<c:choose>
|
||||
<c:when test="${ not empty resultMap.sopmalList }">
|
||||
<c:forEach items="${resultMap.sopmalList }" var="sopmal" varStatus="status">
|
||||
<tr>
|
||||
<td><c:out value="${resultMap.paginationInfo.totalRecordCount - sopmal.rnum + 1 }" /></td>
|
||||
<td class="text-left"><c:out value="${sopmal.sopmalNm }"/></td>
|
||||
<td><c:out value="${sopmal.sopmalTyCdNm }"/></td>
|
||||
<td class="text-left">
|
||||
PC : <span><c:out value="${sopmal.pcDomnAdres }"/></span><br/>
|
||||
모바일 : <span><c:out value="${sopmal.mblDomnAdres }"/></span>
|
||||
</td>
|
||||
<td class="text-left"><c:out value="${sopmal.bsnmNm }"/></td>
|
||||
<td>
|
||||
<div class="manage-btn-container">
|
||||
<a href="/admin/use/mngr/selectJobUserListInqireForm" class="btn xsm primary outline" target="_blank"><spring:message code="button.view"/></a>
|
||||
</div>
|
||||
</td>
|
||||
<td><c:out value="${sopmal.updtDt }"/></td>
|
||||
<c:set var="oper" value="운영"/>
|
||||
<c:if test="${sopmal.operAt eq 'N'}">
|
||||
<c:set var="oper" value="운영중지"/>
|
||||
</c:if>
|
||||
<td><c:out value="${oper }"/></td>
|
||||
<td>
|
||||
<div class="manage-btn-container">
|
||||
<button type="button" class="btn xsm primary outline" onclick="fn_move_sopmalDetail('${sopmal.sopmalCd }');"><spring:message code="button.update"/></button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<tr>
|
||||
<td class="row-no-data" colspan="9">조회된 데이터가 없습니다.</td>
|
||||
</tr>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</table>
|
||||
</div>
|
||||
<%-- 리스트 BODY END --%>
|
||||
</section>
|
||||
<div class="pagination__container">
|
||||
<ui:pagination paginationInfo="${ resultMap.paginationInfo }" type="image" jsFunction="fn_select_sopmal_list" />
|
||||
</div>
|
||||
2294
src/main/webapp/WEB-INF/views/admin/store/sopmal/maSopmalU.jsp
Normal file
2294
src/main/webapp/WEB-INF/views/admin/store/sopmal/maSopmalU.jsp
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,92 @@
|
||||
<%@ 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 : MaSopthemaListInqireR.jsp
|
||||
Description : 쇼핑몰테마 목록조회 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023-12-26 리브가 최초 생성
|
||||
2023-01-09 리브가 목록조회 수정
|
||||
--%>
|
||||
<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_sopthema_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>
|
||||
<colgroup>
|
||||
<col style="width: 6%;">
|
||||
<col style="width: 14%;">
|
||||
<col style="width: auto;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 12%;">
|
||||
<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.list }">
|
||||
<c:forEach items="${ resultMap.list }" var="list" varStatus="status">
|
||||
<tr>
|
||||
<td><c:out value="${ resultMap.paginationInfo.totalRecordCount - list.rnum + 1 }" /></td>
|
||||
<td class="left"><c:out value="${list.themaNm}"/></td>
|
||||
<td class="left"><c:out value="${list.sopmalNm}"/></td>
|
||||
<td><c:out value="${list.registDe}"/></td>
|
||||
<td><c:out value="${list.updtDe}"/></td>
|
||||
<td>
|
||||
<div class="manage-btn-container">
|
||||
<button class="btn xsm primary outline" type="button"
|
||||
onclick="fn_move_dtl_uptpage(<c:out value="${list.themaInnb}"/>)">
|
||||
<spring:message code="button.update"/></button>
|
||||
</div>
|
||||
</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_sopthema_list"/>
|
||||
</div>
|
||||
@@ -0,0 +1,156 @@
|
||||
<%@ 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 : MaSopthemaListInqireR.jsp
|
||||
Description : 쇼핑몰테마 목록조회 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023-12-26 리브가 최초 생성
|
||||
2023-01-09 리브가 목록조회 수정
|
||||
2024-01-10 박철민 pageUnit 유지를 위한 코드 추가
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
</head>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
let pageIndex = '<c:out value="${ resultMap.BOSopThemaVO.pageIndex }"/>';
|
||||
let pageUnit = '<c:out value="${ resultMap.BOSopThemaVO.pageUnit }"/>';
|
||||
fn_select_sopthema_list(pageIndex, pageUnit);
|
||||
});
|
||||
|
||||
/* ********************************************************
|
||||
* 목록 조회
|
||||
******************************************************** */
|
||||
const fn_select_sopthema_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;
|
||||
}
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url : "<c:url value="/admin/store/sopthema/selectSopThemaListInqire"/>",
|
||||
data : dataStr,
|
||||
success:function(resultHtml) {
|
||||
$('#pageDiv').html(resultHtml);
|
||||
$('#pageUnit').niceSelect();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 수정폼 이동
|
||||
******************************************************** */
|
||||
const fn_move_dtl_uptpage = function(themaInnb) {
|
||||
$('#listForm').attr('action', '<c:url value="/admin/store/sopthema/selectSopThemaUpdtForm"/>');
|
||||
$('#listForm').attr('method', 'post');
|
||||
$('#themaInnb').val(themaInnb);
|
||||
$('#listForm').submit();
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 등록폼 이동
|
||||
******************************************************** */
|
||||
const fn_move_regpage = function() {
|
||||
$('#listForm').attr('action', '<c:url value="/admin/store/sopthema/selectSopThemaRegistForm"/>');
|
||||
$('#listForm').attr('method', 'post');
|
||||
$('#listForm').submit();
|
||||
};
|
||||
|
||||
history.replaceState({}, null, location.pathname);
|
||||
|
||||
</script>
|
||||
<body>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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 onclick="fn_move_regpage()" class="btn primary">쇼핑몰테마 <spring:message code="button.insert"/></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form id='listForm' name="listForm" method="post" action="<c:url value="/admin/store/sopthema/selectSopThemaListInqireForm"/>">
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultMap.BOSopThemaVO.pageIndex}"/>
|
||||
<input type="hidden" id="themaInnb" name="themaInnb"/>
|
||||
<section class="content-section" id="search-section">
|
||||
<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="td-inner">
|
||||
<input class="input-text xl" type="text" id="srchThemaNm" name="srchThemaNm" title="쇼핑몰테마명" value="<c:out value="${ resultMap.BOSopThemaVO.srchThemaNm }" />">
|
||||
</div>
|
||||
</td>
|
||||
<th>쇼핑몰</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select class="md" id="srchSopmalCd" name="srchSopmalCd" title="쇼핑몰" >
|
||||
<option value="">전체</option>
|
||||
<c:forEach var="sopmalList" items="${ resultMap.SopmalCdNmList }" varStatus="">
|
||||
<option value="${ sopmalList.sopmalCd }" ${f:setSelected(resultMap.BOSopThemaVO.srchSopmalCd, sopmalList.sopmalCd)}>${ sopmalList.sopmalNm }</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</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'); return false;">초기화</button>
|
||||
<button class="btn primary" id="searchBtn" type="button" onclick="fn_select_sopthema_list(1); return false;">검색</button>
|
||||
</div>
|
||||
<div class="right"></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,143 @@
|
||||
<%@ 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" %>
|
||||
<%--
|
||||
Class Name : MaSopthemaRegistC.jsp
|
||||
Description : 쇼핑몰테마 등록
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023-12-26 리브가 최초 생성
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
</head>
|
||||
<script>
|
||||
$( document ).ready(function() {
|
||||
|
||||
});
|
||||
|
||||
/* ********************************************************
|
||||
* 등록 AJAX
|
||||
******************************************************** */
|
||||
const fn_regist = function() {
|
||||
const url = '<c:url value="/admin/store/sopthema/insertSopThemaRegist"/>';
|
||||
const data = $('#listForm').serialize();
|
||||
|
||||
if(confirm('쇼핑몰 테마를 <spring:message code="confirm.common.insert"/>')) {
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: url,
|
||||
data: data,
|
||||
success: function (data) {
|
||||
let str = JSON.parse(data.resBody.result);
|
||||
if(str.result=='success'){
|
||||
alert('<spring:message code="success.common.insert"/>');
|
||||
//등록 후 수정화면으로 이동
|
||||
fn_move_dtl_uptpage(data.resBody.result.replace(/[^0-9]/g, ""));
|
||||
} else {
|
||||
alert('<spring:message code="fail.common.insert"/>');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
/* ********************************************************
|
||||
* 수정폼 이동
|
||||
******************************************************** */
|
||||
const fn_move_dtl_uptpage = function(themaInnb) {
|
||||
const url = '<c:url value="/admin/store/sopthema/selectSopThemaUpdtForm"/>';
|
||||
|
||||
$('#listForm').attr('action', url);
|
||||
$('#listForm').attr('method', 'get');
|
||||
$('#pageIndex').val(1);
|
||||
$('#themaInnb').val(themaInnb);
|
||||
$('#listForm').submit();
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 목록 조회
|
||||
******************************************************** */
|
||||
const fn_select_list = function() {
|
||||
const url = '<c:url value="/admin/store/sopthema/selectSopThemaListInqireForm"/>';
|
||||
|
||||
$('#listForm').attr('action', url);
|
||||
$('#listForm').attr('method', 'post');
|
||||
$('#listForm').submit();
|
||||
};
|
||||
|
||||
</script>
|
||||
<body>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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 onclick="fn_select_list()" onkeypress="this.onclick" class="btn outline"><spring:message code="button.catalog"/></button>
|
||||
<button class="btn primary" onclick="fn_regist();" ><spring:message code="button.insert"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<section class="content-section">
|
||||
<form id="listForm" method="post" action="<c:url value="/admin/store/sopthema/insertSopThemaRegist"/>">
|
||||
<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>테마 명<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text lg" type="text" id="themaNm" name="themaNm" title="테마 명" maxlength="20">
|
||||
</div>
|
||||
</td>
|
||||
<th>스타일 시트 경로<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text lg" type="text" id="cssCours" name="cssCours" title="CSS 경로" maxlength="30">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>설명</th>
|
||||
<td colspan="3">
|
||||
<textarea class="textarea" id="dcCn" name="dcCn" title="설명" rows="8"></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!--검색 조건 , 페이징 조건 -->
|
||||
<input type="hidden" id="themaInnb" name="themaInnb" value=""/>
|
||||
<input type="hidden" id="srchThemaNm" name="srchThemaNm" title="검색_쇼핑몰테마명" value="<c:out value="${ resultMap.BOSopThemaVO.srchThemaNm }"/>">
|
||||
<input type="hidden" id="srchSopmalCd" name="srchSopmalCd" title="검색_쇼핑몰" value="<c:out value="${ resultMap.BOSopThemaVO.srchSopmalCd }"/>">
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value="${ resultMap.BOSopThemaVO.pageIndex }"/>"/>
|
||||
<input type="hidden" id="pageUnit" name="pageUnit" value="<c:out value="${ resultMap.BOSopThemaVO.pageUnit }"/>"/>
|
||||
|
||||
</form>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,184 @@
|
||||
<%@ page import="java.util.Date" %>
|
||||
<%@ page import="java.util.Arrays" %>
|
||||
<%@ page import="java.util.List" %>
|
||||
<%@ 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" %>
|
||||
<%--
|
||||
Class Name : MaSopthemaUpdtU.jsp
|
||||
Description : 쇼핑몰테마 수정
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023-12-26 리브가 최초 생성
|
||||
2024-01-10 리브가 검색조건, 페이징정보 유지되도록 수정
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
</head>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
|
||||
});
|
||||
|
||||
/* ********************************************************
|
||||
* 수정 AJAX
|
||||
******************************************************** */
|
||||
const fn_update = function() {
|
||||
const url = '<c:url value="/admin/store/sopthema/updateSopThemaUpdt"/>';
|
||||
const data = $('#listForm').serialize();
|
||||
|
||||
if(confirm('쇼핑몰 테마를 <spring:message code="confirm.common.update"/>')) {
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: url,
|
||||
data: data,
|
||||
success: function (data) {
|
||||
let str = JSON.parse(data.resBody.result);
|
||||
if(str.result=='success'){
|
||||
alert('<spring:message code="success.common.update"/>');
|
||||
// 수정 후 수정화면 유지
|
||||
fn_move_dtl_uptpage();
|
||||
} else {
|
||||
alert('<spring:message code="fail.common.update"/>');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
/* ********************************************************
|
||||
* 삭제 AJAX
|
||||
******************************************************** */
|
||||
const fn_delete = function() {
|
||||
const url = '<c:url value="/admin/store/sopthema/deleteSopThemaDel"/>';
|
||||
const data = $('#listForm').serialize();
|
||||
|
||||
if(confirm('쇼핑몰 테마를 <spring:message code="confirm.common.delete"/>')) {
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: url,
|
||||
data: data,
|
||||
success: function (data) {
|
||||
let str = JSON.parse(data.resBody.result);
|
||||
if(str.result=='success'){
|
||||
alert('<spring:message code="success.common.delete"/>');
|
||||
// 삭제 후 목록 화면으로 이동
|
||||
fn_select_sopthema_list(1);
|
||||
} else {
|
||||
alert(str.result);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
/* ********************************************************
|
||||
* 목록 조회
|
||||
******************************************************** */
|
||||
const fn_select_sopthema_list = function(pageIndex) {
|
||||
$('#listForm').attr('action', '<c:url value="/admin/store/sopthema/selectSopThemaListInqireForm"/>');
|
||||
$('#listForm').attr('method', 'post');
|
||||
if(pageIndex) {
|
||||
$('#pageIndex').val(pageIndex);
|
||||
}
|
||||
$('#listForm').submit();
|
||||
};
|
||||
|
||||
/* ********************************************************
|
||||
* 수정폼 이동
|
||||
******************************************************** */
|
||||
const fn_move_dtl_uptpage = function() {
|
||||
$('#listForm').attr('action', '<c:url value="/admin/store/sopthema/selectSopThemaUpdtForm"/>');
|
||||
$('#listForm').attr('method', 'get');
|
||||
$('#pageIndex').val(1);
|
||||
$('#listForm').submit();
|
||||
}
|
||||
|
||||
</script>
|
||||
<body>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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 onclick="fn_select_sopthema_list();" class="btn outline"><spring:message code="button.catalog"/></button>
|
||||
<button class="btn dark" onclick="fn_delete();"><spring:message code="button.delete"/></button>
|
||||
<button class="btn primary outline" onclick="fn_update(); return false;"><spring:message code="button.update"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<section class="content-section">
|
||||
<form id="listForm" method="post" action="/admin/store/sopthema/selectSopThemaUpdt">
|
||||
<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>
|
||||
<c:choose>
|
||||
<c:when test="${ not empty resultMap.list }">
|
||||
<c:forEach items="${ resultMap.list }" var="list" varStatus="status">
|
||||
<input type="hidden" id="themaInnb" name="themaInnb" value="${list.themaInnb}"/>
|
||||
<tr>
|
||||
<th>테마 명<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text lg" type="text" id="themaNm" name="themaNm" value="<c:out value="${list.themaNm}"/>" title="테마 명" maxlength="20">
|
||||
</div>
|
||||
</td>
|
||||
<th>스타일 시트 경로<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text lg" type="text" id="cssCours" name="cssCours" value="<c:out value="${list.cssCours}"/>" title="CSS 경로" maxlength="30">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>설명</th>
|
||||
<td colspan="3">
|
||||
<textarea class="textarea" id="dcCn" name="dcCn" title="설명" rows="8"><c:out value="${list.dcCn}"/></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>적용 쇼핑몰</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<c:out value="${list.sopmalNm}"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
</c:choose>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!--검색 조건 , 페이징 조건 -->
|
||||
<input type="hidden" id="srchThemaNm" name="srchThemaNm" title="검색_쇼핑몰테마명" value="<c:out value="${ resultMap.BOSopThemaVO.srchThemaNm }"/>">
|
||||
<input type="hidden" id="srchSopmalCd" name="srchSopmalCd" title="검색_쇼핑몰" value="<c:out value="${ resultMap.BOSopThemaVO.srchSopmalCd }"/>">
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value="${ resultMap.BOSopThemaVO.pageIndex }"/>"/>
|
||||
<input type="hidden" id="pageUnit" name="pageUnit" value="<c:out value="${ resultMap.BOSopThemaVO.pageUnit }"/>"/>
|
||||
|
||||
</form>
|
||||
</section>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
232
src/main/webapp/WEB-INF/views/admin/store/stplat/maStplatC.jsp
Normal file
232
src/main/webapp/WEB-INF/views/admin/store/stplat/maStplatC.jsp
Normal file
@@ -0,0 +1,232 @@
|
||||
<%@ 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 : maStplatC.jsp
|
||||
Description : 약관 등록 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023-12-20 김혜지 최초 생성(퍼블리싱 적용)
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
|
||||
const sopmalCd = $("#sopmalCd").val();
|
||||
fn_create_ckeditor('#stplatCn', sopmalCd); //에디터 적용
|
||||
fn_create_ckeditor('#imprtncStplatCn', sopmalCd); //에디터 적용
|
||||
|
||||
});
|
||||
|
||||
/*********************************************************
|
||||
* 약관 목록조회 (리스트로 가기)
|
||||
*********************************************************/
|
||||
$("#listBtn").on("click", function(){
|
||||
$('#moveForm').attr('action', '<c:url value="/admin/store/stplat/selectStplatListInqireForm"/>');
|
||||
$('#moveForm').attr('method', 'post');
|
||||
$('#moveForm').submit();
|
||||
})
|
||||
|
||||
const fn_select_stplat_list = function() {
|
||||
$('#moveForm').attr('action', '<c:url value="/admin/store/stplat/selectStplatListInqireForm"/>');
|
||||
$('#moveForm').attr('method', 'post');
|
||||
$('#moveForm').submit();
|
||||
}
|
||||
|
||||
|
||||
/*********************************************************
|
||||
* 약관 등록
|
||||
*********************************************************/
|
||||
const fn_insert_stplat = function() {
|
||||
|
||||
let saveForm = $('#listForm');
|
||||
saveForm.find("#stplatCn").val(fn_get_editor_data('#stplatCn'));
|
||||
saveForm.find("#imprtncStplatCn").val(fn_get_editor_data('#imprtncStplatCn'));
|
||||
|
||||
if(confirm('약관을 <spring:message code="confirm.common.save"/>')) {
|
||||
$.ajax({
|
||||
type : 'post',
|
||||
url : '<c:url value="/admin/store/stplat/insertStplatRegist"/>',
|
||||
data : saveForm.serialize(),
|
||||
success : function(result) {
|
||||
let data = JSON.parse(result.resBody.result);
|
||||
if(data.status === "0") {
|
||||
alert('<spring:message code="success.common.insert"/>');
|
||||
let params = '?stplatInnb=' + data.stplatInnb + '&pageDv=' + data.pageDv + '&srchStplatNm=' + data.srchStplatNm
|
||||
+ '&srchStplatDvCd=' + data.srchStplatDvCd + '&srchSopmalCd=' + data.srchSopmalCd;
|
||||
location.href = '<c:url value="/admin/store/stplat/selectStplatUpdtForm"/>' + params;
|
||||
}
|
||||
|
||||
if(data.status === "1") {
|
||||
alert('<spring:message code="fail.common.update"/>');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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 outline" id="listBtn" onclick="fn_select_stplat_list(${ resultMap.srchData.pageIndex });"><spring:message code="button.catalog"/></button>
|
||||
<button class="btn primary" onclick="fn_insert_stplat();"><spring:message code="button.save"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<form id="moveForm">
|
||||
</form>
|
||||
<section class="content-section">
|
||||
<form id="listForm" class="common-form">
|
||||
<input type="hidden" name="chngResnCn" value="최초등록"/>
|
||||
<input type="hidden" id="sopmalCd" name="srchSopmalCd" value="${ resultMap.srchData.srchSopmalCd }"/>
|
||||
<input type="hidden" name="srchStplatDvCd" value="${ resultMap.srchData.srchStplatDvCd }"/>
|
||||
<input type="hidden" name="srchStplatNm" value="${ resultMap.srchData.srchStplatNm }"/>
|
||||
<input type="hidden" name="pageIndex" value="${ resultMap.srchData.pageIndex }"/>
|
||||
<input type="hidden" name="pageUnit" value="${ resultMap.srchData.pageUnit }"/>
|
||||
|
||||
<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>약관 명<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text lg" id="stplatNm" name="stplatNm" type="text" title="약관명" maxlength="40">
|
||||
</div>
|
||||
</td>
|
||||
<th>약관 구분<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select class="md" id="stplatDvCd" name="stplatDvCd" title="약관구분코드">
|
||||
<option value="">선택하세요.</option>
|
||||
<c:forEach var="stplatDvList" items="${ resultMap.stplatDvList }" varStatus="">
|
||||
<option value="${ stplatDvList.cd }">${ stplatDvList.cdNm }</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>필수여부<span class="red-7"></span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="essntlAt-y" name="essntlAt" value="Y"/>
|
||||
<label for="essntlAt-y">예</label>
|
||||
</div>
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="essntlAt-n" name="essntlAt" value="N"/>
|
||||
<label for="essntlAt-n">아니오</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>내용작성여부<span class="red-7"></span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="cnWritngAt-y" name="cnWritngAt" value="Y"/>
|
||||
<label for="cnWritngAt-y">예</label>
|
||||
</div>
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="cnWritngAt-n" name="cnWritngAt" value="N"/>
|
||||
<label for="cnWritngAt-n">아니오</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>회원가입사용여부<span class="red-7"></span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="joinUseAt-y" name="joinUseAt" value="Y"/>
|
||||
<label for="joinUseAt-y">예</label>
|
||||
</div>
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="joinUseAt-n" name="joinUseAt" value="N"/>
|
||||
<label for="joinUseAt-n">아니오</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>비회원구매여부<span class="red-7"></span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="nmbrPurchsAt-y" name="nmbrPurchsAt" value="Y"
|
||||
/>
|
||||
<label for="nmbrPurchsAt-y">예</label>
|
||||
</div>
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="nmbrPurchsAt-n" name="nmbrPurchsAt" value="N"
|
||||
/>
|
||||
<label for="nmbrPurchsAt-n">아니오</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>약관 전문<span class="red-7">*</span></th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<textarea class="textarea" id="stplatCn" name="stplatCn" title="약관전문" rows="8"></textarea>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>중요고지 사항</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<textarea class="textarea" id="imprtncStplatCn" name="imprtncStplatCn" title="중요고지사항" rows="8"></textarea>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,67 @@
|
||||
<%@ 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" %>
|
||||
<%--
|
||||
Class Name : maStplatChangePopupR.jsp
|
||||
Description : 약관 수정이력 상세조회 팝업
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
since : 2023.12.27 김혜지 최초 생성
|
||||
--%>
|
||||
<div id="stplatHist-dtl-modal" class="modal" style="max-width: 900px;">
|
||||
<div class="modal-header">
|
||||
<h4>약관 변경내용 조회</h4>
|
||||
</div>
|
||||
<div class="modal-content">
|
||||
<h3 class="content-section__title">약관 변경내용</h3>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>약관 변경내용 조회</caption>
|
||||
<colgroup>
|
||||
<col style="width: 15%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>약관 전문</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="pop-terms__box" tabindex="0" style="width: 100%;">
|
||||
<div class="terms_box">
|
||||
<c:out value="${resultMap.stplat.stplatCn}"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>중요고지사항</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="pop-terms__box" tabindex="0" style="width: 100%;">
|
||||
<div class="terms_box">
|
||||
<c:out value="${resultMap.stplat.imprtncStplatCn}"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>변경사유</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<c:out value="${resultMap.stplat.chngResnCn}"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button onclick="fn_close_modal('stplatHist-dtl-modal')" class="btn outline">닫기</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,141 @@
|
||||
<%@ 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 : maStplatListInqireR.jsp
|
||||
Description : 약관 목록조회 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-01-10 김혜지 최초 생성
|
||||
--%>
|
||||
<%-- 리스트 출력 섹션 START --%>
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
/*********************************************************--%>
|
||||
* 약관 수정 폼
|
||||
*********************************************************/
|
||||
$(".updtStplatBtn").on("click", function(){
|
||||
const stplatInnb = $(this).data("innb");
|
||||
let url = '<c:url value="/admin/store/stplat/selectStplatUpdtForm"/>';
|
||||
|
||||
$('#updtForm').attr('action', url);
|
||||
$('#updtForm').attr('method', 'post');
|
||||
$('#stplatInnb').val(stplatInnb);
|
||||
$("#updtForm").find("#stplatInnb").val(stplatInnb);
|
||||
$('#updtForm').submit();
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<section class="content-section">
|
||||
<form id="updtForm">
|
||||
<input type="hidden" id="stplatInnb" name="stplatInnb" value="">
|
||||
</form>
|
||||
<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_stplat_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">
|
||||
<button type="button" class="btn outline sm" onclick="fn_excel_download();">
|
||||
<i class="icon icon_excel"></i>
|
||||
다운로드
|
||||
</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: auto;">
|
||||
<col style="width: 14%;">
|
||||
<col style="width: 20%;">
|
||||
<col style="width: 7%;">
|
||||
<col style="width: 7%;">
|
||||
<col style="width: 7%">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>번호</th>
|
||||
<th>약관명</th>
|
||||
<th>약관구분</th>
|
||||
<th>적용쇼핑몰</th>
|
||||
<th>사용여부</th>
|
||||
<th>등록일자</th>
|
||||
<th>최종수정일자</th>
|
||||
<th>관리</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<%-- 리스트 BODY START --%>
|
||||
<tbody id="listCount">
|
||||
<c:choose>
|
||||
<c:when test="${ not empty resultMap.resultList }">
|
||||
<c:forEach items="${ resultMap.resultList }" var="stplatList" varStatus="status">
|
||||
<tr>
|
||||
<td><c:out value="${ resultMap.paginationInfo.totalRecordCount - stplatList.rnum + 1 }" /></td>
|
||||
<td style="text-align: left;"><c:out value="${ stplatList.stplatNm }"/></td>
|
||||
<td style="text-align: left;"><c:out value="${ stplatList.stplatDvNm }"/></td>
|
||||
<td style="text-align: left;"><c:out value="${ stplatList.sopmalNm }"/></td>
|
||||
<td style="text-align: center;">
|
||||
<c:if test="${ stplatList.useAt eq 'Y'}">사용</c:if>
|
||||
<c:if test="${ stplatList.useAt eq 'N'}">미사용</c:if>
|
||||
</td>
|
||||
<td><c:out value="${ stplatList.registDt }"/></td>
|
||||
<td><c:out value="${ stplatList.updtDe }"/></td>
|
||||
<td>
|
||||
<div class="manage-btn-container re">
|
||||
<button class="btn xsm primary outline updtStplatBtn" type="button"
|
||||
data-innb="${ stplatList.stplatInnb }">
|
||||
<spring:message code="button.update"/>
|
||||
</button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<tr>
|
||||
<td colspan="8"><spring:message code="common.nodata"/></td>
|
||||
</tr>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</tbody>
|
||||
<%-- 리스트 BODY END --%>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
<%-- 리스트 출력 섹션 END --%>
|
||||
<div class="pagination__container">
|
||||
<ui:pagination paginationInfo="${ resultMap.paginationInfo }" type="image" jsFunction="fn_select_stplat_list" />
|
||||
</div>
|
||||
@@ -0,0 +1,215 @@
|
||||
<%@ 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 : maStplatListInqireRForm.jsp
|
||||
Description : 약관 목록조회 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------sms
|
||||
2023-12-20 김혜지 최초 생성
|
||||
2024-01-10 김혜지 jsp 분리
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
|
||||
let pageIndex = '<c:out value="${ resultMap.stplat.pageIndex }"/>';
|
||||
let pageUnit = '<c:out value="${ resultMap.stplat.pageUnit }"/>';
|
||||
let pageDv = '<c:out value="${ resultMap.stplat.pageDv }"/>';
|
||||
|
||||
if (pageDv == '') {
|
||||
|
||||
fn_select_stplat_list(1);
|
||||
} else {
|
||||
pageIndex = '1';
|
||||
pageDv = '10';
|
||||
fn_select_stplat_list(pageIndex, '10');
|
||||
}
|
||||
|
||||
|
||||
|
||||
$('#listForm').on('keydown', function(event) {
|
||||
if (event.keyCode === 13) {
|
||||
event.preventDefault();
|
||||
fn_select_stplat_list('1', '10');
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
/*********************************************************
|
||||
* 약관 목록조회 ajax
|
||||
*********************************************************/
|
||||
const fn_select_stplat_list = function(pageIndex, pageUnit) {
|
||||
|
||||
let dataStr;
|
||||
if(!pageIndex) {
|
||||
$('#pageIndex').val(1);
|
||||
} else {
|
||||
$('#pageIndex').val(pageIndex);
|
||||
}
|
||||
|
||||
$('#pageIndex').val(pageIndex);
|
||||
if(!pageUnit) {
|
||||
dataStr = $('#listForm').serialize();
|
||||
} else {
|
||||
if($('#pageUnit').length){
|
||||
$('#pageUnit').val(pageUnit);
|
||||
dataStr = $('#listForm').serialize();
|
||||
} else {
|
||||
dataStr = $('#listForm').serialize()+'&pageUnit='+pageUnit;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url : "<c:url value='/admin/store/stplat/selectStplatListInqire'/>",
|
||||
data : dataStr,
|
||||
success:function(resultHtml) {
|
||||
|
||||
$('#pageDiv').html(resultHtml);
|
||||
$('#pageUnit').niceSelect();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/*********************************************************
|
||||
* 약관 검색 초기화
|
||||
*********************************************************/
|
||||
const fn_clear_input = function() {
|
||||
$('#srchStplatNm').val("");
|
||||
$('#srchSopmalCd').val("");
|
||||
$('#srchStplatDvCd').val("");
|
||||
|
||||
$('#srchSopmalCd').next(".nice-select").find("li.selected").removeClass("selected");
|
||||
$('#srchStplatDvCd').next(".nice-select").find("li.selected").removeClass("selected");
|
||||
$('#srchSopmalCd').next(".nice-select").find(".current").text("전체");
|
||||
$('#srchStplatDvCd').next(".nice-select").find(".current").text("전체");
|
||||
};
|
||||
|
||||
/*********************************************************
|
||||
* 약관 목록 엑셀 다운
|
||||
*********************************************************/
|
||||
const fn_excel_download = function() {
|
||||
$('#listForm').attr('action', '<c:url value="/admin/store/stplat/selectStplatListExcelDwld"/>');
|
||||
$('#listForm').attr('method', 'post');
|
||||
$('#listForm').submit();
|
||||
}
|
||||
|
||||
/*********************************************************
|
||||
* 약관 등록 폼
|
||||
*********************************************************/
|
||||
const fn_insert_stplat_form = function(){
|
||||
$('#listForm').attr('action', '<c:url value="/admin/store/stplat/selectStplatRegistForm"/>');
|
||||
$('#listForm').attr('method', 'post');
|
||||
$('#listForm').submit();
|
||||
}
|
||||
|
||||
|
||||
/*********************************************************
|
||||
* 새로고침시 검색 초기화
|
||||
*********************************************************/
|
||||
history.replaceState({}, null, location.pathname);
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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="#" onclick="fn_insert_stplat_form();" class="btn primary">약관 <spring:message code="button.insert"/></a>
|
||||
</div>
|
||||
</div>
|
||||
<form id="listForm" name="listForm" method="post" action="<c:url value="/admin/store/stplat/selectStplatListInqireForm"/>">
|
||||
<input type="hidden" id="pageIndex" name="pageIndex"/>
|
||||
<!-- <input type="hidden" id="recordCountPerPage" name="recordCountPerPage" value="${ resultMap.paginationInfo.recordCountPerPage }"/> -->
|
||||
<input type="hidden" id="stplatInnb" name="stplatInnb"/>
|
||||
<%-- 검색 섹션 START --%>
|
||||
<section class="content-section" id="stplatSearchForm">
|
||||
<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="td-inner">
|
||||
<input class="input-text xl" type="text" id="srchStplatNm" name="srchStplatNm" title="약관명" maxlength="35"
|
||||
value="<c:out value="${ resultMap.stplat.srchStplatNm }" />">
|
||||
</div>
|
||||
</td>
|
||||
<th>쇼핑몰</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select class="md" id="srchSopmalCd" name="srchSopmalCd" title="쇼핑몰코드">
|
||||
<option value="">전체</option>
|
||||
<c:forEach var="stplatSopmalList" items="${ resultMap.stplatSopmalList }" varStatus="">
|
||||
<option value="${ stplatSopmalList.sopmalCd }">${ stplatSopmalList.sopmalNm }</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>약관구분</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select class="md" id="srchStplatDvCd" name="srchStplatDvCd" title="약관구분코드">
|
||||
<option value="">전체</option>
|
||||
<c:forEach var="stplatDvList" items="${ resultMap.stplatDvList }" varStatus="">
|
||||
<option value="${ stplatDvList.cd }">${ stplatDvList.cdNm }</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="form-control-container">
|
||||
<div class="left"></div>
|
||||
<div class="center">
|
||||
<button class="btn outline" type="button" onclick="fn_clear_input();"><spring:message code="button.init"/></button>
|
||||
<button class="btn primary" type="button" onclick="fn_select_stplat_list(1);"><spring:message code="button.search"/></button>
|
||||
</div>
|
||||
<div class="right"></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>
|
||||
445
src/main/webapp/WEB-INF/views/admin/store/stplat/maStplatU.jsp
Normal file
445
src/main/webapp/WEB-INF/views/admin/store/stplat/maStplatU.jsp
Normal file
@@ -0,0 +1,445 @@
|
||||
<%@ 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 : maStplatU.jsp
|
||||
Description : 약관 수정 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023-12-21 김혜지 최초 생성(퍼블리싱 적용)
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
let saveForm = $("#moveForm");
|
||||
|
||||
const sopmalCd = $("#sopmalCd").val();
|
||||
fn_create_ckeditor('#stplatCn', sopmalCd); //에디터 적용
|
||||
fn_create_ckeditor('#imprtncStplatCn', sopmalCd); //에디터 적용
|
||||
|
||||
/*********************************************************
|
||||
* 약관 목록조회 (리스트로 가기)
|
||||
*********************************************************/
|
||||
$("#listBtn").on("click", function(){
|
||||
$('#moveForm').attr('action', '<c:url value="/admin/store/stplat/selectStplatListInqireForm"/>');
|
||||
$('#moveForm').attr('method', 'post');
|
||||
$('#moveForm').submit();
|
||||
})
|
||||
|
||||
/*********************************************************
|
||||
* 약관 수정
|
||||
*********************************************************/
|
||||
$("#updtBtn").on("click", function() {
|
||||
let saveForm = $('#listForm');
|
||||
saveForm.find("#stplatCn").val(fn_get_editor_data('#stplatCn'));
|
||||
saveForm.find("#imprtncStplatCn").val(fn_get_editor_data('#imprtncStplatCn'));
|
||||
|
||||
if(confirm('약관을 <spring:message code="confirm.common.update"/>')) {
|
||||
$.ajax({
|
||||
type : 'post',
|
||||
url : '<c:url value="/admin/store/stplat/updateStplatUpd"/>',
|
||||
data : saveForm.serialize(),
|
||||
success : function(result) {
|
||||
let data = JSON.parse(result.resBody.result);
|
||||
if(data.status === "0") {
|
||||
alert('<spring:message code="success.common.update"/>');
|
||||
let params = '?stplatInnb=' + data.stplatInnb + '&pageDv=' + data.pageDv + '&srchStplatNm=' + data.srchStplatNm
|
||||
+ '&srchStplatDvCd=' + data.srchStplatDvCd + '&srchSopmalCd=' + data.srchSopmalCd;
|
||||
location.href = '<c:url value="/admin/store/stplat/selectStplatUpdtForm"/>' + params;
|
||||
}
|
||||
|
||||
if(data.status === "1") {
|
||||
alert('<spring:message code="fail.common.update"/>');
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
};
|
||||
})
|
||||
|
||||
|
||||
});
|
||||
|
||||
const fn_select_stplat_list = function() {
|
||||
$('#listForm').attr('action', '<c:url value="/admin/store/stplat/selectStplatListInqireForm"/>');
|
||||
$('#listForm').attr('method', 'post');
|
||||
$('#listForm').submit();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* ********************************************************
|
||||
* 삭제 AJAX
|
||||
******************************************************** */
|
||||
const fn_delete = function() {
|
||||
let deleteForm = $('#listForm');
|
||||
//사용여부 체크 Y - 사용, N - 미사용
|
||||
const checkUrl = '<c:url value="/admin/store/stplat/selectStplatSopmalUse"/>';
|
||||
let useYnResult;
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: checkUrl,
|
||||
data: deleteForm.serialize(),
|
||||
success: function (data) {
|
||||
let str = JSON.parse(data.resBody.result);
|
||||
if(str.result=='Y'){
|
||||
alert("사용중인 약관입니다.");
|
||||
return false;
|
||||
} else {
|
||||
useYnResult = str.result;
|
||||
if(useYnResult == "N") {
|
||||
if(confirm('약관을 <spring:message code="confirm.common.delete"/>')) {
|
||||
const url = '<c:url value="/admin/store/stplat/deleteStplatDel"/>';
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: url,
|
||||
data: deleteForm.serialize(),
|
||||
success: function (data) {
|
||||
let str = JSON.parse(data.resBody.result);
|
||||
if(str.result=='success'){
|
||||
alert('<spring:message code="success.common.delete"/>');
|
||||
// 삭제 후 목록 화면으로 이동
|
||||
//fn_select_stplat_list(1);
|
||||
} else {
|
||||
alert(str.result);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
/*********************************************************
|
||||
* 약관 변경이력 목록 조회
|
||||
*********************************************************/
|
||||
const fn_select_stplatHist_list = function(pageIndex) {
|
||||
$('#listForm').attr('action', '<c:url value="/admin/store/stplat/selectStplatUpdtForm"/>');
|
||||
$('#listForm').attr('method', 'post');
|
||||
$('#pageIndex').val(pageIndex);
|
||||
$('#listForm').submit();
|
||||
}
|
||||
|
||||
/*********************************************************
|
||||
* 변경내역 불러오기
|
||||
*********************************************************/
|
||||
const fn_apply_chng = function(chngSnb, stplatNms, stplatDvNm, stplatDvCd) {
|
||||
|
||||
$('#stplatCn').val(stplatCn);
|
||||
$('#stplatDvCd').val(stplatDvCd).prop('selected', true);
|
||||
$('#stplatDvCd').find('option').removeAttr('selected')
|
||||
$('#stplatDvCd').next().find('[data-value=' + stplatDvCd + ']').addClass('selected');
|
||||
$('#stplatDvCd').next(".nice-select").find("li.selected").removeClass("selected");
|
||||
$('#stplatDvCd').next(".nice-select").find(".current").text(stplatDvNm);
|
||||
//$('#imprtncStplatCn').value = imprtncStplatCn;
|
||||
|
||||
$("#chngSnb").val(chngSnb)
|
||||
let form = $('#chngForm');
|
||||
|
||||
const url = '<c:url value="/admin/store/stplat/selectStplatInqire"/>';
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: url,
|
||||
data: form.serialize(),
|
||||
success: function (data) {
|
||||
let str = JSON.parse(data.resBody.result);
|
||||
|
||||
fn_set_editor_data("#stplatCn", str.stplat.stplatCn);
|
||||
fn_set_editor_data("#imprtncStplatCn", str.stplat.imprtncStplatCn);
|
||||
$("#stplatNm").val(str.stplat.stplatNm)
|
||||
|
||||
$("#stplatDvNm").val(str.stplat.stplatDvNm)
|
||||
}
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
|
||||
/*********************************************************
|
||||
* 약관 수정 폼
|
||||
*********************************************************/
|
||||
$(".updtStplatBtn").on("click", function(){
|
||||
const stplatInnb = $(this).data("innb");
|
||||
let url = '<c:url value="/admin/store/stplat/selectStplatUpdtForm?stplatInnb="/>' + stplatInnb;
|
||||
$('#updtForm').attr('action', url);
|
||||
$('#updtForm').attr('method', 'post');
|
||||
$('#updtForm').submit();
|
||||
})
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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 outline" type="button" id="listBtn" onclick="fn_select_stplat_list();"><spring:message code="button.catalog"/></button>
|
||||
<button class="btn primary" type="button" id="updtBtn"><spring:message code="button.save"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<form id="moveForm">
|
||||
</form>
|
||||
<form id="chngForm">
|
||||
<input type="hidden" name="stplatInnb" value="<c:out value="${ resultMap.stplat.stplatInnb }"/>"/>
|
||||
<input type="hidden" id="chngSnb" name="chngSnb" value=""/>
|
||||
</form>
|
||||
<form id="listForm">
|
||||
<input type="hidden" id="stplatInnb" name="stplatInnb" value="<c:out value="${ resultMap.stplat.stplatInnb }"/>"/>
|
||||
<input type="hidden" id="sopmalCd" name="srchSopmalCd" value="${ resultMap.stplat.srchSopmalCd }"/>
|
||||
<input type="hidden" name="srchStplatDvCd" value="${ resultMap.stplat.srchStplatDvCd }"/>
|
||||
<input type="hidden" name="srchStplatNm" value="${ resultMap.stplat.srchStplatNm }"/>
|
||||
<input type="hidden" name="pageIndex" value="${ resultMap.srchData.pageIndex }"/>
|
||||
<input type="hidden" name="pageUnit" value="${ resultMap.srchData.pageUnit }"/>
|
||||
<input type="hidden" name="pageDv" value="${ resultMap.srchData.pageDv }"/>
|
||||
<%-- 수정 섹션 START --%>
|
||||
<section class="content-section">
|
||||
<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>약관 명<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text lg" id="stplatNm" name="stplatNm" type="text" title="약관명" maxlength="40" value="<c:out value="${ resultMap.stplat.stplatNm }"/>">
|
||||
</div>
|
||||
</td>
|
||||
<th>약관 구분<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select class="md" id="stplatDvCd" name="stplatDvCd" title="약관구분코드">
|
||||
<c:forEach var="stplatDvList" items="${ resultMap.stplatDvList }" varStatus="">
|
||||
<option value="${ stplatDvList.cd }" ${ f:setSelected(stplatDvList.cd, resultMap.stplat.stplatDvCd) }>${ stplatDvList.cdNm }</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>필수여부<span class="red-7"></span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="essntlAt-y" name="essntlAt" value="Y"
|
||||
<c:if test="${resultMap.stplat.essntlAt == 'Y'}">checked</c:if>
|
||||
/>
|
||||
<label for="essntlAt-y">예</label>
|
||||
</div>
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="essntlAt-n" name="essntlAt" value="N"
|
||||
<c:if test="${resultMap.stplat.essntlAt == 'N'}">checked</c:if>
|
||||
/>
|
||||
<label for="essntlAt-n">아니오</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>내용작성여부<span class="red-7"></span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="cnWritngAt-y" name="cnWritngAt" value="Y"
|
||||
<c:if test="${resultMap.stplat.cnWritngAt == 'Y'}">checked</c:if>
|
||||
/>
|
||||
<label for="cnWritngAt-y">예</label>
|
||||
</div>
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="cnWritngAt-n" name="cnWritngAt" value="N"
|
||||
<c:if test="${resultMap.stplat.cnWritngAt == 'N'}">checked</c:if>
|
||||
/>
|
||||
<label for="cnWritngAt-n">아니오</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>회원가입사용여부<span class="red-7"></span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="joinUseAt-y" name="joinUseAt" value="Y"
|
||||
<c:if test="${resultMap.stplat.joinUseAt == 'Y'}">checked</c:if>
|
||||
/>
|
||||
<label for="joinUseAt-y">예</label>
|
||||
</div>
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="joinUseAt-n" name="joinUseAt" value="N"
|
||||
<c:if test="${resultMap.stplat.joinUseAt == 'N'}">checked</c:if>
|
||||
/>
|
||||
<label for="joinUseAt-n">아니오</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>비회원구매여부<span class="red-7"></span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="nmbrPurchsAt-y" name="nmbrPurchsAt" value="Y"
|
||||
<c:if test="${resultMap.stplat.nmbrPurchsAt == 'Y'}">checked</c:if>
|
||||
/>
|
||||
<label for="nmbrPurchsAt-y">예</label>
|
||||
</div>
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="nmbrPurchsAt-n" name="nmbrPurchsAt" value="N"
|
||||
<c:if test="${resultMap.stplat.nmbrPurchsAt == 'N'}">checked</c:if>
|
||||
/>
|
||||
<label for="nmbrPurchsAt-n">아니오</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>사용여부<span class="red-7"></span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select class="md" id="useAt" name="useAt" title="약관구분코드">
|
||||
<option value="Y" ${ f:setSelected('Y', resultMap.stplat.useAt) }>사용</option>
|
||||
<option value="N" ${ f:setSelected('N', resultMap.stplat.useAt) }>미사용</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>약관 전문<span class="red-7">*</span></th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<textarea class="textarea" id="stplatCn" name="stplatCn" title="약관전문" rows="8"><c:out value="${ resultMap.stplat.stplatCn }"/></textarea>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>중요고지 사항</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<textarea class="textarea" id="imprtncStplatCn" name="imprtncStplatCn" title="중요고지사항" rows="8"><c:out value="${ resultMap.stplat.imprtncStplatCn }"/></textarea>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>적용 쇼핑몰</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<c:out value="${ resultMap.stplat.sopmalNm }" />
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>변경사유<span class="red-7">*</span></th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<textarea class="textarea" id="chngResnCn" name="chngResnCn" title="변경사유" rows="4" maxlength="1000"><c:out value="${ resultMap.stplat.chngResnCn }"/></textarea>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
<%-- 수정 섹션 END --%>
|
||||
<%-- 리스트 출력 섹션 START --%>
|
||||
<section class="content-section">
|
||||
<h3 class="content-section__title">변경이력</h3>
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical">
|
||||
<caption>약관 변경이력</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 4%;">
|
||||
<col style="width: auto;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 7%;">
|
||||
<col style="width: 7%">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>번호</th>
|
||||
<th>변경사유</th>
|
||||
<th>변경일시</th>
|
||||
<th>변경자</th>
|
||||
<th>관리</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<%-- 리스트 BODY START --%>
|
||||
<tbody>
|
||||
<c:choose>
|
||||
<c:when test="${ not empty resultMap.resultList }">
|
||||
<c:forEach items="${ resultMap.resultList }" var="histList" varStatus="status">
|
||||
<tr>
|
||||
<td><c:out value="${ histList.chngSnb }"/></td>
|
||||
<td class="left">
|
||||
<a class="under-line" onclick="fn_open_modal('#stplat-modal','#stplatHist-dtl-modal','selectStplatChangePopup',
|
||||
{'stplatInnb': <c:out value="${ histList.stplatInnb }"/>,'chngSnb': <c:out value="${ histList.chngSnb }"/>}); return false;">
|
||||
<c:out value="${ histList.chngResnCn }"/></a>
|
||||
</td>
|
||||
<td><c:out value="${ histList.registDt }"/></td>
|
||||
<td><c:out value="${ histList.mngrNm }"/></td>
|
||||
<td>
|
||||
<div class="manage-btn-container">
|
||||
<button class="btn xsm outline" onclick="fn_apply_chng('${ histList.chngSnb }', '${ histList.stplatNm }', '${ histList.stplatDvNm }', '${ histList.stplatDvCd }'); return false;">적용</button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<tr>
|
||||
<td colspan="8"><spring:message code="common.nodata"/></td>
|
||||
</tr>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</tbody>
|
||||
<%-- 리스트 BODY END --%>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
<%-- 리스트 출력 섹션 END --%>
|
||||
</form>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
<div id="stplat-modal">
|
||||
</div>
|
||||
</html>
|
||||
500
src/main/webapp/WEB-INF/views/admin/sys/authgrp/maAuthGrpC.jsp
Normal file
500
src/main/webapp/WEB-INF/views/admin/sys/authgrp/maAuthGrpC.jsp
Normal file
@@ -0,0 +1,500 @@
|
||||
<%@ 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 : maAuthGrpC.jsp
|
||||
Description : 권한 등급 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
since : 2023.12.19 최범식 최초 생성
|
||||
--%>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
||||
$('[name=srchFnctNm], [name=srchFnctUrl]').keydown(function(event) {
|
||||
if (event.keyCode === 13) {
|
||||
event.preventDefault();
|
||||
fn_select_fnctList('1');
|
||||
}
|
||||
});
|
||||
|
||||
let fnctStr = '${resultMap.mbrGradList[0].detailList[0].fnctIdsArr}';
|
||||
|
||||
if (fnctStr !== null && fnctStr !== '') {
|
||||
inFnctArr = fnctStr.split('$');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
/* ********************************************************
|
||||
* 기능 팝업 전체 선택
|
||||
******************************************************** */
|
||||
const fn_check_selectAll = function(_target) {
|
||||
|
||||
if ($(_target).is(':checked')) {
|
||||
$('[name=fnctPopChk]').prop('checked', true);
|
||||
} else {
|
||||
$('[name=fnctPopChk]').prop('checked', false);
|
||||
}
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 기능 팝업 전체 해제
|
||||
******************************************************** */
|
||||
const fn_uncheck_selectAll = function() {
|
||||
|
||||
let chkCnt = $('[name=fnctPopChk]:checked').length;
|
||||
let allCnt = $('[name=fnctPopChk]').length;
|
||||
|
||||
if (chkCnt !== allCnt && $('#check-all').is(':checked')) {
|
||||
|
||||
$('#check-all').prop('checked', false);
|
||||
|
||||
} else if (chkCnt !== allCnt && !$('#check-all').is(':checked') && allCnt - chkCnt === 1 ) {
|
||||
|
||||
$('#check-all').prop('checked', true);
|
||||
|
||||
} else if (chkCnt === allCnt ) {
|
||||
|
||||
$('#check-all').prop('checked', true);
|
||||
}
|
||||
}
|
||||
/* ********************************************************
|
||||
* 모달 닫기 리스트 삭제
|
||||
******************************************************** */
|
||||
const fn_remove_fnctList = function() {
|
||||
|
||||
$('#pageDiv').html('');
|
||||
fn_clear_input();
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 모달화면 -> 본화면으로 데이터 전송 > 데이타 정리
|
||||
******************************************************** */
|
||||
let inFnctArr = [];
|
||||
const fn_collect_params = function() {
|
||||
|
||||
$('[name=fnctPopChk]:checked').each(function() {
|
||||
|
||||
if ($(this).val() === '') return;
|
||||
let fnctId = $(this).closest('td').find('[name=fnctId]').val();
|
||||
let fnctNm = $(this).closest('td').find('[name=fnctNm]').val();
|
||||
let fnctDvNm = $(this).closest('td').find('[name=fnctDvNm]').val();
|
||||
let fnctDvCd = $(this).closest('td').find('[name=fnctDvCd]').val();
|
||||
let fnctUri = $(this).closest('td').find('[name=fnctUri]').val();
|
||||
let fnctData = {
|
||||
'fnctId' : fnctId,
|
||||
'fnctNm' : fnctNm,
|
||||
'fnctDvNm' : fnctDvNm,
|
||||
'fnctDvCd' : fnctDvCd,
|
||||
'fnctUri' : fnctUri
|
||||
};
|
||||
if (inFnctArr.includes(fnctId)) {
|
||||
|
||||
alert('[' + fnctNm + '] 이미 선택된 기능입니다.');
|
||||
$('[name=fnctPopChk]').prop('checked', false);
|
||||
return;
|
||||
|
||||
} else {
|
||||
inFnctArr.push(fnctId);
|
||||
fn_add_input(fnctData);
|
||||
$('[name=fnctPopChk]').prop('checked', false);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/* ********************************************************
|
||||
* 기능 추가 버튼 기능
|
||||
******************************************************** */
|
||||
const fn_add_input = function(_data) {
|
||||
|
||||
const fnctInfore = '<tr>'
|
||||
+ ' <td>'
|
||||
+ ' <input type="hidden" name="fnctIds" value="' + _data.fnctId + '">'
|
||||
+ ' <input type="hidden" name="fnctNm" value="' + _data.fnctNm + '">'
|
||||
+ ' <input type="hidden" name="fnctDvNm" value="' + _data.fnctDvNm + '">'
|
||||
+ ' <input type="hidden" name="fnctDvCd" value="' + _data.fnctDvCd +'">'
|
||||
+ ' <input type="hidden" name="fnctUri" value="' + _data.fnctUri +'">'
|
||||
+ ' <label class="b-checkbox checkbox is-medium">'
|
||||
+ ' <input type="checkbox" name="fnctChk" value="' + _data.fnctId + '">'
|
||||
+ ' <span class="check"></span>'
|
||||
+ ' </label>'
|
||||
+ ' </td>'
|
||||
+ ' <td class="text-left">' + _data.fnctNm + '</td>'
|
||||
+ ' <td>' + _data.fnctDvNm + '</td>'
|
||||
+ ' <td class="text-left">' + _data.fnctUri +'</td>'
|
||||
+ ' </tr>'
|
||||
$('#fnctList').append(fnctInfore);
|
||||
$('#noData').hide();
|
||||
|
||||
let cnt = $('#fnctList').children().length - 1;
|
||||
$('#total').text(cnt);
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 기능 삭제 버튼 기능
|
||||
******************************************************** */
|
||||
const fn_remove_Input = function() {
|
||||
|
||||
const target = $('[name=fnctChk]:checked');
|
||||
if (target.length === 0) {
|
||||
|
||||
alert('항목을 선택해 주세요.');
|
||||
return;
|
||||
|
||||
} else {
|
||||
|
||||
target.each(function(tg) {
|
||||
|
||||
if (inFnctArr.length > 0) {
|
||||
|
||||
let fnctId = $(this).val();
|
||||
inFnctArr = inFnctArr.filter((fid) => fid !== fnctId);
|
||||
}
|
||||
|
||||
$(this).parents('tr').remove();
|
||||
});
|
||||
}
|
||||
|
||||
let cnt = $('#fnctList').children().length;
|
||||
if (cnt === 1) $('#noData').show();
|
||||
$('#total').text(cnt - 1);
|
||||
$('#btn_fnctAll').prop('checked', false);
|
||||
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 권한그룹 등록
|
||||
******************************************************** */
|
||||
const fn_regist_authGrp = function() {
|
||||
|
||||
if(!confirm('기능을 <spring:message code="confirm.common.insert"/>')) return;
|
||||
|
||||
let fnctIdArr = [];
|
||||
$('[name=fnctChk]').each(function() {
|
||||
fnctIdArr.push($(this).val());
|
||||
});
|
||||
let fnctIds = fnctIdArr.join(',');
|
||||
|
||||
if(fnctIds === ''){
|
||||
alert('기능은 최소 하나 이상 등록해야합니다.');
|
||||
return;
|
||||
}
|
||||
|
||||
let params = $('#regForm').serialize() + '&fnctIds=' + fnctIds;
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url : '<c:url value="/admin/sys/authgrp/insertAuthGrpRegist"/>',
|
||||
data: params,
|
||||
success: function (result) {
|
||||
let authorId = JSON.parse(result.resBody.result).authorId;
|
||||
$('#backupForm').find('[name=authorId]').val(authorId);
|
||||
$('#backupForm').find('[name=pageDv]').val('I');
|
||||
|
||||
if(authorId !== '' && authorId !== undefined ){
|
||||
alert('<spring:message code="success.common.insert"/>');
|
||||
$('#backupForm').attr('action', '<c:url value="/admin/sys/authgrp/selectAuthGrpUpdtForm"/>');
|
||||
$('#backupForm').submit();
|
||||
} else {
|
||||
alert('<spring:message code="fail.common.insert"/>');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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 type="button" class="btn outline" onclick="fn_goto_list()"><spring:message code="button.catalog"/></button>
|
||||
<button type="button" class="btn primary" onclick="fn_regist_authGrp();"><spring:message code="button.save"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<section class="content-section">
|
||||
<form id="regForm">
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>권한그룹</caption>
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 38%;">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>권한그룹 명<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input type="text" class="input-text xl" name="authorNm" value="${resultMap.mbrGradList[0].detailList[0].authorNm}" title="권한그룹 명" maxlength="43">
|
||||
</div>
|
||||
</td>
|
||||
<th>시스템 구분<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box" id="sysDvCd">
|
||||
<select name="sysDvCd" id="srchSys-select" title="시스템 구분" >
|
||||
<option value="" ${f:setSelected(resultMap.mbrGradList[0].detailList[0].sysDvCd, '')}>전체</option>
|
||||
<c:forEach var="sysDvCd" items="${resultMap.sysDvList}" varStatus="status">
|
||||
<option value="${sysDvCd.cd}" ${f:setSelected(resultMap.mbrGradList[0].detailList[0].sysDvCd, sysDvCd.cd) }> ${sysDvCd.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>권한그룹 설명<span class="red-7">*</span></th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<textarea class="textarea" name="authorDc" title="권한그룹 설명" rows="8" maxlength="200">${resultMap.mbrGradList[0].detailList[0].authorDc }</textarea>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
<section class="content-section">
|
||||
<h3 class="content-section__title">기능 정보</h3>
|
||||
<div class="form-control-container">
|
||||
<div class="left">
|
||||
<div class="search-number">
|
||||
<span class="search-number__text">총 <strong id="total"><c:out value="${resultMap.mbrGradList[0].total }"/></strong>건</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="center">
|
||||
</div>
|
||||
<div class="right">
|
||||
<button type="button" class="btn dark sm" onclick="fn_remove_Input(this);">
|
||||
<spring:message code="button.delete"/>
|
||||
</button>
|
||||
<a href="#fnct-modal" rel="modal:open" class="btn primary outline sm" id="fnctPopOpen" onclick="fn_select_fnctList('1');" >
|
||||
<spring:message code="button.add"/>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="spacing">
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 4%;">
|
||||
<col style="width: 24%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: auto;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<label class="b-checkbox checkbox is-medium check-all">
|
||||
<input type="checkbox" value="" id="btn_fnctAll">
|
||||
<span class="check"></span>
|
||||
</label>
|
||||
</th>
|
||||
<th>기능 명</th>
|
||||
<th>기능 구분</th>
|
||||
<th>URL</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="fnctList">
|
||||
<c:if test="${not empty resultMap.mbrGradList[0].fnctList }" >
|
||||
<c:forEach var="fnct" items="${resultMap.mbrGradList[0].fnctList }" varStatus="status">
|
||||
<tr>
|
||||
<td>
|
||||
<input type="hidden" name="fnctIds[]" value="${fnct.fnctId}">
|
||||
<label class="b-checkbox checkbox is-medium">
|
||||
<input type="checkbox" name="fnctChk" value="${fnct.fnctId}" >
|
||||
<span class="check"></span>
|
||||
</label>
|
||||
</td>
|
||||
<td class="text-left">${fnct.fnctNm }</td>
|
||||
<td>${fnct.fnctDvNm }</td>
|
||||
<td class="text-left">${fnct.fnctUri }</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
<tr id="noData" style="display: none;">
|
||||
<td colspan="5">해당 권한그룹에 포함되는 기능정보를 선택하세요.</td>
|
||||
</tr>
|
||||
</c:if>
|
||||
<c:if test="${empty resultMap.mbrGradList[0].fnctList }" >
|
||||
<tr id="noData">
|
||||
<td colspan="5">해당 권한그룹에 포함되는 기능정보를 선택하세요.</td>
|
||||
</tr>
|
||||
</c:if>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<!-- 기능 조회 모달 -->
|
||||
<div id="fnct-modal" class="modal" style="max-width: 900px; max-height: 800px;">
|
||||
<div class="modal-header">
|
||||
<h4>기능 조회</h4>
|
||||
</div>
|
||||
<div class="modal-content">
|
||||
<form id="fnctForm">
|
||||
<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="td-inner" >
|
||||
<input type="text" class="input-text xl" name="srchFnctNm" id="srchFnctNm" />
|
||||
</div>
|
||||
</td>
|
||||
<th>기능 구분</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select name="srchFnctDv" id="srchFnct-select" title="기능 구분" >
|
||||
<option value="">전체</option>
|
||||
<c:forEach var="fnctDvCd" items="${resultMap.fnctDvList}" varStatus="status">
|
||||
<option value="${fnctDvCd.cd}"> ${fnctDvCd.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>URL</th>
|
||||
<td>
|
||||
<div class="td-inner" >
|
||||
<input type="text" class="input-text xl" name="srchFnctUri" id="srchFnctUri"/>
|
||||
</div>
|
||||
</td>
|
||||
<th>시스템 구분</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select name="srchSysDv" id="srchSysDv-select" title="시스템 구분" >
|
||||
<option value="" checked>전체</option>
|
||||
<c:forEach var="sysDvCd" items="${resultMap.sysDvList}" varStatus="status">
|
||||
<option value="${sysDvCd.cd}"> ${sysDvCd.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</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" id="resetBtn" onclick="fn_clear_input();"><spring:message code="button.init"/></button>
|
||||
<button type="button" class="btn primary" id="searchBtn" onclick="fn_select_fnctList('1');"><spring:message code="button.search"/></button>
|
||||
</div>
|
||||
<div class="right"></div>
|
||||
</div>
|
||||
<div id="pageDiv"></div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#" rel="modal:close" class="btn outline" onclick="fn_remove_fnctList();" ><spring:message code="button.close"/></a>
|
||||
<button type="button" class="btn primary" onclick="fn_collect_params();"><spring:message code="button.apply"/></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form id="backupForm" method="post" >
|
||||
<input type="hidden" name="srchAuthorNm" value="${resultMap.srchList[0].srchAuthorNm}" />
|
||||
<input type="hidden" name="srchSysDvCd" value="${resultMap.srchList[0].srchSysDvCd}" />
|
||||
<input type="hidden" name="pageUnit" value="${resultMap.srchList[0].pageUnit }" />
|
||||
<input type="hidden" name="pageIndex" value="${resultMap.srchList[0].pageIndex }" />
|
||||
<input type="hidden" name="authorId" value="" />
|
||||
<input type="hidden" name="pageDv" value="" />
|
||||
</form>
|
||||
</body>
|
||||
<script>
|
||||
/* ********************************************************
|
||||
* 권한 그룹 목록 이동
|
||||
******************************************************** */
|
||||
const fn_goto_list = function() {
|
||||
|
||||
$('#backupForm').attr('action', '<c:url value="/admin/sys/authgrp/selectAuthGrpListInqireForm"/>');
|
||||
$('#backupForm').submit();
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 기능 목록조회
|
||||
******************************************************** */
|
||||
const fn_select_fnctList = function(pageIndex) {
|
||||
|
||||
let srchFnctNm = $('#fnct-modal').find('#srchFnctNm').val() === undefined ? '' : $('#srchFnctNm').val();
|
||||
let srchFnctUri = $('#fnct-modal').find('#srchFnctUri').val() === undefined ? '' : $('#srchFnctUri').val();
|
||||
let srchSysDvCd = $('#fnct-modal').find('#srchSysDv-select').val() === undefined ? '' : $('#srchSysDv-select').val();
|
||||
let srchFnctDv = $('#fnct-modal').find('#srchFnct-select').val() === undefined ? '' : $('#srchFnct-select').val();
|
||||
let params = {
|
||||
'srchFnctNm' : srchFnctNm,
|
||||
'srchFnctUri' : srchFnctUri,
|
||||
'srchFnctDv' : srchFnctDv,
|
||||
'srchSysDvCd' : srchSysDvCd,
|
||||
'pageIndex' : pageIndex,
|
||||
'pageUnit' : '5'
|
||||
};
|
||||
$.ajax({
|
||||
type : 'POST',
|
||||
url : '<c:url value="/admin/sys/authgrp/selectAuthGrpListInqirePopup"/>',
|
||||
data : params,
|
||||
success : function(data) {
|
||||
|
||||
$('#pageDiv').html(data);
|
||||
// $('#srchFnct-select').niceSelect();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**********************************************
|
||||
* 기능 검색 초기화
|
||||
***********************************************/
|
||||
const fn_clear_input = function() {
|
||||
|
||||
$('[name=srchFnctNm]').val('');
|
||||
$('[name=srchFnctUri]').val('');
|
||||
$('#srchFnct-select').val('').niceSelect('update');
|
||||
$('#srchSysDv-select').val('').niceSelect('update');
|
||||
|
||||
|
||||
}
|
||||
|
||||
</script>
|
||||
</html>
|
||||
@@ -0,0 +1,195 @@
|
||||
<%@ 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 : maAuthGrpListInqireForm.jsp
|
||||
Description : 권한그룹 목록 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-01-19 최범식 최초 생성
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
|
||||
let pageIndex = '<c:out value="${ resultMap.paramVO.pageIndex }"/>';
|
||||
let pageUnit = '<c:out value="${ resultMap.paramVO.pageUnit }"/>';
|
||||
let pageDv = '<c:out value="${ resultMap.paramVO.pageDv }"/>';
|
||||
|
||||
if (pageDv == '') {
|
||||
fn_select_authGrp_list(pageIndex, pageUnit);
|
||||
} else {
|
||||
fn_select_authGrp_list('1', '10');
|
||||
}
|
||||
|
||||
$('[name=srchAuthorNm]').on('keydown', function(event) {
|
||||
if (event.keyCode === 13) {
|
||||
event.preventDefault();
|
||||
fn_select_authGrp_list(1);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
/* ********************************************************
|
||||
* 권한그룹 목록조회
|
||||
******************************************************** */
|
||||
const fn_select_authGrp_list = function(pageIndex, pageUnit) {
|
||||
|
||||
if (pageIndex == undefined || pageUnit == '') {
|
||||
$('#pageIndex').val('1');
|
||||
} else {
|
||||
$('#pageIndex').val(pageIndex);
|
||||
}
|
||||
|
||||
let params = $('#srchForm').serialize();
|
||||
if (pageUnit != undefined || pageUnit == '') {
|
||||
|
||||
params += '&pageUnit=' + pageUnit;
|
||||
} else {
|
||||
params += '&pageUnit=' + $('#pageUnit').val();
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type : 'post',
|
||||
url : '<c:url value="/admin/sys/authgrp/selectAuthGrpListInqire"/>',
|
||||
data : params,
|
||||
success : function(data) {
|
||||
$('#pageDiv').html(data);
|
||||
$('#pageUnit').niceSelect();
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/**********************************************
|
||||
* 권한그룹 검색 초기화
|
||||
***********************************************/
|
||||
const fn_clear_input = function() {
|
||||
|
||||
$('[name=srchAuthorNm]').val('');
|
||||
$('#srchSys-select').val('').niceSelect('update');
|
||||
}
|
||||
|
||||
/**********************************************
|
||||
* 권한그룹 등록 화면 이동
|
||||
***********************************************/
|
||||
const fn_move_authGrpRegist = function() {
|
||||
|
||||
$('#srchForm').attr('action', '<c:url value="/admin/sys/authgrp/selectAuthGrpRegistForm"/>');
|
||||
$('#srchForm').attr('method', 'post');
|
||||
$('#srchForm').submit();
|
||||
}
|
||||
|
||||
/**********************************************
|
||||
* 권한그룹 수정 화면 이동
|
||||
***********************************************/
|
||||
const fn_move_authGrpDetail = function(_authorId) {
|
||||
|
||||
$('#authorId').val(_authorId);
|
||||
$('#srchForm').attr('action', '<c:url value="/admin/sys/authgrp/selectAuthGrpUpdtForm"/>');
|
||||
$('#srchForm').attr('method', 'post');
|
||||
$('#srchForm').submit();
|
||||
}
|
||||
|
||||
/**********************************************
|
||||
* 권한그룹 엑셀 다운로드
|
||||
***********************************************/
|
||||
const fn_down_excelFile = function() {
|
||||
|
||||
$('#srchForm').attr('action', '<c:url value="/admin/sys/authgrp/excelFileDownload"/>');
|
||||
$('#srchForm').attr('method', 'post');
|
||||
$('#srchForm').submit();
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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_move_authGrpRegist();">권한 <spring:message code="button.insert"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<form id="srchForm" >
|
||||
<input type="hidden" id="authorId" name="authorId" />
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" />
|
||||
<%-- 검색 섹션 START --%>
|
||||
<section class="content-section" >
|
||||
<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="td-inner">
|
||||
<input class="input-text xl" type="text" name="srchAuthorNm" title="권한그룹명" value="${resultMap.srchList[0].srchAuthorNm}"/>
|
||||
</div>
|
||||
</td>
|
||||
<th>시스템 구분</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box" id="srchSysDvCd">
|
||||
<select name="srchSysDvCd" id="srchSys-select" title="시스템 구분" >
|
||||
<option value="" ${f:setSelected(resultMap.paramVO.srchSysDvCd, '')}>전체</option>
|
||||
<c:forEach var="sysDvCd" items="${resultMap.sysDvList}" varStatus="status">
|
||||
<option value="${sysDvCd.cd}" ${f:setSelected(resultMap.srchList[0].srchSysDvCd, sysDvCd.cd) }> ${sysDvCd.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="form-control-container">
|
||||
<div class="left"></div>
|
||||
<div class="center">
|
||||
<button type="button" class="btn primary" onclick="fn_select_authGrp_list('1');"><spring:message code="button.search"/></button>
|
||||
<button type="button" class="btn outline" onclick="fn_clear_input();"><spring:message code="button.init"/></button>
|
||||
</div>
|
||||
<div class="right"></div>
|
||||
</div>
|
||||
</section>
|
||||
<%-- 검색 섹션 END --%>
|
||||
<%-- 리스트 출력 섹션 START --%>
|
||||
<div id="pageDiv"></div>
|
||||
</form>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,86 @@
|
||||
<%@ 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 : maAuthGrpListInqirePopupR.jsp
|
||||
Description : 기능 조회 팝업
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
since : 2024-01-16 최범식 최초
|
||||
--%>
|
||||
|
||||
<div class="form-control-container">
|
||||
<div class="left">
|
||||
<div class="search-number" id="divTotalCount">
|
||||
<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>
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical">
|
||||
<caption>기능 정보</caption>
|
||||
<colgroup>
|
||||
<col style="width: 8%;">
|
||||
<col style="width: 20%;">
|
||||
<col style="width: 14%;">
|
||||
<col style="width: auto;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<label class="b-checkbox checkbox is-medium check-all">
|
||||
<input type="checkbox" name="fnctPopChk" id="check-all" value="" onchange="fn_check_selectAll(this);">
|
||||
<span class="check"></span>
|
||||
</label>
|
||||
</th>
|
||||
<th>기능 명</th>
|
||||
<th>기능구분</th>
|
||||
<th>URL</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:choose>
|
||||
<c:when test="${not empty resultMap.fnctList}">
|
||||
<c:forEach var="fnct" items="${ resultMap.fnctList }" varStatus="status" >
|
||||
<tr>
|
||||
<td>
|
||||
<input type="hidden" name="fnctId" value="${fnct.fnctId }">
|
||||
<input type="hidden" name="fnctNm" value="${fnct.fnctNm }">
|
||||
<input type="hidden" name="fnctDvNm" value="${fnct.fnctDvNm }">
|
||||
<input type="hidden" name="sysDvCd" value="${fnct.sysDvCd }">
|
||||
<input type="hidden" name="fnctDvCd" value="${fnct.fnctDvCd }">
|
||||
<input type="hidden" name="fnctUri" value="${fnct.fnctUri }">
|
||||
<input type="hidden" name="fnctDc" value="${fnct.fnctDc }">
|
||||
<label class="b-checkbox checkbox is-medium">
|
||||
<input type="checkbox" name="fnctPopChk" value="f${status.index }" onclick="fn_uncheck_selectAll();">
|
||||
<span class="check"></span>
|
||||
</label>
|
||||
</td>
|
||||
<td><span class="fw-300">${fnct.fnctNm }</span></td>
|
||||
<td><span class="fw-300">${fnct.fnctDvNm }</span></td>
|
||||
<td class="left" style="word-break: break-all"><span class="fw-300">${fnct.fnctUri }</span></td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<tr>
|
||||
<td colspan="4">조회된 데이터가 없습니다.</td>
|
||||
</tr>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="pagination__container" id="divPageInfo">
|
||||
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_fnctList" />
|
||||
</div>
|
||||
@@ -0,0 +1,119 @@
|
||||
<%@ 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 : maAuthGrpListInqireR.jsp
|
||||
Description : 권한그룹 리스트
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-01-19 최범식 최초 생성
|
||||
--%>
|
||||
<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_authGrp_list('1')">
|
||||
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
|
||||
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paramVO.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">
|
||||
<button type="button" class="btn outline sm" onclick="fn_down_excelFile();">
|
||||
<i class="icon icon_excel"></i>
|
||||
<spring:message code="button.excelDownload"/>
|
||||
</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: auto;">
|
||||
<col style="width: 18%;">
|
||||
<col style="width: auto;">
|
||||
<col style="width: 6%;">
|
||||
<col style="width: 6%;">
|
||||
<col style="width: 6%;">
|
||||
<col style="width: 6%;">
|
||||
<col style="width: 6%;">
|
||||
<col style="width: 10%;">
|
||||
<col style="width: 7%">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>번호</th>
|
||||
<th>시스템 구분</th>
|
||||
<th>권한 명</th>
|
||||
<th>권한 설명</th>
|
||||
<th>조회</th>
|
||||
<th>화면이동</th>
|
||||
<th>등록</th>
|
||||
<th>수정</th>
|
||||
<th>삭제</th>
|
||||
<th>등록일자</th>
|
||||
<th>관리</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<%-- 리스트 BODY START --%>
|
||||
<tbody>
|
||||
<c:choose>
|
||||
<c:when test="${ not empty resultMap.resultList }">
|
||||
<c:forEach items="${resultMap.resultList }" var="authGrl" varStatus="status">
|
||||
<tr>
|
||||
<td><c:out value="${resultMap.paginationInfo.totalRecordCount - authGrl.rnum + 1 }" /></td>
|
||||
<td><c:out value="${authGrl.sysDvNm }"/></td>
|
||||
<td class="left"><c:out value="${authGrl.authorNm }"/></td>
|
||||
<td class="left" style="word-break: break-all;"><c:out value="${authGrl.authorDc }"/></td>
|
||||
<td><c:out value="${authGrl.r }"/></td>
|
||||
<td><c:out value="${authGrl.f }"/></td>
|
||||
<td><c:out value="${authGrl.i }"/></td>
|
||||
<td><c:out value="${authGrl.u }"/></td>
|
||||
<td><c:out value="${authGrl.d }"/></td>
|
||||
<td><c:out value="${authGrl.registDt}"/></td>
|
||||
<td>
|
||||
<div class="manage-btn-container">
|
||||
<button type="button" class="btn xsm primary outline" onclick="fn_move_authGrpDetail('${authGrl.authorId}');"><spring:message code="button.update"/></button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<tr>
|
||||
<td class="row-no-data" colspan="10">조회된 데이터가 없습니다.</td>
|
||||
</tr>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</table>
|
||||
</div>
|
||||
<%-- 리스트 BODY END --%>
|
||||
</section>
|
||||
<div class="pagination__container">
|
||||
<ui:pagination paginationInfo="${ resultMap.paginationInfo }" type="image" jsFunction="fn_select_authGrp_list" />
|
||||
</div>
|
||||
541
src/main/webapp/WEB-INF/views/admin/sys/authgrp/maAuthGrpU.jsp
Normal file
541
src/main/webapp/WEB-INF/views/admin/sys/authgrp/maAuthGrpU.jsp
Normal file
@@ -0,0 +1,541 @@
|
||||
<%@ 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 : maAuthGrpU.jsp
|
||||
Description : 권한 등급 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
since : 2023.12.19 최범식 최초 생성
|
||||
--%>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
|
||||
<script>
|
||||
|
||||
$(document).ready(function() {
|
||||
$('[name=srchFnctNm], [name=srchFnctUri]').keydown(function(event) {
|
||||
if (event.keyCode === 13) {
|
||||
event.preventDefault();
|
||||
fn_select_fnctList('1');
|
||||
}
|
||||
});
|
||||
|
||||
let fnctStr = '${resultMap.mbrGradList[0].detailList[0].fnctIdsArr}';
|
||||
|
||||
if (fnctStr !== null && fnctStr !== '') {
|
||||
inFnctArr = fnctStr.split('$');
|
||||
}
|
||||
});
|
||||
|
||||
/* ********************************************************
|
||||
* 기능 팝업 전체 선택
|
||||
******************************************************** */
|
||||
const fn_check_selectAll = function(_target) {
|
||||
|
||||
if ($(_target).is(':checked')) {
|
||||
|
||||
$('[name=fnctPopChk]').prop('checked', true);
|
||||
} else {
|
||||
|
||||
$('[name=fnctPopChk]').prop('checked', false);
|
||||
}
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 기능 팝업 전체 해제
|
||||
******************************************************** */
|
||||
const fn_uncheck_selectAll = function() {
|
||||
|
||||
let chkCnt = $('[name=fnctPopChk]:checked').length;
|
||||
let allCnt = $('[name=fnctPopChk]').length;
|
||||
|
||||
if (chkCnt !== allCnt && $('#check-all').is(':checked')) {
|
||||
|
||||
$('#check-all').prop('checked', false);
|
||||
|
||||
} else if (chkCnt !== allCnt && !$('#check-all').is(':checked') && allCnt - chkCnt === 1 ) {
|
||||
|
||||
$('#check-all').prop('checked', true);
|
||||
|
||||
} else if (chkCnt === allCnt ) {
|
||||
|
||||
$('#check-all').prop('checked', true);
|
||||
}
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 모달 닫기 리스트 삭제
|
||||
******************************************************** */
|
||||
const fn_remove_fnctList = function() {
|
||||
|
||||
$('#pageDiv').html('');
|
||||
fn_clear_input();
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 모달화면 -> 본화면으로 데이터 전송 > 데이타 정리
|
||||
******************************************************** */
|
||||
let inFnctArr = [];
|
||||
const fn_collect_params = function() {
|
||||
|
||||
$('[name=fnctPopChk]:checked').each(function() {
|
||||
|
||||
if ($(this).val() === '') return;
|
||||
let fnctId = $(this).closest('td').find('[name=fnctId]').val();
|
||||
let fnctNm = $(this).closest('td').find('[name=fnctNm]').val();
|
||||
let fnctDvNm = $(this).closest('td').find('[name=fnctDvNm]').val();
|
||||
let fnctDvCd = $(this).closest('td').find('[name=fnctDvCd]').val();
|
||||
let fnctUri = $(this).closest('td').find('[name=fnctUri]').val();
|
||||
let fnctData = {
|
||||
'fnctId' : fnctId,
|
||||
'fnctNm' : fnctNm,
|
||||
'fnctDvNm' : fnctDvNm,
|
||||
'fnctDvCd' : fnctDvCd,
|
||||
'fnctUri' : fnctUri
|
||||
};
|
||||
if (inFnctArr.includes(fnctId)) {
|
||||
|
||||
alert('[' + fnctNm + '] 이미 선택된 기능입니다.');
|
||||
$('[name=fnctPopChk]').prop('checked', false);
|
||||
return;
|
||||
|
||||
} else {
|
||||
inFnctArr.push(fnctId);
|
||||
fn_add_input(fnctData);
|
||||
$('[name=fnctPopChk]').prop('checked', false);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/* ********************************************************
|
||||
* 기능 추가 버튼 기능
|
||||
******************************************************** */
|
||||
const fn_add_input = function(_data) {
|
||||
|
||||
const fnctInfore = '<tr>'
|
||||
+ ' <td>'
|
||||
+ ' <input type="hidden" name="fnctIds" value="' + _data.fnctId + '">'
|
||||
+ ' <input type="hidden" name="fnctNm" value="' + _data.fnctNm + '">'
|
||||
+ ' <input type="hidden" name="fnctDvNm" value="' + _data.fnctDvNm + '">'
|
||||
+ ' <input type="hidden" name="fnctDvCd" value="' + _data.fnctDvCd +'">'
|
||||
+ ' <input type="hidden" name="fnctUri" value="' + _data.fnctUri +'">'
|
||||
+ ' <label class="b-checkbox checkbox is-medium">'
|
||||
+ ' <input type="checkbox" name="fnctChk" value="' + _data.fnctId + '">'
|
||||
+ ' <span class="check"></span>'
|
||||
+ ' </label>'
|
||||
+ ' </td>'
|
||||
+ ' <td class="text-left">' + _data.fnctNm + '</td>'
|
||||
+ ' <td>' + _data.fnctDvNm + '</td>'
|
||||
+ ' <td class="text-left">' + _data.fnctUri +'</td>'
|
||||
+ ' </tr>'
|
||||
$('#fnctList').append(fnctInfore);
|
||||
$('#noData').hide();
|
||||
|
||||
let cnt = $('#fnctList').children().length - 1;
|
||||
$('#total').text(cnt);
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 기능 삭제 버튼 기능
|
||||
******************************************************** */
|
||||
const fn_remove_Input = function() {
|
||||
|
||||
const target = $('[name=fnctChk]:checked');
|
||||
if (target.length === 0) {
|
||||
alert('항목을 선택해 주세요.');
|
||||
return;
|
||||
} else {
|
||||
target.each(function(tg) {
|
||||
if (inFnctArr.length > 0) {
|
||||
let fnctId = $(this).val();
|
||||
inFnctArr = inFnctArr.filter((fci) => fci !== fnctId);
|
||||
}
|
||||
$(this).parents('tr').remove();
|
||||
});
|
||||
}
|
||||
|
||||
let cnt = $('#fnctList').children().length;
|
||||
if (cnt === 1) $('#noData').show();
|
||||
$('#total').text(cnt - 1);
|
||||
$('#btn_fnctAll').prop('checked', false);
|
||||
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 권한그룹 수정
|
||||
******************************************************** */
|
||||
const fn_update_authGrp = function() {
|
||||
|
||||
if(!confirm('권한그룹을 <spring:message code="confirm.common.update"/>')) return;
|
||||
|
||||
let fnctIdArr = [];
|
||||
$('[name=fnctChk]').each(function() {
|
||||
fnctIdArr.push($(this).val());
|
||||
});
|
||||
let fnctIds = fnctIdArr.join(',');
|
||||
|
||||
if(fnctIds === ''){
|
||||
alert('기능은 최소 하나 이상 등록해야합니다.');
|
||||
return;
|
||||
}
|
||||
|
||||
let params = $('#updForm').serialize() + '&fnctIds=' + fnctIds;
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url : '<c:url value="/admin/sys/authgrp/updateAuthGrpUpdt"/>',
|
||||
data: params,
|
||||
success: function (result) {
|
||||
let authorId = JSON.parse(result.resBody.result).authorId;
|
||||
$('#backupForm').find('[name=authorId]').val(authorId);
|
||||
$('#backupForm').find('[name=pageDv]').val('U');
|
||||
|
||||
if(authorId !== '' && authorId !== undefined ){
|
||||
alert('<spring:message code="success.common.update"/>');
|
||||
$('#backupForm').attr('action', '<c:url value="/admin/sys/authgrp/selectAuthGrpUpdtForm"/>');
|
||||
$('#backupForm').submit();
|
||||
} else {
|
||||
alert('<spring:message code="fail.common.update"/>');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 권한그룹 등록 화면 이동
|
||||
******************************************************** */
|
||||
|
||||
const fn_change_authGrp = function() {
|
||||
$('#updForm').attr('action', '<c:url value="/admin/sys/authgrp/selectAuthGrpRegistForm"/>');
|
||||
$('#updForm').attr('method', 'post');
|
||||
$('#updForm').submit();
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 권한그룹 삭제
|
||||
******************************************************** */
|
||||
const fn_delete_authGrpDel = function(_value) {
|
||||
|
||||
if(!confirm('권한그룹을 <spring:message code="confirm.common.delete"/>')) return;
|
||||
let params = {'authorId' : _value};
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url : '<c:url value="/admin/sys/authgrp/deleteAuthGrpDel"/>',
|
||||
data: params,
|
||||
success: function (result) {
|
||||
let message = JSON.parse(result.resBody.result).result;
|
||||
if (message !== 'success') {
|
||||
alert('<spring:message code="fail.common.delete"/>');
|
||||
return;
|
||||
}
|
||||
alert('<spring:message code="success.common.delete"/>');
|
||||
fn_goto_list();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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" id="regTitle">권한 수정</h2>
|
||||
<div class="page-title__btn-container">
|
||||
<button type="button" class="btn outline" onclick="fn_goto_list()"><spring:message code="button.catalog"/></button>
|
||||
<button type="button" class="btn dark regBtn" onclick="fn_delete_authGrpDel('${resultMap.mbrGradList[0].detailList[0].authorId }');"><spring:message code="button.delete"/></button>
|
||||
<button type="button" class="btn primary outline regBtn" onclick="fn_change_authGrp();"><spring:message code="button.copyInsert"/></button>
|
||||
<button type="button" class="btn primary regBtn" onclick="fn_update_authGrp();"><spring:message code="button.update"/></button>
|
||||
<button type="button" class="btn primary uptBtn" onclick="fn_regist_authGrp();" style="display: none;"><spring:message code="button.save"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<section class="content-section">
|
||||
<form id="updForm">
|
||||
<input type="hidden" name="srchAuthorNm" value="${resultMap.srchList[0].srchAuthorNm}" />
|
||||
<input type="hidden" name="srchSysDvCd" value="${resultMap.srchList[0].srchSysDvCd}" />
|
||||
<input type="hidden" name="pageUnit" value="${resultMap.srchList[0].pageUnit }" />
|
||||
<input type="hidden" name="pageIndex" value="${resultMap.srchList[0].pageIndex }" />
|
||||
<input type="hidden" name="authorId" value="${resultMap.mbrGradList[0].detailList[0].authorId }" />
|
||||
<input type="hidden" name="pageDv" value="U" />
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>권한그룹</caption>
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 38%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>권한그룹 명<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input type="text" class="input-text xl" name="authorNm" title="권한그룹 명" maxlength="43" value="${resultMap.mbrGradList[0].detailList[0].authorNm}">
|
||||
</div>
|
||||
</td>
|
||||
<th>시스템 구분<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box" id="sysDvCd">
|
||||
<select name="sysDvCd" id="sys-select" title="시스템 구분" >
|
||||
<option value="" ${f:setSelected(resultMap.mbrGradList[0].detailList[0].sysDvCd, '')}>전체</option>
|
||||
<c:forEach var="sysDvCd" items="${resultMap.sysDvList}" varStatus="status">
|
||||
<option value="${sysDvCd.cd}" ${f:setSelected(resultMap.mbrGradList[0].detailList[0].sysDvCd, sysDvCd.cd) }> ${sysDvCd.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>권한그룹 설명<span class="red-7">*</span></th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<textarea class="textarea" name="authorDc" title="권한그룹 설명" rows="8" maxlength="199" ><c:out value="${resultMap.mbrGradList[0].detailList[0].authorDc }" /></textarea>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
<section class="content-section">
|
||||
<h3 class="content-section__title">기능 정보</h3>
|
||||
<div class="form-control-container">
|
||||
<div class="left">
|
||||
<div class="search-number">
|
||||
<span class="search-number__text">총 <strong id="total"><c:out value="${resultMap.mbrGradList[0].total }"/></strong>건</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="center">
|
||||
</div>
|
||||
<div class="right">
|
||||
<button type="button" class="btn dark sm" onclick="fn_remove_Input(this);">
|
||||
<spring:message code="button.delete"/>
|
||||
</button>
|
||||
<a href="#fnct-modal" rel="modal:open" class="btn primary outline sm" id="fnctPopOpen" onclick="fn_select_fnctList('1');" >
|
||||
<spring:message code="button.add"/>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="spacing">
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 4%;">
|
||||
<col style="width: 24%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: auto;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<label class="b-checkbox checkbox is-medium check-all">
|
||||
<input type="checkbox" value="" id="btn_fnctAll">
|
||||
<span class="check"></span>
|
||||
</label>
|
||||
</th>
|
||||
<th>기능 명</th>
|
||||
<th>기능 구분</th>
|
||||
<th>URL</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="fnctList">
|
||||
<c:if test="${not empty resultMap.mbrGradList[0].fnctList }" >
|
||||
<c:forEach var="fnct" items="${resultMap.mbrGradList[0].fnctList }" varStatus="status">
|
||||
<tr>
|
||||
<td>
|
||||
<input type="hidden" name="fnctIds[]" value="${fnct.fnctId}">
|
||||
<label class="b-checkbox checkbox is-medium">
|
||||
<input type="checkbox" name="fnctChk" value="${fnct.fnctId}" >
|
||||
<span class="check"></span>
|
||||
</label>
|
||||
</td>
|
||||
<td class="text-left">${fnct.fnctNm }</td>
|
||||
<td>${fnct.fnctDvNm }</td>
|
||||
<td class="text-left">${fnct.fnctUri }</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
<tr id="noData" style="display: none;">
|
||||
<td colspan="5">해당 권한그룹에 포함되는 기능정보를 선택하세요.</td>
|
||||
</tr>
|
||||
</c:if>
|
||||
<c:if test="${empty resultMap.mbrGradList[0].fnctList }" >
|
||||
<tr id="noData">
|
||||
<td colspan="5">해당 권한그룹에 포함되는 기능정보를 선택하세요.</td>
|
||||
</tr>
|
||||
</c:if>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<!-- 기능 조회 모달 -->
|
||||
<div id="fnct-modal" class="modal" style="max-width: 900px; max-height: 800px;">
|
||||
<div class="modal-header">
|
||||
<h4>기능 조회</h4>
|
||||
</div>
|
||||
<div class="modal-content">
|
||||
<form id="fnctForm">
|
||||
<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="td-inner" >
|
||||
<input type="text" class="input-text xl" name="srchFnctNm" id="srchFnctNm" />
|
||||
</div>
|
||||
</td>
|
||||
<th>기능 구분</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select name="srchFnctDv" id="srchFnct-select" title="기능 구분" >
|
||||
<option value="">전체</option>
|
||||
<c:forEach var="fnctDvCd" items="${resultMap.fnctDvList}" varStatus="status">
|
||||
<option value="${fnctDvCd.cd}"> ${fnctDvCd.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>URL</th>
|
||||
<td>
|
||||
<div class="td-inner" >
|
||||
<input type="text" class="input-text xl" name="srchFnctUri" id="srchFnctUri"/>
|
||||
</div>
|
||||
</td>
|
||||
<th>시스템 구분</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select name="srchSysDv" id="srchSysDv-select" title="시스템 구분" >
|
||||
<option value="" checked>전체</option>
|
||||
<c:forEach var="sysDvCd" items="${resultMap.sysDvList}" varStatus="status">
|
||||
<option value="${sysDvCd.cd}"> ${sysDvCd.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</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" id="resetBtn" onclick="fn_clear_input();"><spring:message code="button.init"/></button>
|
||||
<button type="button" class="btn primary" id="searchBtn" onclick="fn_select_fnctList('1');"><spring:message code="button.search"/></button>
|
||||
</div>
|
||||
<div class="right"></div>
|
||||
</div>
|
||||
<div id="pageDiv"></div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#" rel="modal:close" class="btn outline" onclick="fn_remove_fnctList();" ><spring:message code="button.close"/></a>
|
||||
<button type="button" class="btn primary" onclick="fn_collect_params();"><spring:message code="button.apply"/></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form id="backupForm" method="post" >
|
||||
<input type="hidden" name="srchAuthorNm" value="${resultMap.srchList[0].srchAuthorNm}" />
|
||||
<input type="hidden" name="srchSysDvCd" value="${resultMap.srchList[0].srchSysDvCd}" />
|
||||
<input type="hidden" name="pageUnit" value="${resultMap.srchList[0].pageUnit }" />
|
||||
<input type="hidden" name="pageIndex" value="${resultMap.srchList[0].pageIndex }" />
|
||||
<input type="hidden" name="authorId" value="" />
|
||||
<input type="hidden" name="pageDv" value="" />
|
||||
</form>
|
||||
</body>
|
||||
<script>
|
||||
|
||||
/* ********************************************************
|
||||
* 권한 그룹 목록 이동
|
||||
******************************************************** */
|
||||
const fn_goto_list = function() {
|
||||
$('#backupForm').attr('action', '<c:url value="/admin/sys/authgrp/selectAuthGrpListInqireForm"/>');
|
||||
$('#backupForm').submit();
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 기능 목록조회
|
||||
******************************************************** */
|
||||
const fn_select_fnctList = function(pageIndex) {
|
||||
|
||||
let srchFnctNm = $('#fnct-modal').find('#srchFnctNm').val() === undefined ? '' : $('#srchFnctNm').val();
|
||||
let srchFnctUri = $('#fnct-modal').find('#srchFnctUri').val() === undefined ? '' : $('#srchFnctUri').val();
|
||||
let srchSysDvCd = $('#fnct-modal').find('#srchSysDv-select').val() === undefined ? '' : $('#srchSysDv-select').val();
|
||||
let srchFnctDv = $('#fnct-modal').find('#srchFnct-select').val() === undefined ? '' : $('#srchFnct-select').val();
|
||||
let params = {
|
||||
'srchFnctNm' : srchFnctNm,
|
||||
'srchFnctUri' : srchFnctUri,
|
||||
'srchFnctDv' : srchFnctDv,
|
||||
'srchSysDvCd' : srchSysDvCd,
|
||||
'pageIndex' : pageIndex,
|
||||
'pageUnit' : '5'
|
||||
};
|
||||
$.ajax({
|
||||
type : 'POST',
|
||||
url : '<c:url value="/admin/sys/authgrp/selectAuthGrpListInqirePopup"/>',
|
||||
data : params,
|
||||
success : function(data) {
|
||||
|
||||
$('#pageDiv').html(data);
|
||||
// $('#srchFnct-select').niceSelect();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**********************************************
|
||||
* 기능 검색 초기화
|
||||
***********************************************/
|
||||
const fn_clear_input = function() {
|
||||
|
||||
$('[name=srchFnctNm]').val('');
|
||||
$('[name=srchFnctUri]').val('');
|
||||
$('#srchFnct-select').val('').niceSelect('update');
|
||||
$('#srchSysDv-select').val('').niceSelect('update');
|
||||
|
||||
|
||||
}
|
||||
|
||||
</script>
|
||||
</html>
|
||||
@@ -0,0 +1,188 @@
|
||||
<%@ 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 : maAuthorListInqireForm.jsp
|
||||
Description : 권한 조회 목록 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-01-19 최범식 최초 생성
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
|
||||
fn_add_codeList('#mngrDv', 'select', 'srchMngrDv', '${resultMap.paramVO.srchMngrDv}', JSON.parse('${resultMap.cgn036 }'), '전체');
|
||||
let pageIndex = '<c:out value="${ resultMap.paramVO.pageIndex }"/>';
|
||||
let pageUnit = '<c:out value="${ resultMap.paramVO.pageUnit }"/>';
|
||||
let pageDv = '<c:out value="${ resultMap.paramVO.pageDv }"/>';
|
||||
|
||||
if (pageDv == '') {
|
||||
fn_select_author_list(pageIndex, pageUnit);
|
||||
} else {
|
||||
fn_select_author_list('1', '10');
|
||||
}
|
||||
|
||||
$('#srchStr').on('keydown', function(event) {
|
||||
if (event.keyCode === 13) {
|
||||
event.preventDefault();
|
||||
fn_select_author_list(1);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
/* ********************************************************
|
||||
* 권한 목록조회
|
||||
******************************************************** */
|
||||
const fn_select_author_list = function(pageIndex, pageUnit) {
|
||||
|
||||
if (pageIndex == undefined || pageUnit == '') {
|
||||
$('#pageIndex').val('1');
|
||||
} else {
|
||||
$('#pageIndex').val(pageIndex);
|
||||
}
|
||||
|
||||
let params = $('#srchForm').serialize();
|
||||
if (pageUnit != undefined || pageUnit == '') {
|
||||
|
||||
params += '&pageUnit=' + pageUnit;
|
||||
} else {
|
||||
params += '&pageUnit=' + $('#pageUnit').val();
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type : 'post',
|
||||
url : '<c:url value="/admin/sys/author/selectAuthorListInqire"/>',
|
||||
data : params,
|
||||
success : function(data) {
|
||||
$('#pageDiv').html(data);
|
||||
$('#pageUnit').niceSelect();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**********************************************
|
||||
* 권한 검색 초기화
|
||||
***********************************************/
|
||||
const fn_clear_input = function() {
|
||||
|
||||
$('#srchStr').val('');
|
||||
// 선택박스 초기화
|
||||
$('#srchType').val('ALL');
|
||||
$('#srchType').niceSelect('update');
|
||||
$('#authorEx').val('');
|
||||
$('#authorEx').niceSelect('update');
|
||||
$('#srchMngrDv').val('');
|
||||
$('#srchMngrDv').niceSelect('update');
|
||||
};
|
||||
|
||||
/**********************************************
|
||||
* 권한 수정 화면 이동
|
||||
***********************************************/
|
||||
const fn_move_authorDetail = function(_mngrInnb) {
|
||||
|
||||
$('#mngrInnb').val(_mngrInnb);
|
||||
$('#srchForm').attr('action', '<c:url value="/admin/sys/author/selectAuthorUpdtForm"/>');
|
||||
$('#srchForm').attr('method', 'post');
|
||||
$('#srchForm').submit();
|
||||
};
|
||||
|
||||
/**********************************************
|
||||
* 권한 엑셀 다운로드
|
||||
***********************************************/
|
||||
const fn_down_excelFile = function() {
|
||||
|
||||
$('#srchForm').attr('action', '<c:url value="/admin/sys/author/excelFileDownload"/>');
|
||||
$('#srchForm').attr('method', 'post');
|
||||
$('#srchForm').submit();
|
||||
};
|
||||
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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="srchForm">
|
||||
<input type="hidden" name="mngrInnb" id="mngrInnb" />
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" value="${resultMap.paramVO.pageIndex}" />
|
||||
<section class="content-section">
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>사용자별 권한 목록</caption>
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col style="width: auto;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 25%;">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>검색어</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select class="serchSelectBox" name="srchType" id="srchType" title="검색타입">
|
||||
<option value="ALL" ${f:setSelected(resultMap.paramVO.srchType, 'ALL') }>전체</option>
|
||||
<option value="MNGR_NM" ${f:setSelected(resultMap.paramVO.srchType, 'MNGR_NM') }>사용자명</option>
|
||||
<option value="PARTNM" ${f:setSelected(resultMap.paramVO.srchType, 'PARTNM') }>부서명</option>
|
||||
<option value="MNGR_ID" ${f:setSelected(resultMap.paramVO.srchType, 'MNGR_ID') }>사용자ID</option>
|
||||
<option value="EMAIL" ${f:setSelected(resultMap.paramVO.srchType, 'EMAIL') }>이메일</option>
|
||||
<option value="MBTLNB" ${f:setSelected(resultMap.paramVO.srchType, 'MBTLNB') }>휴대전화번호</option>
|
||||
</select>
|
||||
</div>
|
||||
<input class="input-text lg" type="text" title="검색어" name="srchStr" id="srchStr" value="${resultMap.paramVO.srchStr}"/>
|
||||
</div>
|
||||
</td>
|
||||
<th>사용자 구분</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box" id="mngrDv"></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_clear_input();"><spring:message code="button.init"/></button>
|
||||
<button type="button" class="btn primary" onclick="fn_select_author_list('1');"><spring:message code="button.search"/></button>
|
||||
</div>
|
||||
<div class="right"></div>
|
||||
</div>
|
||||
</section>
|
||||
<div id="pageDiv"></div>
|
||||
</form>
|
||||
<button type="button" class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,113 @@
|
||||
<%@ 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 : maAuthGrpListInqireR.jsp
|
||||
Description : 권한그룹 리스트
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-01-19 최범식 최초 생성
|
||||
--%>
|
||||
<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_author_list('1')">
|
||||
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
|
||||
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paramVO.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">
|
||||
<button type="button" class="btn outline sm" onclick="fn_down_excelFile();">
|
||||
<i class="icon icon_excel"></i>
|
||||
<spring:message code="button.excelDownload"/>
|
||||
</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: 8%;">
|
||||
<col style="width: 8%;">
|
||||
<col style="width: 8%;">
|
||||
<col style="width: 8%;">
|
||||
<col style="width: auto;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 8%;">
|
||||
<col style="width: 7%">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>번호</th>
|
||||
<th>사용자 명</th>
|
||||
<th>사용자 구분</th>
|
||||
<th>부서명</th>
|
||||
<th>사용자 ID</th>
|
||||
<th>권한그룹</th>
|
||||
<th>최종 수정일시</th>
|
||||
<th>최종 수정자</th>
|
||||
<th>관리</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<%-- 리스트 BODY START --%>
|
||||
<tbody>
|
||||
<c:choose>
|
||||
<c:when test="${ not empty resultMap.authorList }">
|
||||
<c:forEach var="author" items="${resultMap.authorList }" varStatus="status">
|
||||
<tr>
|
||||
<td><c:out value="${resultMap.paginationInfo.totalRecordCount - author.rnum + 1 }" /></td>
|
||||
<td><c:out value="${author.mngrNm }"/></td>
|
||||
<td><c:out value="${author.mngrDvNm }"/></td>
|
||||
<td><c:out value="${author.partnm }"/></td>
|
||||
<td><c:out value="${author.mngrId }"/></td>
|
||||
<td class="text-left" style="word-break: break-all;"><c:out value="${author.authGrpMainTitle }"/></td>
|
||||
<td><c:out value="${author.maRegistDt}"/></td>
|
||||
<td><c:out value="${author.updMngrNm }"/></td>
|
||||
<td>
|
||||
<div class="manage-btn-container">
|
||||
<button type="button" class="btn xsm primary outline" onclick="fn_move_authorDetail('${author.mngrInnb }');"><spring:message code="button.update"/></button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<tr>
|
||||
<td class="row-no-data" colspan="10">조회된 데이터가 없습니다.</td>
|
||||
</tr>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</table>
|
||||
</div>
|
||||
<%-- 리스트 BODY END --%>
|
||||
</section>
|
||||
<div class="pagination__container">
|
||||
<ui:pagination paginationInfo="${ resultMap.paginationInfo }" type="image" jsFunction="fn_select_author_list" />
|
||||
</div>
|
||||
339
src/main/webapp/WEB-INF/views/admin/sys/author/maAuthorU.jsp
Normal file
339
src/main/webapp/WEB-INF/views/admin/sys/author/maAuthorU.jsp
Normal file
@@ -0,0 +1,339 @@
|
||||
<%@ 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 : maAuthGrpU.jsp
|
||||
Description : 권한 등급 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
since : 2023.12.19 최범식 최초 생성
|
||||
--%>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
||||
|
||||
});
|
||||
|
||||
/* ********************************************************
|
||||
* 기능 팝업 전체 선택
|
||||
******************************************************** */
|
||||
const fn_check_selectAll = function(_target) {
|
||||
if ($(_target).is(':checked')) {
|
||||
$('[name=fnctPopChk]').prop('checked', true);
|
||||
} else {
|
||||
$('[name=fnctPopChk]').prop('checked', false);
|
||||
}
|
||||
}
|
||||
/* ********************************************************
|
||||
* 기능 팝업 전체 해제
|
||||
******************************************************** */
|
||||
const fn_uncheck_selectAll = function() {
|
||||
|
||||
let chkCnt = $('[name=fnctPopChk]:checked').length;
|
||||
let allCnt = $('[name=fnctPopChk]').length;
|
||||
|
||||
if (chkCnt !== allCnt && $('#check-all').is(':checked')) {
|
||||
$('#check-all').prop('checked', false);
|
||||
} else if (chkCnt !== allCnt && !$('#check-all').is(':checked') && allCnt - chkCnt === 1 ) {
|
||||
$('#check-all').prop('checked', true);
|
||||
} else if (chkCnt === allCnt ) {
|
||||
$('#check-all').prop('checked', true);
|
||||
}
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 권한 수정
|
||||
******************************************************** */
|
||||
const fn_save_author = function() {
|
||||
|
||||
if(!confirm('권한을 <spring:message code="confirm.common.update"/>')) return;
|
||||
|
||||
//수정대상 추출
|
||||
let params = $('#updtFrm').serialize();
|
||||
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url : '<c:url value="/admin/sys/author/updateAuthorUpdt"/>',
|
||||
data: params,
|
||||
success: function (result) {
|
||||
let resultVal = JSON.parse(result.resBody.result).result;
|
||||
|
||||
if(resultVal === 'success'){
|
||||
alert('<spring:message code="success.common.update"/>');
|
||||
$('#backupForm').attr('action', '<c:url value="/admin/sys/author/selectAuthorUpdtForm"/>');
|
||||
$('#backupForm').submit();
|
||||
} else {
|
||||
alert('<spring:message code="fail.common.update"/>');
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 권한 포함된 기능 조회
|
||||
******************************************************** */
|
||||
const fn_select_fnctList = function(_authorId, _target) {
|
||||
let param = { 'authorId' : _authorId };
|
||||
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url : '<c:url value="/admin/sys/author/selectAuthGrpFuntPopup"/>',
|
||||
data: param,
|
||||
success: function (result) {
|
||||
authorInfo = JSON.parse(result.resBody.result).authorInfo;
|
||||
fnctList = JSON.parse(result.resBody.result).fnctList;
|
||||
|
||||
$('#authorNm').text(authorInfo.authorNm);
|
||||
$('#sysDvNm').text(authorInfo.sysDvNm);
|
||||
$('#authorDc').text(authorInfo.authorDc);
|
||||
|
||||
fn_make_fnctList(fnctList);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 기능조회 팝업 기능목록 그리기
|
||||
******************************************************** */
|
||||
const fn_make_fnctList = function(_data) {
|
||||
|
||||
let authorGroupNm = '';
|
||||
let authorGroupDc = '';
|
||||
let tagClone = '';
|
||||
if(_data.length > 0) {
|
||||
tagClone = '<tr>';
|
||||
for (let i = 0; i < _data.length; i++) {
|
||||
|
||||
authorGroupNm = _data[0].authorGroupNm;
|
||||
authorGroupDc = _data[0].authorGroupDc;
|
||||
tagClone += '<tr>'
|
||||
+ ' <td>' + (i + 1) + '</td>'
|
||||
+ ' <td class="text-left" style="word-break: break-all;">' + _data[i].fnctNm + '</td>'
|
||||
+ ' <td style="word-break: break-all;">' + _data[i].fnctDvNm + '</td>'
|
||||
+ ' <td class="text-left" style="word-break: break-all;">' + _data[i].fnctUri + '</td>'
|
||||
+ ' </tr>';
|
||||
}
|
||||
}else{
|
||||
tagClone = '<tr><td colspan="4">조회된 데이터가 없습니다.</td></tr>';
|
||||
}
|
||||
|
||||
|
||||
$('#fnctPopup').html(tagClone);
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 권한 목록 이동
|
||||
******************************************************** */
|
||||
const fn_goto_list = function() {
|
||||
|
||||
$('#backupForm').attr('action', '<c:url value="/admin/sys/author/selectAuthorListInqireForm"/>');
|
||||
$('#backupForm').submit();
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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 type="button" class="btn outline" onclick="fn_goto_list()"><spring:message code="button.catalog"/></button>
|
||||
<button type="button" class="btn primary" onclick="fn_save_author();"><spring:message code="button.save"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<section class="content-section">
|
||||
<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="td-inner">${resultMap.managerAuth.mngrNm }</div></td>
|
||||
<th>아이디</th>
|
||||
<td><div class="td-inner">${resultMap.managerAuth.mngrId }</div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>부서명</th>
|
||||
<td><div class="td-inner">${resultMap.managerAuth.partnm }</div></td>
|
||||
<th>사용자 구분</th>
|
||||
<td><div class="td-inner"> ${resultMap.managerAuth.mngrDvNm }</div></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
<section class="content-section">
|
||||
<h3 class="content-section__title">기능 권한</h3>
|
||||
<form id="updtFrm">
|
||||
<input type="hidden" name="mngrInnb" value="${resultMap.managerAuth.mngrInnb}"/>
|
||||
<div class="table-wrapper">
|
||||
<table class=" table vertical">
|
||||
<caption>사용자 권한 정보</caption>
|
||||
<colgroup>
|
||||
<col style="width: 15%;">
|
||||
<col style="width: 20%;">
|
||||
<col style="width: auto;">
|
||||
<col style="width: 8%;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>권한 명</th>
|
||||
<th>권한 설명</th>
|
||||
<th>쇼핑몰 권한</th>
|
||||
<th>기능 조회</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:if test="${not empty resultMap.authorList }" >
|
||||
<c:forEach var="authorInfo" items="${resultMap.authorList }" varStatus="status">
|
||||
<tr>
|
||||
<td>
|
||||
<c:out value="${authorInfo.authorNm }"/>
|
||||
</td>
|
||||
<td class="text-left" style="word-break: break-all;">
|
||||
<c:out value="${authorInfo.authorDc }"/>
|
||||
</td>
|
||||
<td class="text-left" style="word-break: break-all;">
|
||||
<c:if test="${not empty authorInfo.sopmalList}" >
|
||||
<div class="td-inner">
|
||||
<div class="b-checkbox-container shoping-mall">
|
||||
<c:forEach var="sopmalInfo" items="${authorInfo.sopmalList}" varStatus="sopStatus">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" name="arrAuthSpomal" value="${authorInfo.authorId}_${sopmalInfo.sopmalCd}" ${f:setChecked(sopmalInfo.chk, 1)} >
|
||||
<span class="check"></span>
|
||||
<span class="control-label"><c:out value="${sopmalInfo.sopmalNm }"/></span>
|
||||
</label>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
</c:if>
|
||||
</td>
|
||||
<td>
|
||||
<div class="manage-btn-container">
|
||||
<a href="#auto-group-pop" rel="modal:open" class="btn xsm primary outline" onclick="fn_select_fnctList('${authorInfo.authorId }', this)"><spring:message code="button.view"/></a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
<c:if test="${empty resultMap.authorList }" >
|
||||
<tr>
|
||||
<td colspan="4"><spring:message code="common.nodata"/></td>
|
||||
</tr>
|
||||
</c:if>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<!-- 권한그룹 조회 -->
|
||||
<div id="auto-group-pop" class="modal" style="max-width: 1000px;">
|
||||
<div class="modal-header">
|
||||
<h4>권한 조회</h4>
|
||||
</div>
|
||||
<div class="modal-content">
|
||||
<h3 class="content-section__title">권한 정보</h3>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>authorGroupDc</caption>
|
||||
<colgroup>
|
||||
<col style="width: 15%;">
|
||||
<col>
|
||||
<col style="width: 15%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>권한 명</th>
|
||||
<td>
|
||||
<div class="td-inner" id="authorNm" style="word-break: break-all;"></div>
|
||||
</td>
|
||||
<th>시스템 구분</th>
|
||||
<td>
|
||||
<div class="td-inner" id="sysDvNm" style="word-break: break-all;"></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>권한 설명</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner" id="authorDc" style="word-break: break-all;"></div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<h3 class="content-section__title">기능 정보</h3>
|
||||
<div class="table-wrapper" style="max-height: 280px; overflow-y: auto;">
|
||||
<table class="table vertical">
|
||||
<caption>기능 정보</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 8%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: auto;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>순번</th>
|
||||
<th>기능명</th>
|
||||
<th>기능 구분</th>
|
||||
<th>URL</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="fnctPopup">
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#" rel="modal:close" class="btn outline"><spring:message code="button.close"/></a>
|
||||
<!-- <button class="btn primary">확인</button> -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form id="backupForm" method="post" >
|
||||
<input type="hidden" name="srchType" value="${resultMap.srchInfo.srchType }" />
|
||||
<input type="hidden" name="srchStr" value="${resultMap.srchInfo.srchStr }" />
|
||||
<input type="hidden" name="srchMngrDv" value="${resultMap.srchInfo.srchMngrDv }" />
|
||||
<input type="hidden" name="pageUnit" value="${resultMap.srchInfo.pageUnit }" />
|
||||
<input type="hidden" name="pageIndex" value="${resultMap.srchInfo.pageIndex }" />
|
||||
<input type="hidden" name="mngrInnb" value="${resultMap.managerAuth.mngrInnb}" />
|
||||
<input type="hidden" name="pageDv" value="" />
|
||||
</form>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,110 @@
|
||||
<%@ 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 : MaCmmnCodeListInqireR.jsp
|
||||
Description : 공통코드 목록조회 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-01-11 리브가 최초 생성
|
||||
--%>
|
||||
<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="left">
|
||||
</div>
|
||||
<div class="center">
|
||||
</div>
|
||||
<div class="right">
|
||||
<button type="button" class="btn outline sm" onclick="fn_excel_download();">
|
||||
<i class="icon icon_excel"></i>
|
||||
다운로드
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="spacing">
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical">
|
||||
<caption>공통코드 목록</caption>
|
||||
<colgroup>
|
||||
<col style="width: 6%;">
|
||||
<col style="width: auto;">
|
||||
<col style="width: 16%;">
|
||||
<col style="width: 16%;">
|
||||
<col style="width: 16%;">
|
||||
<col style="width: 8%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 8%">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>번호</th>
|
||||
<th>코드그룹 명</th>
|
||||
<th>코드그룹 ID</th>
|
||||
<th>코드명</th>
|
||||
<th>코드</th>
|
||||
<th>사용여부</th>
|
||||
<th>등록일자</th>
|
||||
<th>관리</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:choose>
|
||||
<c:when test="${ not empty resultMap.list }">
|
||||
<c:forEach items="${ resultMap.list }" var="list" varStatus="status">
|
||||
<tr>
|
||||
<td><c:out value="${ resultMap.paginationInfo.totalRecordCount - list.rnum + 1 }" /></td>
|
||||
<td class="left"><c:out value="${list.groupCdNm}"/></td>
|
||||
<td class="left"><c:out value="${list.groupCd}"/></td>
|
||||
<td class="left"><c:out value="${list.cdNm}"/></td>
|
||||
<td><c:out value="${list.cd}"/></td>
|
||||
<td><c:if test="${ list.useAt eq 'Y'}">사용</c:if>
|
||||
<c:if test="${ list.useAt eq 'N'}">미사용</c:if></td>
|
||||
<td><c:out value="${list.registDe}"/></td>
|
||||
<td>
|
||||
<div class="manage-btn-container">
|
||||
<button class="btn xsm primary outline" type="button"
|
||||
onclick="fn_move_dtl_uptpage('<c:out value="${list.groupCd}"/>')">
|
||||
<spring:message code="button.update"/></button>
|
||||
</div>
|
||||
</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>
|
||||
@@ -0,0 +1,182 @@
|
||||
<%@ 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 : MaCmmnCodeListInqireRForm.jsp
|
||||
Description : 공통코드 목록조회 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-01-08 리브가 최초생성
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
</head>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
let pageIndex = '<c:out value="${ resultMap.BOMaComncdVO.pageIndex }"/>';
|
||||
let pageUnit = '<c:out value="${ resultMap.BOMaComncdVO.pageUnit }"/>';
|
||||
fn_select_list(pageIndex, pageUnit);
|
||||
|
||||
$('#listForm').on('keydown', function(event) {
|
||||
if (event.keyCode === 13) {
|
||||
event.preventDefault();
|
||||
fn_select_list(1);
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
/* ********************************************************
|
||||
* 목록 조회
|
||||
******************************************************** */
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url : "<c:url value="/admin/sys/comncd/selectCmmnCodeListInqire"/>",
|
||||
data : dataStr,
|
||||
success:function(resultHtml) {
|
||||
$('#pageDiv').html(resultHtml);
|
||||
$('#pageUnit').niceSelect();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 등록폼 이동
|
||||
******************************************************** */
|
||||
const fn_move_regpage = function() {
|
||||
const url = '<c:url value="/admin/sys/comncd/selectCmmnCodeRegistForm"/>';
|
||||
|
||||
$('#listForm').attr('action', url);
|
||||
$('#listForm').attr('method', 'POST');
|
||||
$('#listForm').submit();
|
||||
};
|
||||
|
||||
/* ********************************************************
|
||||
* 수정폼 이동
|
||||
******************************************************** */
|
||||
const fn_move_dtl_uptpage = function(groupCd) {
|
||||
const url = '<c:url value="/admin/sys/comncd/selectCmmnCodeUpdtForm"/>';
|
||||
|
||||
$('#listForm').attr('action', url);
|
||||
$('#listForm').attr('method', 'get');
|
||||
$('#groupCd').val(groupCd);
|
||||
$('#listForm').submit();
|
||||
}
|
||||
|
||||
/*********************************************************
|
||||
* 엑셀 다운로드
|
||||
*********************************************************/
|
||||
const fn_excel_download = function() {
|
||||
$('#listForm').attr('action', '<c:url value="/admin/sys/comncd/selectBOCmmnCodeListExcelDwld"/>');
|
||||
$('#listForm').attr('method', 'post');
|
||||
$('#listForm').submit();
|
||||
|
||||
}
|
||||
|
||||
history.replaceState({}, null, location.pathname);
|
||||
|
||||
|
||||
</script>
|
||||
<body>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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 onclick="fn_move_regpage()" class="btn primary">공통코드 <spring:message code="button.insert"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<form id='listForm' name="listForm" method="post" action="<c:url value="/admin/sys/comncd/selectCmmnCodeListInqireForm"/>">
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultMap.BOMaComncdVO.pageIndex }"/>
|
||||
<input type="hidden" id="groupCd" name="groupCd"/>
|
||||
<section class="content-section" id="search-section">
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>공통코드 조회</caption>
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>검색어</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select title="검색타입" id="srchType" name="srchType">
|
||||
<option value="GROUP_CD_NM" <c:if test="${ resultMap.BOMaComncdVO.srchType == 'GROUP_CD_NM'}">selected="selected"</c:if>>코드그룹 명</option>
|
||||
<option value="GROUP_CD" <c:if test="${ resultMap.BOMaComncdVO.srchType == 'GROUP_CD'}">selected="selected"</c:if>>코드그룹 ID</option>
|
||||
<option value="CD_NM" <c:if test="${ resultMap.BOMaComncdVO.srchType == 'CD_NM'}">selected="selected"</c:if>>코드명</option>
|
||||
<option value="CD" <c:if test="${ resultMap.BOMaComncdVO.srchType == 'CD'}">selected="selected"</c:if>>코드</option>
|
||||
</select>
|
||||
</div>
|
||||
<input class="input-text xl" type="text" title="검색어" id="srchStr" name="srchStr" value="<c:out value="${ resultMap.BOMaComncdVO.srchStr }" />">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>사용여부</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select title="사용여부" id="srchUseAt" name="srchUseAt" value="<c:out value="${ resultMap.BOMaComncdVO.srchUseAt }" />">
|
||||
<option value="">전체</option>
|
||||
<option value="Y" <c:if test="${ resultMap.BOMaComncdVO.srchUseAt eq 'Y'}">selected="selected"</c:if>>사용</option>
|
||||
<option value="N" <c:if test="${ resultMap.BOMaComncdVO.srchUseAt eq 'N'}">selected="selected"</c:if>>미사용</option>
|
||||
</select>
|
||||
</div>
|
||||
</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'); return false;">초기화</button>
|
||||
<button class="btn primary" id="searchBtn" type="button" onclick="fn_select_list(1); return false;">검색</button>
|
||||
</div>
|
||||
<div class="right"></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,418 @@
|
||||
<%@ 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" %>
|
||||
<%--
|
||||
Class Name : MaCmmnCodeRegistC.jsp
|
||||
Description : 공통코드 등록 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
since : 2024.01.03 리브가 최초 생성
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
</head>
|
||||
<script>
|
||||
$( document ).ready(function() {
|
||||
$('#noData').hide();
|
||||
});
|
||||
|
||||
/* ********************************************************
|
||||
* 등록 AJAX
|
||||
******************************************************** */
|
||||
const fn_regist = function() {
|
||||
|
||||
if(confirm('공통코드를 <spring:message code="confirm.common.insert"/>')) {
|
||||
|
||||
if ($('[name=cd]').length === 0) {
|
||||
alert('코드를 한 개 이상 등록해야 합니다.');
|
||||
return;
|
||||
}
|
||||
|
||||
if (checkForDuplicateCodes()) {
|
||||
alert('코드 값에 중복이 있습니다. 다른 값을 입력해주세요.');
|
||||
return;
|
||||
}
|
||||
|
||||
if($('#hiddenForm') != null) {
|
||||
$('#hiddenForm').remove();
|
||||
}
|
||||
|
||||
const hiddenForm = document.createElement('form');
|
||||
hiddenForm.name = 'hiddenForm';
|
||||
hiddenForm.id = 'hiddenForm';
|
||||
hiddenForm.method = 'post';
|
||||
hiddenForm.action = '';
|
||||
hiddenForm.target = '_blank';
|
||||
|
||||
$('[name=cd]').each(function(idx){
|
||||
fn_create_input('hidden', "comncdDetailVOList["+idx+"].cdNm", $('[name=cdNm]').eq(idx).val(), hiddenForm);
|
||||
fn_create_input('hidden', "comncdDetailVOList["+idx+"].cd", $('[name=cd]').eq(idx).val(), hiddenForm);
|
||||
fn_create_input('hidden', "comncdDetailVOList["+idx+"].cdDc", $('[name=cdDc]').eq(idx).val(), hiddenForm);
|
||||
fn_create_input('hidden', "comncdDetailVOList["+idx+"].sortOrdr", idx, hiddenForm);
|
||||
});
|
||||
|
||||
document.body.appendChild(hiddenForm);
|
||||
|
||||
const url = '<c:url value="/admin/sys/comncd/insertCmmnCodeRegist"/>';
|
||||
const data = $('#listForm').serializeArray();
|
||||
$.merge(data, $('#hiddenForm').serializeArray());
|
||||
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: url,
|
||||
data: data,
|
||||
success: function (data) {
|
||||
let str = JSON.parse(data.resBody.result);
|
||||
if(str.result=='success'){
|
||||
alert('<spring:message code="success.common.insert"/>');
|
||||
fn_move_dtl_uptpage();
|
||||
} else if(str.result=='dublechk'){
|
||||
alert("이미 등록된 코드그룹 ID 입니다.");
|
||||
} else {
|
||||
alert('<spring:message code="fail.common.insert"/>');
|
||||
}
|
||||
}, error: function(data){
|
||||
$("#overlay").fadeOut();
|
||||
if(!data.responseJSON.resBody.message) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
if(fn_check_json(data.responseJSON.resBody.message)) {
|
||||
const errorObject = JSON.parse(data.responseJSON.resBody.message);
|
||||
if(!errorObject) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
if(!errorObject.errorMsg) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
alert(errorObject.errorMsg);
|
||||
let isMtched = false;
|
||||
$('.main').eq(0).find('input,select,textarea').each(function(){
|
||||
if ($(this).is('input[type="checkbox"], span')) {
|
||||
return true;
|
||||
}
|
||||
|
||||
for(let idx=0; idx<errorObject.errorFields.length; idx++) {
|
||||
if(errorObject.errorFields[idx].indexOf($(this).prop('name')) >= 0) {
|
||||
isMtched = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(isMtched) {
|
||||
|
||||
$(this).focus();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if(data.responseJSON.resBody.message) {
|
||||
alert(data.responseJSON.resBody.message);
|
||||
} else {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const fn_create_input = function(type, name, value, tgtForm) {
|
||||
const input = document.createElement('input');
|
||||
input.setAttribute("type", type);
|
||||
input.setAttribute("name", name);
|
||||
input.setAttribute("value", value);
|
||||
tgtForm.appendChild(input);
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 행추가
|
||||
******************************************************** */
|
||||
const fn_add_row = function() {
|
||||
|
||||
let count = $('#codeTbody').children('tr').length;
|
||||
let idx = count; // 현재 행 인덱스
|
||||
|
||||
let trClone = '<tr>'
|
||||
+' <tr>'
|
||||
+' <td>'
|
||||
+' <label class="b-checkbox checkbox is-medium">'
|
||||
+' <input type="checkbox" name="Chkbox" >'
|
||||
+' <span class="check"></span>'
|
||||
+' </label>'
|
||||
+' </td>'
|
||||
+' <td>'
|
||||
+' <input class="input-text full" type="text" title="코드명" placeholder="" name="cdNm" maxlength="35">'
|
||||
+' </td>'
|
||||
+' <td>'
|
||||
+' <input class="input-text full" type="text" title="코드" oninput="fn_cd_validateInput(this)" placeholder="" value="" name="cd" maxlength="20">'
|
||||
+' </td>'
|
||||
+' <td>'
|
||||
+' <input class="input-text full" type="text" title="코드 설명" placeholder="" value="" name="cdDc" maxlength="1000">'
|
||||
+' </td>'
|
||||
+' <td>'
|
||||
+' <div class="draggable-icon-container">'
|
||||
+' <i class="icon icon_draggable"></i>'
|
||||
+' <span class="visually-hidden">순서 바꾸기</span>'
|
||||
+' </div>'
|
||||
+' </td>'
|
||||
+' </tr>'
|
||||
|
||||
$('#noData').hide();
|
||||
$('#codeTbody').append(trClone);
|
||||
//행 추가 후, tableDnd 업데이트
|
||||
$('#cmmnCodeListTb').tableDnDUpdate();
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 행삭제
|
||||
******************************************************** */
|
||||
const fn_delete_row = function() {
|
||||
|
||||
const target = $('[name=Chkbox]:checked');
|
||||
if (target.length === 0) {
|
||||
alert('항목을 선택해 주세요.');
|
||||
} else {
|
||||
target.each(function() {
|
||||
$(this).parents('tr').remove();
|
||||
});
|
||||
}
|
||||
|
||||
$('#ChkAll').prop('checked', false);
|
||||
if ($('[name=Chkbox]').length === 0) {
|
||||
$('#noData').show();
|
||||
}
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 코드그룹 ID 중복 조회 AJAX
|
||||
******************************************************** */
|
||||
function fn_id_doubleCheck() {
|
||||
const url = '<c:url value="/admin/sys/comncd/selectCmmnCodeGrpIdDplctInqire"/>';
|
||||
var groupCd = $('#groupCd').val();
|
||||
|
||||
let data = {
|
||||
groupCd: groupCd
|
||||
};
|
||||
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url : url,
|
||||
data : data,
|
||||
success:function(result) {
|
||||
const message = JSON.parse(result.resBody.result)
|
||||
if(message === 0){
|
||||
let check = confirm('사용가능한 코드그룹 ID 입니다.');
|
||||
}else{
|
||||
alert('이미 등록된 코드그룹 ID 입니다.');
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/* ********************************************************
|
||||
* 코드 중복 조회 FN
|
||||
******************************************************** */
|
||||
function checkForDuplicateCodes() {
|
||||
let cdSet = new Set();
|
||||
let hasDuplicate = false;
|
||||
|
||||
$('[name=cd]').each(function() {
|
||||
let cdValue = $(this).val();
|
||||
|
||||
if (cdValue.trim() === '') {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (cdSet.has(cdValue)) {
|
||||
hasDuplicate = true;
|
||||
return false; // 중복이 발견되면 반복을 종료
|
||||
}
|
||||
cdSet.add(cdValue);
|
||||
});
|
||||
|
||||
return hasDuplicate;
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 수정폼 이동
|
||||
******************************************************** */
|
||||
const fn_move_dtl_uptpage = function() {
|
||||
const url = '<c:url value="/admin/sys/comncd/selectCmmnCodeUpdtForm"/>';
|
||||
|
||||
$('#listForm').attr('action', url);
|
||||
$('#listForm').attr('method', 'get');
|
||||
$('#pageIndex').val(1);
|
||||
$('#listForm').submit();
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 목록 조회
|
||||
******************************************************** */
|
||||
const fn_select_list = function() {
|
||||
const url = '<c:url value="/admin/sys/comncd/selectCmmnCodeListInqireForm"/>';
|
||||
|
||||
$('#listForm').attr('action', url);
|
||||
$('#listForm').attr('method', 'post');
|
||||
$('#listForm').submit();
|
||||
};
|
||||
|
||||
/* ********************************************************
|
||||
* 코드 - 영어, 숫자, 언더바(_), 하이픈(-)만 허용
|
||||
******************************************************** */
|
||||
function fn_cd_validateInput(input) {
|
||||
var regex = /[^a-zA-Z0-9_-]/g;
|
||||
input.value = input.value.replace(regex, '');
|
||||
input.value = input.value.toUpperCase();
|
||||
}
|
||||
|
||||
</script>
|
||||
<body>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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 onclick="fn_select_list()" onkeypress="this.onclick" class="btn outline"><spring:message code="button.list"/></button>
|
||||
<button class="btn primary" onclick="fn_regist();" ><spring:message code="button.insert"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<section class="content-section">
|
||||
<h3 class="content-section__title">공통코드 정보</h3>
|
||||
<form id="listForm" method="post" action="<c:url value="/admin/sys/comncd/selectCmmnCodeRegistForm"/>">
|
||||
<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>코드그룹 명<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text lg" type="text" id="groupCdNm" name="groupCdNm" title="코드그룹 명" maxlength="35">
|
||||
</div>
|
||||
</td>
|
||||
<th>코드그룹 ID<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text md" type="text" id="groupCd" name="groupCd" oninput="fn_cd_validateInput(this)" title="코드그룹 ID" maxlength="20">
|
||||
<button type="button" class="btn sm gray"
|
||||
onclick="fn_id_doubleCheck(); return false;"><spring:message code="button.doubleCheck"/></button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>코드그룹 설명</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<textarea class="textarea" title="코드그룹 설명" id="groupCdDc" name="groupCdDc" rows="8" maxlength="1000"></textarea>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="form-control-container mb-8">
|
||||
<div class="left">
|
||||
<h3 class="content-section__inner-title">코드 정보</h3>
|
||||
</div>
|
||||
<div class="center">
|
||||
</div>
|
||||
<div class="right">
|
||||
<button type="button" class="btn dark sm" onclick="fn_delete_row()">행 <spring:message code="button.delete"/></button>
|
||||
<button type="button" class="btn primary outline sm" onclick="fn_add_row()">행 <spring:message code="button.add"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical draggable" id ="cmmnCodeListTb">
|
||||
<caption>코드</caption>
|
||||
<colgroup>
|
||||
<col style="width: 60px;">
|
||||
<col style="width: 18%;">
|
||||
<col style="width: 18%;">
|
||||
<col style="width: auto;">
|
||||
<col style="width: 8%;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<label class="b-checkbox checkbox is-medium check-all">
|
||||
<input type="checkbox" id="ChkAll" value="">
|
||||
<span class="check"></span>
|
||||
</label>
|
||||
</th>
|
||||
<th>코드명<span class="red-7">*</span></th>
|
||||
<th>코드<span class="red-7">*</span></th>
|
||||
<th>코드 설명</th>
|
||||
<th>순서</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<label class="b-checkbox checkbox is-medium">
|
||||
<input type="checkbox" name="Chkbox" >
|
||||
<span class="check"></span>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<input class="input-text full" type="text" name="cdNm" title="코드명" maxlength="35">
|
||||
</td>
|
||||
<td>
|
||||
<input class="input-text full" type="text" name="cd" title="코드" maxlength="20">
|
||||
</td>
|
||||
<td>
|
||||
<input class="input-text full" type="text" name="cdDc" title="코드 설명" maxlength="1000">
|
||||
</td>
|
||||
<td>
|
||||
<div class="draggable-icon-container">
|
||||
<i class="icon icon_draggable"></i>
|
||||
<span class="visually-hidden">순서 바꾸기</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody id="codeTbody">
|
||||
<tr id="noData">
|
||||
<td colspan="100%" class="row-no-data"> 데이터 없음</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!--검색 조건 , 페이징 조건 -->
|
||||
<input type="hidden" id="srchType" name="srchType" title="검색타입" value="<c:out value="${ resultMap.BOMaComncdVO.srchType }"/>">
|
||||
<input type="hidden" id="srchStr" name="srchStr" title="검색어" value="<c:out value="${ resultMap.BOMaComncdVO.srchStr }"/>">
|
||||
<input type="hidden" id="srchUseAt" name="srchUseAt" title="사용여부" value="<c:out value="${ resultMap.BOMaComncdVO.srchUseAt }"/>">
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value="${ resultMap.BOMaComncdVO.pageIndex }"/>"/>
|
||||
<input type="hidden" id="pageUnit" name="pageUnit" value="<c:out value="${ resultMap.BOMaComncdVO.pageUnit }"/>"/>
|
||||
|
||||
</form>
|
||||
</section>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,448 @@
|
||||
<%@ 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" %>
|
||||
<%--
|
||||
Class Name : MaCmmnCodeUpdtU.jsp
|
||||
Description : 공통코드 수정 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
since : 2024.01.08 리브가 최초 생성
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
</head>
|
||||
<script>
|
||||
$( document ).ready(function() {
|
||||
});
|
||||
|
||||
/* ********************************************************
|
||||
* 수정 AJAX
|
||||
******************************************************** */
|
||||
const fn_update = function() {
|
||||
|
||||
var msg ='';
|
||||
if($('#groupUseAt').val()=='N'){
|
||||
msg = '그룹코드 미사용 설정시 하위 코드들도 모두 미사용 처리됩니다.\n공통코드를 <spring:message code="confirm.common.update"/>';
|
||||
} else{
|
||||
msg = '공통코드를 <spring:message code="confirm.common.update"/>';
|
||||
}
|
||||
|
||||
if(confirm(msg)){
|
||||
if (checkForDuplicateCodes()) {
|
||||
alert('코드 값에 중복이 있습니다. 다른 값을 입력해주세요.');
|
||||
return;
|
||||
}
|
||||
|
||||
if($('#hiddenForm') != null) {
|
||||
$('#hiddenForm').remove();
|
||||
}
|
||||
|
||||
const hiddenForm = document.createElement('form');
|
||||
hiddenForm.name = 'hiddenForm';
|
||||
hiddenForm.id = 'hiddenForm';
|
||||
hiddenForm.method = 'post';
|
||||
hiddenForm.action = '';
|
||||
hiddenForm.target = '_blank';
|
||||
|
||||
$('[name=cd]').each(function(idx){
|
||||
fn_create_input('hidden', "comncdDetailVOList["+idx+"].cdNm", $('[name=cdNm]').eq(idx).val(), hiddenForm);
|
||||
fn_create_input('hidden', "comncdDetailVOList["+idx+"].cd", $('[name=cd]').eq(idx).val(), hiddenForm);
|
||||
fn_create_input('hidden', "comncdDetailVOList["+idx+"].cdDc", $('[name=cdDc]').eq(idx).val(), hiddenForm);
|
||||
if ($('#groupUseAt').val() == 'N') {
|
||||
fn_create_input('hidden', "comncdDetailVOList["+idx+"].useAt", 'N', hiddenForm);
|
||||
} else {
|
||||
fn_create_input('hidden', "comncdDetailVOList["+idx+"].useAt", $('[name=useAt]').eq(idx).val(), hiddenForm);
|
||||
}
|
||||
fn_create_input('hidden', "comncdDetailVOList["+idx+"].sortOrdr", idx, hiddenForm);
|
||||
});
|
||||
|
||||
document.body.appendChild(hiddenForm);
|
||||
|
||||
const url = '<c:url value="/admin/sys/comncd/updateCmmnCodeUpdt"/>';
|
||||
const data = $('#listForm').serializeArray();
|
||||
$.merge(data, $('#hiddenForm').serializeArray());
|
||||
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: url,
|
||||
data: data,
|
||||
success: function (data) {
|
||||
let str = JSON.parse(data.resBody.result);
|
||||
if(str.result=='success'){
|
||||
alert('<spring:message code="success.common.update"/>');
|
||||
fn_move_dtl_uptpage();
|
||||
} else {
|
||||
alert('<spring:message code="fail.common.update"/>');
|
||||
}
|
||||
}, error: function(data){
|
||||
$("#overlay").fadeOut();
|
||||
if(!data.responseJSON.resBody.message) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
if(fn_check_json(data.responseJSON.resBody.message)) {
|
||||
const errorObject = JSON.parse(data.responseJSON.resBody.message);
|
||||
if(!errorObject) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
if(!errorObject.errorMsg) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
alert(errorObject.errorMsg);
|
||||
let isMtched = false;
|
||||
$('.main').eq(0).find('input,select,textarea').each(function(){
|
||||
if ($(this).is('input[type="checkbox"], span')) {
|
||||
return true;
|
||||
}
|
||||
|
||||
for(let idx=0; idx<errorObject.errorFields.length; idx++) {
|
||||
if(errorObject.errorFields[idx].indexOf($(this).prop('name')) >= 0) {
|
||||
isMtched = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(isMtched) {
|
||||
|
||||
$(this).focus();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if(data.responseJSON.resBody.message) {
|
||||
alert(data.responseJSON.resBody.message);
|
||||
} else {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const fn_create_input = function(type, name, value, tgtForm) {
|
||||
const input = document.createElement('input');
|
||||
input.setAttribute("type", type);
|
||||
input.setAttribute("name", name);
|
||||
input.setAttribute("value", value);
|
||||
tgtForm.appendChild(input);
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 삭제 AJAX
|
||||
******************************************************** */
|
||||
const fn_delete = function() {
|
||||
const url = '<c:url value="/admin/sys/comncd/deleteCmmnCodeDel"/>';
|
||||
const data = $('#listForm').serialize();
|
||||
|
||||
if(confirm('코드그룹을 <spring:message code="confirm.common.delete"/>')) {
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: url,
|
||||
data: data,
|
||||
success: function (data) {
|
||||
let str = JSON.parse(data.resBody.result);
|
||||
if(str.result=='success'){
|
||||
alert('<spring:message code="success.common.delete"/>');
|
||||
fn_select_list(1);
|
||||
} else {
|
||||
alert('<spring:message code="fail.common.delete"/>');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
/* ********************************************************
|
||||
* 행추가
|
||||
******************************************************** */
|
||||
const fn_add_row = function() {
|
||||
|
||||
let trClone = '<tr>'
|
||||
+' <tr>'
|
||||
+' <td>'
|
||||
+' <label class="b-checkbox checkbox is-medium">'
|
||||
+' <input type="checkbox" name="Chkbox" >'
|
||||
+' <span class="check"></span>'
|
||||
+' </label>'
|
||||
+' </td>'
|
||||
+' <td>'
|
||||
+' <input class="input-text full" type="text" title="코드명" placeholder="" name="cdNm" maxlength="35">'
|
||||
+' </td>'
|
||||
+' <td>'
|
||||
+' <input class="input-text full" type="text" title="코드" placeholder="" value="" name="cd" maxlength="20">'
|
||||
+' </td>'
|
||||
+' <td>'
|
||||
+' <input class="input-text full" type="text" title="코드 설명" placeholder="" value="" name="cdDc" maxlength="1000">'
|
||||
+' </td>'
|
||||
+' <td>'
|
||||
+' <div class="select-box">'
|
||||
+' <select id="useAt" name="useAt" title="사용여부" disabled>'
|
||||
+' <option value="Y" selected>사용</option>'
|
||||
+' </select>'
|
||||
+' </div>'
|
||||
+' </td>'
|
||||
+' <td>'
|
||||
+' <div class="draggable-icon-container">'
|
||||
+' <i class="icon icon_draggable"></i>'
|
||||
+' <span class="visually-hidden">순서 바꾸기</span>'
|
||||
+' </div>'
|
||||
+' </td>'
|
||||
+' </tr>'
|
||||
|
||||
$('#codeTbody').append(trClone);
|
||||
$('#cmmnCodeListTb').tableDnDUpdate();
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 행삭제
|
||||
******************************************************** */
|
||||
const fn_delete_row = function() {
|
||||
|
||||
const target = $('[name=Chkbox]:checked');
|
||||
if (target.length === 0) {
|
||||
alert('항목을 선택해 주세요.');
|
||||
} else {
|
||||
target.each(function() {
|
||||
$(this).parents('tr').remove();
|
||||
});
|
||||
}
|
||||
|
||||
$('#ChkAll').prop('checked', false);
|
||||
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 코드 중복 조회 FN
|
||||
******************************************************** */
|
||||
function checkForDuplicateCodes() {
|
||||
let cdSet = new Set();
|
||||
let hasDuplicate = false;
|
||||
|
||||
$('[name=cd]').each(function() {
|
||||
let cdValue = $(this).val();
|
||||
|
||||
if (cdValue.trim() === '') {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (cdSet.has(cdValue)) {
|
||||
hasDuplicate = true;
|
||||
return false; // 중복이 발견되면 반복을 종료
|
||||
}
|
||||
cdSet.add(cdValue);
|
||||
});
|
||||
|
||||
return hasDuplicate;
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 목록 조회
|
||||
******************************************************** */
|
||||
const fn_select_list = function(pageIndex) {
|
||||
const url = '<c:url value="/admin/sys/comncd/selectCmmnCodeListInqireForm"/>';
|
||||
|
||||
$('#listForm').attr('action', url);
|
||||
$('#listForm').attr('method', 'post');
|
||||
if(pageIndex) {
|
||||
$('#pageIndex').val(pageIndex);
|
||||
}
|
||||
$('#listForm').submit();
|
||||
};
|
||||
|
||||
/* ********************************************************
|
||||
* 수정폼 이동
|
||||
******************************************************** */
|
||||
const fn_move_dtl_uptpage = function() {
|
||||
const url = '<c:url value="/admin/sys/comncd/selectCmmnCodeUpdtForm"/>';
|
||||
|
||||
$('#listForm').attr('action', url);
|
||||
$('#listForm').attr('method', 'get');
|
||||
$('#pageIndex').val(1);
|
||||
$('#listForm').submit();
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 코드 - 영어, 숫자, 언더바(_), 하이픈(-)만 허용
|
||||
******************************************************** */
|
||||
function fn_cd_validateInput(input) {
|
||||
var regex = /[^a-zA-Z0-9_-]/g;
|
||||
input.value = input.value.replace(regex, '');
|
||||
input.value = input.value.toUpperCase();
|
||||
}
|
||||
|
||||
</script>
|
||||
<body>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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 onclick="fn_select_list()" onkeypress="this.onclick" class="btn outline"><spring:message code="button.list"/></button>
|
||||
<button class="btn primary outline" onclick="fn_update();" ><spring:message code="button.update"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<section class="content-section">
|
||||
<h3 class="content-section__title">공통코드 정보</h3>
|
||||
<form id="listForm" method="post" action="<c:url value="/admin/sys/comncd/insertCmmnCodeRegist"/>">
|
||||
<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>
|
||||
<c:choose>
|
||||
<c:when test="${ not empty resultMap.CodeGrouplist }">
|
||||
<c:forEach items="${ resultMap.CodeGrouplist }" var="list" varStatus="status">
|
||||
<tr>
|
||||
<th>코드그룹 명<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text lg" type="text" id="groupCdNm" name="groupCdNm" value="<c:out value="${list.groupCdNm}"/>" title="코드그룹 명" maxlength="35">
|
||||
</div>
|
||||
</td>
|
||||
<th>코드그룹 ID<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text md" type="text" id="groupCd" name="groupCd" value="<c:out value="${list.groupCd}"/>" title="코드그룹 ID" readonly>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>코드그룹 설명</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<textarea class="textarea" title="코드그룹 설명" id="groupCdDc" name="groupCdDc" value="<c:out value="${list.groupCdDc}"/>" rows="8" maxlength="1000"><c:out value="${list.groupCdDc}"/></textarea>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>사용여부<span class="red-7">*</span></th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select title="사용여부" id="groupUseAt" name="groupUseAt">
|
||||
<option value="Y" <c:if test="${ list.useAt eq 'Y'}">selected="selected"</c:if>>사용</option>
|
||||
<option value="N" <c:if test="${ list.useAt eq 'N'}">selected="selected"</c:if>>미사용</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach></c:when></c:choose>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="form-control-container mb-8">
|
||||
<div class="left">
|
||||
<h3 class="content-section__inner-title">코드 정보</h3>
|
||||
</div>
|
||||
<div class="center">
|
||||
</div>
|
||||
<div class="right">
|
||||
<button type="button" class="btn dark sm" onclick="fn_delete_row()">행 <spring:message code="button.delete"/></button>
|
||||
<button type="button" class="btn primary outline sm" onclick="fn_add_row()">행 <spring:message code="button.add"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical draggable" id ="cmmnCodeListTb">
|
||||
<caption>코드</caption>
|
||||
<colgroup>
|
||||
<col style="width: 60px;">
|
||||
<col style="width: 18%;">
|
||||
<col style="width: 18%;">
|
||||
<col style="width: auto;">
|
||||
<col style="width: 10%;">
|
||||
<col style="width: 8%;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<label class="b-checkbox checkbox is-medium check-all">
|
||||
<input type="checkbox" id="ChkAll" value="" >
|
||||
<span class="check"></span>
|
||||
</label>
|
||||
</th>
|
||||
<th>코드명<span class="red-7">*</span></th>
|
||||
<th>코드<span class="red-7">*</span></th>
|
||||
<th>코드 설명</th>
|
||||
<th>사용여부<span class="red-7">*</span></th>
|
||||
<th>순서</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="codeTbody">
|
||||
<c:choose>
|
||||
<c:when test="${ not empty resultMap.list }">
|
||||
<c:forEach items="${ resultMap.list }" var="list" varStatus="status">
|
||||
<tr>
|
||||
<td>
|
||||
<label class="b-checkbox checkbox is-medium">
|
||||
|
||||
<span class="check"></span>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<input class="input-text full" type="text" id="cdNm" name="cdNm" value="<c:out value="${list.cdNm}"/>" title="코드명" maxlength="35">
|
||||
</td>
|
||||
<td>
|
||||
<input class="input-text full" type="text" id="cd" name="cd" value="<c:out value="${list.cd}"/>" title="코드" readonly>
|
||||
</td>
|
||||
<td>
|
||||
<input class="input-text full" type="text" id="cdDc" name="cdDc" value="<c:out value="${list.cdDc}"/>" title="코드 설명" maxlength="1000">
|
||||
</td>
|
||||
<td>
|
||||
<div class="select-box">
|
||||
<select id="useAt" name="useAt" title="사용여부">
|
||||
<option value="Y" <c:if test="${ list.useAt eq 'Y'}">selected="selected"</c:if>>사용</option>
|
||||
<option value="N" <c:if test="${ list.useAt eq 'N'}">selected="selected"</c:if>>미사용</option>
|
||||
</select>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="draggable-icon-container">
|
||||
<i class="icon icon_draggable"></i>
|
||||
<span class="visually-hidden">순서 바꾸기</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</c:when></c:choose>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!--검색 조건 , 페이징 조건 -->
|
||||
<input type="hidden" id="srchType" name="srchType" title="검색타입" value="<c:out value="${ resultMap.BOMaComncdVO.srchType }"/>">
|
||||
<input type="hidden" id="srchStr" name="srchStr" title="검색어" value="<c:out value="${ resultMap.BOMaComncdVO.srchStr }"/>">
|
||||
<input type="hidden" id="srchUseAt" name="srchUseAt" title="사용여부" value="<c:out value="${ resultMap.BOMaComncdVO.srchUseAt }"/>">
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value="${ resultMap.BOMaComncdVO.pageIndex }"/>"/>
|
||||
<input type="hidden" id="pageUnit" name="pageUnit" value="<c:out value="${ resultMap.BOMaComncdVO.pageUnit }"/>"/>
|
||||
|
||||
</form>
|
||||
</section>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,65 @@
|
||||
<%@ 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="f" uri="/WEB-INF/tlds/f.tld"%>
|
||||
<script src="<c:url value='/mngr/js/script.js'/>" defer></script>
|
||||
|
||||
<div id="ctgryInGoodsOrdr" class="modal" style="max-width: 560px;">
|
||||
<div class="modal-header">
|
||||
<h4>상품 정렬</h4>
|
||||
</div>
|
||||
<div class="modal-content" style="height: 500px;">
|
||||
<div class="table-wrapper">
|
||||
<form id="ordrUptFrm">
|
||||
<table class="table vertical draggable" id="targetTable">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 15%;">
|
||||
<col style="width: auto;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>순서</th>
|
||||
<th>상품명</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:choose>
|
||||
<c:when test="${not empty resultMap.ctgryGoodsList}">
|
||||
<c:forEach items="${ resultMap.ctgryGoodsList }" var="list" varStatus="status">
|
||||
<tr>
|
||||
<td>
|
||||
<div class="draggable-icon-container">
|
||||
<input type="hidden" name="ctgryGoodsEsntlNb" value="<c:out value="${list.ctgryGoodsEsntlNb}"/>"/>
|
||||
<i class="icon icon_draggable"></i>
|
||||
<span class="visually-hidden">순서 바꾸기</span>
|
||||
</div>
|
||||
</td>
|
||||
<td class="text-left"><c:out value="${ list.goodsNm }"/></td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<tr class="row-no-data">
|
||||
<td colspan="100%" ><spring:message code="common.nodata"/></td>
|
||||
</tr>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#" id="modalClose" rel="modal:close" class="btn outline">닫기</a>
|
||||
<c:if test="${not empty resultMap.ctgryGoodsList}">
|
||||
<button class="btn primary" type="button" onclick="fn_update_goodOrdr();"><spring:message code="button.save"/></button>
|
||||
</c:if>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
1058
src/main/webapp/WEB-INF/views/admin/sys/ctgry/MaCtgryUpdtU.jsp
Normal file
1058
src/main/webapp/WEB-INF/views/admin/sys/ctgry/MaCtgryUpdtU.jsp
Normal file
File diff suppressed because it is too large
Load Diff
288
src/main/webapp/WEB-INF/views/admin/sys/fnct/maFnctC.jsp
Normal file
288
src/main/webapp/WEB-INF/views/admin/sys/fnct/maFnctC.jsp
Normal file
@@ -0,0 +1,288 @@
|
||||
<%@ 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 : maFnctC.jsp
|
||||
Description : 기능 등록 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
since : 2023.12.22 최범식 최초 생성
|
||||
--%>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
||||
$('input').keydown(function(event) {
|
||||
if (event.keyCode === 13) {
|
||||
event.preventDefault();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
/* ********************************************************
|
||||
* url 공백 삭제
|
||||
******************************************************** */
|
||||
const fn_remove_noSpaceUrl = function(_value) {
|
||||
|
||||
$('#fnctUrl').val(_value.replace(/\s/g, ""));
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 기능 목록조회
|
||||
******************************************************** */
|
||||
const fn_select_fnct_list = function(pageIndex, pageUnit) {
|
||||
|
||||
if (pageIndex == undefined || pageUnit == '') {
|
||||
$('#pageIndex').val('1');
|
||||
} else {
|
||||
$('#pageIndex').val(pageIndex);
|
||||
}
|
||||
|
||||
let params = $('#srchForm').serialize();
|
||||
if (pageUnit != undefined || pageUnit == '') {
|
||||
|
||||
params += '&pageUnit=' + pageUnit;
|
||||
} else {
|
||||
|
||||
params += '&pageUnit=' + $('#pageUnit').val();
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type : 'post',
|
||||
url : '<c:url value="/admin/sys/fnct/selectFnctListInqire"/>',
|
||||
data : params,
|
||||
success : function(data) {
|
||||
|
||||
$('#pageDiv').html(data);
|
||||
$('#pageUnit').niceSelect();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* url 중복 조회
|
||||
******************************************************** */
|
||||
isChkd_Dup = false;
|
||||
const fn_check_duplication = function() {
|
||||
|
||||
const sysDvCd = $('input[name="sysDvCd"]:checked').val();
|
||||
|
||||
if(fn_is_empty(sysDvCd)){
|
||||
alert('시스템 구분을 선택해 주세요.')
|
||||
return;
|
||||
}
|
||||
|
||||
let fnctUri = $('#fnctUri').val();
|
||||
if ( fnctUri === '' ) {
|
||||
alert('URL을 입력해 주세요.');
|
||||
$('#fnctUri').focus();
|
||||
return;
|
||||
}
|
||||
|
||||
if(fnctUri.includes('?')){
|
||||
alert("파라미터는 입력할 수 없습니다.");
|
||||
return;
|
||||
}
|
||||
|
||||
let param = { 'fnctUri' : fnctUri,
|
||||
'sysDvCd' : sysDvCd
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url : '<c:url value="/admin/sys/fnct/selectFnctUrlDplctInqire"/>',
|
||||
data: param,
|
||||
success: function (data) {
|
||||
|
||||
let result = JSON.parse(data.resBody.result).result;
|
||||
if (result === 'fail') {
|
||||
|
||||
alert('\"' + fnctUri + '\" 사용 가능한 URI 입니다.');
|
||||
$('[name=fnctDc]').focus();
|
||||
isChkd_Dup = true;
|
||||
|
||||
} else {
|
||||
alert('\"' + fnctUri + '\" 사용 불가능한 URI 입니다.');
|
||||
$('#fnctUri').focus();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* ******************************
|
||||
* 변경 감지 시 중복 다시 체크
|
||||
********************************/
|
||||
const fn_dirty_checking = () => {
|
||||
isChkd_Dup = false;
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 기능 등급 등록
|
||||
******************************************************** */
|
||||
const fn_regist_fnct = function() {
|
||||
|
||||
if (!confirm('기능을 <spring:message code="confirm.common.insert"/>')) return;
|
||||
let params = $('#regForm').serialize();
|
||||
|
||||
if(isChkd_Dup){
|
||||
params += "&isChckDup=true"
|
||||
} else {
|
||||
params += "&isChckDup=false"
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url : '<c:url value="/admin/sys/fnct/insertFnctRegist"/>',
|
||||
data: params,
|
||||
success: function (result) {
|
||||
let fnctId = JSON.parse(result.resBody.result).fnctId;
|
||||
|
||||
$('#backupForm').find('[name=fnctId]').val(fnctId);
|
||||
$('#backupForm').find('[name=pageDv]').val('I');
|
||||
|
||||
if(fnctId !== '' && fnctId !== undefined){
|
||||
alert('<spring:message code="success.common.insert"/>');
|
||||
$('#backupForm').attr('action', '<c:url value="/admin/sys/fnct/selectFnctUpdtForm"/>');
|
||||
$('#backupForm').submit();
|
||||
} else {
|
||||
|
||||
alert('<spring:message code="fail.common.insert"/>');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 기능 등급 목록 이동
|
||||
******************************************************** */
|
||||
const fn_goto_list = function() {
|
||||
$('#backupForm').attr('action', '<c:url value="/admin/sys/fnct/selectFnctListInqireForm"/>');
|
||||
$('#backupForm').submit();
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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 type="button" class="btn outline" onclick="fn_goto_list()"><spring:message code="button.catalog"/></button>
|
||||
<button type="button" class="btn primary" onclick="fn_regist_fnct();"><spring:message code="button.save"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<section class="content-section">
|
||||
<form id="regForm" class="common-form">
|
||||
<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>기능 명<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text xl" type="text" name="fnctNm" title="기능명" maxlength="48"/>
|
||||
</div>
|
||||
</td>
|
||||
<th>기능 구분<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select name="fnctDvCd" title="기능구분" >
|
||||
<option value="" selected disabled>선택하세요.</option>
|
||||
<c:forEach var="fnctDvCd" items="${resultMap.codeList[0].cgn031}" varStatus="status">
|
||||
<option value="${fnctDvCd.cd}"> ${fnctDvCd.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>시스템 구분<span class="red-7">*</span></th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<c:forEach var="codeList" items="${ resultMap.mngrDvList }" varStatus="">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" name="sysDvCd"
|
||||
id="sysDvCd${ codeList.cd }"
|
||||
value="<c:out value="${ codeList.cd }" />"
|
||||
>
|
||||
<label for="sysDvCd${ codeList.cd }"/>
|
||||
<c:out value="${ codeList.cdNm }" />
|
||||
</label>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>URL<span class="red-7">*</span></th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<input class="input-text xl" type="text" name="fnctUri" id="fnctUri" title="url" onkeyup="fn_remove_noSpaceUrl(this.value);" onchange="fn_dirty_checking()" maxlength="120"/>
|
||||
<button type="button" class="btn sm gray ml-5" onclick="fn_check_duplication();"><spring:message code="button.doubleCheck"/></button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>기능 설명</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<textarea class="textarea" name="fnctDc" title="기능설명" rows="8" maxlength="200"></textarea>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<form id="backupForm" method="post" >
|
||||
<input type="hidden" name="srchFnctNm" value="${resultMap.vo.srchFnctNm }" />
|
||||
<input type="hidden" name="srchFnctUrl" value="${resultMap.vo.srchFnctUrl }" />
|
||||
<input type="hidden" name="srchFnctDv" value="${resultMap.vo.srchFnctDv }" />
|
||||
<input type="hidden" name="srchSysDvCd" value="${resultMap.vo.srchSysDvCd }" />
|
||||
<input type="hidden" name="pageUnit" value="${resultMap.vo.pageUnit }" />
|
||||
<input type="hidden" name="pageIndex" value="${resultMap.vo.pageIndex }" />
|
||||
<input type="hidden" name="fnctId" value="" />
|
||||
<input type="hidden" name="pageDv" value="" />
|
||||
</form>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,120 @@
|
||||
<%@ 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 : maFnctListInqireR.jsp
|
||||
Description : 기능 목록 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023-12-20 김혜지 최초 생성(퍼블리싱 적용)
|
||||
--%>
|
||||
|
||||
<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_fnct_list('1')">
|
||||
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
|
||||
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paramVO.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">
|
||||
<button type="button" class="btn outline sm" onclick="fn_download_excel();">
|
||||
<i class="icon icon_excel"></i>
|
||||
다운로드
|
||||
</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: auto;">
|
||||
<col style="width: 10%;">
|
||||
<col style="width: 10%;">
|
||||
<col style="width: 36%;">
|
||||
<col style="width: 8%;">
|
||||
<col style="width: 7%">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>번호</th>
|
||||
<th>기능명</th>
|
||||
<th>시스템 구분</th>
|
||||
<th>기능 구분</th>
|
||||
<th>URL</th>
|
||||
<th>등록일자</th>
|
||||
<th>관리</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:choose>
|
||||
<c:when test="${ not empty resultMap.resultList }">
|
||||
<c:forEach var="fnctList" items="${resultMap.resultList }" varStatus="status">
|
||||
<tr>
|
||||
<td>
|
||||
<c:out value="${resultMap.paginationInfo.totalRecordCount - fnctList.rnum + 1 }"/>
|
||||
</td>
|
||||
<td class="left" style="word-break: break-all;">
|
||||
<c:out value="${fnctList.fnctNm }"/>
|
||||
</td>
|
||||
<td>
|
||||
<c:out value="${fnctList.sysDvCdNm}" />
|
||||
</td>
|
||||
<td>
|
||||
<c:out value="${fnctList.fnctDvNm }"/>
|
||||
</td>
|
||||
<td>
|
||||
<c:out value="${fnctList.fnctUri}" />
|
||||
</td>
|
||||
<td>
|
||||
<span>
|
||||
<c:out value="${fnctList.registDt}"/>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<div class="manage-btn-container re">
|
||||
<button type="button" class="btn xsm primary outline" onclick="fn_move_fnctDetail('${fnctList.fnctId }');" ><spring:message code="button.update"/></button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<tr>
|
||||
<td class="row-no-data" colspan="8">조회된 데이터가 없습니다.</td>
|
||||
</tr>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
<div class="pagination__container">
|
||||
<ui:pagination paginationInfo="${ resultMap.paginationInfo }" type="image" jsFunction="fn_select_fnct_list" />
|
||||
</div>
|
||||
@@ -0,0 +1,224 @@
|
||||
<%@ 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 : maFnctListInqireR.jsp
|
||||
Description : 기능 목록 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023-12-20 김혜지 최초 생성(퍼블리싱 적용)
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
|
||||
let pageIndex = '<c:out value="${ resultMap.paramVO.pageIndex }"/>';
|
||||
let pageUnit = '<c:out value="${ resultMap.paramVO.pageUnit }"/>';
|
||||
let pageDv = '<c:out value="${ resultMap.paramVO.pageDv }"/>';
|
||||
|
||||
if (pageDv == '') {
|
||||
fn_select_fnct_list(pageIndex, pageUnit);
|
||||
} else {
|
||||
fn_select_fnct_list('1', '10');
|
||||
}
|
||||
$('#srchFnct-select').keydown(function(event) {
|
||||
if (event.keyCode === 13) {
|
||||
event.preventDefault();
|
||||
};
|
||||
});
|
||||
$('[name=srchFnctNm], [name=srchFnctUrl]').keydown(function(event) {
|
||||
if (event.keyCode === 13) {
|
||||
event.preventDefault();
|
||||
fn_select_fnct_list('1');
|
||||
};
|
||||
});
|
||||
});
|
||||
|
||||
/* ********************************************************
|
||||
* 기능 목록조회
|
||||
******************************************************** */
|
||||
const fn_select_fnct_list = function(pageIndex, pageUnit) {
|
||||
|
||||
if (pageIndex == undefined || pageUnit == '') {
|
||||
$('#pageIndex').val('1');
|
||||
} else {
|
||||
$('#pageIndex').val(pageIndex);
|
||||
}
|
||||
|
||||
let params = $('#srchForm').serialize();
|
||||
if (pageUnit != undefined || pageUnit == '') {
|
||||
|
||||
params += '&pageUnit=' + pageUnit;
|
||||
} else {
|
||||
params += '&pageUnit=' + $('#pageUnit').val();
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type : 'post',
|
||||
url : '<c:url value="/admin/sys/fnct/selectFnctListInqire"/>',
|
||||
data : params,
|
||||
success : function(data) {
|
||||
$('#pageDiv').html(data);
|
||||
$('#pageUnit').niceSelect();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**********************************************
|
||||
* 기능 검색 초기화
|
||||
***********************************************/
|
||||
const fn_clear_input = function() {
|
||||
|
||||
$('[name=srchFnctNm]').val('');
|
||||
$('[name=srchFnctUrl]').val('');
|
||||
$('[name=srchSysDvCd]').prop('checked', false);
|
||||
$('#srchFnct-select').val('').niceSelect('update');
|
||||
|
||||
}
|
||||
|
||||
/**********************************************
|
||||
* 기능 등록 화면 이동
|
||||
***********************************************/
|
||||
const fn_move_fnctRegist = function() {
|
||||
|
||||
$('#srchForm').attr('action', '<c:url value="/admin/sys/fnct/selectFnctRegistForm"/>');
|
||||
$('#srchForm').attr('method', 'post');
|
||||
$('#srchForm').submit();
|
||||
}
|
||||
/**********************************************
|
||||
* 기능 수정 화면 이동
|
||||
***********************************************/
|
||||
const fn_move_fnctDetail = function(_fnctId) {
|
||||
|
||||
$('#fnctId').val(_fnctId);
|
||||
$('#srchForm').attr('action', '<c:url value="/admin/sys/fnct/selectFnctUpdtForm"/>');
|
||||
$('#srchForm').attr('method', 'post');
|
||||
$('#srchForm').submit();
|
||||
}
|
||||
/**********************************************
|
||||
* 기능 엑셀 다운로드
|
||||
***********************************************/
|
||||
const fn_download_excel = function() {
|
||||
|
||||
$('#srchForm').attr('action', '<c:url value="/admin/sys/fnct/excelFileDownload"/>');
|
||||
$('#srchForm').attr('method', 'post');
|
||||
$('#srchForm').submit();
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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">
|
||||
<button type="button" class="btn primary" onclick="fn_move_fnctRegist();">기능 <spring:message code="button.insert"/></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form id="srchForm" >
|
||||
<input type="hidden" id="fnctId" name="fnctId" />
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" value="1"/>
|
||||
<section class="content-section" >
|
||||
<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="td-inner">
|
||||
<input class="input-text xl" type="text" name="srchFnctNm" title="기능명" value="${resultMap.paramVO.srchFnctNm }"/>
|
||||
</div>
|
||||
</td>
|
||||
<th>기능 구분</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box" id="fnctDvCd">
|
||||
<select name="srchFnctDv" id="srchFnct-select" title="기능 구분" >
|
||||
<option value="" ${f:setSelected(resultMap.paramVO.srchFnctDv, '')} >전체</option>
|
||||
<c:forEach var="fnctDvCd" items="${resultMap.codeList[0].cgn031}" varStatus="status">
|
||||
<option value="${fnctDvCd.cd}" ${f:setSelected(resultMap.paramVO.srchFnctDv, fnctDvCd.cd) }> ${fnctDvCd.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>시스템 구분</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<c:forEach var="codeList" items="${ resultMap.mngrDvList }" varStatus="">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" name="srchSysDvCd"
|
||||
id="sysDvCd${ codeList.cd }"
|
||||
value="<c:out value="${ codeList.cd }" />"
|
||||
<c:if test="${ codeList.cd eq resultMap.paramVO.srchSysDvCd }">checked="checked"</c:if>
|
||||
>
|
||||
<label for="sysDvCd${ codeList.cd }"/>
|
||||
<c:out value="${ codeList.cdNm }" />
|
||||
</label>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>URL</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<input class="input-text full" type="text" name="srchFnctUrl" title="url" value="${resultMap.paramVO.srchFnctUrl}"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="form-control-container">
|
||||
<div class="left"></div>
|
||||
<div class="center">
|
||||
<button type="button" class="btn primary" onclick="fn_select_fnct_list('1');"><spring:message code="button.search"/></button>
|
||||
<button type="button" class="btn outline" onclick="fn_clear_input();"><spring:message code="button.init"/></button>
|
||||
</div>
|
||||
<div class="right"></div>
|
||||
</div>
|
||||
</section>
|
||||
<div id="pageDiv"></div>
|
||||
</form>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
217
src/main/webapp/WEB-INF/views/admin/sys/fnct/maFnctU.jsp
Normal file
217
src/main/webapp/WEB-INF/views/admin/sys/fnct/maFnctU.jsp
Normal file
@@ -0,0 +1,217 @@
|
||||
<%@ 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 : maFnctU.jsp
|
||||
Description : 기능 수정 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
since : 2023.12.19 김혜지 최초 생성
|
||||
--%>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
||||
$('input').keydown(function(event) {
|
||||
|
||||
if (event.keyCode === 13) {
|
||||
event.preventDefault();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
/* ********************************************************
|
||||
* 기능 설정 삭제
|
||||
******************************************************** */
|
||||
const fn_delete_fnct = function() {
|
||||
|
||||
if(!confirm('기능을 <spring:message code="confirm.common.delete"/>')) return;
|
||||
|
||||
let fnctId = $('#fnctId').val();
|
||||
let param = {'fnctId' : fnctId};
|
||||
|
||||
$.ajax({
|
||||
type: 'get',
|
||||
url : '<c:url value="/admin/sys/fnct/deleteFnctDel"/>',
|
||||
data: param,
|
||||
success: function (data) {
|
||||
let result = JSON.parse(data.resBody.result).result;
|
||||
|
||||
if (result !=='success') {
|
||||
alert('<spring:message code="fail.common.delete"/>');
|
||||
return;
|
||||
}
|
||||
alert('<spring:message code="success.common.delete"/>');
|
||||
fn_goto_list();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 기능 수정
|
||||
******************************************************** */
|
||||
const fn_update_fnct = function() {
|
||||
|
||||
if(!confirm('기능을 <spring:message code="confirm.common.update"/>')) return;
|
||||
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url : '<c:url value="/admin/sys/fnct/updateFnctUpdt"/>',
|
||||
data: $('#updForm').serialize(),
|
||||
success: function (result) {
|
||||
let data = JSON.parse(result.resBody.result);
|
||||
if (data.result !== 'success') {
|
||||
alert('<spring:message code="fail.common.update"/>');
|
||||
return;
|
||||
}
|
||||
alert('<spring:message code="success.common.update"/>');
|
||||
$('#backUpData').find('[name=pageDv]').val('U');
|
||||
$('#backUpData').find('[name=fnctId]').val(data.fnctId);
|
||||
$('#backUpData').attr('action', '<c:url value="/admin/sys/fnct/selectFnctUpdtForm"/>');
|
||||
$('#backUpData').submit();
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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 type="button" class="btn outline" onclick="fn_goto_list();"><spring:message code="button.catalog"/></button>
|
||||
<button type="button" class="btn dark" onclick="fn_delete_fnct();"><spring:message code="button.delete"/></button>
|
||||
<button type="button" class="btn primary" onclick="fn_update_fnct();"><spring:message code="button.save"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<section class="content-section">
|
||||
<form id="updForm">
|
||||
<input type="hidden" name="fnctId" id="fnctId" value="${resultMap.vo.fnctId }" />
|
||||
<input type="hidden" name="menuCd" id="menuCd" value="${resultMap.vo.menuCd }" />
|
||||
<input type="hidden" name="srchFnctNm" value="${resultMap.vo.srchFnctNm }" />
|
||||
<input type="hidden" name="srchFnctUrl" value="${resultMap.vo.srchFnctUrl }" />
|
||||
<input type="hidden" name="srchFnctDv" value="${resultMap.vo.srchFnctDv }" />
|
||||
<input type="hidden" name="pageUnit" value="${resultMap.vo.pageUnit }" />
|
||||
<input type="hidden" name="pageIndex" value="${resultMap.vo.pageIndex }" />
|
||||
<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>기능 명<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text lg" type="text" name="fnctNm" title="회원등급명" value="${resultMap.vo.fnctNm }" maxlength="48"/>
|
||||
</div>
|
||||
</td>
|
||||
<th>기능 구분<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select name="fnctDvCd" title="기능 구분" >
|
||||
<option value="" disabled>선택하세요.</option>
|
||||
<c:forEach var="fnctDvCd" items="${resultMap.codeList[0].cgn031 }" varStatus="status">
|
||||
<option value="${fnctDvCd.cd}" ${f:setSelected(fnctDvCd.cd, resultMap.vo.fnctDvCd)} > ${fnctDvCd.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>시스템 구분</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<c:forEach var="codeList" items="${ resultMap.mngrDvList }" varStatus="">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" name="sysDvCd"
|
||||
id="sysDvCd${ codeList.cd }"
|
||||
value="<c:out value="${ codeList.cd }" />"
|
||||
<c:if test="${ codeList.cd eq resultMap.vo.sysDvCd }">checked="checked"</c:if>
|
||||
>
|
||||
<label for="sysDvCd${ codeList.cd }"/>
|
||||
<c:out value="${ codeList.cdNm }" />
|
||||
</label>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>URL</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<input type="hidden" name="fnctUrl" value="${resultMap.vo.fnctUri }"/>
|
||||
<c:out value="${resultMap.vo.fnctUri }"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>기능 설명</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<textarea class="textarea" name="fnctDc" title="기능 설명" rows="8" maxlength="200" ><c:out value="${resultMap.vo.fnctDc }"/></textarea>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<form id="backUpData" method="post" >
|
||||
<input type="hidden" name="srchFnctNm" value="${resultMap.vo.srchFnctNm }" />
|
||||
<input type="hidden" name="srchFnctUrl" value="${resultMap.vo.srchFnctUrl }" />
|
||||
<input type="hidden" name="srchFnctDv" value="${resultMap.vo.srchFnctDv }" />
|
||||
<input type="hidden" name="srchSysDvCd" value="${resultMap.vo.srchSysDvCd }" />
|
||||
<input type="hidden" name="pageUnit" value="${resultMap.vo.pageUnit }" />
|
||||
<input type="hidden" name="pageIndex" value="${resultMap.vo.pageIndex }" />
|
||||
<input type="hidden" name="fnctId" value="" />
|
||||
<input type="hidden" name="pageDv" value="" />
|
||||
</form>
|
||||
</body>
|
||||
<script>
|
||||
/* ********************************************************
|
||||
* 기능 등급 목록 이동
|
||||
******************************************************** */
|
||||
const fn_goto_list = function() {
|
||||
$('#backUpData').attr('action', '<c:url value="/admin/sys/fnct/selectFnctListInqireForm"/>');
|
||||
$('#backUpData').submit();
|
||||
}
|
||||
|
||||
</script>
|
||||
</html>
|
||||
506
src/main/webapp/WEB-INF/views/admin/sys/menu/MaMenuUpdtU.jsp
Normal file
506
src/main/webapp/WEB-INF/views/admin/sys/menu/MaMenuUpdtU.jsp
Normal file
@@ -0,0 +1,506 @@
|
||||
<%@ 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 : MaMenuUpdtU.jsp
|
||||
Description : 메뉴 관리
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-01-31 리브가 최초생성
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
</head>
|
||||
<body>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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_init();"><spring:message code="button.init"/></button>
|
||||
<button class="btn primary" onclick="fn_save();"><spring:message code="button.save"/></button>
|
||||
<button class="btn primary" onclick="fn_delete();"><spring:message code="button.delete"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<section class="content-section">
|
||||
<form id="insertForm" method="post" novalidate onsubmit="return false;">
|
||||
<div class="tree-section">
|
||||
<div class="tree-section__left">
|
||||
<div class="form-control-container">
|
||||
<div class="left">
|
||||
<h3 class="content-section__title mb-0">메뉴 관리</h3>
|
||||
</div>
|
||||
<div class="center">
|
||||
</div>
|
||||
<div class="right">
|
||||
<button class="btn xsm outline primary" type="button" onclick="fn_child_add()"><spring:message code="button.add"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="jstree-wrapper">
|
||||
<div id="jstree-div"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tree-section__right">
|
||||
<div class="form-control-container">
|
||||
<div class="left">
|
||||
<h3 class="content-section__title mb-0">메뉴 정보</h3>
|
||||
</div>
|
||||
<div class="center">
|
||||
</div>
|
||||
<div class="right">
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-wrapper">
|
||||
<input type="hidden" class="input-text" name="menuDepth" id="menuDepth" value="">
|
||||
<input type="hidden" class="input-text" name="nodeParent" id="nodeParent" value="">
|
||||
<input type="hidden" class="input-text" name="menuCd" id="menuCd" value="">
|
||||
<input type="hidden" class="input-text" name="upperMenuCd" id="upperMenuCd" value="">
|
||||
<input type="hidden" class="input-text" name="upmostMenuCd" id="upmostMenuCd" value="">
|
||||
<input type="hidden" class="input-text" name="sopmalCd" id="sopmalCd" value="">
|
||||
<table class="table">
|
||||
<caption>메뉴 정보</caption>
|
||||
<colgroup>
|
||||
<col style="width: 120px;">
|
||||
<col>
|
||||
<col style="width: 120px;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>메뉴명</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input type="text" class="input-text xl" name="menuNm" id="menuNm" value="" title="메뉴명" maxlength="50">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>메뉴 순서</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input type="text" class="input-text" value="" name="sortOrdr" id="sortOrdr" title="메뉴 순서">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="trExpsrAt">
|
||||
<th>노출 위치</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<c:forEach var="expsrLcDvCd" items="${resultMap.expsrLcDvCd}" varStatus="status">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="expsrLcDvCd_${expsrLcDvCd.cd}" name="expsrLcDvCd" value="${expsrLcDvCd.cd}" <c:if test="${status.index == 0}">checked </c:if>>
|
||||
<label for="expsrLcDvCd_${expsrLcDvCd.cd}">${expsrLcDvCd.cdNm}</label>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="mappingUrl">
|
||||
<th>URL</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<input type="text" class="input-text xl" id="url" name="url" value="" title="URL">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>메뉴 설명</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<textarea class="textarea" value="" name="menuDc" id="menuDc" rows="6" maxlength="200" title="메뉴 설명"></textarea>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
<script type="text/javascript">
|
||||
|
||||
$(document).ready(
|
||||
function () {
|
||||
|
||||
$("#trExpsrAt").hide();
|
||||
|
||||
localStorage.removeItem('jstree');
|
||||
let _f = document.forms['insertForm'];
|
||||
_setElement(_f['menuNm'], null, {required: 'Y', hname: '메뉴명', minbyte: '1', maxbyte: '50'});
|
||||
_setElement(_f['sortOrdr'], null, {required: 'Y', hname: '메뉴순서', minbyte: '1', maxbyte: '10', option: 'number'});
|
||||
_setElement(_f['url'], null, {required: 'Y', hname: 'URL', minbyte: '1', maxbyte: '4000'});
|
||||
|
||||
const code_data = ${codeMenuList};
|
||||
|
||||
$('#jstree-div').jstree({
|
||||
"core": {
|
||||
"check_callback": true,
|
||||
"themes": {
|
||||
"stripes": true,
|
||||
dots: false
|
||||
},
|
||||
'data': function (node, callback) {
|
||||
var parsedData = [];
|
||||
code_data.forEach(function(item) {
|
||||
// 부모 노드가 유효한지 확인
|
||||
if (item.parent === "#" || code_data.some(n => n.id === item.parent)) {
|
||||
parsedData.push(item);
|
||||
}
|
||||
});
|
||||
callback(parsedData);
|
||||
}
|
||||
},
|
||||
"types" : {
|
||||
"#" : {
|
||||
"max_children" : 1,
|
||||
"max_depth" : 10,
|
||||
"valid_children" : ["root"]
|
||||
},
|
||||
"root" : {
|
||||
"icon" : "/static/3.3.10/assets/images/tree_icon.png",
|
||||
"valid_children" : ["default"]
|
||||
},
|
||||
"default" : {
|
||||
"valid_children" : ["default","file"]
|
||||
},
|
||||
"file" : {
|
||||
"icon" : "glyphicon glyphicon-file",
|
||||
"valid_children" : []
|
||||
}
|
||||
},
|
||||
"plugins" : [
|
||||
"search","state", "types", "wholerow"
|
||||
]
|
||||
}).on('ready.jstree', function(e, data) {
|
||||
data.instance.close_all();
|
||||
}).bind('select_node.jstree', function (event, data) {
|
||||
|
||||
let nodeData = data.instance.get_node(data.selected);
|
||||
const parent = nodeData.parent;
|
||||
let parentDepth = 0; //부모 메뉴DEPTH
|
||||
if (parent != '#') {
|
||||
parentDepth = parseInt($("#"+parent+"_anchor").attr('aria-level'), 10);
|
||||
}
|
||||
|
||||
$("#nodeParent").val(parent); //parent
|
||||
const thisVal = nodeData.original.upmostMenuCd;
|
||||
const thisDepth = nodeData.original.depth;
|
||||
|
||||
if (nodeData.id != 'create') {
|
||||
//기존 노드 선택 시 create 노드 삭제(삭제처리 안하면 newnode 중복생성 발생)
|
||||
$('#jstree-div').jstree("delete_node", "#create");
|
||||
|
||||
$("#menuDepth").val(nodeData.original.depth); //메뉴DEPTH
|
||||
$("#menuCd").val(nodeData.original.menuCd); //메뉴코드
|
||||
$("#upperMenuCd").val(nodeData.original.upperMenuCd); //상위 메뉴코드
|
||||
$("#upmostMenuCd").val(nodeData.original.upmostMenuCd); //최상단 메뉴코드
|
||||
$("#menuNm").val(nodeData.original.menuNm); //메뉴명
|
||||
$("#sortOrdr").val(nodeData.original.sortOrdr); //정렬순서
|
||||
$("#menuDc").val(nodeData.original.menuDc); //메뉴설명
|
||||
$("#sopmalCd").val(nodeData.original.sopmalCd); //쇼핑몰코드
|
||||
$("#url").val(nodeData.original.url); //URL
|
||||
|
||||
//노출여부
|
||||
const expsrLcDvCd = nodeData.original.expsrLcDvCd;
|
||||
if(expsrLcDvCd != null && expsrLcDvCd != ''){
|
||||
$("#expsrLcDvCd_"+expsrLcDvCd).prop("checked", true);//노출여부
|
||||
}else{
|
||||
$("#expsrLcDvCd_01").prop("checked", true);
|
||||
}
|
||||
|
||||
if (thisVal == "crm" && thisDepth > 0) {
|
||||
$("#trExpsrAt").show();
|
||||
}else{
|
||||
$("#trExpsrAt").hide();
|
||||
}
|
||||
|
||||
} else {
|
||||
//메뉴 추가
|
||||
$("#menuCd").val('');
|
||||
$("#menuNm").val('');
|
||||
$("#sortOrdr").val('');
|
||||
$("#expsrLcDvCd_01").prop('checked', true);
|
||||
$("#url").val('');
|
||||
$("#menuDc").val('');
|
||||
$("#menuDepth").val(parentDepth); //메뉴DEPTH
|
||||
if (nodeData.parent.startsWith("crm")) {
|
||||
$("#trExpsrAt").show();
|
||||
}else{
|
||||
$("#trExpsrAt").hide();
|
||||
}
|
||||
}
|
||||
if (parent == '#') {
|
||||
//최상이 노드인경우
|
||||
$("#menuNm").attr("readonly", true);
|
||||
$("#sortOrdr").attr("readonly", true);
|
||||
$("input[name=expsrLcDvCd]").attr("disabled",true);
|
||||
$("#url").attr("readonly", true);
|
||||
$("#menuDc").attr("readonly", true);
|
||||
} else {
|
||||
//그외
|
||||
$("#menuNm").attr("readonly", false);
|
||||
$("#sortOrdr").attr("readonly", false);
|
||||
$("input[name=expsrLcDvCd]").attr("disabled",false);
|
||||
$("#url").attr("readonly", false);
|
||||
$("#menuDc").attr("readonly", false);
|
||||
}
|
||||
});
|
||||
|
||||
// 순서 값 문자 방지
|
||||
$('#sortOrdr').keyup(function () {
|
||||
this.value = this.value.replace(/[^0-9]/g, '');
|
||||
});
|
||||
});
|
||||
|
||||
const _setElement = function (el, v, a) {
|
||||
if (v) v = v.replace(/__<__/g, '<').replace(/__>__/g, '>');
|
||||
if (typeof (el) != 'object') return;
|
||||
|
||||
if (v != null)
|
||||
switch (el.type) {
|
||||
case 'text':
|
||||
case 'hidden':
|
||||
case 'password':
|
||||
case 'file':
|
||||
el.value = v;
|
||||
break;
|
||||
case 'textarea':
|
||||
el.value = v;
|
||||
break;
|
||||
case 'checkbox':
|
||||
case 'radio':
|
||||
if (el.value == v) el.checked = true;
|
||||
else el.checked = false;
|
||||
break;
|
||||
case 'select-one':
|
||||
for (var i = 0; i < el.options.length; i++)
|
||||
if (el.options[i].value == v)
|
||||
el.options[i].selected = true;
|
||||
break;
|
||||
default:
|
||||
var val = v.split(",");
|
||||
if (val.length > 1) {
|
||||
for (var i = 0; i < el.length; i++) {
|
||||
for (var j = 0; j < val.length; j++) {
|
||||
if (el[i].value == val[j])
|
||||
el[i].checked = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
} else {
|
||||
for (var i = 0; i < el.length; i++)
|
||||
if (el[i].value == v)
|
||||
el[i].checked = true;
|
||||
el = el[0];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (typeof (a) == 'object') {
|
||||
if (el.type != 'select-one' && el.length > 1)
|
||||
el = el[0];
|
||||
for (i in a) el.setAttribute(i, a[i]);
|
||||
}
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 노드 추가
|
||||
******************************************************** */
|
||||
const fn_child_add = function () {
|
||||
|
||||
if($("#jstree-div").jstree("get_selected", true)[0] !== undefined){
|
||||
|
||||
const node = $("#jstree-div").jstree("get_selected", true)[0].original;
|
||||
if(node.id == 'create'){
|
||||
alert('노드정보를 입력해주세요.');
|
||||
return false;
|
||||
}
|
||||
|
||||
if((node.id == 'adm' || node.id == 'usr') && node.depth == '0'){
|
||||
alert('쇼핑몰 등록을 먼저 해주세요.');
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
const nodeText = {id: "create", text: "New code"};
|
||||
|
||||
$('#jstree-div').jstree().create_node(node.id, nodeText, 'last');
|
||||
$("#upperMenuCd").val(node.id);
|
||||
$("#menuCd").val('');
|
||||
$("#url").val('');
|
||||
$('#jstree-div').jstree("deselect_all");
|
||||
$('#jstree-div').jstree("select_node", "#create");
|
||||
}
|
||||
else {
|
||||
alert('상위 노드를 선택하세요.');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 노드 저장
|
||||
******************************************************** */
|
||||
const fn_save = function () {
|
||||
|
||||
if(typeof $("#jstree-div").jstree("get_selected", true)[0]=='undefined'){
|
||||
alert("노드를 선택하세요.");
|
||||
return;
|
||||
}
|
||||
|
||||
const node = $("#jstree-div").jstree("get_selected", true)[0].original;
|
||||
if(node.parent == '#'){
|
||||
alert("최상위 노드는 수정 불가합니다.");
|
||||
return;
|
||||
}
|
||||
|
||||
if(!fn_required_check('insertForm')){
|
||||
return;
|
||||
}
|
||||
|
||||
let nodeId = node.id; // 현재 선택된 노드의 ID
|
||||
let parentId = $("#nodeParent").val(); // 부모 노드의 ID
|
||||
let siblingIds = $('#jstree-div').jstree('get_node', parentId).children; // 부모 노드 아래의 모든 자식 노드들 (형제 노드 포함)
|
||||
let sortOrder = $("#sortOrdr").val(); //변경 순서
|
||||
let moveMenuCd = fn_move_order(siblingIds, nodeId,sortOrder-1);
|
||||
|
||||
if(confirm('노드를 <spring:message code="confirm.common.save"/>')){
|
||||
|
||||
var expsrLcDvCd = '';
|
||||
if($("#sopmalCd").val() == 'CM'){
|
||||
expsrLcDvCd = $("input[name=expsrLcDvCd]:checked").val();
|
||||
}
|
||||
|
||||
const param =
|
||||
{
|
||||
'menuCd' : $("#menuCd").val(),
|
||||
'upperMenuCd' : $("#upperMenuCd").val(),
|
||||
'upmostMenuCd' : $("#upmostMenuCd").val(),
|
||||
'menuNm' : $("#menuNm").val(),
|
||||
'sortOrdr' : $("#sortOrdr").val(),
|
||||
'menuDc' : $("#menuDc").val(),
|
||||
'sopmalCd' : $("#sopmalCd").val(),
|
||||
'url' : $("#url").val(),
|
||||
'expsrLcDvCd' : expsrLcDvCd,
|
||||
'menuDepth' : $("#menuDepth").val(),
|
||||
'moveMenuCd' : moveMenuCd
|
||||
};
|
||||
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: '<c:url value="/admin/sys/menu/updateMenuUpdt"/>',
|
||||
data: param,
|
||||
success: function (data) {
|
||||
let message = JSON.parse(data.resBody.result);
|
||||
if (message.result == 'success') {
|
||||
alert('<spring:message code="success.common.save"/>');
|
||||
location.reload();
|
||||
} else {
|
||||
alert('<spring:message code="fail.common.save"/>');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
const fn_required_check = function (formId){
|
||||
let requiredFields = document.querySelectorAll('#'+formId+' [required="Y"]');
|
||||
let result = true;
|
||||
|
||||
for (let field of requiredFields) {
|
||||
if (!field.value.trim()) {
|
||||
result = false;
|
||||
alert(field.title + '을 입력해주세요.'); //메시지
|
||||
field.focus();
|
||||
break;
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
const fn_move_order = function (array,id,order) {
|
||||
const currentIndex = array.indexOf(id);
|
||||
|
||||
if (currentIndex === -1) {
|
||||
return array;
|
||||
}
|
||||
|
||||
const [removedElement] = array.splice(currentIndex, 1);
|
||||
array.splice(order, 0, removedElement);
|
||||
|
||||
return array;
|
||||
}
|
||||
|
||||
const fn_init = function () {
|
||||
var idChk = $("#jstree-div").jstree("get_selected", true)[0];
|
||||
|
||||
if (idChk != null &&idChk.parent == "#") {
|
||||
alert("최상위 노드는 초기화가 불가합니다.");
|
||||
return false;
|
||||
}
|
||||
|
||||
$("#menuNm").val('');
|
||||
$("#sortOrdr").val('');
|
||||
$("#expsrLcDvCd_01").prop('checked', true);
|
||||
$("#url").val('');
|
||||
$("#menuDc").val('');
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 노드 삭제
|
||||
******************************************************** */
|
||||
const fn_delete = function () {
|
||||
|
||||
var idChk = $("#jstree-div").jstree("get_selected", true)[0].parent;
|
||||
|
||||
if (idChk == "#") {
|
||||
alert("최상위 노드는 삭제 불가합니다.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if(confirm('노드를 <spring:message code="confirm.common.delete"/>')){
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: '<c:url value="/admin/sys/menu/deleteMenuDel"/>',
|
||||
data: {
|
||||
'menuCd' : $("#menuCd").val(),
|
||||
'sopmalCd' : $("#sopmalCd").val()
|
||||
},
|
||||
success: function (data) {
|
||||
if (data) {
|
||||
alert('<spring:message code="success.common.delete"/>');
|
||||
location.reload();
|
||||
} else {
|
||||
alert('<spring:message code="fail.common.delete"/>');
|
||||
}
|
||||
},
|
||||
error: function (request, status, error) {
|
||||
console.log(error);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
@@ -0,0 +1,569 @@
|
||||
<%@ 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 : maFnctListInqireR.jsp
|
||||
Description : 기능 목록 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023-12-20 김혜지 최초 생성(퍼블리싱 적용)
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
|
||||
|
||||
|
||||
let pageIndex = '<c:out value="${ resultMap.paramVO.pageIndex }"/>';
|
||||
let pageUnit = '<c:out value="${ resultMap.paramVO.pageUnit }"/>';
|
||||
let pageDv = '<c:out value="${ resultMap.paramVO.pageDv }"/>';
|
||||
|
||||
if (pageDv == '') {
|
||||
fn_select_fnct_list(pageIndex, pageUnit);
|
||||
} else {
|
||||
fn_select_fnct_list('1', '10');
|
||||
}
|
||||
|
||||
$('input').keydown(function(event) {
|
||||
if (event.keyCode === 13) {
|
||||
event.preventDefault();
|
||||
};
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
/* ********************************************************
|
||||
* 기능 목록조회
|
||||
******************************************************** */
|
||||
const fn_select_fnct_list = function(pageIndex, pageUnit) {
|
||||
|
||||
if (pageIndex == undefined || pageUnit == '') {
|
||||
$('#pageIndex').val('1');
|
||||
} else {
|
||||
$('#pageIndex').val(pageIndex);
|
||||
}
|
||||
|
||||
let params = $('#srchForm').serialize();
|
||||
if (pageUnit != undefined || pageUnit == '') {
|
||||
|
||||
params += '&pageUnit=' + pageUnit;
|
||||
} else {
|
||||
params += '&pageUnit=' + $('#pageUnit').val();
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type : 'post',
|
||||
url : '<c:url value="/admin/sys/fnct/selectFnctListInqire"/>',
|
||||
data : params,
|
||||
success : function(data) {
|
||||
$('#pageDiv').html(data);
|
||||
$('#pageUnit').niceSelect();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**********************************************
|
||||
* 기능 검색 초기화
|
||||
***********************************************/
|
||||
const fn_clear_input = function() {
|
||||
|
||||
$('[name=srchFnctNm]').val('');
|
||||
$('[name=srchFnctUrl]').val('');
|
||||
$('#srchFnct-select').val('').prop('selected', true);
|
||||
|
||||
// nice-select 설정
|
||||
$('#srchFnct-select').next().find('li').removeClass('selected');
|
||||
$('#srchFnct-select').next().find('[data-value=전체]').addClass('selected');
|
||||
$('#srchFnct-select').next().find('.current').text('전체');
|
||||
|
||||
};
|
||||
|
||||
/**********************************************
|
||||
* 기능 등록 화면 이동
|
||||
***********************************************/
|
||||
const fn_move_fnctRegist = function() {
|
||||
|
||||
$('#srchForm').attr('action', '<c:url value="/admin/sys/fnct/selectFnctRegistForm"/>');
|
||||
$('#srchForm').attr('method', 'post');
|
||||
$('#srchForm').submit();
|
||||
};
|
||||
/**********************************************
|
||||
* 기능 수정 화면 이동
|
||||
***********************************************/
|
||||
const fn_move_fnctDetail = function(_fnctCd) {
|
||||
|
||||
$('#fnctCd').val(_fnctCd);
|
||||
$('#srchForm').attr('action', '<c:url value="/admin/sys/fnct/selectFnctUpdtForm"/>');
|
||||
$('#srchForm').attr('method', 'post');
|
||||
$('#srchForm').submit();
|
||||
};
|
||||
/**********************************************
|
||||
* 기능 엑셀 다운로드
|
||||
***********************************************/
|
||||
const fn_down_excelFile = function() {
|
||||
|
||||
$('#srchForm').attr('action', '<c:url value="/admin/sys/fnct/excelFileDownload"/>');
|
||||
$('#srchForm').attr('method', 'post');
|
||||
$('#srchForm').submit();
|
||||
};
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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 primary">저장</a>
|
||||
</div>
|
||||
</div>
|
||||
<section class="content-section">
|
||||
<div class="tree-section">
|
||||
<div class="tree-section__left">
|
||||
<div class="form-control-container">
|
||||
<div class="left">
|
||||
<h3 class="content-section__title mb-0">메뉴 관리</h3>
|
||||
</div>
|
||||
<div class="center">
|
||||
</div>
|
||||
<div class="right">
|
||||
<button class="btn xsm dark">삭제</button>
|
||||
<button class="btn xsm outline primary">추가</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="jstree-wrapper">
|
||||
<div id="jstree-div">
|
||||
<ul>
|
||||
<li data-jstree='{ "opened" : true }'>셀러메뉴
|
||||
<ul>
|
||||
<li data-jstree='{ "selected" : true }'>상품관리(S00001)
|
||||
<ul>
|
||||
<li>1</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>주문관리(S00002)
|
||||
<ul>
|
||||
<li>1</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>회원/혜택관리(S00012)
|
||||
<ul>
|
||||
<li>1</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>발주관리(S00039)
|
||||
<ul>
|
||||
<li>1</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>결제링크(S00123)
|
||||
<ul>
|
||||
<li>1</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>매출/정산(S00059)
|
||||
<ul>
|
||||
<li>1</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>SMS관리(S00067)
|
||||
<ul>
|
||||
<li>1</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>SMS셀러관리(S00076)
|
||||
<ul>
|
||||
<li>1</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>통계/현황(S00108)
|
||||
<ul>
|
||||
<li>1</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>알림링크(S00083)
|
||||
<ul>
|
||||
<li>1</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>환경설정(S00086)
|
||||
<ul>
|
||||
<li>1</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tree-section__right">
|
||||
<div class="form-control-container">
|
||||
<div class="left">
|
||||
<h3 class="content-section__title mb-0">메뉴 정보</h3>
|
||||
</div>
|
||||
<div class="center">
|
||||
</div>
|
||||
<div class="right">
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 120px;">
|
||||
<col>
|
||||
<col style="width: 120px;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>메뉴명</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input type="text" class="input-text md" value=""
|
||||
title="해당 인풋에 대한 설명">
|
||||
</div>
|
||||
</td>
|
||||
<th>상위 메뉴</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input readonly type="text" class="input-text md"
|
||||
value="관리자 시스템 > 판매상품" title="해당 인풋에 대한 설명">
|
||||
<a href="#menu-check-pop" rel="modal:open"
|
||||
class="btn sm gray">조회</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Depth</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input type="text" class="input-text" value="" title="해당 인풋에 대한 설명">
|
||||
</div>
|
||||
</td>
|
||||
<th>순서</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input type="text" class="input-text" value="" title="해당 인풋에 대한 설명">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>노출 여부</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="r-3" name="r-group02" checked>
|
||||
<label for="r-3">노출</label>
|
||||
</div>
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="r-4" name="r-group02">
|
||||
<label for="r-4">미노출</label>
|
||||
</div>
|
||||
<div class="custom-radio inner-input">
|
||||
<input type="radio" id="r-5" name="r-group02">
|
||||
<label for="r-5">
|
||||
</label>
|
||||
<div class="input-container gap-4">
|
||||
<div class="input-container">
|
||||
<input type="text" id="datepicker_1"
|
||||
class="datepicker" title="시작 날짜 선택"
|
||||
autocomplete="off">
|
||||
<span class="tilde">~</span>
|
||||
<input type="text" id="datepicker_2"
|
||||
class="datepicker" title="시작 날짜 선택"
|
||||
autocomplete="off">
|
||||
</div>
|
||||
에만 노출
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>접근 권한</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="r-1" name="r-group01" checked>
|
||||
<label for="r-1">제한</label>
|
||||
</div>
|
||||
<span class="parentheses">(</span>
|
||||
<div class="b-checkbox-container inner">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">비회원</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">등급1</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">등급2</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">등급3</span>
|
||||
</label>
|
||||
</div>
|
||||
<span class="parentheses">)</span>
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="r-2" name="r-group01">
|
||||
<label for="r-2">제한없음</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>연결 방법</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<div class="custom-radio inner-input">
|
||||
<input type="radio" id="r-6" name="r-group03">
|
||||
<label for="r-6">
|
||||
</label>
|
||||
<div class="input-container gap-4">
|
||||
<div class="select-box">
|
||||
<select title="해당 셀렉트에 대한 설명">
|
||||
<option value="">카테고리</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="custom-radio inner-input">
|
||||
<input type="radio" id="r-7" name="r-group03">
|
||||
<label for="r-7">
|
||||
</label>
|
||||
<div class="input-container gap-4">
|
||||
<input type="text" class="input-text" value=""
|
||||
title="해당 인풋에 대한 설명">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>메뉴 설명</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
실물 상품 정보를 관리하는 메뉴입니다.
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="form-control-container">
|
||||
<div class="left">
|
||||
<h3 class="content-section__title mb-0">상품 정렬</h3>
|
||||
</div>
|
||||
<div class="center">
|
||||
</div>
|
||||
<div class="right">
|
||||
<button class="btn sm dark">삭제</button>
|
||||
<button class="btn sm primary outline">추가</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 4%;">
|
||||
<col style="width: auto">
|
||||
<col style="width: 14%;">
|
||||
<col style="width: 32%;">
|
||||
<col style="width: 4%;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<label class="b-checkbox checkbox is-medium check-all">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
</label>
|
||||
</th>
|
||||
<th>기능명</th>
|
||||
<th>기능 구분</th>
|
||||
<th>URL</th>
|
||||
<th>대표</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<label class="b-checkbox checkbox is-medium">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
</label>
|
||||
</td>
|
||||
<td class="text-left">실물 상품 등록화면 이동</td>
|
||||
<td>화면이동</td>
|
||||
<td>/mng/goods/realgoods/goodsRegistView.do</td>
|
||||
<td>
|
||||
<div class="custom-radio no-text">
|
||||
<input type="radio" id="r-8" name="r-group04">
|
||||
<label for="r-8"></label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label class="b-checkbox checkbox is-medium">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
</label>
|
||||
</td>
|
||||
<td class="text-left">실물 상품 등록화면 이동</td>
|
||||
<td>화면이동</td>
|
||||
<td>/mng/goods/realgoods/goodsRegistView.do</td>
|
||||
<td>
|
||||
<div class="custom-radio no-text">
|
||||
<input type="radio" id="r-9" name="r-group04">
|
||||
<label for="r-9"></label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<!-- 메뉴 조회 모달 -->
|
||||
<div id="menu-check-pop" class="modal" style="max-width: 520px;">
|
||||
<div class="modal-header">
|
||||
<h4>메뉴 조회</h4>
|
||||
</div>
|
||||
<div class="modal-content" style="min-height: 400px;">
|
||||
<div class="jstree-wrapper">
|
||||
<div id="jstree-div2">
|
||||
<ul>
|
||||
<li data-jstree='{ "opened" : true }'>셀러메뉴
|
||||
<ul>
|
||||
<li data-jstree='{ "selected" : true }'>상품관리(S00001)
|
||||
<ul>
|
||||
<li>1</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>주문관리(S00002)
|
||||
<ul>
|
||||
<li>1</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>회원/혜택관리(S00012)
|
||||
<ul>
|
||||
<li>1</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>발주관리(S00039)
|
||||
<ul>
|
||||
<li>1</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>결제링크(S00123)
|
||||
<ul>
|
||||
<li>1</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>매출/정산(S00059)
|
||||
<ul>
|
||||
<li>1</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>SMS관리(S00067)
|
||||
<ul>
|
||||
<li>1</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>SMS셀러관리(S00076)
|
||||
<ul>
|
||||
<li>1</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>통계/현황(S00108)
|
||||
<ul>
|
||||
<li>1</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>알림링크(S00083)
|
||||
<ul>
|
||||
<li>1</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>환경설정(S00086)
|
||||
<ul>
|
||||
<li>1</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#" rel="modal:close" class="btn outline">닫기</a>
|
||||
<button class="btn primary">확인</button>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
$(function () {
|
||||
$('#jstree-div').jstree({
|
||||
"core": {
|
||||
"themes": {
|
||||
"stripes": true,
|
||||
dots: false,
|
||||
},
|
||||
}
|
||||
},);
|
||||
|
||||
$('#jstree-div2').jstree({
|
||||
"core": {
|
||||
"themes": {
|
||||
"stripes": true,
|
||||
dots: false,
|
||||
},
|
||||
}
|
||||
},);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
117
src/main/webapp/WEB-INF/views/admin/use/mbr/MaMbrInfoPopupR.jsp
Normal file
117
src/main/webapp/WEB-INF/views/admin/use/mbr/MaMbrInfoPopupR.jsp
Normal file
@@ -0,0 +1,117 @@
|
||||
<%@ 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"%>
|
||||
<%@ page import="java.util.Date" %>
|
||||
<%--
|
||||
Class Name : MbrCrmInfoPopupR.jsp
|
||||
Description :
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-02-19 추지훈
|
||||
--%>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
fn_add_crm_menu_class("leftLog");
|
||||
$("#crmMbtlnb").text(fn_format_mbtlnb($("#crmMbtlnb").text()));
|
||||
});
|
||||
</script>
|
||||
|
||||
<!-- 고객 CRM 정보 -->
|
||||
<!-- 버튼의 data-info값과 id를 통일시켜야함 -->
|
||||
<div id="info01" class="mini-info-content" style="width: 450px; ">
|
||||
<div class="mini-info-content__header">
|
||||
<h5 class="mini-info-content__title">고객 정보</h5>
|
||||
<button type = "button" class="mini-info-content__close"><span class="visually-hidden">닫기</span></button>
|
||||
</div>
|
||||
<div class="mini-info-content__content">
|
||||
<form id="crmInfoForm">
|
||||
<input type="hidden" id="mbrInnb" name="mbrInnb" value="<c:out value="${resultMap.paramVO.mbrInnb}"/>"/>
|
||||
<input type="hidden" id="mbrDvCd" name="mbrDvCd" value="<c:out value="${resultMap.paramVO.mbrDvCd}"/>"/>
|
||||
<input type="hidden" id="sopmalCd" name="sopmalCd" value=""/>
|
||||
</form>
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 26%;">
|
||||
<col style="width: 24%;">
|
||||
<col style="width: 25%;">
|
||||
<col style="width: 25%;">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>이름</th>
|
||||
<td><c:out value="${resultMap.result.mbrNm}"/></td>
|
||||
<th>아이디</th>
|
||||
<td>
|
||||
<c:choose>
|
||||
<c:when test="${resultMap.result.joinMthCd eq 'kakao'}"><%--kakao--%>
|
||||
<i class="icon icon_word-badge_kakao"></i>
|
||||
</c:when>
|
||||
<c:when test="${resultMap.result.joinMthCd eq 'naver'}"><%--naver--%>
|
||||
<i class="icon icon_word-badge08"></i>
|
||||
</c:when>
|
||||
<c:when test="${resultMap.result.joinMthCd eq 'pos'}"><%--pos--%>
|
||||
<i class="icon icon_word-badge_pos"></i>
|
||||
<span class="fw-500 blue-7">
|
||||
<c:out value="${resultMap.result.mbrId}"/>
|
||||
</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span><c:out value="${resultMap.result.mbrId}"/></span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>핸드폰번호</th>
|
||||
<td colspan="3" id="crmMbtlnb"><c:out value="${resultMap.result.mbtlnb}"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>이메일</th>
|
||||
<td colspan="3"><c:out value="${resultMap.result.email}"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>마일리지</th>
|
||||
<td>
|
||||
<c:choose>
|
||||
<c:when test="${ not empty resultMap.result.blceSum}">
|
||||
<fmt:formatNumber value="${resultMap.result.blceSum}" pattern="#,###"/>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
0
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</td>
|
||||
<th>사용중인 SNS 또는 POS</th>
|
||||
<td>
|
||||
<c:choose>
|
||||
<c:when test="${not empty resultMap.sms}">
|
||||
<c:forEach var="sms" items="${resultMap.sms}">
|
||||
<c:if test="${sms.extrlIntrlckDvCd eq '01'}">
|
||||
<i class="icon icon_word-badge_kakao"></i>
|
||||
</c:if>
|
||||
<c:if test="${sms.extrlIntrlckDvCd eq '02'}">
|
||||
<i class="icon icon_word-badge_naver"></i>
|
||||
</c:if>
|
||||
<c:if test="${sms.extrlIntrlckDvCd eq '03'}">
|
||||
<i class="icon icon_word-badge_pos"></i>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
없음
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
255
src/main/webapp/WEB-INF/views/admin/use/mbr/MaMbrListInqireR.jsp
Normal file
255
src/main/webapp/WEB-INF/views/admin/use/mbr/MaMbrListInqireR.jsp
Normal file
@@ -0,0 +1,255 @@
|
||||
<%@ 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"%>
|
||||
<%@ page import="java.util.Date" %>
|
||||
<%--
|
||||
Class Name : MbrListInqireR.jsp
|
||||
Description : 회원 조회 목록
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-01-15 김혜인 최초 생성
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<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="${ resultListMap.paginationInfo.totalRecordCount }"/></strong>건</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="center">
|
||||
</div>
|
||||
<div class="right">
|
||||
<div class="select-box">
|
||||
<select title="정렬순" name = "sortDv" id = "sortDv" onchange = "fn_select_list(1);return false;">
|
||||
<option value="recent" <c:if test="${maMbrSrchVO.sortDv eq 'recent'}">selected="selected"</c:if>>최근 가입순</option>
|
||||
<option value="mlgDesc" <c:if test="${maMbrSrchVO.sortDv eq 'mlgDesc'}">selected="selected"</c:if>>마일리지 많은순</option>
|
||||
<option value="mlgAsc" <c:if test="${maMbrSrchVO.sortDv eq 'mlgAsc'}">selected="selected"</c:if>>마일리지 적은순</option>
|
||||
</select>
|
||||
</div>
|
||||
<!-- 코드 사용 -->
|
||||
<div class="select-box">
|
||||
<select title="페이지당 출력될 목록건수" name = "pageUnit" id ="pageUnit" onchange = "fn_select_list(1);return false;">
|
||||
<c:forEach items="${ resultListMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
|
||||
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultListMap.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">
|
||||
<c:forEach var="appnDv" items="${resultListMap.appen}">
|
||||
<c:if test="${appnDv.cd eq '02'}">
|
||||
<button type="button" class="btn sm dark rslrAppn"
|
||||
value="<c:out value = "${appnDv.cd}"/>"
|
||||
appn-nm ="<c:out value = "${appnDv.cdNm}"/>">
|
||||
<c:out value="${appnDv.cdNm}"/>지정
|
||||
</button>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
<c:forEach var="appnDv" items="${resultListMap.appen}">
|
||||
<c:if test="${appnDv.cd eq '01' || appnDv.cd eq '03'}">
|
||||
<button type="button" class="btn outline sm rslrAppn"
|
||||
value="<c:out value = "${appnDv.cd}"/>"
|
||||
appn-nm ="<c:out value = "${appnDv.cdNm}"/>">
|
||||
<c:out value="${appnDv.cdNm}"/>지정
|
||||
</button>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</div>
|
||||
<div class="center">
|
||||
</div>
|
||||
<div class="right">
|
||||
</div>
|
||||
</div>
|
||||
<hr class="spacing">
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical" id = "mbrList">
|
||||
<caption>회원 목록</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 4%;">
|
||||
<col style="width: 6%;">
|
||||
<col style="width: 4%;">
|
||||
<col style="width: 10%;">
|
||||
<col style="width: 8%;">
|
||||
<col style="width: auto">
|
||||
<col style="width: auto;">
|
||||
<col style="width: 6%;">
|
||||
<col style="width: 6%;">
|
||||
<col style="width: 6%;">
|
||||
<col style="width: 10%;">
|
||||
<col style="width: 10%">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<label class="b-checkbox checkbox is-medium check-all" id="chkALabel">
|
||||
<input type="checkbox" value="" id="chkA">
|
||||
<span class="check"></span>
|
||||
</label>
|
||||
</th>
|
||||
<th>번호</th>
|
||||
<th>유입</th>
|
||||
<th>아이디</th>
|
||||
<th>이름</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 resultListMap.resultMap.resultList}">
|
||||
<c:forEach var="resultList" items="${resultListMap.resultMap.resultList}" varStatus="status">
|
||||
<tr>
|
||||
<td>
|
||||
<label class="b-checkbox checkbox is-medium">
|
||||
<input type="checkbox"
|
||||
class = "chk"
|
||||
value="<c:out value='${resultList.mbrInnb}' />"
|
||||
name="mbrInnb">
|
||||
<span class="check"></span>
|
||||
<input type="hidden" value="<c:out value='${resultList.appnDvCd}' />"
|
||||
name="appnDvCd">
|
||||
<input type="hidden" value="<c:out value='${resultList.appnInnb}' />"
|
||||
name="appnInnb">
|
||||
<input type="hidden" value="<c:out value='${resultList.mbrDvCd}' />"
|
||||
name="mbrDvCd">
|
||||
</label>
|
||||
</td>
|
||||
<td><c:out value="${resultListMap.paginationInfo.totalRecordCount - resultList.rnum+1 }"/></td>
|
||||
<td>
|
||||
<a href="<c:out value="${resultList.inflowCoursDown}${resultList.inflowCoursUrl}"/>" target="_blank">
|
||||
<span class="blue-8 fw-500" title="<c:out value="${resultList.inflowCoursDown}"/>">
|
||||
<c:out value="${resultList.sumInfowCours}"/>
|
||||
</span>
|
||||
</a>
|
||||
</td>
|
||||
<td><%--블랙리스트화이트리스트지정--%>
|
||||
<span>
|
||||
<button type="button" data-info="info01" class="mbrInfo blue-7" id="mbrId${status.index}" mbr-innb = "<c:out value="${resultList.mbrInnb}"/>" mbr-dv-cd = "<c:out value="${resultList.mbrDvCd}"/>">
|
||||
<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-badge08"></i>
|
||||
</c:when>
|
||||
<c:when test="${resultList.joinMthCd eq 'pos'}"><%--pos--%>
|
||||
<i class="icon icon_word-badge_pos"></i><c:out value="${resultList.mbrId}"/>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:out value="${resultList.mbrId}"/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</button>
|
||||
</span>
|
||||
<label for = "mbrId${status.index}">
|
||||
<c:choose>
|
||||
<c:when test = "${resultList.appnDvCd eq '02'}">
|
||||
<span class="black-list">
|
||||
B<span class="visually-hidden">블랙리스트</span>
|
||||
</span>
|
||||
</c:when>
|
||||
<c:when test = "${resultList.appnDvCd eq '03'}">
|
||||
<span class="white-list">
|
||||
W<span class="visually-hidden">화이트리스트</span>
|
||||
</span>
|
||||
</c:when>
|
||||
</c:choose>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<c:out value="${resultList.mbrNm}"/>
|
||||
</td>
|
||||
<td>
|
||||
<c:out value="${resultList.maskingEmail}"/>
|
||||
</td>
|
||||
<td class="mbtlnb">
|
||||
<c:out value="${resultList.mbtlnb}"/>
|
||||
</td>
|
||||
<td>
|
||||
<c:choose>
|
||||
<c:when test = "${resultList.marktRecptnAgreAt eq 'Y'}">
|
||||
동의
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
미동의
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</td>
|
||||
<td><c:out value="${resultList.mbrGradNm}"/></td>
|
||||
<td>
|
||||
<fmt:formatNumber var="mbrMil" value="${resultList.mileage}" type="number"/>
|
||||
<c:choose>
|
||||
<c:when test="${empty mbrMil || mbrMil == '0' }">
|
||||
0
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:out value="${mbrMil}"/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</td>
|
||||
<td><c:out value="${resultList.registDt}"/></td>
|
||||
<td><c:out value="${resultList.lastLoginDt}"/></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 id = "modalDv">
|
||||
</div>
|
||||
<hr class="spacing">
|
||||
<hr class="spacing">
|
||||
<div class="form-control-container">
|
||||
<div class="left"></div>
|
||||
<div class="center">
|
||||
</div>
|
||||
<div class="right">
|
||||
<button type = "button" class="btn dark no-min" id = "withdrawal">탈퇴</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<div class="pagination__container mt-30">
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" value="${ maMbrSrchVO.pageIndex}"/>
|
||||
<ui:pagination paginationInfo="${resultListMap.paginationInfo}" type="image" jsFunction="fn_select_list"/>
|
||||
</div>
|
||||
<!-- 리셀러 해제, 등록, 탈퇴 사유 모달 -->
|
||||
<div id="resnModal" class="modal" style="max-width: 500px;">
|
||||
<div class="modal-header">
|
||||
<h4>사유 작성</h4>
|
||||
</div>
|
||||
<div class="modal-content">
|
||||
<div class="table-wrapper">
|
||||
<textarea id = "resnTextArea"class="textarea" title="리셀러 해제, 등록, 탈퇴 사유" rows="10"></textarea>
|
||||
</div>
|
||||
<input type = "hidden" id = "resnDv">
|
||||
<input type = "hidden" id = "appenDvCdNm">
|
||||
<input type = "hidden" id = "appnDvCd">
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#" rel="modal:close" class="btn outline"><spring:message code="button.cancel"/></a>
|
||||
<button class="btn primary outline" id = "registBtn" ><spring:message code="button.insert"/></button>
|
||||
</div>
|
||||
</div>
|
||||
</html>
|
||||
@@ -0,0 +1,538 @@
|
||||
<%@ 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"%>
|
||||
<%@ page import="java.util.Date" %>
|
||||
<%--
|
||||
Class Name : MbrListInqireRForm.jsp
|
||||
Description :회원 목록 검색 폼
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-01-15 김혜인 최초 생성
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function () {
|
||||
fn_init();
|
||||
});
|
||||
|
||||
/*******************************************
|
||||
검색 조건 이벤트 설정
|
||||
********************************************/
|
||||
function fn_init() {
|
||||
/****************************************************
|
||||
검색 폼 이벤트
|
||||
****************************************************/
|
||||
/*
|
||||
* 검색조건 > 초기화 버튼 클릭 이벤트
|
||||
*/
|
||||
$('#btnResetForm').on('click', function () {
|
||||
fn_reset_form('mbrSrchSection');
|
||||
});
|
||||
|
||||
/*검색 버튼(검색어 지정 안할 시 검색 안됨)*/
|
||||
$("#srchBtn").on('click', function () {
|
||||
fn_select_list(1);
|
||||
});
|
||||
/*검색어 휴대폰 번호 숫자만허용*/
|
||||
$("#srchKywordMb").on('input', function () {
|
||||
fn_apply_regExp_mbtlnb("#listForm", "#srchKywordMb", $(this).val());
|
||||
});
|
||||
|
||||
/****************************************************
|
||||
검색 폼 이벤트
|
||||
****************************************************/
|
||||
|
||||
/*
|
||||
* 리셀러 지정 (회원 체크)
|
||||
*/
|
||||
$(document).on("click", ".rslrAppn", function () {
|
||||
let noAppenArray = [];
|
||||
const appnDvCd = $(this).val();
|
||||
const appnDvCdNm = $(this).attr("appn-nm");
|
||||
console.log(appnDvCdNm);
|
||||
// 해제할 회원수를 체크한다
|
||||
if ($('input[name=mbrInnb]:checked').length > 0) {
|
||||
$('input[name=mbrInnb]:checked').each(function () {
|
||||
//해제할 회원 중 리셀러 지정안된 회원이 포함되어 있으면 noAppenArray에 추가한다.
|
||||
if ($(this).siblings("input[name='appnDvCd']").val() == appnDvCd) {
|
||||
noAppenArray.push(this.value);
|
||||
}
|
||||
});
|
||||
//지정안된 회원 수 존재 시 안내 문구를 호출한다.
|
||||
if (noAppenArray.length > 0) {
|
||||
alert("이미 지정된 회원이 포함되어 있습니다.");
|
||||
} else {
|
||||
//지정 사유 작성 모달
|
||||
$("#resnTextArea").val('');
|
||||
$("#resnModal").modal("show");
|
||||
$("#resnTextArea").prop("name", "appnMemo");
|
||||
$("#resnDv").val("resl");
|
||||
$("#appenDvCdNm").val(appnDvCdNm);
|
||||
$("#appnDvCd").val(appnDvCd);
|
||||
}
|
||||
} else {
|
||||
//회원이 체크되지 않으면 안내 문구를 호출한다
|
||||
alert("회원을 체크해주세요.");
|
||||
}
|
||||
});
|
||||
//리셀러 지정 , 탈퇴 회원 사유 버튼
|
||||
$(document).on("click", "#registBtn", function (e) {
|
||||
//사유구분
|
||||
const resnDv = $("#resnDv").val();
|
||||
let appenDvCdNm = $("#appenDvCdNm").val();
|
||||
let appnDvCd = $("#appnDvCd").val();
|
||||
|
||||
//구분 코드, 코드명(리셀러)
|
||||
if (resnDv === 'resl') {
|
||||
appenDvCdNm = $("#appenDvCdNm").val();
|
||||
appnDvCd = $("#appnDvCd").val();
|
||||
}
|
||||
|
||||
//사유 내용
|
||||
const resnCn = $("#resnTextArea").val();
|
||||
|
||||
//체크된 회원
|
||||
let mbrArr = [];
|
||||
//체크된 회원 고유번호
|
||||
let mbrDvCdArr = [];
|
||||
//체크된 해당 회원의 지정고유번호
|
||||
let appnInnbArr = [];
|
||||
//체크된 회원 고유번호
|
||||
$('input[name=mbrInnb]:checked').each(function () {
|
||||
mbrArr.push(this.value);
|
||||
let appnInnb = $(this).closest("td").find('input[name=appnInnb]').val();
|
||||
appnInnbArr.push(appnInnb);
|
||||
let mbrDvCd = $(this).closest("td").find('input[name=mbrDvCd]').val();
|
||||
mbrDvCdArr.push(mbrDvCd);
|
||||
});
|
||||
|
||||
if (resnDv === 'resl') {//리셀러 지정
|
||||
fn_resel_upt(mbrArr, mbrDvCdArr ,appnInnbArr, appenDvCdNm, appnDvCd, resnCn);
|
||||
} else { //회원 탈퇴
|
||||
fn_withdrawal_reg(mbrArr, mbrDvCdArr , resnCn);
|
||||
}
|
||||
});
|
||||
|
||||
/*
|
||||
* 회원 탈퇴
|
||||
*/
|
||||
$(document).on("click", "#withdrawal", function (e) {
|
||||
const withdrawal = e.target.id;
|
||||
// 탈퇴할 회원수를 체크한다
|
||||
if ($('input[name=mbrInnb]:checked').length > 0) {
|
||||
//지정 사유 작성 모달
|
||||
$("#resnTextArea").val('');
|
||||
|
||||
$("#resnModal").modal();
|
||||
|
||||
$("#resnTextArea").prop("name", "memo");
|
||||
|
||||
$("#resnDv").val(withdrawal);
|
||||
} else {
|
||||
//해제할 회원이 체크되지 않으면 안내 문구를 호출한다
|
||||
alert("탈퇴할 회원을 지정해주세요.");
|
||||
}
|
||||
});
|
||||
|
||||
// 테이블 체크박스 전체 선택
|
||||
$(document).on("click", "#chkA", function () {
|
||||
if($(this).is(':checked')){
|
||||
$(".chk").prop('checked', true);
|
||||
}else{
|
||||
$(".chk").prop('checked', false);
|
||||
}
|
||||
});
|
||||
|
||||
// 목록에서 체크 해제시 전체 체크박스 해제 및 목록 항목 전체 체크 시 전체체크 버튼 true
|
||||
$(document).on("click", ".chk", function () {
|
||||
let length = $(".chk").length;
|
||||
let chcedLen = $(".chk:checked").length;
|
||||
if (length == chcedLen) {
|
||||
$("#chkA").prop('checked', true);
|
||||
}else{
|
||||
$("#chkA").prop('checked', false);
|
||||
}
|
||||
});
|
||||
|
||||
//해당 회원 정보 조회
|
||||
$(document).on("click",".mbrInfo",function(){
|
||||
const mbrInnb = $(this).attr("mbr-innb");
|
||||
const mbrDvCd = $(this).attr("mbr-dv-cd");
|
||||
const sopmalCd = $("#sopmalCd").val();
|
||||
fn_select_crm_mini_info(this,mbrInnb,mbrDvCd,'#modalDiv',sopmalCd);
|
||||
});
|
||||
}
|
||||
|
||||
/***********************************************
|
||||
* 블랙리스트 화이트리스트 일반
|
||||
***********************************************/
|
||||
const fn_resel_upt = function (mbrArr, mbrDvCdArr ,appnInnbArr, appenDvCdNm, appnDvCd, resnCn) {
|
||||
let url = "";
|
||||
let confirmMessage = "";
|
||||
//확인 구문 분기
|
||||
if (appnDvCd == '01') {
|
||||
confirmMessage = appenDvCdNm + "으로";
|
||||
} else if (appnDvCd == '02' || appnDvCd == '03') {
|
||||
confirmMessage = appenDvCdNm + "로";
|
||||
}
|
||||
|
||||
url = "<c:url value='/admin/use/mbr/updateMaMbrRslrMvmn'/>"
|
||||
if (confirm(confirmMessage + ' <spring:message code="confirm.common.insert"/>')) {
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url: url,
|
||||
data: {
|
||||
idntfcInfoArr : mbrArr
|
||||
,appnInnbArr : appnInnbArr
|
||||
,appnDvCd : appnDvCd
|
||||
,originDvCd : '02'
|
||||
,appnMemo : resnCn
|
||||
,idntfcStdrCd : 'mbr_innb'
|
||||
,mbrDvCdArr: mbrDvCdArr
|
||||
,sopmalCd : $("#sopmalCd").val()
|
||||
},
|
||||
success: function (resultHtml) {
|
||||
alert("<spring:message code="success.common.insert"/>");
|
||||
$("#resnModal > a").each(function () {
|
||||
if (this.href.indexOf('#close-modal')) {
|
||||
$(this).click();
|
||||
}
|
||||
});
|
||||
$("#resnModal").remove();
|
||||
fn_select_list($("#pageIndex").val(), $("#pageUnit").val());
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
/***********************************************
|
||||
* 회원 탈퇴 함수
|
||||
***********************************************/
|
||||
const fn_withdrawal_reg = function (mbrArr, mbrDvCdArr , resnCn) {
|
||||
if (confirm('회원 탈퇴를 <spring:message code="confirm.common.insert"/>')) {
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url: "<c:url value='/admin/use/mbr/updateMaMbrSecsnUpdt'/>",
|
||||
data: {
|
||||
mbrarr: mbrArr
|
||||
,mbrDvCdArr:mbrDvCdArr
|
||||
,secsnResn: resnCn
|
||||
,sopmalCd : $("#sopmalCd").val()
|
||||
},
|
||||
success: function (resultHtml) {
|
||||
alert("<spring:message code="success.common.insert"/>");
|
||||
$("#resnModal > a").each(function () {
|
||||
if (this.href.indexOf('#close-modal')) {
|
||||
$(this).click();
|
||||
}
|
||||
});
|
||||
$("#resnModal").remove();
|
||||
fn_select_list(1);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
/* ********************************************************
|
||||
* 목록 조회 function
|
||||
******************************************************** */
|
||||
//회원 목록 조회(ajax)
|
||||
const fn_select_list = function (pageIndex, pageUnit) {
|
||||
let valList = [];
|
||||
/*검색어 미입력 찾기*/
|
||||
$('#mbrSrchSection').find('input').each(function () {
|
||||
let value = $(this).val();
|
||||
if (value !== '') {
|
||||
valList.push(value);
|
||||
}
|
||||
});
|
||||
|
||||
/*쇼핑몰 선택 찾기*/
|
||||
let sopmalSelectVal = $("#sopmalCd").val();
|
||||
|
||||
if (valList.length === 0 || sopmalSelectVal === '') {
|
||||
if (valList.length === 0 && sopmalSelectVal === '') {
|
||||
alert("쇼핑몰과 검색어를 입력해주세요.");
|
||||
} else if (valList.length === 0 && sopmalSelectVal !== '') {
|
||||
alert("검색어를 입력해주세요.");
|
||||
} else if (valList.length !== 0 && sopmalSelectVal === '') {
|
||||
alert("쇼핑몰을 지정해주세요.");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
let dataStr;
|
||||
if (!pageIndex) {
|
||||
$('#pageIndex').val(1);
|
||||
} else {
|
||||
$('#pageIndex').val(pageIndex);
|
||||
}
|
||||
|
||||
/*회원 구분 코드 get*/
|
||||
const mbrDvCd = $("#sopmalCd option:selected").attr("mbr-dv-cd");
|
||||
|
||||
if (!pageUnit) {
|
||||
dataStr = $('#listForm').serialize()+ '&srchMbrDvCd=' + mbrDvCd;
|
||||
} else {
|
||||
if ($('#pageUnit').length) {
|
||||
$('#pageUnit').val(pageUnit);
|
||||
dataStr = $('#listForm').serialize()+ '&srchMbrDvCd=' + mbrDvCd;
|
||||
} else {
|
||||
dataStr = $('#listForm').serialize() + '&pageUnit=' + pageUnit + '&srchMbrDvCd=' + mbrDvCd;
|
||||
}
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url: "<c:url value='/admin/use/mbr/selectMaMbrListInqire'/>",
|
||||
data: dataStr,
|
||||
success: function (resultHtml) {
|
||||
$('#pageDiv').html(resultHtml);
|
||||
fn_set_niceSelect_datePicker('#pageDiv');
|
||||
let mbtlnb = '';
|
||||
$(".mbtlnb").each(function(){
|
||||
mbtlnb = fn_format_mbtlnb($(this).text().trim());
|
||||
mbtlnb = mbtlnb.replace(/(\d{3})-(\d{4})-(\d{4})/, "$1-****-$3");
|
||||
$(this).text(mbtlnb);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
//검색 엔터 클릭시 목록 조회
|
||||
document.addEventListener('keydown', function (event) {
|
||||
if (event.keyCode === 13) {
|
||||
event.preventDefault();
|
||||
//모달창 visible 여부로 몪록 조회 혹은 사유 내용 등록 이벤트 처리
|
||||
if (!$("#resnModal").is(":visible")) {
|
||||
fn_select_list(1);
|
||||
} else {
|
||||
$("#registBtn").click();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<%-- 상단메뉴 공통화 적용 : 2023-11-30 / 박철민 추가 --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%-- 좌측메뉴 공통화 적용 : 2023-11-30 / 박철민 추가 --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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">
|
||||
<section class="content-section" id="mbrSrchSection">
|
||||
<span class="red-7">*검색어는 정확히 입력해주세요</span>
|
||||
<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 title="검색어 구분" name="sopmalCd" id="sopmalCd">
|
||||
<option value="">선택</option>
|
||||
<c:forEach var="sopmal" items="${resultMap.sopmal}">
|
||||
<option value="<c:out value = '${sopmal.sopmalCd}'/>"
|
||||
mbr-dv-cd="<c:out value="${sopmal.mbrDvCd}"/>">
|
||||
<c:out value='${sopmal.sopmalNm}'/>
|
||||
</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>이름</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text xl" type="text" title="검색 키워드"
|
||||
name="srchMbrNm" placeholder="이름">
|
||||
</div>
|
||||
</td>
|
||||
<th>아이디</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text xl" type="text" title="검색 키워드"
|
||||
name="srchKywordID" placeholder="아이디">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>이메일</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text xl" type="text" title="검색 키워드"
|
||||
name="srchKywordEmail" placeholder="이메일">
|
||||
</div>
|
||||
</td>
|
||||
<th>휴대폰번호</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text xl" type="text" title="검색 키워드" id="srchKywordMb"
|
||||
name="srchKywordMb" placeholder="휴대폰번호('-'없이 입력)">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="form-control-container">
|
||||
<div class="left"></div>
|
||||
<div class="center">
|
||||
<button type="button" class="btn outline" id="btnResetForm"><spring:message
|
||||
code="button.init"/></button>
|
||||
<button type="button" class="btn primary" id="srchBtn"><spring:message
|
||||
code="button.search"/></button>
|
||||
</div>
|
||||
<div class="right">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<div id="pageDiv">
|
||||
<%--임시 section--%>
|
||||
<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 title="정렬순">
|
||||
<option>최근 가입순</option>
|
||||
<option>마일리지 많은순</option>
|
||||
<option>마일리지 적은순</option>
|
||||
</select>
|
||||
</div>
|
||||
<!-- 코드 사용 -->
|
||||
<div class="select-box">
|
||||
<select title="페이지당 출력될 목록건수" name="pageUnit" id="pageUnit"
|
||||
onchange="fn_select_list(1);return false;">
|
||||
<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">
|
||||
<c:forEach var="appnDv" items="${resultMap.appen}">
|
||||
<c:if test="${appnDv.cd eq '02'}">
|
||||
<button type="button" class="btn sm dark rslrAppn"
|
||||
value="<c:out value = "${appnDv.cd}"/>"
|
||||
appn-nm="<c:out value = "${appnDv.cdNm}"/>">
|
||||
<c:out value="${appnDv.cdNm}"/>지정
|
||||
</button>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
<c:forEach var="appnDv" items="${resultMap.appen}">
|
||||
<c:if test="${appnDv.cd eq '01' || appnDv.cd eq '03'}">
|
||||
<button type="button" class="btn outline sm rslrAppn"
|
||||
value="<c:out value = "${appnDv.cd}"/>"
|
||||
appn-nm="<c:out value = "${appnDv.cdNm}"/>">
|
||||
<c:out value="${appnDv.cdNm}"/>지정
|
||||
</button>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</div>
|
||||
<div class="center">
|
||||
</div>
|
||||
<div class="right">
|
||||
</div>
|
||||
</div>
|
||||
<hr class="spacing">
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical" id="mbrList">
|
||||
<caption>회원 목록</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 4%;">
|
||||
<col style="width: 6%;">
|
||||
<col style="width: 4%;">
|
||||
<col style="width: 10%;">
|
||||
<col style="width: 8%;">
|
||||
<col style="width: auto">
|
||||
<col style="width: auto;">
|
||||
<col style="width: 6%;">
|
||||
<col style="width: 6%;">
|
||||
<col style="width: 6%;">
|
||||
<col style="width: 10%;">
|
||||
<col style="width: 10%">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<label class="b-checkbox checkbox is-medium check-all" id="chkALabel">
|
||||
<input type="checkbox" value="" id="chkA">
|
||||
<span class="check"></span>
|
||||
</label>
|
||||
</th>
|
||||
<th>번호</th>
|
||||
<th>유입</th>
|
||||
<th>아이디</th>
|
||||
<th>이름</th>
|
||||
<th>이메일</th>
|
||||
<th>핸드폰번호</th>
|
||||
<th>광고수신동의</th>
|
||||
<th>등급</th>
|
||||
<th>마일리지</th>
|
||||
<th>가입일</th>
|
||||
<th>최종방문 일시</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan="100%"><spring:message code="common.nodata"/></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div id="modalDv">
|
||||
</div>
|
||||
<hr class="spacing">
|
||||
<hr class="spacing">
|
||||
<div class="form-control-container">
|
||||
<div class="left"></div>
|
||||
<div class="center">
|
||||
</div>
|
||||
<div class="right">
|
||||
<button type="button" class="btn dark no-min" id="withdrawal">탈퇴</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</form>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<div id = "modalDiv"></div>
|
||||
</body>
|
||||
</html>
|
||||
356
src/main/webapp/WEB-INF/views/admin/use/mngr/MaMngrInfoDtlU.jsp
Normal file
356
src/main/webapp/WEB-INF/views/admin/use/mngr/MaMngrInfoDtlU.jsp
Normal file
@@ -0,0 +1,356 @@
|
||||
<%@ 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 : GradBnefSrch.jsp
|
||||
Description : 등급별 혜택 검색 폼 jsp
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
since : 2024.01.10 김혜인 최초 생성
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<%@include file="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
</head>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
//검색폼 데이트피커 제어
|
||||
fn_set_dateRange_function("#dateRange", "juscrbStrtDt", "juscrbEndDt", "juscrbStrtDt");
|
||||
|
||||
//번호 포매팅
|
||||
$("#mbtlnb").val(fn_format_mbtlnb($("#mbtlnb").val()));
|
||||
$("#telnb").val(fn_format_mbtlnb($("#telnb").val()));
|
||||
|
||||
//이메일 셀렉트박스 값 set
|
||||
$('[name=emailAderss]').change(function () {
|
||||
let selectedEmail = $("#emailAderss option:selected").val();
|
||||
if(selectedEmail !== '99'){
|
||||
selectedEmail = $("#emailAderss option:selected").text().trim();
|
||||
}else{//직접입력
|
||||
selectedEmail = '';
|
||||
}
|
||||
$('#email2').val(selectedEmail);
|
||||
});
|
||||
|
||||
$('input').keydown(function (event) {
|
||||
if (event.keyCode === 13) {
|
||||
event.preventDefault();
|
||||
}
|
||||
});
|
||||
|
||||
$('#pwChngAt').on("click",function (){
|
||||
if($(this).is(":checked")){
|
||||
$("#pwDiv").show();
|
||||
fn_ctrl_disable('',["#pwDiv"]);
|
||||
}else{
|
||||
$("#pwDiv").hide();
|
||||
fn_ctrl_disable(["#pwDiv"]);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
/* ********************************************************
|
||||
* 업무사용자 수정
|
||||
******************************************************** */
|
||||
const fn_update = function () {
|
||||
|
||||
if (!confirm('업무사용자를 <spring:message code="confirm.common.update"/>')) return;
|
||||
|
||||
fn_make_eamil();
|
||||
|
||||
let data = $('#jobuserUpdateForm').serialize();
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: '<c:url value="/mngr/setup/mngr/updateMngrInfoUpdt"/>',
|
||||
data: data,
|
||||
success: function (result) {
|
||||
alert('<spring:message code="success.common.update"/>');
|
||||
/*비밀번호 변경 시*/
|
||||
let chngePwAt = JSON.parse(result.resBody.result);
|
||||
|
||||
chngePwAt = chngePwAt.chngePwAt;
|
||||
|
||||
if (chngePwAt === 'Y') {
|
||||
location.href = "/logout";
|
||||
} else {
|
||||
location.href = "/admin/use/mngr/selectMngrInfoInqireForm";
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
/* ********************************************************
|
||||
* 접속이력 검색
|
||||
******************************************************** */
|
||||
const fn_select_history = function (_pageIndex) {
|
||||
|
||||
$('#title').text('접속이력 조회');
|
||||
$('#subTitle').text('접속일자');
|
||||
|
||||
let mngrInnb = $('#mngrInnb').val();
|
||||
let srchStartDate = $('#juscrbStrtDt').val();
|
||||
let srchEndDate = $('#juscrbEndDt').val();
|
||||
let params = {
|
||||
'mngrInnb': mngrInnb,
|
||||
'srchStartDate': srchStartDate,
|
||||
'srchEndDate': srchEndDate,
|
||||
'pageIndex': _pageIndex,
|
||||
'pageUnit': '5'
|
||||
};
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: '<c:url value="/admin/use/mngr/selectJobUserConnHistListInqirePopup"/>',
|
||||
data: params,
|
||||
success: function (result) {
|
||||
$('#jobUserList').html('');
|
||||
$('#jobUserList').html(result);
|
||||
}
|
||||
});
|
||||
}
|
||||
/* ********************************************************
|
||||
* email 합치기
|
||||
******************************************************** */
|
||||
const fn_make_eamil = function () {
|
||||
|
||||
let domain = $('[name=email2]').val();
|
||||
let id = $('[name=email1]').val();
|
||||
$('[name=email]').val(id + '@' + domain);
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 검색조건 > 날짜 전체 클릭 시 날짜 설정 초기화
|
||||
******************************************************** */
|
||||
const fn_reset_date = function (strtDate, endDate) {
|
||||
$('#' + strtDate).datepicker().datepicker("setDate", '');
|
||||
$('#' + endDate).datepicker().datepicker("setDate", '');
|
||||
}
|
||||
|
||||
</script>
|
||||
<body>
|
||||
<%@include file="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%-- 좌측메뉴 공통화 적용 : 2023-11-30 / 박철민 추가 --%>
|
||||
<%@include file="/WEB-INF/views/comm/admin/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 type="button" class="btn primary" onclick="fn_update();"><spring:message
|
||||
code="button.save"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<section class="content-section">
|
||||
<form id="jobuserUpdateForm" class="common-form">
|
||||
<input type="hidden" name="email" value=""/>
|
||||
<input type="hidden" name="mngrInnb" id="mngrInnb" value="${resultMap.detail[0].mngrInnb}"/>
|
||||
<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>사용자 명<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text md" type="text" id="mngrNm" name="mngrNm" title="사용자명"
|
||||
value="${ resultMap.detail[0].mngrNm }" maxlength="20">
|
||||
</div>
|
||||
</td>
|
||||
<th>아이디</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<c:out value="${ resultMap.detail[0].mngrId }"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>부서명</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<c:out value="${ resultMap.detail[0].partnm }"/>
|
||||
</div>
|
||||
</td>
|
||||
<th>이메일<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text sm" type="text" id="email1" name="email1" title="이메일1"
|
||||
value="${ resultMap.detail[0].email1 }" maxlength="20">
|
||||
<span>@</span>
|
||||
<input class="input-text sm" type="text" id="email2" name="email2" title="이메일2"
|
||||
value="${ resultMap.detail[0].email2 }" maxlength="20">
|
||||
<div class="select-box" id="emailAderssDv">
|
||||
<div class="select-box">
|
||||
<select id="emailAderss" name="emailAderss">
|
||||
<c:forEach var="email" items="${resultMap.emailCdList}">
|
||||
<option value="<c:out value="${email.cd}"/>" ${f:setSelected(email.cd, '99')}>
|
||||
<c:out value="${email.cdNm}"/>
|
||||
</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>전화번호</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text md" type="text" id="telnb" name="telnb" title="전화번호"
|
||||
oninput="fn_set_event(this, 'keyup', fn_fmt_telno)"
|
||||
placeholder="'-'없이 입력"
|
||||
value="<c:out value="${resultMap.detail[0].telnb}"/>" maxlength="12">
|
||||
</div>
|
||||
</td>
|
||||
<th>휴대전화번호<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text md" type="text" id="mbtlnb" name="mbtlnb"
|
||||
title="휴대전화번호" oninput="fn_set_event(this, 'keyup', fn_fmt_telno)"
|
||||
placeholder="'-'없이 입력"
|
||||
value="<c:out value="${resultMap.detail[0].mbtlnb}"/>" maxlength="13">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>비밀번호
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="Y" name="pwChngAt" id="pwChngAt">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">변경</span>
|
||||
</label>
|
||||
</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner" id="pwDiv" style="display: none">
|
||||
<div class="address-group">
|
||||
<div class="address-line">
|
||||
<span class="address-line__title">현재 비밀번호  </span>
|
||||
<input type="password" id="recentPw" class="input-text md" value=""
|
||||
title="현재 비밀번호" name="password" disabled>
|
||||
</div>
|
||||
<div class="address-line">
|
||||
<span class="address-line__title">비밀번호 변경  </span>
|
||||
<input type="password" id="chngPw" class="input-text md" value=""
|
||||
title="비밀번호 변경" name="chngPw" disabled>
|
||||
<span class="gray-6"> * 10-20자, 영문 대소문자 또는 숫자, 특수문자 중 2가지 이상 조합</span>
|
||||
</div>
|
||||
<div class="address-line">
|
||||
<span class="address-line__title">비밀번호 변경 확인</span>
|
||||
<input type="password" id="cnfirmChngPw" class="input-text md" value=""
|
||||
title="비밀번호 변경 확인" name="cnfirmChngPw" disabled>
|
||||
<span class="gray-6"> * 사용 가능 특수문자 : ! # $ % & ( ) * + - / : < = > ? @ [ \ ] ^ _ { | } ~</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>관리자 구분</th>
|
||||
<td>
|
||||
<div class="custom-radio-container" id="userDv">
|
||||
<c:forEach var="mngrDv" items="${resultMap.mngrDvCdList}">
|
||||
<c:if test = "${mngrDv.cd eq resultMap.detail[0].mngrDv}"><c:out value="${mngrDv.cdNm}"/></c:if>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>최종접속일시</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<c:out value="${resultMap.detail[0].lastConectDt }"/>
|
||||
<a href="#jobUser-modal" rel="modal:open" class="btn xsm gray ml-5"
|
||||
onclick="fn_select_history('1'); fn_reset_form('srchFormTb');">
|
||||
<spring:message code="button.connectionHistory"/>
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<!-- 접속이력조회 모달 -->
|
||||
<div id="jobUser-modal" class="modal" style="max-width: 900px; ">
|
||||
<div class="modal-header">
|
||||
<h4 id="title"></h4>
|
||||
</div>
|
||||
<div class="modal-content">
|
||||
<form>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>검색창</caption>
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody id="his">
|
||||
<tr>
|
||||
<th id="subTitle"></th>
|
||||
<td colspan="3" id="srchFormTb">
|
||||
<div class="td-inner">
|
||||
<div class="input-container">
|
||||
<%-- 검색 종료일 현재 날짜 --%>
|
||||
<c:set var="today" value="<%=new java.util.Date()%>"/>
|
||||
<!-- 검색 조건 시작일 -->
|
||||
<input type="text" name="srchStartDate" id="juscrbStrtDt" class="datepicker"
|
||||
title="시작 날짜 선택" autocomplete="off" onchange="fn_check_date('juscrb')"/>
|
||||
<span class="tilde">~</span>
|
||||
<!-- 검색 조건 종료일 -->
|
||||
<input type="text" name="srchEndDate" id="juscrbEndDt" class="datepicker"
|
||||
title="종료 날짜 선택" autocomplete="off" onchange="fn_check_date('juscrb')"/>
|
||||
</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>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="form-control-container">
|
||||
<div class="left"></div>
|
||||
<div class="center">
|
||||
<button type="button" class="btn outline" onclick="fn_reset_form('srchFormTb');"><spring:message
|
||||
code="button.init"/></button>
|
||||
<button type="button" class="btn primary" id="btn_search" onclick="fn_select_history('1');"><spring:message
|
||||
code="button.search"/></button>
|
||||
</div>
|
||||
<div class="right"></div>
|
||||
</div>
|
||||
<div id="jobUserList"></div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#" rel="modal:close" class="btn outline" onclick="">닫기</a>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
425
src/main/webapp/WEB-INF/views/admin/use/mngr/maJobUserC.jsp
Normal file
425
src/main/webapp/WEB-INF/views/admin/use/mngr/maJobUserC.jsp
Normal file
@@ -0,0 +1,425 @@
|
||||
<%@ 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 : maJobUserC.jsp
|
||||
Description : 업무 사용자 등록
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
since : 2023.12.19 김세엽 최초 생성
|
||||
2024-01-16 최범식 수정
|
||||
--%>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
</head>
|
||||
|
||||
<script>
|
||||
|
||||
$( document ).ready(function() {
|
||||
$('#noData').hide();
|
||||
|
||||
fn_add_codeList('#userDv', 'radio', 'mngrDv', '01', JSON.parse('${resultMap.managerCodeList}') );
|
||||
fn_add_codeList('#emailAderssDv', 'select', 'emailAderss', '99', JSON.parse('${resultMap.emailCode}') );
|
||||
|
||||
$('[name=emailAderss]').change(function() {
|
||||
$('#email2').val('');
|
||||
$('#email2').val($('#emailAderssDv').find('.current').text());
|
||||
});
|
||||
|
||||
$('input').keydown(function(event) {
|
||||
if (event.keyCode === 13) {
|
||||
event.preventDefault();
|
||||
};
|
||||
});
|
||||
//휴대폰 포매팅
|
||||
$("#mbtlnb").val(fn_format_mbtlnb($("#mbtlnb").val()));
|
||||
});
|
||||
isDupChk = false;
|
||||
|
||||
/* ********************************************************
|
||||
* IP 입력창 숨기기 및 Y/N 값 변경
|
||||
******************************************************** */
|
||||
const fn_permit_ip = function(_tageg, arg) {
|
||||
// 체크일때
|
||||
if($(_tageg).is(':checked')){
|
||||
$(_tageg).val('Y');
|
||||
if (arg === 'ip') {
|
||||
$('#lmttIpsInputRow').show();
|
||||
}
|
||||
} else {
|
||||
$(_tageg).val('N');
|
||||
if (arg === 'ip') {
|
||||
$('#lmttIpsInputRow').hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
/* ********************************************************
|
||||
* IP 합치기
|
||||
******************************************************** */
|
||||
const fn_make_ipsStr = function() {
|
||||
let ipStr = '';
|
||||
if($("input[name='lmttIpCheck']").is(":checked")){
|
||||
$('[name=lmttIps]').each(function(){
|
||||
if($(this).val() !== '') {
|
||||
ipStr += '|' + $(this).val();
|
||||
}
|
||||
});
|
||||
ipStr = ipStr.substring(1);
|
||||
}
|
||||
$('[name=lmttIp]').val(ipStr);
|
||||
}
|
||||
/* ********************************************************
|
||||
* 전화번호 하이픈 제거
|
||||
******************************************************** */
|
||||
const fn_make_mbtlnb = function() {
|
||||
|
||||
var mbtlnb = $('#mbtlnb').val();
|
||||
$('[name=mbtlnb]').val(mbtlnb.trim().replace(/-/g, ''));
|
||||
}
|
||||
/* ********************************************************
|
||||
* email 합치기
|
||||
******************************************************** */
|
||||
const fn_make_email = function() {
|
||||
|
||||
let domain = $('[name=email2]').val();
|
||||
let id = $('[name=email1]').val();
|
||||
$('[name=email]').val(id + '@' + domain);
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 업무사용자 리스트 이동
|
||||
******************************************************** */
|
||||
const fn_select_jobuser_list = function() {
|
||||
$('#backupForm').attr('action', '<c:url value="/admin/use/mngr/selectJobUserListInqireForm"/>');
|
||||
$('#backupForm').attr('method', 'post');
|
||||
$('#backupForm').submit();
|
||||
};
|
||||
/* ********************************************************
|
||||
* 비밀번호 체크
|
||||
******************************************************** */
|
||||
const fn_check_password = function(){
|
||||
|
||||
const password = $('#password').val();
|
||||
const passwordA = $('#passwordA').val();
|
||||
|
||||
if(password != passwordA){
|
||||
alert('비밀번호가 일치하지 않습니다.');
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* ip 추가 버튼 기능
|
||||
******************************************************** */
|
||||
const fn_add_lmttIps_input = function() {
|
||||
|
||||
const newInputContent = `<tr>
|
||||
<td class="left">
|
||||
<div class="input-container w-full">
|
||||
<input type="text" class="input-text xl ml-10" name="lmttIps" title="접속허용IP" >
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" class="circle-btn delete" onclick="fn_remove_Input(this);">
|
||||
<span class="visually-hidden"><spring:message code="button.delete"/></span>
|
||||
</button>
|
||||
</td>
|
||||
</tr>`;
|
||||
$('#lmttIpsInputRow').append(newInputContent);
|
||||
$('#noData').hide();
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* ip 삭제 버튼 기능
|
||||
******************************************************** */
|
||||
const fn_remove_Input = function(_target) {
|
||||
|
||||
$(_target).closest('tr').remove();
|
||||
let cnt = $('#lmttIpsInputRow').children().length;
|
||||
if (cnt === 1) $('#noData').show();
|
||||
}
|
||||
|
||||
</script>
|
||||
<body>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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="#fn_select_jobuser_list" onclick="fn_select_jobuser_list();" class="btn outline"><spring:message code="button.catalog"/></a>
|
||||
<button class="btn primary" onclick="fn_regist(); return false;" ><spring:message code="button.save"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<section class="content-section">
|
||||
<h3 class="content-section__title">업무사용자 등록</h3>
|
||||
<form id="regForm" class="common-form" >
|
||||
<input type="hidden" name="srchType" value="${resultMap.vo.srchType }" />
|
||||
<input type="hidden" name="srchStr" value="${resultMap.vo.srchStr }" />
|
||||
<input type="hidden" name="srchMngrDv" value="${resultMap.vo.srchMngrDv }" />
|
||||
<input type="hidden" name="srchStartDate" value="${resultMap.vo.srchStartDate }" />
|
||||
<input type="hidden" name="srchEndDate" value="${resultMap.vo.srchEndDate }" />
|
||||
<input type="hidden" name="srchDatePick" value="${resultMap.vo.srchDatePick }" />
|
||||
<input type="hidden" name="pageUint" value="${resultMap.vo.pageUnit }" />
|
||||
<input type="hidden" name="pageIndex" value="${resultMap.vo.pageIndex }" />
|
||||
<input type="hidden" name="email" value="" />
|
||||
<input type="hidden" name="lmttIp" value="" />
|
||||
<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>사용자 명<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text md" type="text" id="mngrNm" name="mngrNm" title="사용자명" maxlength="20">
|
||||
</div>
|
||||
</td>
|
||||
<th>아이디<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" id="mngrId" name="mngrId" title="사용자아이디" maxlength="20">
|
||||
<button type="button" class="btn sm gray" onclick="fn_id_doubleCheck();"><spring:message code="button.doubleCheck"/></button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>비밀번호<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner vertical">
|
||||
<input class="input-text" type="password" id="password" name="password" title="비밀번호" maxlength="25">
|
||||
<p class="fyi gray-7">10-20자, 영문 대소문자 또는 숫자, 특수문자 중 2가지 이상 조합</p>
|
||||
</div>
|
||||
</td>
|
||||
<th>비밀번호 확인<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner vertical">
|
||||
<input class="input-text" type="password" id="passwordA" title="비밀번호" maxlength="25">
|
||||
<p class="fyi gray-7">사용가능 특수문자 : ! # $ % & ( ) * + - / : < = > ? @ [ \ ] ^ _ { | } ~</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>부서명</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text md" type="text" id="partnm" name="partnm" title="부서명" maxlength="20">
|
||||
</div>
|
||||
</td>
|
||||
<th>이메일<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text sm" type="text" name="email1" maxlength="25">
|
||||
<span>@</span>
|
||||
<input class="input-text sm" type="text" name="email2" id="email2" maxlength="20">
|
||||
<div class="select-box" id="emailAderssDv"></div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>전화번호</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text lg" type="text" id="telnb" name="telnb" title="전화번호" oninput="fn_set_event(this, 'keyup', fn_fmt_telno)" maxlength="12">
|
||||
</div>
|
||||
</td>
|
||||
<th>휴대전화번호<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text lg" type="text" id="mbtlnb" title="휴대전화번호" oninput="fn_set_event(this, 'keyup', fn_fmt_telno)" maxlength="13">
|
||||
<input type="hidden" name="mbtlnb">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>사용자 구분<span class="red-7">*</span></th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container" id="userDv"></div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>로그인 보안</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<div class="b-checkbox-container">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" name="lmttIpCheck" value="N" onchange="fn_permit_ip(this, 'ip');" />
|
||||
<span class="check"></span>
|
||||
<span class="control-label">IP보안</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" name="mblphonCrtfcAt" value="N" onchange="fn_permit_ip(this, '2fas');" >
|
||||
<span class="check"></span>
|
||||
<span class="control-label">2단계 인증</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>접속허용IP</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<div class="table-wrapper" style="width: 400px;">
|
||||
<table class="table vertical tight">
|
||||
<caption>접속허용IP</caption>
|
||||
<colgroup>
|
||||
<col>
|
||||
<col style="width:14%;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>목록</th>
|
||||
<th>
|
||||
<button type="button" id="textbox-row-add" class="circle-btn add" onclick="fn_add_lmttIps_input();">
|
||||
<span class="visually-hidden"><spring:message code="button.add"/></span>
|
||||
</button>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="lmttIpsInputRow">
|
||||
<tr>
|
||||
<td class="left">
|
||||
<div class="input-container w-full">
|
||||
<input type="text" class="input-text xl ml-10" name="lmttIps" title="접속허용IP" />
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" class="circle-btn delete" onclick="fn_remove_Input(this);">
|
||||
<span class="visually-hidden"><spring:message code="button.delete"/></span>
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="left">
|
||||
<div class="input-container w-full">
|
||||
<input type="text" class="input-text xl ml-10" name="lmttIps" title="접속허용IP" >
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" class="circle-btn delete" onclick="fn_remove_Input(this);">
|
||||
<span class="visually-hidden"><spring:message code="button.delete"/></span>
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="noData" >
|
||||
<td colspan="2">
|
||||
접속허용IP를 입력해 주세요.
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<form id="backupForm" method="post" >
|
||||
<input type="hidden" name="srchType" value="${resultMap.vo.srchType }" />
|
||||
<input type="hidden" name="srchStr" value="${resultMap.vo.srchStr }" />
|
||||
<input type="hidden" name="srchMngrDv" value="${resultMap.vo.srchMngrDv }" />
|
||||
<input type="hidden" name="srchStartDate" value="${resultMap.vo.srchStartDate }" />
|
||||
<input type="hidden" name="srchEndDate" value="${resultMap.vo.srchEndDate }" />
|
||||
<input type="hidden" name="srchDatePick" value="${resultMap.vo.srchDatePick }" />
|
||||
<input type="hidden" name="pageUnit" value="${resultMap.vo.pageUnit }" />
|
||||
<input type="hidden" name="pageIndex" value="${resultMap.vo.pageIndex }" />
|
||||
<input type="hidden" name="mngrInnb" value="" />
|
||||
<input type="hidden" name="pageDv" value="" />
|
||||
</form>
|
||||
<script>
|
||||
/* ********************************************************
|
||||
* 업무사용자 등록
|
||||
******************************************************** */
|
||||
const fn_regist = function() {
|
||||
|
||||
if(!isDupChk) {
|
||||
alert('아이디 중복 체크해 주세요.')
|
||||
return;
|
||||
}
|
||||
if(!fn_check_password()) return;
|
||||
if(!confirm('업무사용자를 <spring:message code="confirm.common.save"/>')) return;
|
||||
fn_make_email();
|
||||
fn_make_mbtlnb();
|
||||
fn_make_ipsStr();
|
||||
|
||||
let params = $('#regForm').serialize();
|
||||
|
||||
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url : '<c:url value="/admin/use/mngr/insertJobUserRegist"/>',
|
||||
data : params,
|
||||
success:function(result) {
|
||||
let mngrInnb = JSON.parse(result.resBody.result);
|
||||
$('#backupForm').find('[name=mngrInnb]').val(mngrInnb);
|
||||
$('#backupForm').find('[name=pageDv]').val('I');
|
||||
|
||||
if(mngrInnb > 0){
|
||||
alert("<spring:message code="success.common.insert"/> \n시스템 관리 > '사용자별 권한 관리'에서 \n필요한 권한을 설정해 주세요.");
|
||||
$('#backupForm').attr('action', '<c:url value="/admin/use/mngr/selectJobUserUpdtForm"/>');
|
||||
$('#backupForm').submit();
|
||||
} else {
|
||||
alert('<spring:message code="fail.common.insert"/>');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 중복 확인 기능
|
||||
******************************************************** */
|
||||
const fn_id_doubleCheck = function() {
|
||||
let mngrId = $('#mngrId').val();
|
||||
if(mngrId === '') return;
|
||||
let param = { 'mngrId': mngrId };
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url : '<c:url value="/admin/use/mngr/selectJobUserIdbDplctInqire"/>',
|
||||
data : param,
|
||||
success:function(result) {
|
||||
result = JSON.parse(result.resBody.result);
|
||||
if(result == 0){
|
||||
alert('\"' + mngrId + '\" 은 사용 가능합니다.');
|
||||
|
||||
isDupChk = true;
|
||||
} else {
|
||||
alert('\"' + mngrId + '\" 은 중복된 아이디 입니다.');
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,73 @@
|
||||
<%@ 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="ui" uri="http://www.winbit.kr/ctl/ui"%>
|
||||
<%--
|
||||
Class Name : maJobUserConnHistListInqirePopupR.jsp
|
||||
Description : 업무사용자 접속이력조회 팝업
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023.12.27 김세엽 최초 생성
|
||||
2023.12.29 박철민 datepicker 수동적용 코드 추가
|
||||
2024-01-16 최범식 수정
|
||||
--%>
|
||||
|
||||
|
||||
<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>
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical">
|
||||
<caption>리스트창</caption>
|
||||
<colgroup>
|
||||
<col style="width: 1%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 20%;">
|
||||
<col style="width: 20%;">
|
||||
<col style="width: auto;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>순번</th>
|
||||
<th>접속자</th>
|
||||
<th>접속IP</th>
|
||||
<th>접속브라우저</th>
|
||||
<th>접속일시</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:choose>
|
||||
<c:when test="${not empty resultMap.resultList}">
|
||||
<c:forEach items="${ resultMap.resultList }" var="historyList">
|
||||
<tr>
|
||||
<td><span class="fw-300"><c:out value="${ resultMap.paginationInfo.totalRecordCount - historyList.rnum + 1 }" /></span></td>
|
||||
<td><span class="fw-300">${ historyList.mngrNm }</span></td>
|
||||
<td><span class="fw-300">${ historyList.conectIp }</span></td>
|
||||
<td><span class="fw-300">${ historyList.conectBrwsr }</span></td>
|
||||
<td><span class="fw-300">${ historyList.conectDt }</span></td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<tr>
|
||||
<td colspan="5">조회된 데이터가 없습니다.</td>
|
||||
</tr>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="pagination__container" id="divPageInfo">
|
||||
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_history" />
|
||||
|
||||
@@ -0,0 +1,151 @@
|
||||
<%@ 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 : maJobUserListInqireR.jsp
|
||||
Description : 업무사용자 목록조회 리스트 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023-12-18 김세엽 최초 생성
|
||||
2024-01-16 최범식 수정
|
||||
--%>
|
||||
<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_paging_list('1')">
|
||||
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
|
||||
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultMap.paramVO.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">
|
||||
<button class="btn outline sm" onclick="fn_download_excel();">
|
||||
<i class="icon icon_excel"></i>
|
||||
<spring:message code="button.excelDownload"/>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="spacing">
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 1%;">
|
||||
<col style="width: 8%;">
|
||||
<col style="width: 8;">
|
||||
<col style="width: 8%;">
|
||||
<col style="width: 8%;">
|
||||
<col style="width: auto%;">
|
||||
<col style="width: 12%">
|
||||
<col style="width: 12%">
|
||||
<col style="width: auto%">
|
||||
<col style="width: 5%">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>번호</th>
|
||||
<th>사용자명</th>
|
||||
<th>사용자구분</th>
|
||||
<th>부서명</th>
|
||||
<th>사용자ID</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 }">
|
||||
<c:forEach items="${ resultMap.resultList }" var="jobUserList">
|
||||
<tr>
|
||||
<td><c:out value="${ resultMap.paginationInfo.totalRecordCount - jobUserList.rnum + 1 }" /></td>
|
||||
<td><c:out value="${ jobUserList.mngrNm }" /></td>
|
||||
<td><c:out value="${ jobUserList.mngrDvNm }" /></td>
|
||||
<td><c:out value="${ jobUserList.partnm }" /></td>
|
||||
<td><c:out value="${ jobUserList.mngrId }" /></td>
|
||||
<td><c:out value="${ jobUserList.email }" /></td>
|
||||
<td class="mbtlnb"><c:out value="${ jobUserList.mbtlnb }" /></td>
|
||||
<td>
|
||||
<c:choose>
|
||||
<c:when test="${ not empty jobUserList.lmttIp and jobUserList.mblphonCrtfcAt eq 'Y' }">
|
||||
<span>IP보안, 2단계 인증</span>
|
||||
</c:when>
|
||||
<c:when test="${ not empty jobUserList.lmttIp }">
|
||||
<span>IP보안</span>
|
||||
</c:when>
|
||||
<c:when test="${ jobUserList.mblphonCrtfcAt eq 'Y' }">
|
||||
<span>2단계 인증</span>
|
||||
</c:when>
|
||||
<c:when test="${ empty jobUserList.lmttIp and jobUserList.mblphonCrtfcAt eq 'N' }">
|
||||
<span>없음</span>
|
||||
</c:when>
|
||||
</c:choose>
|
||||
</td>
|
||||
<td>
|
||||
<c:out value="${ jobUserList.lastConectDt }"/>
|
||||
</td>
|
||||
<td>
|
||||
<c:if test="${ jobUserList.mngrSttusCd == '01' }">
|
||||
활성
|
||||
</c:if>
|
||||
<c:if test="${ jobUserList.mngrSttusCd == '02' }">
|
||||
비활성
|
||||
</c:if>
|
||||
</td>
|
||||
<td>
|
||||
<div class="manage-btn-container">
|
||||
<button type="button" class="btn xsm outline primary" onclick="fn_go_userDetail('${jobUserList.mngrInnb}');" >
|
||||
<spring:message code="button.update"/>
|
||||
</button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<tr>
|
||||
<td colspan="10"><spring:message code="common.nodata"/></td>
|
||||
</tr>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
</form>
|
||||
<div class="pagination__container">
|
||||
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_paging_list" />
|
||||
</div>
|
||||
<script>
|
||||
$('#pageUnit').niceSelect();
|
||||
</script>
|
||||
@@ -0,0 +1,273 @@
|
||||
<%@ 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 : maJobUserListInqireR.jsp
|
||||
Description : 업무사용자 목록조회 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023-12-18 김세엽 최초 생성
|
||||
2024-01-16 최범식 수정
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
|
||||
</head>
|
||||
<script>
|
||||
|
||||
$( document ).ready(function(){
|
||||
|
||||
fn_add_codeList('#mngrDv', 'select', 'srchMngrDv', '${resultMap.paramVO.srchMngrDv}', JSON.parse('${resultMap.cgn036 }'), '전체');
|
||||
let pageIndex = '<c:out value="${ resultMap.paramVO.pageIndex }"/>';
|
||||
let pageUnit = '<c:out value="${ resultMap.paramVO.pageUnit }"/>';
|
||||
let pageDv = '<c:out value="${ resultMap.paramVO.pageDv }"/>';
|
||||
|
||||
fn_return_srchForm();
|
||||
|
||||
if (pageDv === '') {
|
||||
fn_select_paging_list(pageIndex, pageUnit);
|
||||
} else {
|
||||
fn_select_paging_list('1', '10');
|
||||
}
|
||||
|
||||
$('#srchStr').on('keydown', function(event) {
|
||||
if (event.keyCode === 13) {
|
||||
event.preventDefault();
|
||||
fn_select_paging_list('1');
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
/* ********************************************************
|
||||
* 페이지 복귀
|
||||
******************************************************** */
|
||||
const fn_return_srchForm = function() {
|
||||
|
||||
let datePick = '<c:out value="${resultMap.paramVO.srchDatePick}"/>';
|
||||
if (datePick != '') {
|
||||
$(datePick).trigger('click');
|
||||
} else {
|
||||
$('#juscrbStrtDt').val('<c:out value="${resultMap.paramVO.juscrbStrtDt}"/>');
|
||||
$('#juscrbEndDt').val('<c:out value="${resultMap.paramVO.juscrbEndDt}"/>');
|
||||
}
|
||||
$('#srchStr').val('<c:out value="${resultMap.paramVO.srchStr}"/>');
|
||||
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 검색 초기화
|
||||
******************************************************** */
|
||||
const fn_reset_srchForm = function() {
|
||||
|
||||
$('#all').trigger('click');
|
||||
$('#srchStr').val('');
|
||||
$('#srchMngrDv').val('').niceSelect('update');
|
||||
$('#srchType').val('ALL').niceSelect('update');
|
||||
|
||||
}
|
||||
/* ********************************************************
|
||||
* 데이트 검색 값
|
||||
******************************************************** */
|
||||
const fn_set_datePick = function(_taget) {
|
||||
|
||||
let dateBtn = '#' + $(_taget).attr('id');
|
||||
$('[name=srchDatePick]').val(dateBtn);
|
||||
|
||||
}
|
||||
/**********************************************
|
||||
* 업무사용자 등록 이동
|
||||
***********************************************/
|
||||
const fn_regist_form = function(){
|
||||
|
||||
$('[name=srchForm]').attr('action', '<c:url value="/admin/use/mngr/selectJobUserRegistForm"/>');
|
||||
$('[name=srchForm]').attr('method', 'post');
|
||||
$('[name=srchForm]').submit();
|
||||
}
|
||||
|
||||
/**********************************************
|
||||
* 업무사용자 수정 이동
|
||||
***********************************************/
|
||||
const fn_go_userDetail = function(_value){
|
||||
|
||||
$('[name=mngrInnb]').val(_value);
|
||||
$('[name=srchForm]').attr('action', '<c:url value="/admin/use/mngr/selectJobUserUpdtForm"/>');
|
||||
$('[name=srchForm]').attr('method', 'post');
|
||||
$('[name=srchForm]').submit();
|
||||
}
|
||||
/**********************************************
|
||||
* 기능 엑셀 다운로드
|
||||
***********************************************/
|
||||
const fn_download_excel = function() {
|
||||
|
||||
$('[name=srchForm]').attr('action', '<c:url value="/admin/use/mngr/excelFileDownload"/>');
|
||||
$('[name=srchForm]').attr('method', 'post');
|
||||
$('[name=srchForm]').submit();
|
||||
};
|
||||
/* ********************************************************
|
||||
* 검색 조회
|
||||
******************************************************** */
|
||||
const fn_select_paging_list = function(pageIndex, pageUnit) {
|
||||
|
||||
if (pageIndex == undefined || pageUnit == '') {
|
||||
$('#pageIndex').val('1');
|
||||
} else {
|
||||
$('#pageIndex').val(pageIndex);
|
||||
}
|
||||
|
||||
let params = $('[name=srchForm]').serialize();
|
||||
if (pageUnit != undefined || pageUnit == '') {
|
||||
|
||||
params += '&pageUnit=' + pageUnit;
|
||||
} else {
|
||||
params += '&pageUnit=' + $('#pageUnit').val();
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type : 'post',
|
||||
url : '<c:url value="/admin/use/mngr/selectJobUserListInqire"/>',
|
||||
data : params,
|
||||
success : function(data) {
|
||||
|
||||
$('#pageDiv').html(data);
|
||||
$('#pageUnit').niceSelect();
|
||||
|
||||
let mbtlnb = '';
|
||||
$(".mbtlnb").each(function(){
|
||||
mbtlnb = fn_format_mbtlnb($(this).text().trim());
|
||||
mbtlnb = mbtlnb.replace(/(\d{3})-(\d{4})-(\d{4})/, "$1-****-$3");
|
||||
$(this).text(mbtlnb);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 검색조건 > 날짜 전체 클릭 시 날짜 설정 초기화
|
||||
******************************************************** */
|
||||
const fn_reset_date = function(strtDate, endDate){
|
||||
|
||||
$('#'+strtDate).datepicker().datepicker("setDate",'');
|
||||
$('#'+endDate).datepicker().datepicker("setDate",'');
|
||||
}
|
||||
|
||||
|
||||
history.replaceState({}, null, location.pathname);
|
||||
</script>
|
||||
<body>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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 primary" onclick="fn_regist_form();">
|
||||
업무사용자 <spring:message code="button.insert"/>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<form name="srchForm">
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" value="1"/>
|
||||
<input type="hidden" name="srchDatePick" value="${resultMap.paramVO.srchDatePick}" />
|
||||
<input type="hidden" name="mngrInnb" value="" />
|
||||
<section class="content-section">
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>검색창</caption>
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col style="width: auto;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 25%;">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>검색어</th>
|
||||
<td>
|
||||
<div class="td-inner" >
|
||||
<div class="select-box">
|
||||
<select class="serchSelectBox" name="srchType" id="srchType" title="검색타입">
|
||||
<option value="ALL" ${f:setSelected(resultMap.paramVO.srchType, 'ALL') }>전체</option>
|
||||
<option value="MNGR_NM" ${f:setSelected(resultMap.paramVO.srchType, 'MNGR_NM') }>사용자명</option>
|
||||
<option value="PARTNM" ${f:setSelected(resultMap.paramVO.srchType, 'PARTNM') }>부서명</option>
|
||||
<option value="MNGR_ID" ${f:setSelected(resultMap.paramVO.srchType, 'MNGR_ID') }>사용자ID</option>
|
||||
<option value="EMAIL" ${f:setSelected(resultMap.paramVO.srchType, 'EMAIL') }>이메일</option>
|
||||
<option value="MBTLNB" ${f:setSelected(resultMap.paramVO.srchType, 'MBTLNB') }>휴대전화번호</option>
|
||||
</select>
|
||||
</div>
|
||||
<input class="input-text lg" type="text" title="검색어" name="srchStr" id="srchStr" />
|
||||
</div>
|
||||
</td>
|
||||
|
||||
<th>사용자구분</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box" id="mngrDv">
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>접속일</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<div class="input-container">
|
||||
<%-- 검색 종료일 현재 날짜 --%>
|
||||
<c:set var="today" value="<%=new java.util.Date()%>" />
|
||||
<!-- 검색 조건 시작일 -->
|
||||
<input type="text" name="srchStartDate" id="juscrbStrtDt" class="datepicker" title="시작 날짜 선택" autocomplete="off" onchange="fn_check_date('juscrb')"/>
|
||||
<span class="tilde">~</span>
|
||||
<!-- 검색 조건 종료일 -->
|
||||
<input type="text" name="srchEndDate" id="juscrbEndDt" class="datepicker" title="종료 날짜 선택" autocomplete="off" onchange="fn_check_date('juscrb')"/>
|
||||
</div>
|
||||
<div class="dateRange-btnContainer">
|
||||
<button class="dateRange-btn" id="yesterday" onclick = "fn_set_date('juscrbStrtDt','juscrbEndDt','juscrbEndDt','1D'); fn_set_datePick(this);">어제</button>
|
||||
<button class="dateRange-btn" id="today" onclick = "fn_set_date('juscrbStrtDt','juscrbEndDt','juscrbEndDt','0'); fn_set_datePick(this);">오늘</button>
|
||||
<button class="dateRange-btn" id="threeDays" onclick = "fn_set_date('juscrbStrtDt','juscrbEndDt','juscrbEndDt','3D'); fn_set_datePick(this);">3일간</button>
|
||||
<button class="dateRange-btn" id="sevenDays" onclick = "fn_set_date('juscrbStrtDt','juscrbEndDt','juscrbEndDt','7D'); fn_set_datePick(this);">일주일</button>
|
||||
<button class="dateRange-btn" id="oneMonth" onclick = "fn_set_date('juscrbStrtDt','juscrbEndDt','juscrbEndDt','1M'); fn_set_datePick(this);">1개월</button>
|
||||
<button class="dateRange-btn" id="threeMonths" onclick = "fn_set_date('juscrbStrtDt','juscrbEndDt','juscrbEndDt','3M'); fn_set_datePick(this);">3개월</button>
|
||||
<button class="dateRange-btn" id="halfAYear" onclick = "fn_set_date('juscrbStrtDt','juscrbEndDt','juscrbEndDt','6M'); fn_set_datePick(this);">6개월</button>
|
||||
<button class="dateRange-btn" id="oneYear" onclick = "fn_set_date('juscrbStrtDt','juscrbEndDt','juscrbEndDt','1Y'); fn_set_datePick(this);">1년</button>
|
||||
<button class="dateRange-btn selected" id="all" onclick = "fn_reset_date('juscrbStrtDt','juscrbEndDt'); fn_set_datePick(this);">전체</button>
|
||||
</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" id="resetBtn" onclick="fn_reset_srchForm();"><spring:message code="button.init"/></button>
|
||||
<button type="button" class="btn primary" id="searchBtn" onclick="fn_select_paging_list('1');"><spring:message code="button.search"/></button>
|
||||
</div>
|
||||
<div class="right"></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,74 @@
|
||||
<%@ 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 : maJobUserLogListInqirePopupR.jsp
|
||||
Description : 업무사용자 로그조회 팝업
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
since : 2023.12.27 김세엽 최초 생성
|
||||
2024-01-16 최범식 수정
|
||||
--%>
|
||||
|
||||
|
||||
<div class="form-control-container">
|
||||
<div class="left">
|
||||
<div class="search-number" id="divTotalCount">
|
||||
<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>
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical">
|
||||
<caption>리스트창</caption>
|
||||
<colgroup>
|
||||
<col style="width: 1%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 20%;">
|
||||
<col style="width: 20%;">
|
||||
<col style="width: auto;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th id="logListTr">번호</th>
|
||||
<th>행위자</th>
|
||||
<th>접속IP</th>
|
||||
<th>행위일시</th>
|
||||
<th>내용</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:choose>
|
||||
<c:when test="${not empty resultMap.resultList}">
|
||||
<c:forEach items="${ resultMap.resultList }" var="logList">
|
||||
<tr>
|
||||
<td><span class="fw-300"><c:out value="${ resultMap.paginationInfo.totalRecordCount - logList.rnum + 1 }" /></span></td>
|
||||
<td><span class="fw-300">${ logList.mngrNm }</span></td>
|
||||
<td><span class="fw-300">${ logList.conectIp }</span></td>
|
||||
<td><span class="fw-300">${ logList.registDe }</span></td>
|
||||
<td><span class="fw-300">${ logList.procsCn }</span></td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<tr>
|
||||
<td colspan="5">조회된 로그가 없습니다.</td>
|
||||
</tr>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="pagination__container" id="divPageInfo">
|
||||
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_log" />
|
||||
</div>
|
||||
730
src/main/webapp/WEB-INF/views/admin/use/mngr/maJobUserU.jsp
Normal file
730
src/main/webapp/WEB-INF/views/admin/use/mngr/maJobUserU.jsp
Normal file
@@ -0,0 +1,730 @@
|
||||
<%@ 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 : maJobUserU.jsp
|
||||
Description : 업무사용자 수정페이지
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
since : 2023.12.19 김세엽 최초 생성
|
||||
2024-01-16 최범식 수정
|
||||
--%>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
</head>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
||||
fn_add_codeList('#userDv', 'radio', 'mngrDv', '${resultMap.detail[0].mngrDv}', JSON.parse('${resultMap.managerCodeList}') );
|
||||
fn_add_codeList('#emailAderssDv', 'select', 'emailAderss', '99', JSON.parse('${resultMap.emailCode}') );
|
||||
|
||||
$('[name=emailAderss]').change(function() {
|
||||
$('#email2').val('');
|
||||
$('#email2').val($('#emailAderssDv').find('.current').text());
|
||||
});
|
||||
|
||||
$('input').keydown(function(event) {
|
||||
if (event.keyCode === 13) {
|
||||
event.preventDefault();
|
||||
};
|
||||
});
|
||||
//휴대폰 포매팅
|
||||
$("#mbtlnb").val(fn_format_mbtlnb($("#mbtlnb").val()));
|
||||
});
|
||||
/* ********************************************************
|
||||
* IP 입력창 숨기기 및 Y/N 값 변경
|
||||
******************************************************** */
|
||||
const fn_reset_button = function() {
|
||||
$('#all').trigger('click');
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* IP 입력창 숨기기 및 Y/N 값 변경
|
||||
******************************************************** */
|
||||
const fn_permit_ip2fas = function(_target, _arg) {
|
||||
|
||||
if($(_target).is(':checked')){
|
||||
$(_target).val('Y');
|
||||
if (_arg === 'ip') {
|
||||
$('#lmttIpsInputRow').show();
|
||||
$("#lmttIpsInputRow").find("input").each(function(){
|
||||
$(this).prop("disabled",false);
|
||||
});
|
||||
}
|
||||
} else {
|
||||
$(_target).val('N');
|
||||
if (_arg === 'ip') {
|
||||
$('#lmttIpsInputRow').hide();
|
||||
$("#lmttIpsInputRow").find("input").each(function () {
|
||||
$(this).prop("disabled", true);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
/* ********************************************************
|
||||
* IP 합치기
|
||||
******************************************************** */
|
||||
const fn_make_ipsStr = function() {
|
||||
let ipStr = '';
|
||||
if($("input[name='lmttIpCheck']").is(":checked")){
|
||||
$('[name=lmttIps]').each(function(){
|
||||
if($(this).val() !== '') {
|
||||
ipStr += '|' + $(this).val();
|
||||
}
|
||||
});
|
||||
ipStr = ipStr.substring(1);
|
||||
}
|
||||
$('[name=lmttIp]').val(ipStr);
|
||||
}
|
||||
/* ********************************************************
|
||||
* 전화번호 하이픈 제거
|
||||
******************************************************** */
|
||||
const fn_make_mbtlnb = function() {
|
||||
|
||||
var mbtlnb = $('#mbtlnb').val();
|
||||
$('[name=mbtlnb]').val(mbtlnb.trim().replace(/-/g, ''));
|
||||
}
|
||||
/* ********************************************************
|
||||
* email 합치기
|
||||
******************************************************** */
|
||||
const fn_make_email = function() {
|
||||
|
||||
let domain = $('[name=email2]').val();
|
||||
let id = $('[name=email1]').val();
|
||||
$('[name=email]').val(id + '@' + domain);
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* ip 추가 버튼 기능
|
||||
******************************************************** */
|
||||
const fn_add_lmttIps_input = function() {
|
||||
|
||||
const lmttIpCheck = $('input[name="lmttIpCheck"]');
|
||||
lmttIpCheck.val()!= 'Y'&&lmttIpCheck.click();
|
||||
const newInputContent = `<tr>
|
||||
<td class="left">
|
||||
<div class="input-container w-full">
|
||||
<input type="text" class="input-text xl ml-10" name="lmttIps" title="접속허용IP" >
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" class="circle-btn delete" onclick="fn_remove_Input(this);">
|
||||
<span class="visually-hidden"><spring:message code="button.delete"/></span>
|
||||
</button>
|
||||
</td>
|
||||
</tr>`;
|
||||
$('#lmttIpsInputRow').append(newInputContent);
|
||||
$('#noData').hide();
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* ip 삭제 버튼 기능
|
||||
******************************************************** */
|
||||
const fn_remove_Input = function(_target) {
|
||||
|
||||
$(_target).closest('tr').remove();
|
||||
let cnt = $('#lmttIpsInputRow').children().length;
|
||||
if (cnt === 1) {
|
||||
$('#noData').show();
|
||||
$('input[name="lmttIpCheck"]').click();
|
||||
}
|
||||
}
|
||||
/* ********************************************************
|
||||
* 업무사용자 목록 이동
|
||||
******************************************************** */
|
||||
function fn_select_jobuser_list() {
|
||||
|
||||
$('#backupForm').attr('action', '<c:url value="/admin/use/mngr/selectJobUserListInqireForm"/>');
|
||||
$('#backupForm').submit();
|
||||
};
|
||||
/* ********************************************************
|
||||
* 검색조건 > 날짜 전체 클릭 시 날짜 설정 초기화
|
||||
******************************************************** */
|
||||
const fn_reset_date = function(strtDate,endDate){
|
||||
$('#'+strtDate).datepicker().datepicker("setDate",'');
|
||||
$('#'+endDate).datepicker().datepicker("setDate",'');
|
||||
}
|
||||
|
||||
</script>
|
||||
<body>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/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 type="button" class="btn outline" onclick="fn_select_jobuser_list();"><spring:message code="button.catalog"/></button>
|
||||
<button type="button" class="btn dark" onclick="fn_reset_pswd();">비밀번호 초기화</button>
|
||||
<c:if test="${resultMap.detail[0].mngrSttusCd == '01'}">
|
||||
<button type="button" class="btn dark" onclick="fn_jobuser_disabled();">비활성화</button>
|
||||
</c:if>
|
||||
<c:if test="${resultMap.detail[0].mngrSttusCd == '02'}">
|
||||
<button type="button" class="btn dark" onclick="fn_jobuser_enabled();">활성화</button>
|
||||
</c:if>
|
||||
<button type="button" class="btn dark" onclick="fn_jobuser_leave();">퇴사처리</button>
|
||||
<button type="button" class="btn primary" onclick="fn_update();" ><spring:message code="button.save"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<section class="content-section">
|
||||
<h3 class="content-section__title">업무사용자 정보</h3>
|
||||
<form id="jobuserUpdateForm" class="common-form" >
|
||||
<input type="hidden" name="srchType" value="${resultMap.srchData.srchType }" />
|
||||
<input type="hidden" name="srchStr" value="${resultMap.srchData.srchStr }" />
|
||||
<input type="hidden" name="srchMngrDv" value="${resultMap.srchData.srchMngrDv }" />
|
||||
<input type="hidden" name="srchStartDate" value="${resultMap.srchData.srchStartDate }" />
|
||||
<input type="hidden" name="srchEndDate" value="${resultMap.srchData.srchEndDate }" />
|
||||
<input type="hidden" name="srchDatePick" value="${resultMap.srchData.srchDatePick }" />
|
||||
<input type="hidden" name="pageUnit" value="${resultMap.srchData.pageUnit }" />
|
||||
<input type="hidden" name="pageIndex" value="${resultMap.srchData.pageIndex }" />
|
||||
<input type="hidden" name="email" value="" />
|
||||
<input type="hidden" name="lmttIp" value="" />
|
||||
<input type="hidden" name="mngrInnb" id="mngrInnb" value="${resultMap.detail[0].mngrInnb}" />
|
||||
<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>사용자 명<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text md" type="text" id="mngrNm" name="mngrNm" title="사용자명" value="${ resultMap.detail[0].mngrNm }" maxlength="20">
|
||||
</div>
|
||||
</td>
|
||||
<th>아이디<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<c:out value="${ resultMap.detail[0].mngrId }" />
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>부서명</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text md" type="text" id="partnm" name="partnm" title="부서명" value="${ resultMap.detail[0].partnm }" maxlength="20">
|
||||
</div>
|
||||
</td>
|
||||
<th>이메일<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text sm" type="text" id="email1" name="email1" title="이메일1" value="${ resultMap.detail[0].email1 }" maxlength="20">
|
||||
<span>@</span>
|
||||
<input class="input-text sm" type="text" id="email2" name="email2" title="이메일2" value="${ resultMap.detail[0].email2 }" maxlength="20">
|
||||
<div class="select-box" id="emailAderssDv"></div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>전화번호</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text md" type="text" id="telnb" name="telnb" title="전화번호" oninput="fn_set_event(this, 'keyup', fn_fmt_telno)" value="${ resultMap.detail[0].telnb }" maxlength="12" >
|
||||
</div>
|
||||
</td>
|
||||
<th>휴대전화번호<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text md" type="text" id="mbtlnb" title="휴대전화번호" oninput="fn_set_event(this, 'keyup', fn_fmt_telno)" value="${ resultMap.detail[0].mbtlnb }" maxlength="13">
|
||||
<input type="hidden" name="mbtlnb">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>사용자 구분<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="custom-radio-container" id="userDv"></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>로그인 보안</th>
|
||||
<td>
|
||||
<div class="b-checkbox-container">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" name="lmttIpCheck" value="${resultMap.detail[0].lmttIpCheck }" ${f:setChecked(resultMap.detail[0].lmttIpCheck,'Y')} onclick="fn_permit_ip2fas(this, 'ip');" />
|
||||
<span class="check"></span>
|
||||
<span class="control-label">IP보안</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" name="mblphonCrtfcAt" value="${resultMap.detail[0].mblphonCrtfcAt }" ${f:setChecked(resultMap.detail[0].mblphonCrtfcAt,'Y')} onclick="fn_permit_ip2fas(this, '2fas');" />
|
||||
<span class="check"></span>
|
||||
<span class="control-label">2단계 인증</span>
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<th>접속허용IP</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<div class="table-wrapper" style="width: 400px;">
|
||||
<table class="table vertical tight">
|
||||
<caption>접속허용IP</caption>
|
||||
<colgroup>
|
||||
<col>
|
||||
<col style="width:14%;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>목록</th>
|
||||
<th>
|
||||
<button type="button" id="textbox-row-add" class="circle-btn add" onclick="fn_add_lmttIps_input();">
|
||||
<span class="visually-hidden"><spring:message code="button.add"/></span>
|
||||
</button>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="lmttIpsInputRow">
|
||||
<c:choose>
|
||||
<c:when test="${not empty resultMap.detail[0].lmttIps }">
|
||||
<c:forEach var="lmttIp" items="${resultMap.detail[0].lmttIps }" varStatus="loop">
|
||||
<tr>
|
||||
<td class="left">
|
||||
<div class="input-container w-full">
|
||||
<input type="text" class="input-text xl ml-10" name="lmttIps" title="접속허용IP" value="${lmttIp }"/>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" class="circle-btn delete" onclick="fn_remove_Input(this);">
|
||||
<span class="visually-hidden"><spring:message code="button.delete"/></span>
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
<tr id="noData" style="display: none;">
|
||||
<td colspan="2">
|
||||
접속허용IP를 입력해 주세요.
|
||||
</td>
|
||||
</tr>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<tr id="noData" >
|
||||
<td colspan="2">
|
||||
접속허용IP를 입력해 주세요.
|
||||
</td>
|
||||
</tr>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>최종접속일시</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<c:out value="${resultMap.detail[0].lastConectDt }"/>
|
||||
<a href="#jobUser-modal" rel="modal:open" class="btn xsm gray ml-5" onclick="fn_select_history('1');" >
|
||||
<spring:message code="button.connectionHistory"/>
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
<%-- <th>연관쇼핑몰</th>--%>
|
||||
<%-- <td>--%>
|
||||
<%-- <div class="td-inner">--%>
|
||||
<%-- <c:if test="${not empty resultMap.detail[0].sopmalNmList }">--%>
|
||||
<%-- <c:forEach var="sopmalNm" items="${ resultMap.detail[0].sopmalNmList }" varStatus="loop">--%>
|
||||
<%-- ${ sopmalNm }<c:if test="${ not loop.last }">,</c:if>--%>
|
||||
<%-- </c:forEach>--%>
|
||||
<%-- </c:if>--%>
|
||||
<%-- <c:if test="${empty resultMap.detail[0].sopmalNmList}">--%>
|
||||
<%-- 연관쇼핑몰이 없습니다.--%>
|
||||
<%-- </c:if>--%>
|
||||
<%-- </div>--%>
|
||||
<%-- </td>--%>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
<section class="content-section">
|
||||
<div class="form-control-container mb-8">
|
||||
<div class="left">
|
||||
<h3 class="content-section__title">사용자 로그</h3>
|
||||
</div>
|
||||
<div class="center">
|
||||
</div>
|
||||
<div class="right">
|
||||
<a href="#jobUser-modal" rel="modal:open" class="btn outline" onclick="fn_select_log('1');" >
|
||||
<spring:message code="button.viewAll"/>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody class="table vertical">
|
||||
<tr>
|
||||
<th>로그</th>
|
||||
<td>
|
||||
<div class="change-log">
|
||||
<c:if test="${not empty resultMap.detail[0].logList}">
|
||||
<c:forEach var="logList" items="${resultMap.detail[0].logList}" varStatus="loop" begin="0" end="9">
|
||||
<p class="change-log__list" align="left">
|
||||
<span class="change-log__date"><c:out value="${logList.registDe} "/></span>
|
||||
<span class="change-log__description">관리자(<c:out value="${resultMap.detail[0].mngrNm} "/>)가 </span><c:out value="${logList.procsCdNm} "/><c:out value="${logList.procsCn}" />
|
||||
</p>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
<c:if test="${ empty resultMap.detail[0].logList}">
|
||||
<p class="change-log__list">로그가 없습니다.</p>
|
||||
</c:if>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>중요행위발생로그</th>
|
||||
<td>
|
||||
<div class="change-log">
|
||||
<c:if test="${not empty resultMap.detail[0].logList}">
|
||||
<c:forEach var="logList" items="${resultMap.detail[0].logList}" varStatus="loop" begin="0" end="9">
|
||||
<c:if test="${not empty logList.procsCd}">
|
||||
<p class="change-log__list" align="left">
|
||||
<span class="change-log__date"><c:out value="${logList.registDe} "/></span>
|
||||
<span class="change-log__description">관리자(<c:out value="${resultMap.detail[0].mngrNm} "/>)가 </span><c:out value="${logList.procsCdNm} "/><c:out value="${logList.procsCn}" />
|
||||
</p>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
<c:if test="${ empty resultMap.detail[0].logList}">
|
||||
<p class="change-log__list">최근 행위중 중요행위가 없습니다.</p>
|
||||
</c:if>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<form id="backupForm" method="post" >
|
||||
<input type="hidden" name="srchType" value="${resultMap.srchData.srchType }" />
|
||||
<input type="hidden" name="srchStr" value="${resultMap.srchData.srchStr }" />
|
||||
<input type="hidden" name="srchMngrDv" value="${resultMap.srchData.srchMngrDv }" />
|
||||
<input type="hidden" name="srchStartDate" value="${resultMap.srchData.srchStartDate }" />
|
||||
<input type="hidden" name="srchEndDate" value="${resultMap.srchData.srchEndDate }" />
|
||||
<input type="hidden" name="srchDatePick" value="${resultMap.srchData.srchDatePick }" />
|
||||
<input type="hidden" name="pageUnit" value="${resultMap.srchData.pageUnit }" />
|
||||
<input type="hidden" name="pageIndex" value="${resultMap.srchData.pageIndex }" />
|
||||
<input type="hidden" name="mngrInnb" value="${resultMap.detail[0].mngrInnb }" />
|
||||
<input type="hidden" name="pageDv" value="${resultMap.srchData.pageDv }" />
|
||||
</form>
|
||||
<!-- 접속이력조회 모달 -->
|
||||
<div id="jobUser-modal" class="modal" style="max-width: 900px; ">
|
||||
<div class="modal-header">
|
||||
<h4 id="title"></h4>
|
||||
</div>
|
||||
<div class="modal-content">
|
||||
<form>
|
||||
<input type="hidden" name="srchDatePopPick" id="srchDatePopPick" value="all"/>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>검색창</caption>
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody id="his">
|
||||
<tr>
|
||||
<th id="subTitle"></th>
|
||||
<td colspan="3" >
|
||||
<div class="td-inner" >
|
||||
<div class="input-container">
|
||||
<%-- 검색 종료일 현재 날짜 --%>
|
||||
<c:set var="today" value="<%=new java.util.Date()%>" />
|
||||
<!-- 검색 조건 시작일 -->
|
||||
<input type="text" name="srchStartDate" id="juscrbStrtDt" class="datepicker"
|
||||
title="시작 날짜 선택" autocomplete="off" onchange="fn_check_date('juscrb')"/>
|
||||
<span class="tilde">~</span>
|
||||
<!-- 검색 조건 종료일 -->
|
||||
<input type="text" name="srchEndDate" id="juscrbEndDt" class="datepicker"
|
||||
title="종료 날짜 선택" autocomplete="off" onchange="fn_check_date('juscrb')"/>
|
||||
</div>
|
||||
<div class="dateRange-btnContainer">
|
||||
<button class="dateRange-btn" id="yesterday"
|
||||
onclick = "fn_set_date('juscrbStrtDt','juscrbEndDt','juscrbEndDt','1D'); fn_set_datePopPick(this);">어제</button>
|
||||
<button class="dateRange-btn" id="today"
|
||||
onclick = "fn_set_date('juscrbStrtDt','juscrbEndDt','juscrbEndDt','0'); fn_set_datePopPick(this);">오늘</button>
|
||||
<button class="dateRange-btn" id="threeDays"
|
||||
onclick = "fn_set_date('juscrbStrtDt','juscrbEndDt','juscrbEndDt','3D'); fn_set_datePopPick(this);">3일간</button>
|
||||
<button class="dateRange-btn" id="sevenDays"
|
||||
onclick = "fn_set_date('juscrbStrtDt','juscrbEndDt','juscrbEndDt','7D'); fn_set_datePopPick(this);">일주일</button>
|
||||
<button class="dateRange-btn" id="oneMonth"
|
||||
onclick = "fn_set_date('juscrbStrtDt','juscrbEndDt','juscrbEndDt','1M'); fn_set_datePopPick(this);">1개월</button>
|
||||
<button class="dateRange-btn" id="threeMonths"
|
||||
onclick = "fn_set_date('juscrbStrtDt','juscrbEndDt','juscrbEndDt','3M'); fn_set_datePopPick(this);">3개월</button>
|
||||
<button class="dateRange-btn" id="halfAYear"
|
||||
onclick = "fn_set_date('juscrbStrtDt','juscrbEndDt','juscrbEndDt','6M'); fn_set_datePopPick(this);">6개월</button>
|
||||
<button class="dateRange-btn" id="oneYear"
|
||||
onclick = "fn_set_date('juscrbStrtDt','juscrbEndDt','juscrbEndDt','1Y'); fn_set_datePopPick(this);">1년</button>
|
||||
<button class="dateRange-btn selected" id="all"
|
||||
onclick = "fn_reset_date('juscrbStrtDt','juscrbEndDt'); fn_set_datePopPick(this);">전체</button>
|
||||
</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_button();"><spring:message code="button.init"/></button>
|
||||
<button type="button" class="btn primary" id="btn_search" onclick=""><spring:message code="button.search"/></button>
|
||||
</div>
|
||||
<div class="right"></div>
|
||||
</div>
|
||||
<div id="jobUserList" ></div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#" rel="modal:close" class="btn outline" onclick="">닫기</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
/* ********************************************************
|
||||
* 업무사용자 수정
|
||||
******************************************************** */
|
||||
const fn_update = function(){
|
||||
|
||||
if(!confirm('업무사용자를 <spring:message code="confirm.common.update"/>')) return;
|
||||
|
||||
fn_make_email();
|
||||
fn_make_mbtlnb();
|
||||
fn_make_ipsStr();
|
||||
|
||||
let data = $('#jobuserUpdateForm').serialize();
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url : '<c:url value="/admin/use/mngr/updateJobUserUpdt"/>',
|
||||
data : data,
|
||||
success:function(result) {
|
||||
result = JSON.parse(result.resBody.result);
|
||||
if (result > 0){
|
||||
alert('<spring:message code="success.common.update"/>');
|
||||
$('[name=pageDv]').val('U');
|
||||
$('#backupForm').attr('action', '<c:url value="/admin/use/mngr/selectJobUserUpdtForm"/>');
|
||||
$('#backupForm').submit();
|
||||
} else {
|
||||
alert('<spring:message code="fail.common.update"/>');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 비밀번호 초기화
|
||||
******************************************************** */
|
||||
const fn_reset_pswd = function(){
|
||||
|
||||
if(!confirm('비밀번호를 초기화 시키겠습니까?\n비밀번호는 [아이디]로 변경됩니다.')) return;
|
||||
let mngrId = '<c:out value="${ resultMap.detail[0].mngrId }" />';
|
||||
let data = { mngrInnb: $('#mngrInnb').val(), mngrId : mngrId };
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url : '<c:url value="/admin/use/mngr/updateJobUserPswdInitl" />',
|
||||
data : data,
|
||||
success:function(result) {
|
||||
result = JSON.parse(result.resBody.result);
|
||||
if(result > 0){
|
||||
alert('<spring:message code="success.common.update"/>');
|
||||
}else{
|
||||
alert('<spring:message code="fail.common.update"/>');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
/* ********************************************************
|
||||
* 활성화
|
||||
******************************************************** */
|
||||
const fn_jobuser_enabled = function(){
|
||||
|
||||
if(!confirm('활성화 시키겠습니까?')) return;
|
||||
let data = {
|
||||
mngrInnb: $('#mngrInnb').val(),
|
||||
mngrSttusCd : '01'
|
||||
};
|
||||
// ajax 호출
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url : '<c:url value="/admin/use/mngr/updateJobUserInactvty"/>',
|
||||
data : data,
|
||||
success:function(result) {
|
||||
result = JSON.parse(result.resBody.result);
|
||||
if(result > 0){
|
||||
alert('<spring:message code="success.common.update"/>');
|
||||
$('[name=pageDv]').val('U');
|
||||
$('#backupForm').attr('action', '<c:url value="/admin/use/mngr/selectJobUserUpdtForm"/>');
|
||||
$('#backupForm').submit();
|
||||
}else{
|
||||
alert('<spring:message code="fail.common.update"/>');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 비활성화
|
||||
******************************************************** */
|
||||
const fn_jobuser_disabled = function(){
|
||||
|
||||
if(!confirm('비활성화 시키겠습니까?')) return;
|
||||
let data = {
|
||||
mngrInnb: $('#mngrInnb').val(),
|
||||
mngrSttusCd : '02'
|
||||
};
|
||||
// ajax 호출
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url : '<c:url value="/admin/use/mngr/updateJobUserInactvty"/>',
|
||||
data : data,
|
||||
success:function(result) {
|
||||
result = JSON.parse(result.resBody.result);
|
||||
if(result > 0){
|
||||
alert('<spring:message code="success.common.update"/>');
|
||||
$('[name=pageDv]').val('U');
|
||||
$('#backupForm').attr('action', '<c:url value="/admin/use/mngr/selectJobUserUpdtForm"/>');
|
||||
$('#backupForm').submit();
|
||||
}else{
|
||||
alert('<spring:message code="fail.common.update"/>');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
/* ********************************************************
|
||||
* 퇴사처리
|
||||
******************************************************** */
|
||||
const fn_jobuser_leave = function() {
|
||||
|
||||
if(!confirm('퇴사처리 시키겠습니까?')) return;
|
||||
let data = {
|
||||
mngrInnb: $('#mngrInnb').val(),
|
||||
mngrNm: $('#mngrNm').val(),
|
||||
mngrSttusCd: '03'
|
||||
};
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url : '<c:url value="/admin/use/mngr/updateJobUserInactvty"/>',
|
||||
data : data,
|
||||
success:function(result) {
|
||||
result = JSON.parse(result.resBody.result);
|
||||
if(result > 0){
|
||||
alert('<spring:message code="success.common.update"/>');
|
||||
fn_select_jobuser_list();
|
||||
}else{
|
||||
alert('<spring:message code="fail.common.update"/>');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 데이트 검색 값
|
||||
******************************************************** */
|
||||
const fn_set_datePopPick = function(_taget) {
|
||||
|
||||
let dateBtn = '#' + $(_taget).attr('id');
|
||||
$('#srchDatePopPick').val(dateBtn);
|
||||
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 접속이력 검색
|
||||
******************************************************** */
|
||||
const fn_select_history = function(_pageIndex) {
|
||||
|
||||
$('#title').text('접속이력 조회');
|
||||
$('#subTitle').text('접속일자');
|
||||
$('#btn_search').attr('onclick', 'fn_select_history(\'1\');');
|
||||
|
||||
let mngrInnb = $('#mngrInnb').val();
|
||||
let srchStartDate = $('#juscrbStrtDt').val();
|
||||
let srchEndDate = $('#juscrbEndDt').val();
|
||||
let params = {
|
||||
'mngrInnb' : mngrInnb,
|
||||
'srchStartDate' : srchStartDate,
|
||||
'srchEndDate' : srchEndDate,
|
||||
'pageIndex' : _pageIndex,
|
||||
'pageUnit' : '5'
|
||||
};
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url : '<c:url value="/admin/use/mngr/selectJobUserConnHistListInqirePopup"/>',
|
||||
data : params,
|
||||
success:function(result) {
|
||||
$('#jobUserList').html('');
|
||||
$('#jobUserList').html(result);
|
||||
|
||||
let datePick = $('#srchDatePopPick').val();
|
||||
$('#' + datePick).trigger('click');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 사용자 로그 검색
|
||||
******************************************************** */
|
||||
const fn_select_log = function(_pageIndex) {
|
||||
|
||||
$('#title').text('로그 조회');
|
||||
$('#subTitle').text('행위일자');
|
||||
$('#btn_search').attr('onclick', 'fn_select_log(\'1\');');
|
||||
|
||||
let mngrInnb = $('#mngrInnb').val();
|
||||
let srchStartDate = $('#juscrbStrtDt').val();
|
||||
let srchEndDate = $('#juscrbEndDt').val();
|
||||
let params = {
|
||||
'mngrInnb' : mngrInnb,
|
||||
'srchStartDate' : srchStartDate,
|
||||
'srchEndDate' : srchEndDate,
|
||||
'pageIndex' : _pageIndex,
|
||||
'pageUnit' : '5'
|
||||
};
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url : '<c:url value="/admin/use/mngr/selectJobUserLogListInqirePopup"/>',
|
||||
data : params,
|
||||
success:function(result) {
|
||||
$('#jobUserList').html('');
|
||||
$('#jobUserList').html(result);
|
||||
|
||||
let datePick = $('#srchDatePopPick').val();
|
||||
$('#' + datePick).trigger('click');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
113
src/main/webapp/WEB-INF/views/benefit.jsp
Normal file
113
src/main/webapp/WEB-INF/views/benefit.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"%>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<title>통합 관리자</title>
|
||||
<style type="text/css">
|
||||
button:hover {
|
||||
-webkit-transform: scale(1.3);
|
||||
transform: scale(1.3);
|
||||
}
|
||||
</style>
|
||||
<script src="/mngr/vendor/jquery-3.7.1.min.js"></script>
|
||||
<script>
|
||||
$( document ).ready(function(){
|
||||
setInterval(function() {
|
||||
location.reload();
|
||||
}, 600000);
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>관리자>혜택 Today : <%= new Date()%></h1>
|
||||
|
||||
<button style="padding: 10px 30px; background-color: #ffc9c9;" type="button" onclick="location.href='/index'">관리자</button>
|
||||
<button style="padding: 10px 30px; background-color: #ffa9c9;" type="button" onclick="location.href='/mngrordr'">주문</button>
|
||||
<button style="padding: 10px 30px; background-color: #d0bfff;" type="button" onclick="location.href='/goodsmngr'">상품</button>
|
||||
<button style="padding: 10px 30px; background-color: #dbe4ff;" type="button" onclick="location.href='/integ'">통합관리자</button>
|
||||
<button style="padding: 10px 30px; background-color: #e9fac8;" type="button" onclick="location.href='/crm'">고객관리(CRM)</button>
|
||||
<button style="padding: 10px 30px; background-color: #f5d63d;" type="button" onclick="location.href='/sopmalpc'">사용자(PC)</button>
|
||||
|
||||
<br>
|
||||
|
||||
<br><br>
|
||||
푸시알림 >
|
||||
<button type="button" onclick="window.open('/mngr/bnft/selectBnftPushEvtRegistForm');">이벤트별 알림</button>
|
||||
<button type="button" onclick="window.open('/mngr/bnft/selectBnftPushListInqireForm');">알림보내기 목록</button>
|
||||
<button type="button" onclick="window.open('/mngr/bnft/selectBnftPushSetupRegistForm');">설정</button>
|
||||
<br><br>
|
||||
혜택 화면관리 >
|
||||
<button type="button" onclick="window.open('/mngr/bnft/selectBnftMngBannerRegistForm');">배너관리</button>
|
||||
<button type="button" onclick="window.open('/mngr/bnft/selectBnftMngMenuRegistForm');">메뉴관리</button>
|
||||
<br><br>
|
||||
출석체크 >
|
||||
<button type="button" onclick="window.open('/mngr/bnft/selectBnftListInqireForm?bnfDvCd=010');">출석 목록</button>
|
||||
<button type="button" onclick="window.open('/mngr/bnft/sttus/selectBnftAtendPdSttusForm');">기간별내역</button>
|
||||
<button type="button" onclick="window.open('/mngr/bnft/sttus/selectBnftAtendMbrSttusForm');">회원별내역</button>
|
||||
<br><br>
|
||||
만보기 >
|
||||
<button type="button" onclick="window.open('/mngr/bnft/selectBnftListInqireForm?bnfDvCd=020');">만보기 목록</button>
|
||||
<button type="button" onclick="window.open('/mngr/bnft/sttus/selectBnftStepcntPdSttusForm');">기간별내역</button>
|
||||
<button type="button" onclick="window.open('/mngr/bnft/sttus/selectBnftStepcntMbrSttusForm');">회원별내역</button>
|
||||
<br><br>
|
||||
행운복권 >
|
||||
<button type="button" onclick="window.open('/mngr/bnft/selectBnftListInqireForm?bnfDvCd=030');">행운복권 목록</button>
|
||||
<button type="button" onclick="window.open('/mngr/bnft/sttus/selectBnftLucklottSttusForm');">당첨자내역</button>
|
||||
<br><br>
|
||||
룰렛게임 >
|
||||
<button type="button" onclick="window.open('/mngr/bnft/selectBnftListInqireForm?bnfDvCd=040');">룰렛게임 목록</button>
|
||||
<button type="button" onclick="window.open('/mngr/bnft/sttus/selectBnftRougameSttusForm');">당첨자내역</button>
|
||||
<br><br>
|
||||
캡슐만들기 >
|
||||
<button type="button" onclick="window.open('/mngr/bnft/selectBnftCpslLeafRegistForm');">초록잎 설정</button>
|
||||
<button type="button" onclick="window.open('/mngr/bnft/selectBnftListInqireForm?bnfDvCd=050');">캡슐만들기 목록</button>
|
||||
<button type="button" onclick="window.open('/mngr/bnft/selectBnftGdccRegistForm?bnfDvCd=050');">안내문관리</button>
|
||||
<button type="button" onclick="window.open('/mngr/bnft/sttus/selectBnftCpslmknSttusForm');">참여현황/상세</button>
|
||||
<br><br>
|
||||
이벤트보기 >
|
||||
<button type="button" onclick="window.open('/mngr/bnft/selectBnftListInqireForm?bnfDvCd=060');">이벤트보기 목록</button>
|
||||
<button type="button" onclick="window.open('/mngr/bnft/selectBnftGdccRegistForm?bnfDvCd=060');">참여방법안내</button>
|
||||
<button type="button" onclick="window.open('/mngr/bnft/sttus/selectBnftEvntviewSttusForm');">참여현황</button>
|
||||
<br><br>
|
||||
라이브쇼핑 >
|
||||
<button type="button" onclick="window.open('/mngr/bnft/selectBnftListInqireForm?bnfDvCd=070');">라이브쇼핑 목록</button>
|
||||
<button type="button" onclick="window.open('/mngr/bnft/selectBnftGdccRegistForm?bnfDvCd=070');">참여방법안내</button>
|
||||
<button type="button" onclick="window.open('/mngr/bnft/sttus/selectBnftLvshopSttusForm');">참여현황</button>
|
||||
<br><br>
|
||||
할인소식공유 >
|
||||
<button type="button" onclick="window.open('/mngr/bnft/selectBnftListInqireForm?bnfDvCd=080');">할인소식공유 목록</button>
|
||||
<button type="button" onclick="window.open('/mngr/bnft/selectBnftGdccRegistForm?bnfDvCd=080');">참여방법안내</button>
|
||||
<button type="button" onclick="window.open('/mngr/bnft/sttus/selectBnftDiscsharSttusForm');">참여현황</button>
|
||||
<br><br>
|
||||
베스트리뷰 >
|
||||
<button type="button" onclick="window.open('/mngr/bnft/selectBnftListInqireForm?bnfDvCd=090');">베스트리뷰 목록</button>
|
||||
<button type="button" onclick="window.open('/mngr/bnft/selectBnftGdccRegistForm?bnfDvCd=090');">참여방법안내</button>
|
||||
<button type="button" onclick="window.open('/mngr/bnft/sttus/selectBnftConrevSttusForm');">참여현황</button>
|
||||
<br><br>
|
||||
섭취챌린지 >
|
||||
<button type="button" onclick="window.open('/mngr/bnft/selectBnftListInqireForm?bnfDvCd=100');">섭취챌린지 목록</button>
|
||||
<button type="button" onclick="window.open('/mngr/bnft/sttus/selectBnftIntakchlSttusForm');">참여현황/상세</button>
|
||||
<br><br>
|
||||
관심분야 >
|
||||
<button type="button" onclick="window.open('/mngr/bnft/selectBnftRegistForm?bnfDvCd=120');">관심분야 설정</button>
|
||||
<button type="button" onclick="window.open('/mngr/bnft/sttus/selectBnftHlthsetSttusForm');">설정현황</button>
|
||||
<button type="button" onclick="window.open('/mngr/bnft/sttus/selectBnftHlthsetMonSttusForm');">월별내역</button>
|
||||
<br><br>
|
||||
OX퀴즈 >
|
||||
<button type="button" onclick="window.open('/mngr/bnft/selectBnftListInqireForm?bnfDvCd=130');">OX퀴즈 목록</button>
|
||||
<button type="button" onclick="window.open('/mngr/bnft/sttus/selectBnftOxquizSttusForm');">참여현황/상세</button>
|
||||
<br><br>
|
||||
모바일스탬프 >
|
||||
<button type="button" onclick="window.open('/mngr/bnft/selectBnftRegistForm?bnfDvCd=140');">모바일스탬프 설정</button>
|
||||
<button type="button" onclick="window.open('/mngr/bnft/sttus/selectBnftPurstmpPdSttusForm');">기간별내역/상세</button>
|
||||
<button type="button" onclick="window.open('/mngr/bnft/sttus/selectBnftPurstmpStrSttusForm');">매장별현황</button>
|
||||
<br><br>
|
||||
QR코드이벤트 >
|
||||
<button type="button" onclick="window.open('/mngr/bnft/selectBnftListInqireForm?bnfDvCd=150');">QR코드이벤트 목록</button>
|
||||
<button type="button" onclick="window.open('/mngr/bnft/sttus/selectBnftQrevntSttusForm');">참여현황/상세</button>
|
||||
</body>
|
||||
</html>
|
||||
343
src/main/webapp/WEB-INF/views/comm/Footer.jsp
Normal file
343
src/main/webapp/WEB-INF/views/comm/Footer.jsp
Normal file
@@ -0,0 +1,343 @@
|
||||
<%@ 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" %>
|
||||
<footer class="footer">
|
||||
<div class="footer-top">
|
||||
<div class="footer-top__inner">
|
||||
<ul class="footer-top__link">
|
||||
<c:if test="${!empty sopmallInfo}">
|
||||
<c:forEach var="topMenuList" items="${sopmallInfo.menuList}" varStatus="status">
|
||||
<c:if test="${topMenuList.ctgryDvCd eq '03'}">
|
||||
<li><a href='<c:out value="${topMenuList.url}"/>' onclick="setTopMenuCode()"
|
||||
<c:if test = "${fn:contains(topMenuList.url,'/sopmal/main/selectClause?stplatDvCd=02')}">class="footer-body__text01" </c:if>><c:out value="${topMenuList.ctgryNm}"/></a></li>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
</ul>
|
||||
<c:if test = "${not empty footerInfo.footerInfo.familySite}">
|
||||
<select class="family-site-link" title="해당 셀렉트에 대한 설명">
|
||||
<option value="" disabled selected>FAMILY SITE</option>
|
||||
<c:forEach var = "familySite" items = "${footerInfo.footerInfo.familySite}">
|
||||
<option value="<c:out value="${familySite.familySiteUrl}"/>"><c:out value="${familySite.familySiteNm}"/></option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</c:if>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="footer-body">
|
||||
<div class="footer-body__inner">
|
||||
|
||||
<c:set var="operBsnmInfo" value="${footerInfo.footerInfo.operBsnmInfo}"/>
|
||||
<c:set var="sleBsnmInfo" value="${footerInfo.footerInfo.sleBsnmInfo}"/>
|
||||
<c:set var="sopmalInfo" value="${footerInfo.footerInfo.sopmalInfo}"/>
|
||||
<c:set var="designSetup" value="${footerInfo.footerInfo.designSetup}"/>
|
||||
<c:set var="scriptSetup" value="${footerInfo.footerInfo.scriptSetup}"/>
|
||||
|
||||
<c:choose>
|
||||
<c:when test="${ designSetup.lptManageSetupDvCd eq '01' }">
|
||||
|
||||
<c:set var="footerCn" value="${ designSetup.footerCn }"/>
|
||||
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{reprsntTelnb}', sopmalInfo.reprsntTelnb) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{reprsntEmail}', sopmalInfo.reprsntEmail) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{cscWkdayWorkTme}', sopmalInfo.cscWkdayWorkTme) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{cscLunchTme}', sopmalInfo.cscLunchTme) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{cscRstde}', sopmalInfo.cscRstde) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{cscTelnb}', sopmalInfo.cscTelnb) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{rejectTelnb}', sopmalInfo.rejectTelnb) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{ascEntrpsNm}', sopmalInfo.ascEntrpsNm) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{ascWkdayWorkTme}', sopmalInfo.ascWkdayWorkTme) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{ascLunchTme}', sopmalInfo.ascLunchTme) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{ascZip}', sopmalInfo.ascZip) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{ascAdres}', sopmalInfo.ascAdres) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{ascDtlAdres}', sopmalInfo.ascDtlAdres) }"/>
|
||||
|
||||
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{operBsnmNm}', operBsnmInfo.bsnmNm) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{operBizrnb}', operBsnmInfo.bizrnb) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{operReprsntvnm}', operBsnmInfo.reprsntvnm) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{operLnbAdres}', operBsnmInfo.lnbAdres) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{operRnmAdres}', operBsnmInfo.rnmAdres) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{operDtlAdres}', operBsnmInfo.dtlAdres) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{operIndvdlinfoPrtcRspnberNm}', operBsnmInfo.indvdlinfoPrtcRspnberNm) }"/>
|
||||
|
||||
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{sleBsnmNm}', sleBsnmInfo.bsnmNm) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{sleBizrnb}', sleBsnmInfo.bizrnb) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{sleReprsntvnm}', sleBsnmInfo.reprsntvnm) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{sleLnbAdres}', sleBsnmInfo.lnbAdres) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{sleRnmAdres}', sleBsnmInfo.rnmAdres) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{sleDtlAdres}', sleBsnmInfo.dtlAdres) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{sleIndvdlinfoPrtcRspnberNm}', sleBsnmInfo.indvdlinfoPrtcRspnberNm) }"/>
|
||||
|
||||
${footerCn}
|
||||
|
||||
</c:when>
|
||||
<c:when test="${ designSetup.lptManageSetupDvCd eq '02' }">
|
||||
<c:choose>
|
||||
<c:when test="${operBsnmInfo.bsnmInnb ne sleBsnmInfo.bsnmInnb}">
|
||||
<span class="footer-body__text01">
|
||||
판매사업자 : <c:out value="${sleBsnmInfo.bsnmNm}"/>
|
||||
</span>
|
||||
<p class="footer-body__text02">
|
||||
대표자 : <c:out value="${sleBsnmInfo.reprsntvnm}"/>
|
||||
주소:
|
||||
<c:choose>
|
||||
<c:when test="${not empty sleBsnmInfo.rnmAdres && not empty sleBsnmInfo.lnbAdres}">
|
||||
<c:out value="${sleBsnmInfo.lnbAdres}"/>
|
||||
</c:when>
|
||||
<c:when test="${empty sleBsnmInfo.rnmAdres && not empty sleBsnmInfo.lnbAdres}">
|
||||
<c:out value="${sleBsnmInfo.lnbAdres}"/>
|
||||
</c:when>
|
||||
<c:when test="${not empty sleBsnmInfo.rnmAdres && empty sleBsnmInfo.lnbAdres}">
|
||||
<c:out value="${sleBsnmInfo.rnmAdres}"/>
|
||||
</c:when>
|
||||
</c:choose>
|
||||
<c:out value="${sleBsnmInfo.dtlAdres}"/>
|
||||
대표전화 : <c:out value="${sopmalInfo.reprsntTelnb}"/>
|
||||
대표이메일 :
|
||||
<a href="mailto:<c:out value='${sopmalInfo.reprsntEmail}'/>">
|
||||
<c:out value="${sopmalInfo.reprsntEmail}"/>
|
||||
</a>
|
||||
<br/>
|
||||
개인정보관리책임자 : <c:out value="${sleBsnmInfo.indvdlinfoPrtcRspnberNm}"/>
|
||||
사업자 등록번호: <c:out value="${sleBsnmInfo.bizrnb}"/>
|
||||
<a href="javascript:;" onclick="window.open('https://www.ftc.go.kr/bizCommPop.do?wrkr_no=<c:out value='${sleBsnmInfo.replaceBizrnb}'/>','communicationViewPopup','width=750,height=700,scrollbars=yes')">
|
||||
[사업자정보확인]
|
||||
</a>
|
||||
통신판매업 신고번호 : <c:out value="${sleBsnmInfo.mobDclNb}"/>
|
||||
<br/>
|
||||
[ <a href="#selerInfo" rel="modal:open">판매자 정보</a> ]
|
||||
[ <a href="#indvdlInfoProcsModal" rel="modal:open" onclick="fn_get_indvdlInfoPorcsCn();">판매자 개인정보 처리방침</a> ]
|
||||
</p>
|
||||
<p class="footer-body__text03">
|
||||
통신판매중개사업자 : <c:out value="${operBsnmInfo.bsnmNm}"/>
|
||||
<br/>
|
||||
대표자 : <c:out value="${operBsnmInfo.reprsntvnm}"/>
|
||||
주소:
|
||||
<c:choose>
|
||||
<c:when test="${not empty operBsnmInfo.rnmAdres && not empty operBsnmInfo.lnbAdres}">
|
||||
<c:out value="${operBsnmInfo.lnbAdres}"/>
|
||||
</c:when>
|
||||
<c:when test="${empty operBsnmInfo.rnmAdres && not empty operBsnmInfo.lnbAdres}">
|
||||
<c:out value="${operBsnmInfo.lnbAdres}"/>
|
||||
</c:when>
|
||||
<c:when test="${not empty operBsnmInfo.rnmAdres && empty operBsnmInfo.lnbAdres}">
|
||||
<c:out value="${operBsnmInfo.rnmAdres}"/>
|
||||
</c:when>
|
||||
</c:choose>
|
||||
<c:out value="${operBsnmInfo.dtlAdres}"/>
|
||||
대표전화 : <c:out value="${operBsnmInfo.telnb}"/>
|
||||
대표이메일 :
|
||||
<a href="mailto:<c:out value='${operBsnmInfo.email}'/>">
|
||||
<c:out value="${operBsnmInfo.email}"/>
|
||||
</a>
|
||||
<br/>
|
||||
개인정보관리책임자 : <c:out value="${operBsnmInfo.indvdlinfoPrtcRspnberNm}"/>
|
||||
사업자 등록번호: <c:out value="${operBsnmInfo.bizrnb}"/>
|
||||
<a href="javascript:;" onclick="window.open('https://www.ftc.go.kr/bizCommPop.do?wrkr_no=<c:out value='${operBsnmInfo.replaceBizrnb}'/>','communicationViewPopup','width=750,height=700,scrollbars=yes')">
|
||||
[사업자정보확인]
|
||||
</a>
|
||||
통신판매업 신고번호 : <c:out value="${operBsnmInfo.mobDclNb}"/>
|
||||
<br/>
|
||||
<c:out value="${operBsnmInfo.bsnmNm}"/>는 통신판매중개자이며, 통신판매의 당사자가 아닙니다.
|
||||
상품 및 거래와 관련한 의무와 책임은 판매자에게 있습니다.
|
||||
<br/>
|
||||
Copyright ⓒ<c:out value="${operBsnmInfo.bsnmNm}"/> All rights reserved.
|
||||
</p>
|
||||
<div class="footer-image-container">
|
||||
<%--
|
||||
<img src="/pc/images/푸터로고.png" alt="해당 이미지에 대한 설명">
|
||||
<div class="footer-image-container__misc">
|
||||
<img src="/pc/images/푸터이미지01.png" alt="해당 이미지에 대한 설명">
|
||||
<img src="/pc/images/푸터이미지02.png" alt="해당 이미지에 대한 설명">
|
||||
</div>
|
||||
--%>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="footer-body__text01">
|
||||
사업자명 : <c:out value="${operBsnmInfo.bsnmNm}"/>
|
||||
</span>
|
||||
<p class="footer-body__text02">
|
||||
대표자 : <c:out value="${operBsnmInfo.reprsntvnm}"/>
|
||||
주소:
|
||||
<c:choose>
|
||||
<c:when test="${not empty operBsnmInfo.rnmAdres && not empty operBsnmInfo.lnbAdres}">
|
||||
<c:out value="${operBsnmInfo.lnbAdres}"/>
|
||||
</c:when>
|
||||
<c:when test="${empty operBsnmInfo.rnmAdres && not empty operBsnmInfo.lnbAdres}">
|
||||
<c:out value="${operBsnmInfo.lnbAdres}"/>
|
||||
</c:when>
|
||||
<c:when test="${not empty operBsnmInfo.rnmAdres && empty operBsnmInfo.lnbAdres}">
|
||||
<c:out value="${operBsnmInfo.rnmAdres}"/>
|
||||
</c:when>
|
||||
</c:choose>
|
||||
<c:out value="${operBsnmInfo.dtlAdres}"/>
|
||||
대표전화 : <c:out value="${sopmalInfo.reprsntTelnb}"/>
|
||||
대표이메일 :
|
||||
<a href="mailto:<c:out value='${sopmalInfo.reprsntEmail}'/>">
|
||||
<c:out value="${sopmalInfo.reprsntEmail}"/>
|
||||
</a>
|
||||
<br/>
|
||||
개인정보관리책임자 : <c:out value="${operBsnmInfo.indvdlinfoPrtcRspnberNm}"/>
|
||||
사업자 등록번호: <c:out value="${operBsnmInfo.bizrnb}"/>
|
||||
<a href="javascript:;" onclick="window.open('https://www.ftc.go.kr/bizCommPop.do?wrkr_no=<c:out value='${operBsnmInfo.replaceBizrnb}'/>','communicationViewPopup','width=750,height=700,scrollbars=yes')">
|
||||
[사업자정보확인]
|
||||
</a>
|
||||
통신판매업 신고번호 : <c:out value="${sleBsnmInfo.mobDclNb}"/>
|
||||
</p>
|
||||
<p class="footer-body__text03">
|
||||
Copyright ⓒ<c:out value="${sleBsnmInfo.bsnmNm}"/> All rights reserved.
|
||||
</p>
|
||||
<div class="footer-image-container">
|
||||
<%--
|
||||
<img src="/pc/images/푸터로고.png" alt="해당 이미지에 대한 설명">
|
||||
<div class="footer-image-container__misc">
|
||||
<img src="/pc/images/푸터이미지01.png" alt="해당 이미지에 대한 설명">
|
||||
<img src="/pc/images/푸터이미지02.png" alt="해당 이미지에 대한 설명">
|
||||
</div>
|
||||
--%>
|
||||
</div>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:when>
|
||||
|
||||
|
||||
</c:choose>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<c:if test="${scriptSetup.scriptCnUseAt eq 'Y'}">
|
||||
${scriptSetup.scriptCn}
|
||||
</c:if>
|
||||
|
||||
|
||||
|
||||
<div id="selerInfo" class="modal alert" style="display: none; max-width: 600px;">
|
||||
<div class="modal-header">
|
||||
<div class="modal-header__title">판매자 정보</div>
|
||||
</div>
|
||||
<div class="modal-content">
|
||||
<div class="popModalContent__inner">
|
||||
<div class="popModalContent__reviewBenefit">
|
||||
<dl>
|
||||
<dt>상호명</dt>
|
||||
<dd><c:out value="${sleBsnmInfo.bsnmNm}"/></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt>대표자</dt>
|
||||
<dd><c:out value="${sleBsnmInfo.reprsntvnm}"/></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt>사업자등록번호</dt>
|
||||
<dd><c:out value="${sleBsnmInfo.bizrnb}"/></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt>통신판매업번호</dt>
|
||||
<dd><c:out value="${sleBsnmInfo.mobDclNb}"/></dd>
|
||||
</dl>
|
||||
<c:if test = "${not empty sleBsnmInfo.bsnDclNb}">
|
||||
<dl>
|
||||
<dt>영업신고번호</dt>
|
||||
<dd><c:out value="${sleBsnmInfo.bsnDclNb}"/></dd>
|
||||
</dl>
|
||||
</c:if>
|
||||
<dl>
|
||||
<dt>사업장 소재지</dt>
|
||||
<dd><c:choose>
|
||||
<c:when test = "${not empty operBsnmInfo.rnmAdres && not empty operBsnmInfo.lnbAdres}">
|
||||
<c:out value="${operBsnmInfo.lnbAdres}"/>
|
||||
</c:when>
|
||||
<c:when test = "${empty operBsnmInfo.rnmAdres && not empty operBsnmInfo.lnbAdres}">
|
||||
<c:out value="${operBsnmInfo.lnbAdres}"/>
|
||||
</c:when>
|
||||
<c:when test = "${not empty operBsnmInfo.rnmAdres && empty operBsnmInfo.lnbAdres}">
|
||||
<c:out value="${operBsnmInfo.rnmAdres}"/>
|
||||
</c:when>
|
||||
</c:choose><c:out value="${sleBsnmInfo.dtlAdres}"/></dd>
|
||||
</dl>
|
||||
<c:if test = "${footerInfo.footerInfo.sopmalInfo.cscTelnbOrdrPosblAt eq 'Y' && not empty footerInfo.footerInfo.sopmalInfo.cscTelnb}">
|
||||
<dl>
|
||||
<dt>고객센터</dt>
|
||||
<dd>
|
||||
<c:out value="${footerInfo.footerInfo.sopmalInfo.cscTelnb}"/>
|
||||
</dd>
|
||||
</dl>
|
||||
</c:if>
|
||||
<dl>
|
||||
<dt>email</dt>
|
||||
<dd>
|
||||
<c:out value="${sleBsnmInfo.email}"/>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="alert-btn-container">
|
||||
<a href="#" rel="modal:close" class="alert-btn alert-btn--confirm">확인</a>
|
||||
</div>
|
||||
</div>
|
||||
<div id="indvdlInfoProcsModal" class="modal alert" style="display: none; max-width: 800px;">
|
||||
<div class="modal-header">
|
||||
<div class="modal-header__title">판매자 개인정보 처리 방침</div>
|
||||
</div>
|
||||
<div class="modal-content" id = "indvdlInfoProcsContent">
|
||||
<input type = "hidden" value = "N" id = "indvdlInfoProcsAjaxAt"/>
|
||||
</div>
|
||||
<div class="alert-btn-container">
|
||||
<a href="#" rel="modal:close" class="alert-btn alert-btn--confirm">확인</a>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
<script>
|
||||
/*판매자 개인정보 처리방침 조회*/
|
||||
const fn_get_indvdlInfoPorcsCn = () => {
|
||||
const indvdlInfoProcsAjaxAt = $("#indvdlInfoProcsAjaxAt").val();
|
||||
if (indvdlInfoProcsAjaxAt === 'N') {
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: "/sopmal/main/selectIndvdlInfoProcsCn",
|
||||
data : {stplatDvCd : '08'},
|
||||
success: function (data) {
|
||||
data = data.resBody.result;
|
||||
data = JSON.parse(data);
|
||||
let clauseList = data.clauseList;
|
||||
if (clauseList) {
|
||||
let i = 0;
|
||||
clauseList.forEach(function (item) {
|
||||
if (i === 0) {
|
||||
$("#indvdlInfoProcsContent").append(item.stplatCn);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
$("#indvdlInfoProcsContent").addClass("ck-content");
|
||||
}
|
||||
$("#indvdlInfoProcsAjaxAt").val("Y");
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
function setTopMenuCode() {
|
||||
document.cookie = "checkMenu=Y";
|
||||
}
|
||||
</script>
|
||||
|
||||
<c:if test="${sopmallInfo.shopInfo.sopmalCd eq 'DL'}">
|
||||
<script>
|
||||
(function(){var w=window;if(w.ChannelIO){return w.console.error("ChannelIO script included twice.");}var ch=function(){ch.c(arguments);};ch.q=[];ch.c=function(args){ch.q.push(args);};w.ChannelIO=ch;function l(){if(w.ChannelIOInitialized){return;}w.ChannelIOInitialized=true;var s=document.createElement("script");s.type="text/javascript";s.async=true;s.src="https://cdn.channel.io/plugin/ch-plugin-web.js";var x=document.getElementsByTagName("script")[0];if(x.parentNode){x.parentNode.insertBefore(s,x);}}if(document.readyState==="complete"){l();}else{w.addEventListener("DOMContentLoaded",l);w.addEventListener("load",l);}})();
|
||||
|
||||
|
||||
ChannelIO('boot', {
|
||||
"pluginKey": "f73ed102-2f9c-44ff-ab17-dc18045401a2" // fill your plugin key
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
</c:if>
|
||||
1392
src/main/webapp/WEB-INF/views/comm/Header.jsp
Normal file
1392
src/main/webapp/WEB-INF/views/comm/Header.jsp
Normal file
File diff suppressed because it is too large
Load Diff
459
src/main/webapp/WEB-INF/views/comm/Include.jsp
Normal file
459
src/main/webapp/WEB-INF/views/comm/Include.jsp
Normal file
@@ -0,0 +1,459 @@
|
||||
<%@ page import="org.springframework.util.ObjectUtils" %>
|
||||
<%@ 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 : include.jsp
|
||||
Description : 통합관리자 CSS 및 JS 공통 include
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023-12-14 최범식 최초 생성
|
||||
--%>
|
||||
|
||||
<%-- CSS --%>
|
||||
|
||||
<!-- 모든 사이트 공통 -->
|
||||
<link rel="stylesheet" href="<c:url value='/pc/css/default.css'/>">
|
||||
|
||||
<!-- 네이버페이 확인용 css(실제 API 적용할땐 삭제하시면 됩니다.) -->
|
||||
<link rel="stylesheet" href="<c:url value='/pc/css/pay.css'/>">
|
||||
|
||||
|
||||
<!-- jquery -->
|
||||
<script src="<c:url value='/pc/vendor/jquery-3.7.1.min.js'/>"></script>
|
||||
|
||||
<!-- 슬라이드 -->
|
||||
<link rel="stylesheet" type="text/css" href="<c:url value='/pc/vendor/slick/slick.css'/>">
|
||||
<link rel="stylesheet" type="text/css" href="<c:url value='/pc/vendor/slick/slick-theme.css'/>">
|
||||
<script src="<c:url value='/pc/vendor/slick/slick.min.js'/>"></script>
|
||||
|
||||
<!-- 실시간검색 -->
|
||||
<script src="<c:url value='/pc/vendor/jquery.vticker.js'/>"></script>
|
||||
|
||||
<!-- 커스텀 셀렉트 박스 -->
|
||||
<script src="<c:url value='/pc/vendor/jquery-nice-select/jquery.nice-select.min.js'/>"></script>
|
||||
<link rel="stylesheet" href="<c:url value='/pc/vendor/jquery-nice-select/nice-select.css'/>">
|
||||
|
||||
<!-- 제이쿼리 모달 -->
|
||||
<script src="<c:url value='/pc/vendor/jquery-modal/jquery.modal.min.js'/>"></script>
|
||||
<link rel="stylesheet" href="<c:url value='/pc/vendor/jquery-modal/jquery.modal.min.css'/>">
|
||||
|
||||
<!-- 제이쿼리 모달 -->
|
||||
<script src="<c:url value='/pc/vendor/dropzone/dropzone.min.js'/>"></script>
|
||||
<link rel="stylesheet" href="<c:url value='/pc/vendor/dropzone/dropzone.min.css'/>">
|
||||
|
||||
<!-- 스크립트 -->
|
||||
<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
|
||||
<script src="<c:url value='/js/sopmal/common.js'/>"></script>
|
||||
<script src="<c:url value='/pc/js/script.js'/>" defer></script>
|
||||
<script src="<c:url value='/js/sopmal/gcone.js'/>"></script>
|
||||
|
||||
<%--Web-App연동 스크립트--%>
|
||||
<script src="/mobile/js/bnft/common/Common_app.js" defer=""></script>
|
||||
|
||||
<!-- 파일 업로드 -->
|
||||
<script src="<c:url value='/js/sopmal/fileupload_comm.js'/>"></script>
|
||||
|
||||
<!--ckeditor-->
|
||||
<script src="<c:url value='/ckeditor/ckeditor.js'/>"></script>
|
||||
<script src="<c:url value='/ckeditor/uploadAdapter.js'/>"></script>
|
||||
|
||||
<!-- CK editor -->
|
||||
<link rel="stylesheet" href="<c:url value='/ckeditor/content.css'/>">
|
||||
<%-- CK editor 적용 시 width 설정 --%>
|
||||
<style type="text/css">
|
||||
.ck.ck-editor {
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<!-- Date Picker -->
|
||||
<link rel="stylesheet" type="text/css" href="<c:url value='/pc/vendor/jquery-ui/jquery-ui.min.css'/>">
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="<c:url value='/pc/vendor/jquery-ui/jquery-ui.structure.css'/>">
|
||||
|
||||
<script src="<c:url value='/pc/vendor/jquery-ui/jquery-ui.min.js'/>"></script>
|
||||
|
||||
<!-- popModal -->
|
||||
<link rel="stylesheet" type="text/css" href="<c:url value='/pc/vendor/popModal/popModal.min.css'/>">
|
||||
<script src="<c:url value='/pc/vendor/popModal/popModal.min.js'/>"></script>
|
||||
<c:set var="meta" value="${sopmallInfo.shopInfo}"/>
|
||||
<!--파비콘,메타-->
|
||||
<%--파비콘--%>
|
||||
<c:choose>
|
||||
<c:when test="${fn:startsWith(meta.fviconCours, '/')}">
|
||||
<c:set var="fviconCours" value="${meta.fviconCours}"/>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:set var="fviconCours" value="/${meta.fviconCours}"/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<%--메타--%>
|
||||
<%--상품 타이틀 사용 여부 Y이면--%>
|
||||
<c:choose>
|
||||
<c:when test = "${sopmallInfo.shopInfo.metaGoodsAt eq 'Y' and fn:contains(accessUri,'/sopmal/goods/selectGoodsDtl')}">
|
||||
<c:set var = "metaGoodsSj" value="${sopmallInfo.shopInfo.metaGoodsSj}"/>
|
||||
<c:set var = "metaGoodsDc" value="${sopmallInfo.shopInfo.metaGoodsDc}"/>
|
||||
<c:set var = "metaGoodsKwrd" value="${sopmallInfo.shopInfo.metaGoodsKwrd}"/>
|
||||
<%--상품 명 있으면 set--%>
|
||||
<c:choose>
|
||||
<c:when test = "${not empty resultMap.goodsDtl.goodsNm}">
|
||||
<c:set var="goodsNm" value="${resultMap.goodsDtl.goodsNm}"/>
|
||||
<c:set var = "metaGoodsSj" value="${fn:replace(metaGoodsSj, '{goodsNm}', goodsNm)}"/>
|
||||
<c:set var="metaGoodsDc" value="${fn:replace(metaGoodsDc, '{goodsNm}', goodsNm)}"/>
|
||||
<c:set var="metaGoodsKwrd" value="${fn:replace(metaGoodsKwrd, '{goodsNm}', goodsNm)}"/>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:set var = "metaGoodsSj" value="${fn:replace(metaGoodsSj, '{goodsNm}', '')}"/>
|
||||
<c:set var = "metaGoodsDc" value="${fn:replace(metaGoodsDc, '{goodsNm}', '')}"/>
|
||||
<c:set var = "metaGoodsKwrd" value="${fn:replace(metaGoodsKwrd, '{goodsNm}', '')}"/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<%--짧은 설명 있으면 set--%>
|
||||
<c:choose>
|
||||
<c:when test = "${not empty resultMap.goodsDtl.srtDc}">
|
||||
<c:set var="srtDc" value="${resultMap.goodsDtl.srtDc}"/>
|
||||
<c:set var = "metaGoodsSj" value="${fn:replace(metaGoodsSj, '{srtDc}', srtDc)}"/>
|
||||
<c:set var="metaGoodsDc" value="${fn:replace(metaGoodsDc, '{srtDc}', srtDc)}"/>
|
||||
<c:set var="metaGoodsKwrd" value="${fn:replace(metaGoodsKwrd, '{srtDc}', srtDc)}"/>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:set var = "metaGoodsSj" value="${fn:replace(metaGoodsSj, '{srtDc}', '')}"/>
|
||||
<c:set var="metaGoodsDc" value="${fn:replace(metaGoodsDc, '{srtDc}', '')}"/>
|
||||
<c:set var="metaGoodsKwrd" value="${fn:replace(metaGoodsKwrd, '{srtDc}', '')}"/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<c:choose>
|
||||
<c:when test = "${not empty resultMap.goodsDtl.reprsntDc}">
|
||||
<c:set var="reprsntDc" value="${resultMap.goodsDtl.reprsntDc}"/>
|
||||
<c:set var = "metaGoodsSj" value="${fn:replace(metaGoodsSj, '{reprsntDc}', reprsntDc)}"/>
|
||||
<c:set var="metaGoodsDc" value="${fn:replace(metaGoodsDc, '{reprsntDc}', reprsntDc)}"/>
|
||||
<c:set var="metaGoodsKwrd" value="${fn:replace(metaGoodsKwrd, '{reprsntDc}', reprsntDc)}"/>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:set var = "metaGoodsSj" value="${fn:replace(metaGoodsSj, '{reprsntDc}', '')}"/>
|
||||
<c:set var="metaGoodsDc" value="${fn:replace(metaGoodsDc, '{reprsntDc}', '')}"/>
|
||||
<c:set var="metaGoodsKwrd" value="${fn:replace(metaGoodsKwrd, '{reprsntDc}', '')}"/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<c:choose>
|
||||
<c:when test = "${not empty resultMap.goodsDtl.kwrd}">
|
||||
<c:set var="kwrd" value="${resultMap.goodsDtl.kwrd}"/>
|
||||
<c:set var = "metaGoodsSj" value="${fn:replace(metaGoodsSj, '{kwrd}', kwrd)}"/>
|
||||
<c:set var="metaGoodsDc" value="${fn:replace(metaGoodsDc, '{kwrd}', kwrd)}"/>
|
||||
<c:set var="metaGoodsKwrd" value="${fn:replace(metaGoodsKwrd, '{kwrd}', kwrd)}"/>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:set var = "metaGoodsSj" value="${fn:replace(metaGoodsSj, '{kwrd}', '')}"/>
|
||||
<c:set var="metaGoodsDc" value="${fn:replace(metaGoodsDc, '{kwrd}', '')}"/>
|
||||
<c:set var="metaGoodsKwrd" value="${fn:replace(metaGoodsKwrd, '{kwrd}', '')}"/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<title>${metaGoodsSj}</title>
|
||||
<meta name="description" content="<c:out value="${metaGoodsDc}"/>">
|
||||
<meta name="keywords" content="<c:out value="${metaGoodsKwrd}"/>">
|
||||
<meta property="og:title" content="<c:out value="${metaGoodsSj}"/>">
|
||||
<meta property="og:description" content="<c:out value="${metaGoodsDc}"/>">
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<title><c:out value="${meta.metaSj}"/></title>
|
||||
<meta name="description" content="<c:out value="${meta.metaDc}"/>">
|
||||
<meta name="keywords" content="<c:out value="${meta.metaKwrd}"/>">
|
||||
<meta property="og:title" content="<c:out value="${meta.metaSj}"/>">
|
||||
<meta property="og:description" content="<c:out value="${meta.metaDc}"/>">
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<link rel="icon" href="<c:out value="${fviconCours}"/>">
|
||||
<meta name="robots" content="index,follow"/>
|
||||
|
||||
<%--상품상세 일 경우 파라미터 포함 전체 경로 --%>
|
||||
<c:set var="ogUrl" value=""/>
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(accessUri,'/sopmal/goods/selectGoodsDtl')}">
|
||||
<c:set var="ogUrl" value="${meta.pcDomnAdres}${accessUri}?goodsInnb=${pageContext.request.getParameter('goodsInnb')}"/>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:set var="ogUrl" value="${meta.pcDomnAdres}${accessUri}"/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
|
||||
<meta property="og:url" content="<c:out value="${ogUrl}"/>">
|
||||
<meta property="og:site_name" content="<c:out value="${meta.sopmalNm}"/>">
|
||||
|
||||
<%--상품 상세일 경우 상품 이미지, 그외 로고 --%>
|
||||
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.cdnurl')" var="cdnurl"/>
|
||||
<c:set var="ogImage" value=""/>
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(accessUri,'/sopmal/goods/selectGoodsDtl')}">
|
||||
<c:set var="ogImage" value="${cdnurl}${fn:split(resultMap.goodsDtl.img, '|')[0]}"/>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:set var="ogImage" value="${ cdnurl }${ topBarInfo.topbar.topFilCours }/${ topBarInfo.topbar.topSysFilNm }"/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<meta property="og:image" content="<c:out value="${ogImage}"/>">
|
||||
<meta property="og:type" content="website">
|
||||
<spring:eval expression="@environment.getProperty('meta-content.google.'+'${sopmallInfo.shopInfo.sopmalCd}')"
|
||||
var="googleMeta"/>
|
||||
<spring:eval expression="@environment.getProperty('meta-content.naver.'+'${sopmallInfo.shopInfo.sopmalCd}')"
|
||||
var="naverMeta"/>
|
||||
<spring:eval expression="@environment.getProperty('meta-content.facebook.'+'${sopmallInfo.shopInfo.sopmalCd}')"
|
||||
var="facebookMeta"/>
|
||||
<meta name="google-site-verification" content="${googleMeta}"/>
|
||||
<meta name="naver-site-verification" content="${naverMeta}"/>
|
||||
<meta name="facebook-domain-verification" content="${facebookMeta}"/>
|
||||
<script type="text/javascript">
|
||||
/*****************************************************************
|
||||
* 로딩이미지
|
||||
****************************************************************/
|
||||
const loding = function (isShow) {
|
||||
if (isShow) {
|
||||
$('.loadingImg').show();
|
||||
} else {
|
||||
$('.loadingImg').hide();
|
||||
}
|
||||
};
|
||||
$.ajaxSetup({
|
||||
beforeSend: function (jqXhr, settins) {
|
||||
jqXhr.setRequestHeader('AJAX', true);
|
||||
$("#overlay").fadeIn();
|
||||
loding(true);
|
||||
},
|
||||
complete: function () {
|
||||
//동시에 여러개의 AJAX가 수행될 경우를 대비하여 delay를 설정
|
||||
setTimeout(function () {
|
||||
$("#overlay").fadeOut();
|
||||
loding(false);
|
||||
}, 500);
|
||||
},
|
||||
error: function (data, status, error) {
|
||||
fn_ajax_error(data, status, error);
|
||||
}
|
||||
});
|
||||
|
||||
//ajax error 공통 처리 함수
|
||||
//* 개별처리 필요 할 시 공통 함수 선언 후 개별 처리 할 수 있음
|
||||
function fn_ajax_error(data, status, error) {
|
||||
$("#overlay").fadeOut();
|
||||
loding(true);
|
||||
console.log(data);
|
||||
if (data?.responseJSON?.resBody?.message != null) {
|
||||
if (fn_check_json(data.responseJSON.resBody.message)) {
|
||||
const errorObject = JSON.parse(data.responseJSON.resBody.message);
|
||||
console.log(errorObject);
|
||||
if (!errorObject) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
if (!errorObject.errorMsg) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
alert(errorObject.errorMsg);
|
||||
let isMtched = false;
|
||||
$('.main').eq(0).find('input,select,textarea').each(function () {
|
||||
for (let idx = 0; idx < errorObject.errorFields.length; idx++) {
|
||||
if (errorObject.errorFields[idx].indexOf($(this).attr('name')) >= 0) {
|
||||
isMtched = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (isMtched) {
|
||||
$(this).focus();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (data.responseJSON.resBody.message) {
|
||||
alert(data.responseJSON.resBody.message);
|
||||
}else {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
if (data?.responseJSON?.resBody?.result != null) {
|
||||
if (fn_check_json(data.responseJSON.resBody.result)) {
|
||||
const errorObject = JSON.parse(data.responseJSON.resBody.result);
|
||||
console.log(errorObject);
|
||||
if (!errorObject) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
if (!errorObject.errorMsg) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
alert(errorObject.errorMsg);
|
||||
let isMtched = false;
|
||||
$('.main').eq(0).find('input,select,textarea').each(function () {
|
||||
for (let idx = 0; idx < errorObject.errorFields.length; idx++) {
|
||||
if (errorObject.errorFields[idx].indexOf($(this).attr('name')) >= 0) {
|
||||
isMtched = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (isMtched) {
|
||||
$(this).focus();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (data.responseJSON.resBody.result) {
|
||||
alert(data.responseJSON.resBody.result);
|
||||
} else {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else if (data.status !== 200) {
|
||||
if (data.status !== 0) {
|
||||
if(data.responseJSON.resBody.result){
|
||||
const result = JSON.parse(data.responseJSON.resBody.result);
|
||||
alert(result.errorMsg);
|
||||
}else{
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<%--광고스크립트--%>
|
||||
<%--광고스크립트 공통--%>
|
||||
<script src="<c:url value='/js/adscript/common/adscript_common.js'/>"></script>
|
||||
|
||||
<%--광고스크립트 광고 매체별--%>
|
||||
<script src="<c:url value='/js/adscript/admedia/adscirpt_mobion.js'/>"></script>
|
||||
<script src="<c:url value='/js/adscript/admedia/adscript_adn2dot0.js'/>"></script>
|
||||
<script src="<c:url value='/js/adscript/admedia/adscript_criteo.js'/>"></script>
|
||||
<script src="<c:url value='/js/adscript/admedia/adscript_googleAds.js'/>"></script>
|
||||
<script src="<c:url value='/js/adscript/admedia/adscript_googleAnalytics.js'/>"></script>
|
||||
<script src="<c:url value='/js/adscript/admedia/adscript_googleTagManager.js'/>"></script>
|
||||
<script src="<c:url value='/js/adscript/admedia/adscript_kakaoMoments.js'/>"></script>
|
||||
<script src="<c:url value='/js/adscript/admedia/adscript_meta.js'/>"></script>
|
||||
<script src="<c:url value='/js/adscript/admedia/adscript_naverSrchAds.js'/>"></script>
|
||||
<script src="<c:url value='/js/adscript/admedia/adscript_tgscript.js'/>"></script>
|
||||
|
||||
<%--광고스크립트 트리거 액션--%>
|
||||
<script src="<c:url value='/js/adscript/trigger/adscript_trigger.js'/>"></script>
|
||||
|
||||
<%--광고 스크립트 실행 스크립트--%>
|
||||
<script src="<c:url value='/js/adscript/adscript.js'/>"></script>
|
||||
<%--theme적용--%>
|
||||
<link rel="stylesheet" type="text/css" href="${sopmallInfo.themaPath}">
|
||||
|
||||
<script>
|
||||
<%--장바구니 갯수 조회--%>
|
||||
fn_reflesh_cart_cnt()
|
||||
|
||||
|
||||
/*비밀번호 변경 알림 여부 확인*/
|
||||
$(document).ready(function () {
|
||||
|
||||
const url = '<c:url value="/sopmal/mbr/selectPasswordChng"/>';
|
||||
const originalUrl = window.location.href;
|
||||
let passwordAt = '<%=(String)session.getAttribute("passwordChngDeAt")%>'
|
||||
|
||||
if (passwordAt === 'Y') {
|
||||
location.href = url + '?originalUrl=' + encodeURIComponent(originalUrl);
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<%--광고스크립트 정보--%>
|
||||
<input type="hidden" id="adScriptDeviceTy" value="${deviceType}"/>
|
||||
<% String adscriptMbrId = "";
|
||||
if (!ObjectUtils.isEmpty(session.getAttribute("adscriptMbrId"))) {
|
||||
adscriptMbrId = session.getAttribute("adscriptMbrId").toString();
|
||||
request.setAttribute("adscriptMbrId", adscriptMbrId);
|
||||
|
||||
}%>
|
||||
<input type="hidden" id="adscriptMbrId" value="${adscriptMbrId}"/>
|
||||
<div id="mbrMarktClauseAgreeDiv"></div>
|
||||
|
||||
<script>
|
||||
|
||||
/*최초 로그인시 마케팅 수신동의를 받지 않았을 경우 마케팅 수신동의 팝업 띄우기*/
|
||||
$(document).ready(function () {
|
||||
const name = 'marktAgreeAt'
|
||||
const cookieValue = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)');
|
||||
const agreeAt = cookieValue ? cookieValue[2] : null;
|
||||
|
||||
//현재경로
|
||||
let locationUrl = window.location.pathname;
|
||||
|
||||
//마케팅 수신동의 여부가 없으면 마케팅 수신동의 여부 팝업 띄우기
|
||||
//회원 주문서 작성페이지에는 미노출함
|
||||
if (agreeAt === 'N' && !locationUrl.includes("selectMbrPurchsForm")) {
|
||||
|
||||
document.cookie = 'marktAgreeAt=P; path=/'
|
||||
|
||||
//해당팝업이 오픈된건 마케팅수신동의여부가 없어서 열림
|
||||
const stplatDvCd = '05'
|
||||
|
||||
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: "/sopmal/mbr/selectMbrMarktAgreePopup",
|
||||
data: {stplatDvCd: stplatDvCd},
|
||||
success: function (data) {
|
||||
$('#mbrMarktClauseAgreePopup').remove();
|
||||
$('#mbrMarktClauseAgreeDiv').html(data)
|
||||
$('#mbrMarktClauseAgreePopup').modal()
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
//회원 주문서 작성페이지에는 미노출 처리
|
||||
if (locationUrl.includes("selectMbrPurchsForm")) {
|
||||
document.cookie = 'marktAgreeAt=P; path=/'
|
||||
}
|
||||
})
|
||||
|
||||
//광고 수신동의여부 수정
|
||||
function fn_global_mbr_markt_agree_at(agreeAt) {
|
||||
|
||||
|
||||
//광고수신동의 여부 수정
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: "/sopmal/mbr/updateMarkRecptnAgreUpdt",
|
||||
data: {marktRecptnAgreAt: agreeAt},
|
||||
success: function (data) {
|
||||
console.log(data)
|
||||
|
||||
const result = JSON.parse(data.resBody.result)
|
||||
|
||||
//신규회원가입쿠폰 발행되었을 경우 메시지
|
||||
if (result.status === '0') {
|
||||
|
||||
alert(result.message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<!--로딩영역-->
|
||||
<div class="loadingImg" style="display:none; position: relative; z-index: 1010;">
|
||||
<div class="loding_popup_wrap"><img src="/mobile/images/loading.svg" alt="loading"></div>
|
||||
</div>
|
||||
74
src/main/webapp/WEB-INF/views/comm/admin/Header.jsp
Normal file
74
src/main/webapp/WEB-INF/views/comm/admin/Header.jsp
Normal file
@@ -0,0 +1,74 @@
|
||||
<%@ 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"%>
|
||||
<header class="header">
|
||||
<div class="header__top">
|
||||
<div class="header-left">
|
||||
<div class="header__logo">
|
||||
<a href="/admin/main">
|
||||
<img src="/admin/images/logo_default.png" alt="GC ONE 관리자">
|
||||
<span class="header__logo-title">통합관리자</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<a href="#notification-list-pop" rel="modal:open" class="header-right__notification">
|
||||
<i class="icon icon_notification"></i>
|
||||
<span class="visually-hidden">알림</span>
|
||||
<span class="number-badge">3</span>
|
||||
</a>
|
||||
<c:if test="${isAuthenticated}">
|
||||
<div class="header-right__user-info">
|
||||
<i class="icon icon_user-info"></i>
|
||||
<c:out value="${userNm}"/>님
|
||||
<div class="userInfo-float">
|
||||
<div class="userInfo-float__top">
|
||||
<i class="icon icon_user-info-big"></i>
|
||||
<div class="userInfo-float__info">
|
||||
<p class="userInfo-float__info-row">
|
||||
<c:out value="${userNm}"/>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="userInfo-float__bottom">
|
||||
<a href="javascript:void(0)" onclick="setTopMenuCode('','/admin/use/mngr/selectMngrInfoInqireForm')" class="btn outline sm">정보수정</a>
|
||||
<a href="/admin/logout" class="btn dark sm">로그아웃</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</c:if>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header__bottom">
|
||||
<nav class="header-nav">
|
||||
<div class="header-nav__fullMenu-trigger">
|
||||
<a class="header-nav__fullMenu-trigger-btn" href="#full-menu" rel="modal:open" style="pointer-events: none">
|
||||
<span>통합관리자시스템</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="header-nav__right">
|
||||
<ul>
|
||||
<c:if test="${!empty topMenuList}">
|
||||
<c:forEach var="topMenuList" items="${topMenuList.menuList}" varStatus="status">
|
||||
<c:set var="topMenuCd" value="${sessionScope.topMenuCd}" />
|
||||
<li <c:if test="${topMenuCd eq topMenuList.menuCd}"> class="current" </c:if>>
|
||||
<a href="javascript:void(0)" onclick="setTopMenuCode('<c:out value="${topMenuList.menuCd}"/>','<c:out value="${topMenuList.url}"/>')"><c:out value ="${topMenuList.menuNm}"/></a>
|
||||
</li>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<script>
|
||||
function setTopMenuCode(topMenuCd, topMenuUrl) {
|
||||
document.cookie = "topMenuCd=" + topMenuCd + "; path=/admin";
|
||||
document.cookie = "leftMenuCd=" + "" + "; path=/admin";
|
||||
document.cookie = "upperMenuCd=" + "" + "; path=/admin";
|
||||
document.cookie = "topMenuUrl=" + topMenuUrl + "; path=/admin";
|
||||
document.cookie = "checkMenu=Y" + "; path=/admin";
|
||||
window.location.href = topMenuUrl;
|
||||
}
|
||||
</script>
|
||||
190
src/main/webapp/WEB-INF/views/comm/admin/Include.jsp
Normal file
190
src/main/webapp/WEB-INF/views/comm/admin/Include.jsp
Normal file
@@ -0,0 +1,190 @@
|
||||
<%@ 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" %>
|
||||
|
||||
<%--
|
||||
Class Name : include.jsp
|
||||
Description : 통합관리자 CSS 및 JS 공통 include
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023-12-14 박철민 최초 생성
|
||||
--%>
|
||||
|
||||
<!-- CK editor -->
|
||||
<link rel="stylesheet" href="<c:url value='/ckeditor/content.css'/>">
|
||||
<%-- CK editor 적용 시 width 설정 --%>
|
||||
<style type="text/css">
|
||||
.ck.ck-editor{
|
||||
width:100%;
|
||||
}
|
||||
</style>
|
||||
<%--파비콘 , 메타정보--%>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="icon" type="image/png" href="\assets\favicon\gcone.ico">
|
||||
<title>GC ONE 통합관리자</title>
|
||||
|
||||
<%--mixed Contents 대응--%>
|
||||
<spring:eval expression="@environment.getProperty('spring.profiles.active')" var="profiles"/>
|
||||
<c:if test="${profiles eq 'stage'}">
|
||||
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
|
||||
</c:if>
|
||||
|
||||
<%-- CSS --%>
|
||||
<link rel="stylesheet" href="/admin/css/style.css"> <!-- ADMIN CSS -->
|
||||
<link rel="stylesheet" href="/admin/vendor/jquery-nice-select/nice-select.css">
|
||||
<link rel="stylesheet" href="/admin/vendor/jquery-ui/jquery-ui.min.css">
|
||||
<link rel="stylesheet" href="/admin/vendor/jquery-ui/jquery-ui.structure.css">
|
||||
<link rel="stylesheet" href="/admin/vendor/jquery-modal/jquery.modal.min.css">
|
||||
<link rel="stylesheet" href="<c:url value='/mngr/vendor/time-picker/timepicker.css'/>">
|
||||
<link rel="stylesheet" href="<c:url value='/mngr/vendor/dropzone/dropzone.min.css'/>">
|
||||
<link rel="stylesheet" href="<c:url value='/mngr/vendor/jstree/themes/default/style.min.css'/>">
|
||||
|
||||
<%-- JS --%>
|
||||
<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
|
||||
<%--<script src="/webjars/jquery/3.7.1/jquery.min.js"></script>--%>
|
||||
<script src="/admin/vendor/jquery-3.7.1.min.js""></script>
|
||||
<%--<script src="/webjars/jquery-nice-select/1.1.0/js/jquery.nice-select.min.js"></script> --%>
|
||||
<script src="/admin/vendor/jquery-nice-select/jquery.nice-select.min.js"></script>
|
||||
<%--<script src="/webjars/jquery-ui/jquery-ui.min.js"></script>--%>
|
||||
<script src="/admin/vendor/jquery-ui/jquery-ui.min.js"></script>
|
||||
<%--<script src="/webjars/jquery-modal/0.9.1/jquery.modal.min.js"></script>--%>
|
||||
<script src="/admin/vendor/jquery-modal/jquery.modal.min.js"></script>
|
||||
|
||||
<script src="<c:url value='/admin/vendor/tablednd/jquery.tablednd.1.0.5.min.js'/>"></script>
|
||||
<script src="<c:url value='/mngr/vendor/time-picker/timepicker.min.js'/>"></script>
|
||||
<script src="<c:url value='/admin/vendor/tablednd/jquery.tablednd.1.0.5.min.js'/>"></script>
|
||||
<script src="<c:url value='/mngr/vendor/dropzone/dropzone.min.js'/>"></script>
|
||||
<script src="<c:url value='/mngr/vendor/chart.js/chart.umd.min.js'/>"></script>
|
||||
<script src="<c:url value='/admin/vendor/jstree/jstree.min.js'/>"></script>
|
||||
<script src="<c:url value='/ckeditor/ckeditor.js'/>"></script>
|
||||
<script src="<c:url value='/ckeditor/uploadAdapter.js'/>"></script>
|
||||
<script src="<c:url value='/jchartfx/js/jchartfx.system.js'/>"></script>
|
||||
<script src="<c:url value='/jchartfx/js/jchartfx.coreVector.js'/>"></script>
|
||||
|
||||
<script src="<c:url value='/admin/js/script.js'/>" defer></script> <!-- ADMIN 스크립트 함수 -->
|
||||
<script src="<c:url value='/js/gcone.js'/>"></script> <!-- 공통 스크립트 함수 -->
|
||||
<meta name="robots" content="noindex,nofollow">
|
||||
<script type="text/javascript">
|
||||
$.ajaxSetup({
|
||||
beforeSend: function (jqXhr, settins) {
|
||||
jqXhr.setRequestHeader('AJAX', true);
|
||||
$("#overlay").fadeIn();
|
||||
},
|
||||
complete: function () {
|
||||
//동시에 여러개의 AJAX가 수행될 경우를 대비하여 delay를 설정
|
||||
setTimeout(function () {
|
||||
$("#overlay").fadeOut();
|
||||
}, 500);
|
||||
},
|
||||
error: function (data) {
|
||||
$("#overlay").fadeOut();
|
||||
loding(false);
|
||||
if (data?.responseJSON?.resBody?.result != null) {
|
||||
if (!data.responseJSON.resBody.result) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
if (fn_check_json(data.responseJSON.resBody.result)) {
|
||||
const errorObject = JSON.parse(data.responseJSON.resBody.result);
|
||||
if (!errorObject) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
if (!errorObject.errorMsg) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
alert(errorObject.errorMsg);
|
||||
let isMtched = false;
|
||||
$('.main').eq(0).find('input,select,textarea').each(function () {
|
||||
for (let idx = 0; idx < errorObject.errorFields.length; idx++) {
|
||||
if (errorObject.errorFields[idx].indexOf($(this).attr('name')) >= 0) {
|
||||
isMtched = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (isMtched) {
|
||||
$(this).focus();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (data.responseJSON.resBody.result) {
|
||||
alert(data.responseJSON.resBody.result);
|
||||
} else {
|
||||
alert('<spring:message code="error.ajax"/>');
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
alert('<spring:message code="error.ajax"/>');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
/**********************************************************************
|
||||
* 회원 crm정보 모달 호출(공통)
|
||||
* 파라미터 설명 {
|
||||
* obj : 호출버튼 객체
|
||||
* mbrInnb : 회원 고유번호
|
||||
* mbrDvCd : 회원 구분코드
|
||||
* modalDiv : 모달 selector
|
||||
* }
|
||||
**********************************************************************/
|
||||
const fn_select_crm_mini_info = function(obj, mbrInnb, mbrDvCd, modalDiv,sopmalCd){
|
||||
const element = $(obj); // 클릭된 요소
|
||||
let offset = element.offset();
|
||||
const info = $(obj).attr("data-info");
|
||||
$.ajax({
|
||||
type : 'POST',
|
||||
url : "<c:url value='/admin/use/mbr/selectMbrInfo'/>",
|
||||
data: {
|
||||
mbrDvCd : mbrDvCd,
|
||||
mbrInnb : mbrInnb,
|
||||
sopmalCd : sopmalCd
|
||||
},
|
||||
success : function(html) {
|
||||
fn_close_modal(info);
|
||||
$(modalDiv).html(html);
|
||||
|
||||
$("#" + info).css({
|
||||
top: offset.top + element.outerHeight(), // 첫 번째 모달의 아래로 설정
|
||||
left: offset.left-150,
|
||||
width: $("#" + info).width() + 50,
|
||||
zIndex: 9998 // 첫 번째 모달보다 위에 표시되도록 설정
|
||||
});
|
||||
$("#" + info).show();
|
||||
}
|
||||
});
|
||||
};
|
||||
/**********************************************************************
|
||||
* CMR 레이어 팝업 닫기 버튼 클릭 이벤트
|
||||
**********************************************************************/
|
||||
$(document).on('click', '.mini-info-content__close', function(e) {
|
||||
e.preventDefault();
|
||||
$(this).closest(".mini-info-content").hide();
|
||||
});
|
||||
|
||||
/*****************************************************************
|
||||
* 로딩이미지
|
||||
****************************************************************/
|
||||
$(document).on("click", '.loading', function(){
|
||||
loding(true);
|
||||
});
|
||||
|
||||
const loding = function(isShow) {
|
||||
if(isShow){
|
||||
$('.loding_wrap').show();
|
||||
}else{
|
||||
$('.loding_wrap').hide();
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<!--로딩영역-->
|
||||
<div class="loding_wrap" style="display:none; position: relative; z-index: 1010;">
|
||||
<div class="loding_popup_wrap"><img src="/mngr/images/loding.gif" alt="loading"></div>
|
||||
</div>
|
||||
84
src/main/webapp/WEB-INF/views/comm/admin/Left.jsp
Normal file
84
src/main/webapp/WEB-INF/views/comm/admin/Left.jsp
Normal file
@@ -0,0 +1,84 @@
|
||||
<%@ 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"%>
|
||||
<aside class="side-nav">
|
||||
<nav class="side-nav__inner">
|
||||
<ul class="depth2">
|
||||
|
||||
<c:if test="${!empty leftMenuList}">
|
||||
<c:forEach var="leftMenuList" items="${leftMenuList.menuList}" varStatus="status">
|
||||
<!-- 선택한 TOP메뉴코드 -->
|
||||
<c:set var="topMenuCd" value="${sessionScope.topMenuCd}" />
|
||||
<!-- 선택한 LEFT메뉴코드 -->
|
||||
<c:set var="leftMenuCd" value="${sessionScope.leftMenuCd}" />
|
||||
<!-- 선택한 LEFT메뉴의 상위 코드 -->
|
||||
<c:set var="upperMenuCd" value="${sessionScope.upperMenuCd}" />
|
||||
|
||||
<!-- 2뎁스의 메뉴 조회 -->
|
||||
<c:if test="${'2' eq leftMenuList.menuDepth}">
|
||||
<c:choose>
|
||||
<%-- 2뎁스 밑에 3뎁스가 있는 경우 Sample --%>
|
||||
<c:when test="${'1' eq leftMenuList.nextDepth3}">
|
||||
<c:set var="depth2MenuCd" value="${leftMenuList.menuCd}" />
|
||||
<c:choose>
|
||||
<c:when test="${depth2MenuCd eq upperMenuCd || (status.index eq 0 && empty leftMenuCd)}">
|
||||
<li class="has-sub opened">
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<li class="has-sub">
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<div class="depth2-title"><c:out value ="${leftMenuList.menuNm}"/></div>
|
||||
<ul class="depth3">
|
||||
</c:when>
|
||||
<%-- 2뎁스 밑에 3뎁스가 없는 경우 Sample --%>
|
||||
<c:otherwise>
|
||||
<c:choose>
|
||||
<c:when test="${leftMenuCd eq leftMenuList.menuCd || (status.index eq 0 && empty leftMenuCd)}">
|
||||
<li class="current">
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<li>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<a class="depth2-title" href="javascript:void(0)" onclick="fn_select_left('<c:out value="${topMenuCd}"/>','<c:out value="${leftMenuList.menuCd}"/>','<c:out value="${leftMenuList.upperMenuCd}"/>', '<c:out value="${leftMenuList.url}"/>')"><c:out value ="${leftMenuList.menuNm}"/></a>
|
||||
</li>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:if>
|
||||
|
||||
<!-- 3뎁스의 메뉴 조회 -->
|
||||
<c:if test="${'3' eq leftMenuList.menuDepth}">
|
||||
<c:choose>
|
||||
<c:when test="${leftMenuCd eq leftMenuList.menuCd || (status.index eq 1 && empty leftMenuCd)}">
|
||||
<li class="current">
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<li>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<a href="javascript:void(0)" onclick="fn_select_left('<c:out value="${topMenuCd}"/>','<c:out value="${leftMenuList.menuCd}"/>','<c:out value="${leftMenuList.upperMenuCd}"/>', '<c:out value="${leftMenuList.url}"/>')"><c:out value ="${leftMenuList.menuNm}"/></a>
|
||||
</li>
|
||||
</c:if>
|
||||
|
||||
<!-- 3뎁스가 끝나고 새로운 2뎁스가 시작되면 태그를 닫아준다-->
|
||||
<c:if test="${'1' eq leftMenuList.nextDepth2}">
|
||||
</ul>
|
||||
</li>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
</ul>
|
||||
</nav>
|
||||
</aside>
|
||||
|
||||
<script>
|
||||
function fn_select_left(topMenuCd, leftMenuCd, upperMenuCd, leftMenuUrl) {
|
||||
document.cookie = "topMenuCd=" + topMenuCd + "; path=/admin";
|
||||
document.cookie = "leftMenuCd=" + leftMenuCd + "; path=/admin";
|
||||
document.cookie = "upperMenuCd=" + upperMenuCd + "; path=/admin";
|
||||
document.cookie = "leftMenuUrl=" + leftMenuUrl + "; path=/admin";
|
||||
document.cookie = "checkMenu=Y" + "; path=/admin";
|
||||
window.location.href = leftMenuUrl;
|
||||
}
|
||||
</script>
|
||||
340
src/main/webapp/WEB-INF/views/comm/crm/Header.jsp
Normal file
340
src/main/webapp/WEB-INF/views/comm/crm/Header.jsp
Normal file
@@ -0,0 +1,340 @@
|
||||
<%@ 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="spring" uri="http://www.springframework.org/tags" %>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
|
||||
<script>
|
||||
// 현재 창의 이름을 'crmWin'로 설정
|
||||
window.onload = function() {
|
||||
if (!window.name) {
|
||||
window.name = 'crmWin';
|
||||
}
|
||||
}
|
||||
|
||||
$(document).ready(function (){
|
||||
// 전화와 왔을 경우
|
||||
if (window.parent !== window) {
|
||||
var sopmalCd = parent.document.ValidForm.sopmalCd.value;
|
||||
// console.log('header > sopmalCd (쇼핑몰 이름, 로고 get) : ' + sopmalCd);
|
||||
// fn_select_sopmal_name(sopmalCd);
|
||||
}
|
||||
/*
|
||||
* crm버튼 선택 이벤트
|
||||
*/
|
||||
$(document).on('click', '#btnCrm', function() {
|
||||
const td = $(this).closest('td');
|
||||
|
||||
const mbrInnb = $(td).find('.mbrInnb').val();
|
||||
const mbrDvCd = $(td).find('.mbrDvCd').val();
|
||||
|
||||
fn_move_crm_cnslt(mbrInnb, mbrDvCd);
|
||||
});
|
||||
|
||||
$("#srchKyword").on('keydown', function (event) {
|
||||
if (event.keyCode === 13) {
|
||||
event.preventDefault();
|
||||
fn_select_crm_mbr_popup(1);
|
||||
}
|
||||
});
|
||||
$("#mainSrchKyword").on('keydown', function (event) {
|
||||
if (event.keyCode === 13) {
|
||||
event.preventDefault();
|
||||
fn_select_crm_mbr_popup(1);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
// 전화 쇼피몽 이름 창 닫기
|
||||
const fn_sopmal_bar_close = function() {
|
||||
$('#callSopmalNm').hide();
|
||||
}
|
||||
|
||||
// 쇼핑몰 이름 조회
|
||||
const fn_select_sopmal_name = function (sopmalCd) {
|
||||
const url = '<c:url value="/crm/main/selectSopmalNm"/>';
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: url,
|
||||
data: {
|
||||
sopmalCd : sopmalCd
|
||||
},
|
||||
success: function (data) {
|
||||
let result = JSON.parse(data.resBody.result);
|
||||
//콜 들어올 시 회색 바 노출
|
||||
let message = result.sopmalNm + ' 전화';
|
||||
$('#sopmalNm').text(message);
|
||||
$('#callSopmalNm').show();
|
||||
//해당 브랜드 로고 header로고에 등록
|
||||
if(!fn_is_empty(result.topFilCours)){
|
||||
const cdnurl = '${cdnurl}';
|
||||
const logoImgSrc = cdnurl + result.topFilCours + '/' + result.topSysFilNm;
|
||||
$("#crmMainLogo").attr("src",logoImgSrc);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// window.addEventListener('message', function(event) {
|
||||
// if(event.data.functionName == 'recordKeyLoad') {
|
||||
// fn_sopmal_bar_close()
|
||||
// }
|
||||
// }, false);
|
||||
|
||||
|
||||
|
||||
|
||||
/******************************************************
|
||||
* CRM 회원 검색 조회
|
||||
*******************************************************/
|
||||
const fn_select_crm_mbr_popup = function () {
|
||||
const url = '<c:url value="/crm/main/selectCrmMbrSrchForm"/>';
|
||||
// 전화와 왔을 경우
|
||||
if (window.parent !== window) {
|
||||
var sopmalCd = parent.document.ValidForm.sopmalCd.value;
|
||||
$("#mainSopmalCd").val(sopmalCd);
|
||||
$("#ctiAt").val("Y");
|
||||
}
|
||||
let data = $('#mainMbrSrchFrom').serialize();
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: url,
|
||||
data: data,
|
||||
success: function (data) {
|
||||
$('#crmSearchPopup').remove();
|
||||
$('#popupDiv').html(data);
|
||||
$('#crmSearchPopup').modal();
|
||||
// $("#searchBtn").click();
|
||||
}
|
||||
});
|
||||
// 하나면 바로 이동
|
||||
// 여러개명 팝업 호출
|
||||
}
|
||||
|
||||
/******************************************************
|
||||
* CRM 회원 검색 조회
|
||||
*******************************************************/
|
||||
const fn_select_crm_mbr_list = function (pageIndex, pageUnit, srchKywordDv, srchKyword) {
|
||||
if (srchKywordDv !== undefined && srchKywordDv !== '') {
|
||||
$('#popSrchKywordDv').val(srchKywordDv);
|
||||
}
|
||||
if (srchKyword !== undefined && srchKyword !== '') {
|
||||
$('#popSrchKyword').val(srchKyword);
|
||||
}
|
||||
|
||||
let dataStr;
|
||||
if (!pageIndex) {
|
||||
$('#mbrPopPageIndex').val(1);
|
||||
} else {
|
||||
$('#mbrPopPageIndex').val(pageIndex);
|
||||
}
|
||||
|
||||
if (!pageUnit) {
|
||||
dataStr = $('#mbrSrchForm').serialize();
|
||||
} else {
|
||||
if ($('#pageUnit').length) {
|
||||
$('#pageUnit').val(pageUnit);
|
||||
dataStr = $('#mbrSrchForm').serialize();
|
||||
} else {
|
||||
dataStr = $('#mbrSrchForm').serialize() + '&pageUnit=' + pageUnit;
|
||||
}
|
||||
}
|
||||
$('#pageIndex').val(pageIndex);
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url: "<c:url value="/crm/main/selectCrmMbrSrch"/>",
|
||||
data: dataStr,
|
||||
success: function (resultHtml) {
|
||||
$('#mbrPageDiv').html(resultHtml);
|
||||
let bool;
|
||||
if(fn_is_empty($("#popSrchKyword"))){
|
||||
bool = isValidPhoneNumber($("#mainSrchKyword").val().replaceAll('-',''));
|
||||
}else{
|
||||
bool = isValidPhoneNumber($("#popSrchKyword").val().replaceAll('-',''));
|
||||
}
|
||||
if (fn_return_parents_totcnt().totalRecordCount == 0 && $("#headerSrch").val() === 'phone' && bool) {//검색조건이 휴대폰번호이고 비회원이면 비회원으로 crm 넘어감
|
||||
fn_move_crm_cnslt('', '', $("#mainSrchKyword").val());
|
||||
} else if (fn_return_parents_totcnt().totalRecordCount == 1) {//회원 1명
|
||||
fn_move_crm_cnslt(fn_return_parents_totcnt().mbrInnb, fn_return_parents_totcnt().mbrDvCd);
|
||||
} else { //회원 다수
|
||||
$(".mbtlnb").each(function () {
|
||||
let mbtlnb = fn_format_mbtlnb($(this).text().trim());
|
||||
mbtlnb = mbtlnb.replace(/(\d{3})-(\d{4})-(\d{4})/, "$1-****-$3");
|
||||
$(this).text(mbtlnb);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
//휴대폰번호 숫자만 허용
|
||||
function isValidPhoneNumber(phoneNumber) {
|
||||
// 한국 전화번호 형식: 010-1234-5678, 02-123-4567 등
|
||||
const phoneRegex = /^[0-9]+$/;
|
||||
return phoneRegex.test(phoneNumber);
|
||||
}
|
||||
|
||||
/******************************************************
|
||||
* 회원 목록 총 개수 반환
|
||||
*******************************************************/
|
||||
const fn_return_parents_totcnt = function () {
|
||||
let totCnt = $('#totCnt').val();
|
||||
|
||||
let mbrInnb = null;
|
||||
let mbrDvCd = null;
|
||||
|
||||
if (totCnt === '1') {
|
||||
mbrInnb = $('input[name="oneMbrInnb"]').val();
|
||||
mbrDvCd = $('input[name="oneMbrDvCD"]').val();
|
||||
}
|
||||
|
||||
const data = {
|
||||
totalRecordCount: totCnt,
|
||||
mbrInnb: mbrInnb,
|
||||
mbrDvCd: mbrDvCd
|
||||
};
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
</script>
|
||||
<header class="header">
|
||||
<div class="header__top">
|
||||
<div class="header-left">
|
||||
<div class="header__logo">
|
||||
<%
|
||||
if(request.getCookies() != null){
|
||||
for(Cookie cookie : request.getCookies()){
|
||||
if("authSopmalCd".equals(cookie.getName())){
|
||||
request.setAttribute("cookieAuthSopmalCd", cookie.getValue());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
%>
|
||||
<c:if test="${not empty crmMenuList.menuList}">
|
||||
<c:forEach var = "crmTopMenuList" items = "${crmMenuList.menuList}" varStatus="status">
|
||||
<c:if test = "${crmTopMenuList.expsrLcDvCd eq '01' && crmTopMenuList.sortOrdr eq '1'}">
|
||||
<a href="<c:out value="${crmTopMenuList.url}"/>" style="background:#eeeeee;margin-right: 18px;">
|
||||
<c:choose>
|
||||
<c:when test = "${not empty siteList && not empty cookieAuthSopmalCd}">
|
||||
<c:forEach var="site" items="${siteList}">
|
||||
<c:if test = "${cookieAuthSopmalCd eq site.sopmalCd}">
|
||||
<img src="<c:out value="${cdnurl}${site.topFilCours}/${site.topSysFilNm}"/>" alt="<c:out value="${site.sopmalNm}"/>">
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<img src="/crm/images/logo_white.png" alt="GC ONE 관리자" id="crmMainLogo">
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<span class="header__logo-title"><c:out value="${crmTopMenuList.menuNm}"/></span>
|
||||
</a>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
</div>
|
||||
<div class="header-searchBar">
|
||||
<form id="mainMbrSrchFrom">
|
||||
<div class="header-searchBar__inner">
|
||||
<div class="header-searchBar__select">
|
||||
<select name="srchKywordDv" title="검색어 구분" id = "headerSrch">
|
||||
<option value="phone" selected>휴대전화</option>
|
||||
<option value="name">이름</option>
|
||||
<option value="id">아이디</option>
|
||||
<option value="email">이메일</option>
|
||||
</select>
|
||||
</div>
|
||||
<input class="header-searchBar__input" id ="mainSrchKyword" type="text" name="srchKyword" title="검색어 입력" placeholder="검색어를 입력하세요" value="<c:out value="${ mainVO.phone }"/>">
|
||||
<input type="hidden" name="sopmalCd" id="mainSopmalCd" value="<c:out value="${ mainVO.sopmalCd }"/>"/>
|
||||
<input type="hidden" name="ctiAt" id="ctiAt"/>
|
||||
<button class="header-searchBar__btn" type="button" id="srchBtn" onclick="fn_select_crm_mbr_popup(); return false;"><span class="visually-hidden">검색</span></button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<ul class="header-crmLink">
|
||||
<c:if test="${not empty crmMenuList.menuList}">
|
||||
<c:forEach var="crmTopMenuList" items="${crmMenuList.menuList}" varStatus="status">
|
||||
<c:if test="${crmTopMenuList.expsrLcDvCd eq '01' && crmTopMenuList.sortOrdr ne '1'}">
|
||||
<c:choose>
|
||||
<c:when test = "${fn:contains(crmTopMenuList.url,'/sopmal/mbr/selectJoinGuidance')}"><%--회원등록은 사용자 url로 이동--%>
|
||||
<li><a onclick="fn_move_sopmal_bbs_list('','','<c:out value="${crmTopMenuList.url}"/>')" target="_blank" style="cursor:pointer"><c:out value="${crmTopMenuList.menuNm}"/></a></li>
|
||||
</c:when>
|
||||
<c:when test = "${fn:contains(crmTopMenuList.url,'/crm/ordr/selectMngrOrdrRegistForm')}"><%--주문등록--%>
|
||||
<li><a onclick="fn_move_mngr_ordr_regist_form('${cnsltVO.mbrInnb}','${cnsltVO.mbrDvCd}','${cnsltVO.mbtlnb}')" target="_blank" style="cursor:pointer"><c:out value="${crmTopMenuList.menuNm}"/></a></li>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<li><a href="<c:out value="${crmTopMenuList.url}"/>" target="_blank"><c:out value="${crmTopMenuList.menuNm}"/></a></li>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="header-right__linkContainer">
|
||||
<a class="btn outline xsm" href="/mngr/main" title="관리자 바로가기" target="adminWin">
|
||||
<i class="icon icon_headerLaptop"></i>
|
||||
관리자 바로가기
|
||||
</a>
|
||||
</div>
|
||||
<div class="header-right__user-info">
|
||||
<c:out value="${userNm}"/>님
|
||||
<div class="userInfo-float">
|
||||
<div class="userInfo-float__top">
|
||||
<i class="icon icon_user-info-big"></i>
|
||||
<div class="userInfo-float__info">
|
||||
<p class="userInfo-float__info-row">
|
||||
${userNm}
|
||||
</p>
|
||||
<p class="userInfo-float__info-row">
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="userInfo-float__bottom">
|
||||
<a href="/mngr/setup/mngr/selectMngrInfoInqireForm" class="btn outline sm">정보수정</a>
|
||||
<a href="/logout" class="btn dark sm">로그아웃</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<button class="header-right__logout" onclick="location.href='/logout'">
|
||||
<i class="icon icon_logout-white"></i>
|
||||
로그아웃
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div id = 'popupDiv'></div>
|
||||
|
||||
<!-- crm 전화 쇼핑몰 이름 -->
|
||||
<div id="callSopmalNm" style="
|
||||
width:100%; height:35px;
|
||||
background-color:#ccc;
|
||||
position:absolute; top:0px;
|
||||
/* display: flex; */
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding-right: 10px;
|
||||
display: none;
|
||||
">
|
||||
<span id="sopmalNm" style="
|
||||
display: inline-block; /* 인라인 블록으로 변경 */
|
||||
line-height: 35px; /* 세로 중앙 정렬 */
|
||||
width: calc(100% - 100px); /* 버튼 공간을 고려한 너비 */
|
||||
text-align: center; /* 텍스트 중앙 정렬 */
|
||||
"></span>
|
||||
|
||||
<button onclick="fn_sopmal_bar_close();" style="
|
||||
position: absolute; /* 절대 위치로 설정 */
|
||||
right: 10px; /* 오른쪽 끝에서 약간 떨어짐 */
|
||||
line-height: 35px; /* 세로 중앙 정렬 */
|
||||
">닫기</button>
|
||||
</div>
|
||||
|
||||
</header>
|
||||
</html>
|
||||
218
src/main/webapp/WEB-INF/views/comm/crm/Include.jsp
Normal file
218
src/main/webapp/WEB-INF/views/comm/crm/Include.jsp
Normal file
@@ -0,0 +1,218 @@
|
||||
<%@ 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"%>
|
||||
|
||||
<%--
|
||||
Class Name : include.jsp
|
||||
Description : CRM CSS 및 JS 공통 include
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-01-25 김혜인 최초 생성
|
||||
--%>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<%--mixed Contents 대응--%>
|
||||
<spring:eval expression="@environment.getProperty('spring.profiles.active')" var="profiles"/>
|
||||
<c:if test="${profiles eq 'stage'}">
|
||||
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
|
||||
</c:if>
|
||||
|
||||
<%-- CSS --%>
|
||||
<link rel="stylesheet" href="<c:url value='/crm/css/style.css'/>">
|
||||
<link rel="stylesheet" href="/mngr/vendor/jquery-nice-select/nice-select.css">
|
||||
<link rel="stylesheet" href="/mngr/vendor/jquery-ui/jquery-ui.min.css">
|
||||
<link rel="stylesheet" href="/mngr/vendor/jquery-ui/jquery-ui.structure.css">
|
||||
<link rel="stylesheet" href="/mngr/vendor/jquery-modal/jquery.modal.min.css">
|
||||
<link rel="stylesheet" href="<c:url value='/mngr/vendor/time-picker/timepicker.css'/>">
|
||||
<link rel="stylesheet" href="<c:url value='/mngr/vendor/dropzone/dropzone.min.css'/>">
|
||||
<link rel="stylesheet" href="<c:url value='/mngr/vendor/jstree/themes/default/style.min.css'/>">
|
||||
<link rel="stylesheet" href="<c:url value='/ckeditor/content.css'/>">
|
||||
|
||||
<%-- CK editor 적용 시 width 설정 --%>
|
||||
<style type="text/css">
|
||||
.ck.ck-editor{
|
||||
width:100%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<%-- JS --%>
|
||||
<script src="/mngr/vendor/jquery-3.7.1.min.js"></script>
|
||||
<script src="/mngr/vendor/jquery-nice-select/jquery.nice-select.min.js"></script>
|
||||
<script src="/mngr/vendor/jquery-ui/jquery-ui.min.js"></script>
|
||||
<script src="/mngr/vendor/jquery-modal/jquery.modal.min.js"></script>
|
||||
<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
|
||||
<script src="<c:url value='/mngr/vendor/tablednd/jquery.tablednd.1.0.5.min.js'/>"></script>
|
||||
<script src="<c:url value='/mngr/vendor/time-picker/timepicker.min.js'/>"></script>
|
||||
<script src="<c:url value='/mngr/vendor/dropzone/dropzone.min.js'/>"></script>
|
||||
<script src="<c:url value='/crm/js/script.js'/>" defer></script>
|
||||
<script src="<c:url value='/js/gcone.js'/>"></script>
|
||||
<script src="<c:url value='/js/fileupload_comm.js'/>"></script>
|
||||
<script src="<c:url value='/ckeditor/ckeditor.js'/>"></script>
|
||||
<script src="<c:url value='/mngr/vendor/chart.js/chart.umd.min.js'/>"></script>
|
||||
<script src="<c:url value='/admin/vendor/jstree/jstree.min.js'/>"></script>
|
||||
|
||||
<%--파비콘--%>
|
||||
<link rel="icon" type="image/png" href="\assets\favicon\gcone.ico">
|
||||
<meta name="robots" content="noindex,nofollow">
|
||||
<title>GC ONE 고객CRM</title>
|
||||
<script type="text/javascript">
|
||||
$.ajaxSetup({
|
||||
beforeSend : function(jqXhr, settins) {
|
||||
jqXhr.setRequestHeader('AJAX',true);
|
||||
$("#overlay").fadeIn();
|
||||
loding(true);
|
||||
},
|
||||
complete : function() {
|
||||
//동시에 여러개의 AJAX가 수행될 경우를 대비하여 delay를 설정
|
||||
setTimeout(function(){
|
||||
$("#overlay").fadeOut();
|
||||
},500);
|
||||
loding(false);
|
||||
},
|
||||
error: function(data){
|
||||
$("#overlay").fadeOut();
|
||||
loding(false);
|
||||
console.log(data);
|
||||
if (data?.responseJSON?.resBody?.result != null) {
|
||||
if (!data.responseJSON.resBody.result) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
if (fn_check_json(data.responseJSON.resBody.result)) {
|
||||
const errorObject = JSON.parse(data.responseJSON.resBody.result);
|
||||
if (!errorObject) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
if (!errorObject.errorMsg) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
alert(errorObject.errorMsg);
|
||||
let isMtched = false;
|
||||
$('.main').eq(0).find('input,select,textarea').each(function () {
|
||||
for (let idx = 0; idx < errorObject.errorFields.length; idx++) {
|
||||
if (errorObject.errorFields[idx].indexOf($(this).attr('name')) >= 0) {
|
||||
isMtched = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (isMtched) {
|
||||
$(this).focus();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (data.responseJSON.resBody.result) {
|
||||
alert(data.responseJSON.resBody.result);
|
||||
} else {
|
||||
alert('<spring:message code="error.ajax"/>');
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
alert('<spring:message code="error.ajax"/>');
|
||||
}
|
||||
}
|
||||
});
|
||||
/**********************************************************************
|
||||
* 회원 crm정보 모달 호출(공통)
|
||||
* 파라미터 설명 {
|
||||
* obj : 호출버튼 객체
|
||||
* mbrInnb : 회원 고유번호
|
||||
* mbrDvCd : 회원 구분코드
|
||||
* modalDiv : 모달 selector
|
||||
* }
|
||||
**********************************************************************/
|
||||
const fn_select_crm_mini_info = function(obj, mbrInnb, mbrDvCd, modalDiv){
|
||||
const element = $(obj); // 클릭된 요소
|
||||
let offset = element.offset();
|
||||
const info = $(obj).attr("data-info");
|
||||
$.ajax({
|
||||
type : 'POST',
|
||||
url : "<c:url value='/crm/mbr/selectMbrCrmInfoPopupForm'/>",
|
||||
data: {
|
||||
mbrDvCd : mbrDvCd,
|
||||
mbrInnb : mbrInnb
|
||||
},
|
||||
success : function(html) {
|
||||
fn_close_modal(info);
|
||||
$(modalDiv).html(html);
|
||||
|
||||
$("#" + info).css({
|
||||
top: offset.top + element.outerHeight(), // 첫 번째 모달의 아래로 설정
|
||||
left: offset.left-150,
|
||||
width: $("#" + info).width() + 50,
|
||||
zIndex: 9998 // 첫 번째 모달보다 위에 표시되도록 설정
|
||||
});
|
||||
$("#" + info).show();
|
||||
}
|
||||
});
|
||||
};
|
||||
/**********************************************************************
|
||||
* CMR 레이어 팝업 닫기 버튼 클릭 이벤트
|
||||
**********************************************************************/
|
||||
$(document).on('click', '.mini-info-content__close', function(e) {
|
||||
e.preventDefault();
|
||||
$(this).closest(".mini-info-content").hide();
|
||||
});
|
||||
|
||||
|
||||
/*****************************************************************
|
||||
* 회원 crm정보 모달 : 상담 등록 이동
|
||||
****************************************************************/
|
||||
const fn_move_crm_cnslt = function(mbrInnb, mbrDvCd, nmbrMbtlnb, customer_record_key) {
|
||||
console.log("param 확인 : ", mbrInnb, mbrDvCd, customer_record_key);
|
||||
|
||||
let form = $('<form></form>');
|
||||
if(fn_is_empty(mbrDvCd)){//비회원
|
||||
$(form).append($('<input/>', {type:'hidden', name:'mbtlnb', value:nmbrMbtlnb}));
|
||||
$(form).append($('<input/>', {type:'hidden', name:'mbrTyCd', value:'02'}));
|
||||
}else{//회원
|
||||
$(form).append($('<input/>', {type: 'hidden', name: 'mbrInnb', value: mbrInnb}));
|
||||
$(form).append($('<input/>', {type: 'hidden', name: 'mbrDvCd', value: mbrDvCd}));
|
||||
}
|
||||
|
||||
//$(form).append($('<input/>', {type:'hidden', name:'customer_record_key', value:customer_record_key}));
|
||||
|
||||
|
||||
if (window.parent !== window) {
|
||||
console.log("부모 프레임이 있습니다.");
|
||||
|
||||
var uRecordKey = parent.document.ValidForm.Customer_CRecFile.value;
|
||||
console.log('uRecordKey : ' + uRecordKey);
|
||||
$(form).append($('<input/>', {type:'hidden', name:'customer_record_key', value:uRecordKey}));
|
||||
|
||||
} else {
|
||||
console.log("부모 프레임이 없습니다.");
|
||||
}
|
||||
|
||||
|
||||
|
||||
$(form).attr('method', 'post');
|
||||
$(form).attr('action', '<c:url value="/crm/cnslt/selectCnsltDtlsForm"/>');
|
||||
|
||||
$(form).appendTo('body');
|
||||
|
||||
$(form).submit();
|
||||
$(form).remove();
|
||||
};
|
||||
|
||||
const loding = function(isShow) {
|
||||
if(isShow){
|
||||
$('.loadingImg').show();
|
||||
}else{
|
||||
$('.loadingImg').hide();
|
||||
}
|
||||
};
|
||||
/*****************************************************************
|
||||
* 로딩이미지
|
||||
****************************************************************/
|
||||
|
||||
</script>
|
||||
<!--로딩영역-->
|
||||
<div class="loadingImg" style="display:none; position: relative; z-index: 1010;">
|
||||
<div class="loding_popup_wrap"><img src="/mngr/images/loding.gif" alt="loading"></div>
|
||||
</div>
|
||||
270
src/main/webapp/WEB-INF/views/comm/crm/Left.jsp
Normal file
270
src/main/webapp/WEB-INF/views/comm/crm/Left.jsp
Normal file
@@ -0,0 +1,270 @@
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
|
||||
<script>
|
||||
$(document).ready(function (){
|
||||
/*발송팝업*/
|
||||
$(document).on("click",".sndng",function(){
|
||||
let url = $(this).val();
|
||||
let actionDv = '';
|
||||
let sndngInfo = '';
|
||||
if(url.indexOf("selectEmailSndngPopupForm") > 0){
|
||||
actionDv = 'email';
|
||||
if($("#mbrTyCd").val() === '01'){//회원일시 이메일 값 set
|
||||
sndngInfo = $("#leftEmail").val();
|
||||
}
|
||||
}else if (url.indexOf("selectMssageSndngPopupForm") > 0){
|
||||
actionDv = 'mssage';
|
||||
if ($("#mbrTyCd").val() === '02') {//회원일시 sms 값 set
|
||||
sndngInfo = $("#leftMbtlnb").val();
|
||||
}
|
||||
}else {
|
||||
actionDv = '';
|
||||
}
|
||||
if(actionDv !== ''){
|
||||
fn_select_sndng_target($(this).val(),actionDv,sndngInfo);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
/* ********************************************************
|
||||
* 회원 탈퇴 함수
|
||||
******************************************************** */
|
||||
const fn_regist_mbr_secsn = function () {
|
||||
let mbrInnb = [];
|
||||
mbrInnb.push($("#secsnMbrInnb").val());
|
||||
let mbrDvCd = [];
|
||||
mbrDvCd.push($("#secsnMbrDvCd").val())
|
||||
let secsnResn = $("input[name='secsnResn']").val();
|
||||
if (confirm('회원 탈퇴하시겠습니까?')) {
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url: '<c:url value="/mngr/mbr/updateMbrSecsnUpdt"/>',
|
||||
data: {mbrarr: mbrInnb, mbrDvCdArr: mbrDvCd, secsnResn: secsnResn},
|
||||
success: function (data) {
|
||||
alert('정상적으로 탈퇴 되었습니다.');
|
||||
location.reload();
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
/*******************************************************
|
||||
* 회원 탈퇴 팝업 호출
|
||||
*******************************************************/
|
||||
const fn_secsn_popup = function (modalDivSltr, modalSlrt) {
|
||||
const data = null;
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: '<c:url value="/crm/mbr/selectMbrSecsnProcsPopupForm"/>',
|
||||
data: $("#leftForm").serializeArray(),
|
||||
success: function (data) {
|
||||
$(modalSlrt).remove();
|
||||
$(modalDivSltr).html(data);
|
||||
$(modalSlrt).modal();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
* 발송 팝업 호출 메소드
|
||||
* url = 호출 url
|
||||
* targetParam = vo에 담을 변수 명
|
||||
* target = 해당 정보에 접근자 이름
|
||||
* IndvdlVal = 단일 회원 클릭시 정보
|
||||
*/
|
||||
const fn_select_sndng_target = (url,actionDv,sndngInfo) => {
|
||||
if(sndngInfo !== ''){
|
||||
let resultArr = [];
|
||||
resultArr.push({mbrInnb: $("#leftMbrInnb").val(), recpntNm: $("#leftMbrNm").val(), sndngInfo: sndngInfo});
|
||||
const sndngCnt = resultArr.length;
|
||||
const mbrInfo = JSON.stringify(resultArr);
|
||||
const encodedMbrInfo = encodeURIComponent(mbrInfo);
|
||||
PopupCenter(url + "?mbrInfo=" + encodedMbrInfo + "&sndngCnt=" + sndngCnt, '팝업', '1280', '840');
|
||||
}else{
|
||||
PopupCenter(url, '팝업', '1280', '840');
|
||||
}
|
||||
}
|
||||
// 메뉴 이동
|
||||
const fn_move_menu = (target) => {
|
||||
let url = $(target).attr("url");
|
||||
console.log(url);
|
||||
if (url) {
|
||||
$("#leftForm").attr("method", "post");
|
||||
$("#leftForm").attr("action", url);
|
||||
$("#leftForm").submit();
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<%--회원인지 비회원인지 set--%>
|
||||
<c:choose>
|
||||
<c:when test = "${cnsltVO.mbrInnb > 0}"><%--회원--%>
|
||||
<c:set var = "mbrTyCd" value = "01"/>
|
||||
</c:when>
|
||||
<c:otherwise><%--비회원 --%>
|
||||
<c:set var = "mbrTyCd" value = "02"/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<aside class="side-nav">
|
||||
<div class="header-fixed">
|
||||
<div class="header-fixed__logo">
|
||||
<c:if test="${not empty crmMenuList.menuList}">
|
||||
<c:forEach var="crmTopMenuList" items="${crmMenuList.menuList}" varStatus="status">
|
||||
<c:if test="${crmTopMenuList.expsrLcDvCd eq '01' && crmTopMenuList.sortOrdr eq '1'}">
|
||||
<a href="<c:out value="${crmTopMenuList.url}"/>">
|
||||
<span id = "sopmalLogo"><img src="/crm/images/logo_default.png" alt="GC ONE 관리자"></span>
|
||||
<span class="header__logo-title"><c:out value="${crmTopMenuList.menuNm}"/></span>
|
||||
</a>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
</div>
|
||||
</div>
|
||||
<nav class="side-nav__inner">
|
||||
<ul class="depth2"><%--반복문--%>
|
||||
<c:if test="${not empty crmMenuList.menuList}">
|
||||
<c:forEach var="crmTopMenuList" items="${crmMenuList.menuList}" varStatus="status">
|
||||
<c:if test="${crmTopMenuList.expsrLcDvCd eq '02'}">
|
||||
<c:choose>
|
||||
<c:when test = "${mbrTyCd eq '01'}"><%--회원 메뉴 --%>
|
||||
<li class="<c:if test="${fn:contains(crmTopMenuList.url,accessUri)}">current</c:if> <c:if test = "${status.index % 3 == 0}">upper-line</c:if>"><%--메뉴 3개씩 나눠서 줄 처리--%>
|
||||
<a class="depth2-title" url="<c:out value="${crmTopMenuList.url}"/>" onclick="fn_move_menu(this);" style="cursor:pointer;" mbr="${mbr}"><%--비회원이면 회원 정보 메뉴이동 x--%>
|
||||
<c:out value="${crmTopMenuList.menuNm}"/>
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(crmTopMenuList.url,'selectMbrActInfoInqire')}"> <%--활동정보--%>
|
||||
<span id="mbrActInfo"></span>
|
||||
</c:when>
|
||||
<c:when test="${fn:contains(crmTopMenuList.url,'selectMbrOrdrListInqireForm')}"> <%--주문--%>
|
||||
<div class="depth2__number-container">
|
||||
<span class="depth2__number comma" id="rcpmnyWaitCnt" title="입금대기 주문건">0</span>
|
||||
<span class="depth2__number comma" id="exportWaitCnt" title="미출고완료 주문건">0</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${(fn:contains(crmTopMenuList.url,'selectMbrRtngudRefndDtlsInqireForm'))}"> <%--반품/환불--%>
|
||||
<div class="depth2__number-container">
|
||||
<span class="depth2__number comma" id="refundCnt" title="미처리 반품/환불건">0</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${fn:contains(crmTopMenuList.url,'selectMlgDtlsForm')}"> <%--마일리지--%>
|
||||
<div class="depth2__number-container">
|
||||
<span class="depth2__number comma" id="totMlg"
|
||||
title="총 마일리지">0</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${fn:contains(crmTopMenuList.url,'selectCashDtlsForm')}"> <%--GC 머니--%>
|
||||
<div class="depth2__number-container">
|
||||
<span class="depth2__number comma" id="cashAmt"
|
||||
title="GC 머니">0</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${fn:contains(crmTopMenuList.url,'selectHoldCouponDtlsForm')}"> <%--쿠폰--%>
|
||||
<div class="depth2__number-container">
|
||||
<span class="depth2__number comma" id="couponCnt" title="사용가능 쿠폰 수">0</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${fn:contains(crmTopMenuList.url,'selectGoodsRvwInqireForm')}"> <%--상품후기--%>
|
||||
<div class="depth2__number-container">
|
||||
<span class="depth2__number comma" id="rvwCnt" title="상품 후기건">0</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${fn:contains(crmTopMenuList.url,'selectGoodsInqryInqireForm')}"> <%--상품문의--%>
|
||||
<div class="depth2__number-container">
|
||||
<span class="depth2__number comma" id="qnaCnt" title="상품 문의건">0</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${fn:contains(crmTopMenuList.url,'selectCnsltDtlsForm')}"> <%--상담--%>
|
||||
<div class="depth2__number-container">
|
||||
<span class="depth2__number comma" id="CnsltWaitCnt" title="미처리 상담건">0</span>
|
||||
</div>
|
||||
</c:when>
|
||||
</c:choose>
|
||||
</a>
|
||||
</li>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:if test = "${ fn:contains(crmTopMenuList.url, 'selectCstmrInfoInqire')
|
||||
|| fn:contains(crmTopMenuList.url,'selectMbrOrdrListInqireForm')
|
||||
|| fn:contains(crmTopMenuList.url,'selectMbrRtngudRefndDtlsInqireForm')
|
||||
|| fn:contains(crmTopMenuList.url,'selectCnsltDtlsForm') }"><%--비회원 허용 메뉴 (주문,반품,상담)--%>
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(crmTopMenuList.url, 'selectCstmrInfoInqire')}">
|
||||
<li>
|
||||
<a class="depth2-title" id="nmbrMbr">
|
||||
${cnsltVO.mbtlnb}
|
||||
</a>
|
||||
</li>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<li class="<c:if test="${fn:contains(crmTopMenuList.url,accessUri)}">current</c:if> <c:if test = "${status.index % 3 == 0}">upper-line</c:if>"><%--메뉴 3개씩 나눠서 줄 처리--%>
|
||||
<a class="depth2-title" url="<c:out value="${crmTopMenuList.url}"/>" onclick="fn_move_menu(this);" style="cursor:pointer;"><%--비회원이면 회원 정보 메뉴이동 x--%>
|
||||
<c:out value="${crmTopMenuList.menuNm}"/>
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(crmTopMenuList.url,'selectMbrOrdrListInqireForm')}"> <%--주문--%>
|
||||
<div class="depth2__number-container">
|
||||
<span class="depth2__number comma" id="rcpmnyWaitCnt" title="입금대기 주문건">0</span>
|
||||
<span class="depth2__number comma" id="exportWaitCnt" title="미출고완료 주문건">0</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${(fn:contains(crmTopMenuList.url,'selectMbrRtngudRefndDtlsInqireForm'))}"> <%--반품/환불--%>
|
||||
<div class="depth2__number-container">
|
||||
<span class="depth2__number comma" id="refundCnt"
|
||||
title="미처리 반품/환불건">0</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${fn:contains(crmTopMenuList.url,'selectCnsltDtlsForm')}"> <%--상담--%>
|
||||
<div class="depth2__number-container">
|
||||
<span class="depth2__number comma" id="CnsltWaitCnt" title="미처리 상담건">0</span>
|
||||
</div>
|
||||
</c:when>
|
||||
</c:choose>
|
||||
</a>
|
||||
</li>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:if>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
</ul>
|
||||
<div class="side-nav__crmBtn-container" id="sndngDiv">
|
||||
<c:if test="${not empty crmMenuList.menuList}">
|
||||
<c:forEach var="crmTopMenuList" items="${crmMenuList.menuList}" varStatus="status">
|
||||
<c:if test="${crmTopMenuList.expsrLcDvCd eq '04'}">
|
||||
<button type="button"
|
||||
class="side-nav__crm-btn light <c:if test = "${fn:contains(crmTopMenuList.url,'ntcn')}">sndng</c:if>" <%--email,sms발송시 해당 팝업 체크--%>
|
||||
value="<c:out value="${crmTopMenuList.url}"/>">
|
||||
<c:out value="${crmTopMenuList.menuNm}"/>
|
||||
</button>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
</div>
|
||||
<c:if test = "${mbrTyCd eq '01'}">
|
||||
<div class="side-nav__crmBtn-container" id="secsnModalDiv">
|
||||
<button class="side-nav__crm-btn dark" type="button" onclick="fn_secsn_popup('#secsnModalDiv', '#delete-account-pop');">회원탈퇴 처리</button>
|
||||
</div>
|
||||
</c:if>
|
||||
</nav>
|
||||
</aside>
|
||||
<form id = "leftForm">
|
||||
<c:choose>
|
||||
<c:when test = "${mbrTyCd eq '01'}">
|
||||
<input type="hidden" id="leftMbrInnb" name="mbrInnb" value="<c:out value="${cnsltVO.mbrInnb}"/>"/>
|
||||
<input type="hidden" id="leftMbrDvCd" name="mbrDvCd" value="<c:out value="${cnsltVO.mbrDvCd}"/>"/>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:if test = "${not empty cnsltVO.ordrInnb}">
|
||||
<input type="hidden" id="leftOrdrInnb" name= "ordrInnb" value = "<c:out value="${cnsltVO.ordrInnb}"/>"/>
|
||||
</c:if>
|
||||
<input type="hidden" id="leftMbrNm" name= "mbrNm" value = "<c:out value="${cnsltVO.mbrNm}"/>"/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<input type="hidden" id="leftMbtlnb" name= "mbtlnb" value = "<c:out value="${cnsltVO.mbtlnb}"/>"/>
|
||||
<input type="hidden" id="leftEmail"/>
|
||||
<input type="hidden" id="mbrTyCd" value="${mbrTyCd}" name="mbrTyCd"/><%--콜 들어올 시 해당 sopmalCd로 이동--%>
|
||||
</form>
|
||||
<!-- 회원 탈퇴 모달 영역 -->
|
||||
<div id="secsnModalDiv">
|
||||
|
||||
</div>
|
||||
148
src/main/webapp/WEB-INF/views/comm/crm/Right.jsp
Normal file
148
src/main/webapp/WEB-INF/views/comm/crm/Right.jsp
Normal file
@@ -0,0 +1,148 @@
|
||||
<%@ 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"%>
|
||||
|
||||
<script>
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
let customer_record_key = '${ cnsltVO.customer_record_key }';
|
||||
let mbrInnb = '${cnsltVO.mbrInnb}';
|
||||
let mbrDvCd = '${cnsltVO.mbrDvCd}';
|
||||
|
||||
fn_regist_crm_cnslt_form(customer_record_key, mbrInnb, mbrDvCd);
|
||||
});
|
||||
|
||||
/******************************************************
|
||||
* CRM 상담 등록 폼
|
||||
*******************************************************/
|
||||
const fn_regist_crm_cnslt_form = function(customer_record_key, mbrInnb, mbrDvCd) {
|
||||
console.log("상담 등록 폼");
|
||||
let dataStr;
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url : "<c:url value="/crm/cnslt/selectCnsltRegistPopupForm"/>",
|
||||
data : {
|
||||
customer_record_key : customer_record_key,
|
||||
mbrInnb : mbrInnb,
|
||||
mbrDvCd : mbrDvCd
|
||||
},
|
||||
success:function(resultHtml) {
|
||||
$('#crmRegistPopupFormDiv').html(resultHtml);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
|
||||
/* ********************************************************
|
||||
* 대분류 선태값에 따른 중분류 생성
|
||||
******************************************************** */
|
||||
const fn_select_lrgeClCd = function(cdValue, target) {
|
||||
console.log("cdValue : ", cdValue);
|
||||
let dataStr;
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url : "<c:url value="/crm/cnslt/selectCnsltRegistPopupFormCmmnCdArray"/>",
|
||||
data : dataStr,
|
||||
success:function(data) {
|
||||
console.log("data : ", data);
|
||||
let jsonData;
|
||||
|
||||
switch (cdValue) {
|
||||
case '01':
|
||||
jsonData = JSON.parse(data.resBody.result).middlClCdList01;
|
||||
break;
|
||||
case '02':
|
||||
jsonData = JSON.parse(data.resBody.result).middlClCdList02;
|
||||
break;
|
||||
case '03':
|
||||
jsonData = JSON.parse(data.resBody.result).middlClCdList03;
|
||||
break;
|
||||
case '04':
|
||||
jsonData = JSON.parse(data.resBody.result).middlClCdList04;
|
||||
break;
|
||||
case '05':
|
||||
jsonData = JSON.parse(data.resBody.result).middlClCdList05;
|
||||
break;
|
||||
case '06':
|
||||
jsonData = JSON.parse(data.resBody.result).middlClCdList06;
|
||||
break;
|
||||
case '07':
|
||||
jsonData = JSON.parse(data.resBody.result).middlClCdList07;
|
||||
break;
|
||||
case '08':
|
||||
jsonData = JSON.parse(data.resBody.result).middlClCdList08;
|
||||
break;
|
||||
}
|
||||
console.log("jsonData : ", jsonData);
|
||||
|
||||
fn_create_selectBox(jsonData, target);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/* ********************************************************
|
||||
* 중분류 셀렉트 생성
|
||||
******************************************************** */
|
||||
function fn_create_selectBox(jsonData, tartget) {
|
||||
$('#middlClCdDiv').empty();
|
||||
console.log("jsonData f : ", jsonData);
|
||||
let trClone = '';
|
||||
trClone = '<select name="middlCl" title="중분류">'
|
||||
+ '<option value="" selected disabled>선택</option>'
|
||||
|
||||
for (let i = 0; i < jsonData.length; i++) {
|
||||
trClone +=' <option value="' + jsonData[i].cd + '">' + jsonData[i].cdNm + '</option>';
|
||||
}
|
||||
|
||||
trClone += '</select>';
|
||||
|
||||
$('#middlClCdDiv').append(trClone);
|
||||
$('#middlClCdDiv > select').niceSelect();
|
||||
}
|
||||
|
||||
|
||||
/* ********************************************************
|
||||
* 상담 등록
|
||||
******************************************************** */
|
||||
const fn_regist = function() {
|
||||
const data = $('#registForm').serialize();
|
||||
console.log("data : ", data);
|
||||
if (confirm('상담을 <spring:message code="confirm.common.insert"/>')) {
|
||||
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: '<c:url value="/crm/cnslt/insertCnsltRegist"/>',
|
||||
data: data,
|
||||
success: function (result) {
|
||||
alert('<spring:message code="success.common.insert"/>');
|
||||
if($("#mbrTyCd").val() !== '02'){ //회원 조회
|
||||
const mbrInnb = '<c:out value="${cnsltVO.mbrInnb}"/>';
|
||||
const mbrDvCd = '<c:out value="${cnsltVO.mbrDvCd}"/>';
|
||||
location.href="/crm/cnslt/selectCnsltDtlsForm?mbrInnb="+mbrInnb+"&mbrDvCd="+mbrDvCd;
|
||||
}else{ //비회원 조회
|
||||
const mbtlnb = '<c:out value="${cnsltVO.mbtlnb}"/>';
|
||||
const mbrTyCd = '<c:out value="${cnsltVO.mbrTyCd}"/>';
|
||||
location.href="/crm/cnslt/selectCnsltDtlsForm?mbtlnb="+mbtlnb+"&mbrTyCd="+mbrTyCd;
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
const fn_only_num = function(target) {
|
||||
//숫자만 허용
|
||||
target.val(target.val().replace(/[^0-9]/g, ''));
|
||||
}
|
||||
</script>
|
||||
|
||||
<div id="crmRegistPopupFormDiv">
|
||||
|
||||
</div>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user