zhaoke 2 лет назад
Родитель
Сommit
82517d51e1
1 измененных файлов с 65 добавлено и 34 удалено
  1. 65 34
      src/views/realTime/hooks/useTrackData.ts

+ 65 - 34
src/views/realTime/hooks/useTrackData.ts

@@ -5,19 +5,25 @@ import { CommonData, MaybeRef } from '~/common'
 interface TrackNode {
   name: string
   nodeCode: string
-  flag: boolean
+  active: boolean
   labelWidth?: number
   descriptions: string[]
+  sync?: boolean
 }
-interface TrackAirport {
+interface CombinedTrackNode {
+  active: boolean
+  labelWidth?: number
+  children: [TrackNode, TrackNode]
+}
+interface TrackAirport<T = TrackNode> {
   airport: string
   isDeparture: boolean
-  trackSteps: TrackNode[]
+  trackSteps: T[]
 }
-interface TrackAirline {
+interface TrackAirline<T = TrackNode> {
   flightNO: string
   flightDate: string
-  airports: TrackAirport[]
+  airports: TrackAirport<T>[]
 }
 
 const trackNodesMap = {
@@ -32,12 +38,13 @@ const trackNodesMap = {
     // },
     {
       name: '安检',
-      nodeCode: 'SECURITY_CHECK',
+      nodeCode: '安检',
       // nodeCode: 'SECURITY', // 临时-复制加货
     },
     {
       name: '加货',
       nodeCode: 'ACC_BUP',
+      sync: true,
     },
     {
       name: '预配载',
@@ -104,7 +111,7 @@ const trackNodesMap = {
     },
     {
       name: '出库',
-      nodeCode: 'FSU_DLV',
+      nodeCode: 'FSUDLV',
     },
   ],
   internationalDeparture: [
@@ -114,7 +121,7 @@ const trackNodesMap = {
     },
     {
       name: '海关',
-      nodeCode: 'MTREL',
+      nodeCode: 'MTREL_out',
     },
     {
       name: '运抵',
@@ -130,7 +137,11 @@ const trackNodesMap = {
     },
     {
       name: '理货',
-      nodeCode: 'CARTON_LIST',
+      nodeCode: 'ACC_BUP',
+    },
+    {
+      name: '实配',
+      nodeCode: 'LS_CARGO',
     },
     // {
     //   name: '待运区',
@@ -157,10 +168,6 @@ const trackNodesMap = {
       nodeCode: 'CARGOS_OFFLOAD',
     },
     // {
-    //   name: '实配',
-    //   nodeCode: 'LS_CARGO',
-    // },
-    // {
     //   name: '退运',
     //   nodeCode: '',
     // },
@@ -180,7 +187,7 @@ const trackNodesMap = {
     },
     {
       name: '理货',
-      nodeCode: 'RCF',
+      nodeCode: 'RCF',
     },
     // {
     //   name: '快件运抵',
@@ -188,11 +195,11 @@ const trackNodesMap = {
     // },
     {
       name: '海关放行',
-      nodeCode: 'MTREL',
+      nodeCode: 'MTREL_in',
     },
     {
       name: '出库',
-      nodeCode: 'DLV',
+      nodeCode: 'DLV',
     },
   ],
   internationalDepartureTransfer: [
@@ -202,7 +209,7 @@ const trackNodesMap = {
     },
     {
       name: '海关',
-      nodeCode: 'MTREL',
+      nodeCode: 'MTREL_out',
     },
     {
       name: '运抵',
@@ -218,7 +225,7 @@ const trackNodesMap = {
     },
     {
       name: '理货',
-      nodeCode: 'CARTON_LIST',
+      nodeCode: 'ACC_BUP',
     },
     {
       name: '实配',
@@ -248,7 +255,7 @@ export function useTrackData(name: string, trackData: MaybeRef<CommonData[]>) {
     return unref(trackData)
   })
 
-  const trackAirlines = ref<TrackAirline[]>([])
+  const trackAirlines = ref<TrackAirline<TrackNode | CombinedTrackNode>[]>([])
   const getTrackAirlines = () => {
     const airlines = unref(computedTrackData).reduce(
       (
@@ -283,15 +290,14 @@ export function useTrackData(name: string, trackData: MaybeRef<CommonData[]>) {
           ? String(departureAirport ?? '')
           : String(arriveAirport ?? '')
         const trackNode = {
-          flag: Boolean(
-            execPosition ||
-              ConsignmentItemPackagingQuantityQuantity ||
-              execResult ||
-              execTime
+          active: Boolean(
+            // execPosition ||
+            //   ConsignmentItemPackagingQuantityQuantity ||
+            execResult || execTime
           ),
           descriptions: [
-            String(execPosition ?? ''),
-            String(ConsignmentItemPackagingQuantityQuantity ?? ''),
+            // String(execPosition ?? ''),
+            // String(ConsignmentItemPackagingQuantityQuantity ?? ''),
             execResult ? '通过' : '未通过',
             datetimeToTime(execTime, flightDate),
           ],
@@ -315,8 +321,8 @@ export function useTrackData(name: string, trackData: MaybeRef<CommonData[]>) {
           } else {
             return {
               ...node,
-              flag: false,
-              descriptions: [],
+              active: false,
+              descriptions: ['', ''],
             }
           }
         })
@@ -366,19 +372,41 @@ export function useTrackData(name: string, trackData: MaybeRef<CommonData[]>) {
     trackAirlines.value = airlines.map((airline) => {
       const dealedAirports = airline.airports.map((airport, index) => ({
         ...airport,
-        trackSteps: airport.trackSteps.filter(
-          (node, i, steps) =>
-            node.flag ||
+        trackSteps: airport.trackSteps.reduce((prevSteps, node, i, steps) => {
+          if (
+            node.active ||
             (index > 0
               ? ['IMP_TALLY', 'FSUDLV'].includes(node.nodeCode) &&
                 steps.some(
                   (node) =>
-                    ['IMP_TALLY', 'FSUDLV'].includes(node.nodeCode) && node.flag
+                    ['IMP_TALLY', 'FSUDLV'].includes(node.nodeCode) &&
+                    node.active
                 )
               : !['CARGOS_OFFLOAD', 'OFFLOAD_CONFIRM', 'BILL_RETURN'].includes(
                   node.nodeCode
                 ))
-        ),
+          ) {
+            if (node.sync && prevSteps.length > 0) {
+              const lastNode = prevSteps.pop() as TrackNode | CombinedTrackNode
+              if ('nodeCode' in lastNode) {
+                const active = node.active || lastNode.active
+                const labelWidth =
+                  Math.max(node.labelWidth ?? 0, lastNode.labelWidth ?? 0) ||
+                  undefined
+                prevSteps.push({
+                  active,
+                  labelWidth,
+                  children: [lastNode, node],
+                })
+              } else {
+                prevSteps.push(lastNode, node)
+              }
+            } else {
+              prevSteps.push(node)
+            }
+          }
+          return prevSteps
+        }, [] as (TrackNode | CombinedTrackNode)[]),
       }))
       const sortedAirports =
         name.includes('Departure') === airline.airports[0].isDeparture
@@ -396,7 +424,10 @@ export function useTrackData(name: string, trackData: MaybeRef<CommonData[]>) {
   })
 
   const trackBoxStyle = computed(
-    () => (airports: TrackAirport[], index: number) => {
+    () => (
+      airports: TrackAirport<TrackNode | CombinedTrackNode>[],
+      index: number
+    ) => {
       const style: CSSProperties = {}
       const totalLength = airports.reduce((pre, current) => {
         return pre + current.trackSteps.length - 1