diff --git a/backend/app/services/dashboard_service.py b/backend/app/services/dashboard_service.py index 5b24589..67177d6 100644 --- a/backend/app/services/dashboard_service.py +++ b/backend/app/services/dashboard_service.py @@ -37,10 +37,11 @@ class WipTask(BaseModel): class ProductMessageItem(BaseModel): id: str content: str - operator_name: str # 留言人中文姓名 - product_sn: str # 16位SN - material_name: str # 物料名称 - created_at: str # ISO时间字符串 + operator_name: str # 留言人中文姓名 + product_sn: str # 16位HEX系统追溯码 + external_serial: str | None # 业务产品序列号(如 25022) + material_name: str # 物料名称 + created_at: str # ISO时间字符串 class ProductMessageList(BaseModel): @@ -194,9 +195,9 @@ async def search_product_messages( from app.models.product import Product from app.core.time_utils import BEIJING_TZ - # 基础查询 + # 基础查询 — 同时取出 16位追溯码 + 业务序列号 stmt = ( - select(ProductMessage, Product.serial_number, Product.material_name) + select(ProductMessage, Product.serial_number, Product.material_name, Product.external_serial) .join(Product, ProductMessage.product_id == Product.id) ) @@ -205,6 +206,7 @@ async def search_product_messages( kw = f"%{keyword.strip()}%" stmt = stmt.where(or_( Product.serial_number.ilike(kw), + Product.external_serial.ilike(kw), Product.material_name.ilike(kw), ProductMessage.operator_id.ilike(kw), ProductMessage.content.ilike(kw), @@ -227,7 +229,7 @@ async def search_product_messages( name_map = get_display_names(raw_ids) items: list[ProductMessageItem] = [] - for msg, sn, mat_name in rows: + for msg, sn, mat_name, ext_sn in rows: t = msg.created_at if t: if t.tzinfo is None: @@ -243,6 +245,7 @@ async def search_product_messages( content=msg.content, operator_name=name_map.get(msg.operator_id, msg.operator_id), product_sn=sn or "", + external_serial=ext_sn or None, material_name=mat_name or "", created_at=time_str, )) diff --git a/frontend/src/pages/admin/AdminDashboard.tsx b/frontend/src/pages/admin/AdminDashboard.tsx index ff1ca29..de6bf73 100644 --- a/frontend/src/pages/admin/AdminDashboard.tsx +++ b/frontend/src/pages/admin/AdminDashboard.tsx @@ -127,11 +127,15 @@ function MsgRow({ m }: { m: ProductMessageItem }) { {t}

{m.content}

-
+
{m.material_name && ( - {m.material_name} + + {m.material_name} + · 序列号: + {m.external_serial || "未录入"} + )} - (SN: {m.product_sn}) + 追溯码: {m.product_sn}
diff --git a/frontend/src/services/dashboardApi.ts b/frontend/src/services/dashboardApi.ts index e9ee433..506b12a 100644 --- a/frontend/src/services/dashboardApi.ts +++ b/frontend/src/services/dashboardApi.ts @@ -30,6 +30,7 @@ export interface ProductMessageItem { content: string; operator_name: string; product_sn: string; + external_serial: string | null; material_name: string; created_at: string; }