코드관리 삭제기능 작업중.
parent
35a0a27254
commit
0a10167487
|
|
@ -27,6 +27,8 @@ dependencies {
|
||||||
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.4'
|
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.4'
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
|
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
|
||||||
implementation group: 'nz.net.ultraq.thymeleaf', name: 'thymeleaf-layout-dialect', version: '2.5.3'
|
implementation group: 'nz.net.ultraq.thymeleaf', name: 'thymeleaf-layout-dialect', version: '2.5.3'
|
||||||
|
implementation group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1'
|
||||||
|
|
||||||
|
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-security'
|
implementation 'org.springframework.boot:spring-boot-starter-security'
|
||||||
implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5'
|
implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5'
|
||||||
|
|
@ -35,9 +37,6 @@ dependencies {
|
||||||
implementation group: 'org.mariadb.jdbc', name: 'mariadb-java-client', version: '2.7.4'
|
implementation group: 'org.mariadb.jdbc', name: 'mariadb-java-client', version: '2.7.4'
|
||||||
implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16'
|
implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16'
|
||||||
|
|
||||||
// implementation group: 'org.webjars', name: 'bootstrap', version: '5.1.3'
|
|
||||||
// implementation group: 'org.webjars', name: 'popper.js', version: '2.9.3'
|
|
||||||
|
|
||||||
testImplementation 'org.springframework.boot:spring-boot-starter-test:2.5.6'
|
testImplementation 'org.springframework.boot:spring-boot-starter-test:2.5.6'
|
||||||
testImplementation 'org.springframework.security:spring-security-test:5.5.1'
|
testImplementation 'org.springframework.security:spring-security-test:5.5.1'
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,15 @@ package com.dbnt.kcgfilemanager.controller;
|
||||||
import com.dbnt.kcgfilemanager.model.CommonCode;
|
import com.dbnt.kcgfilemanager.model.CommonCode;
|
||||||
import com.dbnt.kcgfilemanager.service.CommonCodeService;
|
import com.dbnt.kcgfilemanager.service.CommonCodeService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.json.simple.JSONObject;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.servlet.ModelAndView;
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
import java.net.http.HttpResponse;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
|
|
@ -42,7 +46,47 @@ public class adminController {
|
||||||
@GetMapping("/codeMgt")
|
@GetMapping("/codeMgt")
|
||||||
public ModelAndView codeMgt(CommonCode commonCode) {
|
public ModelAndView codeMgt(CommonCode commonCode) {
|
||||||
ModelAndView mav = new ModelAndView("admin/codeMgt");
|
ModelAndView mav = new ModelAndView("admin/codeMgt");
|
||||||
mav.addObject("categoryList", commonCodeService.selectCommonCodeToCategory(commonCode));
|
mav.addObject("categoryList", commonCodeService.selectCommonCodeCategory(commonCode));
|
||||||
return mav;
|
return mav;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/codeValue")
|
||||||
|
public ModelAndView codeValue(CommonCode commonCode) {
|
||||||
|
ModelAndView mav = new ModelAndView("admin/codeValue");
|
||||||
|
mav.addObject("valueList", commonCodeService.selectCommonCodeValue(commonCode));
|
||||||
|
return mav;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PutMapping("/insertCommonCode")
|
||||||
|
public void insertCommonCode(HttpServletResponse res, CommonCode commonCode){
|
||||||
|
res.setCharacterEncoding("UTF-8");
|
||||||
|
res.setContentType("text/html; charset=UTF-8");
|
||||||
|
PrintWriter writerJson = null;
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
commonCodeService.insertCommonCode(commonCode);
|
||||||
|
jsonObject.put("codeSq", commonCode.getCodeSq());
|
||||||
|
jsonObject.put("category", commonCode.getCategory());
|
||||||
|
jsonObject.put("value", commonCode.getValue());
|
||||||
|
try {
|
||||||
|
writerJson = res.getWriter();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
writerJson.print(jsonObject);
|
||||||
|
}
|
||||||
|
@PutMapping("/updateCommonCode")
|
||||||
|
public void updateCommonCode(HttpServletResponse res, List<CommonCode> commonCodeList){
|
||||||
|
res.setCharacterEncoding("UTF-8");
|
||||||
|
res.setContentType("text/html; charset=UTF-8");
|
||||||
|
PrintWriter writerJson = null;
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
System.out.println(commonCodeList.size());
|
||||||
|
// jsonObject.put("codeSq", commonCode.getCodeSq());
|
||||||
|
try {
|
||||||
|
writerJson = res.getWriter();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
writerJson.print(jsonObject);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,5 +8,6 @@ import java.util.List;
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface CommonCodeMapper {
|
public interface CommonCodeMapper {
|
||||||
|
|
||||||
List<CommonCode> selectCommonCodeToCategory(CommonCode commonCode);
|
List<CommonCode> selectCommonCodeCategory(CommonCode commonCode);
|
||||||
|
List<CommonCode> selectCommonCodeValue(CommonCode commonCode);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,12 +3,16 @@ package com.dbnt.kcgfilemanager.model;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
import org.hibernate.annotations.DynamicInsert;
|
||||||
|
import org.hibernate.annotations.DynamicUpdate;
|
||||||
|
|
||||||
import javax.persistence.*;
|
import javax.persistence.*;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
|
@DynamicInsert
|
||||||
|
@DynamicUpdate
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "COMMON_CODE")
|
@Table(name = "COMMON_CODE")
|
||||||
public class CommonCode {
|
public class CommonCode {
|
||||||
|
|
@ -22,5 +26,7 @@ public class CommonCode {
|
||||||
private String value;
|
private String value;
|
||||||
@Column(name = "DESCRIPTION")
|
@Column(name = "DESCRIPTION")
|
||||||
private String description;
|
private String description;
|
||||||
|
@Column(name = "IS_DELETED")
|
||||||
|
private String isDeleted;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
package com.dbnt.kcgfilemanager.model;
|
package com.dbnt.kcgfilemanager.model;
|
||||||
|
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
|
import org.hibernate.annotations.DynamicInsert;
|
||||||
|
import org.hibernate.annotations.DynamicUpdate;
|
||||||
import org.springframework.security.core.GrantedAuthority;
|
import org.springframework.security.core.GrantedAuthority;
|
||||||
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
||||||
import org.springframework.security.core.userdetails.UserDetails;
|
import org.springframework.security.core.userdetails.UserDetails;
|
||||||
|
|
@ -14,6 +16,8 @@ import java.util.Set;
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
|
@DynamicInsert
|
||||||
|
@DynamicUpdate
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "USER_INFO")
|
@Table(name = "USER_INFO")
|
||||||
public class UserInfo implements UserDetails{
|
public class UserInfo implements UserDetails{
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ package com.dbnt.kcgfilemanager.service;
|
||||||
import com.dbnt.kcgfilemanager.mapper.CommonCodeMapper;
|
import com.dbnt.kcgfilemanager.mapper.CommonCodeMapper;
|
||||||
import com.dbnt.kcgfilemanager.model.CommonCode;
|
import com.dbnt.kcgfilemanager.model.CommonCode;
|
||||||
import com.dbnt.kcgfilemanager.model.UserInfo;
|
import com.dbnt.kcgfilemanager.model.UserInfo;
|
||||||
|
import com.dbnt.kcgfilemanager.repository.CommonCodeRepository;
|
||||||
import com.dbnt.kcgfilemanager.repository.UserInfoRepository;
|
import com.dbnt.kcgfilemanager.repository.UserInfoRepository;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.security.core.userdetails.UserDetails;
|
import org.springframework.security.core.userdetails.UserDetails;
|
||||||
|
|
@ -19,8 +20,15 @@ import java.util.List;
|
||||||
public class CommonCodeService {
|
public class CommonCodeService {
|
||||||
|
|
||||||
private final CommonCodeMapper commonCodeMapper;
|
private final CommonCodeMapper commonCodeMapper;
|
||||||
|
private final CommonCodeRepository commonCodeRepository;
|
||||||
|
|
||||||
public List<CommonCode> selectCommonCodeToCategory(CommonCode commonCode) {
|
public List<CommonCode> selectCommonCodeCategory(CommonCode commonCode) {
|
||||||
return commonCodeMapper.selectCommonCodeToCategory(commonCode);
|
return commonCodeMapper.selectCommonCodeCategory(commonCode);
|
||||||
|
}
|
||||||
|
public List<CommonCode> selectCommonCodeValue(CommonCode commonCode) {
|
||||||
|
return commonCodeMapper.selectCommonCodeValue(commonCode);
|
||||||
|
}
|
||||||
|
public void insertCommonCode(CommonCode commonCode) {
|
||||||
|
commonCodeRepository.save(commonCode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,29 @@
|
||||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
|
||||||
<mapper namespace="com.dbnt.kcgfilemanager.mapper.CommonCodeMapper">
|
<mapper namespace="com.dbnt.kcgfilemanager.mapper.CommonCodeMapper">
|
||||||
<select id="selectCommonCodeToCategory" resultType="CommonCode" parameterType="CommonCode">
|
<select id="selectCommonCodeCategory" resultType="CommonCode" parameterType="CommonCode">
|
||||||
SELECT DISTINCT
|
SELECT DISTINCT
|
||||||
CATEGORY
|
CATEGORY
|
||||||
FROM COMMON_CODE
|
FROM COMMON_CODE
|
||||||
WHERE IS_DELETED <> 'Y'
|
<where>
|
||||||
|
<if test="isDeleted == null or isDeleted == ''">
|
||||||
|
AND IS_DELETED = 'N'
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectCommonCodeValue" resultType="CommonCode" parameterType="CommonCode">
|
||||||
|
SELECT CODE_SQ,
|
||||||
|
VALUE,
|
||||||
|
DESCRIPTION
|
||||||
|
FROM COMMON_CODE
|
||||||
|
<where>
|
||||||
|
<if test="category != null and category != ''">
|
||||||
|
AND CATEGORY = #{category}
|
||||||
|
</if>
|
||||||
|
<if test="isDeleted == null or isDeleted == ''">
|
||||||
|
AND IS_DELETED = 'N'
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
|
||||||
|
.form-signin{
|
||||||
|
width: 100%;
|
||||||
|
max-width: 330px;
|
||||||
|
padding: 15px;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,128 @@
|
||||||
|
$(function(){
|
||||||
|
const commonCodeModal = document.getElementById('commonCodeModal')
|
||||||
|
commonCodeModal.addEventListener('hidden.bs.modal', function (event) {
|
||||||
|
formReset();
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
$(document).on('change', '#inputSelector', function (){
|
||||||
|
$("#category").val("");
|
||||||
|
const categorySelectDiv = $("#categorySelectDiv");
|
||||||
|
const categoryInputDiv = $("#categoryInputDiv");
|
||||||
|
categorySelectDiv.children().val("");
|
||||||
|
categoryInputDiv.children().val("");
|
||||||
|
if(this.checked){
|
||||||
|
categorySelectDiv.hide();
|
||||||
|
categoryInputDiv.show();
|
||||||
|
}else{
|
||||||
|
categorySelectDiv.show();
|
||||||
|
categoryInputDiv.hide();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
$(document).on('change', '#categorySelector, #categoryInput', function (){
|
||||||
|
$("#category").val(this.value);
|
||||||
|
})
|
||||||
|
|
||||||
|
$(document).on('click', '.categoryTr', function (event){
|
||||||
|
const checkBox = $(this).find(".categoryCheckBox")[0];
|
||||||
|
categoryCheckBoxReset();
|
||||||
|
$("#allValueCheckBox")[0].checked = false;
|
||||||
|
checkBox.checked = true;
|
||||||
|
getValues(checkBox.value);
|
||||||
|
})
|
||||||
|
$(document).on('click', '.valueTr', function (event) {
|
||||||
|
if(event.target.className!=="valueCheckBox"){
|
||||||
|
const checkBox = $(this).find(".valueCheckBox")[0];
|
||||||
|
checkBox.checked = !checkBox.checked;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
$(document).on('click', '#allValueCheckBox', function (event){
|
||||||
|
const flag = $("#allValueCheckBox")[0].checked;
|
||||||
|
$(".valueCheckBox").prop("checked", flag);
|
||||||
|
})
|
||||||
|
$(document).on('click', '#saveBtn', function (){
|
||||||
|
if(valueCheck()){
|
||||||
|
if(confirm("저장하시겠습니까?")){
|
||||||
|
const formData = new FormData($("#commonCodeForm")[0]);
|
||||||
|
$.ajax({
|
||||||
|
processData: false,
|
||||||
|
contentType: false,
|
||||||
|
url : "/admin/insertCommonCode",
|
||||||
|
type : 'PUT',
|
||||||
|
data : formData,
|
||||||
|
dataType: 'json',
|
||||||
|
success : function(data) {
|
||||||
|
alert("저장되었습니다.")
|
||||||
|
$("#closeModalBtn").click();
|
||||||
|
categoryCheck(data.category);
|
||||||
|
},
|
||||||
|
error : function(xhr, status) {
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
$(document).on('click', '#deleteCommonCodeBtn', function (){
|
||||||
|
let commonCodeList = [];
|
||||||
|
$(".valueCheckBox:checked").each(function (idx, el){
|
||||||
|
commonCodeList.push({codeSq: el.value, isDeleted:'Y'});
|
||||||
|
})
|
||||||
|
$.ajax({
|
||||||
|
url : "/admin/updateCommonCode",
|
||||||
|
type : 'PUT',
|
||||||
|
data : commonCodeList,
|
||||||
|
dataType: 'json',
|
||||||
|
success : function(data) {
|
||||||
|
debugger
|
||||||
|
},
|
||||||
|
error : function(xhr, status) {
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
function getValues(category){
|
||||||
|
$.ajax({
|
||||||
|
url: '/admin/codeValue',
|
||||||
|
data: {category: category},
|
||||||
|
type: 'GET',
|
||||||
|
dataType:"html",
|
||||||
|
success: function(data){
|
||||||
|
$("#valueDiv").empty().append(data)
|
||||||
|
},
|
||||||
|
error:function(){
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function categoryCheck(category){
|
||||||
|
categoryCheckBoxReset();
|
||||||
|
$(".categoryCheckBox").each(function (idx,el){
|
||||||
|
if(el.value===category){
|
||||||
|
el.checked = true;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
getValues(category);
|
||||||
|
}
|
||||||
|
function valueCheck(){
|
||||||
|
const category = $("#category").val();
|
||||||
|
const value = $("#value").val();
|
||||||
|
let returnFlag = true;
|
||||||
|
if(!category){
|
||||||
|
alert("분류를 선택(또는 입력) 해야합니다.");
|
||||||
|
returnFlag = false;
|
||||||
|
}
|
||||||
|
if(!value){
|
||||||
|
alert("값이 비어있습니다.");
|
||||||
|
returnFlag = false;
|
||||||
|
}
|
||||||
|
return returnFlag;
|
||||||
|
}
|
||||||
|
function categoryCheckBoxReset(){
|
||||||
|
$(".categoryCheckBox").prop("checked", false);
|
||||||
|
}
|
||||||
|
function formReset(){
|
||||||
|
document.getElementById('commonCodeForm').reset();
|
||||||
|
}
|
||||||
|
|
@ -4,6 +4,9 @@
|
||||||
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5"
|
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5"
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
||||||
layout:decorate="~{layout/layout}">
|
layout:decorate="~{layout/layout}">
|
||||||
|
<th:block layout:fragment="script">
|
||||||
|
<script type="text/javascript" th:src="@{/js/admin/codeMgt.js}"></script>
|
||||||
|
</th:block>
|
||||||
<div layout:fragment="content">
|
<div layout:fragment="content">
|
||||||
<main>
|
<main>
|
||||||
<h4>코드 관리</h4>
|
<h4>코드 관리</h4>
|
||||||
|
|
@ -25,20 +28,22 @@
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
<tbody th:if="${categoryList.size()>0}">
|
<tbody th:if="${categoryList.size()>0}">
|
||||||
<tr th:each="commonCode:${categoryList}">
|
<tr class="categoryTr" th:each="commonCode:${categoryList}">
|
||||||
<td>
|
<td>
|
||||||
<input type="checkbox">
|
<input type="checkbox" class="categoryCheckBox" th:value="${commonCode.category}">
|
||||||
</td>
|
</td>
|
||||||
<td>${commonCode.category}</td>
|
<td th:text="${commonCode.category}"></td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-7">
|
<div class="col-7" id="valueDiv">
|
||||||
<table class="table table-striped">
|
<table class="table table-striped">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th></th>
|
<th>
|
||||||
|
<input type="checkbox" class="valueCheckBox" id="allValueCheckBox">
|
||||||
|
</th>
|
||||||
<th>값</th>
|
<th>값</th>
|
||||||
<th>설명</th>
|
<th>설명</th>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
@ -47,17 +52,6 @@
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="3">분류를 선택해주세요.</td>
|
<td colspan="3">분류를 선택해주세요.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<!--<tr>
|
|
||||||
<td>
|
|
||||||
<input type="checkbox">
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
asdf
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
zxcv
|
|
||||||
</td>
|
|
||||||
</tr>-->
|
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -65,54 +59,57 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="card-footer row justify-content-end">
|
<div class="card-footer row justify-content-end">
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<input type="button" class="btn btn-primary" value="추가" data-bs-toggle="modal" data-bs-target="#addCommonCodeModal">
|
<input type="button" class="btn btn-primary" value="추가" data-bs-toggle="modal" data-bs-target="#commonCodeModal">
|
||||||
<input type="button" class="btn btn-danger" value="삭제">
|
<input type="button" class="btn btn-danger" value="삭제" id="deleteCommonCodeBtn">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div class="modal fade" id="addCommonCodeModal" tabindex="-1" aria-labelledby="addCommonCodeModalLabel" aria-hidden="true">
|
<div class="modal fade" id="commonCodeModal" tabindex="-1" aria-labelledby="commonCodeModalLabel" aria-hidden="true">
|
||||||
<div class="modal-dialog">
|
<div class="modal-dialog">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title" id="addCommonCodeModalLabel">코드 추가</h5>
|
<h5 class="modal-title" id="commonCodeModalLabel">코드 추가</h5>
|
||||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
|
<form id="commonCodeForm" action="#" th:action="@{/admin/insertCommonCode}" method="post">
|
||||||
<div class="mb-3 row">
|
<div class="mb-3 row">
|
||||||
<input type="hidden" name="category">
|
<input type="hidden" name="category" id="category">
|
||||||
<label class="col-sm-2 col-form-label">분류</label>
|
<label class="col-sm-2 col-form-label">분류</label>
|
||||||
<div class="col-sm-5">
|
<div class="col-sm-5" id="categorySelectDiv">
|
||||||
<select class="form-select" id="categorySelector" th:attrappend="${categoryList.size()==0?'disabled=':''}">
|
<select class="form-select" id="categorySelector">
|
||||||
|
<option value="" selected disabled>선택해주세요.</option>
|
||||||
<option th:each="commonCode:${categoryList}" th:value="${commonCode.category}" th:text="${commonCode.category}"></option>
|
<option th:each="commonCode:${categoryList}" th:value="${commonCode.category}" th:text="${commonCode.category}"></option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-5" style="display: none;">
|
<div class="col-sm-5" id="categoryInputDiv" style="display: none">
|
||||||
<input type="text" id="categoryInput" class="form-control">
|
<input type="text" id="categoryInput" class="form-control">
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-auto">
|
<div class="col-sm-4">
|
||||||
<input type="checkbox" id="categoryCheckBox">
|
<input type="checkbox" id="inputSelector">
|
||||||
<label for="categoryCheckBox">직접입력</label>
|
<label for="inputSelector">직접입력</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3 row">
|
<div class="mb-3 row">
|
||||||
<label for="value" class="col-sm-2 col-form-label">값</label>
|
<label for="value" class="col-sm-2 col-form-label">값</label>
|
||||||
<div class="col-sm-5">
|
<div class="col-sm-5">
|
||||||
<input type="text" class="form-control" id="value">
|
<input type="text" class="form-control" id="value" name="value">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3 row">
|
<div class="mb-3 row">
|
||||||
<label for="description" class="col-sm-2 col-form-label">설명</label>
|
<label for="description" class="col-sm-2 col-form-label">설명</label>
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-10">
|
||||||
<input type="text" class="form-control" id="description">
|
<input type="text" class="form-control" id="description" name="description">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
|
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal" id="closeModalBtn">닫기</button>
|
||||||
<button type="button" class="btn btn-primary">Save</button>
|
<button type="button" class="btn btn-primary" id="saveBtn">저장</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
||||||
|
<table class="table table-striped">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
<input type="checkbox" id="allValueCheckBox">
|
||||||
|
</th>
|
||||||
|
<th>값</th>
|
||||||
|
<th>설명</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="valueTr" th:each="commonCode:${valueList}">
|
||||||
|
<td>
|
||||||
|
<input type="checkbox" class="valueCheckBox" th:value="${commonCode.codeSq}">
|
||||||
|
</td>
|
||||||
|
<td th:text="${commonCode.value}"></td>
|
||||||
|
<td th:text="${commonCode.description}"></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</html>
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<title>해양경찰청 파일관리 시스템</title>
|
<title>해양경찰청 파일관리 시스템</title>
|
||||||
<!-- 공통으로 쓰이는 css파일을넣는다.-->
|
<!-- 공통으로 쓰이는 css파일을넣는다.-->
|
||||||
|
<link rel="stylesheet" th:href="@{/css/common.css}">
|
||||||
<!--bootstrap-->
|
<!--bootstrap-->
|
||||||
<!--<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css">
|
<!--<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css">
|
||||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.7.1/font/bootstrap-icons.css">-->
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.7.1/font/bootstrap-icons.css">-->
|
||||||
|
|
|
||||||
|
|
@ -4,16 +4,6 @@
|
||||||
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5"
|
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5"
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
||||||
layout:decorate="~{layout/layout}">
|
layout:decorate="~{layout/layout}">
|
||||||
<th:block layout:fragment="css">
|
|
||||||
<style>
|
|
||||||
.form-signin{
|
|
||||||
width: 100%;
|
|
||||||
max-width: 330px;
|
|
||||||
padding: 15px;
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</th:block>
|
|
||||||
<div layout:fragment="content" class="form-signin text-center">
|
<div layout:fragment="content" class="form-signin text-center">
|
||||||
<main>
|
<main>
|
||||||
<!-- Security config의 loginPage("url")와 action url과 동일하게 작성-->
|
<!-- Security config의 loginPage("url")와 action url과 동일하게 작성-->
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue