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 { RequestStatusEnum } from '@/pages/request/enum/RequestEnum'
import { ProformaInvoiceStatusEnum } from '@/pages/invoice/enum/InvoiceEnum'
import { PaymentStatusEnum } from '@/pages/payment/enum/Enum'
@@ -17,10 +16,6 @@ export type StatusConfig = {
* برای اضافه کردن وضعیت جدید: یک کلید (مقدار enum یا string از API) و مقدار { label, variant } بگذار.
*/
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.ALL]: { label: 'همه', variant: 'neutral' },
[ProformaInvoiceStatusEnum.NOT_CONFIRMED]: { label: 'تایید نشده', variant: 'warning' },
@@ -44,7 +39,7 @@ export const statusRegistry: Record<string, StatusConfig> = {
[OrderStatusEnum.CANCELED]: { label: 'لغو شده', variant: 'error' },
// --- 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.Failed]: { label: 'ناموفق', variant: 'error' },
[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 { useState, type FC } from 'react'
import Button from '@/components/Button'
import { AddSquare, Eye } from 'iconsax-react'
import Table from '@/components/Table'
@@ -12,8 +10,7 @@ import { Paths } from '@/config/Paths'
const MyRequests: FC = () => {
const [page, setPage] = useState<number>(1)
const [activeTab, setActiveTab] = useState<TabMyRequestsEnum>(TabMyRequestsEnum.ALL)
const { data } = useGetMyRequests(page, activeTab)
const { data } = useGetMyRequests(page)
return (
<div className='mt-5'>
@@ -21,18 +18,6 @@ const MyRequests: FC = () => {
درخواست های من
</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'>
<Filters
fields={[
@@ -68,12 +53,16 @@ const MyRequests: FC = () => {
},
{
key: 'items',
title: 'تعداد اقلام',
render: (item) => {
return (
<div>{item.items.length}</div>
)
}
title: 'اقلام',
render: (item) => (
<div className="space-y-1">
{item.items.map((requestItem) => (
<div key={requestItem.id}>
{requestItem.product.title} {requestItem.quantity} عدد
</div>
))}
</div>
),
},
{
key: 'createdAt',
@@ -84,10 +73,6 @@ const MyRequests: FC = () => {
)
}
},
{
key: 'status',
title: 'وضعیت درخواست',
},
{
key: 'actions',
title: '',
-11
View File
@@ -1,9 +1,3 @@
export const enum TabMyRequestsEnum {
ALL = "all",
PENDING = "pending",
INVOICED = "invoiced",
}
export const enum FieldTypeEnum {
text = "text",
textarea = "textarea",
@@ -13,8 +7,3 @@ export const enum FieldTypeEnum {
checkbox = "checkbox",
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 * as api from "../service/RequestService";
import type { TabMyRequestsEnum } from "../enum/RequestEnum";
import type { AddTicketType } from "../type/Types";
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({
queryKey: ["my-requests", page, statuses],
queryFn: () => api.getMyRequests(page, statuses),
queryKey: ["my-requests", page],
queryFn: () => api.getMyRequests(page),
});
};
+2 -17
View File
@@ -8,7 +8,6 @@ import type {
ProductsResponseType,
TicketsResponseType,
} from "../type/Types";
import { RequestStatusEnum, TabMyRequestsEnum } from "../enum/RequestEnum";
export const getProducts = async () => {
const { data } = await axios.get<ProductsResponseType>(`/public/products`);
@@ -27,23 +26,9 @@ export const submitRequest = async (params: RequestType[]) => {
return data;
};
export const getMyRequests = async (
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}`;
}
export const getMyRequests = async (page: number = 1) => {
const { data } = await axios.get<MyRequestsResponseType>(
`/public/request${query}`,
`/public/request?page=${page}`,
);
return data;
};
-2
View File
@@ -77,7 +77,6 @@ export interface MyRequestType extends RowDataType {
orderNumber: number;
paidAmount: number;
paymentMethod: string;
status: string;
subTotal: number;
taxAmount: number;
total: number;
@@ -174,7 +173,6 @@ export type RequestDetailType = {
deletedAt: string | null;
user: RequestDetailUserType;
requestNumber: number;
status: string;
items: RequestDetailItemType[];
};