통역인 작업중.
parent
03dad25397
commit
7543382848
|
|
@ -12,6 +12,7 @@ import lombok.RequiredArgsConstructor;
|
|||
|
||||
import java.io.IOException;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
|
@ -70,14 +71,15 @@ public class TranslatorController {
|
|||
return mav;
|
||||
}
|
||||
|
||||
@PostMapping("/insertTranslatorInfo")
|
||||
public String insertTranslatorInfo(@AuthenticationPrincipal UserInfo loginUser,Translator translator) {
|
||||
@PostMapping("/saveTranslatorInfo")
|
||||
public void saveTranslatorInfo(@AuthenticationPrincipal UserInfo loginUser,Translator translator) {
|
||||
translator.setWrtUserSeq(loginUser.getUserSeq());
|
||||
translator.setWrtNm(loginUser.getUserNm());
|
||||
translator.setWrtOrgan(loginUser.getOgCd());
|
||||
translator.setWrtPart(loginUser.getOfcCd());
|
||||
translator.setWrtTitle(loginUser.getTitleCd());
|
||||
translator.setWrtDt(LocalDateTime.now());
|
||||
return translatorSevice.insertTranslatorInfo(translator);
|
||||
translatorSevice.saveTranslatorInfo(translator);
|
||||
}
|
||||
|
||||
@GetMapping("/translatorEditModal")
|
||||
|
|
@ -85,59 +87,47 @@ public class TranslatorController {
|
|||
ModelAndView mav = new ModelAndView("translator/translatorEditModal");
|
||||
//메뉴권한 확인
|
||||
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/translator/info").get(0).getAccessAuth();
|
||||
mav.addObject("wrtUserSeq", translatorSevice.selectTrFristUserSeq(translator.getTranslatorKey()));
|
||||
|
||||
mav.addObject("userSeq", loginUser.getUserSeq());
|
||||
mav.addObject("trInfo", translatorSevice.selectTranslatorView(translator));
|
||||
mav.addObject("mgtOrganList", loginUser.getDownOrganCdList());
|
||||
mav.addObject("accessAuth", accessAuth);
|
||||
return mav;
|
||||
if(translator.getTranslatorKey() != null){
|
||||
List<Translator> infoList = translatorSevice.selectHistoryList(translator.getTranslatorKey());
|
||||
mav.addObject("wrtUserSeq", infoList.get(infoList.size()-1).getWrtUserSeq());
|
||||
mav.addObject("trInfo", infoList.get(0));
|
||||
mav.addObject("historyList", infoList);
|
||||
List<TranslatorCrr> careerList = translatorSevice.selectCareerList(translator.getTranslatorKey());
|
||||
List<TranslatorCrr> kcgCareerList = new ArrayList<>();
|
||||
List<TranslatorCrr> otherCareerList = new ArrayList<>();
|
||||
for(TranslatorCrr career: careerList){
|
||||
if(career.getHisGubun().equals("Y")){
|
||||
kcgCareerList.add(career);
|
||||
}else{
|
||||
otherCareerList.add(career);
|
||||
}
|
||||
|
||||
@PostMapping("/updateTranslatorInfo")
|
||||
public Translator updatetranslatorInfo(@AuthenticationPrincipal UserInfo loginUser,Translator translator) {
|
||||
translator.setWrtNm(loginUser.getUserNm());
|
||||
translator.setWrtOrgan(loginUser.getOgCd());
|
||||
translator.setWrtPart(loginUser.getOfcCd());
|
||||
translator.setWrtTitle(loginUser.getTitleCd());
|
||||
translator.setWrtDt(LocalDateTime.now());
|
||||
Translator result = translatorSevice.updatetranslatorInfo(translator);
|
||||
return result;
|
||||
}
|
||||
|
||||
@GetMapping("/revisionHistory")
|
||||
public ModelAndView revisionHistory(Translator translator){
|
||||
ModelAndView mav = new ModelAndView("translator/translatorHistory");
|
||||
mav.addObject("historyList", translatorSevice.selectHistoryList(translator));
|
||||
mav.addObject("kcgCareerList", kcgCareerList);
|
||||
mav.addObject("otherCareerList", otherCareerList);
|
||||
}else{
|
||||
mav.addObject("wrtUserSeq", null);
|
||||
mav.addObject("trInfo", new Translator());
|
||||
mav.addObject("historyList", null);
|
||||
mav.addObject("kcgCareerList", null);
|
||||
mav.addObject("otherCareerList", null);
|
||||
}
|
||||
return mav;
|
||||
}
|
||||
|
||||
@GetMapping("/HistoryView")
|
||||
@ResponseBody
|
||||
public Translator HistoryView(Translator translator){
|
||||
|
||||
return translatorSevice.HistoryView(translator);
|
||||
}
|
||||
|
||||
@GetMapping("/careerView")
|
||||
public ModelAndView careerView(@AuthenticationPrincipal UserInfo loginUser,TranslatorCrr translatorCrr){
|
||||
ModelAndView mav = new ModelAndView("translator/translatorCareerModal");
|
||||
//메뉴권한 확인
|
||||
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/translator/info").get(0).getAccessAuth();
|
||||
mav.addObject("policeCrr", translatorSevice.selectMaritimePoliceCareer(translatorCrr));
|
||||
mav.addObject("anotherCrr", translatorSevice.selectAnotherOrganizationCareer(translatorCrr));
|
||||
mav.addObject("trKey", translatorCrr.getTranslatorKey());
|
||||
mav.addObject("wrtUserSeq", translatorSevice.selectTrFristUserSeq(translatorCrr.getTranslatorKey()));
|
||||
mav.addObject("userSeq", loginUser.getUserSeq());
|
||||
mav.addObject("trName", translatorSevice.selectTrLastName(translatorCrr));
|
||||
mav.addObject("accessAuth", accessAuth);
|
||||
public ModelAndView HistoryView(Translator translator){
|
||||
ModelAndView mav = new ModelAndView("translator/translatorHistory");
|
||||
mav.addObject("trInfo", translatorSevice.selectTranslator(translator.getTranslatorKey(), translator.getVersionNo()));
|
||||
return mav;
|
||||
}
|
||||
|
||||
@GetMapping("/careerInsertPage")
|
||||
public ModelAndView careerInsertPage(TranslatorCrr translatorCrr){
|
||||
ModelAndView mav = new ModelAndView("translator/translatorCareerInsert");
|
||||
mav.addObject("trKey", translatorCrr.getTranslatorKey());
|
||||
return mav;
|
||||
@GetMapping("/careerInsertTr")
|
||||
public ModelAndView careerInsertTr(){
|
||||
return new ModelAndView("translator/careerTr");
|
||||
}
|
||||
|
||||
@PostMapping("/insertTranslatorCareer")
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package com.dbnt.faisp.main.translator.repository;
|
|||
import com.dbnt.faisp.main.translator.model.TranslatorCrr;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
|
||||
|
|
@ -15,11 +16,5 @@ public interface TranslatorCareerRepository extends JpaRepository<TranslatorCrr,
|
|||
void deleteByTranslatorKey(int trKey);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
List<TranslatorCrr> findByTranslatorKeyOrderByCareerSeqDesc(Integer translatorKey);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,11 +5,13 @@ import org.springframework.data.jpa.repository.JpaRepository;
|
|||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.data.repository.query.Param;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
|
||||
public interface TranslatorRepository extends JpaRepository<Translator, Translator.TranslatorId> {
|
||||
|
||||
Translator findFirstByOrderByTranslatorKeyDesc();
|
||||
Optional<Translator> findFirstByOrderByTranslatorKeyDesc();
|
||||
|
||||
void deleteByTranslatorKey(int trKey);
|
||||
|
||||
|
|
@ -17,6 +19,7 @@ public interface TranslatorRepository extends JpaRepository<Translator, Translat
|
|||
String getTrLastName(@Param("translatorKey") Integer translatorKey);
|
||||
|
||||
|
||||
List<Translator> findByTranslatorKeyOrderByVersionNoDesc(Integer translatorKey);
|
||||
|
||||
|
||||
Optional<Translator> findTop1ByTranslatorKeyOrderByVersionNoDesc(Integer translatorKey);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,17 +25,16 @@ public class TranslatorService {
|
|||
private final TranslatorCareerRepository translatorCareerRepository;
|
||||
private final TranslatorMapper translatorMapper;
|
||||
|
||||
public String insertTranslatorInfo(Translator translator) {
|
||||
Translator dbTranslator = translatorRepository.findFirstByOrderByTranslatorKeyDesc();
|
||||
translator.setWrtDt(LocalDateTime.now());
|
||||
if (dbTranslator == null) {
|
||||
translator.setTranslatorKey(1);
|
||||
translator.setVersionNo(1);
|
||||
} else {
|
||||
translator.setTranslatorKey(dbTranslator.getTranslatorKey() + 1);
|
||||
@Transactional
|
||||
public void saveTranslatorInfo(Translator translator) {
|
||||
if(translator.getTranslatorKey()==null){
|
||||
Translator dbTranslator = translatorRepository.findFirstByOrderByTranslatorKeyDesc().orElse(null);
|
||||
translator.setTranslatorKey(dbTranslator == null?1:(dbTranslator.getTranslatorKey()+1));
|
||||
translator.setVersionNo(1);
|
||||
}else{
|
||||
translator.setVersionNo(translator.getVersionNo()+1);
|
||||
}
|
||||
return translatorRepository.save(translator).getTrName();
|
||||
translatorRepository.save(translator);
|
||||
}
|
||||
|
||||
public List<Translator> selectTranslatorList(Translator translator) {
|
||||
|
|
@ -46,48 +45,16 @@ public class TranslatorService {
|
|||
return translatorMapper.selectTranslatorListCnt(translator);
|
||||
}
|
||||
|
||||
public Translator selectTranslatorView(Translator translator) {
|
||||
return translatorRepository.findById(new TranslatorId(translator.getTranslatorKey(), translator.getVersionNo()))
|
||||
.orElse(null);
|
||||
public Translator selectTranslator(Integer translatorKey, Integer versionNo) {
|
||||
return translatorRepository.findById(new TranslatorId(translatorKey, versionNo)).orElse(null);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Translator updatetranslatorInfo(Translator translator) {
|
||||
Translator dbTranslator = translatorRepository
|
||||
.findById(new TranslatorId(translator.getTranslatorKey(), translator.getVersionNo())).orElse(null);
|
||||
Translator translatorTmp = new Translator();
|
||||
translatorTmp.setTranslatorKey(dbTranslator.getTranslatorKey());
|
||||
translatorTmp.setVersionNo(dbTranslator.getVersionNo() + 1);
|
||||
translatorTmp.setOgdp1(translator.getOgdp1());
|
||||
translatorTmp.setTrLang(translator.getTrLang());
|
||||
translatorTmp.setTrCareer(translator.getTrCareer());
|
||||
translatorTmp.setTrName(translator.getTrName());
|
||||
translatorTmp.setTrSex(translator.getTrSex());
|
||||
translatorTmp.setTrPhone(translator.getTrPhone());
|
||||
translatorTmp.setTrNny(translator.getTrNny());
|
||||
translatorTmp.setTrAge(translator.getTrAge());
|
||||
translatorTmp.setTrEdu(translator.getTrEdu());
|
||||
translatorTmp.setTrCft(translator.getTrCft());
|
||||
translatorTmp.setTrVisa(translator.getTrVisa());
|
||||
translatorTmp.setAptDt(translator.getAptDt());
|
||||
translatorTmp.setDmlYn(translator.getDmlYn());
|
||||
translatorTmp.setRemark(translator.getRemark());
|
||||
translatorTmp.setWrtNm(translator.getWrtNm());
|
||||
translatorTmp.setWrtDt(translator.getWrtDt());
|
||||
translatorTmp.setWrtOrgan(translator.getWrtOrgan());
|
||||
translatorTmp.setWrtPart(translator.getWrtPart());
|
||||
translatorTmp.setWrtTitle(translator.getWrtTitle());
|
||||
translatorTmp.setWrtUserSeq(translator.getWrtUserSeq());
|
||||
translatorRepository.save(translatorTmp);
|
||||
return translatorTmp;
|
||||
public List<Translator> selectHistoryList(Integer translatorKey) {
|
||||
return translatorRepository.findByTranslatorKeyOrderByVersionNoDesc(translatorKey);
|
||||
}
|
||||
|
||||
public List<Translator> selectHistoryList(Translator translator) {
|
||||
return translatorMapper.selectHistoryList(translator);
|
||||
}
|
||||
|
||||
public Translator HistoryView(Translator translator) {
|
||||
return translatorMapper.HistoryView(translator);
|
||||
public List<TranslatorCrr> selectCareerList(Integer translatorKey) {
|
||||
return translatorCareerRepository.findByTranslatorKeyOrderByCareerSeqDesc(translatorKey);
|
||||
}
|
||||
|
||||
public int insertTranslatorCareer(List<TranslatorCrr> translatorCrr) {
|
||||
|
|
@ -141,12 +108,4 @@ public class TranslatorService {
|
|||
return translatorMapper.selectTranslatorListEx(translator);
|
||||
}
|
||||
|
||||
public String selectTrFristUserSeq(int translatorKey) {
|
||||
return translatorMapper.selectTrFristUserSeq(translatorKey);
|
||||
}
|
||||
|
||||
public String selectTrLastName(TranslatorCrr translatorCrr) {
|
||||
return translatorRepository.getTrLastName(translatorCrr.getTranslatorKey());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -99,9 +99,6 @@
|
|||
.fs-13{
|
||||
font-size: 13px;
|
||||
}
|
||||
.pl-15{
|
||||
padding-left: 15%;
|
||||
}
|
||||
.w-30{
|
||||
width: 30%!important;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,23 @@
|
|||
let trCarrerList=[];
|
||||
let selectedIdx=0;
|
||||
|
||||
$(function(){
|
||||
$("#dateSelectorDiv").datepicker({
|
||||
format: "yyyy-mm-dd",
|
||||
language: "ko",
|
||||
autoclose: true
|
||||
});
|
||||
/*$("#aptDt").datepicker({
|
||||
format: "yyyy-mm-dd",
|
||||
language: "ko",
|
||||
autoclose: true
|
||||
});
|
||||
$(".tcDt").datepicker({
|
||||
format: "yyyy-mm-dd",
|
||||
language: "ko",
|
||||
autoclose: true
|
||||
});*/
|
||||
})
|
||||
|
||||
$(document).on('click', '#addTranslatorBtn', function (){
|
||||
getTranslatorEditModal(null, null);
|
||||
})
|
||||
|
||||
$(document).on('click', '.infoTr', function (){
|
||||
|
|
@ -35,113 +46,21 @@ function getTranslatorEditModal(translatorKey, versionNo){
|
|||
});
|
||||
}
|
||||
|
||||
$(document).on('click', '.translatorInfo', function (){
|
||||
document.getElementById('accessTab').classList.add('active');
|
||||
document.getElementById('approvalTab').classList.remove('active');
|
||||
const trKey = Number($("#selectedKey").val());
|
||||
const verNo = Number($("#selectedVerNo").val());
|
||||
const url = '/translator/translatorEditModal';
|
||||
revisionHistory(trKey,verNo,url);
|
||||
var html="";
|
||||
html += '<input type="hidden" class="tapTrKey" value="'+trKey+'">';
|
||||
html += '<input type="hidden" class="tapVerNo" value="'+verNo+'">';
|
||||
$("#KeyValue").empty().html(html)
|
||||
})
|
||||
|
||||
$(document).on('click', '#trView', function (){
|
||||
document.getElementById('accessTab').classList.add('active');
|
||||
document.getElementById('approvalTab').classList.remove('active');
|
||||
const trKey = (Number($(this).find(".trKey").val()));
|
||||
const verNo = (Number($(this).find(".verNo").val()));
|
||||
const url = '/translator/translatorEditModal';
|
||||
revisionHistory(trKey,verNo,url);
|
||||
var html="";
|
||||
html += '<input type="hidden" class="tapTrKey" value="'+trKey+'">';
|
||||
html += '<input type="hidden" class="tapVerNo" value="'+verNo+'">';
|
||||
$("#KeyValue").empty().html(html);
|
||||
})
|
||||
|
||||
$(document).on('click', '#updateBtn', function (){
|
||||
if($('#eOgdp1').val() == ''){
|
||||
alert("관서를 선택해주세요.");
|
||||
$('#eOgdp1').focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
if($('#eTrLang').val() == ''){
|
||||
alert("언어를 선택해주세요.");
|
||||
$('#eTrLang').focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
if($('#eTrEname').val() == ''){
|
||||
alert("성명을 입력해주세요.");
|
||||
$('#eTrEname').focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
if(confirm("수정하시겠습니까?")){
|
||||
document.getElementById("eOgdp1").disabled = false;
|
||||
const url = '/translator/translatorEditModal';
|
||||
contentFade("in");
|
||||
const formData = new FormData($("#trInfoUpdate")[0]);
|
||||
$.ajax({
|
||||
type : 'POST',
|
||||
data : formData,
|
||||
url : "/translator/updateTranslatorInfo",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
success : function(data) {
|
||||
alert("수정되었습니다.");
|
||||
contentFade("out");
|
||||
revisionHistory(data.translatorKey,data.versionNo,url);
|
||||
},
|
||||
error : function(xhr, status) {
|
||||
alert("수정에 실패하였습니다.");
|
||||
contentFade("out");
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
$(document).on('click', '#saveBtn', function (){
|
||||
if($('#ogdp1').val() == ''){
|
||||
alert("관서를 선택해주세요.");
|
||||
$('#ogdp1').focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
if($('#lang').val() == ''){
|
||||
alert("언어를 선택해주세요.");
|
||||
$('#lang').focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
if($('#trName').val() == ''){
|
||||
alert("성명을 입력해주세요.");
|
||||
$('#trName').focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
if($('#dmlYn').val() == ''){
|
||||
alert("해촉여부를 선택해주세요.");
|
||||
$('#dmlYn').focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
$(document).on('click', '#saveBtn,#updateBtn', function (){
|
||||
if(contentCheck()){
|
||||
if(confirm("저장하시겠습니까?")){
|
||||
document.getElementById("ogdp1").disabled = false;
|
||||
contentFade("in");
|
||||
const formData = new FormData($("#translatorInsert")[0]);
|
||||
const trInfoForm = $("#trInfoForm");
|
||||
trInfoForm.find('select,input').removeAttr("disabled");
|
||||
const formData = new FormData(trInfoForm[0]);
|
||||
$.ajax({
|
||||
type : 'POST',
|
||||
data : formData,
|
||||
url : "/translator/insertTranslatorInfo",
|
||||
url : "/translator/saveTranslatorInfo",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
success : function(result) {
|
||||
alert("저장되었습니다.")
|
||||
contentFade("out");
|
||||
location.reload();
|
||||
},
|
||||
error : function(xhr, status) {
|
||||
|
|
@ -150,14 +69,12 @@ $(document).on('click', '#saveBtn', function (){
|
|||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
$(document).on('click', '.historyInfoTr', function (){
|
||||
$(".hisChk").prop("checked", false);
|
||||
$(this).find('.hisChk').prop('checked',true)
|
||||
if($(this).find('.hisChk').prop('checked')){
|
||||
$('.hisChk').prop('checked',false);
|
||||
$(this).find('.hisChk').prop('checked',true)
|
||||
}
|
||||
$.ajax({
|
||||
url: '/translator/HistoryView',
|
||||
data: {
|
||||
|
|
@ -165,40 +82,17 @@ $(document).on('click', '.historyInfoTr', function (){
|
|||
versionNo : Number($(this).find(".verNo").val())
|
||||
},
|
||||
type: 'GET',
|
||||
dataType:"json",
|
||||
success: function(data){
|
||||
$("#ogdp1V").val(data.ogdp1);
|
||||
$("#trLangV").val(data.trLang);
|
||||
$("#trCareerV").val(data.trCareer);
|
||||
$("#trNameV").val(data.trName);
|
||||
$("#trSexV").val(data.trSex);
|
||||
$("#trPhoneV").val(data.trPhone);
|
||||
$("#trNnyV").val(data.trNny);
|
||||
$("#trAgeV").val(data.trAge);
|
||||
$("#trVisaV").val(data.trVisa);
|
||||
$("#trEduV").val(data.trEdu);
|
||||
$("#trCftV").val(data.trCft);
|
||||
$("#aptDtV").val(data.aptDt);
|
||||
$("#dmlYnV").val(data.dmlYn);
|
||||
$("#remarkV").val(data.remark);
|
||||
dataType:"html",
|
||||
success: function(html){
|
||||
$("#valueDiv").empty().append(html);
|
||||
},
|
||||
error:function(e){
|
||||
ajaxErrorAction(e);
|
||||
}
|
||||
});
|
||||
})
|
||||
$(document).ready( function() {
|
||||
$("#aptDt").datepicker({
|
||||
format: "yyyy-mm-dd",
|
||||
language: "ko",
|
||||
autoclose: true
|
||||
});
|
||||
$(".tcDt").datepicker({
|
||||
format: "yyyy-mm-dd",
|
||||
language: "ko",
|
||||
autoclose: true
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
$(document).on('click', '#approvalTab', function (){
|
||||
const trKey = (Number($('.tapTrKey').val()));
|
||||
|
|
@ -262,120 +156,36 @@ $(document).on('change', '#eTrNny', function (){
|
|||
}
|
||||
});
|
||||
|
||||
$(document).on('click', '#crrAddBtn', function (){
|
||||
const trKey = (Number($('#tcInsertKey').val()));
|
||||
$('#insertCareer').append(
|
||||
'<div id="crrDiv">'+
|
||||
'<div class="row mb-1">'+
|
||||
'<label for="ogCd" class="col-sm-2 col-form-label-sm text-center">경력구분</label>'+
|
||||
'<div class="col-sm-2">'+
|
||||
'<select class="form-select form-select-sm crrInput" name="hisGubun">'+
|
||||
'<option value="">선택</option>'+
|
||||
'<option value="Y">해양경찰청</option>'+
|
||||
'<option value="N">타기관</option>'+
|
||||
'</select>'+
|
||||
'</div>'+
|
||||
'<label for="ofcCd" class="col-sm-1 col-form-label-sm text-center">날짜</label>'+
|
||||
'<div class="col-sm-2">'+
|
||||
'<input type="text" class="form-control tcDt crrInput" id="tcDt" name="tcDt" readonly>'+
|
||||
'</div>'+
|
||||
'<label for="ofcCd" class="col-sm-1 col-form-label-sm text-center">내용</label>'+
|
||||
'<div class="col-sm-2">'+
|
||||
'<input type="text" class="form-control crrInput" id="contents" name="contents">'+
|
||||
'</div>'+
|
||||
'</div>'+
|
||||
'<div class="mb-2 row">'+
|
||||
'<label for="ofcCd" class="col-sm-2 col-form-label-sm text-center">비고</label>'+
|
||||
'<div class="col-sm-8">'+
|
||||
'<input type="text" class="form-control crrInput" id="remark" name="remark">'+
|
||||
'</div>'+
|
||||
'<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>'
|
||||
)
|
||||
$(".tcDt").datepicker({
|
||||
$(document).on('click', '.addCareerBtn', function (){
|
||||
const hisGubun = $(this).attr('data-hisgubun')
|
||||
$.ajax({
|
||||
url: '/translator/careerInsertTr',
|
||||
type: 'GET',
|
||||
dataType:"html",
|
||||
success: function(html){
|
||||
const addBody = $(html).find("#addBody");
|
||||
addBody.find(".tcDt").datepicker({
|
||||
format: "yyyy-mm-dd",
|
||||
language: "ko",
|
||||
autoclose: true
|
||||
});
|
||||
trCarrerList.push({translatorKey:trKey, hisGubun:"",tcDt:"",contents:"",remark:""});
|
||||
})
|
||||
|
||||
$(document).on('click', '.rowDeleteBtn', function (){
|
||||
selectedIdx = $(this).parents("#crrDiv").index()-1;
|
||||
trCarrerList.splice(selectedIdx,1);
|
||||
$(this).parents('#crrDiv').remove();
|
||||
})
|
||||
|
||||
$(document).on('change', '.crrInput', function (){
|
||||
selectedIdx = $(this).parents("#crrDiv").index()-1;
|
||||
const target = trCarrerList[selectedIdx];
|
||||
switch (this.name){
|
||||
case "hisGubun":
|
||||
target.hisGubun = this.value
|
||||
break;
|
||||
case "tcDt":
|
||||
target.tcDt = this.value
|
||||
break;
|
||||
case "contents":
|
||||
target.contents = this.value
|
||||
break;
|
||||
case "remark":
|
||||
target.remark = this.value
|
||||
break;
|
||||
if(hisGubun === 'Y'){
|
||||
$("#kcgCareerTbody").append(addBody.children()[0])
|
||||
}else{
|
||||
$("#otherCareerTbody").append(addBody.children()[0])
|
||||
}
|
||||
})
|
||||
|
||||
$(document).on('click', '.careerInfo', function (){
|
||||
const trKey = Number($("#selectedKey").val());
|
||||
showCareer(trKey);
|
||||
})
|
||||
|
||||
function showCareer(trKey){
|
||||
$.ajax({
|
||||
url: '/translator/careerView',
|
||||
data: {
|
||||
translatorKey: trKey,
|
||||
},
|
||||
type: 'GET',
|
||||
dataType:"html",
|
||||
success: function(html){
|
||||
$("#careerView").empty().append(html)
|
||||
$("#translatorCareerModal").modal('show');
|
||||
},
|
||||
error:function(e){
|
||||
ajaxErrorAction(e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
$(document).on('click', '#crrInsertBtn', function (){
|
||||
const trKey = Number($("#tcmKey").val());
|
||||
$.ajax({
|
||||
url: '/translator/careerInsertPage',
|
||||
data: {
|
||||
translatorKey: trKey,
|
||||
},
|
||||
type: 'GET',
|
||||
dataType:"html",
|
||||
success: function(html){
|
||||
$("#careerView").empty().append(html)
|
||||
$("#translatorCareerModal").modal('show');
|
||||
},
|
||||
error:function(e){
|
||||
ajaxErrorAction(e);
|
||||
}
|
||||
});
|
||||
|
||||
})
|
||||
|
||||
$(document).on('click', '#crrSaveBtn', function (){
|
||||
if(trCarrerList.length < 1){
|
||||
alert("새로 입력된 경력정보가 없습니다.");
|
||||
return false;
|
||||
}
|
||||
if(confirm("저장하시겠습니까?")){
|
||||
contentFade("in");
|
||||
$.ajax({
|
||||
|
|
@ -400,9 +210,9 @@ $(document).on('click', '#crrSaveBtn', function (){
|
|||
}
|
||||
})
|
||||
|
||||
function deleteCareerBtn(crrSeq,trKey){
|
||||
$(document).on('click', '.deleteCareerBtn', function (){
|
||||
if(confirm("삭제하시겠습니까?")){
|
||||
$.ajax({
|
||||
/*$.ajax({
|
||||
type : 'POST',
|
||||
url : "/translator/deleteCareer",
|
||||
data : JSON.stringify({careerSeq:crrSeq,
|
||||
|
|
@ -418,9 +228,9 @@ function deleteCareerBtn(crrSeq,trKey){
|
|||
error : function(xhr, status) {
|
||||
alert("삭제 처리에 실패하였습니다");
|
||||
}
|
||||
})
|
||||
})*/
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
$(document).on('click', '#trDeleteBtn', function (){
|
||||
if(confirm("해임 하시겠습니까?")){
|
||||
|
|
@ -468,3 +278,27 @@ $(document).on('click', '#excelDown', function (){
|
|||
|
||||
|
||||
|
||||
function contentCheck(){
|
||||
if(!$('#eOgdp1').val()){
|
||||
alert("관서를 선택해주세요.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!$('#eTrLang').val()){
|
||||
alert("언어를 선택해주세요.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!$('#eTrEname').val()){
|
||||
alert("성명을 입력해주세요.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!$('#eDmlYn').val()){
|
||||
alert("해촉여부를 선택해주세요.");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,16 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
||||
<table>
|
||||
<tbody id="addBody">
|
||||
<tr>
|
||||
<td></td>
|
||||
<td><input type="text" class="form-control form-control-sm tcDt" placeholder="날짜"></td>
|
||||
<td><input type="text" class="form-control form-control-sm contents" placeholder="내용"></td>
|
||||
<td><input type="text" class="form-control form-control-sm remark" placeholder="비고"></td>
|
||||
<td>
|
||||
<button type="button" class="btn btn-danger m-0 deleteCareerBtn">삭제</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</html>
|
||||
|
|
@ -126,7 +126,7 @@
|
|||
</tr>
|
||||
</thead>
|
||||
<tbody class="table-group-divider">
|
||||
<tr class="infoTr" data-bs-toggle="dropdown" aria-expanded="false" th:each="trInfo, idx:${translatorList}">
|
||||
<tr class="infoTr" th:each="trInfo, idx:${translatorList}">
|
||||
<input type="hidden" class="trKey" th:value="${trInfo.translatorKey}">
|
||||
<input type="hidden" class="verNo" th:value="${trInfo.versionNo}">
|
||||
<td th:text="${idx.count+((searchParams.pageIndex-1)*searchParams.rowCnt)}"></td>
|
||||
|
|
@ -195,6 +195,5 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</html>
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
||||
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
|
||||
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
|
||||
<div class="row mx-0">
|
||||
<div class="col-12 card bg-light">
|
||||
<div class="card-body">
|
||||
<div class="row justify-content-start">
|
||||
<h6>경력 등록</h6>
|
||||
<input type="hidden" id="tcInsertKey" th:value="${trKey}">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div id="insertCareer">
|
||||
<div class="row justify-content-center">
|
||||
<button class="btn btn-sm btn-outline-primary col-auto" id="crrAddBtn"><i class="bi bi-plus-lg"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer bg-light">
|
||||
<button type="button" class="btn btn-primary" id="crrSaveBtn">저장</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</html>
|
||||
|
|
@ -1,73 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
||||
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
|
||||
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
|
||||
<div class="row mx-0">
|
||||
<div class="col-12 card bg-light">
|
||||
<div class="card-body">
|
||||
<div class="row justify-content-start">
|
||||
<div class="row mb-1">
|
||||
<label class="col-sm-2 col-form-label text-center">통역인이름</label>
|
||||
<div class="col-sm-2">
|
||||
<input type="text" class="form-control text-center" th:value="${trName}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<h6>해양경찰청 이력</h6>
|
||||
<input type="hidden" id="tcmKey" th:value="${trKey}">
|
||||
<table class="table table-sm table-hover table-bordered text-center" id="categoryTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>연번</th>
|
||||
<th>날짜</th>
|
||||
<th>내용</th>
|
||||
<th>비고</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="overflow-scroll table-group-divider text-center">
|
||||
<tr class="" th:each="crrInfo,i:${policeCrr}">
|
||||
<td th:text="${policeCrr.size()-i.index}"></td>
|
||||
<td th:text="${crrInfo.tcDt}"></td>
|
||||
<td th:text="${crrInfo.contents}"></td>
|
||||
<td th:text="${crrInfo.remark}"></td>
|
||||
<td><button type="button" class="btn btn-danger m-0" id="deleteCareerBtn" th:onclick="|javascript:deleteCareerBtn('${crrInfo.careerSeq}','${crrInfo.translatorKey}')|" th:if="${accessAuth eq 'ACC003'} or ${wrtUserSeq eq userSeq}">삭제</button></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="row">
|
||||
<h6>타기관 이력</h6>
|
||||
<table class="table table-sm table-hover table-bordered text-center" id="categoryTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>연번</th>
|
||||
<th>날짜</th>
|
||||
<th>내용</th>
|
||||
<th>비고</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="overflow-scroll table-group-divider">
|
||||
<tr class="" th:each="crrInfo,i:${anotherCrr}">
|
||||
<td th:text="${anotherCrr.size()-i.index}"></td>
|
||||
<td th:text="${crrInfo.tcDt}"></td>
|
||||
<td th:text="${crrInfo.contents}"></td>
|
||||
<td th:text="${crrInfo.remark}"></td>
|
||||
<td><button type="button" class="btn btn-danger m-0" id="deleteCareerBtn" th:onclick="|javascript:deleteCareerBtn('${crrInfo.careerSeq}','${crrInfo.translatorKey}')|" th:if="${accessAuth eq 'ACC003'} or ${wrtUserSeq eq userSeq}">삭제</button></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer bg-light">
|
||||
<button type="button" class="btn btn-primary" id="crrInsertBtn" th:if="${accessAuth eq 'ACC003'} or ${wrtUserSeq eq userSeq}">이력등록</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</html>
|
||||
|
|
@ -1,84 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
||||
<script type="text/javascript" th:src="@{/js/translator/translator.js}"></script>
|
||||
<div class="card">
|
||||
<div class="card-header bg-white">
|
||||
<div class="row justify-content-between">
|
||||
<div class="col-auto">민간통역인현황</div>
|
||||
<div class="col-auto"><a href="/translator/info" class="link-dark"><i class="bi bi-list"></i></a></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<input type="hidden" id="selectedKey">
|
||||
<input type="hidden" id="selectedVerNo">
|
||||
<table class="table table-sm table-hover table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>관서명</th>
|
||||
<th>언어</th>
|
||||
<th>성명</th>
|
||||
<th>위촉일</th>
|
||||
<th>연락처</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="table-group-divider">
|
||||
<tr class="userInfoTr" data-bs-toggle="dropdown" aria-expanded="false" th:each="trInfo:${translatorList}">
|
||||
<input type="hidden" class="trKey" th:value="${trInfo.translatorKey}">
|
||||
<input type="hidden" class="verNo" th:value="${trInfo.versionNo}">
|
||||
<td>
|
||||
<p class="m-0" th:text="${trInfo.ogdp1}"></p>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a class="dropdown-item careerInfo" href="#">경력관리</a></li>
|
||||
<li><a class="dropdown-item translatorInfo" href="#">인적사항</a></li>
|
||||
</ul>
|
||||
</td>
|
||||
<td th:text="${trInfo.trLang}"></td>
|
||||
<td th:text="${trInfo.trName}"></td>
|
||||
<td th:text="${trInfo.aptDt}"></td>
|
||||
<td th:text="${trInfo.trPhone}"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal fade" id="translatorEditModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="authEditModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-xl modal-dialog-scrollable">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header bg-dark">
|
||||
<h5 class="modal-title text-white" id="translatorEditModalLabel">통역인 정보</h5>
|
||||
<button type="button" class="btn-close f-invert" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div id="KeyValue">
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<ul class="nav nav-tabs" id="userTab" role="tablist">
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link active" id="accessTab" data-bs-toggle="tab" data-bs-target="#accessTabPanel" type="button" role="tab" aria-controls="accessTabPanel" aria-selected="true">인적사항</button>
|
||||
</li>
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link" id="approvalTab" data-bs-toggle="tab" data-bs-target="#approvalTabPanel" type="button" role="tab" aria-controls="approvalTabPanel" aria-selected="false">수정이력</button>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="tab-content bg-white border border-top-0" id="configInfo">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="modal fade" id="translatorCareerModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="authEditModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-xl modal-dialog-scrollable">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header bg-dark">
|
||||
<h5 class="modal-title text-white" id="translatorCareerModalLabel">경력현황</h5>
|
||||
<button type="button" class="btn-close f-invert" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="tab-content border bg-white border-top-0" id="careerView">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</html>
|
||||
|
|
@ -7,26 +7,31 @@
|
|||
<div id="KeyValue">
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<ul class="nav nav-tabs" id="userTab" role="tablist">
|
||||
<ul class="nav nav-tabs" id="translatorTab" role="tablist">
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link active" id="accessTab" data-bs-toggle="tab" data-bs-target="#accessTabPanel" type="button" role="tab" aria-controls="accessTabPanel" aria-selected="true">인적사항</button>
|
||||
<button class="nav-link active" id="infoTab" data-bs-toggle="tab" data-bs-target="#infoTabPanel" type="button" role="tab" aria-controls="infoTabPanel" aria-selected="true">인적사항</button>
|
||||
</li>
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link" id="approvalTab" data-bs-toggle="tab" data-bs-target="#approvalTabPanel" type="button" role="tab" aria-controls="approvalTabPanel" aria-selected="false">수정이력</button>
|
||||
<li class="nav-item" role="presentation" th:if="${historyList ne null}">
|
||||
<button class="nav-link" id="historyTab" data-bs-toggle="tab" data-bs-target="#historyTabPanel" type="button" role="tab" aria-controls="historyTabPanel" aria-selected="false">수정이력</button>
|
||||
</li>
|
||||
<li class="nav-item" role="presentation" th:if="${kcgCareerList ne null or otherCareerList ne null}">
|
||||
<button class="nav-link" id="careerTab" data-bs-toggle="tab" data-bs-target="#careerTabPanel" type="button" role="tab" aria-controls="careerTabPanel" aria-selected="false">경력</button>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="tab-content bg-white border border-top-0" id="configInfo">
|
||||
<form id="trInfoUpdate" method="post">
|
||||
<div class="tab-pane fade p-2 show active" id="infoTabPanel" role="tabpanel" tabindex="0">
|
||||
<form id="trInfoForm" method="post">
|
||||
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
|
||||
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
|
||||
<input type="hidden" class="translatorKey" name="translatorKey" th:value="${trInfo.translatorKey}"/>
|
||||
<input type="hidden" class="versionNo" name="versionNo" th:value="${trInfo.versionNo}"/>
|
||||
<br>
|
||||
<div class="pl-15">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-8">
|
||||
<div class="row mb-1">
|
||||
<label for="eOgdp1" class="col-sm-1 col-form-label-sm text-center">관서</label>
|
||||
<div class="col-sm-2">
|
||||
<select class="form-select" id="eOgdp1" name="ogdp1" th:disabled="${accessAuth ne 'ACC003'}">
|
||||
<div class="col-sm-3">
|
||||
<select class="form-select" id="eOgdp1" name="ogdp1" th:disabled="${!(trInfo.translatorKey eq null and accessAuth ne 'ACC001') and !(accessAuth eq 'ACC003')}">
|
||||
<option value="">선택</option>
|
||||
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
|
||||
<th:block th:if="${#lists.contains(mgtOrganList, commonCode.itemCd)}">
|
||||
|
|
@ -36,7 +41,7 @@
|
|||
</select>
|
||||
</div>
|
||||
<label for="eTrLang" class="col-sm-1 col-form-label-sm text-center">언어</label>
|
||||
<div class="col-sm-2">
|
||||
<div class="col-sm-3">
|
||||
<select class="form-select" id="eTrLang" name="trLang">
|
||||
<option value="">선택</option>
|
||||
<th:block th:each="commonCode:${session.commonCode.get('LGG')}">
|
||||
|
|
@ -45,32 +50,32 @@
|
|||
</select>
|
||||
</div>
|
||||
<label for="eTrCareer" class="col-sm-1 col-form-label-sm text-center">경력</label>
|
||||
<div class="col-sm-2">
|
||||
<div class="col-sm-3">
|
||||
<input type="text" class="form-control" id="eTrCareer" name="trCareer" th:value="${trInfo.trCareer}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label for="eTrEname" class="col-sm-1 col-form-label-sm text-center">성명</label>
|
||||
<div class="col-sm-2">
|
||||
<div class="col-sm-3">
|
||||
<input type="text" class="form-control" id="eTrEname" name="trName" th:value="${trInfo.trName}">
|
||||
</div>
|
||||
<label for="eTrSex" class="col-sm-1 col-form-label-sm text-center">성별</label>
|
||||
<div class="col-sm-2">
|
||||
<div class="col-sm-3">
|
||||
<select class="form-select" id="eTrSex" name="trSex">
|
||||
<option value="">선택</option>
|
||||
<th:block th:each="commonCode:${session.commonCode.get('SEX')}">
|
||||
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd} == ${trInfo.trSex}"></option>
|
||||
<th:block th:each="code:${session.commonCode.get('SEX')}">
|
||||
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq trInfo.trSex}"></option>
|
||||
</th:block>
|
||||
</select>
|
||||
</div>
|
||||
<label for="eTrPhone" class="col-sm-1 col-form-label-sm text-center">연락처</label>
|
||||
<div class="col-sm-2">
|
||||
<div class="col-sm-3">
|
||||
<input type="text" class="form-control" id="eTrPhone" name="trPhone" th:value="${trInfo.trPhone}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label for="eTrNny" class="col-sm-1 col-form-label-sm text-center">국적</label>
|
||||
<div class="col-sm-2">
|
||||
<div class="col-sm-3">
|
||||
<select class="form-select" id="eTrNny" name="trNny">
|
||||
<option value="">선택</option>
|
||||
<th:block th:each="code:${session.commonCode.get('NNY')}">
|
||||
|
|
@ -79,7 +84,7 @@
|
|||
</select>
|
||||
</div>
|
||||
<label for="enaturalization" class="col-sm-1 col-form-label-sm text-center">귀화</label>
|
||||
<div class="col-sm-2">
|
||||
<div class="col-sm-3">
|
||||
<select class="form-select" id="enaturalization" name="naturalization" th:disabled="${trInfo.trNny ne 'NNY001'}">
|
||||
<option value="">선택</option>
|
||||
<option value="O" th:selected="${trInfo.naturalization eq 'O'}">O</option>
|
||||
|
|
@ -89,26 +94,26 @@
|
|||
</div>
|
||||
<div class="row mb-1">
|
||||
<label for="eTrAge" class="col-sm-1 col-form-label-sm text-center">나이</label>
|
||||
<div class="col-sm-2">
|
||||
<div class="col-sm-3">
|
||||
<input type="text" class="form-control" id="eTrAge" name="trAge" th:value="${trInfo.trAge}">
|
||||
</div>
|
||||
<label for="eTrEdu" class="col-sm-1 col-form-label-sm text-center">학력</label>
|
||||
<div class="col-sm-2">
|
||||
<div class="col-sm-3">
|
||||
<select class="form-select" id="eTrEdu" name="trEdu">
|
||||
<option value="">선택</option>
|
||||
<th:block th:each="commonCode:${session.commonCode.get('EDU')}">
|
||||
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd} == ${trInfo.trEdu}"></option>
|
||||
<th:block th:each="code:${session.commonCode.get('EDU')}">
|
||||
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq trInfo.trEdu}"></option>
|
||||
</th:block>
|
||||
</select>
|
||||
</div>
|
||||
<label for="eTrCft" class="col-sm-1 col-form-label-sm text-center">자격증</label>
|
||||
<div class="col-sm-2">
|
||||
<div class="col-sm-3">
|
||||
<input type="text" class="form-control" id="eTrCft" name="trCft" th:value="${trInfo.trCft}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label for="eTrVisa" class="col-sm-1 col-form-label-sm text-center">비자</label>
|
||||
<div class="col-sm-2">
|
||||
<div class="col-sm-3">
|
||||
<select class="form-select" id="eTrVisa" name="trVisa">
|
||||
<option value="">선택</option>
|
||||
<th:block th:each="code:${session.commonCode.get('VISA')}">
|
||||
|
|
@ -117,11 +122,11 @@
|
|||
</select>
|
||||
</div>
|
||||
<label for="viewAptDt" class="col-sm-1 col-form-label-sm text-center">위촉일</label>
|
||||
<div class="col-sm-2">
|
||||
<div class="col-sm-3">
|
||||
<input type="text" class="form-control" id="viewAptDt" name="aptDt" th:value="${trInfo.aptDt}" readonly>
|
||||
</div>
|
||||
<label for="eDmlYn" class="col-sm-1 col-form-label-sm text-center">해촉</label>
|
||||
<div class="col-sm-2">
|
||||
<div class="col-sm-3">
|
||||
<select class="form-select" id="eDmlYn" name="dmlYn">
|
||||
<option value="">선택</option>
|
||||
<option value="O" th:selected="'O' == ${trInfo.dmlYn}">O</option>
|
||||
|
|
@ -131,18 +136,157 @@
|
|||
</div>
|
||||
<div class="mb-2 row">
|
||||
<label for="eRemark" class="col-sm-1 col-form-label-sm text-center">비고</label>
|
||||
<div class="col-sm-8">
|
||||
<div class="col-sm-11">
|
||||
<input type="text" class="form-control" id="eRemark" name="remark" th:value="${trInfo.remark}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row justify-content-end">
|
||||
<button type="button" class="btn btn-secondary col-auto mx-1" id="trDeleteBtn" th:if="${accessAuth eq 'ACC003' or wrtUserSeq eq userSeq}">해임</button>
|
||||
<button type="button" class="btn btn-warning col-auto mx-1" id="updateBtn" th:if="${accessAuth eq 'ACC003' or wrtUserSeq eq userSeq}">수정</button>
|
||||
<button type="button" class="btn btn-primary col-auto mx-1" id="saveBtn" th:if="${accessAuth ne 'ACC001' and trInfo.translatorKey eq null}">저장</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="tab-pane fade p-2" id="historyTabPanel" role="tabpanel" tabindex="0">
|
||||
<div class="row mx-0">
|
||||
<div class="col-100 card text-center">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
</div>
|
||||
<div class="row justify-content-start">
|
||||
<div class="col-4">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<table class="table table-sm table-hover table-bordered" id="categoryTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>작성자</th>
|
||||
<th>등록일</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="table-group-divider overflow-scroll">
|
||||
<tr class="historyInfoTr" th:each="trInfo:${historyList}">
|
||||
<input type="hidden" class="trKey" th:value="${trInfo.translatorKey}">
|
||||
<input type="hidden" class="verNo" th:value="${trInfo.versionNo}">
|
||||
<td><input type="checkbox" class="hisChk"></td>
|
||||
<td>
|
||||
<th:block th:each="code:${session.commonCode.get('JT')}">
|
||||
<th:block th:if="${code.itemCd eq trInfo.wrtTitle}" th:text="${code.itemValue}"></th:block>
|
||||
</th:block>
|
||||
<th:block th:text="${trInfo.wrtNm}"></th:block>
|
||||
</td>
|
||||
<td th:text="${#temporals.format(trInfo.wrtDt, 'yyyy-MM-dd HH:mm')}"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-8" id="valueDiv">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer bg-light">
|
||||
<button type="button" class="btn btn-secondary" id="trDeleteBtn" th:if="${accessAuth eq 'ACC003'} or ${wrtUserSeq eq userSeq}">해임</button>
|
||||
<button type="button" class="btn btn-warning" id="updateBtn" th:if="${accessAuth eq 'ACC003'} or ${wrtUserSeq eq userSeq}">수정</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-pane fade p-2" id="careerTabPanel" role="tabpanel" tabindex="0">
|
||||
<div class="row">
|
||||
<h6>해양경찰청 이력</h6>
|
||||
<table class="table table-sm table-hover table-bordered text-center">
|
||||
<colgroup>
|
||||
<col style="width: 5%">
|
||||
<col style="width: 15%">
|
||||
<col style="width: 35%">
|
||||
<col style="width: 35%">
|
||||
<col style="width: 10%">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>연번</th>
|
||||
<th>날짜</th>
|
||||
<th>내용</th>
|
||||
<th>비고</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="overflow-scroll table-group-divider text-center" id="kcgCareerTbody">
|
||||
<tr class="" th:each="crrInfo,i:${kcgCareerList}">
|
||||
<td th:text="${kcgCareerList.size()-i.index}"></td>
|
||||
<td th:text="${crrInfo.tcDt}"></td>
|
||||
<td th:text="${crrInfo.contents}"></td>
|
||||
<td th:text="${crrInfo.remark}"></td>
|
||||
<td>
|
||||
<button type="button" class="btn btn-danger m-0 deleteCareerBtn"
|
||||
th:if="${accessAuth eq 'ACC003' or wrtUserSeq eq userSeq}">삭제</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="5">
|
||||
<button type="button" class="btn btn-sm btn-outline-primary addCareerBtn"
|
||||
data-hisgubun="Y" th:if="${accessAuth eq 'ACC003' or wrtUserSeq eq userSeq}">
|
||||
<i class="bi bi-plus"></i>
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
<div class="row">
|
||||
<h6>타기관 이력</h6>
|
||||
<table class="table table-sm table-hover table-bordered text-center">
|
||||
<colgroup>
|
||||
<col style="width: 5%">
|
||||
<col style="width: 15%">
|
||||
<col style="width: 35%">
|
||||
<col style="width: 35%">
|
||||
<col style="width: 10%">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>연번</th>
|
||||
<th>날짜</th>
|
||||
<th>내용</th>
|
||||
<th>비고</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="overflow-scroll table-group-divider" id="otherCareerTbody">
|
||||
<tr class="" th:each="crrInfo,i:${otherCareerList}">
|
||||
<td th:text="${otherCareerList.size()-i.index}"></td>
|
||||
<td th:text="${crrInfo.tcDt}"></td>
|
||||
<td th:text="${crrInfo.contents}"></td>
|
||||
<td th:text="${crrInfo.remark}"></td>
|
||||
<td>
|
||||
<button type="button" class="btn btn-danger m-0 deleteCareerBtn"
|
||||
th:if="${accessAuth eq 'ACC003' or wrtUserSeq eq userSeq}">삭제</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="5">
|
||||
<button type="button" class="btn btn-sm btn-outline-primary addCareerBtn"
|
||||
data-hisgubun="N" th:if="${accessAuth eq 'ACC003' or wrtUserSeq eq userSeq}">
|
||||
<i class="bi bi-plus"></i>
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
<div class="row justify-content-end">
|
||||
<button type="button" class="btn btn-primary col-auto" id="crrInsertBtn" th:if="${accessAuth eq 'ACC003' or wrtUserSeq eq userSeq}" th:data-translatorkey="${trInfo.translatorKey}">저장</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</html>
|
||||
|
|
@ -1,110 +1,65 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
||||
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
|
||||
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
|
||||
<div class="row mx-0">
|
||||
<div class="col-100 card text-center">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
</div>
|
||||
<div class="row justify-content-start">
|
||||
<div class="col-4">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<table class="table table-sm table-hover table-bordered" id="categoryTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>작성자</th>
|
||||
<th>등록일</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="table-group-divider overflow-scroll">
|
||||
<tr class="historyInfoTr" th:each="trInfo:${historyList}">
|
||||
<td><input type="checkbox" class="hisChk">
|
||||
<input type="hidden" class="trKey" th:value="${trInfo.translatorKey}">
|
||||
<input type="hidden" class="verNo" th:value="${trInfo.versionNo}">
|
||||
</td>
|
||||
<td th:text="|${trInfo.wrtTitle} ${trInfo.wrtNm}|"></td>
|
||||
<td th:text="${#temporals.format(trInfo.wrtDt, 'yyyy-MM-dd HH:mm')}"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-8" id="valueDiv">
|
||||
<div class="row mb-1">
|
||||
<label for="ogCd" class="col-sm-1 col-form-label-sm text-center">관서</label>
|
||||
<div class="col-sm-3">
|
||||
<input type="text" class="form-control" id="ogdp1V" readonly>
|
||||
</div>
|
||||
<label for="ofcCd" class="col-sm-1 col-form-label-sm text-center">언어</label>
|
||||
<div class="col-sm-3">
|
||||
<input type="text" class="form-control" id="trLangV" readonly>
|
||||
</div>
|
||||
<label for="ofcCd" class="col-sm-1 col-form-label-sm text-center">경력</label>
|
||||
<div class="col-sm-3">
|
||||
<input type="text" class="form-control" id="trCareerV" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label for="ogCd" class="col-sm-1 col-form-label-sm text-center">성명</label>
|
||||
<div class="col-sm-3">
|
||||
<input type="text" class="form-control" id="trNameV" readonly>
|
||||
</div>
|
||||
<label for="ofcCd" class="col-sm-1 col-form-label-sm text-center">성별</label>
|
||||
<div class="col-sm-3">
|
||||
<input type="text" class="form-control" id="trSexV"readonly>
|
||||
</div>
|
||||
<label for="ofcCd" class="col-sm-1 col-form-label-sm text-center">연락처</label>
|
||||
<div class="col-sm-3">
|
||||
<input type="text" class="form-control" id="trPhoneV" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label for="ogCd" class="col-sm-1 col-form-label-sm text-center">국적</label>
|
||||
<div class="col-sm-3">
|
||||
<input type="text" class="form-control" id="trNnyV" readonly>
|
||||
</div>
|
||||
<label for="ofcCd" class="col-sm-1 col-form-label-sm text-center">나이</label>
|
||||
<div class="col-sm-3">
|
||||
<input type="text" class="form-control" id="trAgeV" readonly>
|
||||
</div>
|
||||
<label for="ofcCd" class="col-sm-1 col-form-label-sm text-center">학력</label>
|
||||
<div class="col-sm-3">
|
||||
<input type="text" class="form-control" id="trEduV" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label for="ogCd" class="col-sm-1 col-form-label-sm text-center">자격증</label>
|
||||
<div class="col-sm-3">
|
||||
<input type="text" class="form-control" id="trCftV"readonly>
|
||||
</div>
|
||||
<label for="ofcCd" class="col-sm-1 col-form-label-sm text-center">비자</label>
|
||||
<div class="col-sm-3">
|
||||
<input type="text" class="form-control" id="trVisaV" readonly>
|
||||
</div>
|
||||
<label for="ofcCd" class="col-sm-1 col-form-label-sm text-center">위촉일</label>
|
||||
<div class="col-sm-3">
|
||||
<input type="text" class="form-control" id="aptDtV" name="aptDt">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label for="ogCd" class="col-sm-1 col-form-label-sm text-center">해촉</label>
|
||||
<div class="col-sm-3">
|
||||
<input type="text" class="form-control" id="dmlYnV" readonly>
|
||||
</div>
|
||||
<label for="tel" class="col-sm-1 col-form-label-sm text-center">비고</label>
|
||||
<div class="col-sm-7">
|
||||
<input type="text" class="form-control" id="remarkV" readonly>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label class="col-sm-1 col-form-label-sm text-center">관서</label>
|
||||
<label class="col-sm-3 col-form-label-sm text-start">
|
||||
<th:block th:each="code:${session.commonCode.get('OG')}">
|
||||
<th:block th:if="${code.itemCd eq trInfo.ogdp1}" th:text="${code.itemValue}"></th:block>
|
||||
</th:block>
|
||||
</label>
|
||||
<label class="col-sm-1 col-form-label-sm text-center">언어</label>
|
||||
<label class="col-sm-3 col-form-label-sm text-start" th:text="${trInfo.trLang}"></label>
|
||||
<label class="col-sm-1 col-form-label-sm text-center">경력</label>
|
||||
<label class="col-sm-3 col-form-label-sm text-start" th:text="${trInfo.trCareer}"></label>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label class="col-sm-1 col-form-label-sm text-center">성명</label>
|
||||
<label class="col-sm-3 col-form-label-sm text-start" th:text="${trInfo.trName}"></label>
|
||||
<label class="col-sm-1 col-form-label-sm text-center">성별</label>
|
||||
<label class="col-sm-3 col-form-label-sm text-start">
|
||||
<th:block th:each="code:${session.commonCode.get('SEX')}">
|
||||
<th:block th:if="${code.itemCd eq trInfo.trSex}" th:text="${code.itemValue}"></th:block>
|
||||
</th:block>
|
||||
</label>
|
||||
<label class="col-sm-1 col-form-label-sm text-center">연락처</label>
|
||||
<label class="col-sm-3 col-form-label-sm text-start" th:text="${trInfo.trPhone}"></label>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label class="col-sm-1 col-form-label-sm text-center">국적</label>
|
||||
<label class="col-sm-3 col-form-label-sm text-start">
|
||||
<th:block th:each="code:${session.commonCode.get('NNY')}">
|
||||
<th:block th:if="${code.itemCd eq trInfo.trNny}" th:text="${code.itemValue}"></th:block>
|
||||
</th:block>
|
||||
</label>
|
||||
<label class="col-sm-1 col-form-label-sm text-center">귀화</label>
|
||||
<label class="col-sm-3 col-form-label-sm text-start" th:text="${trInfo.naturalization}"></label>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label class="col-sm-1 col-form-label-sm text-center">나이</label>
|
||||
<label class="col-sm-3 col-form-label-sm text-start" th:text="${trInfo.trAge}"></label>
|
||||
<label class="col-sm-1 col-form-label-sm text-center">학력</label>
|
||||
<label class="col-sm-3 col-form-label-sm text-start">
|
||||
<th:block th:each="code:${session.commonCode.get('EDU')}">
|
||||
<th:block th:if="${code.itemCd eq trInfo.trEdu}" th:text="${code.itemValue}"></th:block>
|
||||
</th:block>
|
||||
</label>
|
||||
<label class="col-sm-1 col-form-label-sm text-center">자격증</label>
|
||||
<label class="col-sm-3 col-form-label-sm text-start" th:text="${trInfo.trCft}"></label>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label class="col-sm-1 col-form-label-sm text-center">비자</label>
|
||||
<label class="col-sm-3 col-form-label-sm text-start">
|
||||
<th:block th:each="code:${session.commonCode.get('VISA')}">
|
||||
<th:block th:if="${code.itemCd eq trInfo.trVisa}" th:text="${code.itemValue}"></th:block>
|
||||
</th:block>
|
||||
</label>
|
||||
<label class="col-sm-1 col-form-label-sm text-center">위촉일</label>
|
||||
<label class="col-sm-3 col-form-label-sm text-start" th:text="${trInfo.aptDt}"></label>
|
||||
<label class="col-sm-1 col-form-label-sm text-center">해촉</label>
|
||||
<label class="col-sm-3 col-form-label-sm text-start" th:text="${trInfo.dmlYn}"></label>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label class="col-sm-1 col-form-label-sm text-center">비고</label>
|
||||
<label class="col-sm-11 col-form-label-sm text-start" th:text="${trInfo.remark}"></label>
|
||||
</div>
|
||||
</html>
|
||||
Loading…
Reference in New Issue