강석 최 2023-01-09 18:46:16 +09:00
commit dc05119c50
9 changed files with 1094 additions and 0 deletions

View File

@ -0,0 +1,64 @@
package com.dbnt.faisp.main.faStatistics.crackdownsStatus;
import com.dbnt.faisp.main.codeMgt.service.CodeMgtService;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.asfCov.AsfCov;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.crackdownStatus.CrackdownStatus;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.fishingBoat.FishingBoat;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.processResult.ProcessResult;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.service.AsfCovService;
import com.dbnt.faisp.main.userInfo.model.UserInfo;
import lombok.RequiredArgsConstructor;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
@RestController
@RequiredArgsConstructor
@RequestMapping("/faStatistics")
public class AsfCovController {
private final AsfCovService asfCovService;
private final CodeMgtService codeMgtService;
@GetMapping("/asfCov")
public ModelAndView asfCove(@AuthenticationPrincipal UserInfo loginUser, AsfCov asfCov) {
ModelAndView mav = new ModelAndView("faStatistics/asfCov/asfCov");
mav.addObject("mgtOrganList", loginUser.getDownOrganCdList());
mav.addObject("searchParams", asfCov);
asfCov.setQueryInfo();
mav.addObject("asfCovList", asfCovService.selectAsfCovList(asfCov));
asfCov.setPaginationInfo();
return mav;
}
@GetMapping("/asfCovEditModal")
public ModelAndView asfCovEditModal(@AuthenticationPrincipal UserInfo loginUser, AsfCov asfCov) {
ModelAndView mav = new ModelAndView("faStatistics/asfCov/asfCovEditModal");
if (asfCov.getAsfcovKey() != null) {
asfCov = asfCovService.selectAsfCov(asfCov.getAsfcovKey());
} else {
asfCov.setWrtOrgan(loginUser.getOgCd());
asfCov.setWrtPart(loginUser.getOfcCd());
asfCov.setWrtUserSeq(loginUser.getUserSeq());
asfCov.setWrtUserGrd(loginUser.getTitleCd());
asfCov.setWrtUserNm(loginUser.getUserNm());
asfCov.setWrtDt(loginUser.getWrtDt());
asfCov.setWrtDt(loginUser.getWrtDt());
}
mav.addObject("asfCov", asfCov);
mav.addObject("userSeq", loginUser.getUserSeq());
return mav;
}
}

View File

@ -0,0 +1,16 @@
package com.dbnt.faisp.main.faStatistics.crackdownsStatus.mapper;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.asfCov.AsfCov;
import com.dbnt.faisp.main.ivsgtMgt.majorStatus.model.MajorStatus;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface AsfCovMapper {
List<AsfCov> selectAsfCovList(AsfCov asfCov);
Integer selectAsfCovListCnt(AsfCov asfCov);
List<AsfCov> selectAsfCovListWhere(AsfCov asfCov);
}

View File

@ -0,0 +1,78 @@
package com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.asfCov;
import com.dbnt.faisp.config.BaseModel;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.crackdownStatus.CrackdownStatus;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.crackdownStatus.CrackdownStatusBaseEntity;
import io.micrometer.core.annotation.Counted;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.springframework.format.annotation.DateTimeFormat;
import javax.persistence.*;
import java.time.LocalDateTime;
@Getter
@Setter
@Entity
@NoArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name="asfcov_status")
public class AsfCov extends BaseModel {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "asfcov_key")
private Integer asfcovKey;
@Column(name="version_no")
private Integer versionNo;
@Column(name = "cds_key")
private Integer cdsKey;
@Column(name ="person_cnt")
private Integer personCnt;
@Column(name ="pressurized_yn")
private String pressurizedYn;
@Column(name ="pressurized_n")
private String pressurizedN;
@Column(name ="person_negative_cnt")
private Integer personNegativeCnt;
@Column(name ="person_positive_cnt")
private Integer personPositiveCnt;
@Column(name ="asfcov_action_detail")
private String asfcovActionDetail;
@Column(name = "wrt_user_grd")
private String wrtUserGrd;
@Column(name = "wrt_user_nm")
private String wrtUserNm;
@Column(name = "wrt_dt")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
private LocalDateTime wrtDt;
@Column(name="wrt_organ")
private String wrtOrgan;
@Column(name="wrt_user_seq")
private Integer wrtUserSeq;
@Column(name = "wrt_part")
private String wrtPart;
@Transient
private CrackdownStatus crackdownStatus;
@Transient
private Integer caseNum;
}

View File

@ -0,0 +1,14 @@
package com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.asfCov.AsfCov;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
import java.util.Optional;
public interface AsfCovRepository extends JpaRepository<AsfCov, Integer> {
// void deleteByAsfCov(Integer asfcovKey);
}

View File

@ -0,0 +1,33 @@
package com.dbnt.faisp.main.faStatistics.crackdownsStatus.service;
import com.dbnt.faisp.config.BaseService;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.mapper.AsfCovMapper;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.asfCov.AsfCov;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.AsfCovRepository;
import com.dbnt.faisp.main.ivsgtMgt.majorStatus.model.MajorStatus;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
@RequiredArgsConstructor
public class AsfCovService extends BaseService {
private final AsfCovMapper asfCovMapper;
private final AsfCovRepository asfCovRepository;
public List<AsfCov> selectAsfCovList(AsfCov asfCov){
return asfCovMapper.selectAsfCovList(asfCov);
}
public Integer selectAsfCovListCnt(AsfCov asfCov) {
return asfCovMapper.selectAsfCovListCnt(asfCov);
}
public AsfCov selectAsfCov(Integer asfcovKey) {
AsfCov asfCov= asfCovRepository.findById(asfcovKey).orElse(null);
return asfCov;
}
}

View File

