# Conflicts:
#	src/main/java/com/dbnt/faisp/main/userInfo/mapper/UserInfoMapper.java
#	src/main/java/com/dbnt/faisp/main/userInfo/service/UserInfoService.java
#	src/main/resources/mybatisMapper/UserInfoMapper.xml
강석 최 2022-11-16 18:54:46 +09:00
commit 810d893daf
9 changed files with 277 additions and 110 deletions

View File

@ -8,6 +8,7 @@ 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.service.UserInfoService;
@ -212,6 +213,7 @@ public class FaispController {
mav.addObject("searchParams", userInfo);
return mav;
}
@GetMapping("/educationMgt")
public ModelAndView educationMgt(@AuthenticationPrincipal UserInfo loginUser, UserInfo userInfo, HttpServletResponse response){
ModelAndView mav = new ModelAndView("faisp/educationMgt");
@ -221,7 +223,7 @@ public class FaispController {
}
//메뉴권한 확인
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faisp/policeList").get(0).getAccessAuth();
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faisp/educationMgt").get(0).getAccessAuth();
mav.addObject("accessAuth", accessAuth);
userInfo.setQueryInfo();
mav.addObject("policeList", userInfoService.selectPoliceList(userInfo));
@ -232,15 +234,33 @@ public class FaispController {
mav.addObject("searchParams", userInfo);
return mav;
}
@GetMapping("/eduEditModal")
public ModelAndView eduEditModal(@AuthenticationPrincipal UserInfo loginUser,UserInfo userInfo){
public ModelAndView eduEditModal(@AuthenticationPrincipal UserInfo loginUser,UserEdu userEdu){
ModelAndView mav = new ModelAndView("/faisp/eduEditModal");
//메뉴권한 확인
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faisp/policeList").get(0).getAccessAuth();
mav.addObject("accessAuth", accessAuth);
return mav;
//메뉴권한 확인
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faisp/educationMgt").get(0).getAccessAuth();
mav.addObject("accessAuth", accessAuth);
mav.addObject("userInfo", userInfoService.selectPoliceInfo(userEdu.getUserSeq()));
mav.addObject("eduList", userInfoService.selectEduList(userEdu));
mav.addObject("userSeq", loginUser.getUserSeq());
return mav;
}
@PostMapping("/saveEdu")
@ResponseBody
public int saveEdu(@AuthenticationPrincipal UserInfo loginUser,@RequestBody List<UserEdu> userEdu){
System.out.println("userEdu"+userEdu);
int userSeq = userInfoService.saveEdu(loginUser,userEdu);
return userSeq;
}
@PostMapping("/deleteEdu")
@ResponseBody
public int deleteEdu(@RequestBody UserEdu userEdu) {
int userSeq = userInfoService.deleteEdu(userEdu);
return userSeq;
}
private List<PersonnelStatus> calcStatusList(List<PersonnelStatus> statusList) {

View File

@ -2,6 +2,7 @@ package com.dbnt.faisp.main.userInfo.mapper;
import com.dbnt.faisp.main.userInfo.model.DashboardConfig;
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.util.ParamMap;
@ -31,4 +32,9 @@ public interface UserInfoMapper {
List<PersonnelStatus> selectPersonnelStatusList(PersonnelStatus personnelStatus);
PersonnelStatus nowPersonnelStatus(String ogCd);
UserInfo selectPoliceInfo(Integer userSeq);
List<UserEdu> selectEduList(UserEdu userEdu);
}

View File

@ -59,7 +59,20 @@ public class UserEdu extends BaseModel{
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
private LocalDateTime wrtDt;
@Embeddable
@Override
public String toString() {
return "UserEdu [eduSeq=" + eduSeq + ", userSeq=" + userSeq + ", eduName=" + eduName + ", eduSdate=" + eduSdate
+ ", eduEdate=" + eduEdate + ", eduRa=" + eduRa + ", wrtOrgan=" + wrtOrgan + ", wrtPart=" + wrtPart
+ ", wrtTitle=" + wrtTitle + ", wrtUserSeq=" + wrtUserSeq + ", wrtNm=" + wrtNm + ", wrtDt=" + wrtDt + "]";
}
@Embeddable
@Data
@NoArgsConstructor
@AllArgsConstructor

View File

@ -9,6 +9,8 @@ import org.springframework.data.jpa.repository.JpaRepository;
public interface UserEduRepository extends JpaRepository<UserEdu, UserEdu.UserEduId> {
UserEdu findTopByUserSeqOrderByEduSeqDesc(Integer userSeq);
}

View File

@ -6,10 +6,13 @@ import com.dbnt.faisp.main.fipTarget.model.ShipInfo;
import com.dbnt.faisp.main.userInfo.mapper.UserInfoMapper;
import com.dbnt.faisp.main.userInfo.model.DashboardConfig;
import com.dbnt.faisp.main.userInfo.model.PersonnelStatus;
import com.dbnt.faisp.main.userInfo.model.UserEdu;
import com.dbnt.faisp.main.userInfo.model.UserEdu.UserEduId;
import com.dbnt.faisp.main.userInfo.model.UserInfo;
import com.dbnt.faisp.main.userInfo.model.UserInfoHistory;
import com.dbnt.faisp.main.userInfo.repository.DashboardConfigRepository;
import com.dbnt.faisp.main.userInfo.repository.PersonnelStatusRepository;
import com.dbnt.faisp.main.userInfo.repository.UserEduRepository;
import com.dbnt.faisp.main.userInfo.repository.UserInfoHistoryRepository;
import com.dbnt.faisp.main.userInfo.repository.UserInfoRepository;
import com.dbnt.faisp.util.ParamMap;
@ -35,6 +38,7 @@ public class UserInfoService implements UserDetailsService {
private final UserInfoHistoryRepository userInfoHistoryRepository;
private final DashboardConfigRepository dashboardConfigRepository;
private final PersonnelStatusRepository personnelStatusRepository;
private final UserEduRepository userEduRepository;
private final UserInfoMapper userInfoMapper;
@Transactional
@ -49,41 +53,41 @@ public class UserInfoService implements UserDetailsService {
UserInfo result = userInfoRepository.save(userInfo);
UserInfoHistory dbHis = userInfoHistoryRepository.findByUserSeq(result.getUserSeq());
if(dbHis == null) {
UserInfoHistory hisTmp = new UserInfoHistory();
hisTmp.setUserSeq(result.getUserSeq());
hisTmp.setVersionNo(1);
hisTmp.setDicCode(result.getDicCode());
hisTmp.setUserId(result.getUserId());
hisTmp.setUserNm(result.getUserNm());
hisTmp.setBirthDate(result.getBirthDate());
hisTmp.setSex(result.getSex());
hisTmp.setEmail(result.getEmail());
hisTmp.setPhoneNo(result.getPhoneNo());
hisTmp.setAreaCd(result.getAreaCd());
hisTmp.setOgCd(result.getOgCd());
hisTmp.setOfcCd(result.getOfcCd());
hisTmp.setTitleCd(result.getTitleCd());
hisTmp.setGroupCd(result.getGroupCd());
hisTmp.setSeriesCd(result.getSeriesCd());
hisTmp.setOfcHeadYn(result.getOfcHeadYn());
hisTmp.setHiringCd(result.getHiringCd());
hisTmp.setEmployCd(result.getEmployCd());
hisTmp.setOutturnCd(result.getOutturnCd());
hisTmp.setWorkCd(result.getWorkCd());
hisTmp.setJobInCd(result.getJobInCd());
hisTmp.setLanguageCd(result.getLanguageCd());
hisTmp.setPoliceInDate(result.getPoliceInDate());
hisTmp.setOrganInDate(result.getOrganInDate());
hisTmp.setOfcInDate(result.getOfcInDate());
hisTmp.setTitleInDate(result.getTitleInDate());
hisTmp.setUserStatus(result.getUserStatus());
hisTmp.setWrtOrgan(result.getOgCd());
hisTmp.setWrtPart(result.getOfcCd());
hisTmp.setWrtTitle(result.getTitleCd());
hisTmp.setWrtUserSeq(result.getUserSeq());
hisTmp.setWrtNm(result.getUserNm());
hisTmp.setWrtDt(result.getWrtDt());
userInfoHistoryRepository.save(hisTmp);
UserInfoHistory hisTmp = new UserInfoHistory();
hisTmp.setUserSeq(result.getUserSeq());
hisTmp.setVersionNo(1);
hisTmp.setDicCode(result.getDicCode());
hisTmp.setUserId(result.getUserId());
hisTmp.setUserNm(result.getUserNm());
hisTmp.setBirthDate(result.getBirthDate());
hisTmp.setSex(result.getSex());
hisTmp.setEmail(result.getEmail());
hisTmp.setPhoneNo(result.getPhoneNo());
hisTmp.setAreaCd(result.getAreaCd());
hisTmp.setOgCd(result.getOgCd());
hisTmp.setOfcCd(result.getOfcCd());
hisTmp.setTitleCd(result.getTitleCd());
hisTmp.setGroupCd(result.getGroupCd());
hisTmp.setSeriesCd(result.getSeriesCd());
hisTmp.setOfcHeadYn(result.getOfcHeadYn());
hisTmp.setHiringCd(result.getHiringCd());
hisTmp.setEmployCd(result.getEmployCd());
hisTmp.setOutturnCd(result.getOutturnCd());
hisTmp.setWorkCd(result.getWorkCd());
hisTmp.setJobInCd(result.getJobInCd());
hisTmp.setLanguageCd(result.getLanguageCd());
hisTmp.setPoliceInDate(result.getPoliceInDate());
hisTmp.setOrganInDate(result.getOrganInDate());
hisTmp.setOfcInDate(result.getOfcInDate());
hisTmp.setTitleInDate(result.getTitleInDate());
hisTmp.setUserStatus(result.getUserStatus());
hisTmp.setWrtOrgan(result.getOgCd());
hisTmp.setWrtPart(result.getOfcCd());
hisTmp.setWrtTitle(result.getTitleCd());
hisTmp.setWrtUserSeq(result.getUserSeq());
hisTmp.setWrtNm(result.getUserNm());
hisTmp.setWrtDt(result.getWrtDt());
userInfoHistoryRepository.save(hisTmp);
}
return result.getUserId();
}
@ -154,41 +158,41 @@ public class UserInfoService implements UserDetailsService {
userInfoRepository.save(savedInfo);
UserInfoHistory dbHis = userInfoHistoryRepository.findTopByUserSeqOrderByVersionNoDesc(savedInfo.getUserSeq());
if(dbHis != null) {
UserInfoHistory hisTmp = new UserInfoHistory();
hisTmp.setUserSeq(savedInfo.getUserSeq());
hisTmp.setVersionNo(dbHis.getVersionNo()+1);
hisTmp.setDicCode(savedInfo.getDicCode());
hisTmp.setUserId(savedInfo.getUserId());
hisTmp.setUserNm(savedInfo.getUserNm());
hisTmp.setBirthDate(savedInfo.getBirthDate());
hisTmp.setSex(savedInfo.getSex());
hisTmp.setEmail(savedInfo.getEmail());
hisTmp.setPhoneNo(savedInfo.getPhoneNo());
hisTmp.setAreaCd(savedInfo.getAreaCd());
hisTmp.setOgCd(savedInfo.getOgCd());
hisTmp.setOfcCd(savedInfo.getOfcCd());
hisTmp.setTitleCd(savedInfo.getTitleCd());
hisTmp.setGroupCd(savedInfo.getGroupCd());
hisTmp.setSeriesCd(savedInfo.getSeriesCd());
hisTmp.setOfcHeadYn(savedInfo.getOfcHeadYn());
hisTmp.setHiringCd(savedInfo.getHiringCd());
hisTmp.setEmployCd(savedInfo.getEmployCd());
hisTmp.setOutturnCd(savedInfo.getOutturnCd());
hisTmp.setWorkCd(savedInfo.getWorkCd());
hisTmp.setJobInCd(savedInfo.getJobInCd());
hisTmp.setLanguageCd(savedInfo.getLanguageCd());
hisTmp.setPoliceInDate(savedInfo.getPoliceInDate());
hisTmp.setOrganInDate(savedInfo.getOrganInDate());
hisTmp.setOfcInDate(savedInfo.getOfcInDate());
hisTmp.setTitleInDate(savedInfo.getTitleInDate());
hisTmp.setUserStatus(savedInfo.getUserStatus());
hisTmp.setWrtOrgan(loginUser.getOgCd());
hisTmp.setWrtPart(loginUser.getOfcCd());
hisTmp.setWrtTitle(loginUser.getTitleCd());
hisTmp.setWrtUserSeq(loginUser.getUserSeq());
hisTmp.setWrtNm(loginUser.getUserNm());
hisTmp.setWrtDt(LocalDateTime.now());
userInfoHistoryRepository.save(hisTmp);
UserInfoHistory hisTmp = new UserInfoHistory();
hisTmp.setUserSeq(savedInfo.getUserSeq());
hisTmp.setVersionNo(dbHis.getVersionNo()+1);
hisTmp.setDicCode(savedInfo.getDicCode());
hisTmp.setUserId(savedInfo.getUserId());
hisTmp.setUserNm(savedInfo.getUserNm());
hisTmp.setBirthDate(savedInfo.getBirthDate());
hisTmp.setSex(savedInfo.getSex());
hisTmp.setEmail(savedInfo.getEmail());
hisTmp.setPhoneNo(savedInfo.getPhoneNo());
hisTmp.setAreaCd(savedInfo.getAreaCd());
hisTmp.setOgCd(savedInfo.getOgCd());
hisTmp.setOfcCd(savedInfo.getOfcCd());
hisTmp.setTitleCd(savedInfo.getTitleCd());
hisTmp.setGroupCd(savedInfo.getGroupCd());
hisTmp.setSeriesCd(savedInfo.getSeriesCd());
hisTmp.setOfcHeadYn(savedInfo.getOfcHeadYn());
hisTmp.setHiringCd(savedInfo.getHiringCd());
hisTmp.setEmployCd(savedInfo.getEmployCd());
hisTmp.setOutturnCd(savedInfo.getOutturnCd());
hisTmp.setWorkCd(savedInfo.getWorkCd());
hisTmp.setJobInCd(savedInfo.getJobInCd());
hisTmp.setLanguageCd(savedInfo.getLanguageCd());
hisTmp.setPoliceInDate(savedInfo.getPoliceInDate());
hisTmp.setOrganInDate(savedInfo.getOrganInDate());
hisTmp.setOfcInDate(savedInfo.getOfcInDate());
hisTmp.setTitleInDate(savedInfo.getTitleInDate());
hisTmp.setUserStatus(savedInfo.getUserStatus());
hisTmp.setWrtOrgan(loginUser.getOgCd());
hisTmp.setWrtPart(loginUser.getOfcCd());
hisTmp.setWrtTitle(loginUser.getTitleCd());
hisTmp.setWrtUserSeq(loginUser.getUserSeq());
hisTmp.setWrtNm(loginUser.getUserNm());
hisTmp.setWrtDt(LocalDateTime.now());
userInfoHistoryRepository.save(hisTmp);
}
}
}
@ -276,29 +280,28 @@ public class UserInfoService implements UserDetailsService {
}
dashboardConfigRepository.saveAll(configList);
}
public List<UserInfo> selectPoliceList(UserInfo userInfo) {
return userInfoMapper.selectPoliceList(userInfo);
return userInfoMapper.selectPoliceList(userInfo);
}
public Integer selectPoliceListCnt(UserInfo userInfo) {
return userInfoMapper.selectPoliceListCnt(userInfo);
return userInfoMapper.selectPoliceListCnt(userInfo);
}
public List<UserInfoHistory> selectPoliceHisList(UserInfoHistory userInfoHistory) {
return userInfoMapper.selectPoliceHisList(userInfoHistory);
return userInfoMapper.selectPoliceHisList(userInfoHistory);
}
public UserInfoHistory selectpoliceHistoryView(UserInfoHistory userInfoHistory) {
return userInfoMapper.selectpoliceHistoryView(userInfoHistory);
return userInfoMapper.selectpoliceHistoryView(userInfoHistory);
}
public String selectuserStatus(UserInfoHistory userInfoHistory) {
return userInfoRepository.getUserStatus(userInfoHistory.getUserSeq());
return userInfoRepository.getUserStatus(userInfoHistory.getUserSeq());
}
public List<PersonnelStatus> selectPersonnelStatusList(PersonnelStatus personnelStatus) {
return userInfoMapper.selectPersonnelStatusList(personnelStatus);
}
public PersonnelStatus selectPersonnelStatusLastVersion(PersonnelStatus personnelStatus) {
return personnelStatusRepository
.findTop1ByYearAndOgCdOrderByVersionNoDesc
@ -323,4 +326,47 @@ public class UserInfoService implements UserDetailsService {
public PersonnelStatus nowPersonnelStatus(String ogCd) {
return userInfoMapper.nowPersonnelStatus(ogCd);
}
public UserInfo selectPoliceInfo(Integer userSeq) {
return userInfoMapper.selectPoliceInfo(userSeq);
}
@Transactional
public int saveEdu(@AuthenticationPrincipal UserInfo loginUser,List<UserEdu> userEdu) {
int userSeq = 0;
for(UserEdu ue : userEdu ) {
UserEdu dbEdu = userEduRepository.findTopByUserSeqOrderByEduSeqDesc(ue.getUserSeq());
if (dbEdu == null) {
ue.setEduSeq(1);
ue.setWrtOrgan(loginUser.getOgCd());
ue.setWrtPart(loginUser.getOfcCd());
ue.setWrtTitle(loginUser.getTitleCd());
ue.setWrtUserSeq(loginUser.getUserSeq());
ue.setWrtNm(loginUser.getUserNm());
ue.setWrtDt(LocalDateTime.now());
userEduRepository.save(ue);
} else {
ue.setEduSeq(dbEdu.getEduSeq()+ 1);
ue.setWrtOrgan(loginUser.getOgCd());
ue.setWrtPart(loginUser.getOfcCd());
ue.setWrtTitle(loginUser.getTitleCd());
ue.setWrtUserSeq(loginUser.getUserSeq());
ue.setWrtNm(loginUser.getUserNm());
ue.setWrtDt(LocalDateTime.now());
userEduRepository.save(ue);
}
userSeq = ue.getUserSeq();
}
return userSeq;
}
public List<UserEdu> selectEduList(UserEdu userEdu) {
return userInfoMapper.selectEduList(userEdu);
}
@Transactional
public int deleteEdu(UserEdu userEdu) {
userEduRepository.deleteById(new UserEduId(userEdu.getEduSeq(), userEdu.getUserSeq()));
return userEdu.getUserSeq();
}
}

View File

@ -228,6 +228,7 @@
</foreach>
order by c.organ_type, c.parent_organ, c.organ_cd
</select>
<select id="nowPersonnelStatus" resultType="PersonnelStatus" parameterType="string">
select a.og_cd,
sum(case
@ -264,4 +265,35 @@
group by a.og_cd
order by a.og_cd
</select>
<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
from user_info
where user_seq = #{userSeq}
</select>
<select id="selectEduList" resultType="UserEdu" parameterType="UserEdu">
select edu_seq,
user_seq,
edu_name,
edu_sdate,
edu_edate,
edu_ra,
(select item_value from code_mgt where item_cd = wrt_organ) as wrt_organ,
(select item_value from code_mgt where item_cd = wrt_part) as wrt_part,
(select item_value from code_mgt where item_cd = wrt_title) as wrt_title,
wrt_user_seq,
wrt_nm,
wrt_dt
from user_edu
where user_seq = #{userSeq}
order by edu_seq desc
</select>
</mapper>

View File

@ -5,7 +5,7 @@ $(document).on('click', '.policeTr', function (event){
const target = event.target;
if(!(target.className === "checkBoxTd" ||$(target).parents("td").length>0)){
const userSeq = (Number($(this).find(".userSeq").val()));
showModal(1);
showModal(userSeq);
}
});
@ -45,7 +45,7 @@ $(document).on('click', '#notPoliceTab', function (){
})
$(document).on('click', '#eduAddBtn', function (){
const userSeq = (Number(1));
const userSeq = (Number($(this).data('userseq')));
$('#insertEdu').append(
'<div id="eduDiv">'+
'<div class="mb-4 row">'+
@ -81,7 +81,7 @@ $(document).on('click', '#eduAddBtn', function (){
format: "yyyy-mm-dd",
language: "ko"
});
eduList.push({useSeq:userSeq, eduName:"",eduSdate:"",eduEdate:"",eduRa:""});
eduList.push({userSeq:userSeq, eduName:"",eduSdate:"",eduEdate:"",eduRa:""});
})
$(document).on('click', '.rowDeleteBtn', function (){
@ -110,7 +110,56 @@ $(document).on('change', '.eduInput', function (){
})
$(document).on('click', '#saveBtn', function (){
console.log(eduList);
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("교육등록을 실패하였습니다");
}
})
}
})
$(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("삭제 처리에 실패하였습니다");
}
})
}
})

