refactor: enhance transaction and appointment handling with pagination, status filtering, and improved data display

This commit is contained in:
hamed
2025-11-18 22:21:47 +03:30
parent 430e0b3b11
commit e7c8501680
9 changed files with 286 additions and 75 deletions
@@ -1,41 +1,41 @@
import CircularLoading from "@/app/component/loading/Circular";
import TextLoading from "@/app/component/loading/Text";
import Image from "next/image";
import { convertTimestampToJalali, convertTimestampToTime } from "@/helper";
import Link from "next/link";
function Card({ data, loading }) {
return (
<li className="p-[12px] shadow-[0px_1px_24.8px_0px_rgba(204,_204,_204,_0.18)] bg-[#FFF] rounded-[8px]">
<div className="flex items-center justify-between w-full">
<div className="flex items-center justify-start gap-[8px]">
<CircularLoading width={32} height={32} loading={loading}>
<Image src={data.image} alt="profile" height={32} width={32} />
</CircularLoading>
<TextLoading width={90} height={18} loading={loading}>
<TextLoading width={120} height={18} loading={loading}>
<p className="text-[#616161] text-[14px] font-medium">
{data.name}
{data.appointment_details?.doctor_name || "--"}
</p>
</TextLoading>
</div>
<TextLoading loading={loading} width={95} height={25}>
<div
className={`
<Link href={`/payment/${data.uuid}`}>
<div
className={`
w-[100px] p-[4px] rounded-[4px] text-center text-[14px] font-medium cursor-pointer select-none
${
data.status === "success"
? "bg-[#E8FADD] text-[#75E22E]"
: data.status === "pending"
? "bg-[#FFF3DD] text-[#FDBA35]"
: "bg-[#FFE3E2] text-[#FF5450]"
}
${data.status === "received"
? "bg-[#E8FADD] text-[#75E22E]"
: data.status === "pending"
? "bg-[#FFF3DD] text-[#FDBA35]"
: "bg-[#FFE3E2] text-[#FF5450]"
}
`}
variant="text"
>
{data.status === "success"
? "پرداخت شده"
: data.status === "pending"
? "در انتظار"
: "پرداخت نشده"}
</div>
variant="text"
>
{data.status === "received"
? "پرداخت شده"
: data.status === "pending"
? "در انتظار"
: "لغو شده"}
</div>
</Link>
</TextLoading>
</div>
<ul className="flex flex-col mt-[16px]">
@@ -54,9 +54,9 @@ function Card({ data, loading }) {
تاریخ نوبت:
</p>
</TextLoading>
<TextLoading loading={loading} width={60} height={18}>
<TextLoading loading={loading} width={80} height={18}>
<p className="text-[#616161] text-[14px] font-medium">
{data.date}
{convertTimestampToJalali(data.appointment_details?.start_time)}
</p>
</TextLoading>
</li>
@@ -67,7 +67,7 @@ function Card({ data, loading }) {
</TextLoading>
<TextLoading loading={loading} width={80} height={18}>
<p className="text-[#616161] text-[14px] font-medium">
{data.time}
{convertTimestampToTime(data.appointment_details?.start_time)}
</p>
</TextLoading>
</li>
@@ -75,12 +75,12 @@ function Card({ data, loading }) {
<li className="flex items-center justify-between gap-[12px]">
<TextLoading loading={loading} width={110} height={18}>
<p className="text-[#7E7E7E] text-[14px] font-normal">
مبلغ پیش پرداخت:
مبلغ:
</p>
</TextLoading>
<TextLoading loading={loading} width={40} height={18}>
<TextLoading loading={loading} width={80} height={18}>
<p className="text-[#616161] text-[14px] font-medium">
{data.amount} تومان
{data.amount ? data.amount.toLocaleString('fa-IR') : "--"} تومان
</p>
</TextLoading>
</li>