瀏覽代碼

添加中转航站视图

zhongxiaoyu 2 年之前
父節點
當前提交
7e7a7235d0

+ 18 - 9
public/config.js

@@ -5,7 +5,7 @@ var LOOP_INTERVAL = {
   waybill: 15 * 1000,
   goods: 15 * 1000,
   dashboard: 15 * 1000,
-};
+}
 
 // const PLATFROM_CONFIG = {
 //   baseNewUrl: "http://120.26.64.82:8083/", //登录前的http请求地址
@@ -186,13 +186,15 @@ var DATACONTENT_ID = {
   /***-----综合可视化------***/
   // 航站
   departureAirport: 1803524, // 国内离港航站
-  internationalDepartureAirport: 1803525, // 国际离港航站
+  departureAirportCount: 1803537, // 国内离港统计
   arrivalAirport: 1803522, // 国内进港航站
+  arrivalAirportCount: 1803547, // 国内进港统计
+  internationalDepartureAirport: 1803525, // 国际离港航站
+  internationalDepartureAirportCount: 1803542, // 国际离港统计
   internationalArrivalAirport: 1803523, // 国际进港航站
-  departureAirportAirportCount: 1803537, // 国内离港统计
-  internationalDepartureAirportAirportCount: 1803542, // 国际离港统计
-  arrivalAirportAirportCount: 1803547, // 国内进港统计
-  internationalArrivalAirportAirportCount: 1803552, // 国际进港统计
+  internationalArrivalAirportCount: 1803552, // 国际进港统计
+  internationalTransferDepartureAirport: 1803525, // 中转航站
+  internationalTransferDepartureAirportCount: 1803542, // 中转统计
   warningRules: 18040, // 报警预警策略
   // 航班
   departureFlightInfo: 1803511, // 国内离港航班基础信息
@@ -211,6 +213,10 @@ var DATACONTENT_ID = {
   internationalArrivalFlightWaybill: 1803527, // 国际进港航班运单
   // internationalArrivalFlightContainer: 1803618, // 国际进港航班集装器
   internationalArrivalFlightContainerWaybill: 1803619, // 国际进港航班-集装器内运单
+  internationalTransferDepartureFlightInfo: 1803528, // 中转航班基础信息
+  internationalTransferDepartureFlightWaybill: 1803529, // 中转航班运单
+  internationalTransferDepartureFlightContainer: 1803530, // 中转航班集装器
+  internationalTransferDepartureFlightContainerWaybill: 1803531, // 中转航班-集装器内运单
   airportNameZh: 1803517, // 机场中文名
   // 运单
   departureWaybillInfo: 1803520, // 国内离港运单基础信息
@@ -222,7 +228,10 @@ var DATACONTENT_ID = {
   internationalDepartureWaybillGoods: 1803643, // 国际离港运单节点跟踪
   internationalDepartureWaybillPull: 100102, // 国际离港运单拉下信息
   internationalArrivalWaybillInfo: 1803520, // 国际进港运单基础信息
-  internationalArrivalWaybillGoods: 1803641, // 国际进港运单节点跟踪
+  internationalTransferArrivalWaybillGoods: 1803641, // 国际进港运单节点跟踪
+  internationalTransferDepartureWaybillInfo: 1803642, // 中转运单基础信息
+  internationalTransferDepartureWaybillGoods: 1803643, // 中转运单节点跟踪
+  internationalTransferDepartureWaybillPull: 100102, // 中转运单拉下信息
   // 货物
   goodsInfo: 100008, // 货物基础信息
   goodsAirline: 100009, // 货物航段
@@ -301,7 +310,7 @@ var DATACONTENT_ID = {
   modePullgoods: 1803628, //拉货统计
   modePulltable: 1803631, //拉货统计表
   modeDomestictable: 1803644, //国内进港保障时间统计
-};
+}
 
 var SERVICE_ID = {
   /***-----账号管理------***/
@@ -336,4 +345,4 @@ var SERVICE_ID = {
 
   /***-----离港管理------***/
   departureScId: 8011, //发送报警预警日志信息
-};
+}

+ 72 - 0
src/router/routes/routes-file-six.ts

@@ -316,6 +316,78 @@ const ActualTimeRoutes = {
         },
       ],
     },
