최초커밋

This commit is contained in:
kjs
2025-08-21 09:41:46 +09:00
commit a0e5b57a24
2454 changed files with 1476904 additions and 0 deletions

View File

@@ -0,0 +1,121 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="com.pms.common.utils.*"%>
<%@ page import="java.util.*"%>
<%@include file="/init.jsp"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="css/basic.css">
<title><%=Constants.SYSTEM_NAME%></title>
<script>
var result = "${result}";
var message = "${message}";
$(function(){
$(document).ready(function(){
$("#btnModify").click(function(){
//if(confirm("Edit Mode로 이동하시겠습니까?")){
document.form1.action = "/admin/userMainFormPopup.do";
document.form1.submit();
//}
});
$("#btnDelete").click(function(){
var userId = $("#userId").val();
fn_deleteUser(userId);
});
});
});
</script>
<script>
function fn_deleteUser(userId){
if(confirm("삭제 하시겠습니까?")){
$.ajax({
url:"/admin/userDeletePopup.do",
type:"POST",
data:{"userId":userId},
dataType:"json",
async:false,
success:function(data){
opener.fn_search();
self.close();
},
error: function(jqxhr, status, error){
}
});
}
}
</script>
</head>
<body>
<section id="commonSection">
<div class=admin_title>
<h2>사용자 비번관리</h2>
</div>
<div id="adminPopupFormWrap">
<form id="form1" name="form1" method="post">
<input type="hidden" id="userId" name="userId" value="${info.USER_ID}">
<table id="adminPopupForm">
<colgroup>
<col width="37%" />
<col width="63%" />
</colgroup>
<tbody>
<tr>
<td><label>사용자 ID</label></td>
<td style="font-size:13px;" class="admin_tr_data_border_bottom">${info.USER_ID}</td>
</tr>
<tr>
<td><label>사용자명</label></td>
<td style="font-size:13px;" class="admin_tr_data_border_bottom">${info.USER_NAME}</td>
</tr>
<tr>
<td><label>사원번호</label></td>
<td style="font-size:13px;" class="admin_tr_data_border_bottom">${info.SABUN}</td>
</tr>
<%-- <tr>
<td><label>업체구분</label></td>
<td style="font-size:13px;" class="admin_tr_data_border_bottom">${info.USER_TYPE_NAME}</td>
</tr> --%>
<tr>
<td><label>부서명</label></td>
<td style="font-size:13px;" class="admin_tr_data_border_bottom">${info.DEPT_NAME}</td>
</tr>
<tr>
<td><label>Cell Phone</label></td>
<td style="font-size:13px;" class="admin_tr_data_border_bottom">${info.CELL_PHONE}</td>
</tr>
<tr>
<td><label>EMAIL</label></td>
<td style="font-size:13px;" class="admin_tr_data_border_bottom">${info.EMAIL}</td>
</tr>
<tr>
<td><label>OFFICE NO</label></td>
<td style="font-size:13px;" class="admin_tr_data_border_bottom">${info.TEL}</td>
</tr>
<tr>
<td><label>FAX NO</label></td>
<td style="font-size:13px;" class="admin_tr_data_border_bottom">${info.FAX_NO}</td>
</tr>
<%-- <tr>
<td><label>활성화 여부</label></td>
<td style="font-size:13px;" class="admin_tr_data_border_bottom">${info.STATUS}</td>
</tr> --%>
</tbody>
</table>
<div id="adminPopupBtnWrap">
</div>
</form>
</div>
<div class="btnCenterWrap">
<center class="center_btns_wrap">
<input type="button" value="Edit" class="btns" id="btnModify">
<!-- <input type="button" value="삭제" class="btns" id="btnDelete"> -->
<input type="button" value="닫기" name="" id="btn_close" class="btns" onclick="javascript:self.close();">
</center>
</div>
</section>
</body>
</html>

View File

