처리상태 검색조건 checkbox 로 변경

main
박성영 2 weeks ago
parent 95d81d3de8
commit 958366b765

@ -6,6 +6,7 @@ import lombok.*;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
/** /**
* VO * VO
@ -72,7 +73,7 @@ public class CarFfnlgTrgtVO extends PagingVO {
private String schRcptYmdEnd; // 검색 종료 접수 일자 private String schRcptYmdEnd; // 검색 종료 접수 일자
private String schVhclno; // 검색 차량번호 private String schVhclno; // 검색 차량번호
private String schOwnrNm; // 검색 소유자명 private String schOwnrNm; // 검색 소유자명
private String schTaskPrcsSttsCd; // 검색 업무 처리 상태 코드 private List<String> schTaskPrcsSttsCd; // 검색 업무 처리 상태 코드 (다중 선택 가능)
private String schInspYmdStart; // 검색 시작 검사 일자 private String schInspYmdStart; // 검색 시작 검사 일자
private String schInspYmdEnd; // 검색 종료 검사 일자 private String schInspYmdEnd; // 검색 종료 검사 일자
} }

@ -18,8 +18,11 @@
<if test='schOwnrNm != null and schOwnrNm != ""'> <if test='schOwnrNm != null and schOwnrNm != ""'>
AND t.OWNR_NM LIKE CONCAT('%', #{schOwnrNm}, '%') AND t.OWNR_NM LIKE CONCAT('%', #{schOwnrNm}, '%')
</if> </if>
<if test='schTaskPrcsSttsCd != null and schTaskPrcsSttsCd != ""'> <if test='schTaskPrcsSttsCd != null and schTaskPrcsSttsCd.size() > 0'>
AND t.TASK_PRCS_STTS_CD = #{schTaskPrcsSttsCd} AND t.TASK_PRCS_STTS_CD IN
<foreach collection="schTaskPrcsSttsCd" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if> </if>
<if test='schInspYmdStart != null and schInspYmdStart != ""'> <if test='schInspYmdStart != null and schInspYmdStart != ""'>
AND t.INSP_YMD &gt;= #{schInspYmdStart} AND t.INSP_YMD &gt;= #{schInspYmdStart}

@ -43,12 +43,12 @@
</li> </li>
<li class="th">처리상태</li> <li class="th">처리상태</li>
<li> <li>
<select id="schTaskPrcsSttsCd" name="schTaskPrcsSttsCd" class="input" style="width: 120px;"> <c:forEach var="code" items="${taskPrcsSttsCdList}">
<option value="">전체</option> <label style="margin-right: 10px; cursor: pointer;">
<c:forEach var="code" items="${taskPrcsSttsCdList}"> <input type="checkbox" name="schTaskPrcsSttsCd" value="${code.cdId}" class="schTaskPrcsSttsCdCheckbox"/>
<option value="${code.cdId}">${code.cdNm}</option> ${code.cdNm}
</c:forEach> </label>
</select> </c:forEach>
</li> </li>
</ul> </ul>
<ul class="rig2"> <ul class="rig2">
@ -117,7 +117,12 @@
var schInspYmdEnd = $.trim(nvl($("#schInspYmdEnd").val(), "")); var schInspYmdEnd = $.trim(nvl($("#schInspYmdEnd").val(), ""));
var schVhclno = $.trim(nvl($("#schVhclno").val(), "")); var schVhclno = $.trim(nvl($("#schVhclno").val(), ""));
var schOwnrNm = $.trim(nvl($("#schOwnrNm").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.schRcptYmdStart = schRcptYmdStart.replace(/-/g, '');
SEARCH_COND.schRcptYmdEnd = schRcptYmdEnd.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.schInspYmdEnd) params.push('schInspYmdEnd=' + encodeURIComponent(SEARCH_COND.schInspYmdEnd));
if (SEARCH_COND.schVhclno) params.push('schVhclno=' + encodeURIComponent(SEARCH_COND.schVhclno)); 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.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('&')) : ''); return baseUrl + (params.length ? ('?' + params.join('&')) : '');
}; };
@ -172,21 +182,31 @@
}; };
// 처리상태 코드 -> 텍스트 변환 // 처리상태 코드 -> 텍스트 변환
var getTaskPrcsSttsCdText = function(code) { var getTaskPrcsSttsCdText = function(codeArray) {
if (!code) return '전체'; if (!codeArray || codeArray.length === 0) return '전체';
var $option = $("#schTaskPrcsSttsCd option[value='" + code + "']"); var textArray = [];
return $option.length > 0 ? $option.text() : code; 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) { var formatValue = function(field, value) {
if (!value) return '(공백)';
if (field.indexOf('Ymd') > -1) { if (field.indexOf('Ymd') > -1) {
return formatDate(value); return value ? formatDate(value) : '(공백)';
} }
if (field === 'schTaskPrcsSttsCd') { if (field === 'schTaskPrcsSttsCd') {
return getTaskPrcsSttsCdText(value); return getTaskPrcsSttsCdText(value);
} }
if (!value || (Array.isArray(value) && value.length === 0)) {
return '(공백)';
}
return value; return value;
}; };
@ -196,16 +216,38 @@
'schVhclno', 'schOwnrNm', 'schTaskPrcsSttsCd']; 'schVhclno', 'schOwnrNm', 'schTaskPrcsSttsCd'];
searchFields.forEach(function(field) { searchFields.forEach(function(field) {
var currentValue = SEARCH_COND[field] || ''; var currentValue = SEARCH_COND[field];
var lastValue = LAST_GRID_SEARCH_COND[field] || ''; var lastValue = LAST_GRID_SEARCH_COND[field];
if (currentValue !== lastValue) { // 배열 비교 (처리상태)
differences.push({ if (field === 'schTaskPrcsSttsCd') {
field: field, currentValue = currentValue || [];
label: fieldLabels[field], lastValue = lastValue || [];
oldValue: lastValue,
newValue: currentValue // 배열을 정렬해서 비교
}); 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(""); $("#schInspYmdEnd").val("");
$("#schVhclno").val(""); $("#schVhclno").val("");
$("#schOwnrNm").val(""); $("#schOwnrNm").val("");
$("#schTaskPrcsSttsCd").val(""); // 체크박스 모두 해제
$("input[name='schTaskPrcsSttsCd']").prop('checked', false);
self.grid.reload(); self.grid.reload();
}); });
@ -678,7 +721,18 @@
// 검색 조건 파라미터 추가 // 검색 조건 파라미터 추가
setSearchCond(); setSearchCond();
$.each(SEARCH_COND, function(key, value) { $.each(SEARCH_COND, function(key, value) {
if (value) { if (key === 'schTaskPrcsSttsCd') {
// 배열인 경우 각각 추가
if (value && value.length > 0) {
value.forEach(function(val) {
$form.append($('<input>', {
type: 'hidden',
name: key,
value: val
}));
});
}
} else if (value) {
$form.append($('<input>', { $form.append($('<input>', {
type: 'hidden', type: 'hidden',
name: key, name: key,

Loading…
Cancel
Save