+    {
+      path: '/realTime/internationalTransferDeparture',
+      name: 'InternationalTransferDeparture',
+      meta: {
+        title: '中转',
+        breadcrumb: false,
+      },
+      component: KeepAliveRouterView('InternationalTransferDeparture'),
+      children: [
+        {
+          path: '/realTime/internationalTransferDeparture/airport',
+          name: 'InternationalTransferDepartureAirport',
+          meta: { title: '中转航站视图' },
+          component: KeepAliveRouterView(
+            'InternationalTransferDepartureAirport'
+          ),
+          children: [
+            {
+              path: '',
+              name: 'InternationalTransferDepartureAirportView',
+              meta: { keepAlive: true },
+              component: () =>
+                import(
+                  '@/views/realTime/internationalTransferDeparture/airport/index.vue'
+                ),
+            },
+            {
+              path: '/realTime/internationalTransferDeparture/flight',
+              name: 'InternationalTransferDepartureFlight',
+              meta: {
+                title: '中转航班视图',
+              },
+              component: KeepAliveRouterView(
+                'InternationalTransferDepartureFlight'
+              ),
+              children: [
+                {
+                  path: '',
+                  name: 'InternationalTransferDepartureFlightView',
+                  meta: { keepAlive: true },
+                  component: () =>
+                    import(
+                      '@/views/realTime/internationalTransferDeparture/flight/index.vue'
+                    ),
+                },
+                {
+                  path: '/realTime/internationalTransferDeparture/waybill',
+                  name: 'InternationalTransferDepartureWaybill',
+                  meta: {
+                    title: '中转运单视图',
+                  },
+                  component: KeepAliveRouterView(
+                    'InternationalTransferDepartureWaybill'
+                  ),
+                  children: [
+                    {
+                      path: '',
+                      name: 'InternationalTransferDepartureWaybillView',
+                      meta: { keepAlive: true },
+                      component: () =>
+                        import(
+                          '@/views/realTime/internationalTransferDeparture/waybill/index.vue'
+                        ),
+                    },
+                  ],
+                },
+              ],
+            },
+          ],
+        },
+      ],
+    },
     // {
     //   path: '/realTime/trackMap',
     //   name: 'TrackMap',

+ 6 - 4
src/views/realTime/components/AirportView/AirportForm.vue

