refactor: update appointment handling to improve data flow and display, including status management and detail views

This commit is contained in:
hamed
2025-11-19 09:16:41 +03:30
parent e7c8501680
commit b2f968480c
10 changed files with 109 additions and 159 deletions
@@ -1,4 +1,3 @@
import CircularLoading from "@/app/component/loading/Circular";
import TextLoading from "@/app/component/loading/Text";
import CalendarD from "@/components/icons/CalendarD";
import CallD from "@/components/icons/CallD";
@@ -6,35 +5,24 @@ import ClockClinic from "@/components/icons/ClockClinic";
import DownloadD from "@/components/icons/DownloadD";
import LocationClinic from "@/components/icons/LocationClinic";
import RoutingC from "@/components/icons/RoutingC";
import TicketD from "@/components/icons/TicketD";
import { Button } from "@mui/material";
import Image from "next/image";
import React from "react";
import { convertTimestampToJalali, convertTimestampToTime } from "@/helper";
function DetailLg({ user, loading }) {
const data = user.turns.done[1];
function DetailLg({ appointmentData, loading }) {
return (
<div className="lg:mt-[18px] hidden md:block">
<div className="flex md:mt-[24px] lg:mt-0 items-center justify-start gap-[8px] md:gap-[12px] lg:gap-[16px]">
<CircularLoading width={95} height={95} loading={loading}>
<Image
width={95}
height={95}
alt="profile"
src={data.image}
className="w-[32px] h-[32px] sm:w-[53px] sm:h-[53px] md:w-[74px] md:h-[74px] lg:w-[95px] lg:h-[95px]"
/>
</CircularLoading>
<div className="flex flex-col items-start justify-center gap-[20px]">
<TextLoading loading={loading} width={70} height={18}>
<p className="text-[#3B3B3B] text-[14px] sm:text-[16px] md:text-[18px] lg:text-[20px] font-medium">
{data.name}
{appointmentData?.doctor?.name}
</p>
</TextLoading>
<TextLoading loading={loading} width={80} height={18}>
<p className="text-[#616161] text-[14px] md:text-[15px] lg:text-[16px] font-medium">
تخصص: {data.expertise}
تخصص: {appointmentData?.doctor?.specialty?.name}
</p>
</TextLoading>
</div>
@@ -47,7 +35,7 @@ function DetailLg({ user, loading }) {
<p className="text-[#616161] text-[14px] lg:text-[20px] font-medium">
تاریخ نوبت:{" "}
<span className="text-[#2F2F2F] text-[14px] lg:text-[20px] font-bold">
{data.date_turn}
{convertTimestampToJalali(appointmentData?.start_time)}
</span>
</p>
</div>
@@ -58,7 +46,7 @@ function DetailLg({ user, loading }) {
<p className="text-[#616161] text-[14px] lg:text-[20px] font-medium">
زمان نوبت:{" "}
<span className="text-[#2F2F2F] text-[14px] lg:text-[20px] font-bold">
ساعت {data.time}
ساعت {appointmentData?.slot?.time}
</span>
</p>
</div>
@@ -71,13 +59,17 @@ function DetailLg({ user, loading }) {
<p className="text-[#616161] text-[14px] lg:text-[16px] font-normal">
آدرس:{" "}
<span className="text-[#2F2F2F] text-[14px] lg:text-[16px] font-normal">
{data.location}
{appointmentData?.address?.address}
</span>
</p>
</div>
</TextLoading>
<TextLoading loading={loading} width={120} height={30}>
<Button className="!py-[8px] !px-[12px] !gap-[8px]" variant="text">
<Button
className="!py-[8px] !px-[12px] !gap-[8px]"
variant="text"
onClick={() => appointmentData?.address?.map && window.open(appointmentData.address.map, '_blank')}
>
<RoutingC />
<p className="text-[#5559CE] text-[14px] font-medium">
مسیریابی آدرس
@@ -91,23 +83,12 @@ function DetailLg({ user, loading }) {
<p className="text-[#616161] text-[14px] lg:text-[16px] font-normal">
تلفن:{" "}
<span className="text-[#2F2F2F] text-[14px] lg:text-[16px] font-normal">
{data.phone}
{appointmentData?.address?.phone}
</span>
</p>
</li>
</TextLoading>
</ul>
<div className="flex items-center gap-[4px] w-fit">
<TextLoading loading={loading} width={150} height={18}>
<TicketD />
<p className="text-[#616161] text-[14px] lg:text-[20px] font-medium">
مبلغ پرداخت شده :{" "}
<span className="text-[#2F2F2F] text-[14px] lg:text-[20px] font-bold">
{data.amount_paid} تومان
</span>
</p>
</TextLoading>
</div>
<Button
className="!px-[12px] !hidden md:!flex !mt-[24px] !py-[8px] !border !border-solid !border-[#D7D7D7] !rounded-[4px] !w-fit !items-center !justify-center !gap-[4px]"
variant="outlined"