초기소스
This commit is contained in:
@@ -0,0 +1,418 @@
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
|
||||
<%@ page import="java.util.Date" %>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
|
||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
|
||||
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui" %>
|
||||
<%--
|
||||
Class Name : MaCmmnCodeRegistC.jsp
|
||||
Description : 공통코드 등록 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
since : 2024.01.03 리브가 최초 생성
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Include.jsp" %>
|
||||
</head>
|
||||
<script>
|
||||
$( document ).ready(function() {
|
||||
$('#noData').hide();
|
||||
});
|
||||
|
||||
/* ********************************************************
|
||||
* 등록 AJAX
|
||||
******************************************************** */
|
||||
const fn_regist = function() {
|
||||
|
||||
if(confirm('공통코드를 <spring:message code="confirm.common.insert"/>')) {
|
||||
|
||||
if ($('[name=cd]').length === 0) {
|
||||
alert('코드를 한 개 이상 등록해야 합니다.');
|
||||
return;
|
||||
}
|
||||
|
||||
if (checkForDuplicateCodes()) {
|
||||
alert('코드 값에 중복이 있습니다. 다른 값을 입력해주세요.');
|
||||
return;
|
||||
}
|
||||
|
||||
if($('#hiddenForm') != null) {
|
||||
$('#hiddenForm').remove();
|
||||
}
|
||||
|
||||
const hiddenForm = document.createElement('form');
|
||||
hiddenForm.name = 'hiddenForm';
|
||||
hiddenForm.id = 'hiddenForm';
|
||||
hiddenForm.method = 'post';
|
||||
hiddenForm.action = '';
|
||||
hiddenForm.target = '_blank';
|
||||
|
||||
$('[name=cd]').each(function(idx){
|
||||
fn_create_input('hidden', "comncdDetailVOList["+idx+"].cdNm", $('[name=cdNm]').eq(idx).val(), hiddenForm);
|
||||
fn_create_input('hidden', "comncdDetailVOList["+idx+"].cd", $('[name=cd]').eq(idx).val(), hiddenForm);
|
||||
fn_create_input('hidden', "comncdDetailVOList["+idx+"].cdDc", $('[name=cdDc]').eq(idx).val(), hiddenForm);
|
||||
fn_create_input('hidden', "comncdDetailVOList["+idx+"].sortOrdr", idx, hiddenForm);
|
||||
});
|
||||
|
||||
document.body.appendChild(hiddenForm);
|
||||
|
||||
const url = '<c:url value="/admin/sys/comncd/insertCmmnCodeRegist"/>';
|
||||
const data = $('#listForm').serializeArray();
|
||||
$.merge(data, $('#hiddenForm').serializeArray());
|
||||
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: url,
|
||||
data: data,
|
||||
success: function (data) {
|
||||
let str = JSON.parse(data.resBody.result);
|
||||
if(str.result=='success'){
|
||||
alert('<spring:message code="success.common.insert"/>');
|
||||
fn_move_dtl_uptpage();
|
||||
} else if(str.result=='dublechk'){
|
||||
alert("이미 등록된 코드그룹 ID 입니다.");
|
||||
} else {
|
||||
alert('<spring:message code="fail.common.insert"/>');
|
||||
}
|
||||
}, error: function(data){
|
||||
$("#overlay").fadeOut();
|
||||
if(!data.responseJSON.resBody.message) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
if(fn_check_json(data.responseJSON.resBody.message)) {
|
||||
const errorObject = JSON.parse(data.responseJSON.resBody.message);
|
||||
if(!errorObject) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
if(!errorObject.errorMsg) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
alert(errorObject.errorMsg);
|
||||
let isMtched = false;
|
||||
$('.main').eq(0).find('input,select,textarea').each(function(){
|
||||
if ($(this).is('input[type="checkbox"], span')) {
|
||||
return true;
|
||||
}
|
||||
|
||||
for(let idx=0; idx<errorObject.errorFields.length; idx++) {
|
||||
if(errorObject.errorFields[idx].indexOf($(this).prop('name')) >= 0) {
|
||||
isMtched = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(isMtched) {
|
||||
|
||||
$(this).focus();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if(data.responseJSON.resBody.message) {
|
||||
alert(data.responseJSON.resBody.message);
|
||||
} else {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const fn_create_input = function(type, name, value, tgtForm) {
|
||||
const input = document.createElement('input');
|
||||
input.setAttribute("type", type);
|
||||
input.setAttribute("name", name);
|
||||
input.setAttribute("value", value);
|
||||
tgtForm.appendChild(input);
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 행추가
|
||||
******************************************************** */
|
||||
const fn_add_row = function() {
|
||||
|
||||
let count = $('#codeTbody').children('tr').length;
|
||||
let idx = count; // 현재 행 인덱스
|
||||
|
||||
let trClone = '<tr>'
|
||||
+' <tr>'
|
||||
+' <td>'
|
||||
+' <label class="b-checkbox checkbox is-medium">'
|
||||
+' <input type="checkbox" name="Chkbox" >'
|
||||
+' <span class="check"></span>'
|
||||
+' </label>'
|
||||
+' </td>'
|
||||
+' <td>'
|
||||
+' <input class="input-text full" type="text" title="코드명" placeholder="" name="cdNm" maxlength="35">'
|
||||
+' </td>'
|
||||
+' <td>'
|
||||
+' <input class="input-text full" type="text" title="코드" oninput="fn_cd_validateInput(this)" placeholder="" value="" name="cd" maxlength="20">'
|
||||
+' </td>'
|
||||
+' <td>'
|
||||
+' <input class="input-text full" type="text" title="코드 설명" placeholder="" value="" name="cdDc" maxlength="1000">'
|
||||
+' </td>'
|
||||
+' <td>'
|
||||
+' <div class="draggable-icon-container">'
|
||||
+' <i class="icon icon_draggable"></i>'
|
||||
+' <span class="visually-hidden">순서 바꾸기</span>'
|
||||
+' </div>'
|
||||
+' </td>'
|
||||
+' </tr>'
|
||||
|
||||
$('#noData').hide();
|
||||
$('#codeTbody').append(trClone);
|
||||
//행 추가 후, tableDnd 업데이트
|
||||
$('#cmmnCodeListTb').tableDnDUpdate();
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 행삭제
|
||||
******************************************************** */
|
||||
const fn_delete_row = function() {
|
||||
|
||||
const target = $('[name=Chkbox]:checked');
|
||||
if (target.length === 0) {
|
||||
alert('항목을 선택해 주세요.');
|
||||
} else {
|
||||
target.each(function() {
|
||||
$(this).parents('tr').remove();
|
||||
});
|
||||
}
|
||||
|
||||
$('#ChkAll').prop('checked', false);
|
||||
if ($('[name=Chkbox]').length === 0) {
|
||||
$('#noData').show();
|
||||
}
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 코드그룹 ID 중복 조회 AJAX
|
||||
******************************************************** */
|
||||
function fn_id_doubleCheck() {
|
||||
const url = '<c:url value="/admin/sys/comncd/selectCmmnCodeGrpIdDplctInqire"/>';
|
||||
var groupCd = $('#groupCd').val();
|
||||
|
||||
let data = {
|
||||
groupCd: groupCd
|
||||
};
|
||||
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url : url,
|
||||
data : data,
|
||||
success:function(result) {
|
||||
const message = JSON.parse(result.resBody.result)
|
||||
if(message === 0){
|
||||
let check = confirm('사용가능한 코드그룹 ID 입니다.');
|
||||
}else{
|
||||
alert('이미 등록된 코드그룹 ID 입니다.');
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/* ********************************************************
|
||||
* 코드 중복 조회 FN
|
||||
******************************************************** */
|
||||
function checkForDuplicateCodes() {
|
||||
let cdSet = new Set();
|
||||
let hasDuplicate = false;
|
||||
|
||||
$('[name=cd]').each(function() {
|
||||
let cdValue = $(this).val();
|
||||
|
||||
if (cdValue.trim() === '') {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (cdSet.has(cdValue)) {
|
||||
hasDuplicate = true;
|
||||
return false; // 중복이 발견되면 반복을 종료
|
||||
}
|
||||
cdSet.add(cdValue);
|
||||
});
|
||||
|
||||
return hasDuplicate;
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 수정폼 이동
|
||||
******************************************************** */
|
||||
const fn_move_dtl_uptpage = function() {
|
||||
const url = '<c:url value="/admin/sys/comncd/selectCmmnCodeUpdtForm"/>';
|
||||
|
||||
$('#listForm').attr('action', url);
|
||||
$('#listForm').attr('method', 'get');
|
||||
$('#pageIndex').val(1);
|
||||
$('#listForm').submit();
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 목록 조회
|
||||
******************************************************** */
|
||||
const fn_select_list = function() {
|
||||
const url = '<c:url value="/admin/sys/comncd/selectCmmnCodeListInqireForm"/>';
|
||||
|
||||
$('#listForm').attr('action', url);
|
||||
$('#listForm').attr('method', 'post');
|
||||
$('#listForm').submit();
|
||||
};
|
||||
|
||||
/* ********************************************************
|
||||
* 코드 - 영어, 숫자, 언더바(_), 하이픈(-)만 허용
|
||||
******************************************************** */
|
||||
function fn_cd_validateInput(input) {
|
||||
var regex = /[^a-zA-Z0-9_-]/g;
|
||||
input.value = input.value.replace(regex, '');
|
||||
input.value = input.value.toUpperCase();
|
||||
}
|
||||
|
||||
</script>
|
||||
<body>
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/admin/Left.jsp" %>
|
||||
<div class="content">
|
||||
<div class="content__inner">
|
||||
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
|
||||
<div class="page-title">
|
||||
<h2 class="page-title__title">공통코드 등록</h2>
|
||||
<div class="page-title__btn-container">
|
||||
<button onclick="fn_select_list()" onkeypress="this.onclick" class="btn outline"><spring:message code="button.list"/></button>
|
||||
<button class="btn primary" onclick="fn_regist();" ><spring:message code="button.insert"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<section class="content-section">
|
||||
<h3 class="content-section__title">공통코드 정보</h3>
|
||||
<form id="listForm" method="post" action="<c:url value="/admin/sys/comncd/selectCmmnCodeRegistForm"/>">
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>공통코드</caption>
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 38%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 38%;">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>코드그룹 명<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text lg" type="text" id="groupCdNm" name="groupCdNm" title="코드그룹 명" maxlength="35">
|
||||
</div>
|
||||
</td>
|
||||
<th>코드그룹 ID<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text md" type="text" id="groupCd" name="groupCd" oninput="fn_cd_validateInput(this)" title="코드그룹 ID" maxlength="20">
|
||||
<button type="button" class="btn sm gray"
|
||||
onclick="fn_id_doubleCheck(); return false;"><spring:message code="button.doubleCheck"/></button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>코드그룹 설명</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<textarea class="textarea" title="코드그룹 설명" id="groupCdDc" name="groupCdDc" rows="8" maxlength="1000"></textarea>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="form-control-container mb-8">
|
||||
<div class="left">
|
||||
<h3 class="content-section__inner-title">코드 정보</h3>
|
||||
</div>
|
||||
<div class="center">
|
||||
</div>
|
||||
<div class="right">
|
||||
<button type="button" class="btn dark sm" onclick="fn_delete_row()">행 <spring:message code="button.delete"/></button>
|
||||
<button type="button" class="btn primary outline sm" onclick="fn_add_row()">행 <spring:message code="button.add"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical draggable" id ="cmmnCodeListTb">
|
||||
<caption>코드</caption>
|
||||
<colgroup>
|
||||
<col style="width: 60px;">
|
||||
<col style="width: 18%;">
|
||||
<col style="width: 18%;">
|
||||
<col style="width: auto;">
|
||||
<col style="width: 8%;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<label class="b-checkbox checkbox is-medium check-all">
|
||||
<input type="checkbox" id="ChkAll" value="">
|
||||
<span class="check"></span>
|
||||
</label>
|
||||
</th>
|
||||
<th>코드명<span class="red-7">*</span></th>
|
||||
<th>코드<span class="red-7">*</span></th>
|
||||
<th>코드 설명</th>
|
||||
<th>순서</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<label class="b-checkbox checkbox is-medium">
|
||||
<input type="checkbox" name="Chkbox" >
|
||||
<span class="check"></span>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<input class="input-text full" type="text" name="cdNm" title="코드명" maxlength="35">
|
||||
</td>
|
||||
<td>
|
||||
<input class="input-text full" type="text" name="cd" title="코드" maxlength="20">
|
||||
</td>
|
||||
<td>
|
||||
<input class="input-text full" type="text" name="cdDc" title="코드 설명" maxlength="1000">
|
||||
</td>
|
||||
<td>
|
||||
<div class="draggable-icon-container">
|
||||
<i class="icon icon_draggable"></i>
|
||||
<span class="visually-hidden">순서 바꾸기</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody id="codeTbody">
|
||||
<tr id="noData">
|
||||
<td colspan="100%" class="row-no-data"> 데이터 없음</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!--검색 조건 , 페이징 조건 -->
|
||||
<input type="hidden" id="srchType" name="srchType" title="검색타입" value="<c:out value="${ resultMap.BOMaComncdVO.srchType }"/>">
|
||||
<input type="hidden" id="srchStr" name="srchStr" title="검색어" value="<c:out value="${ resultMap.BOMaComncdVO.srchStr }"/>">
|
||||
<input type="hidden" id="srchUseAt" name="srchUseAt" title="사용여부" value="<c:out value="${ resultMap.BOMaComncdVO.srchUseAt }"/>">
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value="${ resultMap.BOMaComncdVO.pageIndex }"/>"/>
|
||||
<input type="hidden" id="pageUnit" name="pageUnit" value="<c:out value="${ resultMap.BOMaComncdVO.pageUnit }"/>"/>
|
||||
|
||||
</form>
|
||||
</section>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
Reference in New Issue
Block a user