@@ -0,0 +1,261 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="com.pms.common.utils.*"%>
<%@ page import="java.util.*"%>
<%@include file="/init.jsp"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="css/basic.css">
<title><%=Constants.SYSTEM_NAME%></title>
<script>
var isEditMode = "${empty info?'false':'true'}";
$(function(){
//save
$("#btnSave").click(function(){
var flag = false;
if(isEditMode == "false"){
flag = fn_duplicateUserIdCheck();
}else{
flag = true;
}
if(flag){
if(fn_validate()){
fn_save();
}
}
});
});
</script>
<script>
//검사명 저장
function fn_save(){
if(fn_validate()){
if(confirm("저장하시겠습니까?")){
//if(confirm("로그인 시 사용자 ID 앞에 PLM_ 를 붙여야 로그인이 가능합니다.\n해당 내용을 충분히 숙지 하였습니까?")){
//$("#userId").val("PLM_"+$("#userId").val().toUpperCase());
$.ajax({
url:"/admin/saveUserInfo.do",
type:"POST",
data:$("#form1").serialize(),
dataType:"json",
async:false,
success:function(data){
alert(data.msg);
//Swal.fire("생성된 계정 정보입니다.\nPLM_"+$("#userId").val());
if(data.result == "true" || data.result == true || data.result){
opener.fn_search();
self.close(0);
}
},
error: function(jqxhr, status, error){
}
});
//}
}
}
}
//User Id 중복체크
function fn_duplicateUserIdCheck(){
var result = false;
var userId = $("#userId").val();
$.ajax({
url:"/admin/checkDuplicateUserId.do",
type:"POST",
data:{"userId":userId},
dataType:"json",
async:false,
success:function(data){
if(data.result == "false" || data.result == false || !data.result){
Swal.fire(data.msg);
$("#userId").focus();
}else{
result = true;
}
},
error: function(jqxhr, status, error){
}
});
return result;
}
function fn_validate(){
if($("#userId").val() == ""){
Swal.fire("사용자 ID를 입력해 주시기 바랍니다.");
$("#userId").focus();
return false;
}
if("${info.USER_ID}"==""){
if($("#password").val() == ""){
Swal.fire("비밀번호를 입력해 주시기 바랍니다.");
$("#password").focus();
return false;
}else{
if(validatePassword($("#password").val())) {
} else {
Swal.fire('비밀번호는 숫자영문특수문자 조합 8자 이상으로 하셔야 합니다.');
return false;
}
}
if($("#password").val() != $("#password2").val()){
Swal.fire("비밀번호를 확인해 주시기 바랍니다.");
$("#password2").focus();
return false;
}
}
if($("#sabun").val() == ""){
Swal.fire("사원번호를 입력해 주시기 바랍니다.");
$("#sabun").focus();
return false;
}
if($("#userName").val() == ""){
Swal.fire("사용자명을 입력해 주시기 바랍니다.");
$("#userName").focus();
return false;
}
/* if($("#deptCode").val() == ""){
Swal.fire("업체를 선택해 주시기 바랍니다.");
$("#deptCode").focus();
return false;
} */
return true;
}
function validatePassword(character) {
return /^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$/.test(character)
}
</script>
</head>
<body>
<section id="commonSection">
<div class=admin_title>
<h2>사용자 등록</h2>
</div>
<div id="adminPopupFormWrap">
<form id="form1" name="form1" method="post">
<table id="adminPopupForm">
<colgroup>
<col width="37%" />
<col width="63%" />
</colgroup>
<tbody>
<tr>
<td><label>사용자 ID</label></td>
<td><input type="text" title="사용자 ID" name="userId" id="userId" value="${info.USER_ID}" maxlength="10" ${!empty info?'readonly':''} required></td>
</tr>
<%-- <c:if test="${empty info}"> --%>
<tr>
<td><label>비밀번호</label></td>
<td><input type="password" title="비밀번호" name="password" id="password" value="" maxlength="20" required></td>
</tr>
<tr>
<td><label>비밀번호 확인</label></td>
<td><input type="password" title="비밀번호 확인" name="password2" id="password2" value="" maxlength="20" required></td>
</tr>
<%-- </c:if> --%>
<tr>
<td><label>사용자명</label></td>
<td><input type="text" title="사용자명" name="userName" id="userName" value="${info.USER_NAME}" maxlength="20" required></td>
</tr>
<tr>
<td><label>사원번호</label></td>
<td><input type="text" title="사원번호" name="sabun" id="sabun" value="${info.SABUN}" maxlength="20" ></td>
</tr>
<tr>
<td>
<label>직책</label>
</td>
<td>
<input type="text" title="직책" name="position_name" id="position_name" value="${info.POSITION_NAME}" maxlength="20" required>
</td>
</tr>
<tr>
<td>
<label>직급</label>
</td>
<td>
<input type="text" title="직급" name="rank" id="rank" value="${info.RANK}" maxlength="20" required>
</td>
</tr>
<tr>
<td><label>부서</label></td>
<td>
<select name="deptCode" id="deptCode">
<option value="">선택</option>
${code_map.team_cd}
<%-- <c:forEach var="d" items="${deptList}" varStatus="status">
<option value="${d.DEPT_CODE}" ${d.DEPT_CODE eq info.DEPT_CODE?'selected':''}>${d.LOCATION_NAME} ${d.DEPT_NAME}</option>
</c:forEach> --%>
</select>
</td>
</tr>
<tr>
<td><label>핸드폰</label></td>
<td><input type="text" title="cellPhone" name="cellPhone" id="cellPhone" value="${info.CELL_PHONE}" maxlength="20" required></td>
</tr>
<tr>
<td><label>E-Mail</label></td>
<td><input type="text" title="email" name="email" id="email" value="${info.EMAIL}" maxlength="40" required></td>
</tr>
<tr>
<td><label>OFFICE NO</label></td>
<td><input type="text" title="tel" name="tel" id="tel" value="${info.TEL}" maxlength="20" required></td>
</tr>
<tr>
<td><label>FAX NO</label></td>
<td><input type="text" title="fax_no" name="fax_no" id="fax_no" value="${info.FAX_NO}" maxlength="20" required></td>
</tr>
<tr>
<td><label>협력업체코드</label></td>
<td>
<select name="partner_objid" id="partner_objid">
<option value="">선택</option>
${code_map.partner_objid}
</select>
</td>
</tr>
<tr>
<td><label>활성화 여부</label></td>
<td>
<select name="status" id="status">
<option value="">선택</option>
<option value="active" ${info.STATUS eq 'active' ? 'selected' : ''}>활성화</option>
<option value="inActive" ${info.STATUS eq 'inActive' ? 'selected' : ''}>비활성화</option>
</select>
</td>
</tr>
</tbody>
</table>
<div id="adminPopupBtnWrap">
</div>
</form>
</div>
<div class="btnCenterWrap">
<center class="center_btns_wrap">
<input type="button" value="저장" class="btns" id="btnSave">
<input type="button" value="닫기" name="" id="btn_close" class="btns" onclick="javascript:self.close();">
</center>
</div>
</secsion>
</body>
</html>

