Обновлены компоненты CreateFulfillmentConsumablesSupplyPage и FulfillmentSuppliesTab: изменено перенаправление на страницу поставок с активной вкладкой "Наши расходники". Добавлена логика для обработки URL параметров и обновления активной вкладки при загрузке. Оптимизирована обработка смены вкладок с обновлением URL.
This commit is contained in:
@ -244,8 +244,8 @@ export function CreateFulfillmentConsumablesSupplyPage() {
|
|||||||
setProductSearchQuery("");
|
setProductSearchQuery("");
|
||||||
setSearchQuery("");
|
setSearchQuery("");
|
||||||
|
|
||||||
// Перенаправляем на страницу поставок фулфилмента
|
// Перенаправляем на страницу поставок фулфилмента с активной вкладкой "Наши расходники"
|
||||||
router.push("/fulfillment-supplies");
|
router.push("/fulfillment-supplies?tab=detailed-supplies");
|
||||||
} else {
|
} else {
|
||||||
toast.error(
|
toast.error(
|
||||||
result.data?.createSupplyOrder?.message ||
|
result.data?.createSupplyOrder?.message ||
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { useState } from "react";
|
import { useState, useEffect } from "react";
|
||||||
|
import { useSearchParams, useRouter } from "next/navigation";
|
||||||
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
|
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
|
||||||
import { Package, Wrench, RotateCcw, Building2 } from "lucide-react";
|
import { Package, Wrench, RotateCcw, Building2 } from "lucide-react";
|
||||||
|
|
||||||
@ -13,13 +14,31 @@ import { FulfillmentConsumablesOrdersTab } from "./fulfillment-consumables-order
|
|||||||
import { FulfillmentDetailedSuppliesTab } from "./fulfillment-detailed-supplies-tab";
|
import { FulfillmentDetailedSuppliesTab } from "./fulfillment-detailed-supplies-tab";
|
||||||
|
|
||||||
export function FulfillmentSuppliesTab() {
|
export function FulfillmentSuppliesTab() {
|
||||||
|
const router = useRouter();
|
||||||
|
const searchParams = useSearchParams();
|
||||||
const [activeTab, setActiveTab] = useState("goods");
|
const [activeTab, setActiveTab] = useState("goods");
|
||||||
|
|
||||||
|
// Проверяем URL параметр при загрузке
|
||||||
|
useEffect(() => {
|
||||||
|
const tabParam = searchParams.get("tab");
|
||||||
|
if (tabParam && ["goods", "detailed-supplies", "consumables", "returns"].includes(tabParam)) {
|
||||||
|
setActiveTab(tabParam);
|
||||||
|
}
|
||||||
|
}, [searchParams]);
|
||||||
|
|
||||||
|
// Обновляем URL при смене вкладки
|
||||||
|
const handleTabChange = (newTab: string) => {
|
||||||
|
setActiveTab(newTab);
|
||||||
|
const currentPath = window.location.pathname;
|
||||||
|
const newUrl = `${currentPath}?tab=${newTab}`;
|
||||||
|
router.replace(newUrl);
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="h-full flex flex-col">
|
<div className="h-full flex flex-col">
|
||||||
<Tabs
|
<Tabs
|
||||||
value={activeTab}
|
value={activeTab}
|
||||||
onValueChange={setActiveTab}
|
onValueChange={handleTabChange}
|
||||||
className="h-full flex flex-col"
|
className="h-full flex flex-col"
|
||||||
>
|
>
|
||||||
<TabsList className="grid w-full grid-cols-4 bg-white/10 backdrop-blur border-white/10 flex-shrink-0 h-10 mb-3 mx-4 mt-4">
|
<TabsList className="grid w-full grid-cols-4 bg-white/10 backdrop-blur border-white/10 flex-shrink-0 h-10 mb-3 mx-4 mt-4">
|
||||||
|
@ -672,7 +672,7 @@ export function DirectSupplyCreation({
|
|||||||
{/* НОВЫЙ БЛОК СОЗДАНИЯ ПОСТАВКИ */}
|
{/* НОВЫЙ БЛОК СОЗДАНИЯ ПОСТАВКИ */}
|
||||||
<Card className="bg-white/10 backdrop-blur-xl border border-white/20 p-3">
|
<Card className="bg-white/10 backdrop-blur-xl border border-white/20 p-3">
|
||||||
{/* Первая строка */}
|
{/* Первая строка */}
|
||||||
<div className="grid grid-cols-1 md:grid-cols-4 gap-3 items-end mb-2">
|
<div className="grid grid-cols-1 md:grid-cols-4 gap-2 items-end mb-0.5">
|
||||||
{/* 1. Модуль выбора даты */}
|
{/* 1. Модуль выбора даты */}
|
||||||
<div>
|
<div>
|
||||||
<Label className="text-white/80 text-xs mb-1 block flex items-center gap-1">
|
<Label className="text-white/80 text-xs mb-1 block flex items-center gap-1">
|
||||||
@ -700,7 +700,7 @@ export function DirectSupplyCreation({
|
|||||||
value={selectedFulfillment}
|
value={selectedFulfillment}
|
||||||
onValueChange={setSelectedFulfillment}
|
onValueChange={setSelectedFulfillment}
|
||||||
>
|
>
|
||||||
<SelectTrigger className="h-8 bg-white/20 border-0 text-white focus:bg-white/30 focus:ring-1 focus:ring-white/20 text-xs">
|
<SelectTrigger className="w-full h-8 py-0 px-2 bg-white/20 border-0 text-white focus:bg-white/30 focus:ring-1 focus:ring-white/20 text-xs">
|
||||||
<SelectValue placeholder="ФУЛФИЛМЕНТ ИВАНОВО" />
|
<SelectValue placeholder="ФУЛФИЛМЕНТ ИВАНОВО" />
|
||||||
</SelectTrigger>
|
</SelectTrigger>
|
||||||
<SelectContent>
|
<SelectContent>
|
||||||
@ -745,7 +745,7 @@ export function DirectSupplyCreation({
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Вторая строка */}
|
{/* Вторая строка */}
|
||||||
<div className="grid grid-cols-1 md:grid-cols-4 gap-3 items-end">
|
<div className="grid grid-cols-1 md:grid-cols-4 gap-2 items-end">
|
||||||
{/* 5. Цена товаров */}
|
{/* 5. Цена товаров */}
|
||||||
<div>
|
<div>
|
||||||
<Label className="text-white/80 text-xs mb-1 block">
|
<Label className="text-white/80 text-xs mb-1 block">
|
||||||
|
Reference in New Issue
Block a user