feat: 統一各模組分頁組件佈局並新增系統設定功能相關檔案
All checks were successful
ERP-Deploy-Demo / deploy-demo (push) Successful in 1m5s

This commit is contained in:
2026-02-25 16:16:49 +08:00
parent 878b90e2ad
commit e3df090afd
59 changed files with 889 additions and 299 deletions

View File

@@ -353,7 +353,7 @@ export default function Index({ docs, warehouses, filters }: { docs: DocsPaginat
</Table>
</div>
<div className="mt-4 flex flex-col sm:flex-row items-center justify-between gap-4">
<div className="mt-6 flex flex-col sm:flex-row items-center justify-between gap-4">
<div className="flex items-center gap-4">
<div className="flex items-center gap-2 text-sm text-gray-500">
<span></span>
@@ -371,7 +371,7 @@ export default function Index({ docs, warehouses, filters }: { docs: DocsPaginat
/>
<span></span>
</div>
<span className="text-sm text-gray-500"> {docs?.total || 0} </span>
<span className="text-sm text-gray-500"> {docs.total} </span>
</div>
<Pagination links={docs.links} />
</div>

View File

@@ -415,22 +415,25 @@ export default function InventoryAnalysisIndex({ analysisData, kpis, warehouses,
</div>
{/* Pagination Footer */}
<div className="mt-6 flex flex-col sm:flex-row items-start sm:items-center justify-between gap-4">
<div className="flex items-center gap-2 text-sm text-gray-500">
<span></span>
<SearchableSelect
value={perPage}
onValueChange={handlePerPageChange}
options={[
{ label: "10", value: "10" },
{ label: "20", value: "20" },
{ label: "50", value: "50" },
{ label: "100", value: "100" }
]}
className="w-[100px] h-8"
showSearch={false}
/>
<span></span>
<div className="mt-6 flex flex-col sm:flex-row items-center justify-between gap-4">
<div className="flex items-center gap-4">
<div className="flex items-center gap-2 text-sm text-gray-500">
<span></span>
<SearchableSelect
value={perPage}
onValueChange={handlePerPageChange}
options={[
{ label: "10", value: "10" },
{ label: "20", value: "20" },
{ label: "50", value: "50" },
{ label: "100", value: "100" }
]}
className="w-[100px] h-8"
showSearch={false}
/>
<span></span>
</div>
<span className="text-sm text-gray-500"> {analysisData.total} </span>
</div>
<div className="w-full sm:w-auto flex justify-center sm:justify-end">
<Pagination links={analysisData.links} />

View File

@@ -368,7 +368,7 @@ export default function Index({ docs, warehouses, filters }: any) {
</Table>
</div>
<div className="mt-4 flex flex-col sm:flex-row items-center justify-between gap-4">
<div className="mt-6 flex flex-col sm:flex-row items-center justify-between gap-4">
<div className="flex items-center gap-4">
<div className="flex items-center gap-2 text-sm text-gray-500">
<span></span>
@@ -386,7 +386,7 @@ export default function Index({ docs, warehouses, filters }: any) {
/>
<span></span>
</div>
<span className="text-sm text-gray-500"> {docs.total} </span>
<span className="text-sm text-gray-500"> {docs.total} </span>
</div>
<Pagination links={docs.links} />
</div>

View File

@@ -45,7 +45,7 @@ export default function GoodsReceiptIndex({ receipts, filters, warehouses }: Pro
const [warehouseId, setWarehouseId] = useState(filters.warehouse_id || 'all');
const [dateStart, setDateStart] = useState(filters.date_start || '');
const [dateEnd, setDateEnd] = useState(filters.date_end || '');
const [perPage, setPerPage] = useState(filters.per_page || '10');
const [perPage, setPerPage] = useState(filters.per_page || receipts.per_page?.toString() || '10');
const [dateRangeType, setDateRangeType] = useState('custom');
// Advanced Filter Toggle
@@ -58,7 +58,7 @@ export default function GoodsReceiptIndex({ receipts, filters, warehouses }: Pro
setWarehouseId(filters.warehouse_id || 'all');
setDateStart(filters.date_start || '');
setDateEnd(filters.date_end || '');
setPerPage(filters.per_page || '10');
setPerPage(filters.per_page || receipts.per_page?.toString() || '10');
}, [filters]);
const handleFilter = () => {
@@ -285,22 +285,25 @@ export default function GoodsReceiptIndex({ receipts, filters, warehouses }: Pro
<GoodsReceiptTable receipts={receipts.data} />
{/* Pagination */}
<div className="mt-4 flex flex-col sm:flex-row items-center justify-between gap-4">
<div className="flex items-center gap-2 text-sm text-gray-500">
<span></span>
<SearchableSelect
value={perPage}
onValueChange={handlePerPageChange}
options={[
{ label: "10", value: "10" },
{ label: "20", value: "20" },
{ label: "50", value: "50" },
{ label: "100", value: "100" }
]}
className="w-[100px] h-8"
showSearch={false}
/>
<span></span>
<div className="mt-6 flex flex-col sm:flex-row items-center justify-between gap-4">
<div className="flex items-center gap-4">
<div className="flex items-center gap-2 text-sm text-gray-500">
<span></span>
<SearchableSelect
value={perPage}
onValueChange={handlePerPageChange}
options={[
{ label: "10", value: "10" },
{ label: "20", value: "20" },
{ label: "50", value: "50" },
{ label: "100", value: "100" }
]}
className="w-[100px] h-8"
showSearch={false}
/>
<span></span>
</div>
<span className="text-sm text-gray-500"> {receipts.total} </span>
</div>
<Pagination links={receipts.links} />
</div>

View File

@@ -581,22 +581,25 @@ export default function InventoryReportIndex({ reportData, summary, warehouses,
</div>
{/* Pagination Footer */}
<div className="mt-6 flex flex-col sm:flex-row items-start sm:items-center justify-between gap-4">
<div className="flex items-center gap-2 text-sm text-gray-500">
<span></span>
<SearchableSelect
value={perPage}
onValueChange={handlePerPageChange}
options={[
{ label: "10", value: "10" },
{ label: "20", value: "20" },
{ label: "50", value: "50" },
{ label: "100", value: "100" }
]}
className="w-[100px] h-8"
showSearch={false}
/>
<span></span>
<div className="mt-6 flex flex-col sm:flex-row items-center justify-between gap-4">
<div className="flex items-center gap-4">
<div className="flex items-center gap-2 text-sm text-gray-500">
<span></span>
<SearchableSelect
value={perPage}
onValueChange={handlePerPageChange}
options={[
{ label: "10", value: "10" },
{ label: "20", value: "20" },
{ label: "50", value: "50" },
{ label: "100", value: "100" }
]}
className="w-[100px] h-8"
showSearch={false}
/>
<span></span>
</div>
<span className="text-sm text-gray-500"> {reportData.total} </span>
</div>
<div className="w-full sm:w-auto flex justify-center sm:justify-end">
<Pagination links={reportData.links} />

View File

@@ -123,7 +123,7 @@ export default function StockQueryIndex({
}: Props) {
const [search, setSearch] = useState(filters.search || "");
const [perPage, setPerPage] = useState<string>(
filters.per_page || "10"
filters.per_page || inventories.per_page?.toString() || "10"
);
// 執行篩選

View File

@@ -386,7 +386,7 @@ export default function Index({ warehouses, orders, filters }: any) {
</Table>
</div>
<div className="mt-4 flex flex-col sm:flex-row items-center justify-between gap-4">
<div className="mt-6 flex flex-col sm:flex-row items-center justify-between gap-4">
<div className="flex items-center gap-4">
<div className="flex items-center gap-2 text-sm text-gray-500">
<span></span>
@@ -404,7 +404,7 @@ export default function Index({ warehouses, orders, filters }: any) {
/>
<span></span>
</div>
<span className="text-sm text-gray-500"> {orders.total} </span>
<span className="text-sm text-gray-500"> {orders.total} </span>
</div>
<Pagination links={orders.links} />
</div>