From a8988c18a20266e9568b25e25ff458cf0e20e0fb Mon Sep 17 00:00:00 2001 From: "s.esmaeili" Date: Mon, 14 Sep 2026 16:49:24 +0330 Subject: [PATCH] admin-panel: convert user and category add/edit forms into modals Same pattern as branch/workshop/city: open/id props switch UserCreate.vue and apps/category/Add.vue into BaseFormModal mode; the /user/create, /user/edit/:id and /category/add/:id? routes are unchanged as a fallback. ListUser.vue's pre-existing add button (previously a router.push, added outside the original port and left there per its own comment) now opens the modal via ListPageHeader instead. Verified: pnpm build passes. Co-Authored-By: Claude Sonnet 5 --- .../src/views/apps/category/Add.vue | 87 +++++++++++++++++- .../src/views/apps/category/List.vue | 23 +++-- apps/admin-panel/src/views/user/ListUser.vue | 36 ++++---- .../admin-panel/src/views/user/UserCreate.vue | 88 ++++++++++++++++++- 4 files changed, 205 insertions(+), 29 deletions(-) diff --git a/apps/admin-panel/src/views/apps/category/Add.vue b/apps/admin-panel/src/views/apps/category/Add.vue index 8cfdbea..63f94c1 100644 --- a/apps/admin-panel/src/views/apps/category/Add.vue +++ b/apps/admin-panel/src/views/apps/category/Add.vue @@ -2,6 +2,9 @@ - + + + + سایت + اپلیکشن موبایل + + + +
+ + + + + + + + {{ c.title }} + + + + + + + + + + + + + + + +
+ + + + +
+ + + (); +const emit = defineEmits<{ + (e: 'update:open', value: boolean): void; + (e: 'success'): void; +}>(); + +const asModal = props.open !== undefined; + const route = useRoute(); const router = useRouter(); -const id = route.params.id as string | undefined; +const id = asModal ? props.id : (route.params.id as string | undefined); const loading = ref(false); const allCategories = ref<{ id: string; title: string; type: number }[]>([]); @@ -141,7 +217,12 @@ async function handleSubmit() { await api.post('category/', form); } message.info('اطلاعات با موفقیت به ثبت رسید.'); - router.push('/category/list'); + if (asModal) { + emit('success'); + emit('update:open', false); + } else { + router.push('/category/list'); + } } catch (e: any) { message.error(e?.response?.data?.message ?? 'خطا در ثبت اطلاعات.'); } finally { diff --git a/apps/admin-panel/src/views/apps/category/List.vue b/apps/admin-panel/src/views/apps/category/List.vue index d4ff98e..7a221cc 100644 --- a/apps/admin-panel/src/views/apps/category/List.vue +++ b/apps/admin-panel/src/views/apps/category/List.vue @@ -6,6 +6,8 @@ -->
+ + + +
diff --git a/apps/admin-panel/src/views/user/ListUser.vue b/apps/admin-panel/src/views/user/ListUser.vue index 9146a27..fc7aff1 100644 --- a/apps/admin-panel/src/views/user/ListUser.vue +++ b/apps/admin-panel/src/views/user/ListUser.vue @@ -6,19 +6,8 @@ -->
- - - افزودن کاربر - + +