외사경찰 > 경력현황 작업중.

강석 최 2022-11-17 18:03:22 +09:00
parent b544f6296a
commit 5646a8cdb0
31 changed files with 271 additions and 345 deletions

View File

@ -200,7 +200,7 @@ public class FaispController {
} }
@GetMapping("/careerMgt") @GetMapping("/careerMgt")
public ModelAndView careerMgt(@AuthenticationPrincipal UserInfo loginUser, UserInfo userInfo, HttpServletResponse response){ public ModelAndView careerMgt(@AuthenticationPrincipal UserInfo loginUser, UserInfo userInfo){
ModelAndView mav = new ModelAndView("faisp/career/careerMgt"); ModelAndView mav = new ModelAndView("faisp/career/careerMgt");
userInfo.setDownOrganCdList(loginUser.getDownOrganCdList()); userInfo.setDownOrganCdList(loginUser.getDownOrganCdList());
if(userInfo.getUserStatus() == null) { if(userInfo.getUserStatus() == null) {
@ -219,6 +219,18 @@ public class FaispController {
mav.addObject("searchParams", userInfo); mav.addObject("searchParams", userInfo);
return mav; return mav;
} }
@GetMapping("/careerEditModal")
public ModelAndView careerEditModal(@AuthenticationPrincipal UserInfo loginUser, UserInfo userInfo){
ModelAndView mav = new ModelAndView("faisp/career/careerEditModal");
//메뉴권한 확인
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faisp/educationMgt").get(0).getAccessAuth();
mav.addObject("accessAuth", accessAuth);
mav.addObject("userInfo", userInfoService.selectPoliceInfo(userInfo.getUserSeq()));
/*mav.addObject("eduList", userInfoService.selectEduList());*/
mav.addObject("userSeq", loginUser.getUserSeq());
return mav;
}
@GetMapping("/educationMgt") @GetMapping("/educationMgt")
public ModelAndView educationMgt(@AuthenticationPrincipal UserInfo loginUser, UserInfo userInfo, HttpServletResponse response){ public ModelAndView educationMgt(@AuthenticationPrincipal UserInfo loginUser, UserInfo userInfo, HttpServletResponse response){

View File

@ -132,7 +132,6 @@ function getFaRptEditModal(faRpt){
} }
}); });
} }
function saveFaRpt(faRptState){ function saveFaRpt(faRptState){
if(contentCheck()){ if(contentCheck()){
if(confirm("저장하시겠습니까?")){ if(confirm("저장하시겠습니까?")){

View File

@ -1,169 +1,158 @@
$(document).on('change', '#year', function (){ let eduList=[];
$("#searchFm").submit(); let selectedIdx=0;
$(document).on('click', '#previousTab', function (){
const userStatus = $(this).data('userstatus');
location.href = "/faisp/careerMgt?userStatus="+userStatus;
}) })
$(document).on('click', '#personnelStatusEditModalBtn', function (){ $(document).on('click', '#presentTab', function (){
$("#personnelStatusEditDiv").empty(); const userStatus = $(this).data('userstatus');
$("#personnelStatusEditModal").modal('show'); location.href = "/faisp/careerMgt?userStatus="+userStatus;
})
$(document).on('click', '#notPoliceTab', function (){
const userStatus = $(this).data('userstatus');
location.href = "/faisp/careerMgt?userStatus="+userStatus;
}) })
$(document).on('click', '#personnelStatusAddBtn', function (){ $(document).on('click', '.policeTr', function (){
$.ajax({ $.ajax({
url: '/faisp/personnelStatusRow', url: '/faisp/careerEditModal',
data: {userSeq: $(this).find(".userSeq").val()},
type: 'GET', type: 'GET',
dataType:"html", dataType:"html",
success: function(html){ success: function(html){
$("#personnelStatusEditDiv").append(html) $("#careerEditModalContent").empty().append(html);
$(".dateSelector").datepicker({
format: "yyyy-mm-dd",
language: "ko",
autoclose: true
});
$("#careerEditModal").modal('show');
}, },
error:function(){ error:function(){
} }
}); });
});
$(document).on('click', '#eduAddBtn', function (){
const userSeq = (Number($(this).data('userseq')));
$('#insertEdu').append(
'<div id="eduDiv">'+
'<div class="mb-4 row">'+
'<label for="ogCd" class="col-sm-1 col-form-label col-form-label-sm text-center">교육명</label>'+
'<div class="col-sm-2">'+
'<input type="text" class="form-control form-control-sm tcDt eduInput" name="eduName">'+
'</div>'+
'<label for="ofcCd" class="col-sm-1 col-form-label col-form-label-sm text-center">교육시작</label>'+
'<div class="col-sm-2">'+
'<input type="text" class="form-control form-control-sm eduSdate eduInput" name="eduSdate" readonly>'+
'</div>'+
'<label for="ofcCd" class="col-sm-1 col-form-label col-form-label-sm text-center">교육종료</label>'+
'<div class="col-sm-2">'+
'<input type="text" class="form-control form-control-sm eduEdate eduInput" name="eduEdate" readonly>'+
'</div>'+
'<label for="ofcCd" class="col-sm-1 col-form-label col-form-label-sm text-center">담당기관</label>'+
'<div class="col-sm-2">'+
'<input type="text" class="form-control form-control-sm eduInput" name="eduRa">'+
'</div>'+
'</div>'+
'<div class="row justify-content-center">'+
'<div class="col-sm-1">'+
'<button type="button" class="btn btn-sm btn-outline-danger rowDeleteBtn"><i class="bi bi-x"></i></button>'+
'</div>'+
'</div>'+
'</div>'
)
$(".eduSdate").datepicker({
format: "yyyy-mm-dd",
language: "ko"
});
$(".eduEdate").datepicker({
format: "yyyy-mm-dd",
language: "ko"
});
eduList.push({userSeq:userSeq, eduName:"",eduSdate:"",eduEdate:"",eduRa:""});
}) })
$(document).on('click', '.personnelStatusRemoveBtn', function (){ $(document).on('click', '.rowDeleteBtn', function (){
$(this).parents(".personnelStatusRow").remove(); selectedIdx = $(this).parents("#eduDiv").index()-1;
eduList.splice(selectedIdx,1);
$(this).parents('#eduDiv').remove();
}) })
$(document).on('change', '.ogCd', function (){ $(document).on('change', '.eduInput', function (){
const personnelStatusRow = $(this).parents(".personnelStatusRow"); selectedIdx = $(this).parents("#eduDiv").index()-1;
if(this.value !== ''){ const target = eduList[selectedIdx];
personnelStatusRow.find(".nowPersonnelStatusBtn")[0].className = "btn btn-sm btn-success nowPersonnelStatusBtn"; switch (this.name){
$.ajax({ case "eduName":
url: '/faisp/selectPersonnelStatus', target.eduName = this.value
type: 'GET', break;
data: {year: new Date().getFullYear(), ogCd: this.value}, case "eduSdate":
dataType:"json", target.eduSdate = this.value
success: function(data){ break;
personnelStatusRow.find(".jt007Max").val(data.jt007Max); case "eduEdate":
personnelStatusRow.find(".jt007Now").val(data.jt007Now); target.eduEdate = this.value
personnelStatusRow.find(".jt006Max").val(data.jt006Max); break;
personnelStatusRow.find(".jt006Now").val(data.jt006Now); case "eduRa":
personnelStatusRow.find(".jt005Max").val(data.jt005Max); target.eduRa = this.value
personnelStatusRow.find(".jt005Now").val(data.jt005Now); break;
personnelStatusRow.find(".jt004Max").val(data.jt004Max);
personnelStatusRow.find(".jt004Now").val(data.jt004Now);
personnelStatusRow.find(".jt003Max").val(data.jt003Max);
personnelStatusRow.find(".jt003Now").val(data.jt003Now);
personnelStatusRow.find(".jt002Max").val(data.jt002Max);
personnelStatusRow.find(".jt002Now").val(data.jt002Now);
personnelStatusRow.find(".jt001Max").val(data.jt001Max);
personnelStatusRow.find(".jt001Now").val(data.jt001Now);
},
error:function(){
}
});
}else{
personnelStatusRow.find(".nowPersonnelStatusBtn")[0].className = "btn btn-sm btn-success nowPersonnelStatusBtn disabled";
} }
}) })
$(document).on('click', '.nowPersonnelStatusBtn', function (){
const personnelStatusRow = $(this).parents(".personnelStatusRow");
$.ajax({
url: '/faisp/nowPersonnelStatus',
type: 'GET',
data: {ogCd: personnelStatusRow.find(".ogCd").val()},
dataType:"json",
success: function(data){
if(data === null){
alert("결과가 없습니다.")
}else{
personnelStatusRow.find(".jt007Now").val(data.jt007Now);
personnelStatusRow.find(".jt006Now").val(data.jt006Now);
personnelStatusRow.find(".jt005Now").val(data.jt005Now);
personnelStatusRow.find(".jt004Now").val(data.jt004Now);
personnelStatusRow.find(".jt003Now").val(data.jt003Now);
personnelStatusRow.find(".jt002Now").val(data.jt002Now);
personnelStatusRow.find(".jt001Now").val(data.jt001Now);
}
},
error:function(){
alert("조회에 실패하였습니다.")
}
});
})
$(document).on('click', '#saveBtn', function (){ $(document).on('click', '#saveBtn', function (){
if($(".ogCd").length===0){ if(eduList.length < 1){
alert("저장할 항목이 없습니다.") alert("새로 입력된 교육정보가 없습니다.");
}else{ return false;
if(personnelStatusOgCdCheck()){ }
if(confirm("저장하시겠습니까?")){ if(confirm("저장하시겠습니까?")){
contentFade("in"); contentFade("in");
const personnelStatusList = []; $.ajax({
const year = new Date().getFullYear(); type : 'POST',
$.each($(".personnelStatusRow"), function(idx, personnelStatus){ data : JSON.stringify(eduList),
const row = $(personnelStatus); url : "/faisp/saveEdu",
personnelStatusList.push({}); contentType: 'application/json',
personnelStatusList[idx].year = year; beforeSend: function (xhr){
personnelStatusList[idx].ogCd = row.find(".ogCd").val() xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
personnelStatusList[idx].jt007Max = row.find(".jt007Max").val() },
personnelStatusList[idx].jt007Now = row.find(".jt007Now").val() success : function(data) {
personnelStatusList[idx].jt006Max = row.find(".jt006Max").val() contentFade("out");
personnelStatusList[idx].jt006Now = row.find(".jt006Now").val() alert("교육등록이 완료되었습니다.");
personnelStatusList[idx].jt005Max = row.find(".jt005Max").val() showModal(data);
personnelStatusList[idx].jt005Now = row.find(".jt005Now").val() eduList.length = 0;
personnelStatusList[idx].jt004Max = row.find(".jt004Max").val() },
personnelStatusList[idx].jt004Now = row.find(".jt004Now").val() error : function(xhr, status) {
personnelStatusList[idx].jt003Max = row.find(".jt003Max").val() contentFade("out");
personnelStatusList[idx].jt003Now = row.find(".jt003Now").val() alert("교육등록을 실패하였습니다");
personnelStatusList[idx].jt002Max = row.find(".jt002Max").val()
personnelStatusList[idx].jt002Now = row.find(".jt002Now").val()
personnelStatusList[idx].jt001Max = row.find(".jt001Max").val()
personnelStatusList[idx].jt001Now = row.find(".jt001Now").val()
})
$.ajax({
type : 'POST',
data : JSON.stringify(personnelStatusList),
url : "/faisp/savePersonnelStatus",
contentType: 'application/json',
beforeSend: function (xhr){
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
},
success : function() {
alert("저장되었습니다.");
contentFade("out");
location.reload();
},
error : function(xhr, status) {
alert("저장에 실패하였습니다.");
contentFade("out");
}
})
} }
} })
} }
}) })
$(document).on('click', '.statusTr', function (){ $(document).on('click', '#deleteBtn', function (){
const statusTr = $(this); const eduSeq = (Number($(this).data('eduseq')));
$.ajax({ const userSeq = (Number($(this).data('userseq')));
url: '/faisp/personnelStatusHistory', if(confirm("삭제하시겠습니까?")){
type: 'GET', $.ajax({
data: {year: statusTr.find(".year").val(), ogCd: statusTr.find(".ogCd").val()}, type : 'POST',
dataType:"html", url : "/faisp/deleteEdu",
success: function(html){ data : JSON.stringify({eduSeq:eduSeq,
$("#personnelStatusHistoryModalBody").empty().append(html) userSeq:userSeq}),
$("#personnelStatusHistoryModal").modal('show'); contentType: 'application/json',
}, beforeSend: function (xhr){
error:function(){ xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
},
} success : function(data) {
}); alert("삭제 처리되었습니다.");
showModal(data);
},
error : function(xhr, status) {
alert("삭제 처리에 실패하였습니다");
}
})
}
}) })
function personnelStatusOgCdCheck(){
let flag = true;
$.each($(".ogCd"), function(idx, selectBox){
if($(selectBox).val()===''){
flag = false;
}
})
if(!flag){
alert("관서가 지정되지 않은 항목이 있습니다.")
}
return flag;
}

View File

@ -17,7 +17,7 @@
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}"> <input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
<div class="row justify-content-between pe-3 py-1"> <div class="row justify-content-between pe-3 py-1">
<div class="col-auto"> <div class="col-auto">
<select class="form-select" name="rowCnt" id="rowCnt"> <select class="form-select form-select-sm" name="rowCnt" id="rowCnt">
<th:block th:each="num : ${#numbers.sequence(1,5)}"> <th:block th:each="num : ${#numbers.sequence(1,5)}">
<option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt==num*10}"></option> <option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt==num*10}"></option>
</th:block> </th:block>

View File

@ -17,7 +17,7 @@
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}"> <input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
<div class="row justify-content-between pe-3 py-1"> <div class="row justify-content-between pe-3 py-1">
<div class="col-auto"> <div class="col-auto">
<select class="form-select" name="rowCnt" id="rowCnt"> <select class="form-select form-select-sm" name="rowCnt" id="rowCnt">
<th:block th:each="num : ${#numbers.sequence(1,5)}"> <th:block th:each="num : ${#numbers.sequence(1,5)}">
<option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt eq num*10}"></option> <option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt eq num*10}"></option>
</th:block> </th:block>

View File

@ -25,7 +25,7 @@
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}"> <input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
<div class="row justify-content-between pe-3 py-1"> <div class="row justify-content-between pe-3 py-1">
<div class="col-auto"> <div class="col-auto">
<select class="form-select" name="rowCnt" id="rowCnt"> <select class="form-select form-select-sm" name="rowCnt" id="rowCnt">
<th:block th:each="num : ${#numbers.sequence(1,5)}"> <th:block th:each="num : ${#numbers.sequence(1,5)}">
<option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt==num*10}"></option> <option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt==num*10}"></option>
</th:block> </th:block>

