정원/현원 현황 페이지 엑셀 다운로드 추가.
외사경찰 > 경력현황 작업중.
parent
44edcd0ceb
commit
b544f6296a
|
|
@ -44,8 +44,8 @@ public class CrackdownStatusController {
|
|||
|
||||
for (CrackdownStatus cds:crackdownStatusList) {
|
||||
cds.setViolationList(violationRepository.findByFbKey(cds.getFbKey()));
|
||||
cds.setProcessResult(processResultRepository.findByCdsKey(cds.getCdsKey()).orElse(null));
|
||||
cds.setFishingBoat(fishingBoatRepository.findByCdsKey(cds.getCdsKey()).orElse(null));
|
||||
cds.setProcessResult(processResultRepository.findByCdsKey(cds.getCdsKey()).orElse(new ProcessResult()));
|
||||
cds.setFishingBoat(fishingBoatRepository.findByCdsKey(cds.getCdsKey()).orElse(new FishingBoat()));
|
||||
cds.setSailorList(sailorRepository.findByFbKey(cds.getFbKey()));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -26,9 +26,9 @@ public class FishingBoatBaseEntity extends BaseModel {
|
|||
@Column(name = "nationality")
|
||||
private String nationality;
|
||||
@Column(name = "sailor_cnt")
|
||||
private Integer sailorCnt;
|
||||
private Integer sailorCnt=0;
|
||||
@Column(name = "ton_cnt")
|
||||
private Double tonCnt;
|
||||
private Double tonCnt=0d;
|
||||
@Column(name = "fishery_type")
|
||||
private String fisheryType;
|
||||
@Column(name = "boat_material")
|
||||
|
|
@ -40,17 +40,17 @@ public class FishingBoatBaseEntity extends BaseModel {
|
|||
@Column(name = "offense_type")
|
||||
private String offenseType;
|
||||
@Column(name = "offense_weight")
|
||||
private Double offenseWeight;
|
||||
private Double offenseWeight=0d;
|
||||
@Column(name = "offense_quantity")
|
||||
private Integer offenseQuantity;
|
||||
private Integer offenseQuantity=0;
|
||||
@Column(name = "offense_amount")
|
||||
private Integer offenseAmount;
|
||||
private Integer offenseAmount=0;
|
||||
@Column(name = "offense_illegal_waste_quantity")
|
||||
private Integer offenseIllegalWasteQuantity;
|
||||
private Integer offenseIllegalWasteQuantity=0;
|
||||
@Column(name = "dambo_unpaid_amount")
|
||||
private Integer damboUnpaidAmount;
|
||||
private Integer damboUnpaidAmount=0;
|
||||
@Column(name = "dambo_payment")
|
||||
private Integer damboPayment;
|
||||
private Integer damboPayment=0;
|
||||
@Column(name = "payment_payment_dt")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
|
||||
private LocalDateTime paymentPaymentDt;
|
||||
|
|
@ -67,11 +67,11 @@ public class FishingBoatBaseEntity extends BaseModel {
|
|||
@Column(name = "catch_fish_species")
|
||||
private String catchFishSpecies;
|
||||
@Column(name = "catch_cnt")
|
||||
private Integer catchCnt;
|
||||
private Integer catchCnt=0;
|
||||
@Column(name = "offense_fish_species")
|
||||
private String offenseFishSpecies;
|
||||
@Column(name = "offense_catch_cnt")
|
||||
private Integer offenseCatchCnt;
|
||||
private Integer offenseCatchCnt=0;
|
||||
@Column(name = "save_yn")
|
||||
private String saveYn;
|
||||
@Column(name = "wrt_organ")
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ public class FaispController {
|
|||
|
||||
@GetMapping("/policeList")
|
||||
public ModelAndView policeList(@AuthenticationPrincipal UserInfo loginUser, UserInfo userInfo, HttpServletResponse response) {
|
||||
ModelAndView mav = new ModelAndView("faisp/policeList");
|
||||
ModelAndView mav = new ModelAndView("faisp/police/policeList");
|
||||
userInfo.setDownOrganCdList(loginUser.getDownOrganCdList());
|
||||
if(userInfo.getUserStatus() == null) {
|
||||
userInfo.setUserStatus("USC003");
|
||||
|
|
@ -91,7 +91,7 @@ public class FaispController {
|
|||
|
||||
@GetMapping("/policeEditModal")
|
||||
public ModelAndView policeEditModal(@AuthenticationPrincipal UserInfo loginUser,UserInfo userInfo){
|
||||
ModelAndView mav = new ModelAndView("/faisp/policeEditModal");
|
||||
ModelAndView mav = new ModelAndView("/faisp/police/policeEditModal");
|
||||
mav.addObject("ogList", codeMgtService.selectCodeMgtList("OG", ""));
|
||||
mav.addObject("ofcList", codeMgtService.selectCodeMgtList("OFC", ""));
|
||||
mav.addObject("titleList", codeMgtService.selectCodeMgtList("JT", ""));
|
||||
|
|
@ -115,7 +115,7 @@ public class FaispController {
|
|||
|
||||
@GetMapping("/policeHistory")
|
||||
public ModelAndView policeHistory(@AuthenticationPrincipal UserInfo loginUser,UserInfoHistory userInfoHistory){
|
||||
ModelAndView mav = new ModelAndView("/faisp/policeHistory");
|
||||
ModelAndView mav = new ModelAndView("/faisp/police/policeHistory");
|
||||
mav.addObject("userStatus", userInfoService.selectuserStatus(userInfoHistory));
|
||||
mav.addObject("policeList", userInfoService.selectPoliceHisList(userInfoHistory));
|
||||
|
||||
|
|
@ -201,7 +201,7 @@ public class FaispController {
|
|||
|
||||
@GetMapping("/careerMgt")
|
||||
public ModelAndView careerMgt(@AuthenticationPrincipal UserInfo loginUser, UserInfo userInfo, HttpServletResponse response){
|
||||
ModelAndView mav = new ModelAndView("faisp/careerMgt");
|
||||
ModelAndView mav = new ModelAndView("faisp/career/careerMgt");
|
||||
userInfo.setDownOrganCdList(loginUser.getDownOrganCdList());
|
||||
if(userInfo.getUserStatus() == null) {
|
||||
userInfo.setUserStatus("USC003");
|
||||
|
|
@ -222,7 +222,7 @@ public class FaispController {
|
|||
|
||||
@GetMapping("/educationMgt")
|
||||
public ModelAndView educationMgt(@AuthenticationPrincipal UserInfo loginUser, UserInfo userInfo, HttpServletResponse response){
|
||||
ModelAndView mav = new ModelAndView("faisp/educationMgt");
|
||||
ModelAndView mav = new ModelAndView("faisp/education/educationMgt");
|
||||
userInfo.setDownOrganCdList(loginUser.getDownOrganCdList());
|
||||
if(userInfo.getUserStatus() == null) {
|
||||
userInfo.setUserStatus("USC003");
|
||||
|
|
@ -243,7 +243,7 @@ public class FaispController {
|
|||
|
||||
@GetMapping("/eduEditModal")
|
||||
public ModelAndView eduEditModal(@AuthenticationPrincipal UserInfo loginUser,UserEdu userEdu){
|
||||
ModelAndView mav = new ModelAndView("/faisp/eduEditModal");
|
||||
ModelAndView mav = new ModelAndView("/faisp/education/eduEditModal");
|
||||
|
||||
//메뉴권한 확인
|
||||
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faisp/educationMgt").get(0).getAccessAuth();
|
||||
|
|
@ -257,16 +257,13 @@ public class FaispController {
|
|||
@PostMapping("/saveEdu")
|
||||
@ResponseBody
|
||||
public int saveEdu(@AuthenticationPrincipal UserInfo loginUser,@RequestBody List<UserEdu> userEdu){
|
||||
System.out.println("userEdu"+userEdu);
|
||||
int userSeq = userInfoService.saveEdu(loginUser,userEdu);
|
||||
return userSeq;
|
||||
return userInfoService.saveEdu(loginUser,userEdu);
|
||||
}
|
||||
|
||||
@PostMapping("/deleteEdu")
|
||||
@ResponseBody
|
||||
public int deleteEdu(@RequestBody UserEdu userEdu) {
|
||||
int userSeq = userInfoService.deleteEdu(userEdu);
|
||||
return userSeq;
|
||||
return userInfoService.deleteEdu(userEdu);
|
||||
}
|
||||
|
||||
private List<PersonnelStatus> calcStatusList(List<PersonnelStatus> statusList) {
|
||||
|
|
|
|||
|
|
@ -227,4 +227,51 @@ function dateTimeCalc(startDateTime, endDateTime) {
|
|||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
function exportExcel(name, tableId){
|
||||
var excelHandler = {
|
||||
getExcelFileName : function(){
|
||||
return name+'_'+getToday()+'.xlsx'; //파일명
|
||||
},
|
||||
getSheetName : function(){
|
||||
return name;
|
||||
},
|
||||
getExcelData : function(){
|
||||
return document.getElementById(tableId); //TABLE id
|
||||
},
|
||||
getWorksheet : function(){
|
||||
return XLSX.utils.table_to_sheet(this.getExcelData());
|
||||
}
|
||||
}
|
||||
// step 1. workbook 생성
|
||||
var wb = XLSX.utils.book_new();
|
||||
|
||||
// step 2. 시트 만들기
|
||||
var newWorksheet = excelHandler.getWorksheet();
|
||||
|
||||
// step 3. workbook에 새로만든 워크시트에 이름을 주고 붙인다.
|
||||
XLSX.utils.book_append_sheet(wb, newWorksheet, excelHandler.getSheetName());
|
||||
|
||||
// step 4. 엑셀 파일 만들기
|
||||
var wbout = XLSX.write(wb, {bookType:'xlsx', type: 'binary'});
|
||||
|
||||
// step 5. 엑셀 파일 내보내기
|
||||
saveAs(new Blob([s2ab(wbout)],{type:"application/octet-stream"}), excelHandler.getExcelFileName());
|
||||
}
|
||||
|
||||
function s2ab(s) {
|
||||
var buf = new ArrayBuffer(s.length); //convert s to arrayBuffer
|
||||
var view = new Uint8Array(buf); //create uint8array as viewer
|
||||
for (var i=0; i<s.length; i++) view[i] = s.charCodeAt(i) & 0xFF; //convert to octet
|
||||
return buf;
|
||||
}
|
||||
|
||||
function getToday(){
|
||||
var date = new Date();
|
||||
var year = date.getFullYear();
|
||||
var month = ("0" + (1 + date.getMonth())).slice(-2);
|
||||
var day = ("0" + date.getDate()).slice(-2);
|
||||
|
||||
return year + "-" + month + "-" + day;
|
||||
}
|
||||
|
|
@ -218,7 +218,7 @@ $(document).on('change', '#processStatus', function (){
|
|||
});
|
||||
|
||||
$(document).on('click', '#cdsDownExcel', function (){
|
||||
exportExcel('불법조업 불법어선 단속현황');
|
||||
exportExcel('불법조업 불법어선 단속현황', 'cdsTable');
|
||||
});
|
||||
|
||||
function getCrackdownStatusHistoryDetail(versionNo, cdsKey){
|
||||
|
|
@ -469,50 +469,3 @@ function contentCheck(){
|
|||
|
||||
return flag;
|
||||
}
|
||||
|
||||
function exportExcel(name){
|
||||
var excelHandler = {
|
||||
getExcelFileName : function(){
|
||||
return name+getToday()+'.xlsx'; //파일명
|
||||
},
|
||||
getSheetName : function(){
|
||||
return name;
|
||||
},
|
||||
getExcelData : function(){
|
||||
return document.getElementById('cdsTable'); //TABLE id
|
||||
},
|
||||
getWorksheet : function(){
|
||||
return XLSX.utils.table_to_sheet(this.getExcelData());
|
||||
}
|
||||
}
|
||||
// step 1. workbook 생성
|
||||
var wb = XLSX.utils.book_new();
|
||||
|
||||
// step 2. 시트 만들기
|
||||
var newWorksheet = excelHandler.getWorksheet();
|
||||
|
||||
// step 3. workbook에 새로만든 워크시트에 이름을 주고 붙인다.
|
||||
XLSX.utils.book_append_sheet(wb, newWorksheet, excelHandler.getSheetName());
|
||||
|
||||
// step 4. 엑셀 파일 만들기
|
||||
var wbout = XLSX.write(wb, {bookType:'xlsx', type: 'binary'});
|
||||
|
||||
// step 5. 엑셀 파일 내보내기
|
||||
saveAs(new Blob([s2ab(wbout)],{type:"application/octet-stream"}), excelHandler.getExcelFileName());
|
||||
}
|
||||
|
||||
function s2ab(s) {
|
||||
var buf = new ArrayBuffer(s.length); //convert s to arrayBuffer
|
||||
var view = new Uint8Array(buf); //create uint8array as viewer
|
||||
for (var i=0; i<s.length; i++) view[i] = s.charCodeAt(i) & 0xFF; //convert to octet
|
||||
return buf;
|
||||
}
|
||||
|
||||
function getToday(){
|
||||
var date = new Date();
|
||||
var year = date.getFullYear();
|
||||
var month = ("0" + (1 + date.getMonth())).slice(-2);
|
||||
var day = ("0" + date.getDate()).slice(-2);
|
||||
|
||||
return year + "-" + month + "-" + day;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -130,7 +130,7 @@ $(document).on('change', '#executionDetail', function (){
|
|||
});
|
||||
|
||||
$(document).on('click', '#processResultDownExcel', function (){
|
||||
exportExcel('불법조업 불법어선 처리현황');
|
||||
exportExcel('불법조업 불법어선 처리현황', 'prTable');
|
||||
});
|
||||
|
||||
function getProcessResultHistoryDetail(versionNo, prKey, cdsKey, fbKey){
|
||||
|
|
@ -326,68 +326,4 @@ function saveProcessResult(saveYn){
|
|||
function contentCheck(){
|
||||
let flag = true;
|
||||
return flag;
|
||||
}
|
||||
|
||||
function exportExcel(name){
|
||||
var excelHandler = {
|
||||
getExcelFileName : function(){
|
||||
return name+getToday()+'.xlsx'; //파일명
|
||||
},
|
||||
getSheetName : function(){
|
||||
return name;
|
||||
},
|
||||
getExcelData : function(){
|
||||
return document.getElementById('prTable'); //TABLE id
|
||||
},
|
||||
getWorksheet : function(){
|
||||
return XLSX.utils.table_to_sheet(this.getExcelData());
|
||||
}
|
||||
}
|
||||
// step 1. workbook 생성
|
||||
var wb = XLSX.utils.book_new();
|
||||
|
||||
// step 2. 시트 만들기
|
||||
var newWorksheet = excelHandler.getWorksheet();
|
||||
|
||||
// step 3. workbook에 새로만든 워크시트에 이름을 주고 붙인다.
|
||||
XLSX.utils.book_append_sheet(wb, newWorksheet, excelHandler.getSheetName());
|
||||
|
||||
// step 4. 엑셀 파일 만들기
|
||||
var wbout = XLSX.write(wb, {bookType:'xlsx', type: 'binary'});
|
||||
|
||||
// step 5. 엑셀 파일 내보내기
|
||||
saveAs(new Blob([s2ab(wbout)],{type:"application/octet-stream"}), excelHandler.getExcelFileName());
|
||||
}
|
||||
|
||||
function s2ab(s) {
|
||||
var buf = new ArrayBuffer(s.length); //convert s to arrayBuffer
|
||||
var view = new Uint8Array(buf); //create uint8array as viewer
|
||||
for (var i=0; i<s.length; i++) view[i] = s.charCodeAt(i) & 0xFF; //convert to octet
|
||||
return buf;
|
||||
}
|
||||
|
||||
function getToday(){
|
||||
var date = new Date();
|
||||
var year = date.getFullYear();
|
||||
var month = ("0" + (1 + date.getMonth())).slice(-2);
|
||||
var day = ("0" + date.getDate()).slice(-2);
|
||||
|
||||
return year + "-" + month + "-" + day;
|
||||
}
|
||||
|
||||
function dateTimeCalc(startDateTime, endDateTime) {
|
||||
if (startDateTime != '' &&endDateTime != '' && startDateTime != undefined && endDateTime != undefined) {
|
||||
const startDate = new Date(startDateTime);
|
||||
const endDate = new Date(endDateTime);
|
||||
|
||||
let diffTime = endDate.getTime() - startDate.getTime();
|
||||
|
||||
const day = Math.floor(diffTime / (1000* 60 * 60 * 24));
|
||||
const hour = Math.floor((diffTime % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
|
||||
const minute = Math.floor((diffTime % (1000 * 60 * 60)) / (1000 * 60));
|
||||
|
||||
return day + '일' + hour + '시간' + minute + '분';
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
@ -86,7 +86,7 @@ $(document).on('change', 'select[name="boatNameKr"]', function (){
|
|||
|
||||
|
||||
$(document).on('click', '#sailorDownExcel', function (){
|
||||
exportExcel('불법조업 불법어선 선원세부현황');
|
||||
exportExcel('불법조업 불법어선 선원세부현황', 'sailorTable');
|
||||
});
|
||||
|
||||
function getSailorHistoryDetail(versionNo, sailorKey, cdsKey, fbKey){
|
||||
|
|
@ -253,66 +253,3 @@ function contentCheck(){
|
|||
return flag;
|
||||
}
|
||||
|
||||
function exportExcel(name){
|
||||
var excelHandler = {
|
||||
getExcelFileName : function(){
|
||||
return name+getToday()+'.xlsx'; //파일명
|
||||
},
|
||||
getSheetName : function(){
|
||||
return name;
|
||||
},
|
||||
getExcelData : function(){
|
||||
return document.getElementById('sailorTable'); //TABLE id
|
||||
},
|
||||
getWorksheet : function(){
|
||||
return XLSX.utils.table_to_sheet(this.getExcelData());
|
||||
}
|
||||
}
|
||||
// step 1. workbook 생성
|
||||
var wb = XLSX.utils.book_new();
|
||||
|
||||
// step 2. 시트 만들기
|
||||
var newWorksheet = excelHandler.getWorksheet();
|
||||
|
||||
// step 3. workbook에 새로만든 워크시트에 이름을 주고 붙인다.
|
||||
XLSX.utils.book_append_sheet(wb, newWorksheet, excelHandler.getSheetName());
|
||||
|
||||
// step 4. 엑셀 파일 만들기
|
||||
var wbout = XLSX.write(wb, {bookType:'xlsx', type: 'binary'});
|
||||
|
||||
// step 5. 엑셀 파일 내보내기
|
||||
saveAs(new Blob([s2ab(wbout)],{type:"application/octet-stream"}), excelHandler.getExcelFileName());
|
||||
}
|
||||
|
||||
function s2ab(s) {
|
||||
var buf = new ArrayBuffer(s.length); //convert s to arrayBuffer
|
||||
var view = new Uint8Array(buf); //create uint8array as viewer
|
||||
for (var i=0; i<s.length; i++) view[i] = s.charCodeAt(i) & 0xFF; //convert to octet
|
||||
return buf;
|
||||
}
|
||||
|
||||
function getToday(){
|
||||
var date = new Date();
|
||||
var year = date.getFullYear();
|
||||
var month = ("0" + (1 + date.getMonth())).slice(-2);
|
||||
var day = ("0" + date.getDate()).slice(-2);
|
||||
|
||||
return year + "-" + month + "-" + day;
|
||||
}
|
||||
|
||||
function dateTimeCalc(startDateTime, endDateTime) {
|
||||
if (startDateTime != '' &&endDateTime != '' && startDateTime != undefined && endDateTime != undefined) {
|
||||
const startDate = new Date(startDateTime);
|
||||
const endDate = new Date(endDateTime);
|
||||
|
||||
let diffTime = endDate.getTime() - startDate.getTime();
|
||||
|
||||
const day = Math.floor(diffTime / (1000* 60 * 60 * 24));
|
||||
const hour = Math.floor((diffTime % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
|
||||
const minute = Math.floor((diffTime % (1000 * 60 * 60)) / (1000 * 60));
|
||||
|
||||
return day + '일' + hour + '시간' + minute + '분';
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,169 @@
|
|||
$(document).on('change', '#year', function (){
|
||||
$("#searchFm").submit();
|
||||
})
|
||||
|
||||
$(document).on('click', '#personnelStatusEditModalBtn', function (){
|
||||
$("#personnelStatusEditDiv").empty();
|
||||
$("#personnelStatusEditModal").modal('show');
|
||||
})
|
||||
|
||||
$(document).on('click', '#personnelStatusAddBtn', function (){
|
||||
$.ajax({
|
||||
url: '/faisp/personnelStatusRow',
|
||||
type: 'GET',
|
||||
dataType:"html",
|
||||
success: function(html){
|
||||
$("#personnelStatusEditDiv").append(html)
|
||||
},
|
||||
error:function(){
|
||||
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
$(document).on('click', '.personnelStatusRemoveBtn', function (){
|
||||
$(this).parents(".personnelStatusRow").remove();
|
||||
})
|
||||
|
||||
$(document).on('change', '.ogCd', function (){
|
||||
const personnelStatusRow = $(this).parents(".personnelStatusRow");
|
||||
if(this.value !== ''){
|
||||
personnelStatusRow.find(".nowPersonnelStatusBtn")[0].className = "btn btn-sm btn-success nowPersonnelStatusBtn";
|
||||
$.ajax({
|
||||
url: '/faisp/selectPersonnelStatus',
|
||||
type: 'GET',
|
||||
data: {year: new Date().getFullYear(), ogCd: this.value},
|
||||
dataType:"json",
|
||||
success: function(data){
|
||||
personnelStatusRow.find(".jt007Max").val(data.jt007Max);
|
||||
personnelStatusRow.find(".jt007Now").val(data.jt007Now);
|
||||
personnelStatusRow.find(".jt006Max").val(data.jt006Max);
|
||||
personnelStatusRow.find(".jt006Now").val(data.jt006Now);
|
||||
personnelStatusRow.find(".jt005Max").val(data.jt005Max);
|
||||
personnelStatusRow.find(".jt005Now").val(data.jt005Now);
|
||||
personnelStatusRow.find(".jt004Max").val(data.jt004Max);
|
||||
personnelStatusRow.find(".jt004Now").val(data.jt004Now);
|
||||
personnelStatusRow.find(".jt003Max").val(data.jt003Max);
|
||||
personnelStatusRow.find(".jt003Now").val(data.jt003Now);
|
||||
personnelStatusRow.find(".jt002Max").val(data.jt002Max);
|
||||
personnelStatusRow.find(".jt002Now").val(data.jt002Now);
|
||||
personnelStatusRow.find(".jt001Max").val(data.jt001Max);
|
||||
personnelStatusRow.find(".jt001Now").val(data.jt001Now);
|
||||
},
|
||||
error:function(){
|
||||
|
||||
}
|
||||
});
|
||||
}else{
|
||||
personnelStatusRow.find(".nowPersonnelStatusBtn")[0].className = "btn btn-sm btn-success nowPersonnelStatusBtn disabled";
|
||||
}
|
||||
})
|
||||
|
||||
$(document).on('click', '.nowPersonnelStatusBtn', function (){
|
||||
const personnelStatusRow = $(this).parents(".personnelStatusRow");
|
||||
$.ajax({
|
||||
url: '/faisp/nowPersonnelStatus',
|
||||
type: 'GET',
|
||||
data: {ogCd: personnelStatusRow.find(".ogCd").val()},
|
||||
dataType:"json",
|
||||
success: function(data){
|
||||
if(data === null){
|
||||
alert("결과가 없습니다.")
|
||||
}else{
|
||||
personnelStatusRow.find(".jt007Now").val(data.jt007Now);
|
||||
personnelStatusRow.find(".jt006Now").val(data.jt006Now);
|
||||
personnelStatusRow.find(".jt005Now").val(data.jt005Now);
|
||||
personnelStatusRow.find(".jt004Now").val(data.jt004Now);
|
||||
personnelStatusRow.find(".jt003Now").val(data.jt003Now);
|
||||
personnelStatusRow.find(".jt002Now").val(data.jt002Now);
|
||||
personnelStatusRow.find(".jt001Now").val(data.jt001Now);
|
||||
}
|
||||
},
|
||||
error:function(){
|
||||
alert("조회에 실패하였습니다.")
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
$(document).on('click', '#saveBtn', function (){
|
||||
if($(".ogCd").length===0){
|
||||
alert("저장할 항목이 없습니다.")
|
||||
}else{
|
||||
if(personnelStatusOgCdCheck()){
|
||||
if(confirm("저장하시겠습니까?")){
|
||||
contentFade("in");
|
||||
const personnelStatusList = [];
|
||||
const year = new Date().getFullYear();
|
||||
$.each($(".personnelStatusRow"), function(idx, personnelStatus){
|
||||
const row = $(personnelStatus);
|
||||
personnelStatusList.push({});
|
||||
personnelStatusList[idx].year = year;
|
||||
personnelStatusList[idx].ogCd = row.find(".ogCd").val()
|
||||
personnelStatusList[idx].jt007Max = row.find(".jt007Max").val()
|
||||
personnelStatusList[idx].jt007Now = row.find(".jt007Now").val()
|
||||
personnelStatusList[idx].jt006Max = row.find(".jt006Max").val()
|
||||
personnelStatusList[idx].jt006Now = row.find(".jt006Now").val()
|
||||
personnelStatusList[idx].jt005Max = row.find(".jt005Max").val()
|
||||
personnelStatusList[idx].jt005Now = row.find(".jt005Now").val()
|
||||
personnelStatusList[idx].jt004Max = row.find(".jt004Max").val()
|
||||
personnelStatusList[idx].jt004Now = row.find(".jt004Now").val()
|
||||
personnelStatusList[idx].jt003Max = row.find(".jt003Max").val()
|
||||
personnelStatusList[idx].jt003Now = row.find(".jt003Now").val()
|
||||
personnelStatusList[idx].jt002Max = row.find(".jt002Max").val()
|
||||
personnelStatusList[idx].jt002Now = row.find(".jt002Now").val()
|
||||
personnelStatusList[idx].jt001Max = row.find(".jt001Max").val()
|
||||
personnelStatusList[idx].jt001Now = row.find(".jt001Now").val()
|
||||
})
|
||||
$.ajax({
|
||||
type : 'POST',
|
||||
data : JSON.stringify(personnelStatusList),
|
||||
url : "/faisp/savePersonnelStatus",
|
||||
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', '.statusTr', function (){
|
||||
const statusTr = $(this);
|
||||
$.ajax({
|
||||
url: '/faisp/personnelStatusHistory',
|
||||
type: 'GET',
|
||||
data: {year: statusTr.find(".year").val(), ogCd: statusTr.find(".ogCd").val()},
|
||||
dataType:"html",
|
||||
success: function(html){
|
||||
$("#personnelStatusHistoryModalBody").empty().append(html)
|
||||
$("#personnelStatusHistoryModal").modal('show');
|
||||
},
|
||||
error:function(){
|
||||
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
function personnelStatusOgCdCheck(){
|
||||
let flag = true;
|
||||
$.each($(".ogCd"), function(idx, selectBox){
|
||||
if($(selectBox).val()===''){
|
||||
|
||||
flag = false;
|
||||
}
|
||||
})
|
||||
if(!flag){
|
||||
alert("관서가 지정되지 않은 항목이 있습니다.")
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
|
@ -2,8 +2,13 @@ $(document).on('change', '#year', function (){
|
|||
$("#searchFm").submit();
|
||||
})
|
||||
|
||||
$(document).on('click', '#personnelStatusExcelBtn', function (){
|
||||
exportExcel($("#year").val()+"년 외사경찰 정원현원 현황", "psTable");
|
||||
})
|
||||
|
||||
$(document).on('click', '#personnelStatusEditModalBtn', function (){
|
||||
$("#personnelStatusEditModal").modal('show')
|
||||
$("#personnelStatusEditDiv").empty();
|
||||
$("#personnelStatusEditModal").modal('show');
|
||||
})
|
||||
|
||||
$(document).on('click', '#personnelStatusAddBtn', function (){
|
||||
|
|
@ -141,7 +146,7 @@ $(document).on('click', '.statusTr', function (){
|
|||
$.ajax({
|
||||
url: '/faisp/personnelStatusHistory',
|
||||
type: 'GET',
|
||||
data: {year: statusTr.find(".year").val(), ogCd: statusTr.find(".ogCd").val()},
|
||||
data: {year: statusTr.attr("data-year"), ogCd: statusTr.attr("data-ogcd")},
|
||||
dataType:"html",
|
||||
success: function(html){
|
||||
$("#personnelStatusHistoryModalBody").empty().append(html)
|
||||
|
|
|
|||
|
|
@ -7,60 +7,13 @@ $(function(){
|
|||
})
|
||||
|
||||
$(document).on('click', '#fieldDownExcel', function (){
|
||||
exportExcel('분야별');
|
||||
exportExcel('견문통계_분야별', 'tableData');
|
||||
})
|
||||
|
||||
$(document).on('click', '#ratingDownExcel', function (){
|
||||
exportExcel('평가별');
|
||||
exportExcel('견문통계_평가별', 'tableData');
|
||||
})
|
||||
|
||||
function exportExcel(name){
|
||||
var excelHandler = {
|
||||
getExcelFileName : function(){
|
||||
return '견문통계'+'_'+name+'_'+getToday()+'.xlsx'; //파일명
|
||||
},
|
||||
getSheetName : function(){
|
||||
return '견문통계'+'_'+name;
|
||||
},
|
||||
getExcelData : function(){
|
||||
return document.getElementById('tableData'); //TABLE id
|
||||
},
|
||||
getWorksheet : function(){
|
||||
return XLSX.utils.table_to_sheet(this.getExcelData());
|
||||
}
|
||||
}
|
||||
// step 1. workbook 생성
|
||||
var wb = XLSX.utils.book_new();
|
||||
|
||||
// step 2. 시트 만들기
|
||||
var newWorksheet = excelHandler.getWorksheet();
|
||||
|
||||
// step 3. workbook에 새로만든 워크시트에 이름을 주고 붙인다.
|
||||
XLSX.utils.book_append_sheet(wb, newWorksheet, excelHandler.getSheetName());
|
||||
|
||||
// step 4. 엑셀 파일 만들기
|
||||
var wbout = XLSX.write(wb, {bookType:'xlsx', type: 'binary'});
|
||||
|
||||
// step 5. 엑셀 파일 내보내기
|
||||
saveAs(new Blob([s2ab(wbout)],{type:"application/octet-stream"}), excelHandler.getExcelFileName());
|
||||
}
|
||||
|
||||
function s2ab(s) {
|
||||
var buf = new ArrayBuffer(s.length); //convert s to arrayBuffer
|
||||
var view = new Uint8Array(buf); //create uint8array as viewer
|
||||
for (var i=0; i<s.length; i++) view[i] = s.charCodeAt(i) & 0xFF; //convert to octet
|
||||
return buf;
|
||||
}
|
||||
|
||||
function getToday(){
|
||||
var date = new Date();
|
||||
var year = date.getFullYear();
|
||||
var month = ("0" + (1 + date.getMonth())).slice(-2);
|
||||
var day = ("0" + date.getDate()).slice(-2);
|
||||
|
||||
return year + "-" + month + "-" + day;
|
||||
}
|
||||
|
||||
$(document).on('click', '#fieldSearch', function (){
|
||||
goFieldStatistics();
|
||||
})
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
||||
layout:decorate="~{layout/layout}">
|
||||
<th:block layout:fragment="script">
|
||||
<script type="text/javascript" th:src="@{/js/faisp/police.js}"></script>
|
||||
<script type="text/javascript" th:src="@{/js/faisp/careerMgt.js}"></script>
|
||||
</th:block>
|
||||
<div layout:fragment="content">
|
||||
<main class="pt-3">
|
||||
|
|
@ -32,10 +32,9 @@
|
|||
<div class="row">
|
||||
<div class="col-12">
|
||||
<form id="searchFm" method="get" th:action="@{/faisp/careerMgt}">
|
||||
<input type="hidden" name="excel">
|
||||
<input type="hidden" name="userStatus" th:value="${userStatus}">
|
||||
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
|
||||
<div class="row justify-content-between pe-3 py-1">
|
||||
<div class="row justify-content-between">
|
||||
<div class="col-auto">
|
||||
<select class="form-select" name="rowCnt" id="rowCnt">
|
||||
<th:block th:each="num : ${#numbers.sequence(1,5)}">
|
||||
|
|
@ -43,11 +42,6 @@
|
|||
</th:block>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<button type="button" class="btn btn-success" id="goExcel">엑셀다운</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row justify-content-end pe-3 py-1">
|
||||
<div class="col-auto">
|
||||
<div class="row justify-content-end">
|
||||
<div class="col-auto">
|
||||
|
|
@ -1,90 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">외사경찰 교육 등록</h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="mb-3 mt-3 row">
|
||||
<label for="dicCode" class="col-sm-2 col-form-label col-form-label-sm text-center">직급</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm" th:value="${userInfo.titleCd}" readonly>
|
||||
</div>
|
||||
<label for="userId" class="col-sm-2 col-form-label col-form-label-sm text-center ">생년월일</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm" th:value="${userInfo.birthDate}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="phoneNo" class="col-sm-2 col-form-label col-form-label-sm text-center">성명</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="tel" class="form-control form-control-sm" th:value="|${userInfo.ogCd} ${userInfo.ofcCd} ${userInfo.userNm}|" readonly>
|
||||
</div>
|
||||
<label for="email" class="col-sm-2 col-form-label col-form-label-sm text-center">성별</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="email" class="form-control form-control-sm" th:value="${userInfo.sex}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="sex" class="col-sm-2 col-form-label col-form-label-sm text-center">학력사항</label>
|
||||
<div class="col-sm-2">
|
||||
<input type="email" class="form-control form-control-sm" readonly>
|
||||
</div>
|
||||
<label for="sex" class="col-sm-1 col-form-label col-form-label-sm text-center">학교</label>
|
||||
<div class="col-sm-2">
|
||||
<input type="email" class="form-control form-control-sm" readonly>
|
||||
</div>
|
||||
<label for="sex" class="col-sm-2 col-form-label col-form-label-sm text-center">외국어</label>
|
||||
<div class="col-sm-2">
|
||||
<input type="email" class="form-control form-control-sm" th:value="${userInfo.languageCd}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="birthDate" class="col-sm-2 col-form-label col-form-label-sm text-center">전공</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="birthDate" name="birthDate" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-body text-center">
|
||||
<div class="row">
|
||||
<table class="table table-striped" id="categoryTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>교육명</th>
|
||||
<th>교육일</th>
|
||||
<th>담당기관</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="overflow-scroll">
|
||||
<tr th:each="list:${eduList}">
|
||||
<td th:text="${list.eduName}"></td>
|
||||
<td th:text="|${list.eduSdate}~${list.eduEdate}|"></td>
|
||||
<td th:text="${list.eduRa}"></td>
|
||||
<td>
|
||||
<button type="button" class="btn btn-sm btn-danger" id="deleteBtn" th:data-eduseq="${list.eduSeq}" th:data-userseq="${list.userSeq}" th:if="${accessAuth eq 'ACC003'} or ${list.wrtUserSeq eq userSeq}">삭제</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div id="insertEdu">
|
||||
<div class="row justify-content-center">
|
||||
<button class="btn btn-sm btn-outline-primary col-auto" th:data-userseq="${userInfo.userSeq}" id="eduAddBtn"><i class="bi bi-plus-lg"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer row justify-content-between">
|
||||
<div class="col-auto">
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<button type="button" class="btn btn-primary" id="saveBtn" th:if="${accessAuth eq 'ACC003'} or ${userInfo.userSeq eq userSeq}">저장</button>
|
||||
</div>
|
||||
</div>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,90 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">외사경찰 교육 등록</h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="mb-3 mt-3 row">
|
||||
<label for="dicCode" class="col-sm-2 col-form-label col-form-label-sm text-center">직급</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm" th:value="${userInfo.titleCd}" readonly>
|
||||
</div>
|
||||
<label for="userId" class="col-sm-2 col-form-label col-form-label-sm text-center ">생년월일</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm" th:value="${userInfo.birthDate}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="phoneNo" class="col-sm-2 col-form-label col-form-label-sm text-center">성명</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="tel" class="form-control form-control-sm" th:value="|${userInfo.ogCd} ${userInfo.ofcCd} ${userInfo.userNm}|" readonly>
|
||||
</div>
|
||||
<label for="email" class="col-sm-2 col-form-label col-form-label-sm text-center">성별</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="email" class="form-control form-control-sm" th:value="${userInfo.sex}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="sex" class="col-sm-2 col-form-label col-form-label-sm text-center">학력사항</label>
|
||||
<div class="col-sm-2">
|
||||
<input type="email" class="form-control form-control-sm" readonly>
|
||||
</div>
|
||||
<label for="sex" class="col-sm-1 col-form-label col-form-label-sm text-center">학교</label>
|
||||
<div class="col-sm-2">
|
||||
<input type="email" class="form-control form-control-sm" readonly>
|
||||
</div>
|
||||
<label for="sex" class="col-sm-2 col-form-label col-form-label-sm text-center">외국어</label>
|
||||
<div class="col-sm-2">
|
||||
<input type="email" class="form-control form-control-sm" th:value="${userInfo.languageCd}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="birthDate" class="col-sm-2 col-form-label col-form-label-sm text-center">전공</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="birthDate" name="birthDate" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-body text-center">
|
||||
<div class="row">
|
||||
<table class="table table-striped" id="categoryTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>교육명</th>
|
||||
<th>교육일</th>
|
||||
<th>담당기관</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="overflow-scroll">
|
||||
<tr th:each="list:${eduList}">
|
||||
<td th:text="${list.eduName}"></td>
|
||||
<td th:text="|${list.eduSdate}~${list.eduEdate}|"></td>
|
||||
<td th:text="${list.eduRa}"></td>
|
||||
<td>
|
||||
<button type="button" class="btn btn-sm btn-danger" id="deleteBtn" th:data-eduseq="${list.eduSeq}" th:data-userseq="${list.userSeq}" th:if="${accessAuth eq 'ACC003'} or ${list.wrtUserSeq eq userSeq}">삭제</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div id="insertEdu">
|
||||
<div class="row justify-content-center">
|
||||
<button class="btn btn-sm btn-outline-primary col-auto" th:data-userseq="${userInfo.userSeq}" id="eduAddBtn"><i class="bi bi-plus-lg"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer row justify-content-between">
|
||||
<div class="col-auto">
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<button type="button" class="btn btn-primary" id="saveBtn" th:if="${accessAuth eq 'ACC003'} or ${userInfo.userSeq eq userSeq}">저장</button>
|
||||
</div>
|
||||
</div>
|
||||
</html>
|
||||
|
|
@ -24,6 +24,7 @@
|
|||
</div>
|
||||
<div class="col-auto">
|
||||
<button type="button" class="btn btn-sm btn-primary" id="personnelStatusEditModalBtn" th:if="${accessAuth ne 'ACC001'}">등록</button>
|
||||
<button type="button" class="btn btn-sm btn-success" id="personnelStatusExcelBtn">엑셀 다운로드</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
|
@ -31,7 +32,7 @@
|
|||
<div class="col-12">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<table class="table table-hover table-bordered">
|
||||
<table class="table table-hover table-bordered" id="psTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th rowspan="3">관서</th>
|
||||
|
|
@ -73,9 +74,7 @@
|
|||
</tr>
|
||||
</thead>
|
||||
<tbody class="table-group-divider">
|
||||
<tr class="statusTr" th:each="status:${statusList}">
|
||||
<input type="hidden" class="year" th:value="${status.year}">
|
||||
<input type="hidden" class="ogCd" th:value="${status.ogCd}">
|
||||
<tr class="statusTr" th:each="status:${statusList}" th:data-year="${status.year}" th:data-ogcd="${status.ogCd}">
|
||||
<th:block th:each="code:${session.commonCode.get('OG')}">
|
||||
<th:block th:if="${code.itemCd eq status.ogCd}">
|
||||
<td th:text="${code.itemValue}"></td>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,152 @@
|
|||
<!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="modal-header">
|
||||
<h5 class="modal-title" th:text="${userStatus eq 'USC003' ? '現 외사경찰 상세' : userStatus eq 'USC006' ? '前 외사경찰 상세' : userStatus eq 'USC007' ? '非 외사경찰 상세' : null}"></h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<ul class="nav nav-tabs" id="userTab" role="tablist">
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link" id="editTab" th:data-userseq="${policeList[0].userSeq}" data-bs-toggle="tab" type="button" role="tab">현황 상세</button>
|
||||
</li>
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link active" id="historyTab" th:data-userseq="${policeList[0].userSeq}" data-bs-toggle="tab" type="button" role="tab">수정이력</button>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="row mx-0">
|
||||
<div class="col-100 card text-center">
|
||||
<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-striped" id="categoryTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>작성자</th>
|
||||
<th>등록일</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="overflow-scroll">
|
||||
<tr class="historyInfoTr" th:each="list:${policeList}">
|
||||
<td>
|
||||
<input type="checkbox" class="hisChk">
|
||||
<input type="hidden" class="userSeq" th:value="${list.userSeq}">
|
||||
<input type="hidden" class="verNo" th:value="${list.versionNo}">
|
||||
</td>
|
||||
<td th:text="|${list.wrtTitle} ${list.wrtNm}|"></td>
|
||||
<td th:text="${#temporals.format(list.wrtDt, 'yyyy-MM-dd HH:mm')}"></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-8" id="valueDiv">
|
||||
<div class="mb-3 mt-3 row">
|
||||
<label for="dicCode" class="col-sm-2 col-form-label col-form-label-sm text-center ">공무원식별번호</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vDicCode"readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="userId" class="col-sm-2 col-form-label col-form-label-sm text-center ">아이디</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vUserId"readonly>
|
||||
</div>
|
||||
<label for="userNm" class="col-sm-2 col-form-label col-form-label-sm text-center">이름</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vUserNm" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="phoneNo" class="col-sm-2 col-form-label col-form-label-sm text-center">휴대전화</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vPhone"readonly>
|
||||
</div>
|
||||
<label for="email" class="col-sm-2 col-form-label col-form-label-sm text-center">이메일</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vEmail" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="sex" class="col-sm-2 col-form-label col-form-label-sm text-center">성별</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vSex"readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="birthDate" class="col-sm-2 col-form-label col-form-label-sm text-center">생년월일</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vBirth"readonly>
|
||||
</div>
|
||||
<label for="policeInDate" class="col-sm-2 col-form-label col-form-label-sm text-center">해양경찰배명일</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vPoliceInDate"readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="ogCd" class="col-sm-2 col-form-label col-form-label-sm text-center">관서</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vOgCd" readonly>
|
||||
</div>
|
||||
<label for="organInDate" class="col-sm-2 col-form-label col-form-label-sm text-center">현관서전입일</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vOrganInDate" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="ofcCd" class="col-sm-2 col-form-label col-form-label-sm text-center">부서</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vOfcCd"readonly>
|
||||
</div>
|
||||
<label for="ofcInDate" class="col-sm-2 col-form-label col-form-label-sm text-center">현부서임용일</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vOfcInDate" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="ogCd" class="col-sm-2 col-form-label col-form-label-sm text-center">계급</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vTitleCd" readonly>
|
||||
</div>
|
||||
<label for="titleInDate" class="col-sm-2 col-form-label col-form-label-sm text-center">현계급임용일</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vTitleInDate" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="outturnCd" class="col-sm-2 col-form-label col-form-label-sm text-center">경과</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vOutturnCd" readonly>
|
||||
</div>
|
||||
<label for="seriesCd" class="col-sm-2 col-form-label col-form-label-sm text-center">직별</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vSeriesCd" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="languageCd" class="col-sm-2 col-form-label col-form-label-sm text-center">외국어특채</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vLanguageCd" readonly>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer row justify-content-between">
|
||||
<div class="col-auto">
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
|
||||
</div>
|
||||
</div>
|
||||
</html>
|
||||
|
|
@ -1,152 +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="modal-header">
|
||||
<h5 class="modal-title" th:text="${userStatus eq 'USC003' ? '現 외사경찰 상세' : userStatus eq 'USC006' ? '前 외사경찰 상세' : userStatus eq 'USC007' ? '非 외사경찰 상세' : null}"></h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<ul class="nav nav-tabs" id="userTab" role="tablist">
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link" id="editTab" th:data-userseq="${policeList[0].userSeq}" data-bs-toggle="tab" type="button" role="tab">현황 상세</button>
|
||||
</li>
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link active" id="historyTab" th:data-userseq="${policeList[0].userSeq}" data-bs-toggle="tab" type="button" role="tab">수정이력</button>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="row mx-0">
|
||||
<div class="col-100 card text-center">
|
||||
<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-striped" id="categoryTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>작성자</th>
|
||||
<th>등록일</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="overflow-scroll">
|
||||
<tr class="historyInfoTr" th:each="list:${policeList}">
|
||||
<td>
|
||||
<input type="checkbox" class="hisChk">
|
||||
<input type="hidden" class="userSeq" th:value="${list.userSeq}">
|
||||
<input type="hidden" class="verNo" th:value="${list.versionNo}">
|
||||
</td>
|
||||
<td th:text="|${list.wrtTitle} ${list.wrtNm}|"></td>
|
||||
<td th:text="${#temporals.format(list.wrtDt, 'yyyy-MM-dd HH:mm')}"></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-8" id="valueDiv">
|
||||
<div class="mb-3 mt-3 row">
|
||||
<label for="dicCode" class="col-sm-2 col-form-label col-form-label-sm text-center ">공무원식별번호</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vDicCode"readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="userId" class="col-sm-2 col-form-label col-form-label-sm text-center ">아이디</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vUserId"readonly>
|
||||
</div>
|
||||
<label for="userNm" class="col-sm-2 col-form-label col-form-label-sm text-center">이름</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vUserNm" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="phoneNo" class="col-sm-2 col-form-label col-form-label-sm text-center">휴대전화</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vPhone"readonly>
|
||||
</div>
|
||||
<label for="email" class="col-sm-2 col-form-label col-form-label-sm text-center">이메일</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vEmail" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="sex" class="col-sm-2 col-form-label col-form-label-sm text-center">성별</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vSex"readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="birthDate" class="col-sm-2 col-form-label col-form-label-sm text-center">생년월일</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vBirth"readonly>
|
||||
</div>
|
||||
<label for="policeInDate" class="col-sm-2 col-form-label col-form-label-sm text-center">해양경찰배명일</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vPoliceInDate"readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="ogCd" class="col-sm-2 col-form-label col-form-label-sm text-center">관서</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vOgCd" readonly>
|
||||
</div>
|
||||
<label for="organInDate" class="col-sm-2 col-form-label col-form-label-sm text-center">현관서전입일</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vOrganInDate" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="ofcCd" class="col-sm-2 col-form-label col-form-label-sm text-center">부서</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vOfcCd"readonly>
|
||||
</div>
|
||||
<label for="ofcInDate" class="col-sm-2 col-form-label col-form-label-sm text-center">현부서임용일</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vOfcInDate" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="ogCd" class="col-sm-2 col-form-label col-form-label-sm text-center">계급</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vTitleCd" readonly>
|
||||
</div>
|
||||
<label for="titleInDate" class="col-sm-2 col-form-label col-form-label-sm text-center">현계급임용일</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vTitleInDate" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="outturnCd" class="col-sm-2 col-form-label col-form-label-sm text-center">경과</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vOutturnCd" readonly>
|
||||
</div>
|
||||
<label for="seriesCd" class="col-sm-2 col-form-label col-form-label-sm text-center">직별</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vSeriesCd" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="languageCd" class="col-sm-2 col-form-label col-form-label-sm text-center">외국어특채</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="vLanguageCd" readonly>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer row justify-content-between">
|
||||
<div class="col-auto">
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
|
||||
</div>
|
||||
</div>
|
||||
</html>
|
||||
Loading…
Reference in New Issue