fix: 全状态对齐 - 已出库(OUTBOUND)覆盖所有看板
- 看板产品流转 finished_cond 加'已出库',已出库归入已完结 - WIP 矩阵区分'已出库'维度 - MyTasksPage tab 加'已出库' - 移动端 detail/WorkspaceArea STATUS_MAP 补 OUTBOUND
This commit is contained in:
@ -162,11 +162,11 @@ async def get_dashboard_stats(
|
||||
from app.models.message import ProductMessage
|
||||
# ── 产品(实时快照,不过滤) ──
|
||||
# 状态口径(用户确认):废弃 Product.status 恒值判断,
|
||||
# COMPLETED=待仓库收货,ARCHIVED=已入库('在库' 旧命名等价)。
|
||||
# 产品流转卡片第三段"已入库"= 全部完结(待收货 + 已实收 + 旧在库),保证三段和 = 总数。
|
||||
# COMPLETED=待仓库收货,ARCHIVED=已入库('在库' 旧命名等价),OUTBOUND=已出库。
|
||||
# 产品流转卡片第三段"已完结"= 待收货 + 已实收 + 旧在库 + 已出库,保证三段和 = 总数。
|
||||
p_total = await db.scalar(select(func.count(Product.id)))
|
||||
|
||||
finished_cond = Product.overall_status.in_(["待仓库收货", "已入库", "在库"])
|
||||
finished_cond = Product.overall_status.in_(["待仓库收货", "已入库", "在库", "已出库"])
|
||||
p_done = await db.scalar(select(func.count(Product.id)).where(finished_cond))
|
||||
|
||||
# 在制 WIP = 未完结 且 存在活跃任务(PENDING/WIP) 的产品数
|
||||
@ -685,13 +685,16 @@ async def get_wip_matrix(
|
||||
continue
|
||||
|
||||
if dimension == "task_name":
|
||||
# 🔧 在仓库的设备按"已完成/已入库"区分:
|
||||
# 🔧 在仓库的设备按"已入库/已出库/待仓库收货"区分:
|
||||
# 已入库 = MOM 已扫码实收 (overall_status=='已入库'/'在库' 或 status=='ARCHIVED')
|
||||
# 已出库 = MOM 已发货出库 (overall_status=='已出库' 或 status=='OUTBOUND')
|
||||
# 待仓库收货 = 完工已转交仓库、MOM 尚未扫码实收
|
||||
# 否则按最新主任务工序名(活跃/完成态都归该工序)
|
||||
if loc == "virtual_warehouse":
|
||||
if overall_status in ("已入库", "在库") or str(product_status).upper() == "ARCHIVED":
|
||||
key = "已入库"
|
||||
elif overall_status == "已出库" or str(product_status).upper() == "OUTBOUND":
|
||||
key = "已出库"
|
||||
else:
|
||||
key = "待仓库收货"
|
||||
else:
|
||||
|
||||
@ -16,6 +16,7 @@ const TABS = [
|
||||
{ key: "WIP", label: "进行中" },
|
||||
{ key: "COMPLETED", label: "已完成" },
|
||||
{ key: "ARCHIVED", label: "已入库" },
|
||||
{ key: "OUTBOUND", label: "已出库" },
|
||||
] as const;
|
||||
|
||||
type TabKey = (typeof TABS)[number]["key"];
|
||||
|
||||
@ -106,7 +106,7 @@
|
||||
|
||||
<script>
|
||||
import { formatUserName } from "../../../utils/format";
|
||||
const STATUS_MAP = { PENDING: "待接收", WIP: "进行中", COMPLETED: "已完成", REJECTED: "已驳回", ARCHIVED: "已入库", CANCELED: "已撤回" };
|
||||
const STATUS_MAP = { PENDING: "待接收", WIP: "进行中", COMPLETED: "已完成", REJECTED: "已驳回", ARCHIVED: "已入库", OUTBOUND: "已出库", CANCELED: "已撤回" };
|
||||
|
||||
export default {
|
||||
name: "WorkspaceArea",
|
||||
|
||||
@ -223,7 +223,7 @@ import TaskSwipeCards from "./components/TaskSwipeCards.vue";
|
||||
|
||||
const OVERALL_OPTIONS = ["备货", "生产", "测试", "维修", "在库", "已入库", "已出库"];
|
||||
const TASK_NAME_OPTIONS = ["备货", "生产", "测试", "维修", "在库"];
|
||||
const STATUS_MAP = { PENDING: "待接收", WIP: "进行中", COMPLETED: "已完成", REJECTED: "已驳回", ARCHIVED: "已入库", CANCELED: "已撤回" };
|
||||
const STATUS_MAP = { PENDING: "待接收", WIP: "进行中", COMPLETED: "已完成", REJECTED: "已驳回", ARCHIVED: "已入库", OUTBOUND: "已出库", CANCELED: "已撤回" };
|
||||
|
||||
export default {
|
||||
components: { WorkspaceArea, TreeCanvas, TaskSwipeCards },
|
||||
|
||||
Reference in New Issue
Block a user