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

425 lines
22 KiB
Plaintext

<%@ 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">사용가능 특수문자 : ! # $ % &#x26; ( ) * + - / : &#x3C; = &#x3E; ? @ [ &#xFF3C; ] ^ _ { | } ~</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>