edit packages data

This commit is contained in:
romiz5269
2025-11-22 11:19:51 +03:30
parent 34903b3d6d
commit a7bc9b75ae
7 changed files with 71 additions and 27 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 101 KiB

View File

@@ -1785,5 +1785,8 @@
}
]
}
]
],
"served_jobs": "تشمل الخدمات التي يمكن تقديمها للمريض:",
"important_notes": "ملاحظات مهمة",
"whatsapp": "واتساب"
}

View File

@@ -1378,7 +1378,7 @@
"slug": "combined-endoscopy-colonoscopy",
"svg": "",
"title": "Combined Upper Endoscopy & Colonoscopy",
"description": "<p>This package provides both upper endoscopy and full colonoscopy in a single session, allowing a complete evaluation of the digestive tract. It is ideal for patients requiring comprehensive screening or diagnosis of gastrointestinal disorders.</p>",
"description": "",
"price": "",
"notes": ""
}
@@ -1838,5 +1838,8 @@
}
]
}
]
],
"served_jobs": "Services that can be provided to the patient include:",
"important_notes": "Important Notes",
"whatsapp": "WhatsApp"
}

View File

@@ -1831,5 +1831,8 @@
}
]
}
]
],
"served_jobs":"خدمات قابل ارائه به بيمار شامل:",
"important_notes":"نکات مهم",
"whatsapp":"واتساپ"
}

View File

