order progressing

This commit is contained in:
hamid zarghami
2026-02-23 10:40:58 +03:30
parent 4f1884d98b
commit 377c484278
5 changed files with 53 additions and 33 deletions
@@ -1,6 +1,8 @@
import { type FC } from 'react'; import { type FC } from 'react';
import { Eye } from 'iconsax-react'; import { Eye } from 'iconsax-react';
import { Link } from 'react-router-dom';
import StatusCircle from '@/components/StatusCircle'; import StatusCircle from '@/components/StatusCircle';
import { Paths } from '@/config/Paths';
import { type Order, type OrderStatus } from './types/OrderTypes'; import { type Order, type OrderStatus } from './types/OrderTypes';
// کامپوننت رندر شماره سفارش // کامپوننت رندر شماره سفارش
@@ -37,7 +39,7 @@ export const OrderDateRenderer: FC<{ order: Order }> = ({ order }) => {
// کامپوننت رندر وضعیت سفارش // کامپوننت رندر وضعیت سفارش
export const OrderStatusRenderer: FC<{ order: Order }> = ({ order }) => { export const OrderStatusRenderer: FC<{ order: Order }> = ({ order }) => {
const getStatusConfig = (status: OrderStatus) => { const getStatusConfig = (status: OrderStatus | string) => {
switch (status) { switch (status) {
case 'در حال طراحی': case 'در حال طراحی':
return { return {
@@ -93,14 +95,11 @@ export const OrderMessagesRenderer: FC<{ order: Order }> = ({ order }) => {
// کامپوننت رندر آیکون مشاهده // کامپوننت رندر آیکون مشاهده
export const OrderViewRenderer: FC<{ order: Order }> = ({ order }) => { export const OrderViewRenderer: FC<{ order: Order }> = ({ order }) => {
return ( return (
<button <Link
className="p-1 hover:bg-gray-100 rounded-full transition-colors" to={Paths.orderDetails + order.id}
onClick={() => { className="p-1 hover:bg-gray-100 rounded-full transition-colors inline-block"
// اینجا می‌توانید منطق مشاهده جزئیات را اضافه کنید
console.log('View order:', order.id);
}}
> >
<Eye color='black' size={16} /> <Eye color="black" size={16} />
</button> </Link>
); );
}; };
+22 -2
View File
@@ -2,7 +2,10 @@ import Table from '@/components/Table'
import { type FC } from 'react' import { type FC } from 'react'
import { type ColumnType } from '@/components/types/TableTypes' import { type ColumnType } from '@/components/types/TableTypes'
import { type Order } from './types/OrderTypes' import { type Order } from './types/OrderTypes'
import { ordersData } from './data/ordersData' import { useGetMyOrders } from '@/pages/order/hooks/useOrderData'
import { TabMyRequestsEnum } from '@/pages/order/enum/OrderEnum'
import { orderStatusLabels } from '@/pages/order/constants/statusLabels'
import moment from 'moment-jalaali'
import { import {
OrderNumberRenderer, OrderNumberRenderer,
OrderTitleRenderer, OrderTitleRenderer,
@@ -11,8 +14,24 @@ import {
OrderMessagesRenderer, OrderMessagesRenderer,
OrderViewRenderer OrderViewRenderer
} from './OrderTableComponents' } from './OrderTableComponents'
import type { OrderType } from '@/pages/order/type/Types'
const mapOrderToRow = (order: OrderType): Order => ({
id: order.id,
number: String(order.orderNumber ?? order.id),
title: order.title,
creationDate: {
gregorian: moment(order.createdAt).format('YYYY-MM-DD'),
persian: moment(order.createdAt).format('jYYYY/jMM/jDD')
},
status: orderStatusLabels[order.status] ?? order.status,
unreadMessages: 0
})
const Orders: FC = () => { const Orders: FC = () => {
const { data, isLoading } = useGetMyOrders(1, TabMyRequestsEnum.IN_PROGRESS)
const orders: Order[] = (data?.data ?? []).map(mapOrderToRow)
const columns: ColumnType<Order>[] = [ const columns: ColumnType<Order>[] = [
{ {
title: 'شماره', title: 'شماره',
@@ -55,7 +74,8 @@ const Orders: FC = () => {
<Table<Order> <Table<Order>
columns={columns} columns={columns}
data={ordersData} data={orders}
isLoading={isLoading}
/> />
</div> </div>
) )
@@ -8,7 +8,7 @@ export interface Order extends RowDataType {
gregorian: string; gregorian: string;
persian: string; persian: string;
}; };
status: OrderStatus; status: OrderStatus | string;
unreadMessages: number; unreadMessages: number;
[key: string]: unknown; [key: string]: unknown;
} }
+2 -20
View File
@@ -5,25 +5,7 @@ import moment from 'moment-jalaali'
import { useGetOrderDetails } from './hooks/useOrderData' import { useGetOrderDetails } from './hooks/useOrderData'
import TicketSection from './components/TicketSection' import TicketSection from './components/TicketSection'
import { getFileNameAndExtensionFromUrl } from '@/config/func' import { getFileNameAndExtensionFromUrl } from '@/config/func'
import { RequestStatusEnum } from './enum/OrderEnum' import { orderStatusLabels } from './constants/statusLabels'
const statusLabels: Record<string, string> = {
[RequestStatusEnum.CREATED]: 'ایجاد شده',
[RequestStatusEnum.INVOICED]: 'فاکتور شده',
[RequestStatusEnum.WAITING_to_CONFIRM_INVOICE]: 'در انتظار تایید فاکتور',
[RequestStatusEnum.DESIGN_INITIATED]: 'شروع طراحی',
[RequestStatusEnum.DESIGN_FINISHED]: 'طراحی تمام شده',
[RequestStatusEnum.DESIGN_REVISION]: 'بازنگری طراحی',
[RequestStatusEnum.READY_TO_PRINTING]: 'آماده چاپ',
[RequestStatusEnum.IN_PRINTING]: 'در حال چاپ',
[RequestStatusEnum.AFTER_PRINT_COVER]: 'پس از چاپ جلد',
[RequestStatusEnum.AFTER_PRINT_CARTONING]: 'کارتن‌سازی',
[RequestStatusEnum.AFTER_PRINT_BOXING]: 'بسته‌بندی',
[RequestStatusEnum.READY_FOR_DELIVERY]: 'آماده ارسال',
[RequestStatusEnum.DELIVERED]: 'تحویل شده',
[RequestStatusEnum.FINISHED]: 'پایان یافته',
[RequestStatusEnum.CANCELED]: 'لغو شده',
}
const OrderDetail: FC = () => { const OrderDetail: FC = () => {
const { id } = useParams() const { id } = useParams()
@@ -84,7 +66,7 @@ const OrderDetail: FC = () => {
<div className="text-xs text-desc">وضعیت:</div> <div className="text-xs text-desc">وضعیت:</div>
<div className="text-sm font-medium text-black"> <div className="text-sm font-medium text-black">
{order?.status {order?.status
? statusLabels[order.status] ?? order.status ? orderStatusLabels[order.status] ?? order.status
: '-'} : '-'}
</div> </div>
</div> </div>
+19
View File
@@ -0,0 +1,19 @@
import { RequestStatusEnum } from '../enum/OrderEnum'
export const orderStatusLabels: Record<string, string> = {
[RequestStatusEnum.CREATED]: 'ایجاد شده',
[RequestStatusEnum.INVOICED]: 'فاکتور شده',
[RequestStatusEnum.WAITING_to_CONFIRM_INVOICE]: 'در انتظار تایید فاکتور',
[RequestStatusEnum.DESIGN_INITIATED]: 'شروع طراحی',
[RequestStatusEnum.DESIGN_FINISHED]: 'طراحی تمام شده',
[RequestStatusEnum.DESIGN_REVISION]: 'بازنگری طراحی',
[RequestStatusEnum.READY_TO_PRINTING]: 'آماده چاپ',
[RequestStatusEnum.IN_PRINTING]: 'در حال چاپ',
[RequestStatusEnum.AFTER_PRINT_COVER]: 'پس از چاپ جلد',
[RequestStatusEnum.AFTER_PRINT_CARTONING]: 'کارتن‌سازی',
[RequestStatusEnum.AFTER_PRINT_BOXING]: 'بسته‌بندی',
[RequestStatusEnum.READY_FOR_DELIVERY]: 'آماده ارسال',
[RequestStatusEnum.DELIVERED]: 'تحویل شده',
[RequestStatusEnum.FINISHED]: 'پایان یافته',
[RequestStatusEnum.CANCELED]: 'لغو شده',
}