统一菜单命名并移除剩余台账工具(05-31-unified-menu-remove-ledger-tools-wave2)
这个提交包含在:
@@ -1,7 +1,6 @@
|
||||
import { useEffect, useMemo, useRef, useState } from "react";
|
||||
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
||||
import { Link, useSearchParams } from "react-router-dom";
|
||||
import { Wrench } from "lucide-react";
|
||||
import { toast } from "sonner";
|
||||
import { isApiError } from "../api/types";
|
||||
import { mapApiErrorMessage } from "../api/errorMessages";
|
||||
@@ -281,7 +280,7 @@ export function PurchaseRequestsPage() {
|
||||
const [supplierFilter, setSupplierFilter] = useState("");
|
||||
const [legalEntityFilter, setLegalEntityFilter] = useState("");
|
||||
const [costCenterFilter, setCostCenterFilter] = useState("");
|
||||
const [showLedgerTools, setShowLedgerTools] = useState(false);
|
||||
const [showAdvancedFilters, setShowAdvancedFilters] = useState(false);
|
||||
const [page, setPage] = useState(1);
|
||||
const [selectedId, setSelectedId] = useState(searchParams.get("id") ?? "");
|
||||
const [hydratedDetailId, setHydratedDetailId] = useState("");
|
||||
@@ -457,12 +456,12 @@ export function PurchaseRequestsPage() {
|
||||
const totalPages = Math.max(1, Math.ceil((listQuery.data?.total ?? 0) / PAGE_SIZE));
|
||||
const purchaseItems = listQuery.data?.items ?? [];
|
||||
const hasAdvancedFilters = Boolean(supplierFilter || legalEntityFilter || costCenterFilter || (canViewAll && !mine));
|
||||
const canShowLedgerTools =
|
||||
const canShowAdvancedFilters =
|
||||
canViewAll ||
|
||||
Boolean((suppliersQuery.data?.items ?? []).length) ||
|
||||
Boolean((legalEntitiesQuery.data?.items ?? []).length) ||
|
||||
Boolean((costCentersQuery.data?.items ?? []).length);
|
||||
const showAdvancedTools = canShowLedgerTools && (showLedgerTools || hasAdvancedFilters);
|
||||
const showAdvancedFilterPanel = canShowAdvancedFilters && (showAdvancedFilters || hasAdvancedFilters);
|
||||
const emptyState = resolvePurchaseEmptyStateCopy(status);
|
||||
const totalAmountPreview = useMemo(
|
||||
() => items.reduce((sum, item) => sum + Number(moneyPreview(item.quantity, item.unitPrice)), 0).toFixed(2),
|
||||
@@ -803,7 +802,7 @@ export function PurchaseRequestsPage() {
|
||||
<ListWorkspace>
|
||||
{downloadReasonDialog}
|
||||
<WorkspaceHeader
|
||||
title="采购申请"
|
||||
title="采购"
|
||||
actions={
|
||||
<div className="flex flex-wrap gap-2">
|
||||
{isPurchaseDetailMode ? (
|
||||
@@ -822,15 +821,14 @@ export function PurchaseRequestsPage() {
|
||||
{createMutation.isPending ? "创建中..." : "新建采购"}
|
||||
</Button>
|
||||
) : null}
|
||||
{canShowLedgerTools ? (
|
||||
{canShowAdvancedFilters ? (
|
||||
<Button
|
||||
data-testid="purchase-ledger-tools"
|
||||
data-testid="purchase-advanced-filters"
|
||||
type="button"
|
||||
variant={showAdvancedTools ? "default" : "secondary"}
|
||||
onClick={() => setShowLedgerTools((current) => !current)}
|
||||
variant={showAdvancedFilterPanel ? "default" : "secondary"}
|
||||
onClick={() => setShowAdvancedFilters((current) => !current)}
|
||||
>
|
||||
<Wrench aria-hidden className="mr-1 size-4" />
|
||||
台账工具
|
||||
筛选
|
||||
</Button>
|
||||
) : null}
|
||||
</>
|
||||
@@ -853,8 +851,8 @@ export function PurchaseRequestsPage() {
|
||||
{mine ? "我相关" : "全范围"}
|
||||
</span>
|
||||
}
|
||||
advanced={showAdvancedTools ? (
|
||||
<div className="grid gap-3 md:grid-cols-3 xl:grid-cols-4" data-testid="purchase-ledger-tools-panel">
|
||||
advanced={showAdvancedFilterPanel ? (
|
||||
<div className="grid gap-3 md:grid-cols-3 xl:grid-cols-4" data-testid="purchase-advanced-filters-panel">
|
||||
<select
|
||||
className="select-std"
|
||||
value={supplierFilter}
|
||||
|
||||
在新工单中引用
屏蔽一个用户