View File

@ -6,7 +6,7 @@
<input type="hidden" name="pageIndex" id="modalPageIndex" th:value="${searchParams.pageIndex}"> <input type="hidden" name="pageIndex" id="modalPageIndex" th:value="${searchParams.pageIndex}">
<div class="row justify-content-between pe-3 py-1"> <div class="row justify-content-between pe-3 py-1">
<div class="col-auto"> <div class="col-auto">
<select class="form-select" name="rowCnt" id="rowCnt"> <select class="form-select form-select-sm" name="rowCnt" id="rowCnt">
<th:block th:each="num : ${#numbers.sequence(1,5)}"> <th:block th:each="num : ${#numbers.sequence(1,5)}">
<option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt eq num*10}"></option> <option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt eq num*10}"></option>
</th:block> </th:block>

View File

@ -18,7 +18,7 @@
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}"> <input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
<div class="row justify-content-between pe-3 py-1"> <div class="row justify-content-between pe-3 py-1">
<div class="col-auto"> <div class="col-auto">
<select class="form-select" name="rowCnt" id="rowCnt"> <select class="form-select form-select-sm" name="rowCnt" id="rowCnt">
<th:block th:each="num : ${#numbers.sequence(1,5)}"> <th:block th:each="num : ${#numbers.sequence(1,5)}">
<option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt==num*10}"></option> <option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt==num*10}"></option>
</th:block> </th:block>

