feat(tyres): резину можно выдавать поштучно — 1, 2, 3 или 4 покрышки
Задача 4684. Выбор был 2/4/5 и не покрывал самый частый несезонный случай: порезали боковину, поймали грыжу — в замену уходит одно-два колеса, а не комплект. Теперь 1-4. Подпись кнопки перестала врать: «Выдать комплект» осталась только для четырёх, на меньшем количестве — «Выдать 1 покрышку» / «Выдать 2 покрышки». Вариант «5» (комплект с запаской) убран: задача перечисляет 1-4, а выдач за время жизни раздела не было ни одной — защищать нечего. Вернуть — одна строка. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -51,6 +51,13 @@ function daysOn(iso: string): number {
|
||||
return Number.isNaN(d) ? 0 : Math.max(0, Math.round((Date.now() - d) / 86_400_000));
|
||||
}
|
||||
|
||||
/** Подпись кнопки выдачи. «Комплект» — только когда колёс действительно четыре:
|
||||
* с тех пор как выдавать можно поштучно, на одной покрышке эта подпись врала. */
|
||||
function issueLabel(qty: number): string {
|
||||
if (qty === 4) return "Выдать комплект";
|
||||
return `Выдать ${qty} ${qty === 1 ? "покрышку" : "покрышки"}`;
|
||||
}
|
||||
|
||||
export default function TyresPage() {
|
||||
const navigate = useNavigate();
|
||||
const [sp, setSp] = useSearchParams();
|
||||
@@ -230,7 +237,7 @@ function IssueForm({ carId, onDone }: { carId: number; onDone: () => void }) {
|
||||
toast.success(`Выдано ${qty} шт · ${ctx.car_number ?? ""}`.trim());
|
||||
onDone();
|
||||
} catch (e) {
|
||||
toast.error(await apiErrorText(e, "Не удалось выдать комплект"));
|
||||
toast.error(await apiErrorText(e, "Не удалось выдать резину"));
|
||||
setSaving(false);
|
||||
}
|
||||
};
|
||||
@@ -344,8 +351,11 @@ function IssueForm({ carId, onDone }: { carId: number; onDone: () => void }) {
|
||||
{/* Количество и состояние */}
|
||||
<section className="p-3 border-b">
|
||||
<p className="text-sm mb-1">Сколько покрышек</p>
|
||||
{/* Поштучно, а не только комплектом: в переобувку часто уходит одно-два
|
||||
колеса — порезали боковину, поймали грыжу. Раньше выбор был 2/4/5 и
|
||||
под такой случай не подходил (задача 4684). */}
|
||||
<div className="flex gap-2">
|
||||
{[2, 4, 5].map((n) => (
|
||||
{[1, 2, 3, 4].map((n) => (
|
||||
<Button
|
||||
key={n}
|
||||
variant={qty === n ? "default" : "outline"}
|
||||
@@ -370,7 +380,11 @@ function IssueForm({ carId, onDone }: { carId: number; onDone: () => void }) {
|
||||
{/* Кнопка выдачи */}
|
||||
<div className="fixed bottom-0 left-0 right-0 border-t bg-background p-3">
|
||||
<Button className="w-full" disabled={saving || needClose || partId === null} onClick={submit}>
|
||||
{saving ? "Выдаём…" : needClose ? "Сначала закройте предыдущий комплект" : "Выдать комплект"}
|
||||
{saving
|
||||
? "Выдаём…"
|
||||
: needClose
|
||||
? "Сначала закройте предыдущий комплект"
|
||||
: issueLabel(qty)}
|
||||
</Button>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
Reference in New Issue
Block a user