초기소스

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

View File

@@ -0,0 +1,520 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%--
Class Name : ItrntMngrDtlFormR.jsp
Description : 인트라넷 관리자 상세 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-03-18 유재현 최초 생성(퍼블리싱 적용)
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<%-- 공통 include --%>
<%@ include file="/WEB-INF/views/comm/itrnt/Include.jsp"%>
<script>
/**********************************************
* 인트라넷 관리자 목록 화면 이동
***********************************************/
const fn_move_itrnMngrList = function () {
location.href='/itrnt/mngr/selectItrntMngrList';
}
/**********************************************
* 인트라넷 관리자 저장
***********************************************/
const fn_update_itrntMngr = function() {
//비밀번호 입력되었는지 확인
const tentcpnPassword = $('#tentcpnPassword').val();
const tentcpnPasswordChk = $('#tentcpnPasswordChk').val();
const pwdChangeChk = $('#pwdChangeChk:checked')
if(pwdChangeChk < 1 && (tentcpnPassword < 1 || tentcpnPasswordChk < 1)){
alert('비밀번호를 입력해 주세요');
return;
}else if(pwdChangeChk < 1 && (tentcpnPassword !== tentcpnPasswordChk)){
alert('비밀번호가 일치하지 않습니다');
return;
}
//비밀번호 정규식 확인
const pwdChkNoticeResult = $('#pwdChkNoticeRs').val();
if(pwdChangeChk < 1 && (pwdChkNoticeResult !=='Y')){
alert('비밀번호 조합 조건을 확인해 주세요')
return;
}
const url = '<c:url value="/itrnt/mngr/updateItrntMngrUptDtl"/>';
const saveForm = $('#itrntMngrDtlUptForm');
const formData = new FormData();
saveForm.serializeArray().forEach(function(item) {
formData.append(item.name,item.value);
});
if(confirm('관리자를 <spring:message code="confirm.common.insert"/>')) {
$.ajax({
type : 'post',
url : url,
data : formData,
processData: false,
contentType: false,
success : function(result) {
console.log(result.toString())
if (JSON.parse(result.resBody.result).message ==='success') {
alert('<spring:message code="success.common.insert"/>');
location.href='/itrnt/mngr/selectItrntMngrList';
}else if(JSON.parse(result.resBody.result).message ==='pwdNotMatch'){
alert('현재 로그인된 비밀번호가 일치하지 않습니다');
$('#currentPassword').val('');
$('#tentcpnPassword').val('');
$('#tentcpnPasswordChk').val('');
$('#currentPassword').focus();
} else {
alert('<spring:message code="fail.common.insert"/>');
}
}
});
}
}
$(document).ready(function() {
//비밀번호 정규식 확인
const pwdChk = $('#tentcpnPasswordChk').on('propertychange change keyup paste input', function () {
const pwdRegex = /^(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[!#$%&()*+-\/:<>?@\[\\\]^_{|}~]).{10,20}$/;
let tentcpnPassword = $('#tentcpnPassword').val().trim();
let tentcpnPasswordChk = $('#tentcpnPasswordChk').val().trim();
let pwdChkNotice = $('#pwdChkNotice');
let pwdChkNoticeResult = $('#pwdChkNoticeRs')
if (pwdRegex.test(tentcpnPassword) === false
|| pwdRegex.test(tentcpnPasswordChk) === false) {
pwdChkNotice.attr('value', '비밀번호 조합 조건을 확인해 주세요.');
pwdChkNotice.attr('type', 'text').css('visibility', 'visible');
pwdChkNotice.css('pointer-events','none'); //클릭 방지
pwdChkNoticeResult.attr('value', 'N')
} else if(tentcpnPassword === tentcpnPasswordChk){
pwdChkNotice.attr('value', '사용 가능한 비밀번호 입니다')
pwdChkNotice.attr('type', 'text').css('visibility', 'visible')
pwdChkNotice.css('pointer-events','none');
pwdChkNoticeResult.attr('value', 'Y')
}else{
pwdChkNotice.attr('value', '입력하신 비밀번호가 일치하지 않습니다.')
pwdChkNotice.attr('type', 'text').css('visibility', 'visible')
pwdChkNotice.css('pointer-events','none');
pwdChkNoticeResult.attr('value', 'N')
}
});
setTimeout(pwdChk, 3000);
//관리자 권한 표시
//관리자 쓰기 권한
const adminWriteInput = $('.adminWrite');
adminWriteInput.each(function(){
if($(this).children('input').val() !=='Y'){
$(this).siblings('span.stone-7').remove()
$(this).remove()
}
});
//관리자 권한
const adminCategoryInput = $('.adminCategory');
adminCategoryInput.each(function(){
if($(this).children('input').val() !=='Y'){
$(this).remove()
}
});
//관리자 권한 / 쓰기권한 모두 없을 경우 div 삭제
const checkboxContainer = $('.b-checkbox-container');
checkboxContainer.each(function () {
if($(this).find('input').length === 0){
$(this).remove()
}
})
// 비밀번호 변경 창 OnOff
$('#pwdChangeChk').on("click",function(){
if($(this).attr("checked")){
$(".pwdChangeDiv").hide();
$(this).removeAttr('checked', false)
}else{
$(".pwdChangeDiv").show();
$(this).attr('checked', true)
}
});
});
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/itrnt/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/itrnt/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_move_itrnMngrList();"> <spring:message code="button.list"/> </button>
<button type="button" class="btn primary" onclick="fn_update_itrntMngr();"> <spring:message code="button.save"/> </button>
</div>
</div>
<section class="content-section">
<form id="itrntMngrDtlUptForm" name="itrntMngrDtlUptForm">
<div class="table-wrapper">
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 12%;">
<col>
</colgroup>
<tbody>
<c:if test="${not empty resultMap.result}"/>
<input type="hidden" name="strInnb" value="${resultMap.result.strInnb}"/>
<tr>
<th>최근접속일</th>
<td>
<div class="td-inner">
<p><c:out value="${resultMap.result.lastLoginDt}"/></p>
</div>
</td>
<th>등록일</th>
<td>
<div class="td-inner">
<p><c:out value="${resultMap.result.registDt}"/></p>
</div>
</td>
</tr>
<tr>
<th>관리자 구분</th>
<td>
<c:if test="${resultMap.result.reprsntMngrAt == 'Y'}">
<div class="td-inner">
<p><c:out value="대표운영자" default="부운영자"/></p>
</div>
</c:if>
</td>
</tr>
<tr>
<th>관리자 ID</th>
<td>
<div class="td-inner">
<p><c:out value="${resultMap.result.tentcpnId}"/></p>
</div>
</td>
</tr>
<tr>
<th>비밀번호
<div class="b-checkbox-container">
<label class="b-checkbox checkbox">
<input type="checkbox" id="pwdChangeChk">
<span class="check"></span>
<span class="control-label"> 변경</span>
</label>
</div>
</th>
<td colspan="3">
<div class="td-inner">
<div class="table-wrapper w-100 pwdChangeDiv" style="width: 800px; display: none">
<table class="table transparent">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 20%;">
<col>
</colgroup>
<tbody>
<tr>
<th class="text-left">현재 비밀번호</th>
<td class="w-25">
<div class="td-inner">
<input type="password" class="input-text" value="" id="currentPassword" name="currentPassword" autocomplete="new-password"
title="해당 인풋에 대한 설명">
</div>
</td>
</tr>
<tr>
<th class="text-left">비밀번호 변경</th>
<td class="w-25">
<div class="td-inner">
<input type="password" class="input-text" value="" id="tentcpnPassword" name="tentcpnPassword" autocomplete="new-password"
title="해당 인풋에 대한 설명">
<p class="fyi fs-13 gray-7 ml-4">10-20자, 영문 대소문자
또는
숫자,
특수문자 중 2가지 이상 조합</p>
</div>
</td>
</tr>
<tr>
<th class="text-left">비밀번호 변경 확인</th>
<td class="w-25">
<div class="td-inner">
<input type="password" class="input-text" value="" id="tentcpnPasswordChk" autocomplete="new-password"
title="해당 인풋에 대한 설명">
<p class="fyi fs-13 gray-7 ml-4">사용가능 특수문자 : ! #
$ %
&amp; ( ) * + - / : &lt; =
&gt; ? @ [ \ ] ^ _ { | } ~</p>
<input type="hidden" class="fyi fs-13 gray-7 ml-4 w-full" id="pwdChkNotice" tabindex="-1" readonly />
<input type="hidden" id="pwdChkNoticeRs" />
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</td>
</tr>
<tr>
<th>관리자 명</th>
<td>
<div class="td-inner">
<input class="input-text md" type="text" title="해당 인풋에 대한 설명" name="tentcpnNm" value="<c:out value="${resultMap.result.tentcpnNm}"/>" />
</div>
</td>
</tr>
</tbody>
</table>
</div>
</form>
</section>
<section class="content-section">
<div class="form-control-container mb-10">
<div class="left">
<h3 class="delivery-info__title">
관리자 권한
</h3>
</div>
<div class="center">
</div>
</div>
<div class="table-wrapper">
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 12%;">
<col>
</colgroup>
<tbody>
<c:choose>
<c:when test="${ not empty resultMap.result.mngrAuthor}">
<tr>
<th>매출분석</th>
<td>
<div class="td-inner">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox adminCategory">
<input type="hidden" id="daily_revenue" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.dailyRevenue}"/>">
<span class="check"></span>
<span class="control-label">일별매출</span>
</label>
<label class="b-checkbox checkbox adminCategory">
<input type="hidden" id="weekly_revenue" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.weeklyRevenue}"/>">
<span class="check"></span>
<span class="control-label">주별매출</span>
</label>
<label class="b-checkbox checkbox adminCategory">
<input type="hidden" id="monthly_revenue" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.monthlyRevenue}"/>">
<span class="check"></span>
<span class="control-label">월별매출</span>
</label>
</div>
</div>
</td>
</tr>
<tr>
<th>판매분석</th>
<td>
<div class="td-inner">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox adminCategory">
<input type="hidden" id="daily_static" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.dailyStatic}"/>">
<span class="check"></span>
<span class="control-label">금일 판매내역</span>
</label>
<label class="b-checkbox checkbox adminCategory">
<input type="hidden" id="weekly_static" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.weeklyStatic}"/>">
<span class="check"></span>
<span class="control-label">주간 판매내역</span>
</label>
<label class="b-checkbox checkbox adminCategory">
<input type="hidden" id="monthly_static" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.monthlyStatic}"/>">
<span class="check"></span>
<span class="control-label">월간 판매내역</span>
</label>
<label class="b-checkbox checkbox adminCategory">
<input type="hidden" id="revenue_static" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.revenueStatic}"/>">
<span class="check"></span>
<span class="control-label">판매 상품 순위</span>
</label>
</div>
</div>
</td>
</tr>
<tr>
<th>마이페이지</th>
<td>
<div class="td-inner">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox adminCategory">
<input type="hidden" id="catalog" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.catalog}"/>">
<span class="check"></span>
<span class="control-label">회원리스트</span>
</label>
<label class="b-checkbox checkbox adminCategory">
<input type="hidden" id="member_sms" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.memberSns}"/>">
<span class="check"></span>
<span class="control-label">SMS발송관리</span>
</label>
</div>
</div>
</td>
</tr>
<tr>
<th>관리자</th>
<td>
<div class="td-inner vertical gap-15">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox adminCategory">
<input type="hidden" id="gs_seller_notice" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.gsSellerNotice}"/>">
<span class="check"></span>
<span class="control-label">공지사항</span>
</label>
<span class="stone-7">→</span>
<label class="b-checkbox checkbox adminWrite" disabled>
<input disabled type="hidden" id="gs_seller_notice_act" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.gsSellerNoticeAct}"/>">
<span class="check"></span>
<span class="control-label">쓰기/삭제</span>
</label>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox adminCategory">
<input type="hidden" id="shop_education" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.shopEducation}"/>">
<span class="check"></span>
<span class="control-label">교육자료</span>
</label>
<span class="stone-7">→</span>
<label class="b-checkbox checkbox adminWrite" disabled>
<input disabled type="hidden" id="shop_education_act" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.shopEducationAct}"/>">
<span class="check"></span>
<span class="control-label">쓰기/삭제</span>
</label>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox adminCategory">
<input type="hidden" id="member_edit_req" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.memberEditReq}"/>">
<span class="check"></span>
<span class="control-label">회원정보수정요청</span>
</label>
<span class="stone-7">→</span>
<label class="b-checkbox checkbox adminWrite" disabled>
<input disabled type="hidden" id="member_edit_req_act" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.memberEditReqAct}"/>">
<span class="check"></span>
<span class="control-label">쓰기/삭제</span>
</label>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox adminCategory">
<input type="hidden" id="point_edit_req" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.pointEditReq}"/>">
<span class="check"></span>
<span class="control-label">마일리지(포인트)수정요청</span>
</label>
<span class="stone-7">→</span>
<label class="b-checkbox checkbox adminWrite" disabled>
<input disabled type="hidden" id="point_edit_req_act" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.pointEditReqAct}"/>">
<span class="check"></span>
<span class="control-label">쓰기/삭제</span>
</label>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox adminCategory">
<input type="hidden" id="logistics_req" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.logisticsReq}"/>">
<span class="check"></span>
<span class="control-label">물류관련요청</span>
</label>
<span class="stone-7">→</span>
<label class="b-checkbox checkbox adminWrite" disabled>
<input disabled type="hidden" id="logistics_req_act" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.logisticsReqAct}"/>">
<span class="check"></span>
<span class="control-label">쓰기/삭제</span>
</label>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox adminCategory">
<input type="hidden" id="shop_edit_req" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.shopEditReq}"/>">
<span class="check"></span>
<span class="control-label">매장정보변경</span>
</label>
<span class="stone-7">→</span>
<label class="b-checkbox checkbox adminWrite" disabled>
<input disabled type="hidden" id="shop_edit_req_act" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.shopEditReqAct}"/>">
<span class="check"></span>
<span class="control-label">쓰기/삭제</span>
</label>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox adminCategory">
<input type="hidden" id="family_qna_edit_req" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.familyQnaEditReq}"/>">
<span class="check"></span>
<span class="control-label">가맹점 Q&A</span>
</label>
<span class="stone-7">→</span>
<label class="b-checkbox checkbox adminWrite" disabled>
<input disabled type="hidden" id="family_qna_edit_req_act" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.familyQnaEditReqAct}"/>">
<span class="check"></span>
<span class="control-label">쓰기/삭제</span>
</label>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox adminCategory">
<input type="hidden" id="admin_list" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.adminList}"/>">
<span class="check"></span>
<span class="control-label">관리자 리스트</span>
</label>
</div>
</div>
</td>
</tr>
</c:when>
<c:otherwise>
<tr>
<td class="row-no-data" colspan="8">조회된 관리자 권한이 없습니다.</td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</section>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
</body>
</html>