View File

@ -18,7 +18,7 @@
<input type="hidden" name="detailType" th:value="${searchParams.detailType}"> <input type="hidden" name="detailType" th:value="${searchParams.detailType}">
<div class="row justify-content-between pe-3 py-1"> <div class="row justify-content-between pe-3 py-1">
<div class="col-auto"> <div class="col-auto">
<select class="form-select" name="rowCnt" id="rowCnt"> <select class="form-select form-select-sm" name="rowCnt" id="rowCnt">
<th:block th:each="num : ${#numbers.sequence(1,5)}"> <th:block th:each="num : ${#numbers.sequence(1,5)}">
<option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt==num*10}"></option> <option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt==num*10}"></option>
</th:block> </th:block>

View File

@ -26,7 +26,7 @@
<input type="hidden" name="detailType" th:value="${searchParams.detailType}"> <input type="hidden" name="detailType" th:value="${searchParams.detailType}">
<div class="row justify-content-between pe-3 py-1"> <div class="row justify-content-between pe-3 py-1">
<div class="col-auto"> <div class="col-auto">
<select class="form-select" name="rowCnt" id="rowCnt"> <select class="form-select form-select-sm" name="rowCnt" id="rowCnt">
<th:block th:each="num : ${#numbers.sequence(1,5)}"> <th:block th:each="num : ${#numbers.sequence(1,5)}">
<option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt==num*10}"></option> <option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt==num*10}"></option>
</th:block> </th:block>

