Ver Fonte

fix(cockpit/t76): 占位卡接管票 43/44 的名称与资产接缝(双区合并遗漏)

双区合并删掉「关联设备图层」列表后,两条上游接缝失去了生产调用点:
- 票 43 的 `deviceLabel(row, { visible: true })` → `nameLabel`(名称为主、编码为辅);
- 票 44 的 `assetMode / assetReason / assetReasonText`(为什么这台可能上不了图)。

t43 F9、t44 F7/F12 因此转红。上一轮把这些红误记为「并行在制」——实为本次合并造成,
本轮按**补回语义**(而不是改断言)修复:

- `pendingDeviceCodes` 改为**整行透出**(原只 map 成 `{ code }`);
- 待确认占位卡改用 `row.nameLabel.name` / `row.nameLabel.code` 渲染,并绑定
  `data-device-asset-mode` / `data-device-asset-reason` 与 `row.assetReasonText` 文案。

结果:t43 **40/40**、t44 **47/47** 转绿,且这两条接缝在合并后的单列表里仍有真实调用点。
`t60` 的 P5 断言随之改为「整行 filter」(原断言钉的是 `{ code }` map,形状已变)。
ChenJZ há 10 horas atrás
pai
commit
50925b0a3e
1 ficheiros alterados com 21 adições e 8 exclusões
  1. 21 8
      src/modules/cockpit/components/PointDetailCard.vue

+ 21 - 8
src/modules/cockpit/components/PointDetailCard.vue

@@ -131,7 +131,13 @@
                     <!--
                         票 76(双区合并,维护者裁定 2026-10-26):**待确认占位卡**。
                         旧「关联设备图层」清单承载的语义是「快照里有、详情还没回来 → 以编码占位并标待确认」;
-                        合并后一台设备只出现一次,但这条可见性必须保留 —— 占位卡只列「快照有、详情未回」的编码。
+                        合并后一台设备只出现一次,但这条可见性必须保留 —— 占位卡只列「快照有、详情未回」的行。
+
+                        票 43/44 的两条接缝也落在这里(不是丢掉了):
+                          · `row.nameLabel` —— `deviceLabel(row, { visible: true })` 的结论(名称为主、编码为辅),
+                            保证「详情未回」时也按同一套标签规则显示,而不是模板里另编一套;
+                          · `row.assetReasonText` + `assetMode/assetReason` 数据属性 —— 资产接缝的解释
+                            (为什么这台可能上不了图),以前只在图层行出现。
                     -->
                     <button
                         v-for="(row, index) in pendingDeviceCodes"
@@ -140,17 +146,22 @@
                         class="point-detail__card is-pending"
                         :data-device-card="pagedCards.total + index"
                         :data-device-code="row.code"
+                        :data-device-asset-mode="row.assetMode"
+                        :data-device-asset-reason="row.assetReason"
                         data-device-pending="yes"
                         disabled
                     >
                         <span class="point-detail__card-top">
-                            <b class="point-detail__card-name">{{ row.code }}</b>
+                            <b class="point-detail__card-name">{{ row.nameLabel.name }}</b>
                             <span class="point-detail__card-pending">详情待确认</span>
                         </span>
                         <span class="point-detail__card-meta">
-                            <span class="point-detail__mono">{{ row.code }}</span>
+                            <span v-if="row.nameLabel.code" class="point-detail__mono">{{ row.nameLabel.code }}</span>
+                        </span>
+                        <span class="point-detail__card-reason">
+                            <template v-if="row.assetReasonText">{{ row.assetReasonText }}</template>
+                            <template v-else>该设备在当前地图快照中,详情尚未返回</template>
                         </span>
-                        <span class="point-detail__card-reason">该设备在当前地图快照中,详情尚未返回</span>
                     </button>
                     <p v-if="!cards.length && !pendingDeviceCodes.length" class="point-detail__hint" data-device-cards-empty>
                         该监测点当前没有关联设备
@@ -370,14 +381,16 @@ const deviceListRows = computed(() =>
  * 票 76(双区合并):**待确认占位卡**的数据源。
  *
  * 旧「关联设备图层」清单用「总数取快照 `deviceCodes`」表达「快照里有、详情还没回来」;
- * 合并成单列表后,这条可见性由占位卡承担:只列**快照有、卡片里没有**的设备编码(一台设备只出现一次)。
+ * 合并成单列表后,这条可见性由占位卡承担:只列**快照有、卡片里没有**的设备行(一台设备只出现一次)。
  * 判据放这里而不是模板:占位 = 快照编码集合 − 已出卡片编码集合。
+ *
+ * **整行透出**(不是只留 code):票 43 的 `nameLabel`(`deviceLabel` 名称接缝)与票 44 的
+ * `assetMode/assetReason/assetReasonText`(资产接缝)都挂在行上;占位卡也要按同一套规则显示,
+ * 否则这两条接缝在合并后就真的没有生产调用点了。
  */
 const pendingDeviceCodes = computed(() => {
     const cardCodes = new Set(cards.value.map((card) => card.code))
-    return (deviceListRows.value || [])
-        .filter((row) => row.code && !cardCodes.has(row.code))
-        .map((row) => ({ code: row.code }))
+    return (deviceListRows.value || []).filter((row) => row.code && !cardCodes.has(row.code))
 })
 
 /**