From a1640f55f872d1f31457301350c1461496459211 Mon Sep 17 00:00:00 2001 From: thug0bin Date: Fri, 27 Feb 2026 15:36:55 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EC=A0=84=ED=99=94=EB=B2=88=ED=98=B8=20?= =?UTF-8?q?=EC=97=86=EB=8A=94=20=ED=9A=8C=EC=9B=90=20=EC=83=81=EC=84=B8=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=20=EC=8B=9C=20=EC=97=90=EB=9F=AC=20=EC=B2=98?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 전화번호가 없으면 API 호출 전 안내 메시지 표시 - I/O 에러 방지 --- backend/templates/admin_members.html | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/backend/templates/admin_members.html b/backend/templates/admin_members.html index d9b650d..620cf0d 100644 --- a/backend/templates/admin_members.html +++ b/backend/templates/admin_members.html @@ -829,15 +829,24 @@ function viewDetail(idx) { currentDetailMember = membersData[idx]; - const phone = currentDetailMember.phone.replace(/-/g, '').replace(/ /g, ''); + const phone = (currentDetailMember.phone || '').replace(/-/g, '').replace(/ /g, ''); // 모달 열기 document.getElementById('detailModal').classList.add('active'); document.getElementById('detailName').textContent = currentDetailMember.name || '이름 없음'; - document.getElementById('detailPhone').textContent = formatPhone(currentDetailMember.phone); + document.getElementById('detailPhone').textContent = formatPhone(currentDetailMember.phone) || '전화번호 없음'; document.getElementById('detailBalance').textContent = '로딩...'; document.getElementById('detailContent').innerHTML = '
데이터를 불러오는 중...
'; + // 전화번호 없으면 바로 안내 + if (!phone) { + document.getElementById('detailBalance').textContent = '-'; + document.getElementById('detailContent').innerHTML = + '
📵 전화번호가 등록되지 않은 회원입니다
POS에 전화번호를 등록하면 조회 가능합니다
'; + detailData = { mileage: null, purchases: [], prescriptions: [], interests: [] }; + return; + } + // 데이터 로드 fetch(`/api/members/history/${phone}`) .then(res => res.json())