View File

@ -18,7 +18,7 @@
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}"> <input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
<div class="row justify-content-between pe-3 py-1"> <div class="row justify-content-between pe-3 py-1">
<div class="col-auto"> <div class="col-auto">
<select class="form-select" name="rowCnt" id="rowCnt"> <select class="form-select form-select-sm" name="rowCnt" id="rowCnt">
<th:block th:each="num : ${#numbers.sequence(1,5)}"> <th:block th:each="num : ${#numbers.sequence(1,5)}">
<option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt==num*10}"></option> <option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt==num*10}"></option>
</th:block> </th:block>

View File

@ -18,7 +18,7 @@
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}"> <input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
<div class="row justify-content-between pe-3 py-1"> <div class="row justify-content-between pe-3 py-1">
<div class="col-auto"> <div class="col-auto">
<select class="form-select" name="rowCnt" id="rowCnt"> <select class="form-select form-select-sm" name="rowCnt" id="rowCnt">
<th:block th:each="num : ${#numbers.sequence(1,5)}"> <th:block th:each="num : ${#numbers.sequence(1,5)}">
<option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt==num*10}"></option> <option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt==num*10}"></option>
</th:block> </th:block>

View File

@ -34,7 +34,7 @@
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}"> <input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
<div class="row justify-content-between pe-3 py-1"> <div class="row justify-content-between pe-3 py-1">
<div class="col-auto"> <div class="col-auto">
<select class="form-select" name="rowCnt" id="rowCnt"> <select class="form-select form-select-sm" name="rowCnt" id="rowCnt">
<th:block th:each="num : ${#numbers.sequence(1,5)}"> <th:block th:each="num : ${#numbers.sequence(1,5)}">
<option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt eq num*10}"></option> <option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt eq num*10}"></option>
</th:block> </th:block>

View File

@ -0,0 +1,90 @@
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<div class="modal-header">
<h5 class="modal-title">경력 관리</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="mb-3 mt-3 row">
<label for="dicCode" class="col-sm-2 col-form-label col-form-label-sm text-center">직급</label>
<div class="col-sm-4">
<input type="text" class="form-control form-control-sm" th:value="${userInfo.titleCd}" readonly>
</div>
<label for="userId" class="col-sm-2 col-form-label col-form-label-sm text-center ">생년월일</label>
<div class="col-sm-4">
<input type="text" class="form-control form-control-sm" th:value="${userInfo.birthDate}" readonly>
</div>
</div>
<div class="mb-3 row">
<label for="phoneNo" class="col-sm-2 col-form-label col-form-label-sm text-center">성명</label>
<div class="col-sm-4">
<input type="tel" class="form-control form-control-sm" th:value="|${userInfo.ogCd} ${userInfo.ofcCd} ${userInfo.userNm}|" readonly>
</div>
<label for="email" class="col-sm-2 col-form-label col-form-label-sm text-center">성별</label>
<div class="col-sm-4">
<input type="email" class="form-control form-control-sm" th:value="${userInfo.sex}" readonly>
</div>
</div>
<div class="mb-3 row">
<label for="sex" class="col-sm-2 col-form-label col-form-label-sm text-center">학력사항</label>
<div class="col-sm-2">
<input type="email" class="form-control form-control-sm" readonly>
</div>
<label for="sex" class="col-sm-1 col-form-label col-form-label-sm text-center">학교</label>
<div class="col-sm-2">
<input type="email" class="form-control form-control-sm" readonly>
</div>
<label for="sex" class="col-sm-2 col-form-label col-form-label-sm text-center">외국어</label>
<div class="col-sm-2">
<input type="email" class="form-control form-control-sm" th:value="${userInfo.languageCd}" readonly>
</div>
</div>
<div class="mb-3 row">
<label for="birthDate" class="col-sm-2 col-form-label col-form-label-sm text-center">전공</label>
<div class="col-sm-4">
<input type="text" class="form-control form-control-sm dateSelector" id="birthDate" name="birthDate" readonly>
</div>
</div>
<div class="card">
<div class="card-body text-center">
<div class="row">
<table class="table table-striped" id="categoryTable">
<thead>
<tr>
<th>교육명</th>
<th>교육일</th>
<th>담당기관</th>
<th></th>
</tr>
</thead>
<tbody class="overflow-scroll">
<!--<tr th:each="list:${eduList}">
<td th:text="${list.eduName}"></td>
<td th:text="|${list.eduSdate}~${list.eduEdate}|"></td>
<td th:text="${list.eduRa}"></td>
<td>
<button type="button" class="btn btn-sm btn-danger" id="deleteBtn" th:data-eduseq="${list.eduSeq}" th:data-userseq="${list.userSeq}" th:if="${accessAuth eq 'ACC003'} or ${list.wrtUserSeq eq userSeq}">삭제</button>
</td>
</tr>-->
</tbody>
</table>
<div id="insertEdu">
<div class="row justify-content-center">
<button class="btn btn-sm btn-outline-primary col-auto" th:data-userseq="${userInfo.userSeq}" id="eduAddBtn"><i class="bi bi-plus-lg"></i></button>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer row justify-content-between">
<div class="col-auto">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
</div>
<div class="col-auto">
<button type="button" class="btn btn-primary" id="saveBtn" th:if="${accessAuth eq 'ACC003'} or ${userInfo.userSeq eq userSeq}">저장</button>
</div>
</div>
</html>

