496 lines
18 KiB
JavaScript
496 lines
18 KiB
JavaScript
let selectedList = [];
|
|
let fileList = [];
|
|
$(function (){
|
|
const searchFormBoat = $("#searchFormBoat")
|
|
const searchFormPolice = $("#searchFormPolice")
|
|
if(searchFormPolice.val()!==""){
|
|
searchFormBoat.find("."+searchFormPolice.val()).show();
|
|
searchFormBoat.removeAttr("disabled");
|
|
}
|
|
$("#dateSelectorDiv").datepicker({
|
|
format: "yyyy-mm-dd",
|
|
language: "ko",
|
|
autoclose: true
|
|
});
|
|
setViolationInput();
|
|
})
|
|
$(document).on('change', '#year', function (){
|
|
$("#searchBtn").click();
|
|
})
|
|
$(document).on('click', '#searchFormBtn', function (){
|
|
const btn = $(this)
|
|
if(btn.attr("data-state")==="hide"){
|
|
$(".subSearchParam").show();
|
|
btn.attr("data-state", "show");
|
|
btn.empty().append("조건<br>숨기기");
|
|
}else{
|
|
$(".subSearchParam").hide();
|
|
btn.attr("data-state", "hide");
|
|
btn.empty().append("조건<br>펼치기");
|
|
}
|
|
})
|
|
$(document).on('change', '#searchFormPolice', function (){
|
|
const searchFormBoat = $("#searchFormBoat")
|
|
searchFormBoat.find("option").hide()
|
|
if(this.value !== ""){
|
|
searchFormBoat.removeAttr("disabled")
|
|
searchFormBoat.find("."+this.value).show();
|
|
}else{
|
|
searchFormBoat.attr("disabled", "disabled")
|
|
}
|
|
})
|
|
$(document).on('click', "#violationInput", function (){
|
|
$("#violationSelectDiv").show();
|
|
})
|
|
$(document).on('mouseleave', "#violationSelectDiv", function (){
|
|
$("#violationSelectDiv").hide();
|
|
})
|
|
$(document).on('change', '.violationParams', function (){
|
|
setViolationInput();
|
|
})
|
|
$(document).on('click', '#getFishingBoatEditModalBtn', function (){
|
|
getFishingBoatEditModal(null);
|
|
})
|
|
$(document).on('click', '.crackdownStatusTr', function (){
|
|
getFishingBoatViewModal($(this).attr("data-cdskey"), $(this).attr("data-modaltype"))
|
|
})
|
|
$(document).on('click', '#editFishingBoatBtn', function (){
|
|
getFishingBoatEditModal($("#fishingBoatViewModalContent").find(".cdsKey").val());
|
|
$("#fishingBoatViewModal").modal('hide');
|
|
})
|
|
|
|
$(document).on('click', '#deleteFishingBoatBtn', function (){
|
|
if(confirm("삭제하시겠습니까?" +
|
|
"\n되돌릴 수 없습니다." +
|
|
"\n연관된 단속현황, 처리현황, 선원정보가 같이 지워집니다.")){
|
|
contentFade("in");
|
|
$.ajax({
|
|
type : 'POST',
|
|
data : JSON.stringify({fbKey: $("#fishingBoatViewModalContent").find(".fbKey").val()}),
|
|
url : "/faStatistics/deleteFishingBoat",
|
|
contentType: 'application/json',
|
|
beforeSend: function (xhr){
|
|
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
|
|
},
|
|
success : function(result) {
|
|
alert("삭제되었습니다.");
|
|
let searchParam = location.search;
|
|
if(searchParam.includes("refDocKey")){
|
|
searchParam = searchParam.substring(0, searchParam.indexOf("&"))
|
|
}
|
|
location.href = location.pathname+searchParam;
|
|
},
|
|
error : function(xhr, status) {
|
|
alert("삭제를 실패하였습니다.")
|
|
contentFade("out");
|
|
}
|
|
})
|
|
}
|
|
})
|
|
$(document).on('change', '#caseNum', function (){
|
|
$.ajax({
|
|
url: '/faStatistics/checkCaseNum',
|
|
type: 'GET',
|
|
data: {caseNum: $("#caseNum").val()},
|
|
dataType:"json",
|
|
success: function(data){
|
|
if(data===1){
|
|
alert("일치하는 사건번호가 등록되어 있습니다.");
|
|
$("#caseNum").val("");
|
|
}
|
|
},
|
|
error:function(e){
|
|
ajaxErrorAction(e);
|
|
}
|
|
});
|
|
})
|
|
$(document).on('click', '#caseNumBtn', function (){
|
|
searchModalSubmit(1);
|
|
$("#crackdownSubModal").modal('show');
|
|
})
|
|
$(document).on('click', '.crackdownTr', function (){
|
|
$(".crackdownTr").prop("checked", false);
|
|
const chkbox = $(this).find('.crackdownChkbox')[0]
|
|
chkbox.checked = !chkbox.checked;
|
|
})
|
|
$(document).on('click', '#getCrackdownBtn', function (){
|
|
getFishingBoatEditModal($(".crackdownChkbox:checked").parents(".crackdownTr").attr("data-key"));
|
|
$("#crackdownSubModal").modal('hide');
|
|
})
|
|
$(document).on('change', '#crackdownPolice', function (){
|
|
getCrackdownBoatOption(this.value);
|
|
})
|
|
$(document).on('change', '#violationSelector', function (){
|
|
if(this.selectedOptions[0].value !== ""){
|
|
if($(".violationCd[value='"+this.selectedOptions[0].value+"']").length===0){
|
|
$("#violationDiv").append(
|
|
'<div class="col-6 violation">\n' +
|
|
' <div class="input-group w-auto">\n' +
|
|
' <input type="hidden" class="form-control form-control-sm fishingBoatInfo violationCd" value="'+this.selectedOptions[0].value+'">\n' +
|
|
' <input type="text" class="form-control form-control-sm" value="'+this.selectedOptions[0].innerText+'">\n' +
|
|
' <button type="button" class="btn btn-sm btn-outline-secondary opacity-75 violationRemoveBtn">\n' +
|
|
' <i class="bi bi-dash-square text-danger"></i>\n' +
|
|
' </button>\n' +
|
|
' </div>\n' +
|
|
'</div>'
|
|
)
|
|
}
|
|
}
|
|
switch (this.selectedOptions[0].value) {
|
|
case "VT011": // 어획량 축소 기재
|
|
childInputStateChange(2, $("#catchDiv").find("input"))
|
|
break;
|
|
case "VT028": // 특수공무집행방해
|
|
childInputStateChange(2, $("#damageDiv").find("input, textarea"))
|
|
break;
|
|
}
|
|
|
|
})
|
|
$(document).on('click', '.violationRemoveBtn', function (){
|
|
const parentDiv = $(this).parents(".violation")
|
|
switch (parentDiv.find(".violationCd").val()){
|
|
case "VT011": // 어획량 축소 기재
|
|
childInputStateChange(1, $("#catchDiv").find("input"))
|
|
break;
|
|
case "VT028": // 특수공무집행방해
|
|
childInputStateChange(1, $("#damageDiv").find("input, textarea"))
|
|
break;
|
|
}
|
|
parentDiv.remove();
|
|
})
|
|
|
|
$(document).on('click', '.versionInfoTr', function (){
|
|
$(".versionInfoChkbox").prop("checked", false);
|
|
$(this).find(".versionInfoChkbox")[0].checked = true
|
|
$.ajax({
|
|
url: '/faStatistics/crackdownStatusVersionInfo',
|
|
data: {
|
|
cdsKey: $(this).find(".cdsKey").val(),
|
|
versionNo: $(this).find(".versionNo").val()
|
|
},
|
|
type: 'GET',
|
|
dataType:"html",
|
|
success: function(html){
|
|
$("#versionInfoDiv").empty().append(html);
|
|
},
|
|
error:function(e){
|
|
ajaxErrorAction(e);
|
|
}
|
|
});
|
|
})
|
|
$(document).on('change', '.boatNameKr', function (){
|
|
$(".boatNameKr").val(this.value);
|
|
})
|
|
$(document).on('change', '.oxSelector', function (){
|
|
childInputStateChange(Number(this.value), $(this).parent().find("input,select").slice(1));
|
|
})
|
|
$(document).on('change', '#directHandoverSelector', function (){
|
|
childInputStateChange(Number(this.value), $("#directHandoverDiv").find("input"))
|
|
})
|
|
$(document).on('change', '#offenseSelector', function (){
|
|
childInputStateChange(Number(this.value), $("#offenseIllegalWasteQuantity"))
|
|
childInputStateChange(Number(this.value), $("#offenseQuantity"))
|
|
childInputStateChange(Number(this.value), $("#offenseAmount"))
|
|
})
|
|
|
|
$(document).on('change', '#equalCaptain', function (){
|
|
if(this.checked){
|
|
$.each($("#captainDiv :input"), function (idx, input){
|
|
$("#shipOwnerDiv").find("#"+input.id+"2").val(input.value)
|
|
})
|
|
}else{
|
|
$("#shipOwnerDiv :input").val("");
|
|
}
|
|
})
|
|
$(document).on('change', '#captainDiv :input', function (){
|
|
if($("#equalCaptain").prop("checked")){
|
|
$("#shipOwnerDiv").find("#"+this.id+"2").val(this.value)
|
|
}
|
|
})
|
|
$(document).on('click', '#sailorAddBtn', function (){
|
|
$("#sailorRestrictionHome").append(
|
|
'<div class="col-4 sailorRestriction">\n' +
|
|
' <div class="input-group">\n' +
|
|
' <select class="form-select form-select-sm isRestriction normalSailorPosition" style="width: 75px">\n' +
|
|
' <option value="">직책</option>\n' +
|
|
' <option value="POS005">기타 간부선원</option>\n' +
|
|
' <option value="POS006">일반선원 또는 확인불가</option>\n' +
|
|
' </select>\n' +
|
|
' <select class="form-select form-select-sm isRestriction w-auto normalSailorRestriction">\n' +
|
|
' <option value="Y">O</option>\n' +
|
|
' <option value="N">X</option>\n' +
|
|
' </select>\n' +
|
|
' <input type="text" class="form-control form-control-sm sailorInfo normalSailorNm w-auto" placeholder="이름">\n' +
|
|
' <button type="button" class="btn btn-sm btn-outline-secondary w-auto opacity-75 sailorRemoveBtn">\n' +
|
|
' <i class="bi bi-dash-square text-danger"></i>\n' +
|
|
' </button>\n' +
|
|
' </div>\n' +
|
|
'</div>'
|
|
)
|
|
})
|
|
$(document).on('click', '.sailorRemoveBtn', function (){
|
|
$(this).parents(".sailorRestriction").remove();
|
|
})
|
|
$(document).on('click', '.saveEditInfoBtn', function (){
|
|
saveFishingBoatInfo($(this).attr("data-status"))
|
|
})
|
|
$(document).on('change', '#napoDate, #napoTime', function (){
|
|
$("#napoDt").val($("#napoDate").val()+" "+$("#napoTime").val());
|
|
calculationReleaseToNapo($('#fishingBoatEditModalContent'))
|
|
})
|
|
$(document).on('change', '#releaseDate, #releaseTime', function (){
|
|
$("#releaseDt").val($("#releaseDate").val()+" "+$("#releaseTime").val());
|
|
calculationReleaseToNapo($('#fishingBoatEditModalContent'))
|
|
})
|
|
$(document).on('change', '#paymentPaymentDate, #paymentPaymentTime', function (){
|
|
$("#paymentPaymentDt").val($("#paymentPaymentDate").val()+" "+$("#paymentPaymentTime").val());
|
|
})
|
|
$(document).on('change', '.pressurizedTimeTaken', function (){
|
|
$("#pressurizedTimeTaken").val($("#pressurizedTimeTakenDate").val()+"일 "+$("#pressurizedTimeTakenTime").val())
|
|
})
|
|
$(document).on('change', '.warrantReqTake', function (){
|
|
$("#warrantReqTake").val($("#warrantReqTakeDate").val()+"일 "+$("#warrantReqTakeTime").val())
|
|
})
|
|
$(document).on('click', '#captainPhoto', function (){
|
|
const fileDownloadDiv = $("#fileDownloadDiv")[0]
|
|
if(fileDownloadDiv.className==="d-none"){
|
|
fileDownloadDiv.className="";
|
|
}else{
|
|
fileDownloadDiv.className="d-none"
|
|
}
|
|
})
|
|
|
|
function getFishingBoatEditModal(cdsKey){
|
|
$.ajax({
|
|
url: '/faStatistics/fishingBoatEditModal',
|
|
data: {cdsKey: cdsKey},
|
|
type: 'GET',
|
|
dataType:"html",
|
|
success: function(html){
|
|
const contentDiv = $("#fishingBoatEditModalContent");
|
|
contentDiv.empty().append(html)
|
|
$(".dateSelector").datepicker({
|
|
format: "yyyy-mm-dd",
|
|
language: "ko",
|
|
autoclose: true
|
|
});
|
|
const crackdownPolice = $("#crackdownPolice").val()
|
|
if(crackdownPolice){
|
|
getCrackdownBoatOption(crackdownPolice)
|
|
}
|
|
$(".sailorInfo").attr("disabled", "disabled")
|
|
if($("#captainStatus").val()==="DST001"){
|
|
$("#captainDiv").find("input").removeAttr("disabled")
|
|
$("#captainRestriction").removeAttr("disabled")
|
|
}
|
|
if($("#shipOwnerStatus").val()==="DST001"){
|
|
$("#shipOwnerDiv").find("input").removeAttr("disabled")
|
|
}
|
|
if($("#navigatingOfficerStatus").val()==="DST001"){
|
|
$("#navigatingOfficerRestriction").removeAttr("disabled")
|
|
}
|
|
if($("#chiefEngineerStatus").val()==="DST001"){
|
|
$("#chiefEngineerRestriction").removeAttr("disabled")
|
|
}
|
|
$.each($(".sailorRestriction"), function (idx, div){
|
|
if($(div).find(".sailorStatus").val()==="DST001"){
|
|
$(div).find("input,select").removeAttr("disabled");
|
|
}
|
|
})
|
|
setUploadDiv();
|
|
calculationReleaseToNapo(contentDiv);
|
|
$("#fishingBoatEditModal").modal('show');
|
|
},
|
|
error:function(e){
|
|
ajaxErrorAction(e);
|
|
}
|
|
});
|
|
}
|
|
function getFishingBoatViewModal(cdsKey, modalType){
|
|
$.ajax({
|
|
url: '/faStatistics/fishingBoatViewModal',
|
|
data: {cdsKey: cdsKey, modalType: modalType},
|
|
type: 'GET',
|
|
dataType:"html",
|
|
success: function(html){
|
|
const contentDiv = $("#fishingBoatViewModalContent");
|
|
contentDiv.empty().append(html)
|
|
const crackdownPolice = $("#crackdownPolice").val()
|
|
if(crackdownPolice){
|
|
getCrackdownBoatOption(crackdownPolice)
|
|
}
|
|
calculationReleaseToNapo(contentDiv)
|
|
$("#fishingBoatViewModal").modal('show');
|
|
},
|
|
error:function(e){
|
|
ajaxErrorAction(e);
|
|
}
|
|
});
|
|
}
|
|
function getCrackdownBoatOption(categoryCd){
|
|
$.ajax({
|
|
url: '/selectBoxOptions',
|
|
data: {categoryCd: categoryCd, selectedCd: $("#crackdownBoat").attr("data-boatcode")},
|
|
type: 'GET',
|
|
dataType:"html",
|
|
success: function(html){
|
|
const crackdownBoat = $("#crackdownBoat");
|
|
crackdownBoat.empty().append(html);
|
|
if(!$("#cdsKey").val()){
|
|
crackdownBoat.removeAttr("disabled");
|
|
}
|
|
},
|
|
error:function(e){
|
|
ajaxErrorAction(e);
|
|
}
|
|
});
|
|
}
|
|
|
|
function childInputStateChange(selectorValue, inputs){
|
|
switch (selectorValue){
|
|
case 1:
|
|
inputs.val('').attr('disabled', 'disabled')
|
|
break;
|
|
case 2:
|
|
inputs.removeAttr('disabled')
|
|
break;
|
|
}
|
|
}
|
|
function saveFishingBoatInfo(status){
|
|
if(confirm("저장하시겠습니까?")){
|
|
if(valueCheck(status)){
|
|
$(".status").val(status)
|
|
contentFade("in");
|
|
const formData = new FormData($("#fishingBoatEditForm")[0]);
|
|
for(const file of files) {
|
|
if(!file.isDelete)
|
|
formData.append('uploadFiles', file, file.name);
|
|
}
|
|
$.each($(".violationCd"), function (idx, input){
|
|
formData.append('violationList['+idx+'].violation', $(input).val());
|
|
});
|
|
let sailorCnt=0;
|
|
// 선장 정보 입력
|
|
const sailorNameKr = $("#sailorNameKr").val();
|
|
if(sailorNameKr){
|
|
let sailorKey = $("#captainSailorKey").val();
|
|
if(sailorKey!==undefined) {
|
|
formData.append('sailorList[' + sailorCnt + '].sailorKey', sailorKey);
|
|
}
|
|
formData.append('sailorList['+sailorCnt+'].sailorNameKr', sailorNameKr);
|
|
formData.append('sailorList['+sailorCnt+'].sailorNameCn', $("#sailorNameCn").val());
|
|
formData.append('sailorList['+sailorCnt+'].sailorNamePinyin', $("#sailorNamePinyin").val());
|
|
formData.append('sailorList['+sailorCnt+'].birthdate', $("#birthdate").val());
|
|
formData.append('sailorList['+sailorCnt+'].sailorContact', $("#sailorContact").val());
|
|
formData.append('sailorList['+sailorCnt+'].residence', $("#residence").val());
|
|
formData.append('sailorList['+sailorCnt+'].arrestHistory', $("#arrestHistory").val());
|
|
formData.append('sailorList['+sailorCnt+'].note', $("#note").val());
|
|
formData.append('sailorList['+sailorCnt+'].isRestriction', $("#captainRestriction").val());
|
|
formData.append('sailorList['+sailorCnt+'].position', "POS001");
|
|
//선장 사진 파일 붙임 필요.
|
|
sailorCnt++;
|
|
}
|
|
// 선주 정보 입력
|
|
const sailorNameKr2 = $("#sailorNameKr2").val();
|
|
if(sailorNameKr) {
|
|
let sailorKey = $("#ownerSailorKey").val();
|
|
if(sailorKey!==undefined) {
|
|
formData.append('sailorList[' + sailorCnt + '].sailorKey', sailorKey);
|
|
}
|
|
formData.append('sailorList[' + sailorCnt + '].sailorNameKr', sailorNameKr2);
|
|
formData.append('sailorList[' + sailorCnt + '].sailorNameCn', $("#sailorNameCn2").val());
|
|
formData.append('sailorList[' + sailorCnt + '].sailorNamePinyin', $("#sailorNamePinyin2").val());
|
|
formData.append('sailorList[' + sailorCnt + '].birthdate', $("#birthdate2").val());
|
|
formData.append('sailorList[' + sailorCnt + '].sailorContact', $("#sailorContact2").val());
|
|
formData.append('sailorList[' + sailorCnt + '].residence', $("#residence2").val());
|
|
formData.append('sailorList[' + sailorCnt + '].note', $("#note2").val());
|
|
formData.append('sailorList[' + sailorCnt + '].position', "POS004");
|
|
sailorCnt++;
|
|
}
|
|
const navigatingOfficerRestriction = $("#navigatingOfficerRestriction").val()
|
|
if(navigatingOfficerRestriction){
|
|
let sailorKey = $("#navigatingOfficerKey").val();
|
|
if(sailorKey!==undefined) {
|
|
formData.append('sailorList[' + sailorCnt + '].sailorKey', sailorKey);
|
|
}
|
|
formData.append('sailorList['+sailorCnt+'].isRestriction', navigatingOfficerRestriction);
|
|
formData.append('sailorList['+sailorCnt+'].position', "POS002");
|
|
sailorCnt++;
|
|
}
|
|
const chiefEngineerRestriction = $("#chiefEngineerRestriction").val();
|
|
if(chiefEngineerRestriction){
|
|
let sailorKey = $("#chiefEngineerKey").val();
|
|
if(sailorKey!==undefined) {
|
|
formData.append('sailorList[' + sailorCnt + '].sailorKey', sailorKey);
|
|
}
|
|
formData.append('sailorList['+sailorCnt+'].isRestriction', chiefEngineerRestriction);
|
|
formData.append('sailorList['+sailorCnt+'].position', "POS003");
|
|
sailorCnt++;
|
|
}
|
|
$.each($(".sailorRestriction"), function (idx, div){
|
|
const position = $(div).find(".normalSailorPosition").val();
|
|
if(position===""){
|
|
alert("선원의 직책이 선택되지 않았습니다.")
|
|
return false
|
|
}
|
|
let sailorKey = $(div).find(".sailorKey").val();
|
|
if(sailorKey!==undefined){
|
|
formData.append('sailorList['+(idx+sailorCnt)+'].sailorKey', sailorKey);
|
|
}
|
|
formData.append('sailorList['+(idx+sailorCnt)+'].isRestriction', $(div).find(".normalSailorRestriction").val());
|
|
formData.append('sailorList['+(idx+sailorCnt)+'].sailorNameKr', $(div).find(".normalSailorNm").val());
|
|
formData.append('sailorList['+(idx+sailorCnt)+'].position', position);
|
|
});
|
|
$.ajax({
|
|
type : 'POST',
|
|
data : formData,
|
|
url : "/faStatistics/saveFishingBoat",
|
|
processData: false,
|
|
contentType: false,
|
|
success : function() {
|
|
alert("저장되었습니다.");
|
|
contentFade("out");
|
|
location.reload();
|
|
},
|
|
error : function(xhr, status) {
|
|
alert("저장에 실패하였습니다.");
|
|
contentFade("out");
|
|
}
|
|
})
|
|
}
|
|
}
|
|
}
|
|
|
|
function valueCheck(status){
|
|
if(status === "DST007"){
|
|
if(!$("#napoDt").val()){
|
|
alert("나포일시를 입력해주세요")
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
function calculationReleaseToNapo(form){
|
|
let napoDt = form.find("#napoDt").val();
|
|
let releaseDt = form.find("#releaseDt").val();
|
|
if(napoDt !== undefined && releaseDt !== undefined){
|
|
if(napoDt.length>15&&releaseDt.length>15){
|
|
releaseDt = new Date(releaseDt);
|
|
napoDt = new Date(napoDt);
|
|
form.find("#releaseToNapo").val(Math.ceil((releaseDt.getTime()-napoDt.getTime())/(1000*60*60*24))+"일");
|
|
}
|
|
}
|
|
}
|
|
|
|
function setViolationInput(){
|
|
let violationInputText = "";
|
|
$.each($(".violationParams:checked"), function (idx, chkBox){
|
|
violationInputText += $("[for='"+chkBox.id+"']")[0].innerText+", ";
|
|
})
|
|
if(violationInputText.length>30){
|
|
violationInputText = violationInputText.substr(0, 30)+"...";
|
|
}else{
|
|
violationInputText = violationInputText.slice(0, -2)
|
|
}
|
|
$("#violationInput").val(violationInputText);
|
|
} |