FAISP/src/main/resources/static/js/faStatistics/fishingBoatMgt.js

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);
}