fix: [employee] 부양가족 체크박스(장애인/피부양자) 값 저장·표시 오류 수정

- Alpine x-model + hidden input 패턴 개선 (동적 :value 바인딩)
- JSON 로드 시 boolean 정규화로 체크 상태 정확히 복원
- 서비스 레이어에서 filter_var BOOLEAN 캐스팅 추가
- show 페이지 표시 로직 filter_var로 강화
This commit is contained in:
김보곤
2026-02-27 11:25:11 +09:00
parent 4b2c6a2730
commit 207c2a7e6b
3 changed files with 23 additions and 7 deletions

View File

@@ -265,14 +265,14 @@ class="w-full px-2 py-1.5 border border-gray-300 rounded text-sm focus:ring-1 fo
</select>
</div>
<label class="inline-flex items-center gap-1 text-sm text-gray-600 cursor-pointer">
<input type="hidden" :name="'dependents['+index+'][is_disabled]'" value="0">
<input type="checkbox" :name="'dependents['+index+'][is_disabled]'" x-model="dep.is_disabled" value="1"
<input type="hidden" :name="'dependents['+index+'][is_disabled]'" :value="dep.is_disabled ? '1' : '0'">
<input type="checkbox" x-model="dep.is_disabled"
class="rounded border-gray-300 text-blue-600 focus:ring-blue-500">
장애인
</label>
<label class="inline-flex items-center gap-1 text-sm text-gray-600 cursor-pointer">
<input type="hidden" :name="'dependents['+index+'][is_dependent]'" value="0">
<input type="checkbox" :name="'dependents['+index+'][is_dependent]'" x-model="dep.is_dependent" value="1"
<input type="hidden" :name="'dependents['+index+'][is_dependent]'" :value="dep.is_dependent ? '1' : '0'">
<input type="checkbox" x-model="dep.is_dependent"
class="rounded border-gray-300 text-blue-600 focus:ring-blue-500">
피부양자적용
</label>
@@ -360,7 +360,11 @@ class="text-red-400 hover:text-red-600 shrink-0 ml-2" title="삭제">
<script>
function dependentsManager() {
return {
dependents: @json($employee->dependents ?? []),
dependents: (@json($employee->dependents ?? [])).map(dep => ({
...dep,
is_disabled: !!(dep.is_disabled && dep.is_disabled !== '0' && dep.is_disabled !== 0),
is_dependent: !!(dep.is_dependent && dep.is_dependent !== '0' && dep.is_dependent !== 0),
})),
addDependent() {
this.dependents.push({
name: '', nationality: 'korean', resident_number: '',

View File

@@ -213,8 +213,8 @@ class="inline-flex items-center gap-2 px-4 py-2 bg-blue-600 hover:bg-blue-700 te
@default - @break
@endswitch
</td>
<td class="py-2 pr-3">{{ !empty($dep['is_disabled']) ? 'Y' : 'N' }}</td>
<td class="py-2">{{ !empty($dep['is_dependent']) ? 'Y' : 'N' }}</td>
<td class="py-2 pr-3">{{ filter_var($dep['is_disabled'] ?? false, FILTER_VALIDATE_BOOLEAN) ? 'Y' : 'N' }}</td>
<td class="py-2">{{ filter_var($dep['is_dependent'] ?? false, FILTER_VALIDATE_BOOLEAN) ? 'Y' : 'N' }}</td>
</tr>
@endforeach
</tbody>