View File

@@ -0,0 +1,153 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="com.pms.common.utils.*"%>
<%@ page import="java.util.*" %>
<%@include file= "/init.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title><%=Constants.SYSTEM_NAME%></title>
<!-- //JSTL 변수선언 -->
<c:set var="totalCount" value="${empty TOTAL_COUNT?0:TOTAL_COUNT}" />
<c:set var="maxPage" value="${empty MAX_PAGE_SIZE?1:MAX_PAGE_SIZE}" />
<c:set var="nPage" value="${empty param.page?1:param.page}" />
<c:set var="pageIndex" value="${(nPage-1)/10}" />
<c:set var="nextPage" value="${empty NEXT_PAGE?1:NEXT_PAGE}" />
<c:set var="prevPage" value="${empty PREV_PAGE?1:PREV_PAGE}" />
<script type="text/javascript">
$(function(){
$(document).ready(function(){
fnc_datepick();
});
//엔터키로 조회
$("input").keyup(function(e){
if(e.keyCode == 13){
document.form1.page.value = "1";
fn_search();
}
});
//search
$("#btnSearch").click(function(){
document.form1.page.value = "1";
fn_search();
});
});
//조회 기능
function fn_search(){
document.form1.action = "/admin/userHistoryList.do";
document.form1.submit();
}
</script>
</head>
<body>
<form name="form1" method="POST">
<input type="hidden" name="user_id" id="user_id" value="${param.user_id}" />
<section id="commonSection" class="admin1">
<div class="admin_title">
<h2>사용자 관리 이력</h2>
</div>
<div id="adminTableWrap">
<div id="tableWrap">
<table id="adminTable">
<colgroup>
<col width="10%" />
<col width="*%" />
<col width="*%" />
<col width="*%" />
<col width="*%" />
<col width="*%" />
<col width="*%" />
<col width="*%" />
<col width="*%" />
</colgroup>
<tr id="thead">
<td>No</td>
<td>사번</td>
<td>사용자 ID</td>
<td>사용자 이름</td>
<td>부서명</td>
<td>상태</td>
<td>이력유형</td>
<td>작성자</td>
<td>작성일</td>
</tr>
<c:choose>
<c:when test="${!empty LIST}">
<c:forEach var="info" items="${LIST}" varStatus="status">
<tr>
<td>${info.RM}</td>
<td>${info.SABUN}</td>
<td>${info.USER_ID}</td>
<td>${info.USER_NAME}</td>
<td>${info.DEPT_NAME}</td>
<td>${info.STATUS eq 'active' ? '활성화':'비활성화'}</td>
<td>${info.HISTORY_TYPE}</td>
<td>${info.WRITER_NAME}</td>
<td>${info.REG_DATE_TITLE}</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<td align="center" colspan="9">조회된 정보가 없습니다.</td>
</c:otherwise>
</c:choose>
</table>
</div>
</div>
<div class="pdm_page">
<input type="hidden" name="page" id="page" value="${nPage}">
<c:if test="${!empty LIST}">
<div class="page_pro">
<center>
<table>
<tr>
<c:choose>
<c:when test="${nPage > 1}">
<td><a href="javascript:fnc_goPrev('${prevPage}');">prev</a></td>
<td>&nbsp;&nbsp;&nbsp;</td>
</c:when>
<c:otherwise>
<td class="no_more_page">prev</td>
<td>&nbsp;&nbsp;&nbsp;</td>
</c:otherwise>
</c:choose>
<c:forEach var="v" begin="${nPage>5?nPage-5:1}" end="${nPage>5?nPage+4:10}" step="1" varStatus="status">
<c:if test="${status.index -1 < maxPage}">
<c:choose>
<c:when test="${status.index eq nPage}">
<td><a href="#" class="now_page">${nPage}</a></td>
<td>&nbsp;&nbsp;&nbsp;</td>
</c:when>
<c:otherwise>
<td><a href="javascript:fnc_goPage('${status.index}');">${status.index}</a></td>
<td>&nbsp;&nbsp;&nbsp;</td>
</c:otherwise>
</c:choose>
</c:if>
</c:forEach>
<c:choose>
<c:when test="${nPage < maxPage}">
<td><a href="javascript:fnc_goNext('${nextPage}');">next</a></td>
</c:when>
<c:otherwise>
<td class="no_more_page">next</td>
</c:otherwise>
</c:choose>
</tr>
</table>
<p id="adminPageCount">총 ${totalCount}건</p>
</center>
</div>
</c:if>
</div>
</section>
</form>
</body>
</html>

