From 8bf8520d624a096cfb89357f5c7987c6dc89dbad Mon Sep 17 00:00:00 2001 From: chan Date: Fri, 8 May 2026 15:09:58 +0900 Subject: [PATCH] =?UTF-8?q?adminfront=20=EC=82=AC=EC=9A=A9=EC=9E=90=20?= =?UTF-8?q?=EA=B4=80=EB=A6=AC=20=EC=B6=94=EA=B0=80=20=EC=88=98=EC=A0=95=20?= =?UTF-8?q?(=EB=8C=80=ED=91=9C=20=EC=A1=B0=EC=A7=81=20=EB=8F=85=EC=A0=90?= =?UTF-8?q?=20=EC=84=A0=ED=83=9D=20=EB=B0=8F=20=EB=B3=B4=ED=98=B8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 한맥가족 대표 조직(isOwner) 선택 시 독점(Exclusive) 선택 로직 적용 - 주 소속(isPrimary) 테넌트의 경우 대표 조직 해제 불가하도록 Switch 비활성화 처리 - UserDetailPage 및 UserCreatePage 공통 로직 보정 --- adminfront/src/features/users/UserCreatePage.tsx | 12 +++++++++--- adminfront/src/features/users/UserDetailPage.tsx | 13 ++++++++++--- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/adminfront/src/features/users/UserCreatePage.tsx b/adminfront/src/features/users/UserCreatePage.tsx index c6b83fb3..01622ab3 100644 --- a/adminfront/src/features/users/UserCreatePage.tsx +++ b/adminfront/src/features/users/UserCreatePage.tsx @@ -290,9 +290,15 @@ function UserCreatePage() { patch: Partial, ) => { setAdditionalAppointments((current) => - current.map((appointment, currentIndex) => - currentIndex === index ? { ...appointment, ...patch } : appointment, - ), + current.map((appointment, currentIndex) => { + if (currentIndex === index) { + return { ...appointment, ...patch }; + } + if (patch.isOwner === true) { + return { ...appointment, isOwner: false }; + } + return appointment; + }), ); }; diff --git a/adminfront/src/features/users/UserDetailPage.tsx b/adminfront/src/features/users/UserDetailPage.tsx index 501c3017..f115e165 100644 --- a/adminfront/src/features/users/UserDetailPage.tsx +++ b/adminfront/src/features/users/UserDetailPage.tsx @@ -536,9 +536,15 @@ function UserDetailPage() { patch: Partial, ) => { setAdditionalAppointments((current) => - current.map((appointment, currentIndex) => - currentIndex === index ? { ...appointment, ...patch } : appointment, - ), + current.map((appointment, currentIndex) => { + if (currentIndex === index) { + return { ...appointment, ...patch }; + } + if (patch.isOwner === true) { + return { ...appointment, isOwner: false }; + } + return appointment; + }), ); }; @@ -1168,6 +1174,7 @@ function UserDetailPage() { isOwner: checked === true, }) } + disabled={appointment.isPrimary} aria-label={t( "ui.admin.users.detail.form.appointment_owner", "대표 조직",