@ -0,0 +1,104 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dbnt.faisp.main.faStatistics.crackdownsStatus.mapper.AsfCovMapper">
<sql id="selectAsfCovListWhere">
<where>
a.content_status &lt;> 'DST008'
<if test='majorType != null and majorType != ""'>
and a.major_type = #{majorType}
</if>
<if test='wrtOrgan != null and wrtOrgan != ""'>
and a.wrt_organ = #{wrtOrgan}
</if>
<if test="contentTitle != null and contentTitle != ''">
AND a.content_title LIKE CONCAT('%', #{contentTitle}, '%')
</if>
<if test="wrtUserNm != null and wrtUserNm != ''">
AND a.wrt_user_nm LIKE CONCAT('%', #{wrtUserNm}, '%')
</if>
<if test='startDate != null and startDate != ""'>
and a.wrt_dt >= #{startDate}::date
</if>
<if test='endDate != null and endDate != ""'>
and a.wrt_dt &lt;= #{endDate}::date+1
</if>
and a.wrt_organ in
<foreach collection="downOrganCdList" item="organCd" separator="," open="(" close=")">
#{organCd}
</foreach>
</where>
</sql>
<select id="selectAsfCovList" resultType="AsfCov" parameterType="AsfCov">
select a.asfcov_key,
a.version_no,
a.cds_key,
a.person_cnt,
a.pressurized_yn,
a.pressurized_n,
a.person_positive_cnt,
a.person_negative_cnt,
a.asfcov_action_detail,
a.wrt_user_grd,
a.wrt_user_seq,
a.wrt_user_nm,
a.wrt_dt,
a.wrt_organ,
a.wrt_part,
cs.cds_key
, cs.case_num
, cs.napo_dt
, cs.napo_sea_point_lon
, cs.napo_sea_point_lat
, cs.napo_sea_point_detail
, cs.invasion_type
, cs.nll
, cs.case_agency
, cs.case_police_officer
, cs.crackdown_boat
, cs.crackdown_police
, cs.mmsi
, cs.field_ivsgt
, cs.obstr_exspd_cnt
, cs.person_damage_cnt
, cs.person_damage_amount
, cs.person_damage_detail
, cs.material_damage_cnt
, cs.material_damage_amount
, cs.material_damage_detail
, cs.field_ivsgt_napo_dt
, cs.field_ivsgt_release_dt
, cs.field_ivsgt_time_taken
, cs.pressurized_start_dt
, cs.pressurized_end_dt
, cs.distance
, cs.wrt_organ
, cs.wrt_user_seq
, cs.wrt_user_nm
, cs.wrt_dt
FROM crackdown_status cs
INNER JOIN asfcov_status a
ON cs.cds_key = a.cds_key
<!-- <include refid="selectAsfCovListWhere"></include>-->
order by a.asfcov_key desc
limit #{rowCnt} offset #{firstIndex}
</select>
<select id="selectAsfCovListCnt" resultType="int" parameterType="AsfCov">
select count(*)
from asfcov_status
<include refid="selectAsfCovListWhere"></include>
</select>
</mapper>

View File

@ -0,0 +1,444 @@
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorate="~{layout/layout}">
<th:block layout:fragment="script">
<script type="text/javascript" th:src="@{/js/faStatistics/crackdownStatus.js}"></script>
</th:block>
<div layout:fragment="content">
<main>
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
<div class="row justify-content-between">
<div class="col-auto"><h4>ASF 및 코로나19 관련 조치현황</h4></div>
<div class="col-auto"><p class="mb-0 mt-2">외사통계 > 불법조업외국어선 > ASF및코로나19관련조치현황</p></div>
</div>
<div class="row mx-0">
<div class="col-12 card bg-light text-center">
<div class="card-body">
<!-- <form method="get" th:action="@{/faStatistics/crackdownStatus}" id="cdsSearchForm">-->
<!-- <input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">-->
<!-- <div class="row justify-content-between py-1">-->
<!-- <div class="col-auto">-->
<!-- <div>-->
<!-- <select class="form-select form-select-sm" name="year">-->
<!-- <option value="">연도</option>-->
<!-- <th:block th:each="year : ${#numbers.sequence(2020, 2030)}">-->
<!-- <option th:value="${year}" th:text="${year}" th:selected="${searchParams.year eq #strings.toString(year)}"></option>-->
<!-- </th:block>-->
<!-- </select>-->
<!-- </div>-->
<!-- <div>-->
<!-- <select class="form-select form-select-sm" name="month">-->
<!-- <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 violation" name="violation">-->
<!-- <option value="">위반내용</option>-->
<!-- <th:block th:each="commonCode:${session.commonCode.get('VT')}">-->
<!-- <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"-->
<!-- th:selected="${commonCode.itemCd eq searchParams.violation}"></option>></option>-->
<!-- </th:block>-->
<!-- </select>-->
<!-- </div>-->
<!-- <div class="col-2">-->
<!-- <input class="form-control form-control-sm" name="napoSeaPointDetail" id="napoSeaPointDetail" placeholder="위반장소" th:value="${searchParams.napoSeaPointDetail}">-->
<!-- </div>-->
<!-- <div class="col-2">-->
<!-- <select class="form-select form-select-sm" name="invasionType">-->
<!-- <option value="">침범유형</option>-->
<!-- <th:block th:each="commonCode:${session.commonCode.get('IST')}">-->
<!-- <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"-->
<!-- th:selected="${commonCode.itemCd eq searchParams.invasionType}"></option>-->
<!-- </th:block>-->
<!-- </select>-->
<!-- </div>-->
<!-- <div class="col-2">-->
<!-- <select class="form-select form-select-sm" name="nll">-->
<!-- <option value="">NLL</option>-->
<!-- <option value="Y" th:selected="${searchParams.nll == 'Y'}">O</option>-->
<!-- <option value="N" th:selected="${searchParams.nll == 'N'}">X</option>-->
<!-- </select>-->
<!-- </div>-->
<!-- <div class="col-2">-->
<!-- <input class="form-control form-control-sm" name="mmsi" id="mmsi" placeholder="MMSI.NO" th:value="${searchParams.mmsi}">-->
<!-- </div>-->
<!-- <div class="col-2">-->
<!-- <select class="form-select form-select-sm" name="caseAgency">-->
<!-- <option value="">사건담당기관</option>-->
<!-- <th:block th:each="commonCode:${session.commonCode.get('ATA')}">-->
<!-- <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"-->
<!-- th:selected="${commonCode.itemCd eq searchParams.caseAgency}"></option>-->
<!-- </th:block>-->
<!-- </select>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="row justify-content-end pb-1">-->
<!-- <div class="col-2">-->
<!-- <select class="form-select form-select-sm" name="crackdownPolice" id="searchFormPolice">-->
<!-- <option value="">단속경찰서</option>-->
<!-- <th:block th:each="commonCode:${session.commonCode.get('CPO')}">-->
<!-- <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"-->
<!-- th:selected="${commonCode.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 class="col-2">-->
<!-- <input class="form-control form-control-sm" name="distance" id="distance" placeholder="거리" th:value="${searchParams.distance}">-->
<!-- </div>-->
<!-- <div class="col-2">-->
<!-- <select class="form-select form-select-sm" name="processStatus" id="processStatus">-->
<!-- <option value="">처리현황</option>-->
<!-- <th:block th:each="commonCode:${session.commonCode.get('PR')}">-->
<!-- <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"-->
<!-- th:selected="${commonCode.itemCd eq searchParams.processStatus}"></option>-->
<!-- </th:block>-->
<!-- </select>-->
<!-- </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="evictionDt" th:selected="${searchParams.dateSelector eq 'evictionDt'}">퇴거일</option>-->
<!-- <option value="directHandoverDt" th:selected="${searchParams.dateSelector eq 'directHandoverDt'}">직접인계일</option>-->
<!-- <option value="consignmentDt" th:selected="${searchParams.dateSelector eq 'consignmentDt'}">위탁일</option>-->
<!-- <option value="confiscationDt" th:selected="${searchParams.dateSelector eq 'confiscationDt'}">몰수확정일</option>-->
<!-- <option value="boatDisposalDt" th:selected="${searchParams.dateSelector eq 'boatDisposalDt'}">폐선일</option>-->
<!-- <option value="returnDt" th:selected="${searchParams.dateSelector eq 'returnDt'}">환부일</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 class="row justify-content-start pb-1 subSearchParam" style="display: none">-->
<!-- <hr class="mb-1">-->
<!-- <label class="col-2 col-form-label col-form-label-sm">처리현황</label>-->
<!-- <div class="col-2">-->
<!-- <select class="form-select form-select-sm" name="isDamboUnpaidAmount" th:value="${searchParams.isDamboUnpaidAmount}">-->
<!-- <option value="">담보금 미납 여부</option>-->
<!-- <option value="Y" th:selected="${searchParams.isDamboUnpaidAmount eq 'Y'}">O</option>-->
<!-- <option value="N" th:selected="${searchParams.isDamboUnpaidAmount eq 'N'}">X</option>-->
<!-- </select>-->
<!-- </div>-->
<!-- <div class="col-2">-->
<!-- <select class="form-select form-select-sm" name="isEvictionDt" th:value="${searchParams.isEvictionDt}">-->
<!-- <option value="">퇴거여부</option>-->
<!-- <option value="Y" th:selected="${searchParams.isEvictionDt eq 'Y'}">O</option>-->
<!-- <option value="N" th:selected="${searchParams.isEvictionDt eq 'N'}">X</option>-->
<!-- </select>-->
<!-- </div>-->
<!-- <div class="col-2">-->
<!-- <select class="form-select form-select-sm" name="isReturnDt" th:value="${searchParams.isReturnDt}">-->
<!-- <option value="">환부여부</option>-->
<!-- <option value="Y" th:selected="${searchParams.isReturnDt eq 'Y'}">O</option>-->
<!-- <option value="N" th:selected="${searchParams.isReturnDt eq 'N'}">X</option>-->
<!-- </select>-->
<!-- </div>-->
<!-- <div class="col-2">-->
<!-- <select class="form-select form-select-sm" name="isConsignmentStartDt" th:value="${searchParams.isConsignmentStartDt}">-->
<!-- <option value="">위탁관리 여부</option>-->
<!-- <option value="Y" th:selected="${searchParams.isConsignmentStartDt eq 'Y'}">O</option>-->
<!-- <option value="N" th:selected="${searchParams.isConsignmentStartDt eq 'N'}">X</option>-->
<!-- </select>-->
<!-- </div>-->
<!-- <div class="col-2">-->
<!-- <select class="form-select form-select-sm" name="isConfiscationDt" th:value="${searchParams.isConfiscationDt}">-->
<!-- <option value="">침몰여부</option>-->
<!-- <option value="Y" th:selected="${searchParams.isConfiscationDt eq 'Y'}">O</option>-->
<!-- <option value="N" th:selected="${searchParams.isConfiscationDt eq 'N'}">X</option>-->
<!-- </select>-->
<!-- </div>-->
<!-- <div class="col-2"></div>-->
<!-- <div class="col-2">-->
<!-- <select class="form-select form-select-sm" name="boatDisposalType" th:value="${searchParams.boatDisposalType}">-->
<!-- <option value="">폐선종류</option>-->
<!-- <th:block th:each="commonCode:${session.commonCode.get('BDT')}">-->
<!-- <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"-->
<!-- th:selected="${commonCode.itemCd eq searchParams.boatDisposalType}"></option>-->
<!-- </th:block>-->
<!-- </select>-->
<!-- </div>-->
<!-- <div class="col-2">-->
<!-- <select class="form-select form-select-sm" name="isDirectHandoverDt" th:value="${searchParams.isDirectHandoverDt}">-->
<!-- <option value="">직접인계 여부</option>-->
<!-- <option value="Y" th:selected="${searchParams.isDirectHandoverDt eq 'Y'}">O</option>-->
<!-- <option value="N" th:selected="${searchParams.isDirectHandoverDt eq 'N'}">X</option>-->
<!-- </select>-->
<!-- </div>-->
<!-- <div class="col-2">-->
<!-- <input class="form-control form-control-sm" name="handoverSeaPointDetail" id="handoverSeaPointDetail" placeholder="직접인계 해점" th:value="${searchParams.handoverSeaPointDetail}">-->
<!-- </div>-->
<!-- <div class="col-2">-->
<!-- <input class="form-control form-control-sm" name="handoverBoat" id="handoverBoat" placeholder="인계함정" th:value="${searchParams.handoverBoat}">-->
<!-- </div>-->
<!-- <div class="col-2">-->
<!-- <input class="form-control form-control-sm" name="middleTakeoverBoat" id="middleTakeoverBoat" placeholder="중측 인수함정" th:value="${searchParams.middleTakeoverBoat}">-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="row justify-content-start pb-1 subSearchParam" style="display: none">-->
<!-- <hr class="mb-1">-->
<!-- <label class="col-2 col-form-label col-form-label-sm">어선정보</label>-->
<!-- <div class="col-2">-->
<!-- <input class="form-control form-control-sm" name="boatNameKr" id="boatNameKr" placeholder="선명" th:value="${searchParams.boatNameKr}">-->
<!-- </div>-->
<!-- <div class="col-2">-->
<!-- <div class="input-group">-->
<!-- <input type="number" min="0" class="form-control form-control-sm" name="tonStartCnt" id="tonStartCnt" placeholder="톤수" th:value="${searchParams.tonStartCnt}">-->
<!-- ~<input type="number" min="0" class="form-control form-control-sm" name="tonEndCnt" id="tonEndCnt" placeholder="톤수" th:value="${searchParams.tonEndCnt}">-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="col-2">-->
<!-- <select class="form-select form-select-sm" name="boatMaterial" id="boatMaterial">-->
<!-- <option value="">선질</option>-->
<!-- <th:block th:each="commonCode:${session.commonCode.get('BM')}">-->
<!-- <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"-->
<!-- th:selected="${commonCode.itemCd eq searchParams.boatMaterial}"></option>-->
<!-- </th:block>-->
<!-- </select>-->
<!-- </div>-->
<!-- <div class="col-2">-->
<!-- <input class="form-control form-control-sm" name="boatNnySung" id="boatNnySung" placeholder="선적 성" th:value="${searchParams.boatNnySung}">-->
<!-- </div>-->
<!-- <div class="col-2">-->
<!-- <input class="form-control form-control-sm" name="boatNnySi" id="boatNnySi" placeholder="선적 시" th:value="${searchParams.boatNnySi}">-->
<!-- </div>-->
<!-- <div class="col-2"></div>-->
<!-- <div class="col-2">-->
<!-- <input class="form-control form-control-sm" name="sailorNameKr" id="sailorNameKr" placeholder="선장명" th:value="${searchParams.sailorNameKr}">-->
<!-- </div>-->
<!-- <div class="col-2">-->
<!-- <select class="form-select form-select-sm" name="fisheryType" id="fisheryType">-->
<!-- <option value="">선종</option>-->
<!-- <th:block th:each="commonCode:${session.commonCode.get('FT')}">-->
<!-- <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"-->
<!-- th:selected="${commonCode.itemCd eq searchParams.fisheryType}"></option>-->
<!-- </th:block>-->
<!-- </select>-->
<!-- </div>-->
<!-- <div class="col-2">-->
<!-- <input class="form-control form-control-sm" name="catchFishSpecies" id="catchFishSpecies" placeholder="어획물 축소기재 어종" th:value="${searchParams.catchFishSpecies}">-->
<!-- </div>-->
<!-- <div class="col-2">-->
<!-- <input class="form-control form-control-sm" name="offenseFishSpecies" id="offenseFishSpecies" placeholder="범칙물 어종" th:value="${searchParams.offenseFishSpecies}">-->
<!-- </div>-->
<!-- <div class="col-2"></div>-->
<!-- <label class="col-2 col-form-label col-form-label-sm">압수어구</label>-->
<!-- <div class="col-2">-->
<!-- <input class="form-control form-control-sm" name="confiscationFrame" id="confiscationFrame" placeholder="틀" th:value="${searchParams.confiscationFrame}">-->
<!-- </div>-->
<!-- <div class="col-2">-->
<!-- <input class="form-control form-control-sm" name="confiscationWidth" id="confiscationWidth" placeholder="폭" th:value="${searchParams.confiscationWidth}">-->
<!-- </div>-->
<!-- <div class="col-2">-->
<!-- <input class="form-control form-control-sm" name="confiscationJo" id="confiscationJo" placeholder="조" th:value="${searchParams.confiscationJo}">-->
<!-- </div>-->
<!-- <div class="col-2">-->
<!-- <input class="form-control form-control-sm" name="confiscationGae" id="confiscationGae" placeholder="개" th:value="${searchParams.confiscationGae}">-->
<!-- </div>-->
<!-- <div class="col-2">-->
<!-- <input class="form-control form-control-sm" name="confiscationEtc" id="confiscationEtc" placeholder="기타" th:value="${searchParams.confiscationEtc}">-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="row justify-content-start pb-1 subSearchParam" style="display: none">-->
<!-- <hr class="mb-1">-->
<!-- <label class="col-2 col-form-label col-form-label-sm">피해내용</label>-->
<!-- <div class="col-2">-->
<!-- <input type="number" min="0" class="form-control form-control-sm" name="obstrExspdCnt" id="obstrExspdCnt" placeholder="인적피해 발생건수" th:value="${searchParams.obstrExspdCnt}">-->
<!-- </div>-->
<!-- <div class="col-2">-->
<!-- <input type="number" min="0" class="form-control form-control-sm" name="personDamageCnt" id="personDamageCnt" placeholder="인적피해 피해인원" th:value="${searchParams.personDamageCnt}">-->
<!-- </div>-->
<!-- <div class="col-2">-->
<!-- <input type="number" min="0" class="form-control form-control-sm" name="personDamageAmount" id="personDamageAmount" placeholder="인적피해 피해액" th:value="${searchParams.personDamageAmount}">-->
<!-- </div>-->
<!-- <div class="col-2">-->
<!-- <input class="form-control form-control-sm" name="personDamageDetail" id="personDamageDetail" placeholder="인적피해 상세내용" th:value="${searchParams.personDamageDetail}">-->
<!-- </div>-->
<!-- <div class="col-2"></div>-->
<!-- <div class="col-2"></div>-->
<!-- <div class="col-2">-->
<!-- <input type="number" min="0" class="form-control form-control-sm" name="materialDamageCnt" id="materialDamageCnt" placeholder="물적피해 발생건수" th:value="${searchParams.materialDamageCnt}">-->
<!-- </div>-->
<!-- <div class="col-2"></div>-->
<!-- <div class="col-2">-->
<!-- <input type="number" min="0" class="form-control form-control-sm" name="materialDamageAmount" id="materialDamageAmount" placeholder="물적피해 피해액" th:value="${searchParams.materialDamageAmount}">-->
<!-- </div>-->
<!-- <div class="col-2">-->
<!-- <input class="form-control form-control-sm" name="materialDamageDetail" id="materialDamageDetail" placeholder="물적피해 상세내용" th:value="${searchParams.materialDamageDetail}">-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="row justify-content-start subSearchParam" style="display: none">-->
<!-- <hr class="mb-1">-->
<!-- <label class="col-2 col-form-label col-form-label-sm">구속여부</label>-->
<!-- <div class="col-2">-->
<!-- <select class="form-select form-select-sm" name="captin">-->
<!-- <option value="">선장</option>-->
<!-- <option value="Y" th:selected="${searchParams.captin eq 'Y'}">구속</option>-->
<!-- <option value="N" th:selected="${searchParams.captin eq 'N'}">불구속</option>-->
<!-- </select>-->
<!-- </div>-->
<!-- <div class="col-2">-->
<!-- <select class="form-select form-select-sm" name="mate">-->
<!-- <option value="">향해장</option>-->
<!-- <option value="Y" th:selected="${searchParams.mate eq 'Y'}">구속</option>-->
<!-- <option value="N" th:selected="${searchParams.mate eq 'N'}">불구속</option>-->
<!-- </select>-->
<!-- </div>-->
<!-- <div class="col-2">-->
<!-- <select class="form-select form-select-sm" name="warden">-->
<!-- <option value="">기관장</option>-->
<!-- <option value="Y" th:selected="${searchParams.warden eq 'Y'}">구속</option>-->
<!-- <option value="N" th:selected="${searchParams.warden eq 'N'}">불구속</option>-->
<!-- </select>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="col-1 d-grid gap-2">-->
<!-- <input type="submit" class="btn btn-primary" id="searchBtn" value="검색">-->
<!-- <button type="button" class="btn btn-info" id="searchFormBtn" data-state="hide">조건<br>펼치기</button>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </form>-->
<div class="card">
<div class="card-body">
<div class="row">
<div class="col-12 overflow-auto">
<table class="table table-sm table-hover table-bordered text-nowrap" id="cdsTable">
<thead class="align-middle">
<tr class="table-secondary">
<th rowspan="4">사건번호</th>
<th rowspan="4">나포일시</th>
<th rowspan="4">선명</th>
<th colspan="3">관서</th>
<th colspan="3">전용부두 압송여부</th>
<th rowspan="2" colspan="3">코로나19 검사결과</th>
<th rowspan="4">검·방역조치 내용</th>
<th rowspan="4">최종수정일</th>
</tr>
<tr class="table-secondary">
<th rowspan="3">사건담당경찰서</th>
<th rowspan="3">단속경찰서</th>
<th rowspan="3">단속함정</th>
<th rowspan="2">압송</th>
<th colspan="2">미압송</th>
</tr>
<tr class="table-secondary">
<th>현장조사</th>
<th>기타</th>
<th>검사인원</th>
<th>양성</th>
<th>음성</th>
</tr>
<tr class="table-secondary">
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody class="table-group-divider align-middle">
<tr class="tr" th:each="asfcov:${asfCovList}">
<td th:text="${asfcov.caseNum}"></td>
<td th:text="${asfcov.crackdownStatus.personNegativeCnt}"></td>
<td th:text="${asfcov.crackdownStatus.casePoliceOfficer}"></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="row justify-content-between pt-1">
<div class="col-auto">
<button class="btn btn-success" id="cdsDownExcel">엑셀 다운로드</button>
</div>
<div class="col-auto">
<button class="btn btn-primary" id="crackdownStatusAddBtn">등록</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal fade" id="asfCovEditModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="asfCovEditModalLabel" aria-hidden="true">
<div class="modal-dialog modal-xl modal-dialog-scrollable">
<div class="modal-content" id="asfCovEditModalContent">
</div>
</div>
</div>
<div class="modal fade" id="asfCovViewModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="asfCovViewModalLabel" aria-hidden="true">
<div class="modal-dialog modal-xl modal-dialog-scrollable">
<div class="modal-content" id="asfCovViewBody">
</div>
</div>
</div>
<div class="modal fade" id="asfCovSubModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="asfCovSubModalLabel" aria-hidden="true">
<div class="modal-dialog modal-xl modal-dialog-scrollable">
<div class="modal-content">
<div class="modal-header bg-dark">
<h5 class="modal-title text-white" id="asfCovSubModalLabel">단속현황 불러오기</h5>
<input type="hidden" id="modalUrl" value="/modal/asfCovModal">
<button type="button" class="btn-close f-invert" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body text-nowrap" id="subModalBody">
<div class="row">
<div class="col-12">
<form method="get" action="#" id="modalSearchForm">
<input type="hidden" name="pageIndex" id="modalPageIndex" value="1">
<input type="hidden" name="rowCnt" value="10">
</form>
</div>
</div>
</div>
<div class="modal-footer bg-light">
<button type="button" class="btn btn-primary" id="getCrackdownBtn">불러오기</button>
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
</div>
</div>
</div>
</div>
</main>
</div>
</html>

View File

@ -0,0 +1,331 @@
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<div class="modal-header bg-dark">
<h5 class="modal-title text-white" id="fishingBoatEditModalLabel" th:text="${asfCov.asfcovKey eq null?' 조치현황 작성':'조치현황 수정'}"></h5>
<button type="button" class="btn-close f-invert" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<form action="#" method="post" id="asfCovEditForm">
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
<input type="hidden" name="asfcovKey" id="asfcovKey" th:value="${asfCov.asfcovKey}">
<input type="hidden" name="wrtOrgan" th:value="${asfCov.wrtOrgan}">
<input type="hidden" name="wrtPart" th:value="${asfCov.wrtPart}">
<input type="hidden" name="wrtUserSeq" th:value="${asfCov.wrtUserSeq}">
<input type="hidden" name="wrtUserNm" th:value="${asfCov.wrtUserNm}">
<input type="hidden" name="wrtUserGrd" th:value="${asfCov.wrtUserGrd}">
<ul class="nav nav-tabs" id="userTab" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="baseInfoTab" data-bs-toggle="tab" data-bs-target="#baseInfoTabPanel" type="button" role="tab" aria-controls="baseInfoTabPanel" aria-selected="true">기본정보</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="sailorTab" data-bs-toggle="tab" data-bs-target="#sailorTabPanel" type="button" role="tab" aria-controls="sailorTabPanel" aria-selected="false">선장/선주정보</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="fishingBoatTab" data-bs-toggle="tab" data-bs-target="#fishingBoatTabPanel" type="button" role="tab" aria-controls="fishingBoatTabPanel" aria-selected="false">어선정보</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="processResultTab" data-bs-toggle="tab" data-bs-target="#processResultTabPanel" type="button" role="tab" aria-controls="processResultTabPanel" aria-selected="false">처리결과</button>
</li>
</ul>
<div class="tab-content bg-white border border-top-0">
<div class="tab-pane fade p-2 show active" id="baseInfoTabPanel" role="tabpanel" aria-labelledby="baseInfoTab" tabindex="0">
<div class="row mb-1">
<label for="boatNameKr" class="col-sm-1 col-form-label col-form-label-sm text-center">선명</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm fishingBoatInfo boatNameKr" id="boatNameKr" name="fishingBoat.boatNameKr" placeholder="한글" th:value="${asfCov.crackdownStatus.boatNameKr}">
</div>
<label for="caseNum" class="col-sm-1 col-form-label col-form-label-sm text-center">사건번호</label>
<div class="col-sm-2">
<div class="input-group">
<input type="text" class="form-control form-control-sm crackdownStatusInfo" id="caseNum" name="caseNum" th:value="${asfCov.crackdownStatus.caseNum}">
<input type="button" class="btn btn-sm btn-outline-primary crackdownStatusInfo w-auto" id="caseNumBtn" value="불러오기">
</div>
</div>
</div>
<div class="row mb-1">
<label for="caseAgency" class="col-sm-1 col-form-label col-form-label-sm text-center">사건담당기관</label>
<div class="col-sm-2">
<select class="form-select form-select-sm crackdownStatusInfo" id="caseAgency" name="caseAgency">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('ATA')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq asfCov.crackdownStatus.caseAgency}"></option>
</th:block>
</select>
</div>
<label for="casePoliceOfficer" class="col-sm-1 col-form-label col-form-label-sm text-center fs-13">사건담당경찰관</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm crackdownStatusInfo" id="casePoliceOfficer" name="casePoliceOfficer" th:value="${asfCov.crackdownStatus.casePoliceOfficer}">
</div>
<label for="crackdownPolice" class="col-sm-1 col-form-label col-form-label-sm text-center">단속경찰서</label>
<div class="col-sm-2">
<select class="form-select form-select-sm crackdownStatusInfo crackdownPolice" name="crackdownPolice" id="crackdownPolice">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('CPO')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq asfCov.crackdownStatus.crackdownPolice}"></option>
</th:block>
</select>
</div>
<label for="crackdownBoat" class="col-sm-1 col-form-label col-form-label-sm text-center">단속함정</label>
<div class="col-sm-2">
<select class="form-select form-select-sm crackdownStatusInfo crackdownBoat" name="crackdownBoat" id="crackdownBoat" th:data-boatcode="${asfCov.crackdownStatus.crackdownBoat}" disabled>
<option value="">단속경찰서를 선택해주세요.</option>
</select>
</div>
</div>
<div class="row mb-1">
<label for="napoDt" class="col-sm-1 col-form-label col-form-label-sm text-center">나포일시</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm crackdownStatusInfo dateTimeSelector" id="napoDt" name="napoDt" placeholder="0000-00-00 00:00" th:value="${#temporals.format(asfCov.crackdownStatus.napoDt, 'yyyy-MM-dd')}" autocomplete="off">
</div>
<label for="napoSeaPointLon" class="col-sm-1 col-form-label col-form-label-sm text-center">나포장소</label>
<div class="col-sm-5">
<div class="input-group w-auto">
<input type="text" class="form-control form-control-sm w-25 crackdownStatusInfo" id="napoSeaPointLon" name="napoSeaPointLon" placeholder="00 . 00 . 00N" th:value="${asfCov.crackdownStatus.napoSeaPointLon}">
<input type="text" class="form-control form-control-sm w-25 crackdownStatusInfo" id="napoSeaPointLat" name="napoSeaPointLat" placeholder="000-00.00E" th:value="${asfCov.crackdownStatus.napoSeaPointLat}">
<input type="text" class="form-control form-control-sm w-50 crackdownStatusInfo" id="napoSeaPointDetail" name="napoSeaPointDetail" placeholder="00도 00방 00해리, 어업협정선 내측 00해리" th:value="${asfCov.crackdownStatus.napoSeaPointDetail}">
</div>
</div>
<label for="fieldIvsgt" class="col-sm-1 col-form-label col-form-label-sm text-center">압송/현장조사</label>
<div class="col-sm-2">
<select class="form-select form-select-sm crackdownStatusInfo" name="fieldIvsgt" id="fieldIvsgt">
<option value="">선택</option>
<option value="C" th:selected="${asfCov.crackdownStatus.fieldIvsgt eq 'C'}">압송</option>
<option value="F" th:selected="${asfCov.crackdownStatus.fieldIvsgt eq 'F'}">현장조사</option>
</select>
</div>
</div>
</div>
<div class="tab-pane fade p-2" id="fishingBoatTabPanel" role="tabpanel" aria-labelledby="fishingBoatTab" tabindex="0">
<div class="row mb-1">
<label for="boatNameCn" class="col-sm-1 col-form-label col-form-label-sm text-center">선명</label>
<div class="col-sm-4">
<div class="input-group w-auto">
</div>
</div>
<div class="col-sm-4">
<div class="row" id="violationDiv">
<th:block th:each="violation:${asfCov.crackdownStatus.violationList}">
<div class="col-6 violation">
<input type="hidden" class="form-control form-control-sm fishingBoatInfo violationCd" th:value="${violation.violation}">
<div class="input-group w-auto">
<th:block th:each="commonCode:${session.commonCode.get('VT')}">
<input type="text" class="form-control form-control-sm" th:if="${commonCode.itemCd eq violation.violation}" th:value="${commonCode.itemValue}">
</th:block>
<button type="button" class="btn btn-sm btn-outline-secondary opacity-75 violationRemoveBtn">
<i class="bi bi-dash-square text-danger"></i>
</button>
</div>
</div>
</th:block>
</div>
</div>
</div>
</div>
<div class="tab-pane fade p-2" id="processResultTabPanel" role="tabpanel" aria-labelledby="processResultTab" tabindex="0">
<div class="row mb-1">
<label for="processStatus" class="col-sm-1 col-form-label col-form-label-sm text-center">처리현황</label>
<div class="col-sm-2">
<select class="form-select form-select-sm processResultInfo" id="processStatus" name="processResult.processStatus">
<option value="">선택</option>
<th:block th:each="code:${prList}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq crackdownStatus.processResult.processStatus}"></option>
</th:block>
</select>
</div>
<label for="pressurizedTimeTakenDate" class="col-sm-1 col-form-label col-form-label-sm text-center">압송소요시간</label>
<div class="col-sm-2">
<th:block th:with="ptt=${crackdownStatus.processResult.pressurizedTimeTaken}">
<div class="input-group w-auto">
<input type="number" class="form-control form-control-sm pressurizedTimeTaken processResultInfo" id="pressurizedTimeTakenDate" placeholder="일" th:value="${#strings.substringBefore(ptt, '일')}">
<input type="text" class="form-control form-control-sm pressurizedTimeTaken processResultInfo timeSelector" id="pressurizedTimeTakenTime" placeholder="00:00" autocomplete="off" th:value="${#strings.substringAfter(ptt, '일')}">
</div>
<input type="hidden" class="processResultInfo" name="processResult.pressurizedTimeTaken" id="pressurizedTimeTaken" th:value="${ptt}">
</th:block>
</div>
<label for="warrantReqTakeDate" class="col-sm-1 col-form-label col-form-label-sm text-center fs-11">영장청구 소요시간</label>
<div class="col-sm-2">
<th:block th:with="wrtt=${crackdownStatus.processResult.warrantReqTakeTime}">
<div class="input-group w-auto">
<input type="number" class="form-control form-control-sm warrantReqTake processResultInfo" id="warrantReqTakeDate" placeholder="일" th:value="${#strings.substringBefore(wrtt, '일')}">
<input type="text" class="form-control form-control-sm warrantReqTake processResultInfo timeSelector" id="warrantReqTakeTime" placeholder="00:00" autocomplete="off" th:value="${#strings.substringAfter(wrtt, '일')}">
</div>
<input type="hidden" class="processResultInfo" name="processResult.warrantReqTakeTime" id="warrantReqTake" th:value="${wrtt}">
</div>
</div>
</div>
<hr>
<div class="row mb-1">
<label for="consignmentStartDt" class="col-sm-1 col-form-label col-form-label-sm text-center">위탁시작일</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm processResultInfo dateSelector" id="consignmentStartDt" name="processResult.consignmentStartDt" placeholder="0000-00-00" th:value="${crackdownStatus.processResult.consignmentStartDt}" autocomplete="off">
</div>
<label for="consignmentEndDt" class="col-sm-1 col-form-label col-form-label-sm text-center">위탁종료일</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm processResultInfo dateSelector" id="consignmentEndDt" name="processResult.consignmentEndDt" placeholder="0000-00-00" th:value="${crackdownStatus.processResult.consignmentEndDt}" autocomplete="off">
</div>
<label for="confiscationDt" class="col-sm-1 col-form-label col-form-label-sm text-center">몰수확정일</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm processResultInfo dateSelector" id="confiscationDt" name="processResult.confiscationDt" placeholder="0000-00-00" th:value="${crackdownStatus.processResult.confiscationDt}" autocomplete="off">
</div>
</div>
<div class="row mb-1">
<label for="boatDisposalDt" class="col-sm-1 col-form-label col-form-label-sm text-center">폐선일</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm processResultInfo dateSelector" id="boatDisposalDt" name="processResult.boatDisposalDt" placeholder="0000-00-00" th:value="${crackdownStatus.processResult.boatDisposalDt}" autocomplete="off">
</div>
<label for="boatDisposalType" class="col-sm-1 col-form-label col-form-label-sm text-center">폐선종류</label>
<div class="col-sm-2">
<select class="form-select form-select-sm processResultInfo" id="boatDisposalType" name="processResult.boatDisposalType">
<option value="">선택</option>
<th:block th:each="code:${bdtList}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq crackdownStatus.processResult.boatDisposalType}"></option>
</th:block>
</select>
</div>
<label for="returnDt" class="col-sm-1 col-form-label col-form-label-sm text-center">환부일</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm processResultInfo dateSelector" id="returnDt" name="processResult.returnDt" placeholder="0000-00-00" th:value="${crackdownStatus.processResult.returnDt}" autocomplete="off">
</div>
</div>
<div class="row mb-1">
<th:block th:if="${#lists.isEmpty(crackdownStatus.sailorList)}">
<label for="captainRestriction" class="col-sm-1 col-form-label col-form-label-sm text-center">선장구속</label>
<div class="col-sm-2">
<select class="form-select form-select-sm sailorInfo" id="captainRestriction">
<option value="">선택</option>
<option value="Y">O</option>
<option value="N">X</option>
</select>
</div>
<label for="navigatingOfficerRestriction" class="col-sm-1 col-form-label col-form-label-sm text-center">항해장구속</label>
<div class="col-sm-2">
<select class="form-select form-select-sm sailorInfo" id="navigatingOfficerRestriction">
<option value="">선택</option>
<option value="Y">O</option>
<option value="N">X</option>
</select>
</div>
<label for="chiefEngineerRestriction" class="col-sm-1 col-form-label col-form-label-sm text-center">기관장구속</label>
<div class="col-sm-2">
<select class="form-select form-select-sm sailorInfo" id="chiefEngineerRestriction">
<option value="">선택</option>
<option value="Y">O</option>
<option value="N">X</option>
</select>
</div>
</th:block>
<th:block th:unless="${#lists.isEmpty(crackdownStatus.sailorList)}">
<label for="captainRestriction" class="col-sm-1 col-form-label col-form-label-sm text-center">선장구속</label>
<div class="col-sm-2">
<th:block th:each="sailor:${crackdownStatus.sailorList}">
<th:block th:if="${sailor.position eq 'POS001'}">
<select class="form-select form-select-sm sailorInfo" id="captainRestriction">
<option value="">선택</option>
<option value="Y" th:selected="${sailor.isRestriction eq 'Y'}">O</option>
<option value="N" th:selected="${sailor.isRestriction eq 'N'}">X</option>
</select>
</th:block>
</th:block>
</div>
<label for="navigatingOfficerRestriction" class="col-sm-1 col-form-label col-form-label-sm text-center">항해장구속</label>
<div class="col-sm-2">
<th:block th:each="sailor:${crackdownStatus.sailorList}">
<th:block th:if="${sailor.position eq 'POS002'}">
<select class="form-select form-select-sm sailorInfo" id="navigatingOfficerRestriction">
<option value="">선택</option>
<option value="Y" th:selected="${sailor.isRestriction eq 'Y'}">O</option>
<option value="N" th:selected="${sailor.isRestriction eq 'N'}">X</option>
</select>
</th:block>
</th:block>
</div>
<label for="chiefEngineerRestriction" class="col-sm-1 col-form-label col-form-label-sm text-center">기관장구속</label>
<div class="col-sm-2">
<th:block th:each="sailor:${crackdownStatus.sailorList}">
<th:block th:if="${sailor.position eq 'POS003'}">
<select class="form-select form-select-sm sailorInfo" id="chiefEngineerRestriction">
<option value="">선택</option>
<option value="Y" th:selected="${sailor.isRestriction eq 'Y'}">O</option>
<option value="N" th:selected="${sailor.isRestriction eq 'N'}">X</option>
</select>
</th:block>
</th:block>
</div>
</th:block>
</div>
<div class="row mb-1">
<label for="sailorAddBtn" class="col-sm-1 col-form-label col-form-label-sm text-center">
선원구속
<button type="button" class="border-0 sailorInfo" id="sailorAddBtn">
<i class="bi bi-plus-square text-primary"></i>
</button>
</label>
<div class="col-sm-10 row" id="sailorRestrictionHome">
<th:block th:each="sailor:${crackdownStatus.sailorList}">
<th:block th:if="${sailor.position eq 'POS005' or sailor.position eq 'POS006'}">
<div class="col-4 sailorRestriction">
<div class="input-group">
<select class="form-select form-select-sm sailorInfo isRestriction normalSailorPosition" style="width: 75px">
<option value="">직책</option>
<option value="POS005" th:selected="${sailor.position eq 'POS005'}">기타 간부선원</option>
<option value="POS006" th:selected="${sailor.position eq 'POS006'}">일반선원 또는 확인불가</option>
</select>
<select class="form-select form-select-sm sailorInfo isRestriction w-auto normalSailorRestriction">
<option value="">선택</option>
<option value="Y" th:selected="${sailor.isRestriction eq 'Y'}">O</option>
<option value="N" th:selected="${sailor.isRestriction eq 'N'}">X</option>
</select>
<input type="text" class="form-control form-control-sm sailorInfo normalSailorNm w-auto" placeholder="이름" th:value="${sailor.sailorNameKr}">
<button type="button" class="btn btn-sm btn-outline-secondary sailorInfo w-auto opacity-75 sailorRemoveBtn">
<i class="bi bi-dash-square text-danger"></i>
</button>
</div>
</div>
</th:block>
</th:block>
</div>
</div>
<div class="row mb-1">
<label for="exileCnt" class="col-sm-1 col-form-label col-form-label-sm text-center">추방인원</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm processResultInfo" id="exileCnt" name="processResult.exileCnt" placeholder="00명" th:value="${crackdownStatus.processResult.exileCnt}">
</div>
<label for="exileDt" class="col-sm-1 col-form-label col-form-label-sm text-center">추방일</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm processResultInfo dateSelector" id="exileDt" name="processResult.exileDt" placeholder="0000-00-00" th:value="${crackdownStatus.processResult.exileDt}" autocomplete="off">
</div>
<label for="flight" class="col-sm-1 col-form-label col-form-label-sm text-center">항공편</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm processResultInfo" id="flight" name="processResult.flight" th:value="${crackdownStatus.processResult.flight}">
</div>
</div>
<div class="row mb-3">
<label for="immigrationOfficeName" class="col-sm-1 col-form-label col-form-label-sm text-center">출입국 담당자</label>
<div class="col-sm-4">
<div class="input-group w-auto">
<input type="text" class="form-control form-control-sm processResultInfo" id="immigrationOfficeName" name="processResult.immigrationOfficeName" placeholder="사무소명" th:value="${crackdownStatus.processResult.immigrationOfficeName}">
<input type="text" class="form-control form-control-sm processResultInfo" id="immigrationOfficeOfficerName" name="processResult.immigrationOfficeOfficerName" placeholder="이름" th:value="${crackdownStatus.processResult.immigrationOfficeOfficerName}">
<input type="text" class="form-control form-control-sm processResultInfo" id="immigrationOfficeOfficerContact" name="processResult.immigrationOfficeOfficerContact" placeholder="연락처" th:value="${crackdownStatus.processResult.immigrationOfficeOfficerContact}">
</div>
</div>
</div>
</div>
</div>
</form>
</div>
<div class="modal-footer bg-light">
<!--<button type="button" class="btn btn-warning" id="saveTempBtn">임시저장</button>-->
<button type="button" class="btn btn-primary" id="saveResultBtn">저장</button>
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
</div>

View File

@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
</body>
</html>