Добавлены модели WildberriesSupply и WildberriesSupplyCard в схему Prisma, а также соответствующие мутации и запросы в GraphQL для управления поставками Wildberries. Обновлены компоненты создания поставки для поддержки выбора карточек товаров и улучшен интерфейс. Реализована логика обработки карточек товаров и их отображения.

This commit is contained in:
Bivekich
2025-07-21 12:45:03 +03:00
parent 39c1499f72
commit d74b4c1266
9 changed files with 1115 additions and 7 deletions

View File

@ -15,6 +15,7 @@ import {
Mail,
Star
} from 'lucide-react'
import { WBProductCards } from './wb-product-cards'
// import { WholesalerSelection } from './wholesaler-selection'
interface Wholesaler {
@ -31,6 +32,34 @@ interface Wholesaler {
specialization: string[]
}
interface WildberriesCard {
nmID: number
vendorCode: string
title: string
description: string
brand: string
mediaFiles: string[]
sizes: Array<{
chrtID: number
techSize: string
wbSize: string
price: number
discountedPrice: number
quantity: number
}>
}
interface SelectedCard {
card: WildberriesCard
selectedQuantity: number
selectedMarket: string
selectedPlace: string
sellerName: string
sellerPhone: string
deliveryDate: string
selectedServices: string[]
}
interface CreateSupplyFormProps {
onClose: () => void
onSupplyCreated: () => void
@ -79,6 +108,7 @@ const mockWholesalers: Wholesaler[] = [
export function CreateSupplyForm({ onClose, onSupplyCreated }: CreateSupplyFormProps) {
const [selectedVariant, setSelectedVariant] = useState<'cards' | 'wholesaler' | null>(null)
const [selectedWholesaler, setSelectedWholesaler] = useState<Wholesaler | null>(null)
const [selectedCards, setSelectedCards] = useState<SelectedCard[]>([])
const renderStars = (rating: number) => {
return Array.from({ length: 5 }, (_, i) => (
@ -89,6 +119,22 @@ export function CreateSupplyForm({ onClose, onSupplyCreated }: CreateSupplyFormP
))
}
const handleCardsComplete = (cards: SelectedCard[]) => {
setSelectedCards(cards)
console.log('Карточки товаров выбраны:', cards)
// TODO: Здесь будет создание поставки с данными карточек
onSupplyCreated()
}
if (selectedVariant === 'cards') {
return (
<WBProductCards
onBack={() => setSelectedVariant(null)}
onComplete={handleCardsComplete}
/>
)
}
if (selectedVariant === 'wholesaler') {
if (selectedWholesaler) {
return (
@ -267,8 +313,8 @@ export function CreateSupplyForm({ onClose, onSupplyCreated }: CreateSupplyFormP
Создание поставки через выбор товаров по карточкам
</p>
</div>
<Badge className="bg-yellow-500/20 text-yellow-300 border-yellow-500/30">
В разработке
<Badge className="bg-green-500/20 text-green-300 border-green-500/30">
Доступно
</Badge>
</div>
</Card>