통역인현황 작업중.

master
강석 최 2023-03-31 18:10:10 +09:00
parent 776212f497
commit 03dad25397
5 changed files with 238 additions and 316 deletions

View File

@ -0,0 +1,51 @@
package com.dbnt.faisp.main.translator.model;
import com.dbnt.faisp.config.FileInfo;
import lombok.*;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import javax.persistence.*;
import java.io.Serializable;
@Getter
@Setter
@Entity
@NoArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name = "translator_file")
@IdClass(TranslatorFile.TranslatorFileId.class)
public class TranslatorFile extends FileInfo {
@Id
@Column(name = "translator_key")
private Integer translatorKey;
@Id
@Column(name = "version_no")
private Integer versionNo;
@Id
@Column(name = "file_seq")
private Integer fileSeq;
@Column(name = "orig_nm")
private String origNm;
@Column(name = "conv_nm")
private String convNm;
@Column(name = "file_extn")
private String fileExtn;
@Column(name = "file_size")
private String fileSize;
@Column(name = "save_path")
private String savePath;
@Embeddable
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class TranslatorFileId implements Serializable {
private Integer translatorKey;
private Integer versionNo;
private Integer fileSeq;
}
}

View File

@ -0,0 +1,10 @@
package com.dbnt.faisp.main.translator.repository;
import com.dbnt.faisp.main.translator.model.TranslatorFile;
import org.springframework.data.jpa.repository.JpaRepository;
public interface TranslatorFileRepository extends JpaRepository<TranslatorFile, TranslatorFile.TranslatorFileId> {
}

View File

