단속의 이행이력 팝업 및 버튼 추가
parent
1dce933717
commit
b94a38b359
@ -0,0 +1,93 @@
|
||||
package go.kr.project.crdn.crndRegistAndView.main.controller;
|
||||
|
||||
import egovframework.constant.TilesConstants;
|
||||
import go.kr.project.crdn.crndRegistAndView.main.model.CrdnImpltTaskVO;
|
||||
import go.kr.project.crdn.crndRegistAndView.main.model.CrdnImpltTrprInfoVO;
|
||||
import go.kr.project.crdn.crndRegistAndView.main.service.CrdnImpltTaskHistoryService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* packageName : go.kr.project.crdn.crndRegistAndView.main.controller
|
||||
* fileName : CrdnImpltTaskHistoryController
|
||||
* author : 시스템 관리자
|
||||
* date : 2025-01-28
|
||||
* description : 이행정보 이력 조회 관련 요청을 처리하는 컨트롤러
|
||||
* 중요한 로직 주석: 이행정보 이력 팝업 화면 제공
|
||||
* ===========================================================
|
||||
* DATE AUTHOR NOTE
|
||||
* -----------------------------------------------------------
|
||||
* 2025-01-28 시스템 관리자 최초 생성
|
||||
*/
|
||||
@Controller
|
||||
@RequestMapping("/crdn/crndRegistAndView/crdnImpltTaskHistory")
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
@Tag(name = "이행정보 이력 조회", description = "이행정보 이력 조회 관련 API")
|
||||
public class CrdnImpltTaskHistoryController {
|
||||
|
||||
private final CrdnImpltTaskHistoryService crdnImpltTaskHistoryService;
|
||||
|
||||
/**
|
||||
* 이행정보 이력 팝업 화면을 제공합니다.
|
||||
*
|
||||
* @param crdnYr 단속 연도
|
||||
* @param crdnNo 단속 번호
|
||||
* @return 이행정보 이력 팝업 화면
|
||||
*/
|
||||
@GetMapping("/impltTaskHistoryPopup.do")
|
||||
@Operation(summary = "이행정보 이력 팝업", description = "이행정보 이력 팝업 화면을 제공합니다.")
|
||||
public ModelAndView impltTaskHistoryPopup(
|
||||
@Parameter(description = "단속 연도") @RequestParam String crdnYr,
|
||||
@Parameter(description = "단속 번호") @RequestParam String crdnNo) {
|
||||
|
||||
log.debug("이행정보 이력 팝업 요청 - 단속연도: {}, 단속번호: {}", crdnYr, crdnNo);
|
||||
|
||||
ModelAndView mav = new ModelAndView("crdn/crndRegistAndView/main/crdnImpltTaskHistory/impltTaskHistoryPopup" + TilesConstants.POPUP);
|
||||
|
||||
// 기본 파라미터 설정
|
||||
mav.addObject("crdnYr", crdnYr);
|
||||
mav.addObject("crdnNo", crdnNo);
|
||||
|
||||
CrdnImpltTaskVO paramVO = new CrdnImpltTaskVO();
|
||||
paramVO.setCrdnYr(crdnYr);
|
||||
paramVO.setCrdnNo(crdnNo);
|
||||
|
||||
// 단속 기본 정보 조회 (이력이 없어도 주소 정보를 표시하기 위해)
|
||||
CrdnImpltTaskVO crdnBasicInfo = crdnImpltTaskHistoryService.selectCrdnBasicInfo(paramVO);
|
||||
mav.addObject("crdnBasicInfo", crdnBasicInfo);
|
||||
|
||||
// 이행정보 이력 목록 조회 (코드 테이블 기준으로 LEFT OUTER JOIN하여 모든 구분 표시)
|
||||
// 중요로직: 쿼리에서 이미 모든 이행업무구분 코드를 포함하여 반환하므로, 데이터가 없는 경우 impltInfoId가 NULL
|
||||
List<CrdnImpltTaskVO> impltInfoHistoryList = crdnImpltTaskHistoryService.selectImpltInfoHistoryList(paramVO);
|
||||
mav.addObject("impltInfoHistoryList", impltInfoHistoryList);
|
||||
|
||||
// 각 이행정보별로 대상자 목록을 조회하여 Map에 저장
|
||||
Map<String, List<CrdnImpltTrprInfoVO>> impltTrprInfoMap = new HashMap<>();
|
||||
for (CrdnImpltTaskVO impltInfo : impltInfoHistoryList) {
|
||||
// impltInfoId가 null이면 데이터가 없는 것이므로 스킵
|
||||
if (impltInfo.getImpltInfoId() != null) {
|
||||
CrdnImpltTrprInfoVO trprParam = new CrdnImpltTrprInfoVO();
|
||||
trprParam.setSchImpltInfoId(impltInfo.getImpltInfoId());
|
||||
List<CrdnImpltTrprInfoVO> trprList = crdnImpltTaskHistoryService.selectImpltTrprInfoHistoryList(trprParam);
|
||||
impltTrprInfoMap.put(impltInfo.getImpltInfoId(), trprList);
|
||||
}
|
||||
}
|
||||
mav.addObject("impltTrprInfoMap", impltTrprInfoMap);
|
||||
|
||||
return mav;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,19 @@
|
||||
package go.kr.project.crdn.crndRegistAndView.main.mapper;
|
||||
|
||||
import go.kr.project.crdn.crndRegistAndView.main.model.CrdnImpltTaskVO;
|
||||
import go.kr.project.crdn.crndRegistAndView.main.model.CrdnImpltTrprInfoVO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Mapper
|
||||
public interface CrdnImpltTaskHistoryMapper {
|
||||
|
||||
CrdnImpltTaskVO selectCrdnBasicInfo(CrdnImpltTaskVO vo);
|
||||
|
||||
List<CrdnImpltTaskVO> selectImpltInfoHistoryList(CrdnImpltTaskVO vo);
|
||||
|
||||
List<CrdnImpltTrprInfoVO> selectImpltTrprInfoHistoryList(CrdnImpltTrprInfoVO vo);
|
||||
|
||||
}
|
||||
@ -0,0 +1,45 @@
|
||||
package go.kr.project.crdn.crndRegistAndView.main.service;
|
||||
|
||||
import go.kr.project.crdn.crndRegistAndView.main.model.CrdnImpltTaskVO;
|
||||
import go.kr.project.crdn.crndRegistAndView.main.model.CrdnImpltTrprInfoVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* packageName : go.kr.project.crdn.crndRegistAndView.main.service
|
||||
* fileName : CrdnImpltTaskHistoryService
|
||||
* author : 시스템 관리자
|
||||
* date : 2025-01-28
|
||||
* description : 이행정보 이력 조회 서비스 인터페이스
|
||||
* ===========================================================
|
||||
* DATE AUTHOR NOTE
|
||||
* -----------------------------------------------------------
|
||||
* 2025-01-28 시스템 관리자 최초 생성
|
||||
*/
|
||||
public interface CrdnImpltTaskHistoryService {
|
||||
|
||||
/**
|
||||
* 단속 기본 정보 및 위치 정보를 조회합니다.
|
||||
*
|
||||
* @param vo 조회 조건 (단속연도, 단속번호)
|
||||
* @return 단속 기본 정보
|
||||
*/
|
||||
CrdnImpltTaskVO selectCrdnBasicInfo(CrdnImpltTaskVO vo);
|
||||
|
||||
/**
|
||||
* 이행정보 이력 목록을 조회합니다.
|
||||
*
|
||||
* @param vo 조회 조건 (단속연도, 단속번호)
|
||||
* @return 이행정보 이력 목록
|
||||
*/
|
||||
List<CrdnImpltTaskVO> selectImpltInfoHistoryList(CrdnImpltTaskVO vo);
|
||||
|
||||
/**
|
||||
* 이행 대상자 정보 목록을 조회합니다.
|
||||
*
|
||||
* @param vo 조회 조건 (이행정보ID)
|
||||
* @return 이행 대상자 정보 목록
|
||||
*/
|
||||
List<CrdnImpltTrprInfoVO> selectImpltTrprInfoHistoryList(CrdnImpltTrprInfoVO vo);
|
||||
|
||||
}
|
||||
@ -0,0 +1,67 @@
|
||||
package go.kr.project.crdn.crndRegistAndView.main.service.impl;
|
||||
|
||||
import go.kr.project.crdn.crndRegistAndView.main.mapper.CrdnImpltTaskHistoryMapper;
|
||||
import go.kr.project.crdn.crndRegistAndView.main.model.CrdnImpltTaskVO;
|
||||
import go.kr.project.crdn.crndRegistAndView.main.model.CrdnImpltTrprInfoVO;
|
||||
import go.kr.project.crdn.crndRegistAndView.main.service.CrdnImpltTaskHistoryService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* packageName : go.kr.project.crdn.crndRegistAndView.main.service.impl
|
||||
* fileName : CrdnImpltTaskHistoryServiceImpl
|
||||
* author : 시스템 관리자
|
||||
* date : 2025-01-28
|
||||
* description : 이행정보 이력 조회 서비스 구현체
|
||||
* ===========================================================
|
||||
* DATE AUTHOR NOTE
|
||||
* -----------------------------------------------------------
|
||||
* 2025-01-28 시스템 관리자 최초 생성
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class CrdnImpltTaskHistoryServiceImpl implements CrdnImpltTaskHistoryService {
|
||||
|
||||
private final CrdnImpltTaskHistoryMapper mapper;
|
||||
|
||||
/**
|
||||
* 단속 기본 정보 및 위치 정보를 조회합니다.
|
||||
*
|
||||
* @param vo 조회 조건 (단속연도, 단속번호)
|
||||
* @return 단속 기본 정보
|
||||
*/
|
||||
@Override
|
||||
public CrdnImpltTaskVO selectCrdnBasicInfo(CrdnImpltTaskVO vo) {
|
||||
log.debug("단속 기본 정보 조회 - 단속연도: {}, 단속번호: {}", vo.getCrdnYr(), vo.getCrdnNo());
|
||||
return mapper.selectCrdnBasicInfo(vo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 이행정보 이력 목록을 조회합니다.
|
||||
*
|
||||
* @param vo 조회 조건 (단속연도, 단속번호)
|
||||
* @return 이행정보 이력 목록
|
||||
*/
|
||||
@Override
|
||||
public List<CrdnImpltTaskVO> selectImpltInfoHistoryList(CrdnImpltTaskVO vo) {
|
||||
log.debug("이행정보 이력 목록 조회 - 단속연도: {}, 단속번호: {}", vo.getCrdnYr(), vo.getCrdnNo());
|
||||
return mapper.selectImpltInfoHistoryList(vo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 이행 대상자 정보 목록을 조회합니다.
|
||||
*
|
||||
* @param vo 조회 조건 (이행정보ID)
|
||||
* @return 이행 대상자 정보 목록
|
||||
*/
|
||||
@Override
|
||||
public List<CrdnImpltTrprInfoVO> selectImpltTrprInfoHistoryList(CrdnImpltTrprInfoVO vo) {
|
||||
log.debug("이행 대상자 정보 목록 조회 - 이행정보ID: {}", vo.getSchImpltInfoId());
|
||||
return mapper.selectImpltTrprInfoHistoryList(vo);
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,101 @@
|
||||
<?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="go.kr.project.crdn.crndRegistAndView.main.mapper.CrdnImpltTaskHistoryMapper">
|
||||
|
||||
<!-- ==================== 이행정보(TB_IMPLT_INFO) 히스토리 관련 쿼리 ==================== -->
|
||||
|
||||
<!-- ==================== 단속 기본 정보 조회 쿼리 ==================== -->
|
||||
<select id="selectCrdnBasicInfo" parameterType="CrdnImpltTaskVO" resultType="CrdnImpltTaskVO">
|
||||
/* CrdnImpltTaskHistoryMapper.selectCrdnBasicInfo : 단속 기본 정보 및 위치 정보 조회 */
|
||||
SELECT
|
||||
c.CRDN_YR,
|
||||
c.CRDN_NO,
|
||||
c.DSCL_YMD,
|
||||
c.EXMNR,
|
||||
c.RGN_SE_CD,
|
||||
rgnSeCd.CD_NM as RGN_SE_CD_NM,
|
||||
c.SGG_CD,
|
||||
sggCd.CD_NM as SGG_CD_NM,
|
||||
p.STDG_EMD_CD,
|
||||
stdgEmdCd.CD_NM as STDG_EMD_CD_NM,
|
||||
p.LOTNO_ADDR,
|
||||
p.LOTNO_MNO,
|
||||
p.LOTNO_SNO
|
||||
FROM tb_crdn c
|
||||
INNER JOIN tb_pstn_info p ON p.CRDN_YR = c.CRDN_YR AND p.CRDN_NO = c.CRDN_NO AND p.DEL_YN = 'N'
|
||||
LEFT JOIN tb_cd_detail rgnSeCd ON rgnSeCd.CD_GROUP_ID = 'RGN_SE_CD' AND rgnSeCd.CD_ID = c.RGN_SE_CD
|
||||
LEFT JOIN tb_cd_detail sggCd ON sggCd.CD_GROUP_ID = 'SGG_CD' AND sggCd.CD_ID = c.SGG_CD
|
||||
LEFT JOIN tb_cd_detail stdgEmdCd ON stdgEmdCd.CD_GROUP_ID = 'STDG_EMD_CD' AND stdgEmdCd.CD_ID = p.STDG_EMD_CD
|
||||
WHERE c.CRDN_YR = #{crdnYr}
|
||||
AND c.CRDN_NO = #{crdnNo}
|
||||
AND c.DEL_YN = 'N'
|
||||
</select>
|
||||
|
||||
<!-- 중요로직: 코드 테이블을 메인으로 LEFT OUTER JOIN하여 모든 이행업무구분 코드를 항상 표시 -->
|
||||
<select id="selectImpltInfoHistoryList" parameterType="CrdnImpltTaskVO" resultType="CrdnImpltTaskVO">
|
||||
/* CrdnImpltTaskHistoryMapper.selectImpltInfoHistoryList : 이행정보 이력 목록 조회 (전체 구분 표시) */
|
||||
SELECT
|
||||
impltTaskSe.CD_ID as IMPLT_TASK_SE_CD,
|
||||
impltTaskSe.CD_NM as IMPLT_TASK_SE_CD_NM,
|
||||
ii.IMPLT_INFO_ID,
|
||||
ii.SGG_CD,
|
||||
ii.CRDN_YR,
|
||||
ii.CRDN_NO,
|
||||
ii.IMPLT_BGNG_YMD,
|
||||
ii.IMPLT_END_YMD,
|
||||
ii.REG_DT,
|
||||
ii.RGTR,
|
||||
ii.MDFCN_DT,
|
||||
ii.MDFR,
|
||||
ii.DEL_YN,
|
||||
ii.DEL_DT,
|
||||
ii.DLTR,
|
||||
-- 간격일 계산 (MariaDB DATEDIFF 함수 사용)
|
||||
CASE
|
||||
WHEN ii.IMPLT_BGNG_YMD IS NOT NULL AND ii.IMPLT_END_YMD IS NOT NULL
|
||||
THEN DATEDIFF(STR_TO_DATE(ii.IMPLT_END_YMD, '%Y%m%d'), STR_TO_DATE(ii.IMPLT_BGNG_YMD, '%Y%m%d'))
|
||||
ELSE 0
|
||||
END as impltDaysCnt,
|
||||
sggCd.CD_NM as sggCdNm
|
||||
FROM tb_cd_detail impltTaskSe
|
||||
LEFT OUTER JOIN TB_IMPLT_INFO ii ON ii.IMPLT_TASK_SE_CD = impltTaskSe.CD_ID
|
||||
AND ii.CRDN_YR = #{crdnYr}
|
||||
AND ii.CRDN_NO = #{crdnNo}
|
||||
AND ii.DEL_YN = 'N'
|
||||
LEFT JOIN tb_cd_detail sggCd ON sggCd.CD_GROUP_ID = 'SGG_CD' AND sggCd.CD_ID = ii.SGG_CD
|
||||
WHERE impltTaskSe.CD_GROUP_ID = 'IMPLT_TASK_SE_CD'
|
||||
ORDER BY impltTaskSe.SORT_ORDR ASC
|
||||
</select>
|
||||
|
||||
<!-- ==================== 이행 대상자 정보(TB_IMPLT_TRPR_INFO) 관련 쿼리 ==================== -->
|
||||
<select id="selectImpltTrprInfoHistoryList" parameterType="CrdnImpltTrprInfoVO" resultType="CrdnImpltTrprInfoVO">
|
||||
/* LevyMapper.selectImpltTrprInfoList : 이행 대상자 정보 목록 조회 */
|
||||
SELECT
|
||||
iti.IMPLT_TRPR_INFO_ID AS IMPLT_TRPR_INFO_ID,
|
||||
iti.SGG_CD,
|
||||
iti.IMPLT_INFO_ID,
|
||||
iti.IMPLT_TRPR_FLNM,
|
||||
iti.IMPLT_TRPR_ADDR,
|
||||
iti.IMPLT_TRPR_DADDR,
|
||||
iti.IMPLT_TRPR_ZIP,
|
||||
iti.IMPLT_TRPR_SE_CD,
|
||||
MIN(iti.OWNR_ACTR_INFO_ID) as OWNR_ACTR_INFO_ID,
|
||||
-- 코드성 데이터 조인 (코드명)
|
||||
impltTrprSe.CD_NM as IMPLT_TRPR_SE_CD_NM,
|
||||
sggCd.CD_NM as SGG_CD_NM
|
||||
FROM TB_IMPLT_TRPR_INFO iti
|
||||
/* 중요로직: 메인 데이터 삭제 시 이행대상자가 조회되지 않도록 INNER JOIN 적용 */
|
||||
INNER JOIN TB_IMPLT_INFO ii ON iti.IMPLT_INFO_ID = ii.IMPLT_INFO_ID AND ii.DEL_YN = 'N'
|
||||
INNER JOIN tb_crdn c ON ii.CRDN_YR = c.CRDN_YR AND ii.CRDN_NO = c.CRDN_NO AND c.DEL_YN = 'N'
|
||||
INNER JOIN tb_pstn_info p ON p.CRDN_YR = c.CRDN_YR AND p.CRDN_NO = c.CRDN_NO AND p.DEL_YN = 'N'
|
||||
INNER JOIN tb_act_info act ON act.CRDN_YR = c.CRDN_YR AND act.CRDN_NO = c.CRDN_NO AND act.DEL_YN = 'N' AND act.ACTN_PRCS_STTS_CD != '3'
|
||||
-- 코드성 데이터 조인
|
||||
LEFT JOIN tb_cd_detail impltTrprSe ON impltTrprSe.CD_GROUP_ID = 'IMPLT_TRPR_SE_CD' AND impltTrprSe.CD_ID = iti.IMPLT_TRPR_SE_CD
|
||||
LEFT JOIN tb_cd_detail sggCd ON sggCd.CD_GROUP_ID = 'SGG_CD' AND sggCd.CD_ID = iti.SGG_CD
|
||||
WHERE iti.IMPLT_INFO_ID = #{schImpltInfoId}
|
||||
AND iti.DEL_YN = 'N'
|
||||
group by iti.SGG_CD, iti.IMPLT_INFO_ID, iti.IMPLT_TRPR_FLNM, iti.IMPLT_TRPR_ADDR, iti.IMPLT_TRPR_DADDR, iti.IMPLT_TRPR_ZIP, iti.IMPLT_TRPR_SE_CD
|
||||
ORDER BY iti.IMPLT_TRPR_SE_CD, iti.IMPLT_TRPR_FLNM
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@ -0,0 +1,178 @@
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
|
||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
||||
<%@ taglib prefix="dateUtil" uri="http://egovframework.go.kr/functions/date-util" %>
|
||||
|
||||
<!-- 이행정보 이력 팝업 -->
|
||||
<div class="popup_wrap">
|
||||
<div class="popup_inner">
|
||||
<div class="popup_tit">
|
||||
<h2 class="tit" id="popupTitle">
|
||||
이행정보 이력
|
||||
</h2>
|
||||
<a href="#" class="pop-x-btn modalclose" id="btnCloseTop"></a>
|
||||
</div>
|
||||
|
||||
<div class="popup_con">
|
||||
<div class="cash_tables">
|
||||
<table>
|
||||
<colgroup>
|
||||
<col style="width: 120px;" />
|
||||
<col style="width: 120px;" />
|
||||
<col style="width: 150px;" />
|
||||
<col />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>단속 연도</th>
|
||||
<th>단속 번호</th>
|
||||
<th>법정동</th>
|
||||
<th>위치 주소</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>${crdnYr}</td>
|
||||
<td>${crdnNo}</td>
|
||||
<c:choose>
|
||||
<c:when test="${not empty crdnBasicInfo}">
|
||||
<td>${crdnBasicInfo.stdgEmdCdNm}</td>
|
||||
<td class="text-left">
|
||||
${crdnBasicInfo.lotnoAddr}
|
||||
<c:if test="${not empty crdnBasicInfo.lotnoMno}">
|
||||
${crdnBasicInfo.lotnoMno}
|
||||
<c:if test="${not empty crdnBasicInfo.lotnoSno}">
|
||||
-${crdnBasicInfo.lotnoSno}
|
||||
</c:if>
|
||||
</c:if>
|
||||
</td>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- 이행정보 이력 목록 -->
|
||||
<!-- 중요로직: 쿼리에서 LEFT OUTER JOIN으로 모든 이행업무구분 코드를 가져오므로, impltInfoId가 null이면 "등록된 내용없습니다" 표시 -->
|
||||
<div class="history-list">
|
||||
<c:forEach var="impltInfo" items="${impltInfoHistoryList}" varStatus="status">
|
||||
<div class="history-item">
|
||||
<!-- 이행정보 제목 -->
|
||||
<h3>
|
||||
${status.index + 1}. ${impltInfo.impltTaskSeCdNm}
|
||||
</h3>
|
||||
|
||||
<c:choose>
|
||||
<c:when test="${empty impltInfo.impltInfoId}">
|
||||
<!-- 등록된 이행정보가 없는 경우 -->
|
||||
<div class="history-empty-message">
|
||||
등록된 내용없습니다.
|
||||
</div>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<!-- 이행정보 상세 -->
|
||||
<div class="history-detail">
|
||||
<table class="detail-table">
|
||||
<tr>
|
||||
<th>이행 시작일</th>
|
||||
<td>${dateUtil:formatDateString(impltInfo.impltBgngYmd)}</td>
|
||||
<th>이행 종료일</th>
|
||||
<td>${dateUtil:formatDateString(impltInfo.impltEndYmd)}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- 이행 대상자 목록 -->
|
||||
<div class="target-person-list">
|
||||
<h4>
|
||||
▶ 이행 대상자 목록
|
||||
</h4>
|
||||
<c:set var="trprList" value="${impltTrprInfoMap[impltInfo.impltInfoId]}" />
|
||||
<c:choose>
|
||||
<c:when test="${empty trprList}">
|
||||
<div class="target-person-empty">
|
||||
등록된 이행 대상자가 없습니다.
|
||||
</div>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<ul>
|
||||
<c:forEach var="trpr" items="${trprList}" varStatus="trprStatus">
|
||||
<li class="target-person-item">
|
||||
<strong>${trprStatus.index + 1}. ${trpr.impltTrprFlnm}</strong>
|
||||
<span class="target-person-type">(${trpr.impltTrprSeCdNm})</span>
|
||||
<div class="target-person-detail">
|
||||
<span>주소: ${trpr.impltTrprZip} ${trpr.impltTrprAddr} ${trpr.impltTrprDaddr}</span>
|
||||
</div>
|
||||
</li>
|
||||
</c:forEach>
|
||||
</ul>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</div>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 팝업 버튼 -->
|
||||
<div class="popup_foot">
|
||||
<button type="button" class="newbtns bg2 modalclose" id="btnClose">닫기</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
/**
|
||||
* 이행정보 이력 팝업 스크립트
|
||||
* 중요한 로직 주석: 이행정보 이력을 조회하여 표시하는 팝업
|
||||
*/
|
||||
(function(window, $) {
|
||||
'use strict';
|
||||
|
||||
var ImpltTaskHistoryPopup = {
|
||||
/**
|
||||
* 이벤트 초기화
|
||||
*/
|
||||
eventBindEvents: function() {
|
||||
var self = this;
|
||||
|
||||
// 닫기 버튼 이벤트 바인딩
|
||||
$('.modalclose').on('click', function(e) {
|
||||
e.preventDefault();
|
||||
self.cancel();
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* 팝업 취소 처리
|
||||
* 중요한 로직 주석: 팝업창을 닫는 기능을 제공합니다.
|
||||
*/
|
||||
cancel: function() {
|
||||
window.close();
|
||||
},
|
||||
|
||||
/**
|
||||
* 초기화
|
||||
*/
|
||||
init: function() {
|
||||
// 이벤트 핸들러 설정
|
||||
this.eventBindEvents();
|
||||
}
|
||||
};
|
||||
|
||||
// 초기화 실행
|
||||
$(document).ready(function() {
|
||||
ImpltTaskHistoryPopup.init();
|
||||
});
|
||||
|
||||
})(window, jQuery);
|
||||
</script>
|
||||
Loading…
Reference in New Issue