[FEAT] 銷售訂單管理:補齊欄位、即時搜尋、篩選與來源自動判定

This commit is contained in:
2026-03-19 15:00:33 +08:00
parent 0b4aeacb55
commit 60f5f00a9e
11 changed files with 269 additions and 63 deletions

View File

@@ -28,7 +28,9 @@ interface SalesOrder {
status: string;
payment_method: string;
total_amount: string;
total_qty: string;
sold_at: string;
name: string | null;
created_at: string;
raw_payload: any;
items: SalesOrderItem[];
@@ -103,6 +105,7 @@ export default function SalesOrderShow({ order }: Props) {
</div>
<p className="text-sm text-gray-500 font-medium flex flex-wrap items-center gap-2">
: {formatDate(order.sold_at)} <span className="mx-1">|</span>
: {order.name || "—"} <span className="mx-1">|</span>
: {order.payment_method || "—"} <span className="mx-1">|</span>
: {getSourceDisplay(order.source, order.source_label)} <span className="mx-1">|</span>
: {formatDate(order.created_at as any)}
@@ -146,6 +149,13 @@ export default function SalesOrderShow({ order }: Props) {
</div>
<div className="mt-6 flex justify-end">
<div className="w-full max-w-sm bg-primary-lightest/30 px-6 py-4 rounded-xl border border-primary-light/20 flex flex-col gap-3">
<div className="flex justify-between items-center w-full">
<span className="text-sm text-gray-500 font-medium"></span>
<span className="text-lg font-bold text-gray-700">
{formatNumber(parseFloat(order.total_qty))}
</span>
</div>
<div className="border-t border-primary-light/10 my-1"></div>
<div className="flex justify-between items-end w-full">
<span className="text-sm text-gray-500 font-medium mb-1"></span>
<span className="text-2xl font-black text-primary-main">