@ -1,5 +1,6 @@
let trCarrerList=[];
let selectedIdx=0;
$(function(){
$("#dateSelectorDiv").datepicker({
format: "yyyy-mm-dd",
@ -7,17 +8,33 @@ $(function(){
autoclose: true
});
})
$(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";
}
$(document).on('click', '.infoTr', function (){
getTranslatorEditModal($(this).find(".trKey").val(), $(this).find(".verNo").val());
})
function getTranslatorEditModal(translatorKey, versionNo){
$.ajax({
url: "/translator/translatorEditModal",
data: {translatorKey: translatorKey, versionNo : versionNo},
type: 'GET',
dataType:"html",
success: function(html){
$("#translatorEditModalContent").empty().append(html)
$("#translatorEditModal").modal('show');
$("#viewAptDt").datepicker({
format: "yyyy-mm-dd",
language: "ko",
autoclose: true
});
},
error:function(e){
ajaxErrorAction(e);
}
});
}
$(document).on('click', '.translatorInfo', function (){
document.getElementById('accessTab').classList.add('active');
document.getElementById('approvalTab').classList.remove('active');
@ -211,7 +228,7 @@ function revisionHistory(trKey,verNo,url){
type: 'GET',
dataType:"html",
success: function(html){
$("#configInfo").empty().append(html)
$("#translatorEditContent").empty().append(html)
$("#translatorEditModal").modal('show');
$("#viewAptDt").datepicker({
format: "yyyy-mm-dd",
@ -405,10 +422,6 @@ function deleteCareerBtn(crrSeq,trKey){
}
}
$(document).on('click', '.btn-close', function (){
location.reload();
})
$(document).on('click', '#trDeleteBtn', function (){
if(confirm("해임 하시겠습니까?")){
contentFade("in");

View File

@ -126,16 +126,10 @@
</tr>
</thead>
<tbody class="table-group-divider">
<tr class="userInfoTr" data-bs-toggle="dropdown" aria-expanded="false" th:each="trInfo:${translatorList}">
<tr class="infoTr" data-bs-toggle="dropdown" aria-expanded="false" th:each="trInfo, idx:${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.translatorKey}"></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="${idx.count+((searchParams.pageIndex-1)*searchParams.rowCnt)}"></td>
<td th:text="${trInfo.ogdp1}"></td>
<td th:text="${trInfo.trLang}"></td>
<td th:text="${trInfo.trCareer}"></td>
@ -146,8 +140,7 @@
<td th:text="${trInfo.trEdu}"></td>
<td th:text="${trInfo.trCft}"></td>
<td th:text="${trInfo.trVisa}"></td>
<td th:if="${trInfo.dmlYn == 'O'}"></td>
<td th:unless="${trInfo.dmlYn == 'O'}"></td>
<td th:text="${trInfo.dmlYn eq 'O'?'●':''}"></td>
<td th:text="${trInfo.aptDt}"></td>
<td th:text="${trInfo.trPhone}"></td>
</tr>
@ -185,7 +178,7 @@
</nav>
</div>
<div class="col-auto">
<button data-bs-toggle="modal" class="btn btn-primary" data-bs-target="#translatorInsertModal" th:unless="${accessAuth eq 'ACC001'}">등록</button>
<button class="btn btn-primary" id="addTranslatorBtn" th:unless="${accessAuth eq 'ACC001'}">등록</button>
</div>
</div>
</div>
@ -195,177 +188,13 @@
</div>
</main>
<div class="modal fade" id="translatorInsertModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="userInsertModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content ">
<div class="modal-header bg-dark">
<h5 class="modal-title text-white" id="translatorInsertModalLabel">통역인 등록</h5>
<button type="button" class="btn-close f-invert" data-bs-dismiss="modal" aria-label="Close"></button>
<div class="modal fade" id="translatorEditModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="translatorEditModalLabel" aria-hidden="true">
<div class="modal-dialog modal-xl modal-dialog-scrollable">
<div class="modal-content" id="translatorEditModalContent">
</div>
<div class="modal-body">
<form id="translatorInsert" action="#" method="post">
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
<br>
<div class="row mb-1">
<label for="ogdp1" 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="ogdp1" 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 eq userOrgan}"></option>
</th:block>
</th:block>
</select>
</div>
<label for="lang" 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="lang" name="trLang">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('LGG')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
</th:block>
</select>
</div>
<label for="trCareer" 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="trCareer" name="trCareer">
</div>
</div>
<div class="row mb-1">
<label for="trName" 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="trName" name="trName">
</div>
<label for="trSex" 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="trSex" name="trSex">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('SEX')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
</th:block>
</select>
</div>
<label for="trPhone" 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="trPhone" name="trPhone">
</div>
</div>
<div class="row mb-1">
<label for="trNny" 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="trNny" name="trNny">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('NNY')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
</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">
</div>
<label for="trEdu" 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="trEdu" name="trEdu">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('EDU')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
</th:block>
</select>
</div>
<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="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>
<label for="aptDt" 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="aptDt" name="aptDt" readonly>
</div>
<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">
<option value="">선택</option>
<option value="O">O</option>
<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-11">
<input type="text" class="form-control" id="remark" name="remark">
</div>
</div>
</form>
</div>
<div class="modal-footer bg-light">
<!-- <button type="button" class="btn btn-secondary" data-bs-dismiss="modal" id="closeModalBtn">닫기</button>-->
<button type="button" class="btn btn-primary" id="saveBtn">저장</button>
</div>
</div>
</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" id="authEditModalContent">
<div class="modal-header bg-dark">
<h5 class="modal-title text-white" id="menuEditModalLabel">통역인 정보</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" id="translatorCareerModalContent">
<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" id="careerView">
</div>
</div>
</div>
</div>
</div>
</div>
</html>

View File

@ -1,5 +1,21 @@
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<div class="modal-header bg-dark">
<h5 class="modal-title text-white" id="menuEditModalLabel">통역인 정보</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">
<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}"/>
@ -116,14 +132,17 @@
<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}">
<input type="text" class="form-control" id="eRemark" name="remark" th:value="${trInfo.remark}">
</div>
</div>
</div>
</form>
</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>