From 768ba9585d450111ebfa285df269e03282977a55 Mon Sep 17 00:00:00 2001 From: Samandar Turgunboyev Date: Thu, 25 Dec 2025 14:58:14 +0500 Subject: [PATCH] order update --- public/shablon.jpg | Bin 0 -> 36093 bytes src/features/order/lib/type.ts | 26 ++++----- src/features/order/ui/OrderDelete.tsx | 3 +- src/features/order/ui/OrderDetail.tsx | 74 ++------------------------ src/features/order/ui/OrderTable.tsx | 24 +-------- src/features/plans/lib/form.ts | 4 +- src/features/plans/ui/ExcelUpload.tsx | 51 ++++++++++++++++++ src/features/plans/ui/FilterPlans.tsx | 27 +++++++++- 8 files changed, 99 insertions(+), 110 deletions(-) create mode 100644 public/shablon.jpg create mode 100644 src/features/plans/ui/ExcelUpload.tsx diff --git a/public/shablon.jpg b/public/shablon.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d7586d90af68ef2c6ad316cd1981efd8524919b6 GIT binary patch literal 36093 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 literal 0 HcmV?d00001 diff --git a/src/features/order/lib/type.ts b/src/features/order/lib/type.ts index 5fae92c..cb9c62d 100644 --- a/src/features/order/lib/type.ts +++ b/src/features/order/lib/type.ts @@ -1,5 +1,5 @@ export interface User { - id: string; + id: number; first_name: string; last_name: string; username: string; @@ -15,28 +15,30 @@ export interface Product { } export interface Item { - id: string; + id: number; quantity: number; price: number; - product: Product; + product: { + id: number; + name_uz: string; + name_ru: string; + price: number; + code: string; + unity: string; + }; } export interface Order { - id: string; - order_number: number; + id: number; status: string; total_price: number; - user: User; - payment_type: string; - delivery_type: string; delivery_price: number; - contact_number: string; comment: string; - name: string; + user: User; items: Item[]; created_at: string; - long: number | null; - lat: number | null; + long: number; + lat: number; } export interface OrdersResponse { diff --git a/src/features/order/ui/OrderDelete.tsx b/src/features/order/ui/OrderDelete.tsx index 1470e04..0aa13e2 100644 --- a/src/features/order/ui/OrderDelete.tsx +++ b/src/features/order/ui/OrderDelete.tsx @@ -55,8 +55,7 @@ const OrderDelete = ({ Buyurtmani o'chirish - Siz rostan ham {orderDelete?.order_number} sonli buyurtmani - o'chirmoqchimisiz? + Siz rostan ham {orderDelete?.id} sonli buyurtmani o'chirmoqchimisiz? diff --git a/src/features/order/ui/OrderDetail.tsx b/src/features/order/ui/OrderDetail.tsx index 42faaa6..8ce5fcf 100644 --- a/src/features/order/ui/OrderDetail.tsx +++ b/src/features/order/ui/OrderDetail.tsx @@ -1,25 +1,17 @@ import type { Order } from "@/features/order/lib/type"; -import formatPhone from "@/shared/lib/formatPhone"; +import formatDate from "@/shared/lib/formatDate"; +import formatPrice from "@/shared/lib/formatPrice"; import { Map, Placemark, YMaps } from "@pbe/react-yandex-maps"; import { Calendar, - CreditCard, MapIcon, MessageSquare, Package, - Phone, - Truck, User, X, } from "lucide-react"; import { type Dispatch, type SetStateAction } from "react"; -const deliveryTypeLabel: Record = { - YANDEX_GO: "Yandex Go", - DELIVERY_COURIES: "Kuryer orqali yetkazish", - PICKUP: "O‘zi olib ketish", -}; - interface Props { detail: boolean; setDetail: Dispatch>; @@ -29,20 +21,6 @@ interface Props { const OrderDetail = ({ detail, setDetail, order }: Props) => { if (!detail || !order) return null; - const formatDate = (dateString: string) => { - return new Date(dateString).toLocaleString("uz-UZ", { - year: "numeric", - month: "long", - day: "numeric", - hour: "2-digit", - minute: "2-digit", - }); - }; - - const formatPrice = (price: number) => { - return new Intl.NumberFormat("uz-UZ").format(price) + " so'm"; - }; - const getStatusColor = (status: string) => { const colors: Record = { pending: "bg-yellow-100 text-yellow-800", @@ -65,9 +43,6 @@ const OrderDetail = ({ detail, setDetail, order }: Props) => {

-

- Buyurtma #{order.order_number} -

ID: {order.id}

@@ -99,12 +74,6 @@ const OrderDetail = ({ detail, setDetail, order }: Props) => { {formatPrice(order.total_price)}

-
-

Yetkazish narxi

-

- {formatPrice(order.delivery_price)} -

-
@@ -116,36 +85,11 @@ const OrderDetail = ({ detail, setDetail, order }: Props) => {
Ism: - {order.name} -
-
- Telefon: - - - {formatPhone(order.contact_number)} - + {order.user.username}
-
-

- - Yetkazish ma'lumotlari -

-
-
- Turi: - - {deliveryTypeLabel[order.delivery_type] ?? - order.delivery_type} - -
-
-
{order.lat && order.long && (
@@ -172,16 +116,6 @@ const OrderDetail = ({ detail, setDetail, order }: Props) => { )}
-
-

- - To'lov turi -

-

- {order.payment_type === "CASH" ? "Naxt" : "Karta orqali"} -

-
- {order.comment && (

diff --git a/src/features/order/ui/OrderTable.tsx b/src/features/order/ui/OrderTable.tsx index 54fe1fc..219b423 100644 --- a/src/features/order/ui/OrderTable.tsx +++ b/src/features/order/ui/OrderTable.tsx @@ -2,7 +2,6 @@ import { order_api } from "@/features/order/lib/api"; import type { Order } from "@/features/order/lib/type"; -import formatPhone from "@/shared/lib/formatPhone"; import formatPrice from "@/shared/lib/formatPrice"; import { Button } from "@/shared/ui/button"; import { @@ -35,12 +34,6 @@ interface Props { setOrderDetail: Dispatch>; } -const deliveryTypeLabel: Record = { - YANDEX_GO: "Yandex Go", - DELIVERY_COURIES: "Kuryer orqali yetkazish", - PICKUP: "O‘zi olib ketish", -}; - type OrderStatus = | "NEW" // "PROCESSING" | @@ -113,11 +106,7 @@ const OrderTable = ({ # - Order № Foydalanuvchi - Kontakt - Toʻlov turi - Yetkazib berish Umumiy narx Izoh Holat @@ -129,18 +118,7 @@ const OrderTable = ({ {orders.map((order, index) => ( {index + 1} - {order.order_number} - - {order.user.first_name} {order.user.last_name} ( - {order.user.username}) - - {formatPhone(order.contact_number)} - - {order.payment_type === "CASH" ? "Naxt" : "Karta orqali"} - - - {deliveryTypeLabel[order.delivery_type] ?? order.delivery_type} - + {order.user.username} {formatPrice(order.total_price, true)} {order.comment || "-"} diff --git a/src/features/plans/lib/form.ts b/src/features/plans/lib/form.ts index 85d50bd..713c33f 100644 --- a/src/features/plans/lib/form.ts +++ b/src/features/plans/lib/form.ts @@ -5,8 +5,8 @@ export const createPlanFormData = z.object({ name_ru: z.string().min(1, "Majburiy maydon"), description_uz: z.string().min(1, "Majburiy maydon"), description_ru: z.string().min(1, "Majburiy maydon"), - category_id: z.string().uuid("Kategoriya noto‘g‘ri"), - unity_id: z.string().uuid("Birlik noto‘g‘ri"), + category_id: z.string(), + unity_id: z.string(), price: z.number().positive("Narx noto‘g‘ri"), quantity_left: z.number().min(0), min_quantity: z.number().min(0), diff --git a/src/features/plans/ui/ExcelUpload.tsx b/src/features/plans/ui/ExcelUpload.tsx new file mode 100644 index 0000000..34c6cf5 --- /dev/null +++ b/src/features/plans/ui/ExcelUpload.tsx @@ -0,0 +1,51 @@ +"use client"; + +import { Button } from "@/shared/ui/button"; +import { useRef } from "react"; + +export default function ExcelUpload() { + const fileInputRef = useRef(null); + + const handleButtonClick = () => { + fileInputRef.current?.click(); + }; + + const handleFileChange = (e: React.ChangeEvent) => { + const file = e.target.files?.[0]; + if (!file) return; + + // Excel format tekshiruvi + const allowedTypes = [ + "application/vnd.ms-excel", + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + ]; + + if (!allowedTypes.includes(file.type)) { + alert("Iltimos, faqat Excel (.xls, .xlsx) fayl yuklang"); + return; + } + + // 👉 shu yerda backendga yuborasiz + // uploadExcel(file) + }; + + return ( + <> + + + + + ); +} diff --git a/src/features/plans/ui/FilterPlans.tsx b/src/features/plans/ui/FilterPlans.tsx index 458c7d3..381516c 100644 --- a/src/features/plans/ui/FilterPlans.tsx +++ b/src/features/plans/ui/FilterPlans.tsx @@ -1,5 +1,6 @@ import type { Product } from "@/features/plans/lib/data"; import AddedPlan from "@/features/plans/ui/AddedPlan"; +import ExcelUpload from "@/features/plans/ui/ExcelUpload"; import { Button } from "@/shared/ui/button"; import { Dialog, @@ -9,7 +10,7 @@ import { DialogTrigger, } from "@/shared/ui/dialog"; import { Input } from "@/shared/ui/input"; -import { Plus } from "lucide-react"; +import { AlertCircle, Plus } from "lucide-react"; import type { Dispatch, SetStateAction } from "react"; interface Props { @@ -38,6 +39,30 @@ const FilterPlans = ({ value={searchUser} onChange={(e) => setSearchUser(e.target.value)} /> + + + + + + + Excel uchun kerakli shablon + + +
+ +

+ Excel shu ko'rinishda bo'lishi kerak aks holda mahsulot qo'shishda + xatolik yuz berishi mumkin. +

+
+
+
+