From 38e5a20f42ddc97a2aeeb24fe5fde9892fe1557c Mon Sep 17 00:00:00 2001 From: hamid zarghami Date: Tue, 30 Sep 2025 14:59:21 +0330 Subject: [PATCH] return policy page --- src/config/Pages.ts | 4 + src/pages/setting/ReturnPolicyPage.tsx | 107 +++++++++++++++++++++++++ src/router/Main.tsx | 2 + src/shared/SideBar.tsx | 8 +- 4 files changed, 117 insertions(+), 4 deletions(-) create mode 100644 src/pages/setting/ReturnPolicyPage.tsx diff --git a/src/config/Pages.ts b/src/config/Pages.ts index 3193ff1..7845a21 100644 --- a/src/config/Pages.ts +++ b/src/config/Pages.ts @@ -60,6 +60,10 @@ export const Pages = { faqUpdate: "/pages/faq/update/", shipment: "/pages/shipment", privacy: "/pages/privacy", + returnPolicy: "/pages/return-policy", + jobs: "/pages/jobs", + documents: "/pages/documents", + incomeTariff: "/pages/income-tariff", }, wallet: "/wallet", profile: "/profile", diff --git a/src/pages/setting/ReturnPolicyPage.tsx b/src/pages/setting/ReturnPolicyPage.tsx new file mode 100644 index 0000000..1180e97 --- /dev/null +++ b/src/pages/setting/ReturnPolicyPage.tsx @@ -0,0 +1,107 @@ +import { type FC, useEffect, useState } from 'react' +import { useGetSiteSetting, useUpdateSiteSetting } from './hooks/useSettingData' +import { SiteSettingPageEnum } from './enum/Enum' +import { useFormik } from 'formik' +import type { UpdateSiteSetting } from './types/Types' +import { toast } from 'react-toastify' +import { Pages } from '@/config/Pages' +import * as Yup from 'yup' +import { useNavigate } from 'react-router-dom' +import Button from '@/components/Button' +import TextEditor from '@/components/TextEditor' +import PageLoading from '@/components/PageLoading' +import Error from '@/components/Error' +import { TickCircle } from 'iconsax-react' + +const ReturnPolicyPage: FC = () => { + const navigate = useNavigate() + const { data: siteSetting, isLoading: siteSettingLoading, error: siteSettingError } = useGetSiteSetting(SiteSettingPageEnum.returnRulesContent) + const updateSiteSettingMutation = useUpdateSiteSetting() + const [formData, setFormData] = useState({ returnRulesContent: '' }) + + const formik = useFormik({ + initialValues: formData, + validationSchema: Yup.object({ + returnRulesContent: Yup.string().required('سیاست بازگشت کالا الزامی است'), + }), + onSubmit: (values) => { + updateSiteSettingMutation.mutate(values, { + onSuccess: () => { + toast.success('سیاست بازگشت کالا با موفقیت ویرایش شد') + navigate(Pages.pages.returnPolicy) + } + }) + }, + enableReinitialize: true + }) + + useEffect(() => { + if (siteSetting?.results?.siteSetting?.returnRulesContent) { + const newData = { returnRulesContent: siteSetting.results.siteSetting.returnRulesContent } + setFormData(newData) + } + }, [siteSetting]) + + if (siteSettingLoading) { + return ( +
+ +
+ ) + } + + if (siteSettingError) { + return ( +
+ +
+ ) + } + + return ( +
+
+
+

ویرایش سیاست بازگشت کالا

+
+
+ +
+
+ +
+
+
+
+
+ متن سیاست بازگشت کالا +
+ formik.setFieldValue('returnRulesContent', value)} + placeholder='متن سیاست بازگشت کالا را وارد کنید...' + /> + {formik.touched.returnRulesContent && formik.errors.returnRulesContent && ( +
+ {formik.errors.returnRulesContent} +
+ )} +
+
+
+
+
+ ) +} + +export default ReturnPolicyPage \ No newline at end of file diff --git a/src/router/Main.tsx b/src/router/Main.tsx index 52a2358..e826f36 100644 --- a/src/router/Main.tsx +++ b/src/router/Main.tsx @@ -51,6 +51,7 @@ import FaqCreate from '@/pages/setting/FaqCreate' import FaqUpdate from '@/pages/setting/FaqUpdate' import ShipmentPage from '@/pages/setting/ShipmentPage' import PrivacyPage from '@/pages/setting/PrivacyPage' +import ReturnPolicyPage from '@/pages/setting/ReturnPolicyPage' const MainRouter: FC = () => { @@ -127,6 +128,7 @@ const MainRouter: FC = () => { } /> } /> } /> + } /> diff --git a/src/shared/SideBar.tsx b/src/shared/SideBar.tsx index 053bfbb..fe3cd7b 100644 --- a/src/shared/SideBar.tsx +++ b/src/shared/SideBar.tsx @@ -821,22 +821,22 @@ const PagesSubMenu: FC = () => {