notification infiti scroll

This commit is contained in:
hamid zarghami
2025-12-21 14:41:21 +03:30
parent 990e3f9f63
commit 2a1c81181e
6 changed files with 103 additions and 39 deletions
+49 -2
View File
@@ -2,6 +2,8 @@ import type { FC } from 'react'
import type { Order } from '../types/Types'
import { PaymentStatusEnum } from '../enum/Enum'
import { OrderStatus } from '../enum/Enum'
import { DeliveryMethodEnum } from '@/pages/shipmentMethod/enum/Enum'
import { PaymentMethodEnum } from '@/pages/paymentMethods/enum/Enum'
import { formatPrice, formatFaNumber } from '@/helpers/func'
interface PaymentInfoProps {
@@ -19,6 +21,26 @@ const PaymentInfo: FC<PaymentInfoProps> = ({
}) => {
const paymentStatus = order.paymentStatus || (order.status === OrderStatus.PAID ? PaymentStatusEnum.Paid : PaymentStatusEnum.Pending)
const getDeliveryMethodText = (method: string): string => {
const methodMap: Record<string, string> = {
[DeliveryMethodEnum.DineIn]: 'سرو در رستوران',
[DeliveryMethodEnum.CustomerPickup]: 'دریافت از محل',
[DeliveryMethodEnum.DeliveryCar]: 'تحویل به خودرو',
[DeliveryMethodEnum.DeliveryCourier]: 'بیرون بر',
}
return methodMap[method] || method
}
const getPaymentMethodText = (method: string): string => {
const methodMap: Record<string, string> = {
[PaymentMethodEnum.Cash]: 'پرداخت نقدی',
[PaymentMethodEnum.Online]: 'پرداخت آنلاین',
[PaymentMethodEnum.CardOnDelivery]: 'پرداخت در محل',
[PaymentMethodEnum.Wallet]: 'کیف پول',
}
return methodMap[method] || method
}
return (
<div className='w-[330px] h-fit bg-white rounded-4xl p-8'>
<div className='flex justify-between items-center'>
@@ -37,11 +59,36 @@ const PaymentInfo: FC<PaymentInfoProps> = ({
<div className='mt-10'>
<div className='flex text-[13px] font-light justify-between items-center border-b border-border border-dashed pb-4'>
<div className='text-description'>
نوع پرداخت
روش ارسال
</div>
<div>{order.paymentMethod?.description || '-'}</div>
<div>{order.deliveryMethod ? getDeliveryMethodText(order.deliveryMethod.method) : '-'}</div>
</div>
{order.deliveryMethod?.description && (
<div className='flex mt-4 text-[13px] font-light justify-between items-center border-b border-border border-dashed pb-4'>
<div className='text-description'>
توضیحات روش ارسال
</div>
<div>{order.deliveryMethod.description}</div>
</div>
)}
<div className='flex mt-4 text-[13px] font-light justify-between items-center border-b border-border border-dashed pb-4'>
<div className='text-description'>
روش پرداخت
</div>
<div>{order.paymentMethod ? getPaymentMethodText(order.paymentMethod.method) : '-'}</div>
</div>
{order.paymentMethod?.description && (
<div className='flex mt-4 text-[13px] font-light justify-between items-center border-b border-border border-dashed pb-4'>
<div className='text-description'>
توضیحات روش پرداخت
</div>
<div>{order.paymentMethod.description}</div>
</div>
)}
{order.paymentMethod?.gateway && (
<div className='flex mt-4 text-[13px] font-light justify-between items-center border-b border-border border-dashed pb-4'>
<div className='text-description'>
+9 -9
View File
@@ -40,11 +40,11 @@ export interface OrderRestaurant {
deletedAt: string | null;
name: string;
slug: string;
logo: string;
address: string;
menuColor: string;
latitude: number;
longitude: number;
logo: string | null;
address: string | null;
menuColor: string | null;
latitude: number | null;
longitude: number | null;
serviceArea: ServiceArea;
isActive: boolean;
establishedYear: number | null;
@@ -52,7 +52,7 @@ export interface OrderRestaurant {
instagram: string | null;
telegram: string | null;
whatsapp: string | null;
description: string;
description: string | null;
seoTitle: string | null;
seoDescription: string | null;
tagNames: string | null;
@@ -72,8 +72,8 @@ export interface OrderDeliveryMethod {
restaurant: string;
deliveryFee: number;
deliveryFeeType: string;
kilometerNumber: number | null;
deliveryFeeForKilometer: number | null;
perKilometerFee: number | null;
distanceBasedMinCost: number | null;
minOrderPrice: number;
description: string;
enabled: boolean;
@@ -124,7 +124,7 @@ export interface OrderFood {
content: string[];
price: number;
order: number | null;
prepareTime: number;
prepareTime: number | null;
weekDays: number[];
mealTypes: string[];
isActive: boolean;