View File

@@ -0,0 +1,330 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="com.pms.common.utils.*"%>
<%@ page import="java.util.*" %>
<%@include file= "/init.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title><%=Constants.SYSTEM_NAME%></title>
<!-- //JSTL 변수선언 -->
<c:set var="totalCount" value="${empty TOTAL_COUNT?0:TOTAL_COUNT}" />
<c:set var="maxPage" value="${empty MAX_PAGE_SIZE?1:MAX_PAGE_SIZE}" />
<c:set var="nPage" value="${empty param.page?1:param.page}" />
<c:set var="pageIndex" value="${(nPage-1)/10}" />
<c:set var="nextPage" value="${empty NEXT_PAGE?1:NEXT_PAGE}" />
<c:set var="prevPage" value="${empty PREV_PAGE?1:PREV_PAGE}" />
<script type="text/javascript">
$(function(){
$(document).ready(function(){
fnc_datepick();
});
//엔터키로 조회
$("input").keyup(function(e){
if(e.keyCode == 13){
document.form1.page.value = "1";
fn_search();
}
});
//Form Popup
$("#btnRegist").click(function(){
fn_registFormPopup();
});
//Detail Popup
$(".btnDetail").click(function(){
var userId = $(this).attr("data-USER_ID");
fn_registDetailPopup(userId);
});
//search
$("#btnSearch").click(function(){
document.form1.page.value = "1";
fn_search();
});
// 전체 선택
$("#firstCheck").click(function(){
if($("#firstCheck").prop("checked")){
$("input[name=IdCheck]").prop("checked",true);
}else{
$("input[name=IdCheck]").prop("checked",false);
}
})
// 부분체크해제
$("input[name=IdCheck]").click(function(){
if($("#firstCheck").is(":checked")){
$("#firstCheck").prop("checked",false);
}
})
//삭제
$("#btnDelete").click(function(){
fn_delete();
});
});
function fn_delete(){
if(0 < $("input[name=IdCheck]:checked").length){
if(confirm("선택한 사용자 정보를 삭제하시겠습니까?")){
var param = $("#form1").serialize();
$.ajax({
type : "POST",
url : "/admin/deleteUserInfo.do",
data: param,
dataType:"json",
success:function(data){
if(data.result == 'true'){
Swal.fire("삭제되었습니다.");
fn_search();
};
}
,error: function(jqxhr, status, error){
}
});
}
}else{
Swal.fire("선택한 항목이 없습니다.");
}
}
//비밀번호 초기화 기능
function fn_resetPassword(userId){
var newPassword = prompt(userId + " 사용자의 새 비밀번호를 입력하세요 (영문, 숫자, 특수문자만 가능):");
if (newPassword === null) { // User pressed cancel
Swal.fire("취소됨", "비밀번호 변경이 취소되었습니다.", "info");
return;
}
if (newPassword.trim() === "") {
Swal.fire("입력 오류", "새 비밀번호를 입력해주세요.", "warning");
return;
}
// 영문, 숫자, 특수문자 (Printable ASCII) 확인 정규식
var asciiPrintableRegex = /^[ -~]+$/;
if (!asciiPrintableRegex.test(newPassword)) {
Swal.fire("입력 오류", "비밀번호는 영문, 숫자, 특수문자만 사용할 수 있습니다.", "error");
return;
}
if(confirm(userId + " 사용자의 비밀번호를 입력한 값으로 초기화하시겠습니까?")){
$.ajax({
type : "POST",
url : "/admin/resetUserPassword.do",
data: { "USER_ID": userId, "NEW_PASSWORD": newPassword }, // Send USER_ID and NEW_PASSWORD
dataType:"json",
success:function(data){
if(data.result == 'true' || data.result == true || data.result === "true"){ // Handle boolean true as well
Swal.fire("성공", "비밀번호가 성공적으로 초기화되었습니다.", "success");
}else{
Swal.fire("오류", data.msg, "error");
}
}
,error: function(jqxhr, status, error){
Swal.fire("오류", "비밀번호 초기화 중 오류가 발생했습니다.", "error");
}
});
}
}
//조회 기능
function fn_search(){
document.form1.action = "/admin/userMngList.do";
document.form1.submit();
}
//기타사용자 등록 Form Popup
function fn_registFormPopup(){
var params = "";
window.open("/admin/userFormPopup.do"+params,"userFormPopup","width=500,height=620");
}
//기타사용자 상세 Detail Popup
function fn_registDetailPopup(userId){
var params = "?userId="+userId;
window.open("/admin/userFormPopup.do"+params,"userDetailPopup","width=500,height=620");
}
//상태값 수정
function changeStatus(user_id, status){
$.ajax({
url:"/admin/changeUserStatus.do",
type:"POST",
data:{"user_id":user_id, "status":status},
dataType:"text",
success:function(data){
fn_search();
},
error: function(jqxhr, status, error){
}
});
}
//프로젝트에 해당하는 WBS Task 목록 PopUp을 호출한다.
function fn_openUserHistory(userId){
if(null != userId){
window.open("/admin/userHistoryList.do?user_id="+userId, "", "width=950, height=500");
}else{
Swal.fire("잘못된 접근입니다.");
}
}
</script>
</head>
<body>
<form name="form1" id="form1" method="post">
<input type="hidden" name="actionType" id="actionType" value="" />
<section id="commonSection" class="admin1">
<div class="admin_title">
<h2>사용자 관리</h2>
</div>
<div id="adminFormWrap">
<table id="adminForm">
<tbody>
<tr>
<%--
<td class="label"><label>업체구분</label></td>
<td><input type="text" id="search_userTypeName" name="search_userTypeName" value="${param.search_userTypeName}" maxlength="16"></td>
--%>
<td class="label"><label>구분</label></td>
<td><select id="search_user_type" name="search_user_type" >
<option value="A">전체</option>
<option value="U" ${param.search_user_type eq 'U' ? 'selected' : ''}>사용자</option>
<option value="P" ${param.search_user_type eq 'P' ? 'selected' : ''}>업체</option>
</select>
</td>
<td class="label"><label>부서명</label></td>
<td><input type="text" id="search_deptName" name="search_deptName" value="${param.search_deptName}" maxlength="16"></td>
<td class="label"><label>사용자명</label></td>
<td><input type="text" id="search_userName" name="search_userName" value="${param.search_userName}" maxlength="16"></td>
</tr>
</tbody>
</table>
</div>
<div id="adminBtnWrap">
<input type="button" value="조회" class="btns" id="btnSearch">
<input type="button" value="사용자 등록" class="btns" id="btnRegist">
<input type="button" value="삭제" class="btns" id="btnDelete">
</div>
<div id="adminTableWrap">
<div id="tableWrap">
<table id="adminTable">
<colgroup>
<col width="5%" />
<col width="4%" />
<col width="10%" />
<col width="10%" />
<col width="10%" />
<col width="12%" />
<col width="20%" />
<col width="10%" />
<col width="10%" />
<col width="10%" />
<col width="40px" />
<col width="10%" />
</colgroup>
<tr id="thead">
<td><input type="checkbox" name="" value="" id="firstCheck" ></td>
<td>No</td>
<td>부서명</td>
<td>사용자 ID</td>
<td>사용자명</td>
<td>전화번호</td>
<td>이메일</td>
<td>등록일</td>
<td>상태</td>
<td>퇴직자 처리일</td>
<td>이력</td>
<td>비밀번호 초기화</td>
</tr>
<c:choose>
<c:when test="${!empty LIST}">
<c:forEach var="info" items="${LIST}" varStatus="status">
<tr>
<td><input type="checkbox" name="IdCheck" value="${info.USER_ID}"></td>
<td>${info.RNUM}</td>
<td>${info.DEPT_NAME}</td>
<td style="text-align:left; padding-left: 5px;"><a href="#" class="btnDetail" data-USER_ID="${info.USER_ID}">${info.USER_ID}</a></td>
<td><a href="#" class="btnDetail" data-USER_ID="${info.USER_ID}">${info.USER_NAME}</a></td>
<td>${info.CELL_PHONE}</td>
<td style="text-align:left; padding-left: 5px;">${info.EMAIL}</td>
<td>${info.REGDATE}</td>
<td>
<select onchange="javascript:changeStatus('${info.USER_ID}',this.value);">
<option value="active" ${info.STATUS eq 'active' ? 'selected' : ''}>활성화</option>
<option value="inActive" ${info.STATUS eq 'inActive' ? 'selected' : ''}>비활성화</option>
</select>
</td>
<td>${info.ENDDATE}</td>
<td><input type="button" class="blue_btn" value="이력" onclick="fn_openUserHistory('${info.USER_ID}');" style="float:none;"></td>
<td><input type="button" class="blue_btn" value="초기화" onclick="fn_resetPassword('${info.USER_ID}');" style="float:none;"></td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<td align="center" colspan="12">조회된 정보가 없습니다.</td>
</c:otherwise>
</c:choose>
</table>
</div>
</div>
<div class="pdm_page">
<input type="hidden" name="page" id="page" value="${nPage}">
<c:if test="${!empty LIST}">
<div class="page_pro">
<center>
<table>
<tr>
<c:choose>
<c:when test="${nPage > 1}">
<td><a href="javascript:fnc_goPrev('${prevPage}');">prev</a></td>
<td>&nbsp;&nbsp;&nbsp;</td>
</c:when>
<c:otherwise>
<td class="no_more_page">prev</td>
<td>&nbsp;&nbsp;&nbsp;</td>
</c:otherwise>
</c:choose>
<c:forEach var="v" begin="${nPage>5?nPage-5:1}" end="${nPage>5?nPage+4:10}" step="1" varStatus="status">
<c:if test="${status.index -1 < maxPage}">
<c:choose>
<c:when test="${status.index eq nPage}">
<td><a href="#" class="now_page">${nPage}</a></td>
<td>&nbsp;&nbsp;&nbsp;</td>
</c:when>
<c:otherwise>
<td><a href="javascript:fnc_goPage('${status.index}');">${status.index}</a></td>
<td>&nbsp;&nbsp;&nbsp;</td>
</c:otherwise>
</c:choose>
</c:if>
</c:forEach>
<c:choose>
<c:when test="${nPage < maxPage}">
<td><a href="javascript:fnc_goNext('${nextPage}');">next</a></td>
</c:when>
<c:otherwise>
<td class="no_more_page">next</td>
</c:otherwise>
</c:choose>
</tr>
</table>
<p id="adminPageCount">총 ${totalCount}건</p>
</center>
</div>
</c:if>
</div>
</section>
</form>
</body>
</html>