View File

@@ -0,0 +1,540 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%--
Class Name : ItrntMngrFormR.jsp
Description : 인트라넷 관리자 등록 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-03-18 유재현 최초 생성(퍼블리싱 적용)
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<%-- 공통 include --%>
<%@ include file="/WEB-INF/views/comm/itrnt/Include.jsp"%>
<script>
/* ********************************************************
* 시작 화면 조작 함수
******************************************************** */
$(document).ready(function(){
let urlParams = new URLSearchParams(window.location.search);
});
/**********************************************
* 인트라넷 관리자 목록 화면 이동
***********************************************/
const fn_move_itrnMngrList = function () {
location.href='/itrnt/mngr/selectItrntMngrList';
}
/**********************************************
* 등록
***********************************************/
const fn_regist_itrntMngr = function() {
//비밀번호 입력되었는지 확인
const tentcpnPassword = $('#tentcpnPassword');
const tentcpnPasswordChk = $('#tentcpnPasswordChk');
if(tentcpnPassword.val() < 1 || tentcpnPasswordChk.val() < 1){
alert('비밀번호를 입력해 주세요');
tentcpnPassword.val('');
tentcpnPasswordChk.val('');
tentcpnPassword.focus();
return;
}else if(tentcpnPassword.val() !== tentcpnPasswordChk.val()){
alert('비밀번호가 일치하지 않습니다');
tentcpnPassword.val('');
tentcpnPasswordChk.val('');
tentcpnPassword.focus();
return;
}
//비밀번호 정규식 확인
const pwdChkNoticeResult = $('#pwdChkNoticeRs').val();
if(pwdChkNoticeResult !=='Y'){
alert('비밀번호 조합 조건을 확인해 주세요')
tentcpnPassword.val('');
tentcpnPasswordChk.val('');
tentcpnPassword.focus();
return;
}
//아이디 중복 확인 하였는지 확인
let idChk = $('#idChk').val();
if(idChk !=='Y'){
alert('아이디 중복 확인을 해주세요');
return;
}
const url = '<c:url value="/itrnt/mngr/insertItrntMngr"/>';
const saveForm = $('#itrntMngrRegFrom');
let formData = new FormData();
saveForm.serializeArray().forEach(function(item) {
formData.append(item.name,item.value);
});
//관리자 권한 배열에 담기
let mngrAuthor = '';
$('input:checkbox[name=mngrAuthor]').each(function(index, item){
if ($(item).is(':checked')) {
mngrAuthor += $(item).attr("id") +'='+ 'Y' + '||';
} else {
mngrAuthor += $(item).attr("id") +'='+ 'N' + '||';
}
});
const manager_act = $('#manager_act');
mngrAuthor += manager_act.attr("id") +'='+ manager_act.val() + '||';
formData.append("mngrAuthor",mngrAuthor);
if(confirm('관리자를 <spring:message code="confirm.common.insert"/>')) {
$.ajax({
type : 'post',
url : url,
data : formData,
processData: false,
contentType: false,
success : function(result) {
if (JSON.parse(result.resBody.result).message ==='success') {
alert('<spring:message code="success.common.insert"/>');
location.href='/itrnt/mngr/selectItrntMngrList';
} else {
alert('<spring:message code="fail.common.insert"/>');
}
}
});
}
}
/**********************************************
* 아이디 중복 확인
***********************************************/
const fm_idchk_itrntMngr = function (){
const tentcpnId = $('#tentcpnId');
const idRegex = /^[a-zA-Z][a-zA-Z0-9]{4,16}$/;
if(!idRegex.test(tentcpnId.val().trim())){
alert("아이디 입력 조건을 확인하여 다시 입력 해주세요")
tentcpnId.val('');
tentcpnId.focus();
return;
}
const url = '<c:url value="/itrnt/mngr/selectItrntMngrIdChk"/>';
$.ajax({
type : 'post',
url : url,
data : {'tentcpnId' : tentcpnId.val().trim()},
success : function(result) {
if (JSON.parse(result.resBody.result).message ==='notExist') {
alert(tentcpnId.val().trim() + '은(는) 사용 가능합니다.');
$('#idChk').attr('value', 'Y');
} else {
alert(tentcpnId.val().trim() + '은(는) 이미 사용중입니다.');
$('#idChk').attr('value', 'N');
}
}
});
}
$(document).ready(function() {
// 관리자 권한 전체 체크
let adminAuthCheckAll = $('#adminAuthCheckAll');
let adminCategory = $('.adminCategory');
let adminCategoryCheck = $('.adminCategory > input');
let adminWrite = $('.adminWrite');
let adminWriteCheck = $('.adminWrite > input');
adminAuthCheckAll.click( function () {
if ($(this).hasClass('checked')) {
adminCategoryCheck.prop('checked', false);
$(this).removeClass('checked');
isCategoryChecked();
} else {
adminCategoryCheck.prop('checked', true);
$(this).addClass('checked');
isCategoryChecked();
}
});
adminCategoryCheck.click(function () {
isCategoryChecked();
});
function isCategoryChecked() {
$('.adminCategory').each(function () {
if ($(this).find('input').prop('checked')) {
$(this).closest('.b-checkbox-container').find(adminWrite).removeAttr('disabled');
$(this).closest('.b-checkbox-container').find(adminWriteCheck).removeAttr('disabled');
$(this).closest('.b-checkbox-container').find(adminWriteCheck).prop('checked', true);
} else {
$(this).closest('.b-checkbox-container').find(adminWrite).attr('disabled', 'disabled');
$(this).closest('.b-checkbox-container').find(adminWriteCheck).attr('disabled', 'disabled');
$(this).closest('.b-checkbox-container').find(adminWriteCheck).prop('checked', false);
}
});
}
//비밀번호 정규식 확인
const pwdChk = $('#tentcpnPasswordChk').on('propertychange change keyup paste input', function () {
const pwdRegex = /^(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[!#$%&()*+-\/:<>?@\[\\\]^_{|}~]).{10,20}$/;
let tentcpnPassword = $('#tentcpnPassword').val().trim();
let tentcpnPasswordChk = $('#tentcpnPasswordChk').val().trim();
let pwdChkNotice = $('#pwdChkNotice');
let pwdChkNoticeResult = $('#pwdChkNoticeRs')
if (pwdRegex.test(tentcpnPassword) === false
|| pwdRegex.test(tentcpnPasswordChk) === false) {
pwdChkNotice.attr('value', '비밀번호 조합 조건을 확인해 주세요.');
pwdChkNotice.attr('type', 'text').css('visibility', 'visible');
pwdChkNotice.css('pointer-events','none'); //클릭 방지
pwdChkNoticeResult.attr('value', 'N')
} else if(tentcpnPassword === tentcpnPasswordChk){
pwdChkNotice.attr('value', '사용 가능한 비밀번호 입니다')
pwdChkNotice.attr('type', 'text').css('visibility', 'visible')
pwdChkNotice.css('pointer-events','none');
pwdChkNoticeResult.attr('value', 'Y')
}else{
pwdChkNotice.attr('value', '입력하신 비밀번호가 일치하지 않습니다.')
pwdChkNotice.attr('type', 'text').css('visibility', 'visible')
pwdChkNotice.css('pointer-events','none');
pwdChkNoticeResult.attr('value', 'N')
}
});
setTimeout(pwdChk, 3000);
});
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/itrnt/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/itrnt/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_move_itrnMngrList();"> <spring:message code="button.list"/> </button>
<button class="btn primary" onclick="fn_regist_itrntMngr();" > <spring:message code="button.save"/> </button>
</div>
</div>
<section class="content-section">
<form id="itrntMngrRegFrom" name="itrntMngrRegFrom">
<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">
<input class="input-text" type="text" title="해당 인풋에 대한 설명" id="tentcpnId" name="tentcpnId" autocomplete="username">
<input type="hidden" title="해당 인풋에 대한 설명" id="idChk">
<button class="btn sm gray" onclick="fm_idchk_itrntMngr(); return false;"><spring:message code="button.duplication"/> </button>
<p class="fyi fs-13 gray-7 ml-4">4-16자, 첫 글자 영문, 영문 대소문자 또는 숫자</p>
</div>
</td>
</tr>
<tr>
<th>비밀번호</th>
<td>
<div class="td-inner">
<div class="table-wrapper" style="width: 800px;">
<table class="table transparent">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 14%;">
<col>
</colgroup>
<tbody>
<tr>
<th class="text-right">비밀번호</th>
<td>
<div class="td-inner">
<input type="password" class="input-text" value="" id="tentcpnPassword" name="tentcpnPassword" autocomplete="new-password"
title="해당 인풋에 대한 설명">
<p class="fyi fs-13 gray-7 ml-4">10-20자, 영문 대소문자
또는
숫자,
특수문자 중 2가지 이상 조합</p>
</div>
</td>
</tr>
<tr>
<th class="text-right">비밀번호 확인</th>
<td>
<div class="td-inner">
<input type="password" class="input-text" value="" id="tentcpnPasswordChk" autocomplete="new-password"
title="해당 인풋에 대한 설명">
<p class="fyi fs-13 gray-7 ml-4">사용가능 특수문자 : ! #
$ %
&amp; ( ) * + - / : &lt; =
&gt; ? @ [ \ ] ^ _ { | } ~</p>
</div>
<input type="hidden" class="fyi fs-13 gray-7 ml-4 w-full" id="pwdChkNotice" tabindex="-1" readonly />
<input type="hidden" id="pwdChkNoticeRs" />
</td>
</tr>
</tbody>
</table>
</div>
</div>
</td>
</tr>
<tr>
<th>관리자 명</th>
<td>
<div class="td-inner">
<input class="input-text md" type="text" title="해당 인풋에 대한 설명" name="tentcpnNm">
</div>
</td>
</tr>
</tbody>
</table>
</div>
</form>
</section>
<section class="content-section">
<div class="form-control-container mb-10">
<div class="left">
<h3 class="delivery-info__title">
관리자 권한
</h3>
</div>
<div class="center">
</div>
<div class="right">
<button id="adminAuthCheckAll" class="btn sm primary outline">전체체크</button>
</div>
</div>
<div class="table-wrapper">
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 12%;">
<col>
</colgroup>
<tbody>
<tr>
<th>매출분석</th>
<td>
<input type="hidden" id="manager_act" name="mngrAuthor" value="<c:out value="${resultMap.result.reprsntMngrAt}" default="N"/>" >
<div class="td-inner">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="daily_revenue" name="mngrAuthor" value="Y">
<span class="check"></span>
<span class="control-label">일별매출</span>
</label>
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="weekly_revenue" name="mngrAuthor" value="Y">
<span class="check"></span>
<span class="control-label">주별매출</span>
</label>
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="monthly_revenue" name="mngrAuthor" value="Y">
<span class="check"></span>
<span class="control-label">월별매출</span>
</label>
</div>
</div>
</td>
</tr>
<tr>
<th>판매분석</th>
<td>
<div class="td-inner">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="daily_static" name="mngrAuthor" value="Y">
<span class="check"></span>
<span class="control-label">금일 판매내역</span>
</label>
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="weekly_static" name="mngrAuthor" value="Y">
<span class="check"></span>
<span class="control-label">주간 판매내역</span>
</label>
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="monthly_static" name="mngrAuthor" value="Y">
<span class="check"></span>
<span class="control-label">월간 판매내역</span>
</label>
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="revenue_static" name="mngrAuthor" value="Y">
<span class="check"></span>
<span class="control-label">판매 상품 순위</span>
</label>
</div>
</div>
</td>
</tr>
<tr>
<th>마이페이지</th>
<td>
<div class="td-inner">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="catalog" name="mngrAuthor" value="Y">
<span class="check"></span>
<span class="control-label">회원리스트</span>
</label>
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="member_sms" name="mngrAuthor" value="Y">
<span class="check"></span>
<span class="control-label">SMS발송관리</span>
</label>
</div>
</div>
</td>
</tr>
<tr>
<th>관리자</th>
<td>
<div class="td-inner vertical gap-15">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="gs_seller_notice" name="mngrAuthor" value="Y">
<span class="check"></span>
<span class="control-label">공지사항</span>
</label>
<span class="stone-7">→</span>
<label class="b-checkbox checkbox adminWrite" disabled>
<input disabled type="checkbox" id="gs_seller_notice_act" name="mngrAuthor" value="Y">
<span class="check"></span>
<span class="control-label">쓰기/삭제</span>
</label>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="shop_education" name="mngrAuthor" value="Y">
<span class="check"></span>
<span class="control-label">교육자료</span>
</label>
<span class="stone-7">→</span>
<label class="b-checkbox checkbox adminWrite" disabled>
<input disabled type="checkbox" id="shop_education_act" name="mngrAuthor" value="Y">
<span class="check"></span>
<span class="control-label">쓰기/삭제</span>
</label>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="member_edit_req" name="mngrAuthor" value="Y">
<span class="check"></span>
<span class="control-label">회원정보수정요청</span>
</label>
<span class="stone-7">→</span>
<label class="b-checkbox checkbox adminWrite" disabled>
<input disabled type="checkbox" id="member_edit_req_act" name="mngrAuthor" value="Y">
<span class="check"></span>
<span class="control-label">쓰기/삭제</span>
</label>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="point_edit_req" name="mngrAuthor" value="Y">
<span class="check"></span>
<span class="control-label">마일리지(포인트)수정요청</span>
</label>
<span class="stone-7">→</span>
<label class="b-checkbox checkbox adminWrite" disabled>
<input disabled type="checkbox" id="point_edit_req_act" name="mngrAuthor" value="Y">
<span class="check"></span>
<span class="control-label">쓰기/삭제</span>
</label>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="logistics_req" name="mngrAuthor" value="Y">
<span class="check"></span>
<span class="control-label">물류관련요청</span>
</label>
<span class="stone-7">→</span>
<label class="b-checkbox checkbox adminWrite" disabled>
<input disabled type="checkbox" id="logistics_req_act" name="mngrAuthor" value="Y">
<span class="check"></span>
<span class="control-label">쓰기/삭제</span>
</label>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="shop_edit_req" name="mngrAuthor" value="Y">
<span class="check"></span>
<span class="control-label">매장정보변경</span>
</label>
<span class="stone-7">→</span>
<label class="b-checkbox checkbox adminWrite" disabled>
<input disabled type="checkbox" id="shop_edit_req_act" name="mngrAuthor" value="Y">
<span class="check"></span>
<span class="control-label">쓰기/삭제</span>
</label>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="family_qna_edit_req" name="mngrAuthor" value="Y">
<span class="check"></span>
<span class="control-label">가맹점 Q&A</span>
</label>
<span class="stone-7">→</span>
<label class="b-checkbox checkbox adminWrite" disabled>
<input disabled type="checkbox" id="family_qna_edit_req_act" name="mngrAuthor" value="Y">
<span class="check"></span>
<span class="control-label">쓰기/삭제</span>
</label>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="admin_list" name="mngrAuthor" value="Y">
<span class="check"></span>
<span class="control-label">관리자 리스트</span>
</label>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
</body>
</html>

View File

@@ -0,0 +1,228 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%--
Class Name : ItrntMngrListR.jsp
Description : 인트라넷 관리자 목록 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-03-18 유재현 최초 생성(퍼블리싱 적용)
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<%-- 공통 include --%>
<%@ include file="/WEB-INF/views/comm/itrnt/Include.jsp"%>
<script>
/**********************************************
* 인트라넷 관리자 등록 화면 이동
***********************************************/
const fn_move_itrnMngrRegist = function () {
location.href='/itrnt/mngr/selectItrntMngrForm';
}
/**********************************************
* 인트라넷 관리자 상세 화면 이동
***********************************************/
const fn_move_ItrntMngrDtl = function (strInnb) {
location.href='/itrnt/mngr/selectItrntMngrDtlForm?strInnb='+strInnb;
}
/**********************************************
* 인트라넷 관리자 목록 재 조회(행 재설정시)
***********************************************/
const fm_chk_select = function () {
const recordSelector = $('#recordSelector > option:selected').val();
$('#recordCountPerPage').attr('value', recordSelector);
const url = '<c:url value="/itrnt/mngr/selectItrntMngrList"/>';
const form = $('#ItrntMngrListReload');
form.attr('action', url);
form.attr('method', 'post');
form.submit();
}
/**********************************************
* 인트라넷 관리자 수정화면 조회
***********************************************/
const fm_move_ItrntMngrTentcpnDtl = function (strInnb) {
location.href='/itrnt/mngr/selectItrntMngrTentcpnDtlForm?strInnb='+strInnb;
}
/**********************************************
* 인트라넷 관리자 삭제
***********************************************/
const fm_del_ItrntMngr = function () {
let strInnbArr = '';
const length = $('.adminDeleteChk:checked').length-1;
if(length < 0){
alert("삭제할 관리자를 선택해주세요")
return false;
}
$('.adminDeleteChk:checked').each(function (index) {
if(length===index){
strInnbArr += this.value
}else{
strInnbArr += this.value +','
}
})
const url = '<c:url value="/itrnt/mngr/deleteItrntMngrDel"/>';
if(confirm('관리자를 <spring:message code="confirm.common.delete"/>')) {
$.ajax({
type : 'post',
url : url,
data : {'strInnb': strInnbArr},
success : function(result) {
if (JSON.parse(result.resBody.result).message ==='success') {
alert('<spring:message code="success.common.delete"/>');
location.reload()
} else {
alert('<spring:message code="fail.common.delete"/>');
}
}
});
}
}
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/itrnt/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/itrnt/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 dark" onclick="fm_del_ItrntMngr();"> 삭제 </button>
<button class="btn primary" onclick="fn_move_itrnMngrRegist();"> 관리자 등록 </button>
</div>
</div>
<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.paramVO.paginationInfo.totalRecordCount}" default="0"/></strong>건</span>
</div>
</div>
<div class="center">
</div>
<form name="ItrntMngrListReload" id="ItrntMngrListReload">
<div class="right">
<div class="select-box">
<select id="recordSelector" onchange="fm_chk_select();" title="해당 셀렉트에 대한 설명">
<option value="10">10개씩</option>
<option value="50">50개씩</option>
<option value="100">100개씩</option>
<option value="200">200개씩</option>
</select>
<input type="hidden" name="recordCountPerPage" id="recordCountPerPage">
</div>
</div>
</form>
</div>
<hr class="spacing">
<div class="table-wrapper">
<table class="table vertical">
<caption>해당 테이블에 대한 설명</caption>
<!-- 각 열 width 설정 -->
<colgroup>
<col style="width: 80px;">
<col style="width: 14%">
<col style="width: auto;">
<col style="width: 14%;">
<col style="width: 14%;">
<col style="width: 14%;">
<col style="width: 10%;">
</colgroup>
<thead>
<c:choose>
<c:when test="${ not empty resultMap.resultList }">
<c:forEach var="list" items="${resultMap.resultList }" varStatus="status">
<tr>
<th>
<label class="b-checkbox checkbox is-medium check-all">
<input type="checkbox" >
<span class="check"></span>
</label>
</th>
<th>관리자 구분</th>
<th>관리자 ID (접속허용 IP설정)</th>
<th>관리자명</th>
<th>최근 접속일</th>
<th>등록일</th>
<th>관리</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<label class="b-checkbox checkbox is-medium">
<input type="checkbox" class="adminDeleteChk" value="<c:out value="${list.strInnb}"/>" >
<span class="check"></span>
</label>
</td>
<td>
<c:if test="${list.reprsntMngrAt == 'Y' }">
<p><c:out value="대표관리자" default="부운영자"/></p>
</c:if>
</td>
<td>
<button type="button" onclick="fn_move_ItrntMngrDtl(${list.strInnb});" class="blue-6"><c:out value="${list.tentcpnId}"/></button>
(<c:out value="${list.accesLmttIp}" default="미설정"/>)
</td>
<td>
<c:out value="${list.tentcpnNm}"/>
</td>
<td>
<c:out value="${list.lastLoginDt}"/>
</td>
<td>
<c:out value="${list.registDt}"/>
</td>
<td>
<div class="manage-btn-container">
<button class="btn xsm primary outline" onclick="fm_move_ItrntMngrTentcpnDtl(${list.strInnb});">수정</button>
</div>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td class="row-no-data" colspan="8">조회된 데이터가 없습니다.</td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</section>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
</body>
</html>

View File

@@ -0,0 +1,582 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%--
Class Name : ItrntMngrTentcpnDtlFormR.jsp
Description : 인트라넷 관리자 입점사 상세 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-03-18 유재현 최초 생성(퍼블리싱 적용)
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<%-- 공통 include --%>
<%@ include file="/WEB-INF/views/comm/itrnt/Include.jsp"%>
<script>
/* ********************************************************
* 시작 화면 조작 함수
******************************************************** */
$(document).ready(function(){
let urlParams = new URLSearchParams(window.location.search);
});
/**********************************************
* 인트라넷 관리자 목록 화면 이동
***********************************************/
const fn_move_itrnMngrList = function () {
location.href='/itrnt/mngr/selectItrntMngrList';
}
/**********************************************
* 관리자 입점사 수정
***********************************************/
const fn_update_itrntMngrTentcpn = function() {
//비밀번호 입력되었는지 확인
const tentcpnPassword = $('#tentcpnPassword').val();
const tentcpnPasswordChk = $('#tentcpnPasswordChk').val();
const pwdChangeChk = $('#pwdChangeChk:checked')
if(pwdChangeChk < 1 && (tentcpnPassword < 1 || tentcpnPasswordChk < 1)){
alert('비밀번호를 입력해 주세요');
return;
}else if(pwdChangeChk < 1 && (tentcpnPassword !== tentcpnPasswordChk)){
alert('비밀번호가 일치하지 않습니다');
return;
}
//비밀번호 정규식 확인
const pwdChkNoticeResult = $('#pwdChkNoticeRs').val();
if(pwdChangeChk < 1 && (pwdChkNoticeResult !=='Y')){
alert('비밀번호 조합 조건을 확인해 주세요')
return;
}
const url = '<c:url value="/itrnt/mngr/updateItrntMngrTentcpnDtlForm"/>';
const saveForm = $('#itrntMngrTentcpnDtlUptFrom');
let formData = new FormData();
saveForm.serializeArray().forEach(function(item) {
formData.append(item.name,item.value);
});
//관리자 권한 배열에 담기
let mngrAuthor = '';
$('input:checkbox[name=mngrAuthor]').each(function(index, item){
if ($(item).is(':checked')) {
mngrAuthor += $(item).attr("id") +'='+ 'Y' + '||';
} else {
mngrAuthor += $(item).attr("id") +'='+ 'N' + '||';
}
});
const manager_act = $('#manager_act');
mngrAuthor += manager_act.attr("id") +'='+ manager_act.val() + '||';
formData.append("mngrAuthor",mngrAuthor);
if(confirm('관리자를 <spring:message code="confirm.common.insert"/>')) {
$.ajax({
type : 'post',
url : url,
data : formData,
processData: false,
contentType: false,
success : function(result) {
if (JSON.parse(result.resBody.result).message ==='success') {
alert('<spring:message code="success.common.insert"/>');
location.href='/itrnt/mngr/selectItrntMngrList';
} else {
alert('<spring:message code="fail.common.insert"/>');
}
}
});
}
}
$(document).ready(function () {
// 관리자 권한 전체 체크
const adminAuthCheckAll = $('#adminAuthCheckAll');
const adminCategory = $('.adminCategory');
const adminCategoryCheck = $('.adminCategory > input');
const adminWrite = $('.adminWrite');
const adminWriteCheck = $('.adminWrite > input');
adminAuthCheckAll.on('click', function () {
if ($(this).hasClass('checked')) {
adminCategoryCheck.prop('checked', false);
$(this).removeClass('checked');
isCategoryChecked();
} else {
adminCategoryCheck.prop('checked', true);
$(this).addClass('checked');
isCategoryChecked();
}
});
adminCategoryCheck.on('click', function () {
isCategoryChecked();
});
function isCategoryChecked() {
$('.adminCategory').each(function () {
if ($(this).find('input').prop('checked')) {
$(this).closest('.b-checkbox-container').find(adminWrite).removeAttr('disabled');
$(this).closest('.b-checkbox-container').find(adminWriteCheck).removeAttr('disabled');
$(this).closest('.b-checkbox-container').find(adminWriteCheck).prop('checked', true);
} else {
$(this).closest('.b-checkbox-container').find(adminWrite).attr('disabled', 'disabled');
$(this).closest('.b-checkbox-container').find(adminWriteCheck).attr('disabled', 'disabled');
$(this).closest('.b-checkbox-container').find(adminWriteCheck).prop('checked', false);
}
});
}
//비밀번호 정규식 확인
const pwdChk = $('#tentcpnPasswordChk').on('propertychange change keyup paste input', function () {
const pwdRegex = /^(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[!#$%&()*+-\/:<>?@\[\\\]^_{|}~]).{10,20}$/;
let tentcpnPassword = $('#tentcpnPassword').val().trim();
let tentcpnPasswordChk = $('#tentcpnPasswordChk').val().trim();
let pwdChkNotice = $('#pwdChkNotice');
let pwdChkNoticeResult = $('#pwdChkNoticeRs')
if (pwdRegex.test(tentcpnPassword) === false
|| pwdRegex.test(tentcpnPasswordChk) === false) {
pwdChkNotice.attr('value', '비밀번호 조합 조건을 확인해 주세요.');
pwdChkNotice.attr('type', 'text').css('visibility', 'visible');
pwdChkNotice.css('pointer-events','none'); //클릭 방지
pwdChkNoticeResult.attr('value', 'N')
} else if(tentcpnPassword === tentcpnPasswordChk){
pwdChkNotice.attr('value', '사용 가능한 비밀번호 입니다')
pwdChkNotice.attr('type', 'text').css('visibility', 'visible')
pwdChkNotice.css('pointer-events','none');
pwdChkNoticeResult.attr('value', 'Y')
}else{
pwdChkNotice.attr('value', '입력하신 비밀번호가 일치하지 않습니다.')
pwdChkNotice.attr('type', 'text').css('visibility', 'visible')
pwdChkNotice.css('pointer-events','none');
pwdChkNoticeResult.attr('value', 'N')
}
});
setTimeout(pwdChk, 3000);
//관리자 권한 표시
//관리자 쓰기 권한
const adminWriteInput = $('.adminWrite');
adminWriteInput.each(function(){
if($(this).children('input').val() ==='Y'){
$(this).removeAttr('disabled')
$(this).children('input').prop('checked', true)
$(this).children('input').removeAttr('disabled')
}
});
//관리자 권한
const adminCategoryInput = $('.adminCategory');
adminCategoryInput.each(function(){
if($(this).children('input').val() ==='Y'){
$(this).children('input').prop('checked', true)
}
});
// 비밀번호 변경 창 OnOff
$('#pwdChangeChk').on("click",function(){
if($(this).attr("checked")){
$(".pwdChangeDiv").hide();
$(this).removeAttr('checked', false)
}else{
$(".pwdChangeDiv").show();
$(this).attr('checked', true)
}
});
})
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/comm/itrnt/Header.jsp"%>
<main class="main">
<%@ include file="/WEB-INF/views/comm/itrnt/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_move_itrnMngrList();"> <spring:message code="button.list"/> </button>
<button type="button" class="btn primary" onclick="fn_update_itrntMngrTentcpn();"> <spring:message code="button.save"/> </button>
</div>
</div>
<section class="content-section">
<form id="itrntMngrTentcpnDtlUptFrom" name="itrntMngrTentcpnDtlUptFrom">
<div class="table-wrapper">
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 12%;">
<col>
</colgroup>
<tbody>
<c:if test="${not empty resultMap.result}"/>
<tr>
<th>최초입점일</th>
<td>
<div class="td-inner">
<p><c:out value="${resultMap.result.registDt}"/></p>
</div>
</td>
<th>최근접속일</th>
<td>
<div class="td-inner">
<p><c:out value="${resultMap.result.lastLoginDt}"/></p>
</div>
</td>
<th style="width: 13%">최근 변경(정상/종료)일</th>
<td>
<div class="td-inner">
<p><c:out value="${resultMap.result.updtDt}"/></p>
</div>
</td>
</tr>
<tr>
<th>구분</th>
<td>
<div class="td-inner">
<%-- TODO : as-is{? c.__FROMHEAD__ === true}매장{:}본사{/}
to-be tentGroup 으로 구분여부 (확인 필요)
--%>
<c:choose>
<c:when test="${resultMap.result.tentGroup == '01'}">
<p><c:out value="본사" default="매장"/></p>
</c:when>
<c:otherwise>
<p><c:out value="매장"/></p>
</c:otherwise>
</c:choose>
</div>
</td>
<th>매장(업체)명</th>
<td>
<div class="td-inner">
<p><c:out value="${resultMap.result.tentcpnNm}"/></p>
</div>
</td>
</tr>
<tr>
<th>매장ID</th>
<td>
<div class="td-inner">
<p><c:out value="${resultMap.result.tentcpnId}"/></p>
</div>
</td>
</tr>
<tr>
<th>매장 비밀번호
<div class="b-checkbox-container">
<label class="b-checkbox checkbox">
<input type="checkbox" id="pwdChangeChk">
<span class="check"></span>
<span class="control-label"> 변경</span>
</label>
</div>
</th>
<td colspan="3">
<div class="td-inner">
<div class="table-wrapper pwdChangeDiv" style="width: 800px; display: none" >
<table class="table transparent">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 18%;">
<col>
</colgroup>
<tbody>
<tr>
<th class="text-left">현재 비밀번호</th>
<td>
<div class="td-inner">
<input type="password" class="input-text" value="" id="currentPassword" name="currentPassword" autocomplete="new-password"
title="해당 인풋에 대한 설명">
</div>
</td>
</tr>
<tr>
<th class="text-left">비밀번호 변경</th>
<td>
<div class="td-inner">
<input type="password" class="input-text" value="" id="tentcpnPassword" name="tentcpnPassword" autocomplete="new-password"
title="해당 인풋에 대한 설명">
<p class="fyi fs-13 gray-7 ml-4">10-20자, 영문 대소문자
또는
숫자,
특수문자 중 2가지 이상 조합</p>
</div>
</td>
</tr>
<tr>
<th class="text-left">비밀번호 변경 확인</th>
<td>
<div class="td-inner">
<input type="password" class="input-text" value="" id="tentcpnPasswordChk" autocomplete="new-password"
title="해당 인풋에 대한 설명">
<p class="fyi fs-13 gray-7 ml-4">사용가능 특수문자 : ! #
$ %
&amp; ( ) * + - / : &lt; =
&gt; ? @ [ \ ] ^ _ { | } ~</p>
</div>
<input type="hidden" class="fyi fs-13 gray-7 ml-4 w-full" id="pwdChkNotice" tabindex="-1" readonly />
<input type="hidden" id="pwdChkNoticeRs" />
</td>
</tr>
</tbody>
</table>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</form>
</section>
<section class="content-section">
<div class="form-control-container mb-10">
<div class="left">
<h3 class="delivery-info__title">
관리자 권한
</h3>
</div>
<div class="center">
</div>
<div class="right">
<button id="adminAuthCheckAll" class="btn sm primary outline">전체체크</button>
</div>
</div>
<div class="table-wrapper">
<table class="table">
<caption>해당 테이블에 대한 설명</caption>
<colgroup>
<col style="width: 12%;">
<col>
</colgroup>
<c:choose>
<c:when test="${ not empty resultMap.result.mngrAuthor}">
<tr>
<th>매출분석</th>
<td>
<input type="hidden" id="manager_act" name="mngrAuthor" value="<c:out value="${resultMap.result.reprsntMngrAt}" default="N"/>" >
<div class="td-inner">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="daily_revenue" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.dailyRevenue}"/>">
<span class="check"></span>
<span class="control-label">일별매출</span>
</label>
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="weekly_revenue" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.weeklyRevenue}"/>">
<span class="check"></span>
<span class="control-label">주별매출</span>
</label>
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="monthly_revenue" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.monthlyRevenue}"/>">
<span class="check"></span>
<span class="control-label">월별매출</span>
</label>
</div>
</div>
</td>
</tr>
<tr>
<th>판매분석</th>
<td>
<div class="td-inner">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="daily_static" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.dailyStatic}"/>">
<span class="check"></span>
<span class="control-label">금일 판매내역</span>
</label>
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="weekly_static" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.weeklyStatic}"/>">
<span class="check"></span>
<span class="control-label">주간 판매내역</span>
</label>
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="monthly_static" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.monthlyStatic}"/>">
<span class="check"></span>
<span class="control-label">월간 판매내역</span>
</label>
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="revenue_static" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.revenueStatic}"/>">
<span class="check"></span>
<span class="control-label">판매 상품 순위</span>
</label>
</div>
</div>
</td>
</tr>
<tr>
<th>마이페이지</th>
<td>
<div class="td-inner">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="catalog" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.catalog}"/>">
<span class="check"></span>
<span class="control-label">회원리스트</span>
</label>
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="member_sms" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.memberSns}"/>">
<span class="check"></span>
<span class="control-label">SMS발송관리</span>
</label>
</div>
</div>
</td>
</tr>
<tr>
<th>관리자</th>
<td>
<div class="td-inner vertical gap-15">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="gs_seller_notice" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.gsSellerNotice}"/>">
<span class="check"></span>
<span class="control-label">공지사항</span>
</label>
<span class="stone-7">→</span>
<label class="b-checkbox checkbox adminWrite" disabled>
<input disabled type="checkbox" id="gs_seller_notice_act" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.gsSellerNoticeAct}"/>">
<span class="check"></span>
<span class="control-label">쓰기/삭제</span>
</label>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="shop_education" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.shopEducation}"/>">
<span class="check"></span>
<span class="control-label">교육자료</span>
</label>
<span class="stone-7">→</span>
<label class="b-checkbox checkbox adminWrite" disabled>
<input disabled type="checkbox" id="shop_education_act" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.shopEducationAct}"/>">
<span class="check"></span>
<span class="control-label">쓰기/삭제</span>
</label>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="member_edit_req" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.memberEditReq}"/>">
<span class="check"></span>
<span class="control-label">회원정보수정요청</span>
</label>
<span class="stone-7">→</span>
<label class="b-checkbox checkbox adminWrite" disabled>
<input disabled type="checkbox" id="member_edit_req_act" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.memberEditReqAct}"/>">
<span class="check"></span>
<span class="control-label">쓰기/삭제</span>
</label>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="point_edit_req" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.pointEditReq}"/>">
<span class="check"></span>
<span class="control-label">마일리지(포인트)수정요청</span>
</label>
<span class="stone-7">→</span>
<label class="b-checkbox checkbox adminWrite" disabled>
<input disabled type="checkbox" id="point_edit_req_act" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.pointEditReqAct}"/>">
<span class="check"></span>
<span class="control-label">쓰기/삭제</span>
</label>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="logistics_req" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.logisticsReq}"/>">
<span class="check"></span>
<span class="control-label">물류관련요청</span>
</label>
<span class="stone-7">→</span>
<label class="b-checkbox checkbox adminWrite" disabled>
<input disabled type="checkbox" id="logistics_req_act" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.logisticsReqAct}"/>">
<span class="check"></span>
<span class="control-label">쓰기/삭제</span>
</label>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="shop_edit_req" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.shopEditReq}"/>">
<span class="check"></span>
<span class="control-label">매장정보변경</span>
</label>
<span class="stone-7">→</span>
<label class="b-checkbox checkbox adminWrite" disabled>
<input disabled type="checkbox" id="shop_edit_req_act" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.shopEditReqAct}"/>">
<span class="check"></span>
<span class="control-label">쓰기/삭제</span>
</label>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="family_qna_edit_req" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.familyQnaEditReq}"/>">
<span class="check"></span>
<span class="control-label">가맹점 Q&A</span>
</label>
<span class="stone-7">→</span>
<label class="b-checkbox checkbox adminWrite" disabled>
<input disabled type="checkbox" id="family_qna_edit_req_act" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.familyQnaEditReqAct}"/>">
<span class="check"></span>
<span class="control-label">쓰기/삭제</span>
</label>
</div>
<div class="b-checkbox-container">
<label class="b-checkbox checkbox adminCategory">
<input type="checkbox" id="admin_list" name="mngrAuthor" value="<c:out value="${resultMap.result.mngrAuthor.adminList}"/>">
<span class="check"></span>
<span class="control-label">관리자 리스트</span>
</label>
</div>
</div>
</td>
</tr>
</c:when>
<c:otherwise>
<tr>
<td class="row-no-data" colspan="8">조회된 관리자 권한이 없습니다.</td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</section>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
</body>
</html>