modal and send rent info to telegram bot

This commit is contained in:
nabijonovdavronbek619@gmail.com
2025-11-08 18:25:40 +05:00
parent a6c85adaca
commit 5d27a3e8fa
6 changed files with 1159 additions and 295 deletions

View File

@@ -3,13 +3,14 @@
import { useCarDetail } from "@/components/lib_components/carDetailProvider";
import Text from "@/components/lib_components/text";
import Image from "next/image";
import React from "react";
import { Send } from "lucide-react";
import React, { useState } from "react";
import CarRentalModal from "@/components/lib_components/carRentalModal";
import { useTranslation } from "react-i18next";
export default function CarDetailPage() {
const { detail } = useCarDetail();
const [modalOpen, setModalOpen] = useState<boolean>(false);
// 1⃣ Null holatni boshqarish
if (!detail) {
return (
<div className="my-20 text-center text-gray-500">
@@ -18,18 +19,42 @@ export default function CarDetailPage() {
);
}
const {t} = useTranslation();
const techSpecs: Record<string, string | number | undefined> = {
[t("weight_kg")]: detail.weight_kg && `${detail.weight_kg.toLocaleString("uz-UZ")} kg`,
[t("maxLength_m")]: detail.maxLength_m && `${detail.maxLength_m} m`,
[t("maxHeight_m")]: detail.maxHeight_m && `${detail.maxHeight_m} m`,
[t("capacity_tons")]: detail.capacity_tons && `${detail.capacity_tons} t`,
[t("capacity_kg")]: detail.capacity_kg && `${detail.capacity_kg} kg`,
[t("fuelType")]: detail.fuelType,
[t("tankVolume_m3")]: detail.tankVolume_m3 && `${detail.tankVolume_m3}`,
[t("maxSpeed_kmh")]: detail.maxSpeed_kmh && `${detail.maxSpeed_kmh} km/soat`,
[t("intercooler")]: detail.intercooler,
[t("enginePower_hp")]: detail.enginePower_hp,
[t("transmission")]: detail.transmission,
[t("bom")]: detail.bom && `${detail.bom} m`,
[t("qazish")]: detail.qazish && `${detail.qazish} m`,
[t("pichoq")]: detail.pichoq && `${detail.pichoq} m`,
[t("zichlash")]: detail.zichlash && `${detail.zichlash} m`,
[t("siqish")]: detail.siqish && `${detail.siqish} bar`,
[t("havo")]: detail.havo && `${detail.havo} l`,
[t("kompressor_sig")]: detail.kompressor_sig && `${detail.kompressor_sig} l`
};
return (
<div
dir="ltr"
className="my-10 max-w-[1200px] w-full mx-auto space-y-5 flex flex-col items-start justify-center "
className="my-10 max-w-[1200px] w-full mx-auto space-y-8 flex flex-col items-start justify-center"
>
{/* 2️⃣ Mahsulot nomi */}
{/* 1️⃣ Mashina nomi */}
<div className="text-2xl font-bold w-full text-center text-secondary mb-10">
<Text txt={detail.name} />
</div>
{/* 2⃣ Rasmi + asosiy narx malumotlari */}
<div className="flex flex-col md:flex-row items-start gap-6 justify-center w-full">
{/* 3⃣ Rasmini korsatish */}
{/* Mashina rasmi */}
<div className="w-[400px] h-auto">
<Image
src={detail.image}
@@ -40,8 +65,8 @@ export default function CarDetailPage() {
/>
</div>
{/* 4⃣ Malumotlar bloki */}
<div className="space-y-3 ">
{/* Asosiy malumotlar */}
<div className="space-y-3 w-full">
<div className="text-lg font-semibold flex gap-2">
<Text txt="hour-price" />
<span className="font-medium flex gap-2 text-gray-500">
@@ -57,33 +82,56 @@ export default function CarDetailPage() {
</span>
</div>
<div className="text-lg font-semibold flex gap-2">
<Text txt="day-price" />{" "}
<Text txt="day-price" />
<span className="font-medium flex gap-2 text-gray-500">
{detail.price && (detail.price * 8).toLocaleString("uz-UZ")}
<Text txt="wallet" />
</span>
</div>
{/* Izoh */}
<div className="space-y-2 text-gray-500 text-lg">
<Text txt="note1" />
<Text txt="note2" />
</div>
{/* Buyurtma tugmasi */}
<div className="flex gap-6">
<a href="tel:+998917412920" className="
bg-secondary p-3 px-6 rounded-lg border-2 border-secondary text-white
hover:cursor-pointer hover:bg-white hover:text-secondary
">
<button
onClick={() => setModalOpen(true)}
className="bg-secondary p-3 px-6 rounded-lg border-2 border-secondary text-white
hover:cursor-pointer hover:bg-white hover:text-secondary transition-all"
>
<Text txt="book" />
</a>
<a href="https://t.me/@ndx_09" className="
flex gap-4 p-3 rounded-lg border-2 border-sky-500 text-sky-500
hover:cursor-pointer hover:text-black hover:border-black
">
<Send className="w-6 h-6" />
<Text txt="ask" />
</a>
</button>
</div>
</div>
</div>
{/* 3⃣ Texnik xususiyatlar (faqat mavjudlari) */}
<div className="w-full border-t border-gray-300 pt-6">
<h2 className="text-xl font-semibold mb-4 text-secondary">Texnik xususiyatlari</h2>
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4 text-gray-700">
{Object.entries(techSpecs)
.filter(([_, value]) => value !== undefined)
.map(([key, value]) => (
<div
key={key}
className="p-3 rounded-md bg-gray-50 border border-gray-200 hover:bg-gray-100 transition"
>
<p className="font-medium">{key}:</p>
<p className="text-gray-600">{value}</p>
</div>
))}
</div>
</div>
{/* 4⃣ Ijara modal */}
<CarRentalModal
car={detail}
isOpen={modalOpen}
onClose={() => setModalOpen(false)}
/>
</div>
);
}

View File

@@ -0,0 +1,165 @@
"use client";
import { innerCardTypes } from "@/types";
import React, { useState, useEffect } from "react";
import axios from "axios";
interface CarRentalModalProps {
car: innerCardTypes;
isOpen: boolean;
onClose: () => void;
}
export default function CarRentalModal({
car,
isOpen,
onClose,
}: CarRentalModalProps) {
const [userName, setUserName] = useState("");
const [phone, setPhone] = useState("");
const [hours, setHours] = useState<number>(1);
const [total, setTotal] = useState<number | undefined>(car?.price);
useEffect(() => {
if (car.price) setTotal(hours * car.price);
}, [hours, car.price]);
// 🧩 Telegramga yuboruvchi funksiya
const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {
e.preventDefault();
if (!userName || !phone || !hours) {
alert("Iltimos, barcha maydonlarni toldiring!");
return;
}
try {
// ⚙️ Telegram bot ma'lumotlari
const token = process.env.NEXT_PUBLIC_TELEGRAM_TOKEN || "7940057045:AAHRFPvgUCo_7pqpXD6uq4li7-_DYx2J96g";
const chatId = process.env.NEXT_PUBLIC_TELEGRAM_CHAT_ID || "6134458285";
// 🧾 Yuboriladigan xabar
const message = `
🚗 *Yangi buyurtma!*
👤 Ism: ${userName}
📞 Telefon: ${phone}
🕒 Buyurtma vaqti: ${hours} soat
💰 Umumiy summa: ${total?.toLocaleString("uz-UZ")} UZS
📦 Mashina: ${car.name}
⛽️ Yoqilgi turi: ${car.fuelType || "Nomalum"}
⚙️ Dvigatel: ${car.enginePower_hp || "-"}
🚀 Maks tezlik: ${car.maxSpeed_kmh ? car.maxSpeed_kmh + " km/soat" : "-"}
📝 Qoshimcha malumot: ${car.path || "-"}
`;
// 📤 Telegram API orqali yuborish
await axios.post(`https://api.telegram.org/bot${token}/sendMessage`, {
chat_id: chatId,
text: message,
parse_mode: "Markdown",
});
alert("✅ Buyurtmangiz muvaffaqiyatli yuborildi!");
onClose();
setUserName("");
setPhone("");
setHours(1);
} catch (error) {
console.error("Yuborishda xatolik:", error);
alert("❌ Xatolik yuz berdi. Qayta urinib koring!");
}
};
if (!isOpen) return null;
return (
<div className="fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm p-4">
<div className="bg-white rounded-xl shadow-xl max-w-lg w-full p-6 relative animate-fade-in">
{/* Close button */}
<button
className="absolute top-4 right-4 text-gray-500 hover:text-gray-900 text-2xl font-bold transition"
onClick={onClose}
>
×
</button>
{/* Header */}
<div className="flex flex-col md:flex-row gap-4">
<div className="flex-1">
<h2 className="text-2xl font-bold text-gray-800">{car.name}</h2>
<p className="text-gray-600 mt-2">{car.path}</p>
<p className="text-gray-700 mt-2 font-semibold">
Soatlik narx:{" "}
<span className="text-red-600">
{car.price?.toLocaleString()} UZS
</span>
</p>
</div>
</div>
{/* Form */}
<form onSubmit={handleSubmit} className="mt-6 space-y-4">
<div>
<label className="block text-sm font-medium text-gray-700 mb-1">
Ismingiz
</label>
<input
type="text"
name="userName"
className="w-full border border-gray-300 rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-secondary focus:border-transparent"
value={userName}
onChange={(e) => setUserName(e.target.value)}
placeholder="Ismingizni kiriting"
/>
</div>
<div>
<label className="block text-sm font-medium text-gray-700 mb-1">
Telefon
</label>
<input
type="tel"
name="phone"
className="w-full border border-gray-300 rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-secondary focus:border-transparent"
value={phone}
onChange={(e) => setPhone(e.target.value)}
placeholder="+998 90 123 45 67"
/>
</div>
<div>
<label className="block text-sm font-medium text-gray-700 mb-1">
Qancha vaqt (soat)
</label>
<input
type="number"
name="hours"
min={1}
className="w-full border border-gray-300 rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-secondary focus:border-transparent"
value={hours}
onChange={(e) => setHours(Number(e.target.value))}
/>
</div>
<div className="text-lg font-semibold text-gray-800 mt-2">
Jami summa:{" "}
<span className="text-green-600">
{total?.toLocaleString()} UZS
</span>
</div>
<button
type="submit"
className="w-full bg-secondary text-white py-2 rounded-lg hover:bg-primary transition font-medium"
>
Buyurtma berish
</button>
</form>
</div>
</div>
);
}

View File

@@ -253,146 +253,743 @@ export const allProducts : ProductTypes[] = [
//yuk mashinalari
export const cement_trucks: innerCardTypes[] = [
{ id: 1, image: Howo1, name: "Avtosementavoz Howo 1", min_order_time: 4, price: 350000, path: "" },
{ id: 4, image: Howo2_1, name: "Avtosementavoz Howo 4", min_order_time: 4, price: 365000, path: "" },
{ id: 5, image: Howo3_1, name: "Avtosementavoz Howo 5", min_order_time: 4, price: 370000, path: "" },
{
id: 1,
image: Howo1,
name: "Avtosementavoz Howo 1",
min_order_time: 4,
price: 350000,
path: "",
maxLength_m: 11, // Maksimum uzunligi (metr)
capacity_tons: 45, // Yuk ko'tarish qobiliyati (tonna)
fuelType: "Dizel/Gaz", // Yoqilg'i turi
tankVolume_m3: 35, // Tank hajmi (m3)
maxSpeed_kmh: 130, // Maksimum tezligi (km/soat)
intercooler: "Bor", // Interkuler (Bor/Yoq)
enginePower_hp: "360-400", // Dvigatel quvvati (ot kuchi) — diapazon sifatida
transmission: "Mexanik/Robot", // O'tkazmalar qutisi
},
{
id: 2,
image: Howo2_1,
name: "Avtosementavoz Howo 4",
min_order_time: 4,
price: 365000,
path: "",
maxLength_m: 11, // Maksimum uzunligi (metr)
capacity_tons: 45, // Yuk ko'tarish qobiliyati (tonna)
fuelType: "Dizel/Gaz", // Yoqilg'i turi
tankVolume_m3: 35, // Tank hajmi (m3)
maxSpeed_kmh: 130, // Maksimum tezligi (km/soat)
intercooler: "Bor", // Interkuler (Bor/Yoq)
enginePower_hp: "360-400", // Dvigatel quvvati (ot kuchi) — diapazon sifatida
transmission: "Mexanik/Robot", // O'tkazmalar qutisi
},
{
id: 3,
image: Howo3_1,
name: "Avtosementavoz Howo 5",
min_order_time: 4,
price: 370000,
path: "",
maxLength_m: 11, // Maksimum uzunligi (metr)
capacity_tons: 45, // Yuk ko'tarish qobiliyati (tonna)
fuelType: "Dizel/Gaz", // Yoqilg'i turi
tankVolume_m3: 35, // Tank hajmi (m3)
maxSpeed_kmh: 130, // Maksimum tezligi (km/soat)
intercooler: "Bor", // Interkuler (Bor/Yoq)
enginePower_hp: "360-400", // Dvigatel quvvati (ot kuchi) — diapazon sifatida
transmission: "Mexanik/Robot", // O'tkazmalar qutisi
},
];
export const dumb_trucks: innerCardTypes[] = [
{ id: 1, image: Kaimei1, name: "Kaimei Samasval", min_order_time: 3, price: 400000, path: "" },
{ id: 2, image: Chakman2, name: "Chakman Samasval", min_order_time: 3, price: 410000, path: "" },
{ id: 3, image: Isuzu2, name: "Isuzu Samasval", min_order_time: 3, price: 430000, path: "" },
{
id: 1,
image: Kaimei1,
name: "Kaimei Samasval",
min_order_time: 3,
price: 400000,
path: "",
maxLength_m: 11, // Maksimum uzunligi (metr)
capacity_tons: 25, // Yuk ko'tarish qobiliyati (tonna)
fuelType: "Dizel", // Yoqilg'i turi
maxSpeed_kmh: 130, // Maksimum tezligi (km/soat)
intercooler: "Bor", // Interkuler (Bor/Yoq)
enginePower_hp: "360-400", // Dvigatel quvvati (ot kuchi) — diapazon sifatida
transmission: "Mexanik", // O'tkazmalar qutisi
},
{
id: 2,
image: Chakman2,
name: "Chakman Samasval",
min_order_time: 3,
price: 410000,
path: "",
maxLength_m: 11, // Maksimum uzunligi (metr)
capacity_tons: 25, // Yuk ko'tarish qobiliyati (tonna)
fuelType: "Dizel", // Yoqilg'i turi
maxSpeed_kmh: 130, // Maksimum tezligi (km/soat)
intercooler: "Bor", // Interkuler (Bor/Yoq)
enginePower_hp: "360-400", // Dvigatel quvvati (ot kuchi) — diapazon sifatida
transmission: "Mexanik", // O'tkazmalar qutisi
},
{
id: 3,
image: Isuzu2,
name: "Isuzu Samasval",
min_order_time: 3,
price: 430000,
path: "",
maxLength_m: 11, // Maksimum uzunligi (metr)
capacity_tons: 25, // Yuk ko'tarish qobiliyati (tonna)
fuelType: "Dizel", // Yoqilg'i turi
maxSpeed_kmh: 130, // Maksimum tezligi (km/soat)
intercooler: "Bor", // Interkuler (Bor/Yoq)
enginePower_hp: "360-400", // Dvigatel quvvati (ot kuchi) — diapazon sifatida
transmission: "Mexanik", // O'tkazmalar qutisi
},
];
export const trailers: innerCardTypes[] = [
{ id: 1, image: Treyler1, name: "Treyler XCMG", min_order_time: 5, price: 500000, path: "" },
{ id: 2, image: Treyler2, name: "Treyler Long", min_order_time: 5, price: 520000, path: "" },
{ id: 3, image: Treyler6, name: "Treyler Platforma", min_order_time: 5, price: 560000, path: "" },
{
id: 1,
image: Treyler1,
name: "Treyler XCMG",
min_order_time: 5,
price: 500000,
path: "",
maxLength_m: 26, // Maksimum uzunligi (metr)
capacity_tons: 24, // Yuk ko'tarish qobiliyati (tonna)
fuelType: "Dizel/Gaz", // Yoqilg'i turi
maxSpeed_kmh: 130, // Maksimum tezligi (km/soat)
intercooler: "Bor", // Interkuler (Bor/Yoq)
enginePower_hp: "440-550", // Dvigatel quvvati (ot kuchi) — diapazon sifatida
transmission: "Mexanik/Robot", // O'tkazmalar qutisi
},
{
id: 2,
image: Treyler2,
name: "Treyler Long",
min_order_time: 5,
price: 520000,
path: "",
maxLength_m: 26, // Maksimum uzunligi (metr)
capacity_tons: 24, // Yuk ko'tarish qobiliyati (tonna)
fuelType: "Dizel/Gaz", // Yoqilg'i turi
maxSpeed_kmh: 130, // Maksimum tezligi (km/soat)
intercooler: "Bor", // Interkuler (Bor/Yoq)
enginePower_hp: "440-550", // Dvigatel quvvati (ot kuchi) — diapazon sifatida
transmission: "Mexanik/Robot", // O'tkazmalar qutisi
},
{
id: 3,
image: Treyler6,
name: "Treyler Platforma",
min_order_time: 5,
price: 560000,
path: "",
maxLength_m: 26, // Maksimum uzunligi (metr)
capacity_tons: 24, // Yuk ko'tarish qobiliyati (tonna)
fuelType: "Dizel/Gaz", // Yoqilg'i turi
maxSpeed_kmh: 130, // Maksimum tezligi (km/soat)
intercooler: "Bor", // Interkuler (Bor/Yoq)
enginePower_hp: "440-550", // Dvigatel quvvati (ot kuchi) — diapazon sifatida
transmission: "Mexanik/Robot", // O'tkazmalar qutisi
},
];
export const gazels: innerCardTypes[] = [
{ id: 1, image: Gazel2, name: "Gazel mini", min_order_time: 2, price: 260000, path: "" },
{ id: 2, image: Gazel5, name: "Gazel 4x2", min_order_time: 2, price: 280000, path: "" },
{
id: 1,
image: Gazel2,
name: "Gazel mini",
min_order_time: 2,
price: 260000,
path: "",
maxLength_m: 6, // Maksimum uzunligi (metr)
capacity_tons: 1.6, // Yuk ko'tarish qobiliyati (tonna)
fuelType: "Benzin/Dizel/Gaz", // Yoqilg'i turi
maxSpeed_kmh: 130, // Maksimum tezligi (km/soat)
intercooler: "Bor", // Interkuler (Bor/Yoq)
enginePower_hp: "120-150", // Dvigatel quvvati (ot kuchi) — diapazon sifatida
transmission: "Mexanik", // O'tkazmalar qutisi
},
{
id: 2,
image: Gazel5,
name: "Gazel 4x2",
min_order_time: 2,
price: 280000,
path: "",
maxLength_m: 6, // Maksimum uzunligi (metr)
capacity_tons: 1.6, // Yuk ko'tarish qobiliyati (tonna)
fuelType: "Benzin/Dizel/Gaz", // Yoqilg'i turi
maxSpeed_kmh: 130, // Maksimum tezligi (km/soat)
intercooler: "Bor", // Interkuler (Bor/Yoq)
enginePower_hp: "120-150", // Dvigatel quvvati (ot kuchi) — diapazon sifatida
transmission: "Mexanik", // O'tkazmalar qutisi
},
];
//kranlar
export const avtominora: innerCardTypes[] = [
{ id: 1, image: Kranminora1, name: "Avtominora Kran", min_order_time: 5, price: 600000, path: "" },
{ id: 2, image: Kranmexanik1, name: "Avtokran Zoomlion", min_order_time: 5, price: 620000, path: "" },
{
id: 1,
image: Kranminora1,
name: "Avtominora Kran",
min_order_time: 5,
price: 600000,
path: "",
weight_kg: 12000,
maxHeight_m: 60,
capacity_kg: 500,
fuelType: "Dizel",
maxSpeed_kmh: 70,
enginePower_hp: "200-400",
transmission: "Mexanik/Avtomatik",
},
{
id: 2,
image: Kranmexanik1,
name: "Avtokran Zoomlion",
min_order_time: 5,
price: 620000,
path: "",
weight_kg: 12000,
maxHeight_m: 60,
capacity_kg: 500,
fuelType: "Dizel",
maxSpeed_kmh: 70,
enginePower_hp: "200",
transmission: "Mexanik/Avtomatik",
},
];
export const avtokran: innerCardTypes[] = [
{ id: 1, image: Avtokran1, name: "Avtokran", min_order_time: 5, price: 600000, path: "" },
{ id: 2, image: Avtokran4, name: "Avtokran", min_order_time: 5, price: 620000, path: "" },
{
id: 1,
image: Avtokran1,
name: "Avtokran",
min_order_time: 5,
price: 600000,
path: "",
maxHeight_m: 60,
capacity_tons: 30,
fuelType: "Dizel",
maxSpeed_kmh: 70,
enginePower_hp: "200-300",
transmission: "Mexanik/Avtomatik",
},
{
id: 2,
image: Avtokran4,
name: "Avtokran",
min_order_time: 5,
price: 620000,
path: "",
maxHeight_m: 60,
capacity_tons: 120,
fuelType: "Dizel",
maxSpeed_kmh: 70,
enginePower_hp: "200-400",
transmission: "Mexanik/Avtomatik",
},
];
export const minora: innerCardTypes[] = [
{ id: 1, image: Minora1, name: "Avtominora Kran", min_order_time: 5, price: 600000, path: "" },
{ id: 2, image: Minora4, name: "Avtominora Kran", min_order_time: 5, price: 620000, path: "" },
{
id: 1,
image: Minora1,
name: "Avtominora Kran",
min_order_time: 5,
price: 600000,
path: "",
maxHeight_m: 300,
capacity_tons: 20,
bom: 20,
enginePower_hp: "300",
transmission: "Mexanik/Avtomatik",
},
{
id: 2,
image: Minora4,
name: "Avtominora Kran",
min_order_time: 5,
price: 620000,
path: "",
maxHeight_m: 300,
capacity_tons: 20,
bom: 80,
enginePower_hp: "300",
transmission: "Mexanik/Avtomatik",
},
];
export const dizel: innerCardTypes[] = [
{ id: 1, image: Dizel2, name: "Dizel Ko'targichlar", min_order_time: 5, price: 600000, path: "" },
{ id: 2, image: Dizel3, name: "Dizel Ko'targichlar", min_order_time: 5, price: 620000, path: "" },
{
id: 1,
image: Dizel2,
name: "Dizel Ko'targichlar",
min_order_time: 5,
price: 600000,
path: "",
capacity_kg: 500,
enginePower_hp: "200",
transmission: "Mexanik/Avtomatik",
},
{
id: 2,
image: Dizel3,
name: "Dizel Ko'targichlar",
min_order_time: 5,
price: 620000,
path: "",
capacity_kg: 500,
enginePower_hp: "200",
transmission: "Mexanik/Avtomatik",
},
];
export const paletli_kranlar: innerCardTypes[] = [
{ id: 1, image: Palet1, name: "Paletli kran", min_order_time: 5, price: 600000, path: "" },
{ id: 2, image: Palet3, name: "Paletli kran", min_order_time: 5, price: 620000, path: "" },
{
id: 1,
image: Palet1,
name: "Paletli kran",
min_order_time: 5,
price: 600000,
path: "",
maxHeight_m: 60,
capacity_tons: 45,
fuelType: "Dizel",
maxSpeed_kmh: 20,
enginePower_hp: "300",
transmission: "Mexanik/Avtomatik",
},
{
id: 2,
image: Palet3,
name: "Paletli kran",
min_order_time: 5,
price: 620000,
path: "",
maxHeight_m: 60,
capacity_tons: 50,
fuelType: "Dizel",
maxSpeed_kmh: 20,
enginePower_hp: "300",
transmission: "Mexanik/Avtomatik",
},
];
//forkliftlar
export const old_yuklagichlar: innerCardTypes[] = [
{ id: 1, image: Old1, name: "Old Yuklagich GEHL", min_order_time: 3, price: 350000, path: "" },
{ id: 2, image: Old2, name: "Old Yuklagich Hyundai", min_order_time: 3, price: 365000, path: "" },
{ id: 3, image: Old3, name: "Old Yuklagich Lonking", min_order_time: 3, price: 370000, path: "" },
{
id: 1,
image: Old1,
name: "Old Yuklagich GEHL",
min_order_time: 3,
price: 350000,
path: "",
maxLength_m: 7, // Maksimum uzunligi (metr)
capacity_tons: 10, // Yuk ko'tarish qobiliyati (tonna)
fuelType: "Dizel/Gaz", // Yoqilg'i turi
maxSpeed_kmh: 130, // Maksimum tezligi (km/soat)
intercooler: "Bor", // Interkuler (Bor/Yoq)
enginePower_hp: "300-400", // Dvigatel quvvati (ot kuchi) — diapazon sifatida
transmission: "Mexanik/Robot", // O'tkazmalar qutisi
},
{
id: 2,
image: Old2,
name: "Old Yuklagich Hyundai",
min_order_time: 3,
price: 365000,
path: "",
maxLength_m: 6, // Maksimum uzunligi (metr)
capacity_tons: 5, // Yuk ko'tarish qobiliyati (tonna)
fuelType: "Dizel/Gaz", // Yoqilg'i turi
maxSpeed_kmh: 130, // Maksimum tezligi (km/soat)
intercooler: "Bor", // Interkuler (Bor/Yoq)
enginePower_hp: "360-400", // Dvigatel quvvati (ot kuchi) — diapazon sifatida
transmission: "Mexanik/Robot", // O'tkazmalar qutisi
},
{
id: 3,
image: Old3,
name: "Old Yuklagich Lonking",
min_order_time: 3,
price: 370000,
path: "",
maxLength_m: 7, // Maksimum uzunligi (metr)
capacity_tons: 10, // Yuk ko'tarish qobiliyati (tonna)
fuelType: "Dizel/Gaz", // Yoqilg'i turi
maxSpeed_kmh: 130, // Maksimum tezligi (km/soat)
intercooler: "Bor", // Interkuler (Bor/Yoq)
enginePower_hp: "360-400", // Dvigatel quvvati (ot kuchi) — diapazon sifatida
transmission: "Mexanik/Robot", // O'tkazmalar qutisi
},
];
export const teleskop_yuklagichlar: innerCardTypes[] = [
{ id: 1, image: Tel1, name: "Teleskopik Yuklagich JCB", min_order_time: 3, price: 400000, path: "" },
{ id: 2, image: Tel2, name: "Teleskopik Yuklagich XCMG", min_order_time: 3, price: 420000, path: "" },
{
id: 1,
image: Tel1,
name: "Teleskopik Yuklagich JCB",
min_order_time: 3,
price: 400000,
path: "",
maxLength_m: 7, // Maksimum uzunligi (metr)
capacity_tons: 1.5, // Yuk ko'tarish qobiliyati (tonna)
fuelType: "Dizel", // Yoqilg'i turi
maxSpeed_kmh: 50, // Maksimum tezligi (km/soat)
intercooler: "Bor", // Interkuler (Bor/Yoq)
enginePower_hp: "60-150", // Dvigatel quvvati (ot kuchi) — diapazon sifatida
transmission: "Mexanik", // O'tkazmalar qutisi
},
{
id: 2,
image: Tel2,
name: "Teleskopik Yuklagich XCMG",
min_order_time: 3,
price: 420000,
path: "",
maxLength_m: 7, // Maksimum uzunligi (metr)
capacity_tons: 1.5, // Yuk ko'tarish qobiliyati (tonna)
fuelType: "Dizel", // Yoqilg'i turi
maxSpeed_kmh: 50, // Maksimum tezligi (km/soat)
intercooler: "Bor", // Interkuler (Bor/Yoq)
enginePower_hp: "60-150", // Dvigatel quvvati (ot kuchi) — diapazon sifatida
transmission: "Mexanik", // O'tkazmalar qutisi
},
];
export const forkliftlar: innerCardTypes[] = [
{ id: 1, image: Fork1, name: "Forklift Mitsubishi", min_order_time: 2, price: 300000, path: "" },
{ id: 2, image: Fork2, name: "Forklift Lonking", min_order_time: 2, price: 310000, path: "" },
{ id: 3, image: Fork3, name: "Forklift JCB", min_order_time: 2, price: 320000, path: "" },
{
id: 1,
image: Fork1,
name: "Forklift Mitsubishi",
min_order_time: 2,
price: 300000,
path: "",
maxLength_m: 5, // Maksimum uzunligi (metr)
capacity_tons: 2.5, // Yuk ko'tarish qobiliyati (tonna)
fuelType: "Dizel", // Yoqilg'i turi
maxSpeed_kmh: 50, // Maksimum tezligi (km/soat)
intercooler: "Bor", // Interkuler (Bor/Yoq)
enginePower_hp: "60-200", // Dvigatel quvvati (ot kuchi) — diapazon sifatida
transmission: "Mexanik", // O'tkazmalar qutisi
},
{
id: 2,
image: Fork2,
name: "Forklift Lonking",
min_order_time: 2,
price: 310000,
path: "",
maxLength_m: 5, // Maksimum uzunligi (metr)
capacity_tons: 1.5, // Yuk ko'tarish qobiliyati (tonna)
fuelType: "Dizel", // Yoqilg'i turi
maxSpeed_kmh: 50, // Maksimum tezligi (km/soat)
intercooler: "Bor", // Interkuler (Bor/Yoq)
enginePower_hp: "60-200", // Dvigatel quvvati (ot kuchi) — diapazon sifatida
transmission: "Mexanik", // O'tkazmalar qutisi
},
{
id: 3,
image: Fork3,
name: "Forklift JCB",
min_order_time: 2,
price: 320000,
path: "",
maxLength_m: 5, // Maksimum uzunligi (metr)
capacity_tons: 2.5, // Yuk ko'tarish qobiliyati (tonna)
fuelType: "Dizel", // Yoqilg'i turi
maxSpeed_kmh: 50, // Maksimum tezligi (km/soat)
intercooler: "Bor", // Interkuler (Bor/Yoq)
enginePower_hp: "60-200", // Dvigatel quvvati (ot kuchi) — diapazon sifatida
transmission: "Mexanik", // O'tkazmalar qutisi
},
];
//ekskavatorlar
export const paletli_eks: innerCardTypes[] = [
{ id: 1, image: Paletli1, name: "Paletli Ekskavator Hyundai", min_order_time: 4, price: 450000, path: "" },
{ id: 2, image: Paletli2, name: "Paletli Ekskavator XCMG", min_order_time: 4, price: 470000, path: "" },
{
id: 1,
image: Paletli1,
name: "Paletli Ekskavator Hyundai",
min_order_time: 4,
price: 450000,
path: "",
weight_kg: 24,
qazish: 6.5,
fuelType: "Dizel", // Yoqilg'i turi
enginePower_hp: "140-180", // Dvigatel quvvati (ot kuchi) — diapazon sifatida
transmission: "Mexanik", // O'tkazmalar qutisi
},
{
id: 2,
image: Paletli2,
name: "Paletli Ekskavator XCMG",
min_order_time: 4,
price: 470000,
path: "",
weight_kg: 24,
qazish: 6.5,
fuelType: "Dizel", // Yoqilg'i turi
enginePower_hp: "140-180", // Dvigatel quvvati (ot kuchi) — diapazon sifatida
transmission: "Mexanik", // O'tkazmalar qutisi
},
];
export const gildirakli_eks: innerCardTypes[] = [
{ id: 1, image: Balon1, name: "Gildirakli Ekskavator GEHL", min_order_time: 4, price: 440000, path: "" },
{ id: 2, image: Balon2, name: "Gildirakli Ekskavator Lonking", min_order_time: 4, price: 460000, path: "" },
{
id: 1,
image: Balon1,
name: "Gildirakli Ekskavator GEHL",
min_order_time: 4,
price: 440000,
path: "",
weight_kg: 22,
qazish: 6.5,
fuelType: "Dizel", // Yoqilg'i turi
enginePower_hp: "170-180", // Dvigatel quvvati (ot kuchi) — diapazon sifatida
transmission: "Mexanik/Avtomatik", // O'tkazmalar qutisi
},
{
id: 2,
image: Balon2,
name: "Gildirakli Ekskavator Lonking",
min_order_time: 4,
price: 460000,
path: "",
weight_kg: 22,
qazish: 6.5,
fuelType: "Dizel", // Yoqilg'i turi
enginePower_hp: "170-180", // Dvigatel quvvati (ot kuchi) — diapazon sifatida
transmission: "Mexanik/Avtomatik", // O'tkazmalar qutisi
},
];
export const mini_eks: innerCardTypes[] = [
{ id: 1, image: Mini1, name: "Mini Ekskavator JCB", min_order_time: 3, price: 400000, path: "" },
{ id: 2, image: Mini2, name: "Mini Ekskavator XCMG", min_order_time: 3, price: 410000, path: "" },
{
id: 1,
image: Mini1,
name: "Mini Ekskavator JCB",
min_order_time: 3,
price: 400000,
path: "",
weight_kg: 4,
qazish: 3,
fuelType: "Dizel/Benzin", // Yoqilg'i turi
enginePower_hp: "25-40", // Dvigatel quvvati (ot kuchi) — diapazon sifatida
transmission: "Mexanik/Avtomatik", // O'tkazmalar qutisi
},
{
id: 2,
image: Mini2,
name: "Mini Ekskavator XCMG",
min_order_time: 3,
price: 410000,
path: "",
weight_kg: 4,
qazish: 3,
fuelType: "Dizel/Benzin", // Yoqilg'i turi
enginePower_hp: "25-40", // Dvigatel quvvati (ot kuchi) — diapazon sifatida
transmission: "Mexanik/Avtomatik", // O'tkazmalar qutisi
},
];
export const eks_yuklagichlar: innerCardTypes[] = [
{ id: 1, image: Digger1, name: "Ekskavator Yuklagich Hyundai", min_order_time: 3, price: 420000, path: "" },
{ id: 2, image: Digger2, name: "Ekskavator Yuklagich Gehl", min_order_time: 3, price: 430000, path: "" },
{
id: 1,
image: Digger1,
name: "Ekskavator Yuklagich Hyundai",
min_order_time: 3,
price: 420000,
path: "",
weight_kg: 10,
qazish: 5,
fuelType: "160 litr", // Yoqilg'i turi
enginePower_hp: "90-110", // Dvigatel quvvati (ot kuchi) — diapazon sifatida
transmission: "Mexanik/Avtomatik", // O'tkazmalar qutisi
},
{
id: 2,
image: Digger2,
name: "Ekskavator Yuklagich Gehl",
min_order_time: 3,
price: 430000,
path: "",
weight_kg: 10,
qazish: 5,
fuelType: "160 litr", // Yoqilg'i turi
enginePower_hp: "90-110", // Dvigatel quvvati (ot kuchi) — diapazon sifatida
transmission: "Mexanik", // O'tkazmalar qutisi
},
];
// yo'l tamiri
export const avtogreyderlar: innerCardTypes[] = [
{ id: 1, image: Grayder1, name: "Avtogreyder XCMG", min_order_time: 4, price: 500000, path: "" },
{
id: 1,
image: Grayder1,
name: "Avtogreyder XCMG",
min_order_time: 4,
price: 500000,
path: "",
maxLength_m: 20, // Maksimum uzunligi (metr)
weight_kg: 20,
fuelType: "Dizel", // Yoqilg'i turi
pichoq: 3 - 4.5,
maxSpeed_kmh: 40, // Maksimum tezligi (km/soat)
enginePower_hp: "150-250", // Dvigatel quvvati (ot kuchi) — diapazon sifatida
transmission: "Mexanika", // O'tkazmalar qutisi
},
];
export const buldozerlar: innerCardTypes[] = [
{ id: 1, image: Buldozer1, name: "Buldozer Lonking", min_order_time: 4, price: 520000, path: "" },
{ id: 2, image: Buldozer2, name: "Buldozer XCMG", min_order_time: 4, price: 540000, path: "" },
{
id: 1,
image: Buldozer1,
name: "Buldozer Lonking",
min_order_time: 4,
price: 520000,
path: "",
maxLength_m: 20, // Maksimum uzunligi (metr)
weight_kg:70,
tankVolume_m3:300-600,
capacity_tons: 1.6, // Yuk ko'tarish qobiliyati (tonna)
fuelType: "Dizel", // Yoqilg'i turi
maxSpeed_kmh: 12, // Maksimum tezligi (km/soat)
pichoq:3-5,
enginePower_hp: "200-700", // Dvigatel quvvati (ot kuchi) — diapazon sifatida
transmission: "Mexanik", // O'tkazmalar qutisi
},
{
id: 2,
image: Buldozer2,
name: "Buldozer XCMG",
min_order_time: 4,
price: 540000,
path: "",
maxLength_m: 20, // Maksimum uzunligi (metr)
weight_kg:70,
tankVolume_m3:300-600,
capacity_tons: 1.6, // Yuk ko'tarish qobiliyati (tonna)
fuelType: "Dizel", // Yoqilg'i turi
maxSpeed_kmh: 12, // Maksimum tezligi (km/soat)
pichoq:3-5,
enginePower_hp: "200-700", // Dvigatel quvvati (ot kuchi) — diapazon sifatida
transmission: "Mexanik", // O'tkazmalar qutisi
},
];
export const katkalar: innerCardTypes[] = [
{ id: 1, image: Katka1, name: "Katka JCB", min_order_time: 4, price: 490000, path: "" },
{ id: 2, image: Katka2, name: "Katka Hyundai", min_order_time: 4, price: 510000, path: "" },
{
id: 1,
image: Katka1,
name: "Katka JCB",
min_order_time: 4,
price: 490000,
path: "",
weight_kg:14,
tankVolume_m3:250-300,
intercooler: "Bor", // Interkuler (Bor/Yoq)
fuelType: "Dizel", // Yoqilg'i turi
maxSpeed_kmh: 12, // Maksimum tezligi (km/soat)
zichlash:2-2.5,
enginePower_hp: "75-150", // Dvigatel quvvati (ot kuchi) — diapazon sifatida
transmission: "Mexanik", // O'tkazmalar qutisi
},
{
id: 2,
image: Katka2,
name: "Katka Hyundai",
min_order_time: 4,
price: 510000,
path: "",
weight_kg:14,
tankVolume_m3:250-300,
intercooler: "Bor", // Interkuler (Bor/Yoq)
fuelType: "Dizel", // Yoqilg'i turi
maxSpeed_kmh: 12, // Maksimum tezligi (km/soat)
zichlash:2-2.5,
enginePower_hp: "75-150", // Dvigatel quvvati (ot kuchi) — diapazon sifatida
transmission: "Mexanik", // O'tkazmalar qutisi
},
];
export const kompressorlar: innerCardTypes[] = [
{ id: 1, image: Kampressor1, name: "Kompressor Mitsubishi", min_order_time: 3, price: 350000, path: "" },
{ id: 2, image: Kampressor2, name: "Kompressor XCMG", min_order_time: 3, price: 370000, path: "" },
{ id: 3, image: Kampressor3, name: "Kompressor Hyundai", min_order_time: 3, price: 390000, path: "" },
{
id: 1,
image: Kampressor1,
name: "Kompressor Mitsubishi",
min_order_time: 3,
price: 350000,
path: "",
fuelType:'Elektr',
enginePower_hp:"3",
siqish:150,
havo:10,
kompressor_sig:60,
},
{
id: 2,
image: Kampressor2,
name: "Kompressor XCMG",
min_order_time: 3,
price: 370000,
path: "",
fuelType:'Elektr',
enginePower_hp:"3",
siqish:150,
havo:10,
kompressor_sig:60,
},
{
id: 3,
image: Kampressor3,
name: "Kompressor Hyundai",
min_order_time: 3,
price: 390000,
path: "",
fuelType:'Elektr',
enginePower_hp:"3",
siqish:150,
havo:10,
kompressor_sig:60,
},
];
// slider data
export const sliderData: ProductTypes[] = [
{
id: 1,
truck_name: 'excavators',
desc: 'news-title1',
path: 'crawler-excavators',
truck_name: "excavators",
desc: "news-title1",
path: "crawler-excavators",
image: ekskavatorSlider,
},
{
id: 2,
truck_name: 'front-loaders',
desc: 'news-title2',
path: 'front-loaders',
truck_name: "front-loaders",
desc: "news-title2",
path: "front-loaders",
image: oldYuklagich,
},
{
id: 3,
truck_name: 'compressors',
desc: 'news-title3',
path: 'compressors',
truck_name: "compressors",
desc: "news-title3",
path: "compressors",
image: kompressorSlider,
},
{
id: 4,
truck_name: 'compressors',
desc: 'news-title3',
path: 'compressors',
truck_name: "compressors",
desc: "news-title3",
path: "compressors",
image: AvtokranSlider,
},
]
];

View File

@@ -177,5 +177,21 @@
"min-time": "Минимальный заказ: ",
"day-price": "Цена аренды за день: ",
"note1": "Мы предоставляем автолифт только с нашим водителем.",
"note2": "Доставка автолифта включена в стоимость аренды."
"note2": "Доставка автолифта включена в стоимость аренды.",
"weight_kg": "Вес",
"maxLength_m": "Максимальная длина",
"maxHeight_m": "Максимальная высота",
"capacity_tons": "Грузоподъёмность (тонн)",
"capacity_kg": "Грузоподъёмность (кг)",
"fuelType": "Тип топлива",
"tankVolume_m3": "Объём бака",
"maxSpeed_kmh": "Максимальная скорость",
"enginePower_hp": "Мощность двигателя",
"bom": "Длина стрелы",
"qazish": "Глубина копания",
"pichoq": "Длина лезвия",
"zichlash": "Ширина уплотнения асфальта",
"siqish": "Давление сжатия",
"havo": "Ёмкость воздуха",
"kompressor_sig": "Объём компрессора"
}

View File

@@ -179,5 +179,21 @@
"min-time": "Minimal buyrtma: ",
"day-price": "Bir kunlik ijara narxi: ",
"note1": "Biz avtoliftni faqat haydovchimiz bilan taqdim etamiz.",
"note2":"Avtoliftni yetkazib berish ijara narxiga kiritilgan."
"note2": "Avtoliftni yetkazib berish ijara narxiga kiritilgan.",
"weight_kg": "Ogirligi",
"maxLength_m": "Maksimum uzunligi",
"maxHeight_m": "Maksimum balandligi",
"capacity_tons": "Yuk kotarish qobiliyati (tonna)",
"capacity_kg": "Yuk kotarish qobiliyati (kg)",
"fuelType": "Yoqilgi turi",
"tankVolume_m3": "Tank hajmi",
"maxSpeed_kmh": "Maksimum tezligi",
"enginePower_hp": "Dvigatel quvvati",
"bom": "Bom uzunligi",
"qazish": "Qazish chuqurligi",
"pichoq": "Pichoq uzunligi",
"zichlash": "Asfalt zichlash kengligi",
"siqish": "Siqish bosimi",
"havo": "Havo sigimi",
"kompressor_sig": "Kompressor sigimi"
}

View File

@@ -49,8 +49,30 @@ export interface innerCardTypes{
min_order_time: number;
price?: number;
path: string;
// 🧩 Qoshimcha umumiy texnik xususiyatlar
weight_kg?: number; // Ogirligi (kg)
maxLength_m?: number; // Maksimum uzunligi (m)
maxHeight_m?: number; // Maksimum balandligi (m)
capacity_tons?: number; // Yuk kotarish qobiliyati (tonna)
capacity_kg?: number; // Yuk kotarish qobiliyati (kg)
fuelType?: string; // Yoqilgi turi
tankVolume_m3?: number; // Tank hajmi (m³)
maxSpeed_kmh?: number; // Maksimum tezligi (km/soat)
intercooler?: string; // Interkuler bor/yoq
enginePower_hp?: string; // Dvigatel quvvati (ot kuchi)
transmission?: string; // Otkazmalar qutisi turi
bom?:number; // Minora kranlar bom uzunligi
qazish?:number; // ekskavator qazish chuqurligi
pichoq?:number; // avtogreyder pichoq uzunligi
zichlash?:number; // katka asfalt zichlovchi
siqish?:number; // kampressor siqish bosimi
havo?:number; // kampressor havo sig'imi
kompressor_sig?:number; // kampressor sig'imi
}
export const defaultDetail : innerCardTypes = {
id:1,
image:Kaimei1,