Compare commits

...

3 Commits

11 changed files with 643 additions and 54 deletions

View File

@ -30,7 +30,7 @@ public class KwmsService {
UserInfo userInfo = new UserInfo(); UserInfo userInfo = new UserInfo();
userInfo.setDicCode(empInfo.getDicCode()); userInfo.setDicCode(empInfo.getDicCode());
userInfo.setUserNm(empInfo.getEmpNm()); userInfo.setUserNm(empInfo.getEmpNm());
userInfo.setSex(empInfo.getSex().strip()); userInfo.setSex(empInfo.getSex().strip().equals("F")?"SEX001":"SEX002");
String[] positionAry = empInfo.getCallBuseoNm().split(" "); String[] positionAry = empInfo.getCallBuseoNm().split(" ");
userInfo.setOgCd(codeMgtService.searchCode("OG", positionAry[0])); userInfo.setOgCd(codeMgtService.searchCode("OG", positionAry[0]));
if (positionAry.length>1){ if (positionAry.length>1){

View File

@ -30,34 +30,42 @@ public class FishingBoatController {
@RequestMapping("/fishingBoat") @RequestMapping("/fishingBoat")
public ModelAndView fishingBoat(@AuthenticationPrincipal UserInfo loginUser, CrackdownStatus crackdownStatus) { public ModelAndView fishingBoat(@AuthenticationPrincipal UserInfo loginUser, CrackdownStatus crackdownStatus) {
ModelAndView mav = new ModelAndView("faStatistics/fishingBoat/fishingBoatMgt"); ModelAndView mav = new ModelAndView("faStatistics/fishingBoat/fishingBoatMgt");
if(crackdownStatus.getFishingBoat()==null){
crackdownStatus.setFishingBoat(new FishingBoat());
crackdownStatus.setProcessResult(new ProcessResult());
}
//메뉴권한 확인 //메뉴권한 확인
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faStatistics/fishingBoat").get(0).getAccessAuth(); String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faStatistics/fishingBoat").get(0).getAccessAuth();
mav.addObject("accessAuth", accessAuth); mav.addObject("accessAuth", accessAuth);
crackdownStatus.setQueryInfo(); crackdownStatus.setQueryInfo();
List<CrackdownStatus> crackdownStatusList = fishingBoatService.selectCrackdownStatusList(crackdownStatus); List<CrackdownStatus> crackdownStatusList = fishingBoatService.selectFishingBoatList(crackdownStatus);
mav.addObject("crackdownStatusList", crackdownStatusList); mav.addObject("crackdownStatusList", crackdownStatusList);
crackdownStatus.setContentCnt(fishingBoatService.selectCrackdownStatusListCnt(crackdownStatus)); crackdownStatus.setContentCnt(fishingBoatService.selectFishingBoatListCnt(crackdownStatus));
crackdownStatus.setPaginationInfo(); crackdownStatus.setPaginationInfo();
mav.addObject("searchParams", crackdownStatus); mav.addObject("searchParams", crackdownStatus);
return mav; return mav;
} }
@GetMapping("/fishingBoatViewModal") @GetMapping("/fishingBoatViewModal")
public ModelAndView fishingBoatViewModal(@AuthenticationPrincipal UserInfo loginUser, ProcessResult processResult){ public ModelAndView fishingBoatViewModal(@AuthenticationPrincipal UserInfo loginUser, CrackdownStatus crackdownStatus){
ModelAndView mav = new ModelAndView("faStatistics/processResult/processResultViewModal"); ModelAndView mav = new ModelAndView("faStatistics/fishingBoat/fishingBoatViewModal");
// processResult = processResultService.selectProcessResult(processResult.getPrKey()); crackdownStatus = fishingBoatService.selectCrackdownStatus(crackdownStatus.getCdsKey());
// processResult.setCrackdownStatus(crackdownStatusRepository.findByCdsKey(processResult.getCdsKey()));
// processResult.setFbKey(fishingBoatRepository.findByCdsKey(processResult.getCdsKey()).getFbKey());
// processResult.setBoatNameKr(fishingBoatRepository.findByCdsKey(processResult.getCdsKey()).getBoatNameKr());
// processResult.setViolationList(violationRepository.findByFbKey(processResult.getFbKey()));
mav.addObject("processResult", processResult); mav.addObject("crackdownStatus", crackdownStatus);
mav.addObject("userSeq",loginUser.getUserSeq());
//메뉴권한 확인 //메뉴권한 확인
mav.addObject("accessAuth", authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faStatistics/processResult").get(0).getAccessAuth()); mav.addObject("accessAuth", authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faStatistics/processResult").get(0).getAccessAuth());
mav.addObject("ataList", codeMgtService.selectCodeMgtList("ATA"));
mav.addObject("cpoList", codeMgtService.selectCodeMgtList("CPO"));
mav.addObject("vtList", codeMgtService.selectCodeMgtList("VT"));
mav.addObject("ftList", codeMgtService.selectCodeMgtList("FT"));
mav.addObject("bmList", codeMgtService.selectCodeMgtList("BM"));
mav.addObject("prList", codeMgtService.selectCodeMgtList("PR"));
mav.addObject("bdtList", codeMgtService.selectCodeMgtList("BDT"));
mav.addObject("boatList", codeMgtService.selectCodeMgtList(crackdownStatus.getCrackdownPolice()));
mav.addObject("userSeq", loginUser.getUserSeq());
return mav; return mav;
} }

View File

@ -9,4 +9,6 @@ import java.util.List;
public interface CrackdownStatusMapper { public interface CrackdownStatusMapper {
List<CrackdownStatus> selectCrackdownStatusList(CrackdownStatus crackdownStatus); List<CrackdownStatus> selectCrackdownStatusList(CrackdownStatus crackdownStatus);
Integer selectCrackdownStatusListCnt(CrackdownStatus crackdownStatus); Integer selectCrackdownStatusListCnt(CrackdownStatus crackdownStatus);
List<CrackdownStatus> selectFishingBoatList(CrackdownStatus crackdownStatus);
Integer selectFishingBoatListCnt(CrackdownStatus crackdownStatus);
} }

View File

@ -46,6 +46,29 @@ public class CrackdownStatus extends CrackdownStatusBaseEntity {
@Transient @Transient
private Integer fbKey; private Integer fbKey;
@Transient
private String boatNameKr;
@Transient
private String fisheryType;
@Transient
private String boatNnySung;
@Transient
private String boatMaterial;
@Transient
private String boatNnySi;
@Transient
private Integer tonCnt;
@Transient
private String boat_material;
@Transient
private String violationStr;
@Transient
private String sailorNameKr;
@Transient
private String processStatus;
@Transient @Transient
private Integer restrictionCaptin; private Integer restrictionCaptin;

View File

@ -38,11 +38,11 @@ public class FishingBoatService extends BaseService {
private final SailorRepository sailorRepository; private final SailorRepository sailorRepository;
private final SailorVersionRepository sailorVersionRepository; private final SailorVersionRepository sailorVersionRepository;
public List<CrackdownStatus> selectCrackdownStatusList(CrackdownStatus crackdownStatus){ public List<CrackdownStatus> selectFishingBoatList(CrackdownStatus crackdownStatus){
return crackdownStatusMapper.selectCrackdownStatusList(crackdownStatus); return crackdownStatusMapper.selectFishingBoatList(crackdownStatus);
} }
public Integer selectCrackdownStatusListCnt(CrackdownStatus crackdownStatus){ public Integer selectFishingBoatListCnt(CrackdownStatus crackdownStatus){
return crackdownStatusMapper.selectCrackdownStatusListCnt(crackdownStatus); return crackdownStatusMapper.selectFishingBoatListCnt(crackdownStatus);
} }
public CrackdownStatus selectCrackdownStatus(Integer cdsKey) { public CrackdownStatus selectCrackdownStatus(Integer cdsKey) {
CrackdownStatus crackdownStatus = crackdownStatusRepository.findById(cdsKey).orElse(null); CrackdownStatus crackdownStatus = crackdownStatusRepository.findById(cdsKey).orElse(null);

View File

@ -371,4 +371,62 @@
ON cs.cds_key = pr.cds_key ON cs.cds_key = pr.cds_key
<include refid="selectCrackdownStatusListWhere"></include> <include refid="selectCrackdownStatusListWhere"></include>
</select> </select>
<sql id="selectFishingBoatListWhere">
<where>
</where>
</sql>
<select id="selectFishingBoatList" resultType="CrackdownStatus" parameterType="CrackdownStatus">
select a.cds_key,
a.napo_dt,
a.napo_sea_point_lon,
a.napo_sea_point_lat,
a.napo_sea_point_detail,
a.case_agency,
a.crackdown_police,
a.crackdown_boat,
b.boat_name_kr,
b.fishery_type,
b.boat_nny_sung,
b.boat_nny_si,
b.ton_cnt,
b.boat_material,
b.wrt_organ,
b.wrt_user_grd,
b.wrt_user_nm,
b.wrt_dt,
c.process_status,
d.sailor_name_kr,
e.violationStr
from crackdown_status a
inner join fishing_boat b
on a.cds_key = b.cds_key
inner join process_result c
on a.cds_key = c.cds_key
left outer join sailor d
on b.fb_key = d.fb_key and d.position = 'POS001'
left outer join (
select aa.fb_key, array_to_string(array_agg(ab.item_value), ', ') as violationStr
from violation aa
inner join code_mgt ab
on aa.violation = ab.item_cd
group by aa.fb_key
) e on b.fb_key = e.fb_key
<include refid="selectFishingBoatListWhere"></include>
order by a.cds_key desc
limit #{rowCnt} offset #{firstIndex}
</select>
<select id="selectFishingBoatListCnt" resultType="int" parameterType="CrackdownStatus">
select count(*)
from crackdown_status a
inner join fishing_boat b
on a.cds_key = b.cds_key
inner join process_result c
on a.cds_key = c.cds_key
left outer join sailor d
on b.fb_key = d.fb_key and d.position = 'POS001'
<include refid="selectFishingBoatListWhere"></include>
</select>
</mapper> </mapper>

View File

@ -2,6 +2,13 @@ let selectedList = [];
$(document).on('click', '#getFishingBoatEditModalBtn', function (){ $(document).on('click', '#getFishingBoatEditModalBtn', function (){
getFishingBoatEditModal(null); getFishingBoatEditModal(null);
}) })
$(document).on('click', '.crackdownStatusTr', function (){
getFishingBoatViewModal($(this).find(".cdsKey").val())
})
$(document).on('click', '#editFishingBoatBtn', function (){
getFishingBoatEditModal($("#fishingBoatViewModalContent").find(".cdsKey").val());
$("#fishingBoatViewModal").modal('hide');
})
$(document).on('change', '#caseNum', function (){ $(document).on('change', '#caseNum', function (){
$.ajax({ $.ajax({
url: '/faStatistics/checkCaseNum', url: '/faStatistics/checkCaseNum',
@ -145,7 +152,25 @@ function getFishingBoatEditModal(cdsKey){
} }
}); });
} }
function getFishingBoatViewModal(cdsKey){
$.ajax({
url: '/faStatistics/fishingBoatViewModal',
data: {cdsKey: cdsKey},
type: 'GET',
dataType:"html",
success: function(html){
$("#fishingBoatViewModalContent").empty().append(html)
const crackdownPolice = $("#crackdownPolice").val()
if(crackdownPolice){
getCrackdownBoatOption(crackdownPolice)
}
$("#fishingBoatViewModal").modal('show');
},
error:function(){
}
});
}
function getCrackdownBoatOption(categoryCd){ function getCrackdownBoatOption(categoryCd){
$.ajax({ $.ajax({
url: '/selectBoxOptions', url: '/selectBoxOptions',

View File

@ -81,7 +81,7 @@ function getEditModal(publicKey, publicType){
dataType:"html", dataType:"html",
success: function(html){ success: function(html){
$("#editContent").empty().append(html) $("#editContent").empty().append(html)
/*$("#content").summernote({ $("#content").summernote({
lang:'ko-KR', lang:'ko-KR',
height: 350, height: 350,
disableDragAndDrop: true, disableDragAndDrop: true,
@ -92,7 +92,7 @@ function getEditModal(publicKey, publicType){
['para', ['ul', 'ol', 'paragraph']], ['para', ['ul', 'ol', 'paragraph']],
['table', ['table']] ['table', ['table']]
] ]
});*/ });
setUploadDiv(); setUploadDiv();
$("#editModal").modal('show'); $("#editModal").modal('show');
}, },

View File

@ -3,6 +3,19 @@
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorate="~{layout/layout}"> layout:decorate="~{layout/layout}">
<th:block layout:fragment="css">
<style>
.ws-normal{
white-space: normal;
}
.ws-nowrap{
white-space: nowrap;
}
.min-width-300{
min-width: 300px!important;
}
</style>
</th:block>
<th:block layout:fragment="script"> <th:block layout:fragment="script">
<script type="text/javascript" th:src="@{/js/faStatistics/fishingBoatMgt.js}"></script> <script type="text/javascript" th:src="@{/js/faStatistics/fishingBoatMgt.js}"></script>
</th:block> </th:block>
@ -26,6 +39,12 @@
<option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt eq num*10}"></option> <option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt eq num*10}"></option>
</th:block> </th:block>
</select> </select>
<select class="form-select form-select-sm">
<option value="">연도</option>
<th:block th:each="year : ${#numbers.sequence(2020, 2030)}">
<option th:value="${year}" th:text="${year}" th:selected="${searchParams.fishingBoat.year eq year}"></option>
</th:block>
</select>
</div> </div>
<div class="col-10"> <div class="col-10">
<div class="row justify-content-end pb-1"> <div class="row justify-content-end pb-1">
@ -60,34 +79,26 @@
</div> </div>
</div> </div>
<div class="col-auto"> <div class="col-auto">
<input type="text" class="form-control form-control-sm" placeholder="선적지" name="boatNny" th:value="${searchParams.boatNny}"> <input type="text" class="form-control form-control-sm" placeholder="선적지" name="boatNny" th:value="${searchParams.fishingBoat.boatNny}">
</div> </div>
</div> </div>
<div class="row justify-content-end"> <div class="row justify-content-end">
<div class="col-auto">
<select class="form-select form-select-sm">
<option value="">연도</option>
<th:block th:each="year : ${#numbers.sequence(2020, 2030)}">
<option th:value="${year}" th:text="${year}" th:selected="${searchParams.year eq year}"></option>
</th:block>
</select>
</div>
<div class="col-auto"> <div class="col-auto">
<select class="form-select form-select-sm"> <select class="form-select form-select-sm">
<option value="">선질</option> <option value="">선질</option>
<th:block th:each="commonCode:${session.commonCode.get('BM')}"> <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> <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq searchParams.fishingBoat.boatMaterial}"></option>
</th:block> </th:block>
</select> </select>
</div> </div>
<div class="col-auto"> <div class="col-auto">
<input type="text" class="form-control form-control-sm" placeholder="톤수" name="tonCnt" th:value="${searchParams.tonCnt}"> <input type="text" class="form-control form-control-sm" placeholder="톤수" name="tonCnt" th:value="${searchParams.fishingBoat.tonCnt}">
</div> </div>
<div class="col-auto"> <div class="col-auto">
<select class="form-select form-select-sm"> <select class="form-select form-select-sm">
<option value="">어업종류</option> <option value="">어업종류</option>
<th:block th:each="commonCode:${session.commonCode.get('FT')}"> <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> <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq searchParams.fishingBoat.fisheryType}"></option>
</th:block> </th:block>
</select> </select>
</div> </div>
@ -95,7 +106,7 @@
<select class="form-select form-select-sm"> <select class="form-select form-select-sm">
<option value="">처리현황</option> <option value="">처리현황</option>
<th:block th:each="commonCode:${session.commonCode.get('PR')}"> <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> <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq searchParams.processResult.processStatus}"></option>
</th:block> </th:block>
</select> </select>
</div> </div>
@ -103,7 +114,7 @@
<select class="form-select form-select-sm"> <select class="form-select form-select-sm">
<option value="">위반형태</option> <option value="">위반형태</option>
<th:block th:each="commonCode:${session.commonCode.get('VT')}"> <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:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq searchParams.fishingBoat.violation}"></option>
</th:block> </th:block>
</select> </select>
</div> </div>
@ -118,8 +129,8 @@
<div class="col-12"> <div class="col-12">
<div class="card"> <div class="card">
<div class="card-body"> <div class="card-body">
<div class="row"> <div class="row overflow-auto">
<table class="table table-hover table-bordered"> <table class="table table-hover table-bordered ws-nowrap">
<thead> <thead>
<tr> <tr>
<th></th> <th></th>
@ -136,28 +147,85 @@
<th>선질</th> <th>선질</th>
<th>위반형태</th> <th>위반형태</th>
<th>처리결과</th> <th>처리결과</th>
<th>작성자</th>
<th>수정일</th>
</tr> </tr>
</thead> </thead>
<!--<tbody class="table-group-divider"> <tbody class="table-group-divider">
<tr class="noticeTr" th:each="notice:${noticeList}"> <tr class="crackdownStatusTr" th:each="crackdownStatus:${crackdownStatusList}">
<input type="hidden" class="publicKey" th:value="${notice.publicKey}"> <input type="hidden" class="cdsKey" th:value="${crackdownStatus.cdsKey}">
<td><input type="checkbox" class="trChkBox"></td> <td><input type="checkbox" class="trChkBox"></td>
<td th:text="${notice.title}"></td> <td th:text="${#temporals.format(crackdownStatus.napoDt, 'yyyy-MM-dd HH:mm')}"></td>
<th:block th:each="commonCode:${session.commonCode.get('OG')}"> <td>
<td th:if="${notice.wrtOrgan eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td> <th:block th:text="${crackdownStatus.napoSeaPointLon}"></th:block>
<br>
<th:block th:text="${crackdownStatus.napoSeaPointLat}"></th:block>
</td>
<th:block th:if="${#strings.isEmpty(crackdownStatus.caseAgency)}">
<td></td>
</th:block> </th:block>
<th:block th:each="commonCode:${session.commonCode.get('OFC')}"> <th:block th:unless="${#strings.isEmpty(crackdownStatus.caseAgency)}">
<td th:if="${notice.wrtPart eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td> <th:block th:each="commonCode:${session.commonCode.get('ATA')}">
<td th:if="${crackdownStatus.caseAgency eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
</th:block>
</th:block>
<th:block th:if="${#strings.isEmpty(crackdownStatus.crackdownPolice)}">
<td></td>
</th:block>
<th:block th:unless="${#strings.isEmpty(crackdownStatus.crackdownPolice)}">
<th:block th:each="commonCode:${session.commonCode.get('CPO')}">
<td th:if="${crackdownStatus.crackdownPolice eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
</th:block>
</th:block>
<th:block th:if="${#strings.isEmpty(crackdownStatus.crackdownBoat)}">
<td></td>
</th:block>
<th:block th:unless="${#strings.isEmpty(crackdownStatus.crackdownBoat)}">
<th:block th:each="commonCode:${session.commonCode.get(crackdownStatus.crackdownPolice)}">
<td th:if="${crackdownStatus.crackdownBoat eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
</th:block>
</th:block>
<td th:text="${crackdownStatus.boatNameKr}"></td>
<td th:text="${crackdownStatus.sailorNameKr}"></td>
<th:block th:if="${#strings.isEmpty(crackdownStatus.fisheryType)}">
<td></td>
</th:block>
<th:block th:unless="${#strings.isEmpty(crackdownStatus.fisheryType)}">
<th:block th:each="commonCode:${session.commonCode.get('FT')}">
<td th:if="${crackdownStatus.fisheryType eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
</th:block>
</th:block>
<td th:text="|${crackdownStatus.boatNnySung} ${crackdownStatus.boatNnySi}|"></td>
<td th:text="|${crackdownStatus.tonCnt}t|"></td>
<th:block th:if="${#strings.isEmpty(crackdownStatus.boatMaterial)}">
<td></td>
</th:block>
<th:block th:unless="${#strings.isEmpty(crackdownStatus.boatMaterial)}">
<th:block th:each="commonCode:${session.commonCode.get('BM')}">
<td th:if="${crackdownStatus.boatMaterial eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
</th:block>
</th:block>
<td class="ws-normal min-width-300" th:text="${crackdownStatus.violationStr}"></td>
<th:block th:if="${#strings.isEmpty(crackdownStatus.processStatus)}">
<td></td>
</th:block>
<th:block th:unless="${#strings.isEmpty(crackdownStatus.processStatus)}">
<th:block th:each="commonCode:${session.commonCode.get('PR')}">
<td th:if="${crackdownStatus.processStatus eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
</th:block>
</th:block>
<td>
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
<th:block th:if="${crackdownStatus.wrtOrgan eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></th:block>
</th:block> </th:block>
<th:block th:each="commonCode:${session.commonCode.get('JT')}"> <th:block th:each="commonCode:${session.commonCode.get('JT')}">
<td th:if="${notice.wrtUserGrd eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td> <th:block th:if="${crackdownStatus.wrtUserGrd eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></th:block>
</th:block> </th:block>
<td th:text="${notice.wrtUserNm}"></td> <th:block th:text="${crackdownStatus.wrtUserNm}"></th:block>
<td th:text="${#temporals.format(notice.wrtDt, 'yyyy-MM-dd HH:mm')}"></td> </td>
<td th:text="${notice.fileCnt eq null?'파일 없음':#strings.concat(notice.fileCnt,' 건')}"></td> <td th:text="${#temporals.format(crackdownStatus.wrtDt, 'yyyy-MM-dd HH:mm')}"></td>
<td th:text="${notice.commentCnt eq null?'0':notice.commentCnt}"></td>
</tr> </tr>
</tbody>--> </tbody>
</table> </table>
</div> </div>
<div class="row justify-content-between"> <div class="row justify-content-between">
@ -207,9 +275,9 @@
</div> </div>
</div> </div>
</div> </div>
<div class="modal fade" id="viewModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="viewModalLabel" aria-hidden="true"> <div class="modal fade" id="fishingBoatViewModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="fishingBoatViewModalLabel" aria-hidden="true">
<div class="modal-dialog modal-xl modal-dialog-scrollable"> <div class="modal-dialog modal-xxl modal-dialog-scrollable">
<div class="modal-content" id="viewContent"> <div class="modal-content" id="fishingBoatViewModalContent">
</div> </div>
</div> </div>

View File

@ -0,0 +1,405 @@
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<div class="modal-header">
<h5 class="modal-title" id="fishingBoatEditModalLabel">불법조업 외국어선 상세정보</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<input type="hidden" class="cdsKey" th:value="${crackdownStatus.cdsKey}">
<div class="row my-1 justify-content-between">
<div class="col-auto" th:text="|선명: ${crackdownStatus.fishingBoat.boatNameKr}|"></div>
<div class="col-auto" th:text="|최종수정일: ${#temporals.format(crackdownStatus.fishingBoat.wrtDt, 'yyyy-MM-dd HH:mm')}|"></div>
</div>
<div class="row my-1">
<div class="col-auto">■ 기본정보</div>
</div>
<div class="row my-1">
<label class="col-sm-1 col-form-label col-form-label-sm border border-secondary text-center">사건번호</label>
<div class="col-sm-2 border border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.caseNum}">
</div>
<label class="col-sm-1 col-form-label col-form-label-sm border border-secondary text-center">압송/현장조사</label>
<div class="col-sm-2 border border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.fieldIvsgt eq 'C'?'압송':'현장조사'}">
</div>
</div>
<div class="row my-1">
<label class="col-sm-1 col-form-label col-form-label-sm border border-secondary text-center">사건담당기관</label>
<div class="col-sm-2 border border-secondary">
<th:block th:each="code:${ataList}">
<input type="text" class="form-control form-control-sm border-0" readonly th:if="${code.itemCd eq crackdownStatus.caseAgency}" th:value="${code.itemValue}">
</th:block>
</div>
<label class="col-sm-1 col-form-label col-form-label-sm border border-secondary text-center fs-13">사건담당경찰관</label>
<div class="col-sm-2 border border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.casePoliceOfficer}">
</div>
<label class="col-sm-1 col-form-label col-form-label-sm border border-secondary text-center">단속경찰서</label>
<div class="col-sm-2 border border-secondary">
<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}">
</th:block>
</div>
<label class="col-sm-1 col-form-label col-form-label-sm border border-secondary text-center">단속함정</label>
<div class="col-sm-2 border border-secondary">
<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}">
</th:block>
</div>
</div>
<div class="row my-1">
<label class="col-sm-1 col-form-label col-form-label-sm border border-secondary text-center">나포일시</label>
<div class="col-sm-2 border border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${#temporals.format(crackdownStatus.napoDt, 'yyyy-MM-dd')}">
</div>
<label class="col-sm-1 col-form-label col-form-label-sm border border-secondary text-center">나포장소</label>
<div class="col-sm-8 border border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="|${crackdownStatus.napoSeaPointLon} ${crackdownStatus.napoSeaPointLat} ${crackdownStatus.napoSeaPointDetail}|">
</div>
</div>
<div class="row my-1">
<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 my-1">
<label class="col-sm-2 col-form-label col-form-label-sm border border-secondary text-center">선장명</label>
<div class="col-sm-10 border border-secondary">
<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 my-1">
<label class="col-sm-2 col-form-label col-form-label-sm border border-secondary text-center">생년월일</label>
<div class="col-sm-4 border border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${sailor.birthdate}">
</div>
<label class="col-sm-2 col-form-label col-form-label-sm border border-secondary text-center">연락처</label>
<div class="col-sm-4 border border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${sailor.sailorContact}">
</div>
</div>
<div class="row my-1">
<label class="col-sm-2 col-form-label col-form-label-sm border border-secondary text-center">주소</label>
<div class="col-sm-4 border border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${sailor.residence}">
</div>
<label class="col-sm-2 col-form-label col-form-label-sm border border-secondary text-center">재범횟수</label>
<div class="col-sm-4 border border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${sailor.arrestHistory}">
</div>
</div>
<div class="row my-1">
<label class="col-sm-2 col-form-label col-form-label-sm border border-secondary text-center">비고</label>
<div class="col-sm-10 border border-secondary">
<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 my-1">
<label class="col-sm-2 col-form-label col-form-label-sm border border-secondary text-center">선주명</label>
<div class="col-sm-10 border border-secondary">
<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 my-1">
<label class="col-sm-2 col-form-label col-form-label-sm border border-secondary text-center">생년월일</label>
<div class="col-sm-4 border border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${sailor.birthdate}">
</div>
<label class="col-sm-2 col-form-label col-form-label-sm border border-secondary text-center">연락처</label>
<div class="col-sm-4 border border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${sailor.sailorContact}">
</div>
</div>
<div class="row my-1">
<label class="col-sm-2 col-form-label col-form-label-sm border border-secondary text-center">주소</label>
<div class="col-sm-4 border border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${sailor.residence}">
</div>
</div>
<div class="row my-1">
<label class="col-sm-2 col-form-label col-form-label-sm border border-secondary text-center">비고</label>
<div class="col-sm-10 border border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${sailor.note}">
</div>
</div>
</div>
</th:block>
</th:block>
</div>
<div class="row my-1">
<div class="col-auto">■ 어선 정보</div>
</div>
<div class="row my-1">
<label class="col-sm-1 col-form-label col-form-label-sm border border-secondary text-center">선명</label>
<div class="col-sm-5 border 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>
<label class="col-sm-1 col-form-label col-form-label-sm border border-secondary text-center">위반사항</label>
<div class="col-sm-5 border border-secondary">
<div class="row">
<th:block th:each="code:${vtList}">
<th:block th:each="violation:${crackdownStatus.violationList}">
<div class="col-6" th:if="${code.itemCd eq violation.violation}">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${code.itemValue}"/>
</div>
</th:block>
</th:block>
</div>
</div>
</div>
<div class="row my-1">
<label class="col-sm-1 col-form-label col-form-label-sm border border-secondary text-center">허가번호</label>
<div class="col-sm-2 border 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 border border-secondary text-center">국적</label>
<div class="col-sm-2 border 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 border border-secondary text-center">승선원</label>
<div class="col-sm-2 border border-secondary">
<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 border border-secondary text-center">톤수</label>
<div class="col-sm-2 border border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.fishingBoat.tonCnt}">
</div>
</div>
<div class="row my-1">
<label class="col-sm-1 col-form-label col-form-label-sm border border-secondary text-center">선종</label>
<div class="col-sm-2 border 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 border border-secondary text-center">선질</label>
<div class="col-sm-2 border 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 border border-secondary text-center">선적지</label>
<div class="col-sm-2 border 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 my-1">
<label class="col-sm-1 col-form-label col-form-label-sm border border-secondary text-center">범칙물</label>
<div class="col-sm-3 border border-secondary">
<div class="input-group w-auto">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.fishingBoat.offenseType}">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.fishingBoat.offenseWeight}">
</div>
</div>
<div class="col-sm-2 border border-secondary"></div>
<label class="col-sm-1 col-form-label col-form-label-sm border border-secondary text-center">범칙물 위판량</label>
<div class="col-sm-2 border border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.fishingBoat.offenseQuantity}">
</div>
<label class="col-sm-1 col-form-label col-form-label-sm border border-secondary text-center fs-11">범칙물 위판금액</label>
<div class="col-sm-2 border border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.fishingBoat.offenseAmount}">
</div>
</div>
<div class="row my-1">
<label class="col-sm-1 col-form-label col-form-label-sm border border-secondary text-center">범칙물 폐기량</label>
<div class="col-sm-2 border border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.fishingBoat.offenseIllegalWasteQuantity}">
</div>
<label class="col-sm-1 col-form-label col-form-label-sm border border-secondary text-center">담보금 미납액</label>
<div class="col-sm-2 border border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.fishingBoat.damboUnpaidAmount}">
</div>
<label class="col-sm-1 col-form-label col-form-label-sm border border-secondary text-center">담보금 납부액</label>
<div class="col-sm-2 border border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.fishingBoat.damboPayment}">
</div>
<label class="col-sm-1 col-form-label col-form-label-sm border border-secondary text-center fs-11">담보금 납부일시</label>
<div class="col-sm-2 border border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.fishingBoat.paymentPaymentDt}">
</div>
</div>
<div class="row my-1">
<label class="col-sm-1 col-form-label col-form-label-sm border border-secondary text-center">압수어구</label>
<div class="col-sm-11 border border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly
th:value="|틀: ${crackdownStatus.fishingBoat.confiscationFrame} 폭: ${crackdownStatus.fishingBoat.confiscationWidth} 조: ${crackdownStatus.fishingBoat.confiscationJo} 개: ${crackdownStatus.fishingBoat.confiscationGae} 기타: ${crackdownStatus.fishingBoat.confiscationEtc}|">
</div>
</div>
<div class="row my-1">
<div class="col-auto">■ 처리 결과</div>
</div>
<div class="row my-1">
<label class="col-sm-1 col-form-label col-form-label-sm border border-secondary text-center">처리현황</label>
<div class="col-sm-2 border 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 border border-secondary text-center">압송소요시간</label>
<div class="col-sm-2 border 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 border border-secondary text-center fs-11">영장청구 소요시간</label>
<div class="col-sm-2 border border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.processResult.warrantReqTakeTime}">
</div>
</div>
<div class="row my-1">
<label class="col-sm-1 col-form-label col-form-label-sm border border-secondary text-center">수사중지 여부</label>
<div class="col-sm-2 border border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.processResult.isIvsgtStop eq 'Y'?'중지':'수사중'}">
</div>
<label class="col-sm-1 col-form-label col-form-label-sm border border-secondary text-center">퇴거일</label>
<div class="col-sm-2 border border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.processResult.evictionDt}">
</div>
</div>
<div class="row my-1">
<label class="col-sm-1 col-form-label col-form-label-sm border border-secondary text-center">직접인계일</label>
<div class="col-sm-2 border 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 border border-secondary text-center">인계 해점</label>
<div class="col-sm-2 border 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 border border-secondary text-center">인계 함정</label>
<div class="col-sm-2 border 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 border border-secondary text-center">중측 인수함정</label>
<div class="col-sm-2 border border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.processResult.middleTakeoverBoat}">
</div>
</div>
<div class="row my-1">
<label class="col-sm-1 col-form-label col-form-label-sm border border-secondary text-center">위탁시작일</label>
<div class="col-sm-2 border 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 border border-secondary text-center">위탁종료일</label>
<div class="col-sm-2 border 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 border border-secondary text-center">몰수확정일</label>
<div class="col-sm-2 border border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.processResult.confiscationDt}">
</div>
</div>
<div class="row my-1">
<label class="col-sm-1 col-form-label col-form-label-sm border border-secondary text-center">폐선일</label>
<div class="col-sm-2 border 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 border border-secondary text-center">폐선종류</label>
<div class="col-sm-2 border 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>
<label class="col-sm-1 col-form-label col-form-label-sm border border-secondary text-center">환부일</label>
<div class="col-sm-2 border border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.processResult.returnDt}">
</div>
</div>
<div class="row my-1">
<label class="col-sm-1 col-form-label col-form-label-sm border border-secondary text-center">선장구속</label>
<div class="col-sm-2 border 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 border border-secondary text-center">항해장구속</label>
<div class="col-sm-2 border 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 border border-secondary text-center">기관장구속</label>
<div class="col-sm-2 border 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 my-1">
<label class="col-sm-1 col-form-label col-form-label-sm border border-secondary text-center">선원구속</label>
<div class="col-sm-11 border border-secondary">
<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-auto">
<div class="input-group">
<input type="text" class="form-control form-control-sm w-auto border-0" readonly th:value="${sailor.position eq 'POS005'?'기타 간부선원':'일반선원 또는 확인불가'}">
<input type="text" class="form-control form-control-sm w-auto border-0" readonly th:value="${sailor.sailorNameKr}">
<input type="text" class="form-control form-control-sm w-auto border-0" readonly th:value="${sailor.isRestriction eq 'Y'?'구속':'불구속'}">
</div>
</div>
</th:block>
</th:block>
</div>
</div>
</div>
<div class="row my-1">
<label class="col-sm-1 col-form-label col-form-label-sm border border-secondary text-center">추방인원</label>
<div class="col-sm-2 border border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.processResult.exileCnt}">
</div>
<label class="col-sm-1 col-form-label col-form-label-sm border border-secondary text-center">추방일</label>
<div class="col-sm-2 border 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 border border-secondary text-center">항공편</label>
<div class="col-sm-2 border border-secondary">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.processResult.flight}">
</div>
</div>
<div class="row mb-3">
<label class="col-sm-1 col-form-label col-form-label-sm border border-secondary text-center">출입국 담당자</label>
<div class="col-sm-4 border border-secondary">
<div class="input-group w-auto">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.processResult.immigrationOfficeName}">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.processResult.immigrationOfficeOfficerName}">
<input type="text" class="form-control form-control-sm border-0" readonly th:value="${crackdownStatus.processResult.immigrationOfficeOfficerContact}">
</div>
</div>
</div>
</div>
<div class="modal-footer">
<th:block th:if="${userSeq eq crackdownStatus.fishingBoat.wrtUserSeq or accessAuth eq 'ACC003'}"><!--작성자일 경우 수정 허용--><!--관리자일 경우 수정 허용-->
<button type="button" class="btn btn-warning" id="editFishingBoatBtn">수정</button>
</th:block>
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
</div>

View File

@ -36,7 +36,7 @@
<script type="text/javascript" th:src="@{/vendor/summernote-0.8.18-dist/summernote-lite.min.js}"></script> <script type="text/javascript" th:src="@{/vendor/summernote-0.8.18-dist/summernote-lite.min.js}"></script>
<script type="text/javascript" th:src="@{/vendor/summernote-0.8.18-dist/lang/summernote-ko-KR.min.js}"></script> <script type="text/javascript" th:src="@{/vendor/summernote-0.8.18-dist/lang/summernote-ko-KR.min.js}"></script>
<!--namo cross editor--> <!--namo cross editor-->
<script type="text/javascript" th:src="@{http://118.219.150.34:50571/Crosseditor/js/namo_scripteditor.js}"></script> <!--<script type="text/javascript" th:src="@{/Crosseditor/js/namo_scripteditor.js}"></script>-->
<!--sheetJs(excel)--> <!--sheetJs(excel)-->
<script type="text/javascript" th:src="@{/vendor/excel/FileSaver.min.js}"></script> <script type="text/javascript" th:src="@{/vendor/excel/FileSaver.min.js}"></script>