View File

@@ -0,0 +1,73 @@
<%@ page import="com.pms.common.utils.*"%>
<%@ page import="java.util.*" %>
<%@ page isThreadSafe = "true" %>
<%@ page buffer="256kb" %>
<%@ page autoFlush = "true" %>
<%@ page contentType="application/vnd.ms-excel;charset=UTF-8" %>
<%
java.text.SimpleDateFormat frm= new java.text.SimpleDateFormat ("yyyy_MM_dd_HH_mm");
Calendar cal = Calendar.getInstance();
String todayKor = frm.format(cal.getTime());
String excelName = "재질목록";
String encodeName = excelName+todayKor+".xls";
String fileName = java.net.URLEncoder.encode(encodeName,"UTF-8");
response.setHeader("Content-Disposition", "attachment;filename="+fileName+"");
response.setHeader("Content-Description", "JSP Generated Data");
ArrayList materialMngList = (ArrayList)request.getAttribute("materialMngList");
%>
<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=Content-Type content="text/html; charset=UTF-8">
<meta name=ProgId content=Excel.Sheet>
<meta name=Generator content="Microsoft Excel 11">
</head>
<body>
<form name="materialListForm" method="POST">
<h2>재질관리</h2><br>
<table border="1">
<tr align="center">
<td>No</td>
<td>재질명</td>
<td>등록자</td>
<td>등록일</td>
<td>상태</td>
</tr>
<%
if(materialMngList != null && materialMngList.size() > 0){
for(int i = 0 ; i < materialMngList.size() ; i++){
HashMap map = (HashMap)materialMngList.get(i);
String materialName = CommonUtils.checkNull(map.get("MATERIAL_NAME"));
String regDate = CommonUtils.checkNull(map.get("REGDATE"));
String deptName = CommonUtils.checkNull(map.get("DEPT_NAME"));
String userName = CommonUtils.checkNull(map.get("USER_NAME"));
String statusStr = CommonUtils.checkNull(map.get("STATUS_STR"));
%>
<tr align="center">
<td><%=i+1%></td>
<td><%=materialName%></td>
<td><%=deptName%> <%=userName%></td>
<td><%=regDate%></td>
<td><%=statusStr%></td>
</tr>
<%
}
}else{
%>
<tr>
<td align="center" colspan="5">조회된 정보가 없습니다.</td>
</tr>
<%
}
%>
</table>
</form>
</body>
</html>

