Files
sake/src/main/webapp/WEB-INF/views/itrnt/mngr/ItrntMngrTentcpnDtlFormR.jsp
2025-10-29 17:08:05 +09:00

583 lines
36 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<%@ 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>