View File

@ -1,42 +1,42 @@
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<div class="modal-header">
<h5 class="modal-title" th:text="${userInfo.userStatus eq 'USC003' ? '現 외사경찰 상세' : userInfo.userStatus eq 'USC006' ? '前 외사경찰 상세' : userInfo.userStatus eq 'USC007' ? '非 외사경찰 상세' : null}"></h5>
<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>
<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" id="dicCode" name="dicCode" autocomplete="off" >
<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" id="userId" name="userId" autocomplete="off" readonly>
<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" id="phoneNo" name="phoneNo" >
<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" id="email" name="email" >
<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" id="email" name="email" >
<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" id="email" name="email" >
<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" id="email" name="email" >
<input type="email" class="form-control form-control-sm" th:value="${userInfo.languageCd}" readonly>
</div>
</div>
<div class="mb-3 row">
@ -46,7 +46,7 @@
</div>
</div>
<div class="card">
<div class="card-body">
<div class="card-body text-center">
<div class="row">
<table class="table table-striped" id="categoryTable">
<thead>
@ -58,18 +58,20 @@
</tr>
</thead>
<tbody class="overflow-scroll">
<tr class="historyInfoTr">
<td></td>
<td></td>
<td></td>
<td></td>
<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" id="eduAddBtn"><i class="bi bi-plus-lg"></i></button>
<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>

View File

@ -43,9 +43,6 @@
</th:block>
</select>
</div>
<div class="col-auto">
<button type="button" class="btn btn-success" id="goExcel">엑셀다운</button>
</div>
</div>
<div class="row justify-content-end pe-3 py-1">
<div class="col-auto">