불법조업 단속현황 작업중.

해고/연장보고 정보협력자 불러오기 요청사항 반영.
master
강석 최 2023-06-08 18:28:20 +09:00
parent 1ecc311a7c
commit f9c3b203ce
12 changed files with 355 additions and 567 deletions

View File

@ -121,6 +121,7 @@ public class InternationalCrimeArrestController {
internationalCrimeArrest.setWrtUserSeq(loginUser.getUserSeq()); internationalCrimeArrest.setWrtUserSeq(loginUser.getUserSeq());
return internationalCrimeArrestService.savedInternationalCrimeArrest(internationalCrimeArrest); return internationalCrimeArrestService.savedInternationalCrimeArrest(internationalCrimeArrest);
} }
@PostMapping("/deleteInternationalCrimeArrest") @PostMapping("/deleteInternationalCrimeArrest")
public void deleteInternationalCrimeArrest(@RequestBody InternationalCrimeArrest internationalCrimeArrest){ public void deleteInternationalCrimeArrest(@RequestBody InternationalCrimeArrest internationalCrimeArrest){
internationalCrimeArrestService.deleteInternationalCrimeArrest(internationalCrimeArrest); internationalCrimeArrestService.deleteInternationalCrimeArrest(internationalCrimeArrest);

View File

@ -11,10 +11,7 @@ import com.dbnt.faisp.main.faStatistics.unlawfulFishing.service.UnlawfulFishingS
import com.dbnt.faisp.main.userInfo.model.UserInfo; import com.dbnt.faisp.main.userInfo.model.UserInfo;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -61,17 +58,36 @@ public class UnlawfulFishingController {
return mav; return mav;
} }
@GetMapping("/cdiViewModal")
public ModelAndView crackdownInfoViewModal(@AuthenticationPrincipal UserInfo loginUser, CrackdownInfo crackdownInfo){
ModelAndView mav = new ModelAndView("faStatistics/unlawfulFishing/crackdownInfo/cdiViewModal");
mav.addObject("userSeq",loginUser.getUserSeq());
mav.addObject("accessAuth", authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/unlawfulFishing/crackdownInfo").get(0).getAccessAuth());
mav.addObject("mgtOrganList", loginUser.getDownOrganCdList());
crackdownInfo = unlawfulFishingService.selectCrackdownInfo(crackdownInfo.getCdsKey());
crackdownInfo.setCrackdownInfoHistoryList(unlawfulFishingService.selectCrackdownInfoHistoryList(crackdownInfo.getCdsKey()));
mav.addObject("crackdownInfo", crackdownInfo);
return mav;
}
@PostMapping("/saveCrackdownInfo") @PostMapping("/saveCrackdownInfo")
public Integer saveCrackdownInfo(CrackdownInfo crackdownInfo){ public Integer saveCrackdownInfo(CrackdownInfo crackdownInfo){
return unlawfulFishingService.saveCrackdownInfo(crackdownInfo); return unlawfulFishingService.saveCrackdownInfo(crackdownInfo);
} }
@GetMapping("/cdiSelectModal") @PostMapping("/deleteCrackdownInfo")
public ModelAndView crackdownInfoSelectModal(@AuthenticationPrincipal UserInfo loginUser, CrackdownInfo params){ public void deleteCrackdownInfo(@RequestBody CrackdownInfo crackdownInfo){
ModelAndView mav = new ModelAndView("faStatistics/unlawfulFishing/crackdownInfo/cdiSelectModal"); unlawfulFishingService.deleteCrackdownInfo(crackdownInfo.getCdsKey());
List<CrackdownStatusDTO> csDTOList = new ArrayList<>(); }
mav.addObject("crackdownInfoList", csDTOList); @GetMapping("/cdiSelectModal")
public ModelAndView crackdownInfoSelectModal(@AuthenticationPrincipal UserInfo loginUser, UnlawfulFishingParam params){
ModelAndView mav = new ModelAndView("faStatistics/unlawfulFishing/crackdownInfo/cdiSelectModal");
params.setQueryInfo();
mav.addObject("crackdownInfoList", unlawfulFishingService.selectCrackdownInfoList(params));
params.setContentCnt(unlawfulFishingService.selectCrackdownInfoListCnt(params));
params.setPaginationInfo();
mav.addObject("searchParams", params); mav.addObject("searchParams", params);
return mav; return mav;
} }

View File

@ -2,10 +2,16 @@ package com.dbnt.faisp.main.faStatistics.unlawfulFishing.repository;
import com.dbnt.faisp.main.faStatistics.unlawfulFishing.model.crackdownStatus.CrackdownInfo; import com.dbnt.faisp.main.faStatistics.unlawfulFishing.model.crackdownStatus.CrackdownInfo;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import java.util.Optional; import java.util.Optional;
public interface CrackdownInfoRepository extends JpaRepository<CrackdownInfo, Integer> { public interface CrackdownInfoRepository extends JpaRepository<CrackdownInfo, Integer> {
Optional<CrackdownInfo> findByCdsKey(Integer cdsKey); Optional<CrackdownInfo> findByCdsKey(Integer cdsKey);
Optional<CrackdownInfo> findTop1ByCaseNum(String caseNum); Optional<CrackdownInfo> findTop1ByCaseNum(String caseNum);
@Modifying(clearAutomatically = true)
@Query("update CrackdownInfo set status = :status where cdsKey = :cdsKey")
void bulkModifyingByCdsKeyToStatus(Integer cdsKey, String status);
} }

View File

@ -13,7 +13,8 @@ import java.util.Optional;
public interface ViolationInfoRepository extends JpaRepository<ViolationInfo, ViolationInfo.ViolationInfoId> { public interface ViolationInfoRepository extends JpaRepository<ViolationInfo, ViolationInfo.ViolationInfoId> {
List<ViolationInfo> findByCdsKey(Integer cdsKey); List<ViolationInfo> findByCdsKey(Integer cdsKey);
Optional<ViolationInfo> findTopByCdsKeyOrderByViolationKeyDesc(int fbKey); Optional<ViolationInfo> findTopByCdsKeyOrderByViolationKeyDesc(int fbKey);
void deleteByCdsKey(Integer fbKey);
void deleteByCdsKey(Integer cdsKey);
@Transactional @Transactional
@Modifying @Modifying

View File

@ -104,6 +104,8 @@ public class UnlawfulFishingService {
@Transactional @Transactional
public Integer saveCrackdownInfo(CrackdownInfo crackdownInfo) { public Integer saveCrackdownInfo(CrackdownInfo crackdownInfo) {
Integer cdsKey = cdiRepository.save(crackdownInfo).getCdsKey(); Integer cdsKey = cdiRepository.save(crackdownInfo).getCdsKey();
viRepository.deleteByCdsKey(cdsKey);
List<ViolationInfo> violationInfoList = crackdownInfo.getViolationList(); List<ViolationInfo> violationInfoList = crackdownInfo.getViolationList();
int i=1; int i=1;
for(ViolationInfo violationInfo : violationInfoList){ for(ViolationInfo violationInfo : violationInfoList){
@ -132,7 +134,18 @@ public class UnlawfulFishingService {
} }
public CrackdownInfo selectCrackdownInfo(Integer cdsKey) { public CrackdownInfo selectCrackdownInfo(Integer cdsKey) {
return cdiRepository.findByCdsKey(cdsKey).orElse(new CrackdownInfo()); CrackdownInfo cdi = cdiRepository.findByCdsKey(cdsKey).orElse(new CrackdownInfo());
cdi.setViolationList(viRepository.findByCdsKey(cdsKey));
return cdi;
}
public List<CrackdownInfoHistory> selectCrackdownInfoHistoryList(Integer cdsKey) {
return cdihRepository.findByCdsKey(cdsKey);
}
@Transactional
public void deleteCrackdownInfo(Integer cdsKey) {
cdiRepository.bulkModifyingByCdsKeyToStatus(cdsKey, "DST008");
} }
public IllegalShipInfo selectIllegalShipInfo(Integer fbKey) { public IllegalShipInfo selectIllegalShipInfo(Integer fbKey) {
@ -153,4 +166,5 @@ public class UnlawfulFishingService {
public Integer selectCrackdownInfoListCnt(UnlawfulFishingParam params) { public Integer selectCrackdownInfoListCnt(UnlawfulFishingParam params) {
return unlawfulFishingMapper.selectCrackdownInfoListCnt(params); return unlawfulFishingMapper.selectCrackdownInfoListCnt(params);
} }
} }

View File

@ -10,6 +10,7 @@ import com.dbnt.faisp.main.fpiMgt.intelligenceNetwork.model.FireExtensionReport;
import com.dbnt.faisp.main.fpiMgt.intelligenceNetwork.model.FireExtensionReportApprv; import com.dbnt.faisp.main.fpiMgt.intelligenceNetwork.model.FireExtensionReportApprv;
import com.dbnt.faisp.main.fpiMgt.intelligenceNetwork.service.IntelligenceNetworkService; import com.dbnt.faisp.main.fpiMgt.intelligenceNetwork.service.IntelligenceNetworkService;
import com.dbnt.faisp.main.userInfo.model.UserInfo; import com.dbnt.faisp.main.userInfo.model.UserInfo;
import com.dbnt.faisp.util.Utils;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -416,6 +417,9 @@ public class IntelligenceNetworkController {
ModelAndView mav = new ModelAndView("igActivities/intelligenceNetwork/operationPlanListModal"); ModelAndView mav = new ModelAndView("igActivities/intelligenceNetwork/operationPlanListModal");
op.setFirstIndex(0); op.setFirstIndex(0);
op.setRowCnt(9999); op.setRowCnt(9999);
if(Utils.isEmpty(op.getWrtOrgan())){
op.setWrtOrgan(loginUser.getOgCd());
}
mav.addObject("operationPlanList", intelligenceNetworkService.selectOperationPlanList(op)); mav.addObject("operationPlanList", intelligenceNetworkService.selectOperationPlanList(op));
return mav; return mav;
} }

View File

@ -1,6 +1,6 @@
$(document).on('click', '#addCrackdownStatusBtn', function (){ $(document).on('click', '#addCrackdownStatusBtn', function (){
getCsEditModal(null); getCdiEditModal(null);
}) })
$(document).on('change', '#violationSelector', function (){ $(document).on('change', '#violationSelector', function (){
@ -48,21 +48,69 @@ $(document).on('click', '.saveEditInfoBtn', function (){
saveCrackdownInfo($(this).attr("data-status")); saveCrackdownInfo($(this).attr("data-status"));
}) })
function getCsEditModal(cdsKey){ $(document).on('click', '.cdiTr', function (){
getCdiViewModal($(this).attr('data-cdskey'));
})
$(document).on('click', '#cdiEditBtn', function (){
$("#cdiViewModal").modal('hide');
getCdiEditModal($("#fishingBoatViewTabPanel").find('.cdsKey').val());
})
$(document).on('click', '#cdiDeleteBtn', function (){
if(confirm("삭제하시겠습니까?\n되돌릴 수 없습니다.")) {
contentFade("in");
$.ajax({
type : 'POST',
data : JSON.stringify({cdsKey: $("#fishingBoatViewTabPanel").find('.cdsKey').val()}),
url : "/unlawfulFishing/deleteCrackdownInfo",
contentType: 'application/json',
beforeSend: function (xhr){
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
},
success : function(result) {
alert("삭제되었습니다.");
location.reload();
},
error : function(xhr, status) {
alert("삭제를 실패하였습니다.")
contentFade("out");
}
})
}
})
function getCdiEditModal(cdsKey){
$.ajax({ $.ajax({
url: '/unlawfulFishing/cdiEditModal', url: '/unlawfulFishing/cdiEditModal',
data: {cdsKey: cdsKey}, data: {cdsKey: cdsKey},
type: 'GET', type: 'GET',
dataType:"html", dataType:"html",
success: function(html){ success: function(html){
const contentDiv = $("#csEditModalContent"); const contentDiv = $("#cdiEditModalContent");
contentDiv.empty().append(html) contentDiv.empty().append(html)
$(".dateSelector").datepicker({ $(".dateSelector").datepicker({
format: "yyyy-mm-dd", format: "yyyy-mm-dd",
language: "ko", language: "ko",
autoclose: true autoclose: true
}); });
$("#csEditModal").modal('show'); $("#cdiEditModal").modal('show');
},
error:function(e){
ajaxErrorAction(e);
}
});
}
function getCdiViewModal(cdsKey){
$.ajax({
url: '/unlawfulFishing/cdiViewModal',
data: {cdsKey: cdsKey},
type: 'GET',
dataType:"html",
success: function(html){
$("#cdiViewModalContent").empty().append(html)
$("#cdiViewModal").modal('show');
}, },
error:function(e){ error:function(e){
ajaxErrorAction(e); ajaxErrorAction(e);

View File

@ -56,7 +56,7 @@ $(document).on('click', '#operationPlanModalBtn', function (){
$.ajax({ $.ajax({
url: '/intelligenceNetwork/operationPlanListModal', url: '/intelligenceNetwork/operationPlanListModal',
data: { data: {
wrtOrgan: $("#fireExtensionReportEditForm").find('.wrtOrgan').val()
}, },
type: 'GET', type: 'GET',
dataType:"html", dataType:"html",

View File

@ -6,133 +6,172 @@
</div> </div>
<div class="modal-body"> <div class="modal-body">
<div class="row mx-0"> <div class="row mx-0">
<div class="col-12 card bg-light text-center"> <div class="col-12">
<div class="card-body"> <form method="get" th:action="@{/faStatistics/crackdownInfo}" id="cdsSearchForm">
<form method="get" th:action="@{/faStatistics/crackdownInfo}" id="cdsSearchForm"> <input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}"> <div class="row justify-content-end py-1">
<div class="row justify-content-between py-1"> <div class="col-8">
<div class="col-auto"> <div class="row">
<div> <div class="col-11">
<select class="form-select form-select-sm" name="year"> <div class="row justify-content-end pb-1">
<option value="">연도</option> <div class="col-2">
<th:block th:each="year : ${yearList}"> <select class="form-select form-select-sm " id="caseAgency" name="caseAgency">
<option th:value="${year}" th:text="|${year}년|" th:selected="${searchParams.year eq year}"></option> <option value="">사건담당경찰서</option>
</th:block> <th:block th:each="code:${session.commonCode.get('OG')}">
</select> <option th:value="${code.itemCd}" th:text="${code.itemValue}"
</div> th:selected="${code.itemCd eq searchParams.caseAgency}"></option>
<div> </th:block>
<select class="form-select form-select-sm" name="month"> </select>
<option value="">월 선택</option>
<th:block th:each="month : ${#numbers.sequence(1, 12)}">
<option th:value="${month}" th:text="|${month}월|" th:selected="${searchParams.month eq month}"></option>
</th:block>
</select>
</div>
</div>
<div class="col-8">
<div class="row">
<div class="col-11">
<div class="row justify-content-end pb-1">
<div class="col-2">
<select class="form-select form-select-sm " id="caseAgency" name="caseAgency">
<option value="">사건담당경찰서</option>
<th:block th:each="code:${session.commonCode.get('OG')}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}"
th:selected="${code.itemCd eq searchParams.caseAgency}"></option>
</th:block>
</select>
</div>
<div class="col-2">
<input type="text" class="form-control form-control-sm" placeholder="사건담당경찰관">
</div>
<div class="col-2">
<select class="form-select form-select-sm" name="crackdownPolice" id="searchFormPolice">
<option value="">단속경찰서</option>
<th:block th:each="code:${session.commonCode.get('CPO')}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}"
th:selected="${code.itemCd eq searchParams.crackdownPolice}"></option>
</th:block>
</select>
</div>
<div class="col-2">
<select class="form-select form-select-sm" name="crackdownBoat" id="searchFormBoat" disabled>
<option value="">단속함정</option>
<th:block th:each="cpoNum:${#numbers.sequence(1, #lists.size(session.commonCode.get('CPO')))}">
<th:block th:each="code:${session.commonCode.get('CPO'+cpoNum)}">
<option th:class="${code.categoryCd}" th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq searchParams.crackdownBoat}" style="display: none;"></option>
</th:block>
</th:block>
</select>
</div>
</div> </div>
<div class="row justify-content-end pb-1"> <div class="col-2">
<div class="col-2"> <input type="text" class="form-control form-control-sm" placeholder="사건담당경찰관">
<input type="text" class="form-control form-control-sm" placeholder="사건번호"> </div>
</div> <div class="col-2">
<div class="col-2"> <select class="form-select form-select-sm" name="crackdownPolice" id="searchFormPolice">
<input type="text" class="form-control form-control-sm" placeholder="MMSI.NO"> <option value="">단속경찰서</option>
</div> <th:block th:each="code:${session.commonCode.get('CPO')}">
<div class="col-2"> <option th:value="${code.itemCd}" th:text="${code.itemValue}"
<input type="text" class="form-control form-control-sm" placeholder="나포장소"> th:selected="${code.itemCd eq searchParams.crackdownPolice}"></option>
</div> </th:block>
<div class="col-4"> </select>
<div class="input-group w-auto input-daterange" id="dateSelectorDiv"> </div>
<select class="form-select form-select-sm w-30" name="dateSelector"> <div class="col-2">
<option value="">조건선택</option> <select class="form-select form-select-sm" name="crackdownBoat" id="searchFormBoat" disabled>
<option value="napoDt" th:selected="${searchParams.dateSelector eq 'napoDt'}">나포일시</option> <option value="">단속함정</option>
<option value="wrtDt" th:selected="${searchParams.dateSelector eq 'wrtDt'}">작성일시</option> <th:block th:each="cpoNum:${#numbers.sequence(1, #lists.size(session.commonCode.get('CPO')))}">
</select> <th:block th:each="code:${session.commonCode.get('CPO'+cpoNum)}">
<input type="text" class="form-control form-control-sm w-35" id="startDate" name="startDate" placeholder="시작일" autocomplete="off" readonly th:value="${searchParams.startDate}"> <option th:class="${code.categoryCd}" th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq searchParams.crackdownBoat}" style="display: none;"></option>
<input type="text" class="form-control form-control-sm w-35" id="endDate" name="endDate" placeholder="종료일" autocomplete="off" readonly th:value="${searchParams.endDate}"> </th:block>
</div> </th:block>
</select>
</div>
</div>
<div class="row justify-content-end pb-1">
<div class="col-2">
<input type="text" class="form-control form-control-sm" placeholder="사건번호">
</div>
<div class="col-2">
<input type="text" class="form-control form-control-sm" placeholder="MMSI.NO">
</div>
<div class="col-2">
<input type="text" class="form-control form-control-sm" placeholder="나포장소">
</div>
<div class="col-4">
<div class="input-group w-auto input-daterange" id="dateSelectorDiv">
<select class="form-select form-select-sm w-30" name="dateSelector">
<option value="">조건선택</option>
<option value="napoDt" th:selected="${searchParams.dateSelector eq 'napoDt'}">나포일시</option>
<option value="wrtDt" th:selected="${searchParams.dateSelector eq 'wrtDt'}">작성일시</option>
</select>
<input type="text" class="form-control form-control-sm w-35" id="startDate" name="startDate" placeholder="시작일" autocomplete="off" readonly th:value="${searchParams.startDate}">
<input type="text" class="form-control form-control-sm w-35" id="endDate" name="endDate" placeholder="종료일" autocomplete="off" readonly th:value="${searchParams.endDate}">
</div> </div>
</div> </div>
</div> </div>
<div class="col-1 d-grid gap-2"> </div>
<input type="submit" class="btn btn-primary" id="searchBtn" value="검색"> <div class="col-1 d-grid gap-2">
</div> <input type="submit" class="btn btn-primary" id="searchBtn" value="검색">
</div> </div>
</div> </div>
</div> </div>
</form> </div>
<div class="card"> </form>
<div class="card-body"> <div class="card">
<div class="row"> <div class="card-body">
<div class="col-12 overflow-auto"> <div class="row">
<table class="table table-sm table-hover table-bordered text-nowrap" id="cdsTable"> <div class="col-12 overflow-auto">
<thead class="align-middle"> <table class="table table-sm table-hover table-bordered text-nowrap" id="cdsTable">
<tr class="table-secondary"> <thead class="align-middle">
<th>순번</th> <tr class="table-secondary">
<th>사건번호</th> <th>순번</th>
<th>MMSI.NO</th> <th>사건번호</th>
<th>나포일시</th> <th>MMSI.NO</th>
<th>나포장소</th> <th>나포일시</th>
<th>사건담당경찰서</th> <th>나포장소</th>
<th>사건담당경찰관</th> <th>사건담당경찰서</th>
<th>단속경찰서</th> <th>사건담당경찰관</th>
<th>단속함정</th> <th>단속경찰서</th>
<th>침범유형</th> <th>단속함정</th>
<th>NLL침범여부</th> <th>침범유형</th>
<th>압송여부</th> <th>NLL침범여부</th>
<th>작성자</th> <th>압송여부</th>
<th>작성일시</th> <th>작성자</th>
<th>작성일시</th>
</tr>
</thead>
<tbody class="table-group-divider align-middle">
<th:block th:each="cdi,cnt:${crackdownInfoList}">
<tr class="cdiTr" th:data-cdskey="${cdi.cdsKey}">
<td th:text="${searchParams.contentCnt-(20*(searchParams.pageIndex-1))-cnt.index}"></td>
<td th:text="${cdi.caseNum}"></td>
<td th:text="${cdi.mmsi}"></td>
<td th:text="${#temporals.format(cdi.napoDt, 'yyyy-MM-dd HH:mm')}"></td>
<td>
<div th:if="${!#strings.isEmpty(cdi.napoSeaPointLon) and !#strings.isEmpty(cdi.napoSeaPointLon)}" th:text="${#strings.concat(cdi.napoSeaPointLon, ' ~ ', cdi.napoSeaPointLat)}"></div>
<div th:if="${!#strings.isEmpty(cdi.napoSeaPointLon) or !#strings.isEmpty(cdi.napoSeaPointLon)}" th:text="${#strings.concat(cdi.napoSeaPointLon, cdi.napoSeaPointLat)}"></div>
<div th:text="${cdi.napoSeaPointDetail}"></div>
</td>
<td>
<th:block th:each="code:${session.commonCode.get('OG')}">
<th:block th:if="${code.itemCd eq cdi.caseAgency}" th:text="${code.itemValue}"></th:block>
</th:block>
</td>
<td th:text="${cdi.casePoliceOfficer}"></td>
<td>
<th:block th:each="code:${session.commonCode.get('CPO')}">
<th:block th:if="${code.itemCd eq cdi.crackdownPolice}" th:text="${code.itemValue}"></th:block>
</th:block>
</td>
<td>
<th:block th:each="code:${session.commonCode.get(cdi.crackdownPolice)}">
<th:block th:if="${code.itemCd eq cdi.crackdownBoat}" th:text="${code.itemValue}"></th:block>
</th:block>
</td>
<td>
<th:block th:each="code:${session.commonCode.get('IST')}">
<th:block th:if="${code.itemCd eq cdi.invasionType}" th:text="${code.itemValue}"></th:block>
</th:block>
</td>
<td th:text="${cdi.nll eq 'Y'?'O':'X'}"></td>
<td th:text="${cdi.fieldIvsgt eq 'C'?'압송':'현장조사'}"></td>
<td>
<th:block th:each="code:${session.commonCode.get('JT')}">
<th:block th:if="${code.itemCd eq cdi.wrtUserGrd}" th:text="${code.itemValue}"></th:block>
</th:block>
<th:block th:text="${cdi.wrtUserNm}"></th:block>
</td>
<td th:text="${#temporals.format(cdi.wrtDt, 'yyyy-MM-dd HH:mm')}"></td>
</tr> </tr>
</thead> </th:block>
<tbody class="table-group-divider align-middle"> </tbody>
<th:block th:each="dto,cnt:${crackdownInfoList}"> </table>
<tr class="crackdownStatusTr" th:data-cdskey="${dto.cdsKey}" data-modaltype="viewOnly"> </div>
<td th:text="${cnt.count}"></td> </div>
<td th:text="${#temporals.format(dto.napoDt, 'yyyy-MM-dd HH:mm')}"></td> <div class="row justify-content-center">
<td> <div class="col-auto">
<div th:if="${!#strings.isEmpty(dto.napoSeaPointLon) and !#strings.isEmpty(dto.napoSeaPointLon)}" th:text="${#strings.concat(dto.napoSeaPointLon, ' ~ ', dto.napoSeaPointLat)}"></div> <nav aria-label="Page navigation">
<div th:if="${!#strings.isEmpty(dto.napoSeaPointLon) or !#strings.isEmpty(dto.napoSeaPointLon)}" th:text="${#strings.concat(dto.napoSeaPointLon, dto.napoSeaPointLat)}"></div> <ul class="pagination mb-0">
<div th:text="${dto.napoSeaPointDetail}"></div> <th:block th:if="${searchParams.pageIndex>3}">
</td> <li class="page-item" th:data-pageindex="${(searchParams.pageIndex)-3}">
</tr> <a class="page-link" href="#" aria-label="Previous">
<span aria-hidden="true">&laquo;</span>
</a>
</li>
</th:block> </th:block>
</tbody> <th:block th:each="num : ${#numbers.sequence(searchParams.startNum, searchParams.endNum)}">
</table> <li class="page-item" th:data-pageindex="${num}" th:classappend="${searchParams.pageIndex eq num?'active':''}">
</div> <a class="page-link" href="#" th:text="${num}"></a>
</li>
</th:block>
<th:block th:if="${searchParams.maxNum>searchParams.endNum+2}">
<li class="page-item" th:data-pageindex="${(searchParams.pageIndex)+3}">
<a class="page-link" href="#" aria-label="Next">
<span aria-hidden="true">&raquo;</span>
</a>
</li>
</th:block>
</ul>
</nav>
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,7 +1,7 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org"> <html lang="ko" xmlns:th="http://www.thymeleaf.org">
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title text-white" id="fishingBoatEditModalLabel">불법조업 외국어선 상세정보</h5> <h5 class="modal-title text-white" id="fishingBoatEditModalLabel">불법조업 외국어선 단속현황</h5>
<button type="button" class="btn-close f-invert" data-bs-dismiss="modal" aria-label="Close"></button> <button type="button" class="btn-close f-invert" data-bs-dismiss="modal" aria-label="Close"></button>
</div> </div>
<div class="modal-body"> <div class="modal-body">
@ -9,52 +9,43 @@
<li class="nav-item" role="presentation"> <li class="nav-item" role="presentation">
<button class="nav-link active" id="fishingBoatViewTab" data-bs-toggle="tab" data-bs-target="#fishingBoatViewTabPanel" type="button" role="tab" aria-controls="fishingBoatViewTabPanel" aria-selected="true">최신버전</button> <button class="nav-link active" id="fishingBoatViewTab" data-bs-toggle="tab" data-bs-target="#fishingBoatViewTabPanel" type="button" role="tab" aria-controls="fishingBoatViewTabPanel" aria-selected="true">최신버전</button>
</li> </li>
<li class="nav-item" role="presentation" th:unless="${#lists.size(crackdownStatus.crackdownStatusVersionList) <= 1}"> <li class="nav-item" role="presentation" th:unless="${#lists.size(crackdownInfo.crackdownInfoHistoryList) <= 1}">
<button class="nav-link" id="fishingBoatVersionTab" data-bs-toggle="tab" data-bs-target="#fishingBoatVersionTabPanel" type="button" role="tab" aria-controls="fishingBoatHistoryTabPanel" aria-selected="false">수정이력</button> <button class="nav-link" id="fishingBoatVersionTab" data-bs-toggle="tab" data-bs-target="#fishingBoatVersionTabPanel" type="button" role="tab" aria-controls="fishingBoatHistoryTabPanel" aria-selected="false">수정이력</button>
</li> </li>
</ul> </ul>
<div class="tab-content bg-white border border-top-0"> <div class="tab-content bg-white border border-top-0">
<div class="tab-pane fade p-2 mx-2 show active" id="fishingBoatViewTabPanel" role="tabpanel" aria-labelledby="fishingBoatViewTab" tabindex="0"> <div class="tab-pane fade p-2 mx-2 show active" id="fishingBoatViewTabPanel" role="tabpanel" aria-labelledby="fishingBoatViewTab" tabindex="0">
<input type="hidden" class="cdsKey" th:value="${crackdownStatus.cdsKey}"> <input type="hidden" class="cdsKey" th:value="${crackdownInfo.cdsKey}">
<input type="hidden" class="fbKey" th:value="${crackdownStatus.fishingBoat.fbKey}"> <div class="row justify-content-end">
<div class="row py-2"> <div class="col-auto">
<div class="col-12"> <th:block th:text="|최종수정일: ${#temporals.format(crackdownInfo.wrtDt, 'yyyy-MM-dd HH:mm')}|"></th:block>
<div class="row justify-content-end"> </div>
<div class="col-auto"> </div>
<th:block th:text="|최종수정일: ${#temporals.format(crackdownStatus.fishingBoat.wrtDt, 'yyyy-MM-dd HH:mm')}|"></th:block> <div class="row justify-content-between">
</div> <div class="col-auto">■ 단속정보</div>
</div> <div class="col-auto">
<div class="row justify-content-between"> <th:block th:each="code:${session.commonCode.get('DST')}">
<div class="col-auto">■ 단속정보</div> <th:block th:if="${crackdownInfo.status eq code.itemCd}" th:text="|상태: ${code.itemValue}|"></th:block>
<div class="col-auto"> </th:block>
<th:block th:each="code:${session.commonCode.get('DST')}"> <th:block th:if="${#lists.size(crackdownInfo.crackdownInfoHistoryList) <= 1}">
<th:block th:if="${crackdownStatus.status eq code.itemCd}" th:text="|상태: ${code.itemValue}|"></th:block> (수정 이력 없음)
</th:block> </th:block>
<th:block th:if="${#lists.size(crackdownStatus.crackdownStatusVersionList) <= 1}"> <th:block th:unless="${#lists.size(crackdownInfo.crackdownInfoHistoryList) <= 1}">
(수정 이력 없음) <th:block th:text="${#strings.concat('(', #lists.size(crackdownInfo.crackdownInfoHistoryList), '차 수정본)') }"></th:block>
</th:block> </th:block>
<th:block th:unless="${#lists.size(crackdownStatus.crackdownStatusVersionList) <= 1}">
<th:block th:text="${#strings.concat('(', #lists.size(crackdownStatus.crackdownStatusVersionList), '차 수정본)') }"></th:block>
</th:block>
</div>
</div>
</div> </div>
</div> </div>
<div class="row border border-secondary"> <div class="row border border-secondary">
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">사건번호</label> <label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">사건번호</label>
<div class="col-sm-2 border-end border-secondary"> <div class="col-sm-2 border-end border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.caseNum}"> <input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownInfo.caseNum}">
</div>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">선명</label>
<div class="col-sm-2 border-end border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.fishingBoat.boatNameKr}">
</div> </div>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">위반사항</label> <label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">위반사항</label>
<div class="col-sm-5"> <div class="col-sm-8">
<div class="row"> <div class="row">
<th:block th:each="code:${vtList}"> <th:block th:each="violation:${crackdownInfo.violationList}">
<th:block th:each="violation:${crackdownStatus.violationList}"> <th:block th:each="code:${session.commonCode.get('VT')}">
<div class="col-6" th:if="${code.itemCd eq violation.violation}"> <div class="col-4" th:if="${code.itemCd eq violation.violation}">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${code.itemValue}"/> <input type="text" class="form-control form-control-sm border-0" readonly th:value="${code.itemValue}"/>
</div> </div>
</th:block> </th:block>
@ -63,66 +54,66 @@
</div> </div>
</div> </div>
<div class="row border border-secondary border-top-0"> <div class="row border border-secondary border-top-0">
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">사건담당경찰서</label> <label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center fs-11">사건담당경찰서</label>
<div class="col-sm-2 border-end border-secondary"> <div class="col-sm-2 border-end border-secondary">
<th:block th:each="code:${session.commonCode.get('OG')}"> <th:block th:each="code:${session.commonCode.get('OG')}">
<input type="text" class="form-control form-control-sm border-0" readonly th:if="${code.itemCd eq crackdownStatus.caseAgency}" th:value="${code.itemValue}"> <input type="text" class="form-control form-control-sm border-0" readonly th:if="${code.itemCd eq crackdownInfo.caseAgency}" th:value="${code.itemValue}">
</th:block> </th:block>
</div> </div>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center fs-11">사건담당경찰관</label> <label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center fs-11">사건담당경찰관</label>
<div class="col-sm-2 border-end border-secondary"> <div class="col-sm-2 border-end border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.casePoliceOfficer}"> <input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownInfo.casePoliceOfficer}">
</div> </div>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">단속경찰서</label> <label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">단속경찰서</label>
<div class="col-sm-2 border-end border-secondary"> <div class="col-sm-2 border-end border-secondary">
<th:block th:each="code:${cpoList}"> <th:block th:each="code:${cpoList}">
<input type="text" class="form-control form-control-sm border-0" readonly th:if="${code.itemCd eq crackdownStatus.crackdownPolice}" th:value="${code.itemValue}"> <input type="text" class="form-control form-control-sm border-0" readonly th:if="${code.itemCd eq crackdownInfo.crackdownPolice}" th:value="${code.itemValue}">
</th:block> </th:block>
</div> </div>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">단속함정</label> <label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">단속함정</label>
<div class="col-sm-2"> <div class="col-sm-2">
<th:block th:each="code:${boatList}"> <th:block th:each="code:${boatList}">
<input type="text" class="form-control form-control-sm border-0" readonly th:if="${code.itemCd eq crackdownStatus.crackdownBoat}" th:value="${code.itemValue}"> <input type="text" class="form-control form-control-sm border-0" readonly th:if="${code.itemCd eq crackdownInfo.crackdownBoat}" th:value="${code.itemValue}">
</th:block> </th:block>
</div> </div>
</div> </div>
<div class="row border border-secondary border-top-0"> <div class="row border border-secondary border-top-0">
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">MMSI.NO</label> <label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">MMSI.NO</label>
<div class="col-sm-2 border-end border-secondary"> <div class="col-sm-2 border-end border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.mmsi}"> <input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownInfo.mmsi}">
</div> </div>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">침범유형</label> <label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">침범유형</label>
<div class="col-sm-2 border-end border-secondary"> <div class="col-sm-2 border-end border-secondary">
<th:block th:each="code:${session.commonCode.get('IST')}"> <th:block th:each="code:${session.commonCode.get('IST')}">
<input type="text" class="form-control form-control-sm border-0" readonly th:if="${code.itemCd eq crackdownStatus.invasionType}" th:value="${code.itemValue}"> <input type="text" class="form-control form-control-sm border-0" readonly th:if="${code.itemCd eq crackdownInfo.invasionType}" th:value="${code.itemValue}">
</th:block> </th:block>
</div> </div>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">NLL</label> <label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">NLL</label>
<div class="col-sm-2 border-end border-secondary"> <div class="col-sm-2 border-end border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.nll eq 'Y'?'O':(crackdownStatus.nll eq 'N'?'X':crackdownStatus.nll)}"> <input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownInfo.nll eq 'Y'?'O':(crackdownInfo.nll eq 'N'?'X':crackdownInfo.nll)}">
</div> </div>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">압송/현장조사</label> <label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center fs-11">압송/현장조사</label>
<div class="col-sm-2"> <div class="col-sm-2">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.fieldIvsgt eq 'C'?'압송':(crackdownStatus.fieldIvsgt eq 'F'?'현장조사':crackdownStatus.fieldIvsgt)}"> <input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownInfo.fieldIvsgt eq 'C'?'압송':(crackdownInfo.fieldIvsgt eq 'F'?'현장조사':crackdownInfo.fieldIvsgt)}">
</div> </div>
</div> </div>
<div class="row border border-secondary border-top-0"> <div class="row border border-secondary border-top-0">
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">나포일시</label> <label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">나포일시</label>
<div class="col-sm-2 border-end border-secondary"> <div class="col-sm-2 border-end border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${#temporals.format(crackdownStatus.napoDt, 'yyyy-MM-dd hh:mm')}"> <input type="text" class="form-control form-control-sm border-0" readonly th:value="${#temporals.format(crackdownInfo.napoDt, 'yyyy-MM-dd hh:mm')}">
</div> </div>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">나포장소</label> <label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">나포장소</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="|${crackdownStatus.napoSeaPointLon} ${crackdownStatus.napoSeaPointLat} ${crackdownStatus.napoSeaPointDetail}|"> <input type="text" class="form-control form-control-sm border-0" readonly th:value="|${crackdownInfo.napoSeaPointLon} ${crackdownInfo.napoSeaPointLat} ${crackdownInfo.napoSeaPointDetail}|">
</div> </div>
</div> </div>
<th:block th:with="damageFlag=${crackdownStatus.obstrExspdCnt ne 0 || <th:block th:with="damageFlag=${(crackdownInfo.obstrExspdCnt ne null and crackdownInfo.obstrExspdCnt ne 0) ||
crackdownStatus.personDamageCnt ne 0 || (crackdownInfo.personDamageCnt ne null and crackdownInfo.personDamageCnt ne 0 )||
crackdownStatus.personDamageAmount ne 0 || (crackdownInfo.personDamageAmount ne null and crackdownInfo.personDamageAmount ne 0) ||
crackdownStatus.personDamageDetail ne null || !#strings.isEmpty(crackdownInfo.personDamageDetail) ||
crackdownStatus.materialDamageCnt ne 0 || (crackdownInfo.materialDamageCnt ne null and crackdownInfo.materialDamageCnt ne 0) ||
crackdownStatus.materialDamageAmount ne 0 || (crackdownInfo.materialDamageAmount ne null and crackdownInfo.materialDamageAmount ne 0) ||
crackdownStatus.materialDamageDetail ne null}"> !#strings.isEmpty(crackdownInfo.materialDamageDetail)}">
<th:block th:if="${damageFlag}"> <th:block th:if="${damageFlag}">
<div class="row border border-secondary border-top-0"> <div class="row border border-secondary border-top-0">
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center bg-lightB2">특수공무집행방해</label> <label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center bg-lightB2">특수공무집행방해</label>
@ -133,20 +124,20 @@
<div class="row border-bottom border-secondary"> <div class="row border-bottom border-secondary">
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">발생건수</label> <label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">발생건수</label>
<label class="col-sm-2 col-form-label col-form-label-sm py-2 border-end border-secondary text-start"> <label class="col-sm-2 col-form-label col-form-label-sm py-2 border-end border-secondary text-start">
<th:block th:if="${crackdownStatus.obstrExspdCnt>0}" th:text="|${crackdownStatus.obstrExspdCnt}건|"></th:block> <th:block th:if="${crackdownInfo.obstrExspdCnt>0}" th:text="|${crackdownInfo.obstrExspdCnt}건|"></th:block>
</label> </label>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">피해인원</label> <label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">피해인원</label>
<label class="col-sm-2 col-form-label col-form-label-sm py-2 border-end border-secondary text-start"> <label class="col-sm-2 col-form-label col-form-label-sm py-2 border-end border-secondary text-start">
<th:block th:if="${crackdownStatus.personDamageCnt>0}" th:text="|${crackdownStatus.personDamageCnt}인|"></th:block> <th:block th:if="${crackdownInfo.personDamageCnt>0}" th:text="|${crackdownInfo.personDamageCnt}인|"></th:block>
</label> </label>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">피해액</label> <label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">피해액</label>
<label class="col-sm-2 col-form-label col-form-label-sm py-2 border-end border-secondary text-start"> <label class="col-sm-2 col-form-label col-form-label-sm py-2 border-end border-secondary text-start">
<th:block th:if="${crackdownStatus.personDamageAmount>0}" th:text="|${crackdownStatus.personDamageAmount}만원|"></th:block> <th:block th:if="${crackdownInfo.personDamageAmount>0}" th:text="|${crackdownInfo.personDamageAmount}만원|"></th:block>
</label> </label>
</div> </div>
<div class="row"> <div class="row">
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">상세내용</label> <label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">상세내용</label>
<div class="col-sm-11" th:utext="${crackdownStatus.personDamageDetail}"> <div class="col-sm-11" th:utext="${crackdownInfo.personDamageDetail}">
</div> </div>
</div> </div>
</div> </div>
@ -157,16 +148,16 @@
<div class="row border-bottom border-secondary"> <div class="row border-bottom border-secondary">
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">발생건수</label> <label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">발생건수</label>
<label class="col-sm-2 col-form-label col-form-label-sm py-2 border-end border-secondary text-start"> <label class="col-sm-2 col-form-label col-form-label-sm py-2 border-end border-secondary text-start">
<th:block th:if="${crackdownStatus.materialDamageCnt>0}" th:text="|${crackdownStatus.materialDamageCnt}건|"></th:block> <th:block th:if="${crackdownInfo.materialDamageCnt>0}" th:text="|${crackdownInfo.materialDamageCnt}건|"></th:block>
</label> </label>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">피해액</label> <label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">피해액</label>
<label class="col-sm-2 col-form-label col-form-label-sm py-2 border-end border-secondary text-start"> <label class="col-sm-2 col-form-label col-form-label-sm py-2 border-end border-secondary text-start">
<th:block th:if="${crackdownStatus.materialDamageAmount>0}" th:text="|${crackdownStatus.materialDamageAmount}만원|"></th:block> <th:block th:if="${crackdownInfo.materialDamageAmount>0}" th:text="|${crackdownInfo.materialDamageAmount}만원|"></th:block>
</label> </label>
</div> </div>
<div class="row"> <div class="row">
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">상세내용</label> <label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">상세내용</label>
<div class="col-sm-11" th:utext="${crackdownStatus.materialDamageDetail}"> <div class="col-sm-11" th:utext="${crackdownInfo.materialDamageDetail}">
</div> </div>
</div> </div>
</div> </div>
@ -175,8 +166,8 @@
</div> </div>
</th:block> </th:block>
</th:block> </th:block>
<th:block th:with="catchFlag=${crackdownStatus.fishingBoat.catchFishSpecies ne null || <th:block th:with="catchFlag=${crackdownInfo.catchFishSpecies ne null ||
crackdownStatus.fishingBoat.catchCnt ne 0}"> crackdownInfo.catchCnt ne 0}">
<th:block th:if="${catchFlag}"> <th:block th:if="${catchFlag}">
<div class="row border border-secondary border-top-0"> <div class="row border border-secondary border-top-0">
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center bg-lightB1">어획물축소기재</label> <label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center bg-lightB1">어획물축소기재</label>
@ -184,373 +175,16 @@
<div class="row"> <div class="row">
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">어종</label> <label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">어종</label>
<label class="col-sm-2 col-form-label col-form-label-sm py-2 border-end border-secondary text-start" <label class="col-sm-2 col-form-label col-form-label-sm py-2 border-end border-secondary text-start"
th:text="${crackdownStatus.fishingBoat.catchFishSpecies}"></label> th:text="${crackdownInfo.catchFishSpecies}"></label>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">수량</label> <label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">수량</label>
<label class="col-sm-2 col-form-label col-form-label-sm py-2 border-end border-secondary text-start"> <label class="col-sm-2 col-form-label col-form-label-sm py-2 border-end border-secondary text-start">
<th:block th:if="${crackdownStatus.fishingBoat.catchCnt>0}" th:text="|${crackdownStatus.fishingBoat.catchCnt}kg|"></th:block> <th:block th:if="${crackdownInfo.catchCnt>0}" th:text="|${crackdownInfo.catchCnt}kg|"></th:block>
</label> </label>
</div> </div>
</div> </div>
</div> </div>
</th:block> </th:block>
</th:block> </th:block>
<th:block th:if="${!#lists.isEmpty(crackdownStatus.sailorList)}">
<div class="row py-2">
<div class="col-auto">■ 선장·선주 정보</div>
</div>
<div class="row">
<th:block th:each="sailor:${crackdownStatus.sailorList}">
<th:block th:if="${sailor.position eq 'POS001'}">
<div class="col-6" id="captainDiv">
<div class="row border border-secondary">
<label class="col-sm-2 fw-bold bg-label border-end border-secondary col-form-label col-form-label-sm py-2 border-end border-secondary text-center">선장명</label>
<div class="col-sm-8">
<div class="input-group w-auto">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${sailor.sailorNameKr}">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${sailor.sailorNameCn}">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${sailor.sailorNamePinyin}">
</div>
<th:block th:unless="${#lists.isEmpty(sailor.fileList)}">
<div id="fileDownloadDiv" class="d-none">
<div class="row justify-content-end">
<div class="col-auto">
<th:block th:each="file:${sailor.fileList}">
<a href="#" class="fileDownLink" data-board="sailor"
th:data-parentkey="${file.sailorKey}" th:data-fileseq="${file.fileSeq}" th:text="|${file.origNm}.${file.fileExtn}|"></a>
<br>
</th:block>
</div>
</div>
</div>
</th:block>
</div>
<div class="col-sm-2">
<th:block th:if="${#lists.isEmpty(sailor.fileList)}">
<div>사진 없음</div>
</th:block>
<th:block th:unless="${#lists.isEmpty(sailor.fileList)}">
<img id="captainPhoto" class="w-100" alt="선장 사진" th:src="|/file/fileDisplay?board=sailor&parentKey=${sailor.sailorKey}&fileSeq=1|">
</th:block>
</div>
</div>
<div class="row border border-secondary border-top-0">
<label class="col-sm-2 fw-bold bg-label border-end border-secondary col-form-label col-form-label-sm py-2 border-end border-secondary text-center">생년월일</label>
<div class="col-sm-4 border-end border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${sailor.birthdate}">
</div>
<label class="col-sm-2 fw-bold bg-label border-end border-secondary col-form-label col-form-label-sm py-2 border-end border-secondary text-center">연락처</label>
<div class="col-sm-4">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${sailor.sailorContact}">
</div>
</div>
<div class="row border border-secondary border-top-0">
<label class="col-sm-2 fw-bold bg-label border-end border-secondary col-form-label col-form-label-sm py-2 border-end border-secondary text-center">주소</label>
<div class="col-sm-4 border-end border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${sailor.residence}">
</div>
<label class="col-sm-2 fw-bold bg-label border-end border-secondary col-form-label col-form-label-sm py-2 border-end border-secondary text-center">재범횟수</label>
<div class="col-sm-4">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${sailor.arrestHistory}">
</div>
</div>
<div class="row border border-secondary border-top-0">
<label class="col-sm-2 fw-bold bg-label border-end border-secondary col-form-label col-form-label-sm py-2 border-end border-secondary text-center">비고</label>
<div class="col-sm-10">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${sailor.note}">
</div>
</div>
</div>
</th:block>
</th:block>
<th:block th:each="sailor:${crackdownStatus.sailorList}">
<th:block th:if="${sailor.position eq 'POS004'}">
<div class="col-6" id="shipOwnerDiv">
<div class="row border border-secondary border-start-0">
<label class="col-sm-2 fw-bold bg-label border-end border-secondary col-form-label col-form-label-sm py-2 border-end border-secondary text-center">선주명</label>
<div class="col-sm-10">
<div class="input-group w-auto">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${sailor.sailorNameKr}">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${sailor.sailorNameCn}">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${sailor.sailorNamePinyin}">
</div>
</div>
</div>
<div class="row border border-secondary border-start-0 border-top-0">
<label class="col-sm-2 fw-bold bg-label border-end border-secondary col-form-label col-form-label-sm py-2 border-end border-secondary text-center">생년월일</label>
<div class="col-sm-4 border-end border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${sailor.birthdate}">
</div>
<label class="col-sm-2 fw-bold bg-label border-end border-secondary col-form-label col-form-label-sm py-2 border-end border-secondary text-center">연락처</label>
<div class="col-sm-4">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${sailor.sailorContact}">
</div>
</div>
<div class="row border border-secondary border-start-0 border-top-0">
<label class="col-sm-2 fw-bold bg-label border-end border-secondary col-form-label col-form-label-sm py-2 border-end border-secondary text-center">주소</label>
<div class="col-sm-4">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${sailor.residence}">
</div>
</div>
<div class="row border border-secondary border-start-0 border-top-0">
<label class="col-sm-2 fw-bold bg-label border-end border-secondary col-form-label col-form-label-sm py-2 border-end border-secondary text-center">비고</label>
<div class="col-sm-10">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${sailor.note}">
</div>
</div>
</div>
</th:block>
</th:block>
</div>
</th:block>
<div class="row py-2">
<div class="col-auto">■ 어선 정보</div>
</div>
<div class="row border border-secondary">
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">선명</label>
<div class="col-sm-5 border-end border-secondary">
<div class="input-group w-auto">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.fishingBoat.boatNameKr}">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.fishingBoat.boatNameCn}">
</div>
</div>
</div>
<div class="row border border-secondary border-top-0">
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">허가번호</label>
<div class="col-sm-2 border-end border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.fishingBoat.permitNum}">
</div>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">국적</label>
<div class="col-sm-2 border-end border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.fishingBoat.nationality}">
</div>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">승선원</label>
<div class="col-sm-2 border-end border-secondary" th:if="${crackdownStatus.fishingBoat.sailorCnt>0}">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="|${crackdownStatus.fishingBoat.sailorCnt}인|">
</div>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">톤수</label>
<div class="col-sm-2" th:if="${crackdownStatus.fishingBoat.tonCnt>0}">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="|${crackdownStatus.fishingBoat.tonCnt}t|">
</div>
</div>
<div class="row border border-secondary border-top-0">
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">선종</label>
<div class="col-sm-2 border-end border-secondary">
<th:block th:each="code:${ftList}">
<input type="text" class="form-control form-control-sm border-0" readonly th:if="${code.itemCd eq crackdownStatus.fishingBoat.fisheryType}" th:value="${code.itemValue}">
</th:block>
</div>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">선질</label>
<div class="col-sm-2 border-end border-secondary">
<th:block th:each="code:${bmList}">
<input type="text" class="form-control form-control-sm border-0" readonly th:if="${code.itemCd eq crackdownStatus.fishingBoat.boatMaterial}" th:value="${code.itemValue}">
</th:block>
</div>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">선적지</label>
<div class="col-sm-2 border-end border-secondary">
<div class="input-group w-auto">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.fishingBoat.boatNnySung}">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.fishingBoat.boatNnySi}">
</div>
</div>
</div>
<div class="row border border-secondary border-top-0">
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">범칙물</label>
<label class="col-sm-2 col-form-label col-form-label-sm py-2 border-end border-secondary text-start">
<th:block th:if="${crackdownStatus.fishingBoat.offenseType ne null}" th:text="${crackdownStatus.fishingBoat.offenseType}"></th:block>
<th:block th:if="${crackdownStatus.fishingBoat.offenseWeight>0}" th:text="|${crackdownStatus.fishingBoat.offenseWeight}kg|"></th:block>
</label>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">범칙물 폐기량</label>
<label class="col-sm-2 col-form-label col-form-label-sm py-2 border-end border-secondary text-start">
<th:block th:if="${crackdownStatus.fishingBoat.offenseIllegalWasteQuantity>0}" th:text="|${crackdownStatus.fishingBoat.offenseIllegalWasteQuantity}kg|"></th:block>
</label>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">범칙물 위판량</label>
<label class="col-sm-2 col-form-label col-form-label-sm py-2 border-end border-secondary text-start">
<th:block th:if="${crackdownStatus.fishingBoat.offenseQuantity>0}" th:text="|${crackdownStatus.fishingBoat.offenseQuantity}kg|"></th:block>
</label>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center fs-11">범칙물 위판금액</label>
<label class="col-sm-2 col-form-label col-form-label-sm py-2 border-end border-secondary text-start">
<th:block th:if="${crackdownStatus.fishingBoat.offenseAmount>0}" th:text="|${crackdownStatus.fishingBoat.offenseAmount}만원|"></th:block>
</label>
</div>
<div class="row border border-secondary border-top-0">
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">담보금 미납액</label>
<label class="col-sm-2 col-form-label col-form-label-sm py-2 border-end border-secondary text-start">
<th:block th:if="${crackdownStatus.fishingBoat.damboUnpaidAmount>0}" th:text="|${crackdownStatus.fishingBoat.damboUnpaidAmount}만원|"></th:block>
</label>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">담보금 납부액</label>
<label class="col-sm-2 col-form-label col-form-label-sm py-2 border-end border-secondary text-start">
<th:block th:if="${crackdownStatus.fishingBoat.damboPayment>0}" th:text="|${crackdownStatus.fishingBoat.damboPayment}만원|"></th:block>
</label>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center fs-11">담보금 납부일시</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.fishingBoat.paymentPaymentDt}">
</div>
</div>
<div class="row border border-secondary border-top-0">
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">압수어구</label>
<label class="col-sm-11 col-form-label col-form-label-sm py-2 text-start">
<th:block th:if="${!#strings.isEmpty(crackdownStatus.fishingBoat.confiscationFrame)}" th:text="|틀: ${crackdownStatus.fishingBoat.confiscationFrame}|"></th:block>
<th:block th:if="${!#strings.isEmpty(crackdownStatus.fishingBoat.confiscationWidth)}" th:text="|폭: ${crackdownStatus.fishingBoat.confiscationWidth}|"></th:block>
<th:block th:if="${!#strings.isEmpty(crackdownStatus.fishingBoat.confiscationJo)}" th:text="|조: ${crackdownStatus.fishingBoat.confiscationJo}|"></th:block>
<th:block th:if="${!#strings.isEmpty(crackdownStatus.fishingBoat.confiscationGae)}" th:text="|개: ${crackdownStatus.fishingBoat.confiscationGae}|"></th:block>
<th:block th:if="${!#strings.isEmpty(crackdownStatus.fishingBoat.confiscationEtc)}" th:text="|기타: ${crackdownStatus.fishingBoat.confiscationEtc}|"></th:block>
</label>
</div>
<div class="row py-2">
<div class="col-auto">■ 처리 결과</div>
</div>
<div class="row border border-secondary">
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">처리현황</label>
<div class="col-sm-2 border-end border-secondary">
<th:block th:each="code:${prList}">
<input type="text" class="form-control form-control-sm border-0" readonly th:if="${code.itemCd eq crackdownStatus.processResult.processStatus}" th:value="${code.itemValue}">
</th:block>
</div>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">수사중지 여부</label>
<div class="col-sm-2 border-end border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.processResult.isIvsgtStop eq 'Y'?'중지':(crackdownStatus.processResult.isIvsgtStop eq 'N'?'수사중':crackdownStatus.processResult.isIvsgtStop)}">
</div>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">선고법원</label>
<label class="col-sm-2 col-form-label col-form-label-sm py-2 border-end border-secondary text-start" th:text="${crackdownStatus.processResult.sentencingCourt}"></label>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">선고내용</label>
<label class="col-sm-2 col-form-label col-form-label-sm py-2 text-start" th:text="${crackdownStatus.processResult.sentencingDetail}"></label>
</div>
<div class="row border border-secondary border-top-0">
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">압송소요시간</label>
<div class="col-sm-2 border-end border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.processResult.pressurizedTimeTaken}">
</div>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">압송거리</label>
<label class="col-sm-2 col-form-label col-form-label-sm py-2 border-end border-secondary text-start">
<th:block th:if="${!#strings.isEmpty(crackdownStatus.distance)}" th:text="|${crackdownStatus.distance}해리|"></th:block>
</label>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center fs-10">영장청구 소요시간</label>
<div class="col-sm-2 border-end border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.processResult.warrantReqTakeTime}">
</div>
</div>
<div class="row border border-secondary border-top-0">
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">나포일시</label>
<div class="col-sm-2 border-end border-secondary">
<input type="text" class="form-control form-control-sm border-0" id="napoDt" readonly th:value="${#temporals.format(crackdownStatus.napoDt, 'yyyy-MM-dd hh:mm')}">
</div>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">석방일시</label>
<div class="col-sm-2 border-end border-secondary">
<input type="text" class="form-control form-control-sm border-0" id="releaseDt" readonly th:value="${#temporals.format(crackdownStatus.processResult.releaseDt, 'yyyy-MM-dd hh:mm')}">
</div>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">소요시간</label>
<div class="col-sm-2 border-end border-secondary">
<input type="text" class="form-control form-control-sm border-0" id="releaseToNapo" readonly>
</div>
</div>
<div class="row border border-secondary border-top-0">
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">위탁시작일</label>
<div class="col-sm-2 border-end border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.processResult.consignmentStartDt}">
</div>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">위탁종료일</label>
<div class="col-sm-2 border-end border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.processResult.consignmentEndDt}">
</div>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">퇴거일</label>
<div class="col-sm-2 border-end border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.processResult.evictionDt}">
</div>
</div>
<div class="row border border-secondary border-top-0">
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">직접인계일</label>
<div class="col-sm-2 border-end border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.processResult.directHandoverDt}">
</div>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">인계 해점</label>
<div class="col-sm-2 border-end border-secondary">
<div class="input-group w-auto">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.processResult.handoverSeaPointLon}">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.processResult.handoverSeaPointLat}">
</div>
</div>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">인계 함정</label>
<div class="col-sm-2 border-end border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.processResult.handoverBoat}">
</div>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">중측 인수함정</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.processResult.middleTakeoverBoat}">
</div>
</div>
<div class="row border border-secondary border-top-0">
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">몰수확정일</label>
<div class="col-sm-2 border-end border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.processResult.confiscationDt}">
</div>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">폐선일</label>
<div class="col-sm-2 border-end border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.processResult.boatDisposalDt}">
</div>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">폐선종류</label>
<div class="col-sm-2 border-end border-secondary">
<th:block th:each="code:${bdtList}">
<input type="text" class="form-control form-control-sm border-0" readonly th:if="${code.itemCd eq crackdownStatus.processResult.boatDisposalType}" th:value="${code.itemValue}">
</th:block>
</div>
</div>
<div class="row border border-secondary border-top-0">
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">침몰일</label>
<div class="col-sm-2 border-end border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.processResult.exileDt}">
</div>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">환부일</label>
<div class="col-sm-2 border-end border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.processResult.returnDt}">
</div>
</div>
<div class="row border border-secondary border-top-0">
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">선장구속</label>
<div class="col-sm-2 border-end border-secondary">
<th:block th:each="sailor:${crackdownStatus.sailorList}">
<th:block th:if="${sailor.position eq 'POS001'}">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${sailor.isRestriction eq 'Y'?'구속':'불구속'}">
</th:block>
</th:block>
</div>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">항해장구속</label>
<div class="col-sm-2 border-end border-secondary">
<th:block th:each="sailor:${crackdownStatus.sailorList}">
<th:block th:if="${sailor.position eq 'POS002'}">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${sailor.isRestriction eq 'Y'?'구속':'불구속'}">
</th:block>
</th:block>
</div>
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">기관장구속</label>
<div class="col-sm-2 border-end border-secondary">
<th:block th:each="sailor:${crackdownStatus.sailorList}">
<th:block th:if="${sailor.position eq 'POS003'}">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${sailor.isRestriction eq 'Y'?'구속':'불구속'}">
</th:block>
</th:block>
</div>
</div>
<div class="row border border-secondary border-top-0">
<label class="col-sm-1 col-form-label col-form-label-sm fw-bold bg-label py-2 border-end border-secondary text-center">선원구속</label>
<div class="col-sm-11">
<div class="row">
<th:block th:each="sailor:${crackdownStatus.sailorList}">
<th:block th:if="${sailor.position eq 'POS005' or sailor.position eq 'POS006'}">
<div class="col-4">
<div class="row mt-2">
<label class="col-sm-auto col-form-label col-form-label-sm fw-bold text-end">직책: </label>
<label class="col-sm-auto col-form-label col-form-label-sm text-start" th:text="${sailor.position eq 'POS005'?'기타 간부선원':'일반선원 또는 확인불가'}"></label>
<label class="col-sm-auto col-form-label col-form-label-sm fw-bold text-end">구속여부: </label>
<label class="col-sm-auto col-form-label col-form-label-sm text-start" th:text="${sailor.isRestriction eq 'Y'?'구속':'불구속'}"></label>
<label class="col-sm-auto col-form-label col-form-label-sm fw-bold text-end">이름: </label>
<label class="col-sm-auto col-form-label col-form-label-sm text-start" th:text="${sailor.sailorNameKr}"></label>
</div>
</div>
</th:block>
</th:block>
</div>
</div>
</div>
</div> </div>
<div class="tab-pane fade p-2 mx-2" id="fishingBoatVersionTabPanel" role="tabpanel" aria-labelledby="fishingBoatVersionTab" tabindex="0"> <div class="tab-pane fade p-2 mx-2" id="fishingBoatVersionTabPanel" role="tabpanel" aria-labelledby="fishingBoatVersionTab" tabindex="0">
<div class="row"> <div class="row">
@ -564,7 +198,7 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr class="versionInfoTr" th:each="versionInfo:${crackdownStatus.crackdownStatusVersionList}"> <tr class="versionInfoTr" th:each="versionInfo:${crackdownInfo.crackdownInfoHistoryList}">
<input type="hidden" class="cdsKey" th:value="${versionInfo.cdsKey}"> <input type="hidden" class="cdsKey" th:value="${versionInfo.cdsKey}">
<input type="hidden" class="versionNo" th:value="${versionInfo.versionNo}"> <input type="hidden" class="versionNo" th:value="${versionInfo.versionNo}">
<td><input type="checkbox" class="versionInfoChkbox"></td> <td><input type="checkbox" class="versionInfoChkbox"></td>
@ -591,15 +225,15 @@
</div> </div>
</div> </div>
<th:block th:if="${modalType ne 'viewOnly'}"> <th:block th:if="${modalType ne 'viewOnly'}">
<th:block th:if="${userSeq eq crackdownStatus.fishingBoat.wrtUserSeq <th:block th:if="${userSeq eq crackdownInfo.wrtUserSeq
or (accessAuth eq 'ACC003' and #lists.contains(mgtOrganList, crackdownStatus.fishingBoat.wrtOrgan))}"> or (accessAuth eq 'ACC003' and #lists.contains(mgtOrganList, crackdownInfo.wrtOrgan))}">
<!--작성자, 관리자일 경우 수정, 삭제 허용--> <!--작성자, 관리자일 경우 수정, 삭제 허용-->
<div class="modal-footer justify-content-between bg-light"> <div class="modal-footer justify-content-between bg-light">
<div class="col-auto"> <div class="col-auto">
<button type="button" class="btn btn-danger" id="deleteFishingBoatBtn">삭제</button> <button type="button" class="btn btn-danger" id="cdiDeleteBtn">삭제</button>
</div> </div>
<div class="col-auto"> <div class="col-auto">
<button type="button" class="btn btn-warning" id="editFishingBoatBtn">수정</button> <button type="button" class="btn btn-warning" id="cdiEditBtn">수정</button>
</div> </div>
</div> </div>
</th:block> </th:block>

View File

@ -119,7 +119,7 @@
</thead> </thead>
<tbody class="table-group-divider align-middle"> <tbody class="table-group-divider align-middle">
<th:block th:each="cdi,cnt:${crackdownInfoList}"> <th:block th:each="cdi,cnt:${crackdownInfoList}">
<tr class="crackdownStatusTr" th:data-cdskey="${cdi.cdsKey}"> <tr class="cdiTr" th:data-cdskey="${cdi.cdsKey}">
<td th:text="${searchParams.contentCnt-(20*(searchParams.pageIndex-1))-cnt.index}"></td> <td th:text="${searchParams.contentCnt-(20*(searchParams.pageIndex-1))-cnt.index}"></td>
<td th:text="${cdi.caseNum}"></td> <td th:text="${cdi.caseNum}"></td>
<td th:text="${cdi.mmsi}"></td> <td th:text="${cdi.mmsi}"></td>
@ -169,6 +169,31 @@
<div class="col-auto"> <div class="col-auto">
<button class="btn btn-success" id="cdsDownExcel">엑셀 다운로드</button> <button class="btn btn-success" id="cdsDownExcel">엑셀 다운로드</button>
</div> </div>
<div class="col-auto">
<nav aria-label="Page navigation">
<ul class="pagination mb-0">
<th:block th:if="${searchParams.pageIndex>3}">
<li class="page-item" th:data-pageindex="${(searchParams.pageIndex)-3}">
<a class="page-link" href="#" aria-label="Previous">
<span aria-hidden="true">&laquo;</span>
</a>
</li>
</th:block>
<th:block th:each="num : ${#numbers.sequence(searchParams.startNum, searchParams.endNum)}">
<li class="page-item" th:data-pageindex="${num}" th:classappend="${searchParams.pageIndex eq num?'active':''}">
<a class="page-link" href="#" th:text="${num}"></a>
</li>
</th:block>
<th:block th:if="${searchParams.maxNum>searchParams.endNum+2}">
<li class="page-item" th:data-pageindex="${(searchParams.pageIndex)+3}">
<a class="page-link" href="#" aria-label="Next">
<span aria-hidden="true">&raquo;</span>
</a>
</li>
</th:block>
</ul>
</nav>
</div>
<div class="col-auto"> <div class="col-auto">
<button class="btn btn-primary" id="addCrackdownStatusBtn">등록</button> <button class="btn btn-primary" id="addCrackdownStatusBtn">등록</button>
</div> </div>
@ -178,16 +203,16 @@
</div> </div>
</div> </div>
</div> </div>
<div class="modal fade" id="csEditModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="csEditModalLabel" aria-hidden="true"> <div class="modal fade" id="cdiEditModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="cdiEditModalLabel" aria-hidden="true">
<div class="modal-dialog modal-xxl modal-dialog-scrollable"> <div class="modal-dialog modal-xxl modal-dialog-scrollable">
<div class="modal-content" id="csEditModalContent"> <div class="modal-content" id="cdiEditModalContent">
</div> </div>
</div> </div>
</div> </div>
<div class="modal fade" id="csViewModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="csViewModalLabel" aria-hidden="true"> <div class="modal fade" id="cdiViewModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="cdiViewModalLabel" aria-hidden="true">
<div class="modal-dialog modal-xxl modal-dialog-scrollable"> <div class="modal-dialog modal-xl modal-dialog-scrollable">
<div class="modal-content" id="csViewModalContent"> <div class="modal-content" id="cdiViewModalContent">
</div> </div>
</div> </div>

View File

@ -10,7 +10,7 @@
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/> <input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
<input type="hidden" name="opKey" th:value="${fer.opKey}"> <input type="hidden" name="opKey" th:value="${fer.opKey}">
<input type="hidden" name="ferKey" th:value="${fer.ferKey}"> <input type="hidden" name="ferKey" th:value="${fer.ferKey}">
<input type="hidden" name="wrtOrgan" th:value="${fer.wrtOrgan}"> <input type="hidden" class="wrtOrgan" name="wrtOrgan" th:value="${fer.wrtOrgan}">
<input type="hidden" name="wrtPart" th:value="${fer.wrtPart}"> <input type="hidden" name="wrtPart" th:value="${fer.wrtPart}">
<input type="hidden" name="wrtUserSeq" th:value="${fer.wrtUserSeq}"> <input type="hidden" name="wrtUserSeq" th:value="${fer.wrtUserSeq}">
<input type="hidden" name="wrtUserGrd" th:value="${fer.wrtUserGrd}"> <input type="hidden" name="wrtUserGrd" th:value="${fer.wrtUserGrd}">