민간통역인 요청사항 반영

외사분실 요청사항 반영
master
강석 최 2023-02-21 11:59:08 +09:00
parent 128d29e32b
commit f97cdf7574
10 changed files with 570 additions and 526 deletions

View File

@ -75,38 +75,40 @@ public class Translator extends BaseModel implements Serializable{
private String wrtNm;
@Column(name = "wrt_dt")
private LocalDateTime wrtDt;
@Column(name = "naturalization")
private String naturalization;
@Transient
private String excel;
@Embeddable
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class TranslatorId implements Serializable {
private Integer translatorKey;
@Embeddable
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class TranslatorId implements Serializable {
private Integer translatorKey;
private Integer versionNo;
}
private Integer versionNo;
}
public Date getInt(String string) {
return null;
}
public Date getInt(String string) {
return null;
}
public Date getString(String string) {
return null;
}
public Date getString(String string) {
return null;
}
@Override
public String toString() {
return "Translator [translatorKey=" + translatorKey + ", versionNo=" + versionNo + ", ogdp1=" + ogdp1 + ", trLang="
+ trLang + ", trCareer=" + trCareer + ", trName=" + trName + ", trSex=" + trSex + ", trPhone=" + trPhone
+ ", trNny=" + trNny + ", trAge=" + trAge + ", trEdu=" + trEdu + ", trCft=" + trCft + ", trVisa=" + trVisa
+ ", aptDt=" + aptDt + ", dmlYn=" + dmlYn + ", remark=" + remark + ", wrtNm=" + wrtNm + ", wrtDt=" + wrtDt
+ ", wrtOrgan=" + wrtOrgan + ", excel=" + excel + "]";
}
@Override
public String toString() {
return "Translator [translatorKey=" + translatorKey + ", versionNo=" + versionNo + ", ogdp1=" + ogdp1 + ", trLang="
+ trLang + ", trCareer=" + trCareer + ", trName=" + trName + ", trSex=" + trSex + ", trPhone=" + trPhone
+ ", trNny=" + trNny + ", trAge=" + trAge + ", trEdu=" + trEdu + ", trCft=" + trCft + ", trVisa=" + trVisa
+ ", aptDt=" + aptDt + ", dmlYn=" + dmlYn + ", remark=" + remark + ", wrtNm=" + wrtNm + ", wrtDt=" + wrtDt
+ ", wrtOrgan=" + wrtOrgan + ", excel=" + excel + "]";
}

View File

@ -28,6 +28,26 @@ $(document).on('change', '#rentType', function (){
}
});
$(document).on('change', '#plWorkType', function (){
const plPeopleCnt = $("#plPeopleCnt");
if(this.value === 'PIS001'){
plPeopleCnt.removeAttr("disabled");
}else{
plPeopleCnt.val('');
plPeopleCnt.attr("disabled", "disabled");
}
});
$(document).on('change', '#mpWorkType', function (){
const mpPeopleCnt = $("#mpPeopleCnt");
if(this.value === 'PIS001'){
mpPeopleCnt.removeAttr("disabled");
}else{
mpPeopleCnt.val('');
mpPeopleCnt.attr("disabled", "disabled");
}
});
$(document).on('change', '#utilityType', function (){
const utilityPrice = $("#utilityPrice");
if(this.value === 'Y'){
@ -116,15 +136,15 @@ $(document).on('click', '#savePartInfo', function (){
$('#terminalNm').focus();
return false;
}
if($('#mpWorkType').val() != ''){
if($('#mpPeopleCnt').val() == ''){
if($('#mpWorkType').val() === 'PIS001'){
if($('#mpPeopleCnt').val() === ''){
alert('해경 인원수를 입력해주세요');
$('#mpPeopleCnt').focus();
return false;
}
}
if($('#plWorkType').val() != ''){
if($('#plPeopleCnt').val() == ''){
if($('#plWorkType').val() === 'PIS001'){
if($('#plPeopleCnt').val() === ''){
alert('육경 인원수를 입력해주세요');
$('#plPeopleCnt').focus();
return false;

View File

@ -226,7 +226,7 @@ $(document).on('click', '#fileDownBtn', function (){
})
$(document).on('click', '#printBtn', function (){
window.open("http://localhost:8080/affair/print?affairKey="+$(this).attr("data-affairkey"));
window.open(location.origin+"/affair/print?affairKey="+$(this).attr("data-affairkey"));
})
function getAffairViewModal(affairKey){

View File

@ -2,17 +2,17 @@ let eduList=[];
let selectedIdx=0;
$(document).on('click', '.policeTr', function (event){
const target = event.target;
if(!(target.className === "checkBoxTd" ||$(target).parents("td").length>0)){
const userSeq = (Number($(this).find(".userSeq").val()));
showModal(userSeq);
}
const target = event.target;
if(!(target.className === "checkBoxTd" ||$(target).parents("td").length>0)){
const userSeq = (Number($(this).find(".userSeq").val()));
showModal(userSeq);
}
});
function showModal(userSeq){
$.ajax({
$.ajax({
url: '/police/eduEditModal',
data: {userSeq: userSeq},
data: {userSeq: userSeq},
type: 'GET',
dataType:"html",
success: function(html){
@ -31,47 +31,47 @@ function showModal(userSeq){
}
$(document).on('click', '#previousTab', function (){
const userStatus = $(this).data('userstatus');
location.href = "/police/educationMgt?userStatus="+userStatus;
const userStatus = $(this).data('userstatus');
location.href = "/police/educationMgt?userStatus="+userStatus;
})
$(document).on('click', '#presentTab', function (){
const userStatus = $(this).data('userstatus');
location.href = "/police/educationMgt?userStatus="+userStatus;
const userStatus = $(this).data('userstatus');
location.href = "/police/educationMgt?userStatus="+userStatus;
})
$(document).on('click', '#notPoliceTab', function (){
const userStatus = $(this).data('userstatus');
location.href = "/police/educationMgt?userStatus="+userStatus;
const userStatus = $(this).data('userstatus');
location.href = "/police/educationMgt?userStatus="+userStatus;
})
$(document).on('click', '#eduAddBtn', function (){
const userSeq = (Number($(this).data('userseq')));
const userSeq = (Number($(this).data('userseq')));
$('#insertEdu').append(
'<div id="eduDiv" class="mb-2">'+
'<div class="row mb-1">'+
'<label for="ogCd" class="col-sm-1 col-form-label col-form-label-sm text-center ps-0 pe-0">교육명</label>'+
'<div class="col-sm-2">'+
'<input type="text" class="form-control form-control-sm tcDt eduInput" name="eduName">'+
'</div>'+
'<label for="ofcCd" class="col-sm-1 col-form-label col-form-label-sm text-center ps-0 pe-0">교육시작</label>'+
'<div class="col-sm-2">'+
'<input type="text" class="form-control form-control-sm eduSdate eduInput" name="eduSdate" readonly>'+
'</div>'+
'<label for="ofcCd" class="col-sm-1 col-form-label col-form-label-sm text-center ps-0 pe-0">교육종료</label>'+
'<div class="col-sm-2">'+
'<input type="text" class="form-control form-control-sm eduEdate eduInput" name="eduEdate" readonly>'+
'</div>'+
'<label for="ofcCd" class="col-sm-1 col-form-label col-form-label-sm text-center ps-0 pe-0">담당기관</label>'+
'<div class="col-sm-2">'+
'<input type="text" class="form-control form-control-sm eduInput" name="eduRa">'+
'</div>'+
'</div>'+
'<div class="row justify-content-center">'+
'<div class="col-sm-1">'+
'<button type="button" class="btn btn-sm btn-outline-danger rowDeleteBtn"><i class="bi bi-x"></i></button>'+
'</div>'+
'</div>'+
'</div>'
'<div id="eduDiv" class="mb-2">'+
'<div class="row mb-1">'+
'<label for="ogCd" class="col-sm-1 col-form-label col-form-label-sm text-center ps-0 pe-0">교육명</label>'+
'<div class="col-sm-2">'+
'<input type="text" class="form-control form-control-sm tcDt eduInput" name="eduName">'+
'</div>'+
'<label for="ofcCd" class="col-sm-1 col-form-label col-form-label-sm text-center ps-0 pe-0">교육시작</label>'+
'<div class="col-sm-2">'+
'<input type="text" class="form-control form-control-sm eduSdate eduInput" name="eduSdate" readonly>'+
'</div>'+
'<label for="ofcCd" class="col-sm-1 col-form-label col-form-label-sm text-center ps-0 pe-0">교육종료</label>'+
'<div class="col-sm-2">'+
'<input type="text" class="form-control form-control-sm eduEdate eduInput" name="eduEdate" readonly>'+
'</div>'+
'<label for="ofcCd" class="col-sm-1 col-form-label col-form-label-sm text-center ps-0 pe-0">담당기관</label>'+
'<div class="col-sm-2">'+
'<input type="text" class="form-control form-control-sm eduInput" name="eduRa">'+
'</div>'+
'</div>'+
'<div class="row justify-content-center">'+
'<div class="col-sm-1">'+
'<button type="button" class="btn btn-sm btn-outline-danger rowDeleteBtn"><i class="bi bi-x"></i></button>'+
'</div>'+
'</div>'+
'</div>'
)
$(".eduSdate").datepicker({
format: "yyyy-mm-dd",
@ -87,9 +87,9 @@ $(document).on('click', '#eduAddBtn', function (){
})
$(document).on('click', '.rowDeleteBtn', function (){
selectedIdx = $(this).parents("#eduDiv").index()-1;
eduList.splice(selectedIdx,1);
$(this).parents('#eduDiv').remove();
selectedIdx = $(this).parents("#eduDiv").index()-1;
eduList.splice(selectedIdx,1);
$(this).parents('#eduDiv').remove();
})
$(document).on('change', '.eduInput', function (){
@ -112,56 +112,56 @@ $(document).on('change', '.eduInput', function (){
})
$(document).on('click', '#saveBtn', function (){
if(eduList.length < 1){
alert("새로 입력된 교육정보가 없습니다.");
return false;
}
if(confirm("저장하시겠습니까?")){
contentFade("in");
$.ajax({
type : 'POST',
data : JSON.stringify(eduList),
url : "/police/saveEdu",
contentType: 'application/json',
beforeSend: function (xhr){
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
},
success : function(data) {
contentFade("out");
alert("교육등록이 완료되었습니다.");
showModal(data);
eduList.length = 0;
},
error : function(xhr, status) {
contentFade("out");
alert("교육등록을 실패하였습니다");
}
})
}
if(eduList.length < 1){
alert("새로 입력된 교육정보가 없습니다.");
return false;
}
if(confirm("저장하시겠습니까?")){
contentFade("in");
$.ajax({
type : 'POST',
data : JSON.stringify(eduList),
url : "/police/saveEdu",
contentType: 'application/json',
beforeSend: function (xhr){
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
},
success : function(data) {
contentFade("out");
alert("교육등록이 완료되었습니다.");
showModal(data);
eduList.length = 0;
},
error : function(xhr, status) {
contentFade("out");
alert("교육등록을 실패하였습니다");
}
})
}
})
$(document).on('click', '#deleteBtn', function (){
const eduSeq = (Number($(this).data('eduseq')));
const userSeq = (Number($(this).data('userseq')));
if(confirm("삭제하시겠습니까?")){
$.ajax({
type : 'POST',
url : "/police/deleteEdu",
data : JSON.stringify({eduSeq:eduSeq,
userSeq:userSeq}),
contentType: 'application/json',
beforeSend: function (xhr){
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
},
success : function(data) {
alert("삭제 처리되었습니다.");
showModal(data);
},
error : function(xhr, status) {
alert("삭제 처리에 실패하였습니다");
}
})
}
const eduSeq = (Number($(this).data('eduseq')));
const userSeq = (Number($(this).data('userseq')));
if(confirm("삭제하시겠습니까?")){
$.ajax({
type : 'POST',
url : "/police/deleteEdu",
data : JSON.stringify({eduSeq:eduSeq,
userSeq:userSeq}),
contentType: 'application/json',
beforeSend: function (xhr){
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
},
success : function(data) {
alert("삭제 처리되었습니다.");
showModal(data);
},
error : function(xhr, status) {
alert("삭제 처리에 실패하였습니다");
}
})
}
})

View File

@ -8,162 +8,162 @@ $(function(){
});
})
$(document).on('click', '.userInfoTr', function (event){
$("#selectedKey").val($(this).find(".trKey").val())
$("#selectedVerNo").val($(this).find(".verNo").val())
const x = event.clientX;
const y = event.clientY;
const dropdown = $(".dropdown-menu.show")
if(dropdown.length>0){
dropdown[0].style.inset = "0px auto auto "+(x-event.currentTarget.getBoundingClientRect().x)+"px";
}
$("#selectedKey").val($(this).find(".trKey").val())
$("#selectedVerNo").val($(this).find(".verNo").val())
const x = event.clientX;
const y = event.clientY;
const dropdown = $(".dropdown-menu.show")
if(dropdown.length>0){
dropdown[0].style.inset = "0px auto auto "+(x-event.currentTarget.getBoundingClientRect().x)+"px";
}
})
$(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.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.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($('#eOgdp1').val() == ''){
alert("관서를 선택해주세요.");
$('#eOgdp1').focus();
return false;
}
if($('#eTrLang').val() == ''){
alert("언어를 선택해주세요.");
$('#eTrLang').focus();
return false;
}
if($('#eTrLang').val() == ''){
alert("언어를 선택해주세요.");
$('#eTrLang').focus();
return false;
}
if($('#eTrEname').val() == ''){
alert("성명을 입력해주세요.");
$('#eTrEname').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");
}
})
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($('#ogdp1').val() == ''){
alert("관서를 선택해주세요.");
$('#ogdp1').focus();
return false;
}
if($('#lang').val() == ''){
alert("언어를 선택해주세요.");
$('#lang').focus();
return false;
}
if($('#lang').val() == ''){
alert("언어를 선택해주세요.");
$('#lang').focus();
return false;
}
if($('#trName').val() == ''){
alert("성명을 입력해주세요.");
$('#trName').focus();
return false;
}
if($('#trName').val() == ''){
alert("성명을 입력해주세요.");
$('#trName').focus();
return false;
}
if($('#dmlYn').val() == ''){
alert("해촉여부를 선택해주세요.");
$('#dmlYn').focus();
return false;
}
if($('#dmlYn').val() == ''){
alert("해촉여부를 선택해주세요.");
$('#dmlYn').focus();
return false;
}
if(confirm("저장하시겠습니까?")){
document.getElementById("ogdp1").disabled = false;
contentFade("in");
const formData = new FormData($("#translatorInsert")[0]);
$.ajax({
type : 'POST',
data : formData,
url : "/translator/insertTranslatorInfo",
processData: false,
contentType: false,
success : function(result) {
alert("저장되었습니다.")
contentFade("out");
location.reload();
},
error : function(xhr, status) {
alert("저장에 실패하였습니다.")
contentFade("out");
}
})
}
if(confirm("저장하시겠습니까?")){
document.getElementById("ogdp1").disabled = false;
contentFade("in");
const formData = new FormData($("#translatorInsert")[0]);
$.ajax({
type : 'POST',
data : formData,
url : "/translator/insertTranslatorInfo",
processData: false,
contentType: false,
success : function(result) {
alert("저장되었습니다.")
contentFade("out");
location.reload();
},
error : function(xhr, status) {
alert("저장에 실패하였습니다.")
contentFade("out");
}
})
}
})
$(document).on('click', '.historyInfoTr', function (){
$(this).find('.hisChk').prop('checked',true)
if($(this).find('.hisChk').prop('checked')){
$('.hisChk').prop('checked',false);
$(this).find('.hisChk').prop('checked',true)
}
$(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: {
translatorKey: Number($(this).find(".trKey").val()),
versionNo : Number($(this).find(".verNo").val())
},
translatorKey: Number($(this).find(".trKey").val()),
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);
$("#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);
},
error:function(e){
ajaxErrorAction(e);
@ -184,30 +184,30 @@ $(document).ready( function() {
});
$(document).on('click', '#approvalTab', function (){
const trKey = (Number($('.tapTrKey').val()));
const verNo = (Number($('.tapVerNo').val()));
const url = '/translator/revisionHistory';
revisionHistory(trKey,verNo,url);
document.getElementById('accessTab').classList.remove('active');
document.getElementById('approvalTab').classList.add('active');
const trKey = (Number($('.tapTrKey').val()));
const verNo = (Number($('.tapVerNo').val()));
const url = '/translator/revisionHistory';
revisionHistory(trKey,verNo,url);
document.getElementById('accessTab').classList.remove('active');
document.getElementById('approvalTab').classList.add('active');
})
$(document).on('click', '#accessTab', function (){
const trKey = (Number($('.tapTrKey').val()));
const verNo = (Number($('.tapVerNo').val()));
const url = '/translator/translatorEditModal';
revisionHistory(trKey,verNo,url);
document.getElementById('approvalTab').classList.remove('active');
document.getElementById('accessTab').classList.add('active');
const trKey = (Number($('.tapTrKey').val()));
const verNo = (Number($('.tapVerNo').val()));
const url = '/translator/translatorEditModal';
revisionHistory(trKey,verNo,url);
document.getElementById('approvalTab').classList.remove('active');
document.getElementById('accessTab').classList.add('active');
})
function revisionHistory(trKey,verNo,url){
$.ajax({
$.ajax({
url: url,
data: {
translatorKey: trKey,
versionNo : verNo
},
translatorKey: trKey,
versionNo : verNo
},
type: 'GET',
dataType:"html",
success: function(html){
@ -226,45 +226,47 @@ function revisionHistory(trKey,verNo,url){
}
$(document).on('change', '#trNny', function (){
if($(this).val() == "NNY001"){
$("#trVisa").attr("disabled",true);
}else{
$("#trVisa").removeAttr("disabled");
}
if($(this).val() === "NNY001"){
$("#trVisa").attr("disabled", "disabled");
$("#naturalization").removeAttr("disabled");
}else{
$("#trVisa").removeAttr("disabled");
$("#naturalization").attr("disabled", "disabled");
}
});
$(document).on('click', '#crrAddBtn', function (){
const trKey = (Number($('#tcInsertKey').val()));
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>'
'<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({
format: "yyyy-mm-dd",
@ -275,9 +277,9 @@ $(document).on('click', '#crrAddBtn', function (){
})
$(document).on('click', '.rowDeleteBtn', function (){
selectedIdx = $(this).parents("#crrDiv").index()-1;
trCarrerList.splice(selectedIdx,1);
$(this).parents('#crrDiv').remove();
selectedIdx = $(this).parents("#crrDiv").index()-1;
trCarrerList.splice(selectedIdx,1);
$(this).parents('#crrDiv').remove();
})
$(document).on('change', '.crrInput', function (){
@ -300,16 +302,16 @@ $(document).on('change', '.crrInput', function (){
})
$(document).on('click', '.careerInfo', function (){
const trKey = Number($("#selectedKey").val());
showCareer(trKey);
const trKey = Number($("#selectedKey").val());
showCareer(trKey);
})
function showCareer(trKey){
$.ajax({
$.ajax({
url: '/translator/careerView',
data: {
translatorKey: trKey,
},
translatorKey: trKey,
},
type: 'GET',
dataType:"html",
success: function(html){
@ -324,12 +326,12 @@ function showCareer(trKey){
$(document).on('click', '#crrInsertBtn', function (){
const trKey = Number($("#tcmKey").val());
$.ajax({
const trKey = Number($("#tcmKey").val());
$.ajax({
url: '/translator/careerInsertPage',
data: {
translatorKey: trKey,
},
translatorKey: trKey,
},
type: 'GET',
dataType:"html",
success: function(html){
@ -343,101 +345,101 @@ $(document).on('click', '#crrInsertBtn', function (){
})
$(document).on('click', '#crrSaveBtn', function (){
if(trCarrerList.length < 1){
alert("새로 입력된 경력정보가 없습니다.");
return false;
}
if(confirm("저장하시겠습니까?")){
contentFade("in");
$.ajax({
type : 'POST',
data : JSON.stringify(trCarrerList),
url : "/translator/insertTranslatorCareer",
contentType: 'application/json',
beforeSend: function (xhr){
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
},
success : function(data) {
contentFade("out");
alert("이력등록이 완료되었습니다.");
showCareer(data);
trCarrerList.length = 0;
},
error : function(xhr, status) {
contentFade("out");
alert("이력등록을 실패하였습니다");
}
})
}
if(trCarrerList.length < 1){
alert("새로 입력된 경력정보가 없습니다.");
return false;
}
if(confirm("저장하시겠습니까?")){
contentFade("in");
$.ajax({
type : 'POST',
data : JSON.stringify(trCarrerList),
url : "/translator/insertTranslatorCareer",
contentType: 'application/json',
beforeSend: function (xhr){
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
},
success : function(data) {
contentFade("out");
alert("이력등록이 완료되었습니다.");
showCareer(data);
trCarrerList.length = 0;
},
error : function(xhr, status) {
contentFade("out");
alert("이력등록을 실패하였습니다");
}
})
}
})
function deleteCareerBtn(crrSeq,trKey){
if(confirm("삭제하시겠습니까?")){
$.ajax({
type : 'POST',
url : "/translator/deleteCareer",
data : JSON.stringify({careerSeq:crrSeq,
translatorKey:trKey}),
contentType: 'application/json',
beforeSend: function (xhr){
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
},
success : function(data) {
alert("삭제 처리되었습니다.");
showCareer(data);
},
error : function(xhr, status) {
alert("삭제 처리에 실패하였습니다");
}
})
}
if(confirm("삭제하시겠습니까?")){
$.ajax({
type : 'POST',
url : "/translator/deleteCareer",
data : JSON.stringify({careerSeq:crrSeq,
translatorKey:trKey}),
contentType: 'application/json',
beforeSend: function (xhr){
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
},
success : function(data) {
alert("삭제 처리되었습니다.");
showCareer(data);
},
error : function(xhr, status) {
alert("삭제 처리에 실패하였습니다");
}
})
}
}
$(document).on('click', '.btn-close', function (){
location.reload();
location.reload();
})
$(document).on('click', '#trDeleteBtn', function (){
if(confirm("해임 하시겠습니까?")){
contentFade("in");
const trKey = Number($(".translatorKey").val());
$.ajax({
type : 'POST',
data : JSON.stringify(trKey),
url : "/translator/deleteTranslatorInfo",
contentType: 'application/json',
beforeSend: function (xhr){
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
},
success : function() {
alert("해임되었습니다.");
contentFade("out");
location.reload();
},
error : function(xhr, status) {
alert("해임을 실패하였습니다.");
contentFade("out");
}
})
if(confirm("해임 하시겠습니까?")){
contentFade("in");
const trKey = Number($(".translatorKey").val());
$.ajax({
type : 'POST',
data : JSON.stringify(trKey),
url : "/translator/deleteTranslatorInfo",
contentType: 'application/json',
beforeSend: function (xhr){
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
},
success : function() {
alert("해임되었습니다.");
contentFade("out");
location.reload();
},
error : function(xhr, status) {
alert("해임을 실패하였습니다.");
contentFade("out");
}
})
}
})
$(document).on('click', '#goExcel', function (){
if(confirm("엑셀로 다운로드 하시겠습니까?")){
$('input[name=excel]').val('Y');
$('#searchFm').submit();
$('input[name=excel]').val('');
}else{
false;
}
if(confirm("엑셀로 다운로드 하시겠습니까?")){
$('input[name=excel]').val('Y');
$('#searchFm').submit();
$('input[name=excel]').val('');
}else{
false;
}
})
$(document).on('click', '#excelDown', function (){
if(confirm("엑셀로 다운로드 하시겠습니까?")){
location.href='/translator/statisticsExcelDown';
}else{
false;
}
if(confirm("엑셀로 다운로드 하시겠습니까?")){
location.href='/translator/statisticsExcelDown';
}else{
false;
}
})

View File

@ -79,7 +79,7 @@
</div>
<label for="mpPeopleCnt" class="col-sm-2 col-form-label col-form-label-sm text-center">인원수</label>
<div class="col-sm-2">
<input type="number" class="form-control form-control-sm" id="mpPeopleCnt" name="mpPeopleCnt">
<input type="number" class="form-control form-control-sm" id="mpPeopleCnt" name="mpPeopleCnt" disabled>
</div>
</div>
<div class="row m-0">
@ -109,7 +109,7 @@
</div>
<label for="plPeopleCnt" class="col-sm-2 col-form-label col-form-label-sm text-center">인원수</label>
<div class="col-sm-2">
<input type="number" class="form-control form-control-sm" id="plPeopleCnt" name="plPeopleCnt">
<input type="number" class="form-control form-control-sm" id="plPeopleCnt" name="plPeopleCnt" disabled>
</div>
</div>
<div class="row m-0">

View File

@ -92,7 +92,7 @@
</div>
<label for="mpPeopleCnt" class="col-sm-2 col-form-label col-form-label-sm text-center">인원수</label>
<div class="col-sm-2">
<input type="number" class="form-control form-control-sm" id="mpPeopleCnt" name="mpPeopleCnt" th:value="${partInfo.mpPeopleCnt}">
<input type="number" class="form-control form-control-sm" id="mpPeopleCnt" name="mpPeopleCnt" th:value="${partInfo.mpPeopleCnt}" th:disabled="${partInfo.mpWorkType ne 'PIS001'}">
</div>
</div>
<div class="row m-0">
@ -122,7 +122,7 @@
</div>
<label for="plPeopleCnt" class="col-sm-2 col-form-label col-form-label-sm text-center">인원수</label>
<div class="col-sm-2">
<input type="number" class="form-control form-control-sm" id="plPeopleCnt" name="plPeopleCnt" th:value="${partInfo.plPeopleCnt}">
<input type="number" class="form-control form-control-sm" id="plPeopleCnt" name="plPeopleCnt" th:value="${partInfo.plPeopleCnt}" th:disabled="${partInfo.plWorkType ne 'PIS001'}">
</div>
</div>
<div class="row m-0">

View File

@ -283,7 +283,7 @@
</nav>
</div>
<div class="col-auto">
<input type="button" class="btn btn-success" value="제출" id="addAffairBtn" th:if="${page eq 'myReport' and accessAuth ne 'ACC001'}">
<input type="button" class="btn btn-success" value="견문작성" id="addAffairBtn" th:if="${page eq 'myReport' and accessAuth ne 'ACC001'}">
<input type="button" class="btn btn-warning" value="결재" id="tableApprvBtn" th:if="${page eq 'stayReport' and apprvAuth ne null}" th:data-apprvauth="${apprvAuth}">
</div>
</div>

View File

@ -262,6 +262,16 @@
</th:block>
</select>
</div>
<label for="naturalization" class="col-sm-1 col-form-label-sm text-center fs-13 fw-bold">귀화</label>
<div class="col-sm-3">
<select class="form-select" id="naturalization" name="naturalization" disabled>
<option value="">선택</option>
<option value="O">O</option>
<option value="X">X</option>
</select>
</div>
</div>
<div class="row mb-1">
<label for="trAge" class="col-sm-1 col-form-label-sm text-center fs-13 fw-bold">나이</label>
<div class="col-sm-3">
<input type="text" class="form-control" id="trAge" name="trAge">
@ -275,18 +285,18 @@
</th:block>
</select>
</div>
</div>
<div class="row mb-1">
<label for="trCft" class="col-sm-1 col-form-label-sm text-center fs-13 fw-bold">자격증</label>
<div class="col-sm-3">
<input type="text" class="form-control" id="trCft" name="trCft">
</div>
</div>
<div class="row mb-1">
<label for="trVisa" class="col-sm-1 col-form-label-sm text-center fs-13 fw-bold">비자</label>
<div class="col-sm-3">
<select class="form-select" id="trVisa" name="trVisa">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('VISA')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
<th:block th:each="code:${session.commonCode.get('VISA')}">
<option th:if="${code.useChk eq 'T'}" th:value="${code.itemCd}" th:text="${code.itemValue}"></option>
</th:block>
</select>
</div>
@ -294,8 +304,6 @@
<div class="col-sm-3">
<input type="text" class="form-control" id="aptDt" name="aptDt" readonly>
</div>
</div>
<div class="mb-2 row">
<label for="dmlYn" class="col-sm-1 col-form-label-sm text-center fs-13 fw-bold">해촉</label>
<div class="col-sm-3">
<select class="form-select" id="dmlYn" name="dmlYn">
@ -304,8 +312,10 @@
<option value="X">X</option>
</select>
</div>
</div>
<div class="mb-2 row">
<label for="remark" class="col-sm-1 col-form-label-sm text-center fs-13 fw-bold">비고</label>
<div class="col-sm-7">
<div class="col-sm-11">
<input type="text" class="form-control" id="remark" name="remark">
</div>
</div>

View File

@ -1,119 +1,129 @@
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<form id="trInfoUpdate" 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 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'}">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
<th:block th:if="${#lists.contains(mgtOrganList, commonCode.itemCd)}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd} == ${trInfo.ogdp1}"></option>
</th:block>
</th:block>
</select>
</div>
<label for="eTrLang" class="col-sm-1 col-form-label-sm text-center">언어</label>
<div class="col-sm-2">
<select class="form-select" id="eTrLang" name="trLang">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('LGG')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd} == ${trInfo.trLang}"></option>
</th:block>
</select>
</div>
<label for="eTrCareer" class="col-sm-1 col-form-label-sm text-center">경력</label>
<div class="col-sm-2">
<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">
<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">
<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>
</select>
</div>
<label for="eTrPhone" class="col-sm-1 col-form-label-sm text-center">연락처</label>
<div class="col-sm-2">
<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">
<select class="form-select" id="eTrNny" name="trNny">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('NNY')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd} == ${trInfo.trNny}"></option>
</th:block>
</select>
</div>
<label for="eTrAge" class="col-sm-1 col-form-label-sm text-center">나이</label>
<div class="col-sm-2">
<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">
<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>
</select>
</div>
</div>
<div class="row mb-1">
<label for="eTrCft" class="col-sm-1 col-form-label-sm text-center">자격증</label>
<div class="col-sm-2">
<input type="text" class="form-control" id="eTrCft" name="trCft" th:value="${trInfo.trCft}">
</div>
<label for="eTrVisa" class="col-sm-1 col-form-label-sm text-center">비자</label>
<div class="col-sm-2">
<select class="form-select" id="eTrVisa" name="trVisa">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('VISA')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd} == ${trInfo.trVisa}"></option>
</th:block>
</select>
</div>
<label for="viewAptDt" class="col-sm-1 col-form-label-sm text-center">위촉일</label>
<div class="col-sm-2">
<input type="text" class="form-control" id="viewAptDt" name="aptDt" th:value="${trInfo.aptDt}" readonly>
</div>
</div>
<div class="mb-2 row">
<label for="eDmlYn" class="col-sm-1 col-form-label-sm text-center">해촉</label>
<div class="col-sm-2">
<select class="form-select" id="eDmlYn" name="dmlYn">
<option value="">선택</option>
<option value="O" th:selected="'O' == ${trInfo.dmlYn}">O</option>
<option value="X" th:selected="'X' == ${trInfo.dmlYn}">X</option>
</select>
</div>
<label for="eRemark" class="col-sm-1 col-form-label-sm text-center">비고</label>
<div class="col-sm-5">
<input type="text" class="form-control" id="eRemark" name="remark" th:text="${trInfo.remark}">
</div>
</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>
</form>
<form id="trInfoUpdate" 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 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'}">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
<th:block th:if="${#lists.contains(mgtOrganList, commonCode.itemCd)}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd} == ${trInfo.ogdp1}"></option>
</th:block>
</th:block>
</select>
</div>
<label for="eTrLang" class="col-sm-1 col-form-label-sm text-center">언어</label>
<div class="col-sm-2">
<select class="form-select" id="eTrLang" name="trLang">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('LGG')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd} == ${trInfo.trLang}"></option>
</th:block>
</select>
</div>
<label for="eTrCareer" class="col-sm-1 col-form-label-sm text-center">경력</label>
<div class="col-sm-2">
<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">
<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">
<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>
</select>
</div>
<label for="eTrPhone" class="col-sm-1 col-form-label-sm text-center">연락처</label>
<div class="col-sm-2">
<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">
<select class="form-select" id="eTrNny" name="trNny">
<option value="">선택</option>
<th:block th:each="code:${session.commonCode.get('NNY')}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq trInfo.trNny}"></option>
</th:block>
</select>
</div>
<label for="naturalization" class="col-sm-1 col-form-label-sm text-center">귀화</label>
<div class="col-sm-2">
<select class="form-select" id="naturalization" name="naturalization" th:disabled="${trInfo.trNny ne 'NNY001'}">
<option value="">선택</option>
<option value="O" th:selected="${trInfo.naturalization eq 'O'}">O</option>
<option value="X" th:selected="${trInfo.naturalization eq 'X'}">X</option>
</select>
</div>
</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">
<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">
<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>
</select>
</div>
<label for="eTrCft" class="col-sm-1 col-form-label-sm text-center">자격증</label>
<div class="col-sm-2">
<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">
<select class="form-select" id="eTrVisa" name="trVisa">
<option value="">선택</option>
<th:block th:each="code:${session.commonCode.get('VISA')}">
<option th:if="${code.useChk eq 'T' or code.itemCd eq trInfo.trVisa}" th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq trInfo.trVisa}"></option>
</th:block>
</select>
</div>
<label for="viewAptDt" class="col-sm-1 col-form-label-sm text-center">위촉일</label>
<div class="col-sm-2">
<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">
<select class="form-select" id="eDmlYn" name="dmlYn">
<option value="">선택</option>
<option value="O" th:selected="'O' == ${trInfo.dmlYn}">O</option>
<option value="X" th:selected="'X' == ${trInfo.dmlYn}">X</option>
</select>
</div>
</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">
<input type="text" class="form-control" id="eRemark" name="remark" th:text="${trInfo.remark}">
</div>
</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>
</form>
</html>