Просмотр исходного кода

fix(s8): sync chain order filter single selection

S8-ORDER-EXECUTION-CHAIN-ORDER-FILTER-SWITCH-FIX-1

链路全景页订单号筛选切到单一新订单时同步 store.selectedOrderNo,
让既有 watch(store.selectedOrderNo) 触发 loadChainFromDomain 加载该
订单 lifecycle,避免 L1/L2/L3 显示全 -- 的视觉无效感。

- OrderChainOverviewPage.vue:
  - 新增 watch(selectedOrderNos):length===1 且与 store 不一致时调
    store.selectOrderForChainByCode(next[0]);length=0/>=2 时不动 store
  - detailOrder computed 单订单态优先 filteredChainOrders[0],
    确保顶部 summary / L1 矩阵 / 各阶段面板与 chip 一致
  - 保留 ChainStageFilterBar multiple 交互不动

Web version bump 2.4.157 -> 2.4.158
YY968XX 4 месяцев назад
Родитель
Сommit
64640b215e
2 измененных файлов с 19 добавлено и 1 удалено
  1. 1 1
      Web/package.json
  2. 18 0
      Web/src/views/aidop/s8/monitoring/OrderChainOverviewPage.vue

+ 1 - 1
Web/package.json

@@ -1,7 +1,7 @@
 {
 	"name": "admin.net",
 	"type": "module",
-	"version": "2.4.157",
+	"version": "2.4.158",
 	"packageManager": "pnpm@10.32.1",
 	"lastBuildTime": "2026.03.15",
 	"description": "Admin.NET 站在巨人肩膀上的 .NET 通用权限开发框架",

+ 18 - 0
Web/src/views/aidop/s8/monitoring/OrderChainOverviewPage.vue

@@ -76,6 +76,19 @@ const selectedOrder = computed(() => store.selectedOrder);
 const allOrders = computed(() => store.allOrders);
 
 const selectedOrderNos = ref<string[]>([]);
+
+// 筛选切到单一订单时同步 store.selectedOrderNo,让既有 watch(store.selectedOrderNo)
+// 触发 loadChainFromDomain + sessionStorage 写入 + selectedOrderNos 自洽。
+// length === 0 / >= 2 时保留 store.selectedOrderNo 作为入口订单偏好,不主动加载。
+watch(
+	() => selectedOrderNos.value,
+	(next) => {
+		if (next.length === 1 && next[0] !== store.selectedOrderNo) {
+			store.selectOrderForChainByCode(next[0]);
+		}
+	},
+);
+
 const selectedCustomerTypes = ref<string[]>([]);
 const selectedRegions = ref<string[]>([]);
 const selectedProductLines = ref<string[]>([]);
@@ -106,6 +119,11 @@ const visibleStageKeys = computed<OrderNodeKey[]>(() => {
 });
 
 const detailOrder = computed<SalesOrderExecution | null>(() => {
+	// 单订单态:直接返回筛选命中的那一单,确保顶部 summary / L1 矩阵 / 各阶段面板与 chip 一致。
+	if (filteredChainOrders.value.length === 1) {
+		return filteredChainOrders.value[0];
+	}
+	// 多订单态:若入口订单仍在筛选中则作为摘要锚点;否则 fallback 到第 1 单。
 	if (selectedOrder.value && filteredChainOrders.value.some((o) => o.soNo === selectedOrder.value!.soNo)) {
 		return selectedOrder.value;
 	}