feat: allow admin/logistician to re-edit delivery date after agreement

This commit is contained in:
root 2026-05-27 12:44:43 +00:00
parent 1f285ea718
commit 58dc110007
1 changed files with 27 additions and 12 deletions

View File

@ -425,7 +425,8 @@ export const OrderDetailPanel = ({
React.useEffect(() => { React.useEffect(() => {
setSelectedDriverId(order?.assignedDriverId || ""); setSelectedDriverId(order?.assignedDriverId || "");
}, [order?.assignedDriverId]); setIsEditingDate(false);
}, [order?.id, order?.assignedDriverId]);
React.useEffect(() => { React.useEffect(() => {
const normalizedDeliveryDate = normalizeDateForInput(order?.deliveryDate); const normalizedDeliveryDate = normalizeDateForInput(order?.deliveryDate);
@ -447,6 +448,8 @@ export const OrderDetailPanel = ({
} }
const isDeliveryAgreed = (order.deliveryStatus || order.delivery_status) === "agreed"; const isDeliveryAgreed = (order.deliveryStatus || order.delivery_status) === "agreed";
const canEditDelivery = canManageDelivery && ["admin", "mega_admin", "logistician"].includes(userRole);
const [isEditingDate, setIsEditingDate] = React.useState(false);
const agreedDeliveryLabel = [ const agreedDeliveryLabel = [
formatDeliveryDateDisplay(order.deliveryDate), formatDeliveryDateDisplay(order.deliveryDate),
order.deliveryTime || order.deliveryHalfDay, order.deliveryTime || order.deliveryHalfDay,
@ -611,7 +614,8 @@ export const OrderDetailPanel = ({
: "Если клиент согласовал доставку по телефону, сохраните дату и половину дня здесь."} : "Если клиент согласовал доставку по телефону, сохраните дату и половину дня здесь."}
</p> </p>
</div> </div>
{isDeliveryAgreed ? ( {isDeliveryAgreed && !isEditingDate ? (
<div className="space-y-3">
<div className="rounded-[24px] border border-[rgba(18,128,92,0.35)] bg-[var(--color-accent-soft)] p-4 !text-[var(--color-text)]"> <div className="rounded-[24px] border border-[rgba(18,128,92,0.35)] bg-[var(--color-accent-soft)] p-4 !text-[var(--color-text)]">
<div className="flex flex-wrap items-center justify-between gap-3"> <div className="flex flex-wrap items-center justify-between gap-3">
<div> <div>
@ -625,6 +629,17 @@ export const OrderDetailPanel = ({
<Badge tone="accent">Согласовано</Badge> <Badge tone="accent">Согласовано</Badge>
</div> </div>
</div> </div>
{canEditDelivery ? (
<Button
variant="secondary"
onClick={() => { setIsEditingDate(true); setFormMessage(""); }}
disabled={isSavingDeliveryChoice}
className="text-sm"
>
Изменить дату доставки
</Button>
) : null}
</div>
) : ( ) : (
<div className="flex flex-col gap-3 md:flex-row md:items-start md:relative md:z-10"> <div className="flex flex-col gap-3 md:flex-row md:items-start md:relative md:z-10">
<div className="space-y-3 md:relative md:z-30 md:min-w-0 md:flex-1 md:pr-4"> <div className="space-y-3 md:relative md:z-30 md:min-w-0 md:flex-1 md:pr-4">