View File

@ -30,13 +30,13 @@
<div class="card"> <div class="card">
<div class="card-body"> <div class="card-body">
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12 pb-2">
<form id="searchFm" method="get" th:action="@{/faisp/careerMgt}"> <form id="searchFm" method="get" th:action="@{/faisp/careerMgt}">
<input type="hidden" name="userStatus" th:value="${userStatus}"> <input type="hidden" name="userStatus" th:value="${userStatus}">
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}"> <input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
<div class="row justify-content-between"> <div class="row justify-content-between">
<div class="col-auto"> <div class="col-auto">
<select class="form-select" name="rowCnt" id="rowCnt"> <select class="form-select form-select-sm" name="rowCnt" id="rowCnt">
<th:block th:each="num : ${#numbers.sequence(1,5)}"> <th:block th:each="num : ${#numbers.sequence(1,5)}">
<option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt==num*10}"></option> <option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt==num*10}"></option>
</th:block> </th:block>
@ -65,7 +65,9 @@
<div class="col-auto"> <div class="col-auto">
<input type="text" class="form-control form-control-sm" placeholder="이름" name="userNm" th:value="${searchParams.userNm}"> <input type="text" class="form-control form-control-sm" placeholder="이름" name="userNm" th:value="${searchParams.userNm}">
</div> </div>
<input type="submit" class="btn btn-sm btn-primary col-auto" id="searchBtn" value="검색"> <div class="col-auto">
<input type="submit" class="btn btn-sm btn-primary col-auto" id="searchBtn" value="검색">
</div>
</div> </div>
</div> </div>
</div> </div>
@ -94,9 +96,7 @@
</thead> </thead>
<tbody class="table-group-divider"> <tbody class="table-group-divider">
<tr class="policeTr" th:each="list:${policeList}"> <tr class="policeTr" th:each="list:${policeList}">
<th:block> <input type="hidden" class="userSeq" th:value="${list.userSeq}">
<input type="hidden" class="userSeq" th:value="${list.userSeq}">
</th:block>
<td th:text="${list.rownum}"></td> <td th:text="${list.rownum}"></td>
<td th:text="${list.titleCd}"></td> <td th:text="${list.titleCd}"></td>
<td th:text="${list.userNm}"></td> <td th:text="${list.userNm}"></td>
@ -158,9 +158,9 @@
</div> </div>
</main> </main>
<div class="modal fade" id="policeEditModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="userEditModalLabel" aria-hidden="true"> <div class="modal fade" id="careerEditModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="careerEditModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg modal-dialog-scrollable"> <div class="modal-dialog modal-lg modal-dialog-scrollable">
<div class="modal-content" id="policeEditModalContent"> <div class="modal-content" id="careerEditModalContent">
</div> </div>
</div> </div>

View File

@ -37,7 +37,7 @@
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}"> <input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
<div class="row justify-content-between pe-3 py-1"> <div class="row justify-content-between pe-3 py-1">
<div class="col-auto"> <div class="col-auto">
<select class="form-select" name="rowCnt" id="rowCnt"> <select class="form-select form-select-sm" name="rowCnt" id="rowCnt">
<th:block th:each="num : ${#numbers.sequence(1,5)}"> <th:block th:each="num : ${#numbers.sequence(1,5)}">
<option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt==num*10}"></option> <option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt==num*10}"></option>
</th:block> </th:block>

View File

@ -37,7 +37,7 @@
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}"> <input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
<div class="row justify-content-between pe-3 py-1"> <div class="row justify-content-between pe-3 py-1">
<div class="col-auto"> <div class="col-auto">
<select class="form-select" name="rowCnt" id="rowCnt"> <select class="form-select form-select-sm" name="rowCnt" id="rowCnt">
<th:block th:each="num : ${#numbers.sequence(1,5)}"> <th:block th:each="num : ${#numbers.sequence(1,5)}">
<option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt==num*10}"></option> <option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt==num*10}"></option>
</th:block> </th:block>

View File

@ -18,7 +18,7 @@
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}"> <input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
<div class="row pe-3 py-1"> <div class="row pe-3 py-1">
<div class="col-1"> <div class="col-1">
<select class="form-select" name="rowCnt" id="rowCnt"> <select class="form-select form-select-sm" name="rowCnt" id="rowCnt">
<th:block th:each="num : ${#numbers.sequence(1,5)}"> <th:block th:each="num : ${#numbers.sequence(1,5)}">
<option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt==num*10}"></option> <option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt==num*10}"></option>
</th:block> </th:block>

View File

