first commit

This commit is contained in:
Samandar Turgunboyev
2025-10-13 14:14:32 +05:00
parent 4309981b29
commit 1f1aae0ab7
76 changed files with 10746 additions and 0 deletions

206
src/widgets/boxes/index.tsx Normal file
View File

@@ -0,0 +1,206 @@
'use client';
import Passport from '@/assets/passport.jpg';
import { getBoxes } from '@/shared/config/api/testApi';
import formatPhone from '@/shared/lib/formatPhone';
import { useQuery } from '@tanstack/react-query';
import Image from 'next/image';
import { useParams } from 'next/navigation';
const Boxes = () => {
const products = [
{
name: 'Quloqchin',
nameRu: 'Наушники',
trackId: 'TRK-001',
quantity: 2,
price: '120 000 UZS',
weight: 0.4,
},
{
name: 'Zaryadka',
nameRu: 'Зарядка',
trackId: 'TRK-002',
quantity: 1,
price: '60 000 UZS',
weight: 0.2,
},
];
const { id } = useParams();
const { data } = useQuery({
queryKey: ['boxes_detail'],
queryFn: () => getBoxes.boxesDetail({ id: Number(id) }),
select(data) {
return data.data.data;
},
});
console.log(data);
return (
<div className="flex flex-col gap-10 container w-full justify-start items-center h-screen">
<div className="bg-gray-100/50 shadow-xl p-4 py-6 rounded-lg w-[50%] max-lg:w-[90%] flex flex-col gap-6">
<h1 className="text-3xl text-blue-700 text-center font-semibold">
Karobka maʼlumotlari
</h1>
<div className="flex justify-between max-lg:flex-col">
<p className="text-lg font-semibold">
ID: <span className="font-normal">{data?.boxName}</span>
</p>
<p className="text-lg font-semibold">
Partiya: <span className="font-normal">{data?.partyName}</span>
</p>
<p className="text-lg font-semibold">
Paketlar soni:{' '}
<span className="font-normal">{data?.packetCount}</span>
</p>
</div>
</div>
{data?.packets.map((e) => (
<div
className="bg-gray-100/50 shadow-xl p-4 py-6 rounded-lg w-[50%] max-lg:w-[90%] flex flex-col gap-6"
key={e.id}
>
<div className="flex justify-between">
<p className="text-md font-semibold text-purple-600">
Paket:
<span className="font-normal">{data?.boxName}</span>
<span className="text-xs ml-2 bg-blue-100 text-blue-700 px-2 py-0.5 rounded">
Status: {e.packetStatus}
</span>
</p>
<p className="text-md text-foreground font-semibold">
Cargo ID:<span className="font-normal">{e.userInfo.cargoID}</span>
</p>
</div>
<div className="w-full h-[1px] bg-black" />
<div className="grid grid-cols-2 gap-4 max-lg:grid-cols-1">
<div className="bg-muted-foreground/10 rounded-md p-2 flex flex-col gap-2">
<p>Foydalanuvchi</p>
<p className="text-md font-semibold">
Ismi:
<span className="font-normal pl-2">{e.userInfo.fullName}</span>
</p>
<p className="text-md font-semibold">
Cargo ID:
<span className="font-normal pl-2">{e.userInfo.cargoID}</span>
</p>
<p className="text-md font-semibold">
Manzil:
<span className="font-normal pl-2">{e.userInfo.address}</span>
</p>
<p className="text-md font-semibold">
Telefon:
<span className="font-normal pl-2">
{formatPhone(e.userInfo.phone)}
</span>
</p>
</div>
<div className="bg-muted-foreground/10 rounded-md flex flex-col gap-2 p-2">
<p>Passport</p>
<p className="text-md font-semibold">
Seriya:
<span className="font-normal pl-2">
{e.passportInfo.passportSeries}
</span>
</p>
<p className="text-md font-semibold">
PINFL:
<span className="font-normal pl-2">
{e.passportInfo.passportPin}
</span>
</p>
<div className="text-md font-semibold">
<p>Passport rasmi:</p>
<div className="flex gap-4">
<a
href={Passport.src}
target="_blank"
rel="noopener noreferrer"
>
<Image
src={Passport}
alt="Passport"
className="w-16 mt-2"
/>
</a>
<a
href={Passport.src}
target="_blank"
rel="noopener noreferrer"
>
<Image
src={Passport}
alt="Passport"
className="w-16 mt-2"
/>
</a>
</div>
</div>
</div>
</div>
<div>
<h5 className="text-lg font-semibold mb-2">Mahsulotlar</h5>
<div className="overflow-x-auto rounded-lg border border-gray-300">
<table className="min-w-full divide-y divide-gray-200 text-sm text-left">
<thead className="bg-blue-100 text-blue-800">
<tr>
<th className="px-3 py-2 border whitespace-nowrap">T/r</th>
<th className="px-3 py-2 border whitespace-nowrap">Nomi</th>
<th className="px-3 py-2 border whitespace-nowrap">
Nomi (Ru)
</th>
<th className="px-3 py-2 border whitespace-nowrap">
Trek ID
</th>
<th className="px-3 py-2 border whitespace-nowrap">Soni</th>
<th className="px-3 py-2 border whitespace-nowrap">
Narxi
</th>
<th className="px-3 py-2 border whitespace-nowrap">
Ogirligi (kg)
</th>
</tr>
</thead>
<tbody className="bg-white divide-y divide-gray-200">
{e.items.map((item, index) => (
<tr key={index} className="hover:bg-gray-50">
<td className="px-3 py-2 border whitespace-nowrap">
{index + 1}
</td>
<td className="px-3 py-2 border whitespace-nowrap">
{item.name}
</td>
<td className="px-3 py-2 border whitespace-nowrap">
{item.nameRu}
</td>
<td className="px-3 py-2 border whitespace-nowrap">
{item.trekId}
</td>
<td className="px-3 py-2 border whitespace-nowrap">
{item.amount}
</td>
<td className="px-3 py-2 border whitespace-nowrap">
{item.price}
</td>
<td className="px-3 py-2 border whitespace-nowrap">
{item.netWeight}
</td>
</tr>
))}
</tbody>
</table>
</div>
</div>
</div>
))}
</div>
);
};
export default Boxes;