From 958366b7650a4aa83bec1855bd38f0314077fb32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=95=EC=84=B1=EC=98=81?= Date: Thu, 4 Dec 2025 10:25:50 +0900 Subject: [PATCH] =?UTF-8?q?=EC=B2=98=EB=A6=AC=EC=83=81=ED=83=9C=20?= =?UTF-8?q?=EA=B2=80=EC=83=89=EC=A1=B0=EA=B1=B4=20checkbox=20=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../registration/model/CarFfnlgTrgtVO.java | 3 +- .../registration/CarFfnlgTrgtMapper_maria.xml | 7 +- .../registration/list.jsp | 106 +++++++++++++----- 3 files changed, 87 insertions(+), 29 deletions(-) diff --git a/src/main/java/go/kr/project/carInspectionPenalty/registration/model/CarFfnlgTrgtVO.java b/src/main/java/go/kr/project/carInspectionPenalty/registration/model/CarFfnlgTrgtVO.java index 3a02eff..c1db3ea 100644 --- a/src/main/java/go/kr/project/carInspectionPenalty/registration/model/CarFfnlgTrgtVO.java +++ b/src/main/java/go/kr/project/carInspectionPenalty/registration/model/CarFfnlgTrgtVO.java @@ -6,6 +6,7 @@ import lombok.*; import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; +import java.util.List; /** * 자동차 과태료 대상 VO @@ -72,7 +73,7 @@ public class CarFfnlgTrgtVO extends PagingVO { private String schRcptYmdEnd; // 검색 종료 접수 일자 private String schVhclno; // 검색 차량번호 private String schOwnrNm; // 검색 소유자명 - private String schTaskPrcsSttsCd; // 검색 업무 처리 상태 코드 + private List schTaskPrcsSttsCd; // 검색 업무 처리 상태 코드 (다중 선택 가능) private String schInspYmdStart; // 검색 시작 검사 일자 private String schInspYmdEnd; // 검색 종료 검사 일자 } diff --git a/src/main/resources/mybatis/mapper/carInspectionPenalty/registration/CarFfnlgTrgtMapper_maria.xml b/src/main/resources/mybatis/mapper/carInspectionPenalty/registration/CarFfnlgTrgtMapper_maria.xml index 810e9b4..cb2e5c7 100644 --- a/src/main/resources/mybatis/mapper/carInspectionPenalty/registration/CarFfnlgTrgtMapper_maria.xml +++ b/src/main/resources/mybatis/mapper/carInspectionPenalty/registration/CarFfnlgTrgtMapper_maria.xml @@ -18,8 +18,11 @@ AND t.OWNR_NM LIKE CONCAT('%', #{schOwnrNm}, '%') - - AND t.TASK_PRCS_STTS_CD = #{schTaskPrcsSttsCd} + + AND t.TASK_PRCS_STTS_CD IN + + #{item} + AND t.INSP_YMD >= #{schInspYmdStart} diff --git a/src/main/webapp/WEB-INF/views/carInspectionPenalty/registration/list.jsp b/src/main/webapp/WEB-INF/views/carInspectionPenalty/registration/list.jsp index c51cb04..ce55146 100644 --- a/src/main/webapp/WEB-INF/views/carInspectionPenalty/registration/list.jsp +++ b/src/main/webapp/WEB-INF/views/carInspectionPenalty/registration/list.jsp @@ -43,12 +43,12 @@
  • 처리상태
  • - + + +
    • @@ -117,7 +117,12 @@ var schInspYmdEnd = $.trim(nvl($("#schInspYmdEnd").val(), "")); var schVhclno = $.trim(nvl($("#schVhclno").val(), "")); var schOwnrNm = $.trim(nvl($("#schOwnrNm").val(), "")); - var schTaskPrcsSttsCd = $.trim(nvl($("#schTaskPrcsSttsCd").val(), "")); + + // 체크박스에서 선택된 값들을 배열로 수집 + var schTaskPrcsSttsCd = []; + $("input[name='schTaskPrcsSttsCd']:checked").each(function() { + schTaskPrcsSttsCd.push($(this).val()); + }); SEARCH_COND.schRcptYmdStart = schRcptYmdStart.replace(/-/g, ''); SEARCH_COND.schRcptYmdEnd = schRcptYmdEnd.replace(/-/g, ''); @@ -139,7 +144,12 @@ if (SEARCH_COND.schInspYmdEnd) params.push('schInspYmdEnd=' + encodeURIComponent(SEARCH_COND.schInspYmdEnd)); if (SEARCH_COND.schVhclno) params.push('schVhclno=' + encodeURIComponent(SEARCH_COND.schVhclno)); if (SEARCH_COND.schOwnrNm) params.push('schOwnrNm=' + encodeURIComponent(SEARCH_COND.schOwnrNm)); - if (SEARCH_COND.schTaskPrcsSttsCd) params.push('schTaskPrcsSttsCd=' + encodeURIComponent(SEARCH_COND.schTaskPrcsSttsCd)); + // 배열로 전달 + if (SEARCH_COND.schTaskPrcsSttsCd && SEARCH_COND.schTaskPrcsSttsCd.length > 0) { + SEARCH_COND.schTaskPrcsSttsCd.forEach(function(val) { + params.push('schTaskPrcsSttsCd=' + encodeURIComponent(val)); + }); + } return baseUrl + (params.length ? ('?' + params.join('&')) : ''); }; @@ -172,21 +182,31 @@ }; // 처리상태 코드 -> 텍스트 변환 - var getTaskPrcsSttsCdText = function(code) { - if (!code) return '전체'; - var $option = $("#schTaskPrcsSttsCd option[value='" + code + "']"); - return $option.length > 0 ? $option.text() : code; + var getTaskPrcsSttsCdText = function(codeArray) { + if (!codeArray || codeArray.length === 0) return '전체'; + var textArray = []; + codeArray.forEach(function(code) { + var $checkbox = $("input[name='schTaskPrcsSttsCd'][value='" + code + "']"); + if ($checkbox.length > 0) { + textArray.push($checkbox.parent().text().trim()); + } else { + textArray.push(code); + } + }); + return textArray.join(', '); }; // 값 포맷팅 함수 var formatValue = function(field, value) { - if (!value) return '(공백)'; if (field.indexOf('Ymd') > -1) { - return formatDate(value); + return value ? formatDate(value) : '(공백)'; } if (field === 'schTaskPrcsSttsCd') { return getTaskPrcsSttsCdText(value); } + if (!value || (Array.isArray(value) && value.length === 0)) { + return '(공백)'; + } return value; }; @@ -196,16 +216,38 @@ 'schVhclno', 'schOwnrNm', 'schTaskPrcsSttsCd']; searchFields.forEach(function(field) { - var currentValue = SEARCH_COND[field] || ''; - var lastValue = LAST_GRID_SEARCH_COND[field] || ''; - - if (currentValue !== lastValue) { - differences.push({ - field: field, - label: fieldLabels[field], - oldValue: lastValue, - newValue: currentValue - }); + var currentValue = SEARCH_COND[field]; + var lastValue = LAST_GRID_SEARCH_COND[field]; + + // 배열 비교 (처리상태) + if (field === 'schTaskPrcsSttsCd') { + currentValue = currentValue || []; + lastValue = lastValue || []; + + // 배열을 정렬해서 비교 + var currentStr = currentValue.slice().sort().join(','); + var lastStr = lastValue.slice().sort().join(','); + + if (currentStr !== lastStr) { + differences.push({ + field: field, + label: fieldLabels[field], + oldValue: lastValue, + newValue: currentValue + }); + } + } else { + currentValue = currentValue || ''; + lastValue = lastValue || ''; + + if (currentValue !== lastValue) { + differences.push({ + field: field, + label: fieldLabels[field], + oldValue: lastValue, + newValue: currentValue + }); + } } }); @@ -626,7 +668,8 @@ $("#schInspYmdEnd").val(""); $("#schVhclno").val(""); $("#schOwnrNm").val(""); - $("#schTaskPrcsSttsCd").val(""); + // 체크박스 모두 해제 + $("input[name='schTaskPrcsSttsCd']").prop('checked', false); self.grid.reload(); }); @@ -678,7 +721,18 @@ // 검색 조건 파라미터 추가 setSearchCond(); $.each(SEARCH_COND, function(key, value) { - if (value) { + if (key === 'schTaskPrcsSttsCd') { + // 배열인 경우 각각 추가 + if (value && value.length > 0) { + value.forEach(function(val) { + $form.append($('', { + type: 'hidden', + name: key, + value: val + })); + }); + } + } else if (value) { $form.append($('', { type: 'hidden', name: key,