외사경찰 경력현황 작업완료.
parent
61f001f3cb
commit
3ceedad5c6
|
|
@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
|||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/kwms")
|
||||
|
|
@ -73,4 +74,11 @@ public class KwmsController {
|
|||
return mav;
|
||||
}
|
||||
|
||||
@GetMapping("/kwmsCareerModal")
|
||||
public ModelAndView kwmsCareerModal(Integer userSeq, String dicCode){
|
||||
ModelAndView mav = new ModelAndView("faisp/career/kwmsCareerModal");
|
||||
mav.addObject("crcList", codeMgtService.selectCodeMgtList("CRC", ""));
|
||||
mav.addObject("careerList", kwmsService.selectUserCareerList(userSeq, dicCode));
|
||||
return mav;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
package com.dbnt.faisp.kwms.model;
|
||||
|
||||
import com.dbnt.faisp.config.BaseModel;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
|
@ -11,6 +10,7 @@ import javax.persistence.Column;
|
|||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Getter
|
||||
|
|
@ -35,9 +35,9 @@ public class VHordYundongStat {
|
|||
@Column(name = "JIKGEUP_CD")
|
||||
private String jikgeupCd;
|
||||
@Column(name = "START_DATE")
|
||||
private LocalDateTime startDate;
|
||||
private LocalDate startDate;
|
||||
@Column(name = "END_DATE")
|
||||
private LocalDateTime endDate;
|
||||
private LocalDate endDate;
|
||||
@Column(name = "WORK_DAY")
|
||||
private Integer workDay;
|
||||
@Column(name = "WORK_MONTH")
|
||||
|
|
|
|||
|
|
@ -8,5 +8,5 @@ import java.util.List;
|
|||
|
||||
public interface VHordYundongStatRepository extends JpaRepository<VHordYundongStat, String> {
|
||||
|
||||
List<VHordYundongStat> findByDicCode(String dicCode);
|
||||
List<VHordYundongStat> findByDicCodeOrderByStartDateDesc(String dicCode);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,21 +1,29 @@
|
|||
package com.dbnt.faisp.kwms.service;
|
||||
|
||||
import com.dbnt.faisp.kwms.model.VEmployee;
|
||||
import com.dbnt.faisp.kwms.model.VHordYundongStat;
|
||||
import com.dbnt.faisp.kwms.repository.VEmployeeRepository;
|
||||
import com.dbnt.faisp.kwms.repository.VHordYundongStatRepository;
|
||||
import com.dbnt.faisp.main.codeMgt.service.CodeMgtService;
|
||||
import com.dbnt.faisp.main.userInfo.model.UserCareer;
|
||||
import com.dbnt.faisp.main.userInfo.model.UserInfo;
|
||||
import com.dbnt.faisp.main.userInfo.repository.UserCareerRepository;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class KwmsService {
|
||||
private final VEmployeeRepository vEmployeeRepository;
|
||||
private final VHordYundongStatRepository vHordRepository;
|
||||
private final CodeMgtService codeMgtService;
|
||||
private final UserCareerRepository careerRepository;
|
||||
|
||||
public UserInfo selectEmpInfo(String dicCode){
|
||||
VEmployee empInfo = vEmployeeRepository.findByDicCode(dicCode).orElse(null);
|
||||
|
|
@ -32,13 +40,13 @@ public class KwmsService {
|
|||
userInfo.setUserNm(empInfo.getEmpNm());
|
||||
userInfo.setSex(empInfo.getSex().strip().equals("F")?"SEX001":"SEX002");
|
||||
String[] positionAry = empInfo.getCallBuseoNm().split(" ");
|
||||
userInfo.setOgCd(codeMgtService.searchCode("OG", positionAry[0]));
|
||||
userInfo.setOgCd(codeMgtService.searchCodeToCategoryAndValue("OG", positionAry[0]));
|
||||
if (positionAry.length>1){
|
||||
userInfo.setOfcCd(codeMgtService.searchCode("OFC", positionAry[1]));
|
||||
userInfo.setOfcCd(codeMgtService.searchCodeToCategoryAndValue("OFC", positionAry[1]));
|
||||
}
|
||||
userInfo.setTitleCd(codeMgtService.searchCode("JT", empInfo.getJikgeup()));
|
||||
userInfo.setOutturnCd(codeMgtService.searchCode("OTC", empInfo.getGyunggwa()));
|
||||
userInfo.setSeriesCd(codeMgtService.searchCode("SRC", empInfo.getJikbyul()));
|
||||
userInfo.setTitleCd(codeMgtService.searchCodeToCategoryAndValue("JT", empInfo.getJikgeup()));
|
||||
userInfo.setOutturnCd(codeMgtService.searchCodeToCategoryAndValue("OTC", empInfo.getGyunggwa()));
|
||||
userInfo.setSeriesCd(codeMgtService.searchCodeToCategoryAndValue("SRC", empInfo.getJikbyul()));
|
||||
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
|
||||
empInfo.setBirthDate(
|
||||
|
|
@ -48,4 +56,32 @@ public class KwmsService {
|
|||
userInfo.setTitleInDate(LocalDate.parse(empInfo.getHnJikgeupImyngil(), formatter));
|
||||
return userInfo;
|
||||
}
|
||||
|
||||
public List<UserCareer> selectUserCareerList(Integer userSeq, String dicCode) {
|
||||
List<VHordYundongStat> statList = vHordRepository.findByDicCodeOrderByStartDateDesc(dicCode);
|
||||
List<UserCareer> savedList = careerRepository.findByUserSeqOrderByStartDateDesc(userSeq);
|
||||
List<UserCareer> careerList = new ArrayList<>();
|
||||
for(VHordYundongStat stat: statList){
|
||||
boolean savedFlag = false;
|
||||
for(UserCareer savedCareer: savedList){
|
||||
if (stat.getHordYundongCd().equals(savedCareer.getHordCd())) {
|
||||
savedFlag = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!savedFlag){
|
||||
UserCareer career = new UserCareer();
|
||||
career.setDesignationCd(codeMgtService.searchCodeToCategoryAndValue("DSN", stat.getImyongGubunNm()));
|
||||
career.setWorkPositionStr(stat.getImyongbuseoChongching());
|
||||
career.setWorkTitle(codeMgtService.searchCodeToCategoryAndValue("JT", stat.getImyongJikgeupNm()));
|
||||
career.setStartDate(stat.getStartDate());
|
||||
career.setEndDate(stat.getEndDate());
|
||||
career.setWorkDay(stat.getWorkDay()==null?0:stat.getWorkDay());
|
||||
career.setWorkMonth(stat.getWorkMonth()==null?0:stat.getWorkMonth());
|
||||
career.setHordCd(stat.getHordYundongCd());
|
||||
careerList.add(career);
|
||||
}
|
||||
}
|
||||
return careerList;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,12 +4,14 @@ import com.dbnt.faisp.main.codeMgt.model.CodeMgt;
|
|||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
|
||||
public interface CodeMgtRepository extends JpaRepository<CodeMgt, CodeMgt.CodeMgtId> {
|
||||
|
||||
List<CodeMgt> findByCategoryCdOrderByItemCdAsc(String categoryCd);
|
||||
List<CodeMgt> findByCategoryCdAndUseChkOrderByItemCdAsc(String categoryCd, String useChk);
|
||||
Optional<CodeMgt> findByCategoryCdAndItemValue(String categoryCd, String itemValue);
|
||||
List<CodeMgt> findByUseChkOrderByItemCdAsc(String useChk);
|
||||
List<CodeMgt> findByOrderByItemCdAsc();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -67,13 +67,8 @@ public class CodeMgtService{
|
|||
}
|
||||
return codeList;
|
||||
}
|
||||
public String searchCode(String categoryCd, String value){
|
||||
List<CodeMgt> codeList = selectCodeMgtList(categoryCd, "");
|
||||
for(CodeMgt code: codeList){
|
||||
if(code.getItemValue().equals(value)){
|
||||
return code.getItemCd();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
public String searchCodeToCategoryAndValue(String categoryCd, String value){
|
||||
CodeMgt code = codeMgtRepository.findByCategoryCdAndItemValue(categoryCd, value).orElse(null);
|
||||
return code==null?null:code.getItemCd();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ import java.time.LocalDateTime;
|
|||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
|
|
@ -205,7 +206,7 @@ public class FaispController {
|
|||
}
|
||||
|
||||
//메뉴권한 확인
|
||||
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faisp/policeList").get(0).getAccessAuth();
|
||||
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faisp/careerMgt").get(0).getAccessAuth();
|
||||
mav.addObject("accessAuth", accessAuth);
|
||||
userInfo.setQueryInfo();
|
||||
mav.addObject("policeList", userInfoService.selectPoliceList(userInfo));
|
||||
|
|
@ -217,15 +218,16 @@ public class FaispController {
|
|||
return mav;
|
||||
}
|
||||
@GetMapping("/careerModal")
|
||||
public ModelAndView careerModal(@AuthenticationPrincipal UserInfo loginUser, UserInfo userInfo){
|
||||
public ModelAndView careerModal(@AuthenticationPrincipal UserInfo loginUser, UserCareer career){
|
||||
ModelAndView mav = new ModelAndView("faisp/career/careerModal");
|
||||
|
||||
//메뉴권한 확인
|
||||
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faisp/educationMgt").get(0).getAccessAuth();
|
||||
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faisp/careerMgt").get(0).getAccessAuth();
|
||||
mav.addObject("accessAuth", accessAuth);
|
||||
mav.addObject("selectedTab", career.getCareerCd());
|
||||
mav.addObject("crcList", codeMgtService.selectCodeMgtList("CRC", ""));
|
||||
mav.addObject("userInfo", userInfoService.selectPoliceInfo(userInfo.getUserSeq()));
|
||||
/*mav.addObject("eduList", userInfoService.selectEduList());*/
|
||||
mav.addObject("userInfo", userInfoService.selectPoliceInfo(career.getUserSeq()));
|
||||
mav.addObject("careerList", userInfoService.selectCareerList(career.getUserSeq()));
|
||||
mav.addObject("userSeq", loginUser.getUserSeq());
|
||||
return mav;
|
||||
}
|
||||
|
|
@ -240,6 +242,32 @@ public class FaispController {
|
|||
mav.addObject("career", career);
|
||||
return mav;
|
||||
}
|
||||
@PostMapping("/saveCareer")
|
||||
public void saveCareer(@AuthenticationPrincipal UserInfo loginUser, UserCareer career){
|
||||
career.setWrtOrgan(loginUser.getOgCd());
|
||||
career.setWrtPart(loginUser.getOfcCd());
|
||||
career.setWrtUserSeq(loginUser.getUserSeq());
|
||||
career.setWrtUserGrd(loginUser.getTitleCd());
|
||||
career.setWrtUserNm(loginUser.getUserNm());
|
||||
career.setWrtDt(LocalDateTime.now());
|
||||
userInfoService.saveCareer(career);
|
||||
}
|
||||
@PostMapping("/saveCareerList")
|
||||
public void saveCareerList(@AuthenticationPrincipal UserInfo loginUser, UserCareer info){
|
||||
for(UserCareer career: info.getCareerList()){
|
||||
career.setWrtOrgan(loginUser.getOgCd());
|
||||
career.setWrtPart(loginUser.getOfcCd());
|
||||
career.setWrtUserSeq(loginUser.getUserSeq());
|
||||
career.setWrtUserGrd(loginUser.getTitleCd());
|
||||
career.setWrtUserNm(loginUser.getUserNm());
|
||||
career.setWrtDt(LocalDateTime.now());
|
||||
}
|
||||
userInfoService.saveCareerList(info.getCareerList());
|
||||
}
|
||||
@PostMapping("/deleteCareer")
|
||||
public void deleteCareer(UserCareer career){
|
||||
userInfoService.deleteCareer(career);
|
||||
}
|
||||
|
||||
@GetMapping("/educationMgt")
|
||||
public ModelAndView educationMgt(@AuthenticationPrincipal UserInfo loginUser, UserInfo userInfo, HttpServletResponse response){
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import javax.persistence.*;
|
|||
import java.io.Serializable;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Getter
|
||||
|
|
@ -56,15 +57,19 @@ public class UserCareer{
|
|||
@Column(name = "wrt_part")
|
||||
private String wrtPart;
|
||||
@Column(name = "wrt_user_seq")
|
||||
private String wrtUserSeq;
|
||||
private Integer wrtUserSeq;
|
||||
@Column(name = "wrt_user_grd")
|
||||
private Integer wrtUserGrd;
|
||||
private String wrtUserGrd;
|
||||
@Column(name = "wrt_user_nm")
|
||||
private String wrtUserNm;
|
||||
@Column(name = "wrt_dt")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
|
||||
private LocalDateTime wrtDt;
|
||||
|
||||
|
||||
@Transient
|
||||
List<UserCareer> careerList;
|
||||
|
||||
@Embeddable
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
|
|
|
|||
|
|
@ -112,6 +112,18 @@ public class UserInfo extends BaseModel implements UserDetails{
|
|||
private String excel;
|
||||
@Transient
|
||||
private String rownum;
|
||||
@Transient
|
||||
private Integer crc001Sum;
|
||||
@Transient
|
||||
private Integer crc002Sum;
|
||||
@Transient
|
||||
private Integer crc003Sum;
|
||||
@Transient
|
||||
private Integer crc004Sum;
|
||||
@Transient
|
||||
private Integer crc005Sum;
|
||||
@Transient
|
||||
private Integer crc006Sum;
|
||||
|
||||
@Transient
|
||||
private List<AccessConfig> accessConfigList;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,12 @@ package com.dbnt.faisp.main.userInfo.repository;
|
|||
import com.dbnt.faisp.main.userInfo.model.UserCareer;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
|
||||
public interface UserCareerRepository extends JpaRepository<UserCareer, UserCareer.UserCareerId> {
|
||||
|
||||
Optional<UserCareer> findTop1ByUserSeqOrderByCareerSeqDesc(Integer userSeq);
|
||||
List<UserCareer> findByUserSeqOrderByStartDateDesc(Integer userSeq);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,20 +1,10 @@
|
|||
package com.dbnt.faisp.main.userInfo.service;
|
||||
|
||||
import com.dbnt.faisp.config.Role;
|
||||
import com.dbnt.faisp.main.fipTarget.model.PartInfo;
|
||||
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.*;
|
||||
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.main.userInfo.repository.*;
|
||||
import com.dbnt.faisp.util.ParamMap;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
|
@ -28,6 +18,8 @@ import org.springframework.stereotype.Service;
|
|||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.Period;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
|
|
@ -38,6 +30,7 @@ public class UserInfoService implements UserDetailsService {
|
|||
private final UserInfoHistoryRepository userInfoHistoryRepository;
|
||||
private final DashboardConfigRepository dashboardConfigRepository;
|
||||
private final PersonnelStatusRepository personnelStatusRepository;
|
||||
private final UserCareerRepository userCareerRepository;
|
||||
private final UserEduRepository userEduRepository;
|
||||
private final UserInfoMapper userInfoMapper;
|
||||
|
||||
|
|
@ -335,6 +328,31 @@ public class UserInfoService implements UserDetailsService {
|
|||
return userInfoMapper.selectPoliceInfo(userSeq);
|
||||
}
|
||||
|
||||
public void saveCareer(UserCareer career) {
|
||||
UserCareer lastCareer = userCareerRepository.findTop1ByUserSeqOrderByCareerSeqDesc(career.getUserSeq()).orElse(null);
|
||||
career.setCareerSeq(lastCareer==null?1:(lastCareer.getCareerSeq()+1));
|
||||
career.setWorkMonth((int) ChronoUnit.MONTHS.between(career.getStartDate(), career.getEndDate()));
|
||||
career.setWorkDay((int) ChronoUnit.DAYS.between(career.getStartDate(), career.getEndDate()));
|
||||
userCareerRepository.save(career);
|
||||
}
|
||||
|
||||
public void saveCareerList(List<UserCareer> careerList) {
|
||||
UserCareer lastCareer = userCareerRepository.findTop1ByUserSeqOrderByCareerSeqDesc(careerList.get(0).getUserSeq()).orElse(null);
|
||||
int careerSeq = lastCareer==null?1:(lastCareer.getCareerSeq()+1);
|
||||
for(UserCareer career: careerList){
|
||||
career.setCareerSeq(careerSeq++);
|
||||
}
|
||||
userCareerRepository.saveAll(careerList);
|
||||
}
|
||||
|
||||
public List<UserCareer> selectCareerList(Integer userSeq) {
|
||||
return userCareerRepository.findByUserSeqOrderByStartDateDesc(userSeq);
|
||||
}
|
||||
|
||||
public void deleteCareer(UserCareer career) {
|
||||
userCareerRepository.deleteById(new UserCareer.UserCareerId(career.getUserSeq(), career.getCareerSeq()));
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public int saveEdu(@AuthenticationPrincipal UserInfo loginUser,List<UserEdu> userEdu) {
|
||||
int userSeq = 0;
|
||||
|
|
@ -372,4 +390,5 @@ public class UserInfoService implements UserDetailsService {
|
|||
userEduRepository.deleteById(new UserEduId(userEdu.getEduSeq(), userEdu.getUserSeq()));
|
||||
return userEdu.getUserSeq();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -102,21 +102,38 @@
|
|||
|
||||
<select id="selectPoliceList" resultType="UserInfo" parameterType="UserInfo">
|
||||
select (ROW_NUMBER() OVER(order by user_nm desc)) AS rownum,
|
||||
user_seq,
|
||||
(select item_value from code_mgt where item_cd = title_cd) as title_cd,
|
||||
user_nm,
|
||||
og_cd,
|
||||
(select item_value from code_mgt where item_cd = og_cd) as organ_nm,
|
||||
(select item_value from code_mgt where item_cd = ofc_cd) as ofc_cd,
|
||||
birth_date,
|
||||
(select item_value from code_mgt where item_cd = sex) as sex,
|
||||
police_in_date,
|
||||
title_in_date,
|
||||
ofc_in_date,
|
||||
(select item_value from code_mgt where item_cd = outturn_cd) as outturn_cd,
|
||||
(select item_value from code_mgt where item_cd = job_in_cd) as job_in_cd,
|
||||
wrt_dt
|
||||
from user_info
|
||||
a.user_seq,
|
||||
(select item_value from code_mgt where item_cd = title_cd) as title_cd,
|
||||
user_nm,
|
||||
og_cd,
|
||||
(select item_value from code_mgt where item_cd = og_cd) as organ_nm,
|
||||
(select item_value from code_mgt where item_cd = ofc_cd) as ofc_cd,
|
||||
birth_date,
|
||||
(select item_value from code_mgt where item_cd = sex) as sex,
|
||||
police_in_date,
|
||||
title_in_date,
|
||||
ofc_in_date,
|
||||
(select item_value from code_mgt where item_cd = outturn_cd) as outturn_cd,
|
||||
(select item_value from code_mgt where item_cd = job_in_cd) as job_in_cd,
|
||||
wrt_dt,
|
||||
b.crc001Sum,
|
||||
b.crc002Sum,
|
||||
b.crc003Sum,
|
||||
b.crc004Sum,
|
||||
b.crc005Sum,
|
||||
b.crc006Sum
|
||||
from user_info a
|
||||
left outer join (
|
||||
select user_seq,
|
||||
sum(case when career_cd = 'CRC001' then work_month else 0 end) as crc001Sum,
|
||||
sum(case when career_cd = 'CRC002' then work_month else 0 end) as crc002Sum,
|
||||
sum(case when career_cd = 'CRC003' then work_month else 0 end) as crc003Sum,
|
||||
sum(case when career_cd = 'CRC004' then work_month else 0 end) as crc004Sum,
|
||||
sum(case when career_cd = 'CRC005' then work_month else 0 end) as crc005Sum,
|
||||
sum(case when career_cd = 'CRC006' then work_month else 0 end) as crc006Sum
|
||||
from user_career
|
||||
group by user_seq
|
||||
) b on a.user_seq = b.user_seq
|
||||
<include refid="selectPoliceListWhere"></include>
|
||||
order by rownum desc
|
||||
<if test='excel != "Y"'>
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ $(document).on('click', '#saveCellPhone', function (){
|
|||
success : function(result) {
|
||||
alert("저장되었습니다.");
|
||||
contentFade("out");
|
||||
location.reload();
|
||||
location.reload();
|
||||
},
|
||||
error : function(xhr, status) {
|
||||
alert("저장에 실패하였습니다.")
|
||||
|
|
@ -98,7 +98,7 @@ $(document).on('click', '#updateCellPhone', function (){
|
|||
success : function(result) {
|
||||
alert("수정되었습니다.");
|
||||
contentFade("out");
|
||||
showModal(result);
|
||||
showModal(result);
|
||||
},
|
||||
error : function(xhr, status) {
|
||||
alert("수정에 실패하였습니다.")
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ $(document).on('click', '#updateUse', function (){
|
|||
success : function(data) {
|
||||
alert("수정되었습니다.");
|
||||
contentFade("out");
|
||||
showMdifyModal(data.useNo,data.useType,data.mgtOrgan);
|
||||
showMdifyModal(data.useNo,data.useType,data.mgtOrgan);
|
||||
},
|
||||
error : function(xhr, status) {
|
||||
alert("수정에 실패하였습니다.")
|
||||
|
|
|
|||
|
|
@ -13,26 +13,14 @@ $(document).on('click', '#notPoliceTab', function (){
|
|||
})
|
||||
|
||||
$(document).on('click', '.policeTr', function (){
|
||||
$.ajax({
|
||||
url: '/faisp/careerModal',
|
||||
data: {userSeq: $(this).find(".userSeq").val()},
|
||||
type: 'GET',
|
||||
dataType:"html",
|
||||
success: function(html){
|
||||
$("#careerModalContent").empty().append(html);
|
||||
$("#careerModal").modal('show');
|
||||
},
|
||||
error:function(){
|
||||
|
||||
}
|
||||
});
|
||||
getCareerModal($(this).find(".userSeq").val(), "CRC001")
|
||||
});
|
||||
|
||||
$(document).on('click', '.careerAddBtn', function (){
|
||||
$.ajax({
|
||||
url: '/faisp/careerFormModal',
|
||||
data: {
|
||||
userSeq: $("#editModelUserSeq").val(),
|
||||
userSeq: $("#mngModelUserSeq").val(),
|
||||
careerCd: $(this).attr("data-careercd")
|
||||
},
|
||||
type: 'GET',
|
||||
|
|
@ -51,9 +39,63 @@ $(document).on('click', '.careerAddBtn', function (){
|
|||
}
|
||||
});
|
||||
})
|
||||
|
||||
$(document).on('click', '.kwmsCareerBtn', function (){
|
||||
getKwmsCareerModal($("#mngModelUserSeq").val(), $("#mngModelDicCode").val())
|
||||
})
|
||||
$(document).on('click', '#kwmsModalSelectBtn', function (){
|
||||
const selectedList = [];
|
||||
$.each($(".careerSelector"), function (idx, selector){
|
||||
if($(selector).val()!==''){
|
||||
selectedList.push(selector);
|
||||
}
|
||||
})
|
||||
if(selectedList.length>0){
|
||||
if(confirm("저장하시겠습니까?")){
|
||||
const formData = new FormData();
|
||||
$.each(selectedList, function (idx, selector){
|
||||
const kwmsCareerTr = $(selector).parents(".kwmsCareerTr")
|
||||
const userSeq = $("#mngModelUserSeq").val();
|
||||
formData.append("careerList["+idx+"].userSeq", userSeq)
|
||||
formData.append("careerList["+idx+"].careerCd", selector.value)
|
||||
formData.append("careerList["+idx+"].designationCd", kwmsCareerTr.find(".designationCd").val())
|
||||
formData.append("careerList["+idx+"].workPositionStr", kwmsCareerTr.find(".workPositionStr").val())
|
||||
formData.append("careerList["+idx+"].workTitle", kwmsCareerTr.find(".workTitle").val())
|
||||
formData.append("careerList["+idx+"].startDate", kwmsCareerTr.find(".startDate").val())
|
||||
formData.append("careerList["+idx+"].endDate", kwmsCareerTr.find(".endDate").val())
|
||||
formData.append("careerList["+idx+"].workDay", kwmsCareerTr.find(".workDay").val())
|
||||
formData.append("careerList["+idx+"].workMonth", kwmsCareerTr.find(".workMonth").val())
|
||||
formData.append("careerList["+idx+"].hordCd", kwmsCareerTr.find(".hordCd").val())
|
||||
})
|
||||
$.ajax({
|
||||
type : 'POST',
|
||||
data : formData,
|
||||
url : "/faisp/saveCareerList",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
beforeSend: function (xhr){
|
||||
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
|
||||
},
|
||||
success : function(result) {
|
||||
alert("저장되었습니다.");
|
||||
$("#kwmsCareerModal").modal('hide');
|
||||
getCareerModal($("#mngModelUserSeq").val(), "CRC001");
|
||||
contentFade("out");
|
||||
},
|
||||
error : function(xhr, status) {
|
||||
alert("저장에 실패하였습니다.");
|
||||
contentFade("out");
|
||||
}
|
||||
})
|
||||
}
|
||||
}else{
|
||||
alert("불러올 경력의 구분을 선택해주세요.")
|
||||
}
|
||||
})
|
||||
|
||||
$(document).on('change', '#positionCheckBox', function (){
|
||||
const selfInputDiv = $("#selfInputDiv");
|
||||
const selectInputDiv = $("#selectInputDiv");
|
||||
const selfInputDiv = $(".selfInputDiv");
|
||||
const selectInputDiv = $(".selectInputDiv");
|
||||
if(this.checked){
|
||||
selfInputDiv.show();
|
||||
selfInputDiv.find("input").removeAttr("disabled");
|
||||
|
|
@ -68,10 +110,88 @@ $(document).on('change', '#positionCheckBox', function (){
|
|||
})
|
||||
$(document).on('click', '#saveBtn', function (){
|
||||
if(checkValue()){
|
||||
|
||||
contentFade("in");
|
||||
const formData = new FormData($("#careerForm")[0]);
|
||||
$.ajax({
|
||||
type : 'POST',
|
||||
data : formData,
|
||||
url : "/faisp/saveCareer",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
beforeSend: function (xhr){
|
||||
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
|
||||
},
|
||||
success : function(result) {
|
||||
alert("저장되었습니다.");
|
||||
$("#careerFormModal").modal('hide');
|
||||
getCareerModal($("#mngModelUserSeq").val(), $("#careerForm").find("#careerCd").val());
|
||||
contentFade("out");
|
||||
},
|
||||
error : function(xhr, status) {
|
||||
alert("저장에 실패하였습니다.");
|
||||
contentFade("out");
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
$(document).on('click', '.deleteCareerBtn', function (){
|
||||
if(confirm("삭제하시겠습니까?")){
|
||||
contentFade("in");
|
||||
const userSeq = $("#mngModelUserSeq").val()
|
||||
const tabCd = $(this).attr("data-tab")
|
||||
$.ajax({
|
||||
type : 'POST',
|
||||
url : "/faisp/deleteCareer",
|
||||
data : {
|
||||
userSeq: userSeq,
|
||||
careerSeq: $(this).attr("data-careerseq")
|
||||
},
|
||||
beforeSend: function (xhr){
|
||||
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
|
||||
},
|
||||
success : function(data) {
|
||||
alert("삭제 되었습니다.");
|
||||
getCareerModal(userSeq, tabCd);
|
||||
contentFade("out");
|
||||
},
|
||||
error : function(xhr, status) {
|
||||
alert("삭제를 실패하였습니다");
|
||||
contentFade("out");
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
function getCareerModal(userSeq, careerCd){
|
||||
$.ajax({
|
||||
url: '/faisp/careerModal',
|
||||
data: {userSeq: userSeq, careerCd: careerCd},
|
||||
type: 'GET',
|
||||
dataType:"html",
|
||||
success: function(html){
|
||||
$("#careerModalContent").empty().append(html);
|
||||
$("#careerModal").modal('show');
|
||||
},
|
||||
error:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
function getKwmsCareerModal(userSeq, dicCode){
|
||||
$.ajax({
|
||||
url: '/kwms/kwmsCareerModal',
|
||||
data: {userSeq: userSeq, dicCode: dicCode},
|
||||
type: 'GET',
|
||||
dataType:"html",
|
||||
success: function(html){
|
||||
$("#kwmsCareerModalContent").empty().append(html);
|
||||
$("#kwmsCareerModal").modal('show');
|
||||
},
|
||||
error:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
function checkValue(){
|
||||
let flag = true;
|
||||
const form = $("#careerForm");
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ $(document).on('click', '#saveShipInfo', function (){
|
|||
success : function(result) {
|
||||
alert("저장되었습니다.");
|
||||
contentFade("out");
|
||||
location.reload();
|
||||
location.reload();
|
||||
},
|
||||
error : function(xhr, status) {
|
||||
alert("저장에 실패하였습니다.")
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@ $(document).on('click', '#savePasswordBtn', function (){
|
|||
const formData = new FormData($("#modifyPasswordForm")[0]);
|
||||
contentFade("in")
|
||||
$.ajax({
|
||||
type : 'PUT',
|
||||
type : 'POST',
|
||||
data : formData,
|
||||
url : "/info/passwordModify",
|
||||
processData: false,
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@
|
|||
</th:block>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="mb-3 row">
|
||||
<label for="title" class="col-sm-2 col-form-label col-form-label-sm text-center">제목</label>
|
||||
<div class="col-sm-10">
|
||||
|
|
@ -51,12 +52,14 @@
|
|||
<div class="col-sm-10" id="content" th:utext="${faRpt.content}">
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="mb-3 row">
|
||||
<label for="hashTags" class="col-sm-2 col-form-label col-form-label-sm text-center">해시태그</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control form-control-sm border-0" id="hashTags" name="hashTags" th:value="${faRpt.hashTags}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="row mb-3">
|
||||
<label for="fileTable" class="col-sm-2 col-form-label col-form-label-sm text-center">업로드 자료</label>
|
||||
<div class="col-sm-10">
|
||||
|
|
|
|||
|
|
@ -5,81 +5,78 @@
|
|||
<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>
|
||||
<form id="careerForm" action="#" method="POST">
|
||||
<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>
|
||||
<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 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-8 selfInputDiv" style="display: none">
|
||||
<input type="text" class="form-control form-control-sm" id="workPositionStr" name="workPositionStr">
|
||||
</div>
|
||||
<label for="workOrgan" class="selectInputDiv col-sm-1 col-form-label col-form-label-sm text-center fs-13">관서</label>
|
||||
<div class="col-sm-3 selectInputDiv">
|
||||
<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="selectInputDiv col-sm-1 col-form-label col-form-label-sm text-center fs-13">부서</label>
|
||||
<div class="col-sm-3 selectInputDiv">
|
||||
<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 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 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>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer row justify-content-between">
|
||||
<div class="col-auto">
|
||||
|
|
|
|||
|
|
@ -94,28 +94,71 @@
|
|||
</tr>
|
||||
</thead>
|
||||
<tbody class="table-group-divider">
|
||||
<tr class="policeTr" th:each="list:${policeList}">
|
||||
<input type="hidden" class="userSeq" th:value="${list.userSeq}">
|
||||
<td th:text="${list.rownum}"></td>
|
||||
<td th:text="${list.titleCd}"></td>
|
||||
<td th:text="${list.userNm}"></td>
|
||||
<td th:text="${list.organNm}"></td>
|
||||
<td th:text="${list.ofcCd}"></td>
|
||||
<td th:text="${list.birthDate}"></td>
|
||||
<td th:text="${list.sex}"></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<tr class="policeTr" th:each="police:${policeList}">
|
||||
<input type="hidden" class="userSeq" th:value="${police.userSeq}">
|
||||
<td th:text="${police.rownum}"></td>
|
||||
<td th:text="${police.titleCd}"></td>
|
||||
<td th:text="${police.userNm}"></td>
|
||||
<td th:text="${police.organNm}"></td>
|
||||
<td th:text="${police.ofcCd}"></td>
|
||||
<td th:text="${police.birthDate}"></td>
|
||||
<td th:text="${police.sex}"></td>
|
||||
<td>
|
||||
<th:block th:if="${police.crc001Sum ne null and police.crc001Sum ne 0}">
|
||||
<th:block th:if="${police.crc001Sum > 12}">
|
||||
<th:block th:text="|${police.crc001Sum/12}년 ${police.crc001Sum%12}개월|"></th:block>
|
||||
</th:block>
|
||||
<th:block th:unless="${police.crc001Sum > 12}">
|
||||
<th:block th:text="|${police.crc001Sum}개월|"></th:block>
|
||||
</th:block>
|
||||
</th:block>
|
||||
</td>
|
||||
<td>
|
||||
<th:block th:if="${police.crc002Sum ne null and police.crc002Sum ne 0}">
|
||||
<th:block th:if="${police.crc002Sum > 12}">
|
||||
<th:block th:text="|${police.crc002Sum/12}년 ${police.crc002Sum%12}개월|"></th:block>
|
||||
</th:block>
|
||||
<th:block th:unless="${police.crc002Sum > 12}">
|
||||
<th:block th:text="|${police.crc002Sum}개월|"></th:block>
|
||||
</th:block>
|
||||
</th:block>
|
||||
</td>
|
||||
<td>
|
||||
<th:block th:if="${police.crc003Sum ne null and police.crc003Sum ne 0}">
|
||||
<th:block th:if="${police.crc003Sum > 12}">
|
||||
<th:block th:text="|${police.crc003Sum/12}년 ${police.crc003Sum%12}개월|"></th:block>
|
||||
</th:block>
|
||||
<th:block th:unless="${police.crc003Sum > 12}">
|
||||
<th:block th:text="|${police.crc003Sum}개월|"></th:block>
|
||||
</th:block>
|
||||
</th:block>
|
||||
</td>
|
||||
<td>
|
||||
<th:block th:if="${police.crc004Sum ne null and police.crc004Sum ne 0}">
|
||||
<th:block th:if="${police.crc004Sum > 12}">
|
||||
<th:block th:text="|${police.crc004Sum/12}년 ${police.crc004Sum%12}개월|"></th:block>
|
||||
</th:block>
|
||||
<th:block th:unless="${police.crc004Sum > 12}">
|
||||
<th:block th:text="|${police.crc004Sum}개월|"></th:block>
|
||||
</th:block>
|
||||
</th:block>
|
||||
</td>
|
||||
<td>
|
||||
<th:block th:if="${police.crc005Sum ne null and police.crc005Sum ne 0}">
|
||||
<th:block th:if="${police.crc005Sum > 12}">
|
||||
<th:block th:text="|${police.crc005Sum/12}년 ${police.crc005Sum%12}개월|"></th:block>
|
||||
</th:block>
|
||||
<th:block th:unless="${police.crc005Sum > 12}">
|
||||
<th:block th:text="|${police.crc005Sum}개월|"></th:block>
|
||||
</th:block>
|
||||
</th:block>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row justify-content-between">
|
||||
<div class="col-auto">
|
||||
</div>
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-auto">
|
||||
<nav aria-label="Page navigation">
|
||||
<ul class="pagination">
|
||||
|
|
@ -141,10 +184,6 @@
|
|||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<button type="button" class="btn btn-success" id="outBtn" th:if="${userStatus eq 'USC003'} and ${accessAuth eq 'ACC003'}">전출</button>
|
||||
<button type="button" class="btn btn-success" id="inBtn" th:if="${accessAuth eq 'ACC003'} and (${userStatus eq 'USC006'} or ${userStatus eq 'USC007'})">전입</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -172,6 +211,13 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="kwmsCareerModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="kwmsCareerModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-xl modal-dialog-scrollable">
|
||||
<div class="modal-content" id="kwmsCareerModalContent">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</html>
|
||||
|
|
@ -1,11 +1,12 @@
|
|||
<!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>
|
||||
<h5 class="modal-title" th:text="|${userInfo.ogCd} ${userInfo.ofcCd eq null?'':userInfo.ofcCd} ${userInfo.titleCd eq null?'':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}">
|
||||
<input type="hidden" id="mngModelUserSeq" th:value="${userInfo.userSeq}">
|
||||
<input type="hidden" id="mngModelDicCode" th:value="${userInfo.dicCode}">
|
||||
<div class="card">
|
||||
<div class="card-body text-center">
|
||||
<ul class="nav nav-tabs" id="userTab" role="tablist">
|
||||
|
|
@ -13,21 +14,21 @@
|
|||
<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:aria-selected="${code.itemCd eq selectedTab?'true':'false'}" th:classappend="${code.itemCd eq selectedTab?'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':''}"
|
||||
<div class="tab-pane fade p-2" th:classappend="${code.itemCd eq selectedTab?'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 colspan="2">근무지</th>
|
||||
<th>직급</th>
|
||||
<th>시작일</th>
|
||||
<th>종료일</th>
|
||||
|
|
@ -38,11 +39,66 @@
|
|||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody th:id="|${code.itemValue}Tbody|">
|
||||
<tbody>
|
||||
<th:block th:each="career:${careerList}">
|
||||
<th:block th:if="${code.itemCd eq career.careerCd}">
|
||||
<tr>
|
||||
<td>
|
||||
<th:block th:each="code:${session.commonCode.get('DSN')}">
|
||||
<th:block th:if="${code.itemCd eq career.designationCd}" th:text="${code.itemValue}"></th:block>
|
||||
</th:block>
|
||||
</td>
|
||||
<th:block th:if="${#strings.isEmpty(career.workPositionStr)}">
|
||||
<th:block th:each="code:${session.commonCode.get('OG')}">
|
||||
<th:block th:if="${code.itemCd eq career.workOrgan}">
|
||||
<td th:text="${code.itemValue}"></td>
|
||||
</th:block>
|
||||
</th:block>
|
||||
<th:block th:each="code:${session.commonCode.get('OFC')}">
|
||||
<th:block th:if="${code.itemCd eq career.workPart}">
|
||||
<td th:text="${code.itemValue}"></td>
|
||||
</th:block>
|
||||
</th:block>
|
||||
</th:block>
|
||||
<th:block th:unless="${#strings.isEmpty(career.workPositionStr)}">
|
||||
<td colspan="2" th:text="${career.workPositionStr}"></td>
|
||||
</th:block>
|
||||
<th:block th:each="code:${session.commonCode.get('JT')}">
|
||||
<th:block th:if="${code.itemCd eq career.workTitle}">
|
||||
<td th:text="${code.itemValue}"></td>
|
||||
</th:block>
|
||||
</th:block>
|
||||
<td th:text="${#temporals.format(career.startDate, 'yyyy-MM-dd')}"></td>
|
||||
<td th:text="${#temporals.format(career.endDate, 'yyyy-MM-dd')}"></td>
|
||||
<td th:text="${career.workDay}"></td>
|
||||
<td th:text="${career.workMonth}"></td>
|
||||
<td>
|
||||
<th:block th:each="code:${session.commonCode.get('OG')}">
|
||||
<th:block th:if="${code.itemCd eq career.wrtOrgan}">
|
||||
<th:block th:text="${code.itemValue}"></th:block>
|
||||
</th:block>
|
||||
</th:block>
|
||||
<th:block th:each="code:${session.commonCode.get('OFC')}">
|
||||
<th:block th:if="${code.itemCd eq career.workPart}">
|
||||
<th:block th:text="${code.itemValue}"></th:block>
|
||||
</th:block>
|
||||
</th:block>
|
||||
<th:block th:text="${career.wrtUserNm}"></th:block>
|
||||
</td>
|
||||
<td th:text="${#temporals.format(career.wrtDt, 'yyyy-MM-dd HH:mm:ss')}"></td>
|
||||
<td>
|
||||
<button type="button" class="btn btn-sm btn-outline-danger deleteCareerBtn"
|
||||
th:data-careerseq="${career.careerSeq}" th:data-tab="${code.itemCd}">
|
||||
<i class="bi bi-trash"></i>
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</th:block>
|
||||
</th:block>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="9">
|
||||
<td colspan="11">
|
||||
<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>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,66 @@
|
|||
<!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="card">
|
||||
<div class="card-body text-center">
|
||||
<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>
|
||||
<tr class="kwmsCareerTr" th:each="career:${careerList}">
|
||||
<input type="hidden" class="designationCd" th:value="${career.designationCd}">
|
||||
<input type="hidden" class="workPositionStr" th:value="${career.workPositionStr}">
|
||||
<input type="hidden" class="workTitle" th:value="${career.workTitle}">
|
||||
<input type="hidden" class="startDate" th:value="${career.startDate}">
|
||||
<input type="hidden" class="endDate" th:value="${career.endDate}">
|
||||
<input type="hidden" class="workDay" th:value="${career.workDay}">
|
||||
<input type="hidden" class="workMonth" th:value="${career.workMonth}">
|
||||
<input type="hidden" class="hordCd" th:value="${career.hordCd}">
|
||||
<td>
|
||||
<select class="form-select form-select-sm careerSelector">
|
||||
<option value="">선택</option>
|
||||
<th:block th:each="code:${crcList}">
|
||||
<option th:value="${code.itemCd}" th:text="${code.itemValue}"></option>
|
||||
</th:block>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<th:block th:each="code:${session.commonCode.get('DSN')}">
|
||||
<th:block th:if="${code.itemCd eq career.designationCd}" th:text="${code.itemValue}"></th:block>
|
||||
</th:block>
|
||||
</td>
|
||||
<td th:text="${career.workPositionStr}"></td>
|
||||
<th:block th:each="code:${session.commonCode.get('JT')}">
|
||||
<th:block th:if="${code.itemCd eq career.workTitle}">
|
||||
<td th:text="${code.itemValue}"></td>
|
||||
</th:block>
|
||||
</th:block>
|
||||
<td th:text="${#temporals.format(career.startDate, 'yyyy-MM-dd')}"></td>
|
||||
<td th:text="${#temporals.format(career.endDate, 'yyyy-MM-dd')}"></td>
|
||||
<td th:text="${career.workDay}"></td>
|
||||
<td th:text="${career.workMonth}"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer justify-content-between">
|
||||
<button type="button" class="btn btn-primary" id="kwmsModalSelectBtn">선택</button>
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
|
||||
</div>
|
||||
</html>
|
||||
Loading…
Reference in New Issue