@ -18,7 +18,7 @@
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}"> <input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
<div class="row justify-content-between pe-3 py-1"> <div class="row justify-content-between pe-3 py-1">
<div class="col-auto"> <div class="col-auto">
<select class="form-select" name="rowCnt" id="rowCnt"> <select class="form-select form-select-sm" name="rowCnt" id="rowCnt">
<th:block th:each="num : ${#numbers.sequence(1,5)}"> <th:block th:each="num : ${#numbers.sequence(1,5)}">
<option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt==num*10}"></option> <option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt==num*10}"></option>
</th:block> </th:block>

View File

@ -31,7 +31,7 @@
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}"> <input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
<div class="row pe-3 py-1"> <div class="row pe-3 py-1">
<div class="col-1"> <div class="col-1">
<select class="form-select" name="rowCnt" id="rowCnt"> <select class="form-select form-select-sm" name="rowCnt" id="rowCnt">
<th:block th:each="num : ${#numbers.sequence(1,5)}"> <th:block th:each="num : ${#numbers.sequence(1,5)}">
<option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt eq num*10}"></option> <option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt eq num*10}"></option>
</th:block> </th:block>

View File

@ -30,7 +30,7 @@
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}"> <input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
<div class="row justify-content-between pe-3 py-1"> <div class="row justify-content-between pe-3 py-1">
<div class="col-auto"> <div class="col-auto">
<select class="form-select" name="rowCnt" id="rowCnt"> <select class="form-select form-select-sm" name="rowCnt" id="rowCnt">
<th:block th:each="num : ${#numbers.sequence(1,5)}"> <th:block th:each="num : ${#numbers.sequence(1,5)}">
<option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt eq num*10}"></option> <option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt eq num*10}"></option>
</th:block> </th:block>

View File

@ -30,7 +30,7 @@
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}"> <input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
<div class="row justify-content-between pe-3 py-1"> <div class="row justify-content-between pe-3 py-1">
<div class="col-auto"> <div class="col-auto">
<select class="form-select" name="rowCnt" id="rowCnt"> <select class="form-select form-select-sm" name="rowCnt" id="rowCnt">
<th:block th:each="num : ${#numbers.sequence(1,5)}"> <th:block th:each="num : ${#numbers.sequence(1,5)}">
<option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt eq num*10}"></option> <option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt eq num*10}"></option>
</th:block> </th:block>

View File

@ -23,7 +23,7 @@
<input type="hidden" name="ivsgtType" th:value="${searchParams.ivsgtType}"> <input type="hidden" name="ivsgtType" th:value="${searchParams.ivsgtType}">
<div class="row justify-content-between pe-3 py-1"> <div class="row justify-content-between pe-3 py-1">
<div class="col-auto"> <div class="col-auto">
<select class="form-select" name="rowCnt" id="rowCnt"> <select class="form-select form-select-sm" name="rowCnt" id="rowCnt">
<th:block th:each="num : ${#numbers.sequence(1,5)}"> <th:block th:each="num : ${#numbers.sequence(1,5)}">
<option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt eq num*10}"></option> <option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt eq num*10}"></option>
</th:block> </th:block>

View File

@ -42,7 +42,8 @@
<div class="mb-3 row justify-content-center"> <div class="mb-3 row justify-content-center">
<label for="content" class="col-sm-2 col-form-label text-center">내용</label> <label for="content" class="col-sm-2 col-form-label text-center">내용</label>
<div class="col-sm-10"> <div class="col-sm-10">
<textarea type='text' id="content" name='content' th:utext="${info.content}"></textarea> <div id="editor"></div>
<textarea id="content" class="d-none" th:utext="${info.content}"></textarea>
</div> </div>
</div> </div>
<div class="row mb-3"> <div class="row mb-3">

View File

@ -19,7 +19,7 @@
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}"> <input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
<div class="row justify-content-between pe-3 py-1"> <div class="row justify-content-between pe-3 py-1">
<div class="col-auto"> <div class="col-auto">
<select class="form-select" name="rowCnt" id="rowCnt"> <select class="form-select form-select-sm" name="rowCnt" id="rowCnt">
<th:block th:each="num : ${#numbers.sequence(1,5)}"> <th:block th:each="num : ${#numbers.sequence(1,5)}">
<option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt eq num*10}"></option> <option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt eq num*10}"></option>
</th:block> </th:block>

View File

@ -19,7 +19,7 @@
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}"> <input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
<div class="row justify-content-between pe-3 py-1"> <div class="row justify-content-between pe-3 py-1">
<div class="col-auto"> <div class="col-auto">
<select class="form-select" name="rowCnt" id="rowCnt"> <select class="form-select form-select-sm" name="rowCnt" id="rowCnt">
<th:block th:each="num : ${#numbers.sequence(1,5)}"> <th:block th:each="num : ${#numbers.sequence(1,5)}">
<option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt eq num*10}"></option> <option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt eq num*10}"></option>
</th:block> </th:block>

View File

@ -42,7 +42,8 @@
<div class="mb-3 row justify-content-center"> <div class="mb-3 row justify-content-center">
<label for="content" class="col-sm-2 col-form-label text-center">내용</label> <label for="content" class="col-sm-2 col-form-label text-center">내용</label>
<div class="col-sm-10"> <div class="col-sm-10">
<textarea type='text' id="content" name='content' th:utext="${info.content}"></textarea> <div id="editor"></div>
<textarea id="content" class="d-none" th:utext="${info.content}"></textarea>
</div> </div>
</div> </div>
<div class="row mb-3"> <div class="row mb-3">

View File

