From 25f811bcb64c9720775cdb342d5647598a503946 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Fri, 6 Mar 2026 15:58:51 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20[approvals]=20=EC=9E=AC=EC=A7=81/?= =?UTF-8?q?=EA=B2=BD=EB=A0=A5=EC=A6=9D=EB=AA=85=EC=84=9C=20=EC=A3=BC?= =?UTF-8?q?=EB=AF=BC=EB=B2=88=ED=98=B8=20=EC=A0=84=EC=B2=B4=20=ED=91=9C?= =?UTF-8?q?=EC=8B=9C=20(=EB=A7=88=EC=8A=A4=ED=82=B9=20=EC=A0=9C=EA=B1=B0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 재직증명서: 주민번호 뒷자리 ****** 마스킹 제거, 전체 표시 - 경력증명서: 주민등록번호 필드 추가 (폼/조회/미리보기/PDF) - EmploymentCertService: maskedResident 로직 제거 - CareerCertService: resident_number 반환 추가, PDF 행 추가 --- app/Services/CareerCertService.php | 4 ++++ app/Services/EmploymentCertService.php | 8 ++------ resources/views/approvals/create.blade.php | 11 ++++++++++- .../approvals/partials/_career-cert-form.blade.php | 5 +++++ .../approvals/partials/_career-cert-show.blade.php | 4 ++++ 5 files changed, 25 insertions(+), 7 deletions(-) diff --git a/app/Services/CareerCertService.php b/app/Services/CareerCertService.php index f107e0f2..29aea044 100644 --- a/app/Services/CareerCertService.php +++ b/app/Services/CareerCertService.php @@ -62,6 +62,7 @@ public function getCertInfo(int $userId, int $tenantId): array return [ 'name' => $employee->user->name ?? $employee->display_name ?? '', + 'resident_number' => $residentNumber, 'birth_date' => $birthDate, 'address' => $employee->address ?? '', 'department' => $employee->department?->name ?? '', @@ -108,6 +109,9 @@ public function generatePdfResponse(array $content): \Illuminate\Http\Response $this->addTableRow($pdf, $font, [ ['성 명', $content['name'] ?? '-', 40], + ['주민등록번호', $content['resident_number'] ?? '-', 40], + ]); + $this->addTableRow($pdf, $font, [ ['생년월일', $content['birth_date'] ?? '-', 40], ]); $this->addTableRow($pdf, $font, [ diff --git a/app/Services/EmploymentCertService.php b/app/Services/EmploymentCertService.php index 70733672..0e80bcf9 100644 --- a/app/Services/EmploymentCertService.php +++ b/app/Services/EmploymentCertService.php @@ -43,15 +43,11 @@ public function getCertInfo(int $userId, int $tenantId): array $displayName = $displaySetting?->setting_value ?? ''; $companyName = ! empty($displayName) ? $displayName : ($tenant->company_name ?? ''); - $residentNumber = $employee->resident_number; - $maskedResident = $residentNumber - ? substr($residentNumber, 0, 8).'******' - : ''; + $residentNumber = $employee->resident_number ?? ''; return [ 'name' => $employee->user->name ?? $employee->display_name ?? '', - 'resident_number' => $maskedResident, - 'resident_number_full' => $residentNumber ?? '', + 'resident_number' => $residentNumber, 'address' => $employee->address ?? '', 'department' => $employee->department?->name ?? '', 'position' => $employee->position_label ?? '', diff --git a/resources/views/approvals/create.blade.php b/resources/views/approvals/create.blade.php index db08737f..600c8d97 100644 --- a/resources/views/approvals/create.blade.php +++ b/resources/views/approvals/create.blade.php @@ -897,6 +897,7 @@ function applyBodyTemplate(formId) { formContent = { cert_user_id: document.getElementById('cc-user-id').value, name: document.getElementById('cc-name').value, + resident_number: document.getElementById('cc-resident').value, birth_date: document.getElementById('cc-birth-date').value, address: document.getElementById('cc-address').value, department: document.getElementById('cc-department').value, @@ -1248,6 +1249,7 @@ function printCertPreview() { if (data.success) { const d = data.data; document.getElementById('cc-name').value = d.name || ''; + document.getElementById('cc-resident').value = d.resident_number || ''; document.getElementById('cc-birth-date').value = d.birth_date || ''; document.getElementById('cc-address').value = d.address || ''; document.getElementById('cc-company').value = d.company_name || ''; @@ -1289,6 +1291,7 @@ function getCareerCertPurpose() { function openCareerCertPreview() { const name = document.getElementById('cc-name').value || '-'; + const residentNumber = document.getElementById('cc-resident').value || '-'; const birthDate = document.getElementById('cc-birth-date').value || '-'; const address = document.getElementById('cc-address').value || '-'; const company = document.getElementById('cc-company').value || '-'; @@ -1306,7 +1309,7 @@ function openCareerCertPreview() { const issueDateFormatted = issueDate !== '-' ? issueDate.replace(/-/g, function(m, i) { return i === 4 ? '년 ' : '월 '; }) + '일' : '-'; const el = document.getElementById('career-cert-preview-content'); - el.innerHTML = buildCareerCertPreviewHtml({ name, birthDate, address, company, businessNum, ceoName, phone, companyAddress, department, position, hireDate, resignDate, jobDescription, purpose, issueDateFormatted }); + el.innerHTML = buildCareerCertPreviewHtml({ name, residentNumber, birthDate, address, company, businessNum, ceoName, phone, companyAddress, department, position, hireDate, resignDate, jobDescription, purpose, issueDateFormatted }); document.getElementById('career-cert-preview-modal').style.display = ''; document.body.style.overflow = 'hidden'; @@ -1342,8 +1345,14 @@ function buildCareerCertPreviewHtml(d) { 성 명 ${e(d.name)} + 주민등록번호 + ${e(d.residentNumber)} + + 생년월일 ${e(d.birthDate)} + + 주 소 diff --git a/resources/views/approvals/partials/_career-cert-form.blade.php b/resources/views/approvals/partials/_career-cert-form.blade.php index 180e6879..fd707a15 100644 --- a/resources/views/approvals/partials/_career-cert-form.blade.php +++ b/resources/views/approvals/partials/_career-cert-form.blade.php @@ -46,6 +46,11 @@ class="shrink-0 px-3 py-2 bg-indigo-50 text-indigo-600 hover:bg-indigo-100 borde +
+ + +
성명
{{ $content['name'] ?? '-' }}
+
+ 주민등록번호 +
{{ $content['resident_number'] ?? '-' }}
+
생년월일
{{ $content['birth_date'] ?? '-' }}