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

@@ -30,6 +30,7 @@ interface Props {
data: PurchaseOrder[];
links: any[];
total: number;
per_page: number;
from: number;
to: number;
};
@@ -53,7 +54,7 @@ export default function PurchaseOrderIndex({ orders, filters, warehouses }: Prop
const [warehouseId, setWarehouseId] = useState<string>(filters.warehouse_id || "all");
const [dateStart, setDateStart] = useState(filters.date_start || "");
const [dateEnd, setDateEnd] = useState(filters.date_end || "");
const [perPage, setPerPage] = useState<string>(filters.per_page || "10");
const [perPage, setPerPage] = useState<string>(filters.per_page || orders.per_page?.toString() || "10");
const [dateRangeType, setDateRangeType] = useState('custom');
// Advanced Filter Toggle
@@ -66,7 +67,7 @@ export default function PurchaseOrderIndex({ orders, filters, warehouses }: Prop
setWarehouseId(filters.warehouse_id || "all");
setDateStart(filters.date_start || "");
setDateEnd(filters.date_end || "");
setPerPage(filters.per_page || "10");
setPerPage(filters.per_page || orders.per_page?.toString() || "10");
}, [filters]);
const handleFilter = () => {
@@ -295,22 +296,25 @@ export default function PurchaseOrderIndex({ orders, filters, warehouses }: Prop
/>
{/* 分頁元件 - 統一樣式 */}
<div className="mt-4 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"> {orders.total} </span>
</div>
<div className="w-full sm:w-auto flex justify-center sm:justify-end">
<Pagination links={orders.links} />