@@ -10,7 +10,7 @@ export default async function SingleMedicalService({
params: Promise<{slug: string; lang: "fa" | "en"}>;
}) {
const {slug, lang} = await params;
const {medical_packages_data} = await getDictionary(lang);
const {medical_packages_data,package_price,served_jobs,email,whatsapp,important_notes} = await getDictionary(lang);
const data = medical_packages_data.find((p) => p.slug.toString() === slug);
@@ -28,7 +28,7 @@ export default async function SingleMedicalService({
<section className="mt-16 container">
<div className="bg-[#F8F9FA] rounded-4xl md:px-20 px-4 md:py-16 py-4">
<h3 className="md:text-[3em] text-xl font-black text-blue-primary text-center relative before:absolute before:w-[100px] before:block before:bg-secondary before:-bottom-5 before:h-[2px] before:left-[50%] before:translate-x-[-50%] ">
انواع خدمات پزشکی {data?.title.toString()}
{data?.title.toString()}
</h3>
<div className="mt-10 space-y-6">
{data.sub_packages.map((item, index: number) =>
@@ -42,6 +42,11 @@ export default async function SingleMedicalService({
price={item?.price?.toString() ?? ""}
thumbnail={item?.thumbnail ?? ""}
notes={item?.notes?.toString() || ""}
package_price={package_price}
served_jobs={served_jobs}
email={email}
whatsapp={whatsapp}
important_notes={important_notes}
/>
) : (
""

View File

@@ -2,22 +2,25 @@ import PageHeaderSlider from "@/ui/page-header-slider/PageHeaderSlider";
import Link from "next/link";
import React, {lazy, Suspense} from "react";
import {packages_types} from "@/types";
import { getDictionary } from "../dictionaries";
import { Metadata } from "next";
import { pages_titles } from "@/constants";
import {getDictionary} from "../dictionaries";
import {Metadata} from "next";
import {pages_titles} from "@/constants";
export const metadata: Metadata = {
title: pages_titles.medical_services['fa'] + ' | ' +'بیمارستان شمال',
title: pages_titles.medical_services["fa"] + " | " + "بیمارستان شمال",
description: "Shomal Hospital IPD medical services page",
};
export default async function MedicalServices({
params,
}: {
params: Promise<{lang: "fa" | "en"}>;
}) {
const {lang} = await params;
const {medical_packages_headTitle,our_medical_packages,medical_packages_data} =await getDictionary(lang)
const {
medical_packages_headTitle,
our_medical_packages,
medical_packages_data,
} = await getDictionary(lang);
return (
<>
@@ -36,7 +39,10 @@ export default async function MedicalServices({
</p>
<br />
<br /> */}
<div className="introduction_description_subText " dangerouslySetInnerHTML={{__html:our_medical_packages}}/>
<div
className="introduction_description_subText "
dangerouslySetInnerHTML={{__html: our_medical_packages}}
/>
<div className="w-full mt-20 grid grid-cols-12 gap-6">
{medical_packages_data.map((item) => {
const LazyComponent = lazy(
@@ -45,7 +51,7 @@ export default async function MedicalServices({
return (
<div className="md:col-span-4 col-span-12" key={item.id}>
<Link
href={`/medical-services/${item.slug}`}
href={`/${lang}/medical-services/${item.slug}`}
className="flex flex-col items-center justify-center py-10 w-full h-full rounded-xl border-[1px] border-neutral-200 bg-white hover:border-secondary"
>
<span>

View File

@@ -3,7 +3,7 @@
import {useState} from "react";
import ChevronLeftSvg from "../icons/ChevronLeftSvg";
import Image from "next/image";
import { default_info, PHONE_NUMBERS } from "@/constants";
import {default_info, PHONE_NUMBERS} from "@/constants";
interface AccordionProps {
title: string;
@@ -12,6 +12,11 @@ interface AccordionProps {
services: string;
notes?: string | undefined;
price: string;
package_price?: string;
served_jobs?: string;
email?: string;
important_notes?: string;
whatsapp?: string;
defaultOpen?: number;
index: number;
}
@@ -24,6 +29,11 @@ export default function Accordion({
notes = "",
thumbnail,
price,
package_price,
served_jobs,
important_notes,
email,
whatsapp,
defaultOpen,
}: AccordionProps) {
const [openIndex, setOpenIndex] = useState<number | null>(
@@ -41,7 +51,9 @@ export default function Accordion({
className="flex w-full items-center justify-between text-right h-full cursor-pointer"
onClick={() => toggle(index)}
>
<span className="md:text-lg text-sm font-semibold text-white">{title}</span>
<span className="md:text-lg text-sm font-semibold text-white">
{title}
</span>
<span
className={` text-white transition-all duration-300 ${
openIndex === index ? "rotate-90" : "-rotate-90"
@@ -73,7 +85,7 @@ export default function Accordion({
{services && (
<>
<h4 className="font-bold text-lg">
خدمات قابل ارائه به بيمار شامل:
{served_jobs} :
</h4>
<div
className="overflow-hidden text-gray-600 leading-relaxed text-base packages_subpackages_list"
@@ -83,7 +95,7 @@ export default function Accordion({
)}
{price && (
<>
<h4 className="font-bold text-lg">قیمت پکیج ها:</h4>
<h4 className="font-bold text-lg">{package_price}:</h4>
<div
className="overflow-hidden text-gray-600 leading-relaxed text-base packages_subpackages_list"
dangerouslySetInnerHTML={{__html: price}}
@@ -92,7 +104,7 @@ export default function Accordion({
)}
{notes && (
<>
<h4 className="font-bold text-lg">نکات مهم :</h4>
<h4 className="font-bold text-lg">{important_notes} :</h4>
<div
className="overflow-hidden text-gray-600 leading-relaxed text-base "
dangerouslySetInnerHTML={{__html: notes}}
@@ -100,12 +112,24 @@ export default function Accordion({
</>
)}
<>
<h4 className="font-bold text-lg">
</h4>
<h4 className="font-bold text-lg"></h4>
<div className="overflow-hidden text-gray-600 leading-relaxed text-base ">
<div>ایمیل : <a href={`mailto:${default_info.email}`}>{default_info.email}</a></div>
<div>واتساپ : <a dir="ltr" href={`https://wa.me/${+PHONE_NUMBERS.ipd_technician.href}`}>{PHONE_NUMBERS.ipd_technician.href}</a></div>
<div>
{email} :{" "}
<a href={`mailto:${default_info.email}`}>
{default_info.email}
</a>
</div>
<div>
{whatsapp} :{" "}
<a
dir="ltr"
href={`https://wa.me/${+PHONE_NUMBERS.ipd_technician
.href}`}
>
{PHONE_NUMBERS.ipd_technician.href}
</a>
</div>
</div>
</>
</div>