diff --git a/assets/admin/pages/AppointmentCreatePage.tsx b/assets/admin/pages/AppointmentCreatePage.tsx
index c4f36c76..a771527e 100644
--- a/assets/admin/pages/AppointmentCreatePage.tsx
+++ b/assets/admin/pages/AppointmentCreatePage.tsx
@@ -116,7 +116,8 @@ export default function AppointmentCreatePage() {
onSuccess: () => {
qc.invalidateQueries({ queryKey: ['appointments'] });
toast.success('نوبت با موفقیت ثبت شد');
- navigate('/admin/appointments');
+ // به همان روزِ نوبت برگرد، نه امروز.
+ navigate(`/admin/appointments?date=${date}`);
},
onError: (e: any) => toast.error(e.message || 'خطا در ثبت نوبت'),
});
diff --git a/assets/admin/pages/AppointmentEditPage.tsx b/assets/admin/pages/AppointmentEditPage.tsx
index e8630a7b..66de5384 100644
--- a/assets/admin/pages/AppointmentEditPage.tsx
+++ b/assets/admin/pages/AppointmentEditPage.tsx
@@ -93,7 +93,8 @@ export default function AppointmentEditPage() {
onSuccess: () => {
qc.invalidateQueries({ queryKey: ['appointments'] });
toast.success('نوبت بهروزرسانی شد');
- navigate('/admin/appointments');
+ // به همان روزِ نوبت برگرد، نه امروز.
+ navigate(`/admin/appointments?date=${date}`);
},
onError: (e: any) => toast.error(e.message || 'خطا در ذخیره اطلاعات'),
});
@@ -111,7 +112,7 @@ export default function AppointmentEditPage() {
return (
-
+
بازگشت
diff --git a/assets/admin/pages/AppointmentsPage.test.tsx b/assets/admin/pages/AppointmentsPage.test.tsx
index 2a58cabe..6b0b6352 100644
--- a/assets/admin/pages/AppointmentsPage.test.tsx
+++ b/assets/admin/pages/AppointmentsPage.test.tsx
@@ -39,6 +39,13 @@ describe('AppointmentsPage — طرح نوبتها', () => {
expect(await screen.findByText('این روز تعطیل است')).toBeInTheDocument();
});
+ it('honors the ?date= query param (returns to the same day after edit)', async () => {
+ renderWithProviders(
, { route: '/admin/appointments?date=2024-06-01' });
+ await screen.findByText('این روز تعطیل است');
+ const usedDate = get.mock.calls.some((c: any[]) => typeof c[0] === 'string' && c[0].includes('date=2024-06-01'));
+ expect(usedDate).toBe(true);
+ });
+
it('independent doctor profile does NOT show doctor tabs', async () => {
renderWithProviders(
);
await screen.findByText('این روز تعطیل است');
diff --git a/assets/admin/pages/AppointmentsPage.tsx b/assets/admin/pages/AppointmentsPage.tsx
index 3b2cc235..63c7bb19 100644
--- a/assets/admin/pages/AppointmentsPage.tsx
+++ b/assets/admin/pages/AppointmentsPage.tsx
@@ -1,6 +1,6 @@
import React, { useEffect, useRef, useState } from 'react';
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
-import { useNavigate } from 'react-router-dom';
+import { useNavigate, useSearchParams } from 'react-router-dom';
import {
PlusIcon, ChevronRightIcon, ChevronLeftIcon, CalendarDaysIcon,
AdjustmentsHorizontalIcon,
@@ -200,8 +200,10 @@ export default function AppointmentsPage() {
const isDoctor = primaryRole === 'doctor';
const isRepresentation = primaryRole === 'representation';
+ const [params] = useSearchParams();
const today = new Date().toISOString().slice(0, 10);
- const [selectedDate, setSelectedDate] = useState(today);
+ // پس از ویرایش/ثبت، صفحه با ?date=... باز میشود تا همان روز نمایش داده شود.
+ const [selectedDate, setSelectedDate] = useState(params.get('date') || today);
const [viewMode, setViewMode] = useState
('timeline');
const [selectedDoctorUuid, setSelectedDoctorUuid] = useState(isDoctor && dbUuid ? dbUuid : '');
const [bookingSlot, setBookingSlot] = useState(null);