feat(procurement): 修正採購單與進貨單日期標籤、狀態與操作紀錄本地化

This commit is contained in:
2026-02-04 13:20:18 +08:00
parent 4ba85ce446
commit 95fdec8a06
4 changed files with 24 additions and 8 deletions

View File

@@ -187,13 +187,13 @@ class RoleController extends Controller
'vendors' => '廠商資料管理',
'purchase_orders' => '採購單管理',
'goods_receipts' => '進貨單管理',
'production_orders' => '生產工單管理',
'recipes' => '配方管理',
'production_orders' => '生產工單管理',
'utility_fees' => '公共事業費管理',
'accounting' => '會計報表',
'users' => '使用者管理',
'roles' => '角色與權限',
'system' => '系統管理',
'utility_fees' => '公共事業費管理',
'accounting' => '會計報表',
];
$result = [];

View File

@@ -97,6 +97,7 @@ const fieldLabels: Record<string, string> = {
source_purchase_order_id: '來源採購單',
quality_status: '品質狀態',
quality_remark: '品質備註',
purchase_order_id: '來源採購單',
// 採購單欄位
po_number: '採購單號',
vendor_id: '廠商',
@@ -105,6 +106,7 @@ const fieldLabels: Record<string, string> = {
user_id: '建單人員',
total_amount: '小計',
expected_delivery_date: '預計到貨日',
order_date: '下單日期',
status: '狀態',
tax_amount: '稅額',
grand_total: '總計',
@@ -141,6 +143,8 @@ const statusMap: Record<string, string> = {
received: '已收貨',
cancelled: '已取消',
completed: '已完成',
closed: '已結案',
partial: '部分收貨',
// 生產工單狀態
planned: '已計畫',
in_progress: '生產中',
@@ -154,6 +158,13 @@ const qualityStatusMap: Record<string, string> = {
rejected: '瑕疵/拒收',
};
// 入庫類型翻譯對照表
const typeMap: Record<string, string> = {
standard: '採購進貨',
miscellaneous: '雜項入庫',
other: '其他入庫',
};
export default function ActivityDetailDialog({ open, onOpenChange, activity }: Props) {
if (!activity) return null;
@@ -166,7 +177,7 @@ export default function ActivityDetailDialog({ open, onOpenChange, activity }: P
// 自訂欄位排序順序
const sortOrder = [
'po_number', 'vendor_name', 'warehouse_name', 'expected_delivery_date', 'status', 'remark',
'po_number', 'vendor_name', 'warehouse_name', 'order_date', 'expected_delivery_date', 'status', 'remark',
'invoice_number', 'invoice_date', 'invoice_amount',
'total_amount', 'tax_amount', 'grand_total' // 確保金額的特定順序
];
@@ -234,8 +245,13 @@ export default function ActivityDetailDialog({ open, onOpenChange, activity }: P
return qualityStatusMap[value];
}
// 處理入庫類型
if (key === 'type' && typeof value === 'string' && typeMap[value]) {
return typeMap[value];
}
// 處理日期欄位 (YYYY-MM-DD)
if ((key === 'expected_delivery_date' || key === 'invoice_date' || key === 'arrival_date' || key === 'expiry_date') && typeof value === 'string') {
if ((key === 'order_date' || key === 'expected_delivery_date' || key === 'invoice_date' || key === 'arrival_date' || key === 'expiry_date') && typeof value === 'string') {
// 僅取日期部分 (YYYY-MM-DD)
return value.split('T')[0].split(' ')[0];
}

View File

@@ -90,7 +90,7 @@ export default function CreatePurchaseOrder({
}
if (!orderDate) {
toast.error("請選擇採購日期");
toast.error("請選擇下單日期");
return;
}
@@ -247,7 +247,7 @@ export default function CreatePurchaseOrder({
<div className="grid grid-cols-1 md:grid-cols-2 gap-8">
<div className="space-y-3">
<label className="text-sm font-bold text-gray-700">
<span className="text-red-500">*</span>
<span className="text-red-500">*</span>
</label>
<Input
type="date"

View File

@@ -89,7 +89,7 @@ export default function ViewPurchaseOrderPage({ order }: Props) {
<span className="font-medium text-gray-900">{formatDateTime(order.createdAt)}</span>
</div>
<div>
<span className="text-sm text-gray-500 block mb-1"></span>
<span className="text-sm text-gray-500 block mb-1"></span>
<span className="font-medium text-gray-900">{order.orderDate || "-"}</span>
</div>
<div>