up
deploy to danak / build_and_deploy (push) Has been cancelled

This commit is contained in:
2026-06-26 11:35:17 +03:30
parent 034010a177
commit dd19c00948
6 changed files with 18 additions and 67 deletions
+1 -6
View File
@@ -1,5 +1,4 @@
import { OrderStatusEnum } from '@/pages/order/enum/OrderEnum' import { OrderStatusEnum } from '@/pages/order/enum/OrderEnum'
import { RequestStatusEnum } from '@/pages/request/enum/RequestEnum'
import { ProformaInvoiceStatusEnum } from '@/pages/invoice/enum/InvoiceEnum' import { ProformaInvoiceStatusEnum } from '@/pages/invoice/enum/InvoiceEnum'
import { PaymentStatusEnum } from '@/pages/payment/enum/Enum' import { PaymentStatusEnum } from '@/pages/payment/enum/Enum'
@@ -17,10 +16,6 @@ export type StatusConfig = {
* برای اضافه کردن وضعیت جدید: یک کلید (مقدار enum یا string از API) و مقدار { label, variant } بگذار. * برای اضافه کردن وضعیت جدید: یک کلید (مقدار enum یا string از API) و مقدار { label, variant } بگذار.
*/ */
export const statusRegistry: Record<string, StatusConfig> = { export const statusRegistry: Record<string, StatusConfig> = {
// --- RequestStatusEnum ---
[RequestStatusEnum.PENDING]: { label: 'در انتظار تایید', variant: 'warning' },
// INVOICED shared with OrderStatusEnum (same value 'invoiced') — see OrderStatusEnum.INVOICED below
// --- ProformaInvoiceStatusEnum --- // --- ProformaInvoiceStatusEnum ---
[ProformaInvoiceStatusEnum.ALL]: { label: 'همه', variant: 'neutral' }, [ProformaInvoiceStatusEnum.ALL]: { label: 'همه', variant: 'neutral' },
[ProformaInvoiceStatusEnum.NOT_CONFIRMED]: { label: 'تایید نشده', variant: 'warning' }, [ProformaInvoiceStatusEnum.NOT_CONFIRMED]: { label: 'تایید نشده', variant: 'warning' },
@@ -44,7 +39,7 @@ export const statusRegistry: Record<string, StatusConfig> = {
[OrderStatusEnum.CANCELED]: { label: 'لغو شده', variant: 'error' }, [OrderStatusEnum.CANCELED]: { label: 'لغو شده', variant: 'error' },
// --- PaymentStatusEnum --- // --- PaymentStatusEnum ---
// Pending shared with RequestStatusEnum.PENDING and ticket (same value 'pending') — see above and ticket section // Pending shared with ticket (same value 'pending') — see ticket section
[PaymentStatusEnum.Paid]: { label: 'پرداخت شده', variant: 'success' }, [PaymentStatusEnum.Paid]: { label: 'پرداخت شده', variant: 'success' },
[PaymentStatusEnum.Failed]: { label: 'ناموفق', variant: 'error' }, [PaymentStatusEnum.Failed]: { label: 'ناموفق', variant: 'error' },
[PaymentStatusEnum.Refunded]: { label: 'مسترد شده', variant: 'info' }, [PaymentStatusEnum.Refunded]: { label: 'مسترد شده', variant: 'info' },
+12 -27
View File
@@ -1,7 +1,5 @@
import Tabs from '@/components/Tabs'
import { useState, type FC } from 'react'
import { TabMyRequestsEnum } from './enum/RequestEnum'
import Filters from '@/components/Filters' import Filters from '@/components/Filters'
import { useState, type FC } from 'react'
import Button from '@/components/Button' import Button from '@/components/Button'
import { AddSquare, Eye } from 'iconsax-react' import { AddSquare, Eye } from 'iconsax-react'
import Table from '@/components/Table' import Table from '@/components/Table'
@@ -12,8 +10,7 @@ import { Paths } from '@/config/Paths'
const MyRequests: FC = () => { const MyRequests: FC = () => {
const [page, setPage] = useState<number>(1) const [page, setPage] = useState<number>(1)
const [activeTab, setActiveTab] = useState<TabMyRequestsEnum>(TabMyRequestsEnum.ALL) const { data } = useGetMyRequests(page)
const { data } = useGetMyRequests(page, activeTab)
return ( return (
<div className='mt-5'> <div className='mt-5'>
@@ -21,18 +18,6 @@ const MyRequests: FC = () => {
درخواست های من درخواست های من
</h1> </h1>
<div className='mt-10'>
<Tabs
items={[
{ label: 'همه', value: TabMyRequestsEnum.ALL },
{ label: 'در انتظار تایید', value: TabMyRequestsEnum.PENDING },
{ label: 'فاکتور شده', value: TabMyRequestsEnum.INVOICED },
]}
activeTab={activeTab}
onTabChange={(tab) => setActiveTab(tab as TabMyRequestsEnum)}
/>
</div>
<div className='mt-16 flex justify-between items-center'> <div className='mt-16 flex justify-between items-center'>
<Filters <Filters
fields={[ fields={[
@@ -68,12 +53,16 @@ const MyRequests: FC = () => {
}, },
{ {
key: 'items', key: 'items',
title: 'تعداد اقلام', title: 'اقلام',
render: (item) => { render: (item) => (
return ( <div className="space-y-1">
<div>{item.items.length}</div> {item.items.map((requestItem) => (
) <div key={requestItem.id}>
} {requestItem.product.title} {requestItem.quantity} عدد
</div>
))}
</div>
),
}, },
{ {
key: 'createdAt', key: 'createdAt',
@@ -84,10 +73,6 @@ const MyRequests: FC = () => {
) )
} }
}, },
{
key: 'status',
title: 'وضعیت درخواست',
},
{ {
key: 'actions', key: 'actions',
title: '', title: '',
-11
View File
@@ -1,9 +1,3 @@
export const enum TabMyRequestsEnum {
ALL = "all",
PENDING = "pending",
INVOICED = "invoiced",
}
export const enum FieldTypeEnum { export const enum FieldTypeEnum {
text = "text", text = "text",
textarea = "textarea", textarea = "textarea",
@@ -13,8 +7,3 @@ export const enum FieldTypeEnum {
checkbox = "checkbox", checkbox = "checkbox",
date = "date", date = "date",
} }
export enum RequestStatusEnum {
PENDING = "pending",
INVOICED = "invoiced",
}
+3 -4
View File
@@ -1,6 +1,5 @@
import { useMutation, useQuery } from "@tanstack/react-query"; import { useMutation, useQuery } from "@tanstack/react-query";
import * as api from "../service/RequestService"; import * as api from "../service/RequestService";
import type { TabMyRequestsEnum } from "../enum/RequestEnum";
import type { AddTicketType } from "../type/Types"; import type { AddTicketType } from "../type/Types";
export const useGetProducts = () => { export const useGetProducts = () => {
@@ -24,10 +23,10 @@ export const useSubmitRequest = () => {
}); });
}; };
export const useGetMyRequests = (page: number = 1, statuses: TabMyRequestsEnum) => { export const useGetMyRequests = (page: number = 1) => {
return useQuery({ return useQuery({
queryKey: ["my-requests", page, statuses], queryKey: ["my-requests", page],
queryFn: () => api.getMyRequests(page, statuses), queryFn: () => api.getMyRequests(page),
}); });
}; };
+2 -17
View File
@@ -8,7 +8,6 @@ import type {
ProductsResponseType, ProductsResponseType,
TicketsResponseType, TicketsResponseType,
} from "../type/Types"; } from "../type/Types";
import { RequestStatusEnum, TabMyRequestsEnum } from "../enum/RequestEnum";
export const getProducts = async () => { export const getProducts = async () => {
const { data } = await axios.get<ProductsResponseType>(`/public/products`); const { data } = await axios.get<ProductsResponseType>(`/public/products`);
@@ -27,23 +26,9 @@ export const submitRequest = async (params: RequestType[]) => {
return data; return data;
}; };
export const getMyRequests = async ( export const getMyRequests = async (page: number = 1) => {
page: number = 1,
active: TabMyRequestsEnum,
) => {
const statuses =
active === TabMyRequestsEnum.PENDING
? [RequestStatusEnum.PENDING]
: active === TabMyRequestsEnum.INVOICED
? [RequestStatusEnum.INVOICED]
: undefined;
let query = `?page=${page}`;
if (statuses) {
query += `&statuses=${statuses}`;
}
const { data } = await axios.get<MyRequestsResponseType>( const { data } = await axios.get<MyRequestsResponseType>(
`/public/request${query}`, `/public/request?page=${page}`,
); );
return data; return data;
}; };
-2
View File
@@ -77,7 +77,6 @@ export interface MyRequestType extends RowDataType {
orderNumber: number; orderNumber: number;
paidAmount: number; paidAmount: number;
paymentMethod: string; paymentMethod: string;
status: string;
subTotal: number; subTotal: number;
taxAmount: number; taxAmount: number;
total: number; total: number;
@@ -174,7 +173,6 @@ export type RequestDetailType = {
deletedAt: string | null; deletedAt: string | null;
user: RequestDetailUserType; user: RequestDetailUserType;
requestNumber: number; requestNumber: number;
status: string;
items: RequestDetailItemType[]; items: RequestDetailItemType[];
}; };