@@ -87,6 +87,8 @@ const props = defineProps({
 
 const emit = defineEmits(['formDataChange'])
 
+const isDeparture = props.name.includes('Departure')
+
 const defaultStartTime = `${parseTime(new Date(), '{y}-{m}-{d}')} 00:00`
 const defaultEndTime = `${parseTime(new Date(), '{y}-{m}-{d}')} 23:59`
 const formData = reactive({
@@ -137,12 +139,12 @@ const flightStateOptions = ref([
     value: '',
   },
   {
-    label: props.name.includes('Departure') ? '已起飞' : '已降落',
-    value: props.name.includes('Departure') ? 'hasTakenOff' : 'hasLanded',
+    label: isDeparture ? '已起飞' : '已降落',
+    value: isDeparture ? 'hasTakenOff' : 'hasLanded',
   },
   {
-    label: props.name.includes('Departure') ? '未起飞' : '未降落',
-    value: props.name.includes('Departure') ? 'hasNotTakenOff' : 'hasNotLanded',
+    label: isDeparture ? '未起飞' : '未降落',
+    value: isDeparture ? 'hasNotTakenOff' : 'hasNotLanded',
   },
   {
     label: '取消',

+ 8 - 9
src/views/realTime/components/AirportView/index.vue

@@ -110,9 +110,7 @@ const getAirportCount = async () => {
     } = await Query({
       id:
         DATACONTENT_ID[
-          `${
-            props.name.slice(0, 1).toLowerCase() + props.name.slice(1)
-          }AirportCount`
+          `${props.name.slice(0, 1).toLowerCase() + props.name.slice(1)}Count`
         ],
       dataContent,
     })
@@ -450,24 +448,25 @@ const permissionMap = {
     UTC: 'turn_on_utc_in_view_of_domestic_departure_terminal_button',
     columnSet: 'domestic_departure_terminal_view_column_setting_button',
   },
-  InternationalDepartureAirport: {
-    count:
-      'number_of_pieces_displayed_in_international_departure_terminal_view_button',
-    UTC: 'international_departure_terminal_view_opens_utc_button',
-    columnSet: 'international_departure_terminal_view_column_setting_button',
-  },
   ArrivalAirport: {
     count:
       'number_of_pieces_displayed_in_domestic_inbound_terminal_view_button',
     UTC: 'turn_on_utc_in_view_of_domestic_inbound_terminal_button',
     columnSet: 'domestic_inbound_terminal_view_column_setting_button',
   },
+  InternationalDepartureAirport: {
+    count:
+      'number_of_pieces_displayed_in_international_departure_terminal_view_button',
+    UTC: 'international_departure_terminal_view_opens_utc_button',
+    columnSet: 'international_departure_terminal_view_column_setting_button',
+  },
   InternationalArrivalAirport: {
     count:
       'number_of_display_pieces_of_international_inbound_terminal_view_button',
     UTC: 'the_view_of_international_inbound_terminal_opens_utc_button',
     columnSet: 'view_column_setting_of_international_inbound_terminal_button',
   },
+  InternationalTransferDepartureAirport: {},
 }
 const getPermission = (type?: string) => {
   return [permissionMap[props.name][type]]

+ 146 - 1
src/views/realTime/components/AirportView/useAirportTable.ts

@@ -805,6 +805,151 @@ const columnGroupsMap: {
       ],
     },
   ],
+  InternationalTransferDepartureAirport: [
+    {
+      groupName: '航班相关',
+      children: [
+        {
+          columnName: 'IATACode',
+          columnLabel: '航司',
+          needFilters: 1,
+          fixed: true,
+        },
+        {
+          columnName: 'flightNO',
+          columnLabel: '航班号',
+          needFilters: 1,
+          fixed: true,
+        },
+        {
+          columnName: 'flightDate',
+          columnLabel: '执飞日期',
+          fixed: true,
+        },
+        {
+          columnName: 'planDepartureTime',
+          columnLabel: '计划起飞\n时间',
+          fixed: true,
+        },
+        {
+          columnName: 'acDepartureTime',
+          columnLabel: '实际起飞\n时间',
+          fixed: true,
+        },
+        {
+          columnName: 'target',
+          columnLabel: '航程',
+          width: 100,
+          needFilters: 1,
+          fixed: true,
+        },
+        {
+          columnName: 'planeType',
+          columnLabel: '机型',
+          needFilters: 1,
+          fixed: true,
+        },
+        {
+          columnName: 'flightType',
+          columnLabel: '航班类型',
+          needFilters: 1,
+          fixed: true,
+        },
+        {
+          columnName: 'takeOffStand',
+          columnLabel: '停机位',
+          fixed: true,
+        },
+        {
+          columnName: 'speCargoInfo',
+          columnLabel: '特货信息',
+          customRender: ellipsisCell,
+        },
+      ],
+    },
+    {
+      groupName: '货站相关',
+      children: [
+        {
+          columnName: 'enterPark',
+          columnLabel: '入园\n(运单/件)',
+          labelClassName: 'bg-purple',
+        },
+        {
+          columnName: 'enterParkTime',
+          columnLabel: '入园时间',
+          labelClassName: 'bg-purple',
+        },
+        {
+          columnName: 'enterCustoms',
+          columnLabel: '海关中控\n(运单/件)',
+          labelClassName: 'bg-purple',
+          defaultHidden: true,
+        },
+        {
+          columnName: 'enterCustomsTime',
+          columnLabel: '海关中控\n时间',
+          labelClassName: 'bg-purple',
+          defaultHidden: true,
+        },
+        {
+          columnName: 'passCustoms',
+          columnLabel: '海关放行\n(运单/件)',
+          labelClassName: 'bg-purple',
+        },
+        {
+          columnName: 'passCustomsTime',
+          columnLabel: '海关放行\n时间',
+          labelClassName: 'bg-purple',
+        },
+        {
+          columnName: 'receiveSure1',
+          columnLabel: '运抵货站\n(运单/件)',
+        },
+        {
+          columnName: 'receiveSureTime',
+          columnLabel: '运抵货站\n时间',
+        },
+        {
+          columnName: 'securityYes',
+          columnLabel: '安检放行\n(运单/件)',
+        },
+        {
+          columnName: 'securityTime',
+          columnLabel: '安检放行\n时间',
+        },
+        {
+          columnName: 'receiveSure2',
+          columnLabel: '收运核单\n(运单/件)',
+        },
+        {
+          columnName: 'receiveSureResultTime',
+          columnLabel: '收运核单\n时间',
+        },
+        {
+          columnName: 'tally_out',
+          columnLabel: '理货\n(板卡/运单/件)',
+        },
+        {
+          columnName: 'tallyTime_out',
+          columnLabel: '理货时间',
+        },
+      ],
+    },
+    {
+      groupName: '地服相关',
+      children: [
+        {
+          columnName: 'stowage',
+          columnLabel: '实配\n(板卡/件)',
+        },
+        {
+          columnName: 'stowageTime',
+          columnLabel: '实配时间',
+        },
+      ],
+    },
+  ],
 }
 
 const headerClassMap = {
@@ -830,7 +975,7 @@ const computedWidth = (column: SimpleColumn) => {
   // if (column.needFilters || column.needSort) {
   //   width += 8
   // }
-  width += 9
+  width += 8
   // border
   return width + 1
 }

+ 4 - 4
src/views/realTime/components/WaybillView/index.vue

@@ -125,7 +125,7 @@ const props = defineProps({
   },
 })
 
-const isDeparture = computed(() => props.name.includes('Departure'))
+const isDeparture = props.name.includes('Departure')
 
 const route = useRoute()
 const { flightDate, waybillNO } = route.query
@@ -152,7 +152,7 @@ const {
 // 判断是否有另外一个机场的节点信息,没有则隐藏那些列
 watch(trackData, data => {
   let anotherAirportNodeFlag = ''
-  if (isDeparture.value) {
+  if (isDeparture) {
     anotherAirportNodeFlag = 'node-arrival'
   } else {
     anotherAirportNodeFlag = 'node-departure'
@@ -180,7 +180,7 @@ watch(trackData, data => {
 })
 
 const loopFuncs = [getWaybillInfo, getTableData]
-if (isDeparture.value) {
+if (isDeparture) {
   loopFuncs.push(getPullTableData)
 }
 useLoop(loopFuncs, 'waybill')
@@ -291,7 +291,7 @@ const exportHandler = () => {
 }
 
 const { columnChecked } = useTableColumnSet(
-  isDeparture.value ? pullTableColumns : tableColumns
+  isDeparture ? pullTableColumns : tableColumns
 )
 
 const { rowClass, cellClass } = useTableStyle(`${props.name}Goods`)

+ 131 - 1
src/views/realTime/hooks/useTable.ts

@@ -518,7 +518,6 @@ const tableColumnsMap: {
     { columnLabel: '配载运单', columnName: 'list' },
     { columnLabel: '件数', columnName: 'number', needCount: 1 },
     { columnLabel: '重量', columnName: 'weight', needCount: 1 },
-
     {
       columnLabel: '理货',
       columnName: 'tally',
@@ -892,6 +891,137 @@ const tableColumnsMap: {
     { columnLabel: '发往位置', columnName: 'C12' },
     { columnLabel: '发往位置描述', columnName: 'C13' },
   ],
+  InternationalTransferDepartureFlightContainer: [
+    {
+      columnLabel: '集装器编号',
+      columnName: 'stowageNo',
+      width: 120,
+      needCount: 1,
+      countMode: 'all',
+    },
+    { columnLabel: '目的地', columnName: 'destination' },
+    { columnLabel: '配载运单', columnName: 'list' },
+    { columnLabel: '件数', columnName: 'number', needCount: 1 },
+    { columnLabel: '重量', columnName: 'weight', needCount: 1 },
+
+    {
+      columnLabel: '理货',
+      columnName: 'tally',
+      className: 'cell-filter cell-filter-yellow',
+    },
+    {
+      columnLabel: '实配',
+      columnName: 'stowage',
+      className: 'cell-filter cell-filter-yellow',
+    },
+  ],
+  InternationalTransferDepartureFlightWaybill: [
+    { columnLabel: '运单号', columnName: 'stockCode', width: 120 },
+    { columnLabel: '目的地', columnName: 'destination' },
+    { columnLabel: '分类', columnName: 'type' },
+    { columnLabel: '集装器数量', columnName: 'stowageNum' },
+    {
+      columnLabel: '品名',
+      columnName: 'typeCode',
+      width: 300,
+      showOverflowTooltip: true,
+    },
+    {
+      columnLabel: '特货信息',
+      columnName: 'speCargoInfo',
+      customRender: ellipsisCell,
+    },
+    { columnLabel: '运单件数', columnName: 'luggageCount', needCount: 1 },
+    { columnLabel: '运单重量', columnName: 'weight', needCount: 1 },
+    { columnLabel: '最新节点', columnName: 'nodeCode' },
+    { columnLabel: '处理结果', columnName: 'execResult' },
+    { columnLabel: '处理时间', columnName: 'execTime', width: 130 },
+    { columnLabel: '拉下件数', columnName: 'pullNum', needCount: 1 },
+    { columnLabel: '退运件数', columnName: 'returnNum', needCount: 1 },
+  ],
+  InternationalTransferDepartureWaybillGoods: [
+    {
+      columnLabel: '航班号',
+      columnName: 'flightNO',
+      needFilters: 1,
+      width: 70,
+    },
+    {
+      columnLabel: '集装器编号',
+      columnName: 'ULDNO',
+      width: 100,
+      needFilters: 1,
+    },
+    { columnLabel: '货物编码', columnName: 'cargoSN', needFilters: 1 },
+    { columnLabel: '拉下', columnName: 'pullMark', needFilters: 1, width: 60 },
+    {
+      columnLabel: '退运',
+      columnName: 'returnMark',
+      needFilters: 1,
+      width: 60,
+    },
+    {
+      columnLabel: '入园',
+      columnName: 'EPORTREL',
+      className: 'cell-filter cell-filter-green node-departure',
+    },
+    {
+      columnLabel: '海关',
+      columnName: 'MTREL_out',
+      className: 'cell-filter cell-filter-green node-departure',
+    },
+    {
+      columnLabel: '运抵',
+      columnName: 'FOH',
+      className: 'cell-filter cell-filter-green node-departure',
+    },
+    {
+      columnLabel: '安检',
+      columnName: 'REH',
+      className: 'cell-filter cell-filter-green node-departure',
+    },
+    {
+      columnLabel: '收运核单',
+      columnName: 'RCS',
+      className: 'cell-filter cell-filter-green node-departure',
+    },
+    {
+      columnLabel: '理货',
+      columnName: 'ACC_BUP',
+      className: 'cell-filter cell-filter-green node-departure',
+    },
+    {
+      columnLabel: '实配',
+      columnName: 'LS_CARGO',
+      className: 'cell-filter cell-filter-green node-departure',
+    },
+  ],
+  InternationalTransferDepartureWaybillPull: [
+    {
+      columnLabel: '集装器编号',
+      columnName: 'ULDNO',
+    },
+    {
+      columnLabel: '是否整单拉下',
+      columnName: 'wholePull',
+    },
+    {
+      columnLabel: '拉下件数',
+      columnName: 'pullNum',
+    },
+    {
+      columnLabel: '拉下重量',
+      columnName: 'pullWeight',
+    },
+    {
+      columnLabel: '拉下一个码',
+      columnName: 'pullCode',
+    },
+    {
+      columnLabel: '拉下时间',
+      columnName: 'pullTime',
+    },
+  ],
 }
 
 export function useTable(tableName: string, dataContent?: CommonValue[]) {

+ 12 - 0
src/views/realTime/internationalTransferDeparture/airport/index.vue

@@ -0,0 +1,12 @@
+<template>
+  <AirportView name="InternationalTransferDepartureAirport" />
+</template>
+
+<script lang="ts">
+import AirportView from '../../components/AirportView/index.vue'
+
+export default defineComponent({
+  name: 'InternationalTransferDepartureAirportView',
+  components: { AirportView },
+})
+</script>

+ 12 - 0
src/views/realTime/internationalTransferDeparture/flight/index.vue

@@ -0,0 +1,12 @@
+<template>
+  <FlightView name="InternationalTransferDepartureFlight" />
+</template>
+
+<script lang="ts">
+import FlightView from '../../components/FlightView/index.vue'
+
+export default defineComponent({
+  name: 'InternationalTransferDepartureFlightView',
+  components: { FlightView },
+})
+</script>

+ 12 - 0
src/views/realTime/internationalTransferDeparture/waybill/index.vue

@@ -0,0 +1,12 @@
+<template>
+  <WaybillView name="InternationalTransferDepartureWaybill" />
+</template>
+
+<script lang="ts">
+import WaybillView from '../../components/WaybillView/index.vue'
+
+export default defineComponent({
+  name: 'InternationalTransferDepartureWaybillView',
+  components: { WaybillView },
+})
+</script>