The turns list/card read start_time, slot.time and doctor.specialty, none of which exist on Appointment.toArray() (slot_start, doctor.name, status). Use slot_start for the Jalali date/time, replace the specialty column with a Persian status label, and show an empty state when there are no appointments. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
76 lines
2.9 KiB
JavaScript
76 lines
2.9 KiB
JavaScript
import CircularLoading from "@/app/component/loading/Circular";
|
|
import TextLoading from "@/app/component/loading/Text";
|
|
import ArrowLeftCardD from "@/components/icons/ArrowLeftCardD";
|
|
import { Button } from "@mui/material";
|
|
import Image from "next/image";
|
|
import { convertTimestampToJalali, convertTimestampToTime } from "@/helper";
|
|
|
|
const STATUS_LABELS = {
|
|
pending: "در انتظار پرداخت",
|
|
confirmed: "تأیید شده",
|
|
completed: "انجام شده",
|
|
cancelled_by_user: "لغو شده",
|
|
cancelled_by_doctor: "لغو توسط پزشک",
|
|
expired: "منقضی شده",
|
|
no_show: "عدم مراجعه",
|
|
};
|
|
|
|
function Card({ data, loading, setIsTurnsDetails }) {
|
|
return (
|
|
<li className="shadow-[0px_1px_24.8px_0px_rgba(204,_204,_204,_0.18)] pb-[8px] bg-[#FFF] rounded-[8px]">
|
|
<div className="flex items-center justify-start gap-[8px] p-[12px]">
|
|
<div className="flex flex-col items-start justify-center gap-[8px]">
|
|
<TextLoading loading={loading} width={120} height={18}>
|
|
<p className="text-[#616161] text-[14px] font-medium">
|
|
{data.doctor?.name || "--"}
|
|
</p>
|
|
</TextLoading>
|
|
<TextLoading loading={loading} width={100} height={18}>
|
|
<p className="text-[#7E7E7E] text-[14px] font-normal">
|
|
{STATUS_LABELS[data.status] || data.status || "--"}
|
|
</p>
|
|
</TextLoading>
|
|
</div>
|
|
</div>
|
|
<ul className="w-full py-[8px] px-[12px] bg-[#FAFAFA] flex flex-col gap-[12px]">
|
|
<li className="flex items-center justify-between">
|
|
<TextLoading loading={loading} width={75} height={18}>
|
|
<p className="text-[#7E7E7E] text-[14px] font-normal">
|
|
تاریخ نوبت:
|
|
</p>
|
|
</TextLoading>
|
|
<TextLoading loading={loading} width={110} height={18}>
|
|
<p className="text-[#525252] text-[14px] font-medium">
|
|
{convertTimestampToJalali(data.slot_start)}
|
|
</p>
|
|
</TextLoading>
|
|
</li>
|
|
<li className="flex items-center justify-between">
|
|
<TextLoading loading={loading} width={65} height={18}>
|
|
<p className="text-[#7E7E7E] text-[14px] font-normal">ساعت نوبت:</p>
|
|
</TextLoading>
|
|
<TextLoading loading={loading} width={60} height={18}>
|
|
<p className="text-[#525252] text-[14px] font-medium">
|
|
{convertTimestampToTime(data.slot_start)}
|
|
</p>
|
|
</TextLoading>
|
|
</li>
|
|
</ul>
|
|
<div className="mt-[12px] flex items-center justify-end px-[12px]">
|
|
<TextLoading loading={loading} width={80} height={25}>
|
|
<Button
|
|
className="!flex !p-1 !items-center !justify-end !gap-[2px]"
|
|
onClick={() => setIsTurnsDetails(data)}
|
|
variant="text"
|
|
>
|
|
مشاهده
|
|
<ArrowLeftCardD />
|
|
</Button>
|
|
</TextLoading>
|
|
</div>
|
|
</li>
|
|
);
|
|
}
|
|
|
|
export default Card;
|