@ -20,7 +20,7 @@
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}"> <input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
<div class="row justify-content-between pe-3 py-1"> <div class="row justify-content-between pe-3 py-1">
<div class="col-auto"> <div class="col-auto">
<select class="form-select" name="rowCnt" id="rowCnt"> <select class="form-select form-select-sm" name="rowCnt" id="rowCnt">
<th:block th:each="num : ${#numbers.sequence(1,5)}"> <th:block th:each="num : ${#numbers.sequence(1,5)}">
<option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt eq num*10}"></option> <option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt eq num*10}"></option>
</th:block> </th:block>
@ -149,170 +149,3 @@
</div> </div>
</div> </div>
</html> </html>
<!--<!DOCTYPE html>-->
<!--<html lang="ko" xmlns:th="http://www.thymeleaf.org"-->
<!-- xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5"-->
<!-- xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"-->
<!-- layout:decorate="~{layout/layout}">-->
<!--<th:block layout:fragment="script">-->
<!-- &lt;!&ndash;<script type="text/javascript" th:src="@{/js/igActivities/fpiMgt/affairPlan.js}"></script>&ndash;&gt;-->
<!--</th:block>-->
<!--<div layout:fragment="content">-->
<!-- <main class="pt-3">-->
<!-- <h4>Q&A</h4>-->
<!-- <input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>-->
<!-- <input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>-->
<!-- <div class="row mx-0">-->
<!-- <div class="col-12 card text-center">-->
<!-- <div class="card-body">-->
<!-- <form method="get" th:action="@{/fpiMgt/monthPlanPage}">-->
<!-- <input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">-->
<!-- <div class="row justify-content-between pe-3 py-1">-->
<!-- <div class="col-auto">-->
<!-- <select class="form-select" name="rowCnt" id="rowCnt">-->
<!-- <th:block th:each="num : ${#numbers.sequence(1,5)}">-->
<!-- <option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt eq num*10}"></option>-->
<!-- </th:block>-->
<!-- </select>-->
<!-- </div>-->
<!-- <div class="col-auto">-->
<!-- &lt;!&ndash;<div class="row justify-content-end">-->
<!-- <div class="col-auto" th:if="${accessAuth eq 'ACC003'}">-->
<!-- <select class="form-select form-select-sm" name="wrtOrgan">-->
<!-- <option value="">관서 선택</option>-->
<!-- <th:block th:each="commonCode:${session.commonCode.get('OG')}">-->
<!-- <th:block th:if="${#lists.contains(mgtOrganList, commonCode.itemCd)}">-->
<!-- <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq searchParams.wrtOrgan}"></option>-->
<!-- </th:block>-->
<!-- </th:block>-->
<!-- </select>-->
<!-- </div>-->
<!-- <div class="col-auto">-->
<!-- <input type="text" class="form-control form-control-sm" placeholder="제목" name="contentTitle" th:value="${searchParams.contentTitle}">-->
<!-- </div>-->
<!-- <div class="col-auto" th:if="${accessAuth eq 'ACC003'}">-->
<!-- <input type="text" class="form-control form-control-sm" placeholder="작성자" name="wrtUserNm" th:value="${searchParams.wrtUserNm}">-->
<!-- </div>-->
<!-- <div class="col-auto">-->
<!-- <select class="form-select form-select-sm" name="planState">-->
<!-- <option value="">상태 선택</option>-->
<!-- <th:block th:each="commonCode:${session.commonCode.get('DST')}">-->
<!-- <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq searchParams.planState}"></option>-->
<!-- </th:block>-->
<!-- </select>-->
<!-- </div>-->
<!-- <div class="col-4">-->
<!-- <div class="input-group w-auto input-daterange" id="dateSelectorDiv">-->
<!-- <select class="form-select form-select-sm" name="dateSelector">-->
<!-- <option value="">조건선택</option>-->
<!-- <option value="planDt" th:selected="${searchParams.dateSelector eq 'planDt'}">시행일</option>-->
<!-- <option value="wrtDt" th:selected="${searchParams.dateSelector eq 'wrtDt'}">작성일</option>-->
<!-- </select>-->
<!-- <input type="text" class="form-control form-control-sm" id="startDate" name="startDate" placeholder="시작일" autocomplete="off" readonly th:value="${searchParams.startDate}">-->
<!-- <input type="text" class="form-control form-control-sm" id="endDate" name="endDate" placeholder="종료일" autocomplete="off" readonly th:value="${searchParams.endDate}">-->
<!-- </div>-->
<!-- </div>-->
<!-- <input type="submit" class="btn btn-sm btn-primary col-auto" id="searchBtn" value="검색">-->
<!-- </div>&ndash;&gt;-->
<!-- </div>-->
<!-- </div>-->
<!-- </form>-->
<!-- <div class="row justify-content-start">-->
<!-- <div class="col-12">-->
<!-- <div class="card">-->
<!-- <div class="card-body">-->
<!-- <div class="row">-->
<!-- <table class="table table-hover">-->
<!-- <thead>-->
<!-- <tr>-->
<!-- <th></th>-->
<!-- <th>제목</th>-->
<!-- <th>관서</th>-->
<!-- <th>부서</th>-->
<!-- <th>작성자</th>-->
<!-- <th>작성일시</th>-->
<!-- <th>첨부파일</th>-->
<!-- <th>댓글</th>-->
<!-- </tr>-->
<!-- </thead>-->
<!-- <tbody>-->
<!-- &lt;!&ndash;<tr class="planTr" th:each="plan:${planList}">-->
<!-- <input type="hidden" class="planKey" th:value="${plan.planKey}">-->
<!-- <td><input type="checkbox" class="trChkBox"></td>-->
<!-- <td th:text="${plan.contentTitle}"></td>-->
<!-- <td th:text="${#temporals.format(plan.planDt, 'yyyy-MM-dd')}"></td>-->
<!-- <th:block th:each="commonCode:${session.commonCode.get('OG')}">-->
<!-- <td th:if="${plan.wrtOrgan eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>-->
<!-- </th:block>-->
<!-- <th:block th:each="commonCode:${session.commonCode.get('OFC')}">-->
<!-- <td th:if="${plan.wrtPart eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>-->
<!-- </th:block>-->
<!-- <td th:text="${plan.wrtUserNm}"></td>-->
<!-- <td th:text="${#temporals.format(plan.wrtDt, 'yyyy-MM-dd HH:mm')}"></td>-->
<!-- <td th:text="${plan.fileCnt eq null?'파일 없음':#strings.concat(plan.fileCnt,' 건')}"></td>-->
<!-- <td th:if="${plan.planState eq 'DST001'}">임시저장</td>-->
<!-- <td th:if="${plan.planState eq 'DST002'}">결재대기</td>-->
<!-- <td th:if="${plan.planState eq 'DST003'}">계장반려</td>-->
<!-- <td th:if="${plan.planState eq 'DST004'}">계장결재</td>-->
<!-- <td th:if="${plan.planState eq 'DST005'}">부장반려</td>-->
<!-- <td th:if="${plan.planState eq 'DST006'}">부장결재</td>-->
<!-- </tr>&ndash;&gt;-->
<!-- </tbody>-->
<!-- </table>-->
<!-- </div>-->
<!-- <div class="row justify-content-between">-->
<!-- <div class="col-auto"></div>-->
<!-- <div class="col-auto">-->
<!-- <nav aria-label="Page navigation">-->
<!-- <ul class="pagination">-->
<!-- <th:block th:if="${searchParams.pageIndex>3}">-->
<!-- <li class="page-item" th:data-pageindex="${(searchParams.pageIndex)-3}">-->
<!-- <a class="page-link" href="#" aria-label="Previous">-->
<!-- <span aria-hidden="true">&laquo;</span>-->
<!-- </a>-->
<!-- </li>-->
<!-- </th:block>-->
<!-- <th:block th:each="num : ${#numbers.sequence(searchParams.startNum, searchParams.endNum)}">-->
<!-- <li class="page-item" th:data-pageindex="${num}" th:classappend="${searchParams.pageIndex eq num?'active':''}">-->
<!-- <a class="page-link" href="#" th:text="${num}"></a>-->
<!-- </li>-->
<!-- </th:block>-->
<!-- <th:block th:if="${searchParams.maxNum>searchParams.endNum+2}">-->
<!-- <li class="page-item" th:data-pageindex="${(searchParams.pageIndex)+3}">-->
<!-- <a class="page-link" href="#" aria-label="Next">-->
<!-- <span aria-hidden="true">&raquo;</span>-->
<!-- </a>-->
<!-- </li>-->
<!-- </th:block>-->
<!-- </ul>-->
<!-- </nav>-->
<!-- </div>-->
<!-- <div class="col-auto">-->
<!-- <input type="button" class="btn btn-success" value="등록" id="addqnaBtn" sec:authorize="hasRole('ROLE_SUB_ADMIN')">-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </main>-->
<!-- <div class="modal fade" id="qnaEditModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="noticeEditModalLabel" aria-hidden="true">-->
<!-- <div class="modal-dialog modal-xl modal-dialog-scrollable">-->
<!-- <div class="modal-content" id="noticeEditContent">-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="modal fade" id="noticeViewModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="noticeViewModalLabel" aria-hidden="true">-->
<!-- <div class="modal-dialog modal-xl modal-dialog-scrollable">-->
<!-- <div class="modal-content" id="noticeViewContent">-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!--</div>-->
<!--</html>-->

