외사경찰 > 경력관리 작업중.
parent
5646a8cdb0
commit
412aa9e0ac
|
|
@ -125,10 +125,12 @@ public class SecurityConfig{
|
|||
.exceptionHandling()
|
||||
.accessDeniedHandler(accessDeniedHandler())
|
||||
.authenticationEntryPoint(authenticationEntryPoint());
|
||||
|
||||
// 나모 에디터 'X-Frame-Options' to 'DENY' 오류로 인하여 추가.
|
||||
// https://computer-science-student.tistory.com/497
|
||||
http.headers().frameOptions().sameOrigin();
|
||||
http.csrf().ignoringAntMatchers("/Crosseditor/uploadImg");//csrf예외처리
|
||||
// 나모에디터 이미지 업로드시 csrf 토큰을 추가할 수 없어서 예외처리.
|
||||
http.csrf().ignoringAntMatchers("/Crosseditor/uploadImg");
|
||||
return http.build();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,10 +7,7 @@ import com.dbnt.faisp.main.codeMgt.model.CodeMgt;
|
|||
import com.dbnt.faisp.main.codeMgt.service.CodeMgtService;
|
||||
import com.dbnt.faisp.main.fipTarget.model.PartInfo;
|
||||
import com.dbnt.faisp.main.fipTarget.model.ShipInfo;
|
||||
import com.dbnt.faisp.main.userInfo.model.PersonnelStatus;
|
||||
import com.dbnt.faisp.main.userInfo.model.UserEdu;
|
||||
import com.dbnt.faisp.main.userInfo.model.UserInfo;
|
||||
import com.dbnt.faisp.main.userInfo.model.UserInfoHistory;
|
||||
import com.dbnt.faisp.main.userInfo.model.*;
|
||||
import com.dbnt.faisp.main.userInfo.service.UserInfoService;
|
||||
import com.dbnt.faisp.util.ParamMap;
|
||||
import com.dbnt.faisp.util.Utils;
|
||||
|
|
@ -219,18 +216,30 @@ public class FaispController {
|
|||
mav.addObject("searchParams", userInfo);
|
||||
return mav;
|
||||
}
|
||||
@GetMapping("/careerEditModal")
|
||||
public ModelAndView careerEditModal(@AuthenticationPrincipal UserInfo loginUser, UserInfo userInfo){
|
||||
ModelAndView mav = new ModelAndView("faisp/career/careerEditModal");
|
||||
@GetMapping("/careerModal")
|
||||
public ModelAndView careerModal(@AuthenticationPrincipal UserInfo loginUser, UserInfo userInfo){
|
||||
ModelAndView mav = new ModelAndView("faisp/career/careerModal");
|
||||
|
||||
//메뉴권한 확인
|
||||
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faisp/educationMgt").get(0).getAccessAuth();
|
||||
mav.addObject("accessAuth", accessAuth);
|
||||
mav.addObject("crcList", codeMgtService.selectCodeMgtList("CRC", ""));
|
||||
mav.addObject("userInfo", userInfoService.selectPoliceInfo(userInfo.getUserSeq()));
|
||||
/*mav.addObject("eduList", userInfoService.selectEduList());*/
|
||||
mav.addObject("userSeq", loginUser.getUserSeq());
|
||||
return mav;
|
||||
}
|
||||
@GetMapping("/careerFormModal")
|
||||
public ModelAndView careerFormModal(@AuthenticationPrincipal UserInfo loginUser, UserCareer career){
|
||||
ModelAndView mav = new ModelAndView("faisp/career/careerFormModal");
|
||||
mav.addObject("crcList", codeMgtService.selectCodeMgtList("CRC", ""));
|
||||
mav.addObject("dsnList", codeMgtService.selectCodeMgtList("DSN", ""));
|
||||
mav.addObject("ogList", codeMgtService.selectCodeMgtList("OG", ""));
|
||||
mav.addObject("ofcList", codeMgtService.selectCodeMgtList("OFC", ""));
|
||||
mav.addObject("jtList", codeMgtService.selectCodeMgtList("JT", ""));
|
||||
mav.addObject("career", career);
|
||||
return mav;
|
||||
}
|
||||
|
||||
@GetMapping("/educationMgt")
|
||||
public ModelAndView educationMgt(@AuthenticationPrincipal UserInfo loginUser, UserInfo userInfo, HttpServletResponse response){
|
||||
|
|
|
|||
|
|
@ -0,0 +1,77 @@
|
|||
package com.dbnt.faisp.main.userInfo.model;
|
||||
|
||||
import lombok.*;
|
||||
import org.hibernate.annotations.DynamicInsert;
|
||||
import org.hibernate.annotations.DynamicUpdate;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Entity
|
||||
@NoArgsConstructor
|
||||
@DynamicInsert
|
||||
@DynamicUpdate
|
||||
@IdClass(UserCareer.UserCareerId.class)
|
||||
@Table(name = "user_career")
|
||||
public class UserCareer{
|
||||
@Id
|
||||
@Column(name = "user_seq")
|
||||
private Integer userSeq;
|
||||
@Id
|
||||
@Column(name = "career_seq")
|
||||
private Integer careerSeq;
|
||||
@Column(name = "career_cd")
|
||||
private String careerCd;
|
||||
@Column(name = "designation_cd")
|
||||
private String designationCd;
|
||||
@Column(name = "work_organ")
|
||||
private String workOrgan;
|
||||
@Column(name = "work_part")
|
||||
private String workPart;
|
||||
@Column(name = "work_position_str")
|
||||
private String workPositionStr;
|
||||
@Column(name = "work_title")
|
||||
private String workTitle;
|
||||
@Column(name = "start_date")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDate startDate;
|
||||
@Column(name = "end_date")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDate endDate;
|
||||
@Column(name = "work_day")
|
||||
private Integer workDay;
|
||||
@Column(name = "work_month")
|
||||
private Integer workMonth;
|
||||
@Column(name = "hord_cd")
|
||||
private String hordCd;
|
||||
|
||||
@Column(name = "wrt_organ")
|
||||
private String wrtOrgan;
|
||||
@Column(name = "wrt_part")
|
||||
private String wrtPart;
|
||||
@Column(name = "wrt_user_seq")
|
||||
private String wrtUserSeq;
|
||||
@Column(name = "wrt_user_grd")
|
||||
private Integer wrtUserGrd;
|
||||
@Column(name = "wrt_user_nm")
|
||||
private String wrtUserNm;
|
||||
@Column(name = "wrt_dt")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
|
||||
private LocalDateTime wrtDt;
|
||||
|
||||
@Embeddable
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public static class UserCareerId implements Serializable {
|
||||
private Integer userSeq;
|
||||
private Integer careerSeq;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
package com.dbnt.faisp.main.userInfo.repository;
|
||||
|
||||
import com.dbnt.faisp.main.userInfo.model.UserCareer;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
|
||||
public interface UserCareerRepository extends JpaRepository<UserCareer, UserCareer.UserCareerId> {
|
||||
|
||||
}
|
||||
|
|
@ -268,13 +268,14 @@
|
|||
|
||||
<select id="selectPoliceInfo" resultType="UserInfo" parameterType="Integer">
|
||||
select user_seq,
|
||||
user_nm,
|
||||
(select item_value from code_mgt where item_cd = title_cd) as title_cd,
|
||||
(select item_value from code_mgt where item_cd = og_cd) as og_cd,
|
||||
(select item_value from code_mgt where item_cd = ofc_cd) as ofc_cd,
|
||||
(select item_value from code_mgt where item_cd = sex) as sex,
|
||||
birth_date,
|
||||
(select item_value from code_mgt where item_cd = language_cd) as language_cd
|
||||
user_nm,
|
||||
dic_code,
|
||||
(select item_value from code_mgt where item_cd = title_cd) as title_cd,
|
||||
(select item_value from code_mgt where item_cd = og_cd) as og_cd,
|
||||
(select item_value from code_mgt where item_cd = ofc_cd) as ofc_cd,
|
||||
(select item_value from code_mgt where item_cd = sex) as sex,
|
||||
birth_date,
|
||||
(select item_value from code_mgt where item_cd = language_cd) as language_cd
|
||||
from user_info
|
||||
where user_seq = #{userSeq}
|
||||
</select>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,3 @@
|
|||
let eduList=[];
|
||||
let selectedIdx=0;
|
||||
|
||||
|
||||
$(document).on('click', '#previousTab', function (){
|
||||
const userStatus = $(this).data('userstatus');
|
||||
location.href = "/faisp/careerMgt?userStatus="+userStatus;
|
||||
|
|
@ -18,18 +14,13 @@ $(document).on('click', '#notPoliceTab', function (){
|
|||
|
||||
$(document).on('click', '.policeTr', function (){
|
||||
$.ajax({
|
||||
url: '/faisp/careerEditModal',
|
||||
url: '/faisp/careerModal',
|
||||
data: {userSeq: $(this).find(".userSeq").val()},
|
||||
type: 'GET',
|
||||
dataType:"html",
|
||||
success: function(html){
|
||||
$("#careerEditModalContent").empty().append(html);
|
||||
$(".dateSelector").datepicker({
|
||||
format: "yyyy-mm-dd",
|
||||
language: "ko",
|
||||
autoclose: true
|
||||
});
|
||||
$("#careerEditModal").modal('show');
|
||||
$("#careerModalContent").empty().append(html);
|
||||
$("#careerModal").modal('show');
|
||||
},
|
||||
error:function(){
|
||||
|
||||
|
|
@ -37,122 +28,60 @@ $(document).on('click', '.policeTr', 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', '.careerAddBtn', function (){
|
||||
$.ajax({
|
||||
url: '/faisp/careerFormModal',
|
||||
data: {
|
||||
userSeq: $("#editModelUserSeq").val(),
|
||||
careerCd: $(this).attr("data-careercd")
|
||||
},
|
||||
type: 'GET',
|
||||
dataType:"html",
|
||||
success: function(html){
|
||||
$("#careerFormModalContent").empty().append(html);
|
||||
$("#dateSelectorDiv").datepicker({
|
||||
format: "yyyy-mm-dd",
|
||||
language: "ko",
|
||||
autoclose: true
|
||||
});
|
||||
$("#careerFormModal").modal('show');
|
||||
},
|
||||
error:function(){
|
||||
|
||||
$(document).on('click', '.rowDeleteBtn', function (){
|
||||
selectedIdx = $(this).parents("#eduDiv").index()-1;
|
||||
eduList.splice(selectedIdx,1);
|
||||
$(this).parents('#eduDiv').remove();
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
$(document).on('change', '.eduInput', function (){
|
||||
selectedIdx = $(this).parents("#eduDiv").index()-1;
|
||||
const target = eduList[selectedIdx];
|
||||
switch (this.name){
|
||||
case "eduName":
|
||||
target.eduName = this.value
|
||||
break;
|
||||
case "eduSdate":
|
||||
target.eduSdate = this.value
|
||||
break;
|
||||
case "eduEdate":
|
||||
target.eduEdate = this.value
|
||||
break;
|
||||
case "eduRa":
|
||||
target.eduRa = this.value
|
||||
break;
|
||||
$(document).on('change', '#positionCheckBox', function (){
|
||||
const selfInputDiv = $("#selfInputDiv");
|
||||
const selectInputDiv = $("#selectInputDiv");
|
||||
if(this.checked){
|
||||
selfInputDiv.show();
|
||||
selfInputDiv.find("input").removeAttr("disabled");
|
||||
selectInputDiv.hide();
|
||||
selectInputDiv.find("select").attr("disabled", "disabled");
|
||||
}else{
|
||||
selfInputDiv.hide();
|
||||
selfInputDiv.find("input").attr("disabled", "disabled");
|
||||
selectInputDiv.show();
|
||||
selectInputDiv.find("select").removeAttr("disabled");
|
||||
}
|
||||
})
|
||||
|
||||
$(document).on('click', '#saveBtn', function (){
|
||||
if(eduList.length < 1){
|
||||
alert("새로 입력된 교육정보가 없습니다.");
|
||||
return false;
|
||||
}
|
||||
if(confirm("저장하시겠습니까?")){
|
||||
contentFade("in");
|
||||
$.ajax({
|
||||
type : 'POST',
|
||||
data : JSON.stringify(eduList),
|
||||
url : "/faisp/saveEdu",
|
||||
contentType: 'application/json',
|
||||
beforeSend: function (xhr){
|
||||
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
|
||||
},
|
||||
success : function(data) {
|
||||
contentFade("out");
|
||||
alert("교육등록이 완료되었습니다.");
|
||||
showModal(data);
|
||||
eduList.length = 0;
|
||||
},
|
||||
error : function(xhr, status) {
|
||||
contentFade("out");
|
||||
alert("교육등록을 실패하였습니다");
|
||||
}
|
||||
})
|
||||
if(checkValue()){
|
||||
|
||||
}
|
||||
})
|
||||
|
||||
$(document).on('click', '#deleteBtn', function (){
|
||||
const eduSeq = (Number($(this).data('eduseq')));
|
||||
const userSeq = (Number($(this).data('userseq')));
|
||||
if(confirm("삭제하시겠습니까?")){
|
||||
$.ajax({
|
||||
type : 'POST',
|
||||
url : "/faisp/deleteEdu",
|
||||
data : JSON.stringify({eduSeq:eduSeq,
|
||||
userSeq:userSeq}),
|
||||
contentType: 'application/json',
|
||||
beforeSend: function (xhr){
|
||||
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
|
||||
},
|
||||
success : function(data) {
|
||||
alert("삭제 처리되었습니다.");
|
||||
showModal(data);
|
||||
},
|
||||
error : function(xhr, status) {
|
||||
alert("삭제 처리에 실패하였습니다");
|
||||
}
|
||||
})
|
||||
function checkValue(){
|
||||
let flag = true;
|
||||
const form = $("#careerForm");
|
||||
if(!form.find("#designationCd").val()){
|
||||
alert("임용구분을 선택해주세요.")
|
||||
flag = false;
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
if(!form.find("#startDate").val()){
|
||||
alert("근무 시작일을 입력해주세요.")
|
||||
flag = false;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -66,8 +66,8 @@
|
|||
<label for="sex" class="col-sm-2 col-form-label col-form-label-sm text-center">성별</label>
|
||||
<div class="col-sm-4">
|
||||
<select class="form-select form-select-sm" id="sex" name="sex">
|
||||
<option value="M" th:selected="${userInfo.sex eq 'M'}">남</option>
|
||||
<option value="F" th:selected="${userInfo.sex eq 'F'}">여</option>
|
||||
<option value="SEX002" th:selected="${userInfo.sex eq 'SEX002'}">남</option>
|
||||
<option value="SEX001" th:selected="${userInfo.sex eq 'SEX001'}">여</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,90 +0,0 @@
|
|||
<!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>
|
||||
|
|
@ -0,0 +1,92 @@
|
|||
<!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">
|
||||
<form id="careerForm" action="#" method="POST"></form>
|
||||
<input type="hidden" name="userSeq" th:value="${career.userSeq}">
|
||||
<div class="row my-1">
|
||||
<label for="careerCd" class="col-sm-2 col-form-label col-form-label-sm text-center">경력구분</label>
|
||||
<div class="col-sm-4">
|
||||
<select class="form-select form-select-sm" id="careerCd" name="careerCd">
|
||||
<th:block th:each="code:${crcList}">
|
||||
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq career.careerCd}"></option>
|
||||
</th:block>
|
||||
</select>
|
||||
</div>
|
||||
<label for="designationCd" class="col-sm-2 col-form-label col-form-label-sm text-center">임용구분</label>
|
||||
<div class="col-sm-4">
|
||||
<select class="form-select form-select-sm" id="designationCd" name="designationCd">
|
||||
<option value="">선택</option>
|
||||
<th:block th:each="code:${dsnList}">
|
||||
<option th:value="${code.itemCd}" th:text="${code.itemValue}"></option>
|
||||
</th:block>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row my-1">
|
||||
<label class="col-sm-2 col-form-label col-form-label-sm text-center fs-13">근무지</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="row border m-0 py-1">
|
||||
<div class="col-12">
|
||||
<input type="checkbox" id="positionCheckBox">
|
||||
<label for="positionCheckBox" class="col-sm-2 col-form-label col-form-label-sm px-2">직접입력</label>
|
||||
</div>
|
||||
<div class="col-12" id="selfInputDiv" style="display: none">
|
||||
<input type="text" class="form-control form-control-sm" id="workPositionStr" name="workPositionStr">
|
||||
</div>
|
||||
<div class="col-12" id="selectInputDiv">
|
||||
<div class="row">
|
||||
<label for="workOrgan" class="col-sm-1 col-form-label col-form-label-sm text-center fs-13">관서</label>
|
||||
<div class="col-sm-3">
|
||||
<select class="form-select form-select-sm" id="workOrgan" name="workOrgan">
|
||||
<option value="">선택</option>
|
||||
<th:block th:each="code:${ogList}">
|
||||
<option th:value="${code.itemCd}" th:text="${code.itemValue}"></option>
|
||||
</th:block>
|
||||
</select>
|
||||
</div>
|
||||
<label for="workPart" class="col-sm-1 col-form-label col-form-label-sm text-center fs-13">부서</label>
|
||||
<div class="col-sm-3">
|
||||
<select class="form-select form-select-sm" id="workPart" name="workPart">
|
||||
<option value="">선택</option>
|
||||
<th:block th:each="code:${ofcList}">
|
||||
<option th:value="${code.itemCd}" th:text="${code.itemValue}"></option>
|
||||
</th:block>
|
||||
</select>
|
||||
</div>
|
||||
<label for="workTitle" class="col-sm-1 col-form-label col-form-label-sm text-center fs-13">직급</label>
|
||||
<div class="col-sm-3">
|
||||
<select class="form-select form-select-sm" id="workTitle" name="workTitle">
|
||||
<option value="">선택</option>
|
||||
<th:block th:each="code:${jtList}">
|
||||
<option th:value="${code.itemCd}" th:text="${code.itemValue}"></option>
|
||||
</th:block>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row my-1">
|
||||
<label for="dateSelectorDiv" class="col-sm-2 col-form-label col-form-label-sm text-center fs-13">근무일</label>
|
||||
<div class="col-sm-4">
|
||||
<div class="input-group w-auto input-daterange" id="dateSelectorDiv">
|
||||
<input type="text" class="form-control form-control-sm" id="startDate" name="startDate" placeholder="시작일" autocomplete="off" readonly>
|
||||
<input type="text" class="form-control form-control-sm" id="endDate" name="endDate" placeholder="종료일" autocomplete="off" readonly>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer row justify-content-between">
|
||||
<div class="col-auto">
|
||||
<button type="button" class="btn btn-primary" id="saveBtn">저장</button>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
|
||||
</div>
|
||||
</div>
|
||||
</html>
|
||||
|
|
@ -83,7 +83,7 @@
|
|||
<th>계급</th>
|
||||
<th>성명</th>
|
||||
<th>청</th>
|
||||
<th>현부서<br>과</th>
|
||||
<th>부서</th>
|
||||
<th>생년월일</th>
|
||||
<th>성별</th>
|
||||
<th>외사경력</th>
|
||||
|
|
@ -91,7 +91,6 @@
|
|||
<th>정보경력</th>
|
||||
<th>보안경력</th>
|
||||
<th>국제경력</th>
|
||||
<th>최종<br>수정일</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="table-group-divider">
|
||||
|
|
@ -109,7 +108,6 @@
|
|||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td th:text="${#temporals.format(list.wrtDt, 'yyyy-MM-dd HH:mm')}"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
@ -158,9 +156,17 @@
|
|||
</div>
|
||||
</main>
|
||||
|
||||
<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 fade" id="careerModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="careerModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-xl modal-dialog-scrollable">
|
||||
<div class="modal-content" id="careerModalContent">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="careerFormModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="careerFormModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg modal-dialog-scrollable">
|
||||
<div class="modal-content" id="careerEditModalContent">
|
||||
<div class="modal-content" id="careerFormModalContent">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,67 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" th:text="|${userInfo.ogCd} ${userInfo.ofcCd} ${userInfo.titleCd} ${userInfo.userNm}|"></h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<input type="hidden" id="editModelUserSeq" th:value="${userInfo.userSeq}">
|
||||
<div class="card">
|
||||
<div class="card-body text-center">
|
||||
<ul class="nav nav-tabs" id="userTab" role="tablist">
|
||||
<th:block th:each="code, idx:${crcList}">
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link" type="button" role="tab" data-bs-toggle="tab" th:id="|${code.itemCd}Tab|"
|
||||
th:data-bs-target="${#strings.concat('#', code.itemCd, 'TabPanel')}" th:aria-controls="|${code.itemCd}TabPanel|"
|
||||
th:aria-selected="${idx.index eq 0?'true':'false'}" th:classappend="${idx.index eq 0?'active':''}"
|
||||
th:text="${code.itemValue}"></button>
|
||||
</li>
|
||||
</th:block>
|
||||
</ul>
|
||||
<div class="tab-content border border-top-0">
|
||||
<th:block th:each="code, idx:${crcList}">
|
||||
<div class="tab-pane fade p-2" th:classappend="${idx.index eq 0?'show active':''}"
|
||||
th:id="|${code.itemCd}TabPanel|" role="tabpanel"
|
||||
th:aria-labelledby="|${code.itemCd}Tab|" tabindex="0">
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>임용구분</th>
|
||||
<th>근무지</th>
|
||||
<th>직급</th>
|
||||
<th>시작일</th>
|
||||
<th>종료일</th>
|
||||
<th>일수</th>
|
||||
<th>개월수</th>
|
||||
<th>등록자</th>
|
||||
<th>등록일</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody th:id="|${code.itemValue}Tbody|">
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="9">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-auto">
|
||||
<button type="button" class="btn btn-sm btn-primary careerAddBtn" th:data-careercd="${code.itemCd}">추가</button>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<button type="button" class="btn btn-sm btn-success kwmsCareerBtn" th:classappend="${#strings.isEmpty(userInfo.dicCode)?'disabled':''}">인사시스템 경력정보</button>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
</th:block>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
|
||||
</div>
|
||||
</html>
|
||||
|
|
@ -50,8 +50,8 @@
|
|||
<label for="sex" class="col-sm-2 col-form-label col-form-label-sm text-center">성별</label>
|
||||
<div class="col-sm-4">
|
||||
<select class="form-select form-select-sm" id="sex" name="sex">
|
||||
<option value="M" th:selected="${userInfo.sex eq 'M'}">남</option>
|
||||
<option value="F" th:selected="${userInfo.sex eq 'F'}">여</option>
|
||||
<option value="SEX002" th:selected="${userInfo.sex eq 'SEX002'}">남</option>
|
||||
<option value="SEX001" th:selected="${userInfo.sex eq 'SEX001'}">여</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -60,8 +60,8 @@
|
|||
<label for="sex" class="col-sm-2 col-form-label col-form-label-sm text-center">성별</label>
|
||||
<div class="col-sm-4">
|
||||
<select class="form-select form-select-sm" id="sex" name="sex">
|
||||
<option value="M" th:selected="${userInfo.sex eq 'M'}">남</option>
|
||||
<option value="F" th:selected="${userInfo.sex eq 'F'}">여</option>
|
||||
<option value="SEX002" th:selected="${userInfo.sex eq 'M'}">남</option>
|
||||
<option value="SEX001" th:selected="${userInfo.sex eq 'F'}">여</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -88,8 +88,8 @@
|
|||
<label for="sex" class="col-sm-2 col-form-label col-form-label-sm text-center">성별</label>
|
||||
<div class="col-sm-4">
|
||||
<select class="form-select form-select-sm" id="sex" name="sex">
|
||||
<option value="M" th:selected="${userInfo.sex eq 'M'}">남</option>
|
||||
<option value="F" th:selected="${userInfo.sex eq 'F'}">여</option>
|
||||
<option value="SEX002" th:selected="${userInfo.sex eq 'SEX002'}">남</option>
|
||||
<option value="SEX001" th:selected="${userInfo.sex eq 'SEX001'}">여</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Reference in New Issue