View File

@@ -0,0 +1,203 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="com.pms.common.utils.*"%>
<%@ page import="java.util.*"%>
<%@include file="/init.jsp"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="css/basic.css">
<title><%=Constants.SYSTEM_NAME%></title>
<script>
var isEditMode = "${empty info?'false':'true'}";
$(function(){
//save
$("#btnSave").click(function(){
var flag = false;
if(isEditMode == "false"){
flag = fn_duplicateUserIdCheck();
}else{
flag = true;
}
if(flag){
if(fn_validate()){
fn_save();
}
}
});
});
</script>
<script>
//검사명 저장
function fn_save(){
if(fn_validate()){
if(confirm("저장하시겠습니까?")){
//if(confirm("로그인 시 사용자 ID 앞에 PLM_ 를 붙여야 로그인이 가능합니다.\n해당 내용을 충분히 숙지 하였습니까?")){
//$("#userId").val("PLM_"+$("#userId").val().toUpperCase());
$.ajax({
url:"/admin/saveUserInfo.do",
type:"POST",
data:$("#form1").serialize(),
dataType:"json",
async:false,
success:function(data){
Swal.fire(data.msg);
//Swal.fire("생성된 계정 정보입니다.\nPLM_"+$("#userId").val());
if(data.result == "true" || data.result == true || data.result){
opener.fn_search();
self.close(0);
}
},
error: function(jqxhr, status, error){
}
});
//}
}
}
}
//User Id 중복체크
function fn_duplicateUserIdCheck(){
var result = false;
var userId = $("#userId").val();
$.ajax({
url:"/admin/checkDuplicateUserId.do",
type:"POST",
data:{"userId":userId},
dataType:"json",
async:false,
success:function(data){
if(data.result == "false" || data.result == false || !data.result){
Swal.fire(data.msg);
$("#userId").focus();
}else{
result = true;
}
},
error: function(jqxhr, status, error){
}
});
return result;
}
function fn_validate(){
if($("#userId").val() == ""){
Swal.fire("사용자 ID를 입력해 주시기 바랍니다.");
$("#userId").focus();
return false;
}
if("${info.USER_ID}"==""){
if($("#password").val() == ""){
Swal.fire("비밀번호를 입력해 주시기 바랍니다.");
$("#password").focus();
return false;
}else{
if(validatePassword($("#password").val())) {
} else {
Swal.fire('비밀번호는 숫자영문특수문자 조합 8자 이상으로 하셔야 합니다.');
return false;
}
}
if($("#password").val() != $("#password2").val()){
Swal.fire("비밀번호를 확인해 주시기 바랍니다.");
$("#password2").focus();
return false;
}
}
if($("#sabun").val() == ""){
Swal.fire("사원번호를 입력해 주시기 바랍니다.");
$("#sabun").focus();
return false;
}
if($("#userName").val() == ""){
Swal.fire("사용자명을 입력해 주시기 바랍니다.");
$("#userName").focus();
return false;
}
/* if($("#deptCode").val() == ""){
Swal.fire("업체를 선택해 주시기 바랍니다.");
$("#deptCode").focus();
return false;
} */
return true;
}
function validatePassword(character) {
return /^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$/.test(character)
}
</script>
</head>
<body>
<section id="commonSection">
<div class=admin_title>
<h2>사용자 등록</h2>
</div>
<div id="adminPopupFormWrap">
<form id="form1" name="form1" method="post">
<table id="adminPopupForm">
<colgroup>
<col width="37%" />
<col width="63%" />
</colgroup>
<tbody>
<tr>
<td><label>사용자 ID</label></td>
<td><input type="text" title="사용자 ID" name="userId" id="userId" value="${info.USER_ID}" maxlength="10" ${!empty info?'readonly':''} required></td>
</tr>
<%-- <c:if test="${empty info}"> --%>
<tr>
<td><label>비밀번호</label></td>
<td><input type="password" title="비밀번호" name="password" id="password" value="" maxlength="20" required></td>
</tr>
<tr>
<td><label>비밀번호 확인</label></td>
<td><input type="password" title="비밀번호 확인" name="password2" id="password2" value="" maxlength="20" required></td>
</tr>
<%-- </c:if> --%>
<tr>
<td><label>핸드폰</label></td>
<td><input type="text" title="cellPhone" name="cellPhone" id="cellPhone" value="${info.CELL_PHONE}" maxlength="20" required></td>
</tr>
<tr>
<td><label>E-Mail</label></td>
<td><input type="text" title="email" name="email" id="email" value="${info.EMAIL}" maxlength="40" required></td>
</tr>
<tr>
<td><label>OFFICE NO</label></td>
<td><input type="text" title="tel" name="tel" id="tel" value="${info.TEL}" maxlength="20" required></td>
</tr>
<tr>
<td><label>FAX NO</label></td>
<td><input type="text" title="fax_no" name="fax_no" id="fax_no" value="${info.FAX_NO}" maxlength="20" required></td>
</tr>
</tbody>
</table>
<div id="adminPopupBtnWrap">
</div>
</form>
</div>
<div class="btnCenterWrap">
<center class="center_btns_wrap">
<input type="button" value="저장" class="btns" id="btnSave">
<input type="button" value="닫기" name="" id="btn_close" class="btns" onclick="javascript:self.close();">
</center>
</div>
</secsion>
</body>
</html>