View File

@ -61,7 +61,8 @@
<div class="mb-3 row justify-content-center"> <div class="mb-3 row justify-content-center">
<label for="content" class="col-sm-2 col-form-label text-center">내용</label> <label for="content" class="col-sm-2 col-form-label text-center">내용</label>
<div class="col-sm-10"> <div class="col-sm-10">
<textarea type='text' id="content" name='content' th:utext="${info.content}"></textarea> <div id="editor"></div>
<textarea id="content" class="d-none" th:utext="${info.content}"></textarea>
</div> </div>
</div> </div>
<div class="row mb-3"> <div class="row mb-3">

View File

@ -28,7 +28,7 @@
<input type="hidden" name="tabStatus" th:value="${searchParams.tabStatus}"> <input type="hidden" name="tabStatus" th:value="${searchParams.tabStatus}">
<div class="row justify-content-between pe-3 py-1"> <div class="row justify-content-between pe-3 py-1">
<div class="col-auto"> <div class="col-auto">
<select class="form-select" name="rowCnt" id="rowCnt"> <select class="form-select form-select-sm" name="rowCnt" id="rowCnt">
<th:block th:each="num : ${#numbers.sequence(1,5)}"> <th:block th:each="num : ${#numbers.sequence(1,5)}">
<option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt eq num*10}"></option> <option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt eq num*10}"></option>
</th:block> </th:block>

View File

@ -18,7 +18,7 @@
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}"> <input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
<div class="row pe-3 py-1"> <div class="row pe-3 py-1">
<div class="col-1"> <div class="col-1">
<select class="form-select" name="rowCnt" id="rowCnt"> <select class="form-select form-select-sm" name="rowCnt" id="rowCnt">
<th:block th:each="num : ${#numbers.sequence(1,5)}"> <th:block th:each="num : ${#numbers.sequence(1,5)}">
<option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt==num*10}"></option> <option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt==num*10}"></option>
</th:block> </th:block>