浏览代码

决策驾驶舱权限

zhongxiaoyu 2 年之前
父节点
当前提交
5e81dcbcc9

+ 6 - 0
src/permission.ts

@@ -46,6 +46,12 @@ router.beforeEach(async (to: any, from, next: any) => {
           // dynamically add accessible routes
           //router4 addRoutes destroyed
           accessRoutes.forEach((route: RouterRowTy) => {
+            if (route.path === '/dashboard') {
+              const childRoute = route.children![0]
+              childRoute.redirect = childRoute.children?.length
+                ? childRoute.children[0].path
+                : '/404'
+            }
             router.addRoute(route)
           })
           //already get userInfo

+ 19 - 17
src/router/routes/routes-file-one.ts

@@ -7,7 +7,7 @@ const HomeRoutes = [
     hidden: true,
     children: [
       {
-        path: '',
+        path: '/',
         name: 'HomePage',
         component: () => import('@/views/HomePage/index.vue'),
       },
@@ -32,35 +32,37 @@ const HomeRoutes = [
         },
         children: [
           {
-            path: '/dashboard/homein',
-            name: 'Homein',
-            component: () => import('@/views/dashboard/index.vue'),
-            meta: { title: '国内进港', roles: ['domestic_arrival_page'] },
-          },
-          {
-            path: '/dashboard/homeOut',
-            name: 'HomeOut',
-            component: () => import('@/views/dashboard/indexHomeOut.vue'),
+            path: '/dashboard/departure',
+            name: 'DashboardDeparture',
+            component: () => import('@/views/dashboard/departure.vue'),
             meta: {
               title: '国内出港',
               roles: ['domestic_departure_page'],
             },
           },
           {
-            path: '/dashboard/indexIn',
-            name: 'IndexIn',
-            component: () => import('@/views/dashboard/indexIn.vue'),
-            meta: { title: '国际进港', roles: ['international_arrival_page'] },
+            path: '/dashboard/arrival',
+            name: 'DashboardArrival',
+            component: () => import('@/views/dashboard/arrival.vue'),
+            meta: { title: '国内进港', roles: ['domestic_arrival_page'] },
           },
           {
-            path: '/dashboard/indexOut',
-            name: 'IndexOut',
-            component: () => import('@/views/dashboard/indexOut.vue'),
+            path: '/dashboard/internationalDeparture',
+            name: 'DashboardnternationalDeparture',
+            component: () =>
+              import('@/views/dashboard/internationalDeparture.vue'),
             meta: {
               title: '国际出港',
               roles: ['international_departure_page'],
             },
           },
+          {
+            path: '/dashboard/internationalArrival',
+            name: 'DashboardInternationalArrival',
+            component: () =>
+              import('@/views/dashboard/internationalArrival.vue'),
+            meta: { title: '国际进港', roles: ['international_arrival_page'] },
+          },
         ],
       },
     ],

+ 1 - 1
src/views/dashboard/index.vue → src/views/dashboard/arrival.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="dashboard">
-    <ComHead :tabs-index="1" />
+    <ComHead />
     <div class="dashboard-content">
       <div class="dashboard-content-top flex">
         <div class="dashboard-content-top-left">

+ 25 - 58
src/views/dashboard/components/comHead.vue

@@ -3,13 +3,13 @@
     <!-- <div class="dashboard-head-title">{{title}}</div> -->
     <div class="dashboard-head-tabs flex-wrap">
       <div
+        v-for="{ path, label } in tabs"
+        :key="path"
         class="dashboard-head-tabs-list"
-        :class="tabsIndex == index ? 'active' : ''"
-        @click="tabClick(item, index)"
-        v-for="(item, index) in tabs"
-        :key="index"
+        :class="route.path === path ? 'active' : ''"
+        @click="tabClick(path)"
       >
-        {{ item.label }}
+        {{ label }}
       </div>
     </div>
     <!-- <div class="dashboard-head-zw"></div> -->
@@ -17,58 +17,25 @@
 </template>
 
 <script setup lang="ts">
-const router = useRouter();
-const props = defineProps({
-  tabsIndex: {
-    type: Number,
-    default: 0,
-  },
-});
-const tabs = [
-  {
-    id: 1,
-    label: "国内出港",
-    value: "one",
-  },
-  {
-    id: 2,
-    label: "国内进港",
-    value: "two",
-  },
-  {
-    id: 3,
-    label: "国际出港",
-    value: "three",
-  },
-  {
-    id: 4,
-    label: "国际进港",
-    value: "four",
-  },
-];
-const { tabsIndex } = props;
-const tabClick = (item, index) => {
-  if (index == 0) {
-    router.push({
-      path: "../homeOut",
-    });
-  }
-  if (index == 1) {
-    router.push({
-      path: "../homein",
-    });
-  }
-  if (index == 2) {
-    router.push({
-      path: "../indexOut",
-    });
-  }
-  if (index == 3) {
-    router.push({
-      path: "../indexIn",
-    });
-  }
-};
+const router = useRouter()
+const route = useRoute()
+const tabs = computed(() =>
+  router.getRoutes().reduce((preTabs: any[], currentRoute) => {
+    if (
+      currentRoute.path.includes('/dashboard') &&
+      currentRoute.path !== '/dashboard'
+    ) {
+      preTabs.push({
+        label: currentRoute.meta?.title ?? '',
+        path: currentRoute.path,
+      })
+    }
+    return preTabs
+  }, [])
+)
+const tabClick = (path: string) => {
+  router.push(path)
+}
 </script>
 
 <style lang="scss" scoped>
@@ -89,7 +56,7 @@ const tabClick = (item, index) => {
     .active {
       color: #51dee9;
       &::after {
-        content: "";
+        content: '';
         position: absolute;
         bottom: 0;
         width: 80%;

+ 1 - 1
src/views/dashboard/indexHomeOut.vue → src/views/dashboard/departure.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="dashboard">
-    <ComHead :tabs-index="0" />
+    <ComHead />
     <div class="dashboard-content">
       <div class="dashboard-content-top flex">
         <div class="dashboard-content-top-left">

+ 0 - 729
src/views/dashboard/index copy.vue

@@ -1,729 +0,0 @@
-<template>
-  <div class="dashboard">
-    <ComHead :tabs-index="1" />
-    <div class="dashboard-content">
-      <div class="dashboard-content-top flex">
-        <div class="dashboard-content-top-left">
-          <div class="dashboard-content-top-left-item">
-            <div class="dashboard-content-top-left-item-top">
-              <div class="dashboard-content-top-left-item-top-title">
-                小时峰值分析
-              </div>
-              <div
-                class="dashboard-content-top-left-item-top-time"
-                @click="showDatePicker(showTimeMsg.HourlyPeak)"
-              >
-                <el-icon color="#ffffff" size="18">
-                  <Calendar />
-                </el-icon>
-                <el-icon color="#ffffff">
-                  <CaretBottom />
-                </el-icon>
-              </div>
-            </div>
-            <div
-              v-loading="loading1"
-              element-loading-text="数据加载中..."
-              element-loading-svg-view-box="-10, -10, 50, 50"
-              element-loading-background="rgba(0,0,0, 0.3)"
-              class="dashboard-content-top-left-item-bottom"
-            >
-              <Echarts id="ww1" :option="hourlyPeakObj" />
-            </div>
-          </div>
-          <div class="dashboard-content-top-left-item">
-            <div class="dashboard-content-top-left-item-top">
-              <div class="dashboard-content-top-left-item-top-title">
-                日趋势分析
-              </div>
-              <div
-                class="dashboard-content-top-left-item-top-time"
-                @click="showDatePicker(showTimeMsg.WaybillTrend)"
-              >
-                <el-icon color="#ffffff" size="18">
-                  <Calendar />
-                </el-icon>
-                <el-icon color="#ffffff">
-                  <CaretBottom />
-                </el-icon>
-              </div>
-            </div>
-            <div
-              v-loading="loading2"
-              element-loading-text="数据加载中..."
-              element-loading-svg-view-box="-10, -10, 50, 50"
-              element-loading-background="rgba(0,0,0, 0.3)"
-              class="dashboard-content-top-left-item-bottom"
-            >
-              <Echarts id="ww12" :option="waybillTrendObj" />
-            </div>
-          </div>
-          <div class="dashboard-content-top-left-item">
-            <div class="dashboard-content-top-left-item-top">
-              <div class="dashboard-content-top-left-item-top-title">
-                始发站统计分析
-              </div>
-              <div
-                class="dashboard-content-bottom-left-top-time"
-                @click="showDatePicker(showTimeMsg.NodePeak)"
-              >
-                <el-icon color="#ffffff" size="18">
-                  <Calendar />
-                </el-icon>
-                <el-icon color="#ffffff">
-                  <CaretBottom />
-                </el-icon>
-              </div>
-            </div>
-            <div
-              v-loading="loading3"
-              element-loading-text="数据加载中..."
-              element-loading-svg-view-box="-10, -10, 50, 50"
-              element-loading-background="rgba(0,0,0, 0.3)"
-              class="dashboard-content-top-left-item-bottom"
-            >
-              <Echarts id="ww4" :option="nodePeakObj" />
-            </div>
-          </div>
-        </div>
-        <!-- 地图 -->
-        <div class="dashboard-content-top-center">
-          <div
-            v-loading="loading4"
-            element-loading-text="数据加载中..."
-            element-loading-svg-view-box="-10, -10, 50, 50"
-            element-loading-background="rgba(0,0,0, 0.3)"
-            class="dashboard-content-top-center-top"
-          >
-            <div class="dashboard-content-top-center-top-list">
-              <div class="dashboard-content-top-center-top-list-txt">
-                今日计划航班数(班)
-              </div>
-              <div class="dashboard-content-top-center-top-list-num">
-                {{ flightNums }}
-              </div>
-            </div>
-            <div class="dashboard-content-top-center-top-list">
-              <div class="dashboard-content-top-center-top-list-txt">
-                已完成航班数(班)
-              </div>
-              <div class="dashboard-content-top-center-top-list-num">
-                {{ stockNums }}
-              </div>
-            </div>
-            <div class="dashboard-content-top-center-top-list">
-              <div class="dashboard-content-top-center-top-list-txt">
-                已卸载总量(吨)
-              </div>
-              <div class="dashboard-content-top-center-top-list-num">
-                {{ formatWeight(weightNums) }}
-              </div>
-            </div>
-          </div>
-          <div
-            v-loading="loading5"
-            element-loading-text="数据加载中..."
-            element-loading-svg-view-box="-10, -10, 50, 50"
-            element-loading-background="rgba(0,0,0, 0.3)"
-            class="dashboard-content-top-center-bottom"
-          >
-            <div class="dashboard-content-top-center-bottom-title">
-              航班动态跟踪
-            </div>
-            <div class="dashboard-content-top-center-bottom-content">
-              <div class="dashboard-content-top-center-bottom-content-head">
-                <div
-                  class="dashboard-content-top-center-bottom-content-head-list"
-                >
-                  公司/航班号
-                </div>
-                <div
-                  class="dashboard-content-top-center-bottom-content-head-list"
-                >
-                  航班状态
-                </div>
-                <div
-                  class="dashboard-content-top-center-bottom-content-head-list"
-                >
-                  始发站/经停
-                </div>
-                <div
-                  class="dashboard-content-top-center-bottom-content-head-list"
-                >
-                  计划到达
-                </div>
-                <div
-                  class="dashboard-content-top-center-bottom-content-head-list"
-                >
-                  实际到达
-                </div>
-                <div
-                  class="dashboard-content-top-center-bottom-content-head-list"
-                >
-                  机型
-                </div>
-                <div
-                  class="dashboard-content-top-center-bottom-content-head-list"
-                >
-                  类型
-                </div>
-              </div>
-              <div
-                ref="scrollContent"
-                class="dashboard-content-top-center-bottom-content-bottom"
-              >
-                <vue3-seamless-scroll
-                  :list="listData"
-                  :limitScrollNum="limitScrollNum"
-                  :hover-stop="true"
-                  :hover="true"
-                  :step="0.3"
-                >
-                  <div
-                    v-for="(item, index) in listData"
-                    :key="index"
-                    class="dashboard-content-top-center-bottom-content-bottom-list"
-                  >
-                    <div
-                      class="dashboard-content-top-center-bottom-content-bottom-list-txt"
-                    >
-                      {{ item.flightNo }}
-                    </div>
-                    <div
-                      class="dashboard-content-top-center-bottom-content-bottom-list-txt"
-                    >
-                      {{ item.flightState }}
-                    </div>
-                    <div
-                      class="dashboard-content-top-center-bottom-content-bottom-list-txt"
-                    >
-                      {{ item.airport }}
-                    </div>
-                    <div
-                      class="dashboard-content-top-center-bottom-content-bottom-list-txt"
-                    >
-                      {{ item.planTime }}
-                    </div>
-                    <!-- <div class="dashboard-content-top-center-bottom-content-bottom-list-txt">{{ item.preTime || '--' }}</div> -->
-                    <div
-                      class="dashboard-content-top-center-bottom-content-bottom-list-txt"
-                    >
-                      {{ item.acTime || '--' }}
-                    </div>
-                    <div
-                      class="dashboard-content-top-center-bottom-content-bottom-list-txt"
-                    >
-                      {{ item.planeType }}
-                    </div>
-                    <div
-                      class="dashboard-content-top-center-bottom-content-bottom-list-txt"
-                    >
-                      {{ item.KHT }}
-                    </div>
-                  </div>
-                </vue3-seamless-scroll>
-              </div>
-            </div>
-          </div>
-        </div>
-        <div class="dashboard-content-top-right">
-          <div class="dashboard-content-top-right-item">
-            <div class="dashboard-content-top-right-item-top">
-              <div class="dashboard-content-top-right-item-top-title">
-                航司统计分析
-              </div>
-              <div
-                class="dashboard-content-top-right-item-top-time"
-                @click="showDatePicker(showTimeMsg.AirlineTraffic)"
-              >
-                <el-icon color="#ffffff" size="18">
-                  <Calendar />
-                </el-icon>
-                <el-icon color="#ffffff">
-                  <CaretBottom />
-                </el-icon>
-              </div>
-            </div>
-            <div
-              v-loading="loading6"
-              element-loading-text="数据加载中..."
-              element-loading-svg-view-box="-10, -10, 50, 50"
-              element-loading-background="rgba(0,0,0, 0.3)"
-              class="dashboard-content-top-right-item-bottom"
-            >
-              <Echarts id="a1" :option="airlineTrafficObj" />
-            </div>
-          </div>
-          <div class="dashboard-content-top-right-item">
-            <div class="dashboard-content-top-right-item-top">
-              <div class="dashboard-content-top-right-item-top-title">
-                特货分类统计
-              </div>
-              <div
-                class="dashboard-content-top-right-item-top-time"
-                @click="showDatePicker(showTimeMsg.SpecialClassification)"
-              >
-                <el-icon color="#ffffff" size="18">
-                  <Calendar />
-                </el-icon>
-                <el-icon color="#ffffff">
-                  <CaretBottom />
-                </el-icon>
-              </div>
-              <div class="dashboard-content-top-right-item-top-time">
-                <el-dropdown trigger="click" @command="handleCommand">
-                  <span class="icons">
-                    <span class="icons-txt">{{ specialGoods }}</span>
-                    <el-icon color="#ffffff">
-                      <CaretBottom />
-                    </el-icon>
-                  </span>
-                  <template #dropdown>
-                    <el-dropdown-menu>
-                      <el-dropdown-item
-                        v-for="item in specialGoodsDatas"
-                        :key="item.specialTypeName"
-                        :command="item.specialTypeName"
-                        >{{ item.specialTypeName }}</el-dropdown-item
-                      >
-                    </el-dropdown-menu>
-                  </template>
-                </el-dropdown>
-              </div>
-            </div>
-            <div
-              v-loading="loading7"
-              element-loading-text="数据加载中..."
-              element-loading-svg-view-box="-10, -10, 50, 50"
-              element-loading-background="rgba(0,0,0, 0.3)"
-              class="dashboard-content-top-left-item-bottom"
-            >
-              <Echarts id="ww44" :option="airlineObj" />
-            </div>
-          </div>
-          <div class="dashboard-content-top-right-item">
-            <div class="dashboard-content-top-right-item-top">
-              <div class="dashboard-content-top-right-item-top-title">
-                货机货量统计
-              </div>
-              <div
-                class="dashboard-content-top-right-item-top-time"
-                @click="showDatePicker(showTimeMsg.TallyWeight)"
-              >
-                <el-icon color="#ffffff" size="18">
-                  <Calendar />
-                </el-icon>
-                <el-icon color="#ffffff">
-                  <CaretBottom />
-                </el-icon>
-              </div>
-              <div class="dashboard-content-top-right-item-top-time">
-                <el-dropdown trigger="click" @command="handleWeightType">
-                  <span class="icons">
-                    <span class="icons-txt">{{ weightType }}</span>
-                    <el-icon color="#ffffff">
-                      <CaretBottom />
-                    </el-icon>
-                  </span>
-                  <template #dropdown>
-                    <el-dropdown-menu>
-                      <el-dropdown-item command="进港">进港</el-dropdown-item>
-                      <el-dropdown-item command="出港">出港</el-dropdown-item>
-                    </el-dropdown-menu>
-                  </template>
-                </el-dropdown>
-              </div>
-            </div>
-            <div
-              v-loading="loading8"
-              element-loading-text="数据加载中..."
-              element-loading-svg-view-box="-10, -10, 50, 50"
-              element-loading-background="rgba(0,0,0, 0.3)"
-              class="dashboard-content-top-left-item-bottom"
-            >
-              <Echarts id="ww45" :option="tallyObj" />
-            </div>
-          </div>
-        </div>
-      </div>
-    </div>
-    <Dialog
-      :flag="flag"
-      msg-title="日期选择"
-      @resetForm="resetForm"
-      @submitForm="submitForm"
-    >
-      <el-form :model="form" label-width="120px">
-        <el-form-item label="开始日期">
-          <el-date-picker
-            :disabled-date="disabledStartDate"
-            v-model="form.startDate"
-            type="date"
-            placeholder="请选择开始日期"
-            size="default"
-            format="YYYY-MM-DD"
-            value-format="YYYY-MM-DD"
-          />
-        </el-form-item>
-        <el-form-item label="结束日期">
-          <el-date-picker
-            :disabled-date="disabledEndDate"
-            v-model="form.endDate"
-            type="date"
-            placeholder="请选择结束日期"
-            size="default"
-            format="YYYY-MM-DD"
-            value-format="YYYY-MM-DD"
-          />
-        </el-form-item>
-      </el-form>
-    </Dialog>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { ref, onMounted } from 'vue'
-import { Vue3SeamlessScroll } from 'vue3-seamless-scroll'
-import Echarts from '@/components/Echarts/commonChartsBar.vue'
-import ComHead from './components/comHead.vue'
-import { Calendar, CaretBottom } from '@element-plus/icons-vue'
-import Dialog from '@/components/dialog/index.vue'
-import { usePublic, showTimeMsg } from './hooks/usePublic'
-// import nodeCode from './hooks/nodeCode'
-import { parseTime, isValue } from '@/utils/validate'
-import * as _ from 'lodash'
-const {
-  optionLeft,
-  airCompaneBaggage,
-  airlineAbnormalBaggage,
-  airStutas,
-  getPublicData,
-  formatGoods,
-  formatWeight,
-} = usePublic()
-const timePickerName = ref(0)
-const limitScrollNum = ref(13)
-const scrollContent = ref<HTMLElement>()
-const flag = ref(false)
-const loading1 = ref(false)
-const loading2 = ref(false)
-const loading3 = ref(false)
-const loading4 = ref(false)
-const loading5 = ref(false)
-const loading6 = ref(false)
-const loading7 = ref(false)
-const loading8 = ref(false)
-const hourlyPeakObj = ref<any>({})
-const waybillTrendObj = ref<any>({})
-const nodePeakObj = ref<any>({})
-const airlineTrafficObj = ref<any>({})
-const airlineObj = ref<any>({})
-const tallyObj = ref<any>({})
-const flightNums = ref(0)
-const stockNums = ref(0)
-const weightNums = ref<number | string>(0)
-const specialGoods = ref<string>('分类')
-const specialGoodsDatas = ref<any>([])
-const specialGoodsAll = ref<any>([])
-const weightType = ref('进港')
-const form = ref({
-  startDate: parseTime(Date.now() - 24 * 60 * 60 * 1000 * 7, '{y}-{m}-{d}'),
-  endDate: parseTime(Date.now(), '{y}-{m}-{d}'),
-})
-const dateNow = ref({
-  time: parseTime(Date.now(), '{y}-{m}-{d}'),
-})
-const listData = ref<any>([])
-const disabledStartDate = (time: Date) => {
-  const timer: any = form.value.endDate
-  const data = new Date(timer)
-  return time.getTime() > data.getTime()
-}
-const disabledEndDate = (time: Date) => {
-  const timer: any = form.value.startDate
-  let data = new Date(timer)
-  return data.getTime() > time.getTime()
-}
-const resetForm = () => {
-  flag.value = false
-}
-
-const submitForm = () => {
-  flag.value = false
-  switch (timePickerName.value) {
-    case showTimeMsg.HourlyPeak:
-      dateNow.value.time = form.value.startDate
-      hourlyPeakFunc()
-      break
-    case showTimeMsg.WaybillTrend:
-      waybillTrendFunc()
-      break
-    case showTimeMsg.NodePeak:
-      nodePeakFunc()
-      break
-    case showTimeMsg.AirlineTraffic:
-      airlineTrafficFunc()
-      break
-    case showTimeMsg.AirlineAbnormal:
-      airlineFunc()
-      break
-    case showTimeMsg.TallyWeight:
-      tallyWeightFunc()
-      break
-    case showTimeMsg.SpecialClassification:
-      airlineFunc()
-      break
-    default:
-      break
-  }
-}
-
-const showDatePicker = (id?) => {
-  flag.value = true
-  timePickerName.value = id
-}
-
-const sortClass = sortData => {
-  const groupBy = (array, f) => {
-    let groups = {}
-    array.forEach(o => {
-      let group = JSON.stringify(f(o))
-      groups[group] = groups[group] || []
-      groups[group].push(o)
-    })
-    return Object.keys(groups).map(group => {
-      return groups[group]
-    })
-  }
-  const sorted = groupBy(sortData, item => {
-    return item.jobName
-  })
-  return sorted
-}
-
-const pubFunc = (listValues, target, type?) => {
-  const newObj = _.cloneDeep(target)
-  const [jobTimes, stockNums, weights] = [<any>[], <any>[], <any>[]]
-  listValues.forEach(item => {
-    jobTimes.push(item.jobTime)
-    stockNums.push(Number(item.stockNum))
-    weights.push(Number(item.weight))
-  })
-  newObj.xAxis.data = jobTimes
-  if (type) {
-    newObj.series[1].data = stockNums
-    newObj.series[0].data = weights
-  } else {
-    newObj.series[0].data = stockNums
-    newObj.series[1].data = weights
-  }
-  return newObj
-}
-
-const parseDate = (date: string) => {
-  const dates = date.split('-')
-  const newDate = dates.shift()
-  return dates.join('-')
-}
-
-// 特货分类统计-选取下拉数据
-const handleCommand = (command: string) => {
-  specialGoods.value = command
-  const newObj: any = _.cloneDeep(airlineAbnormalBaggage.option.baseOption)
-  const result = formatGoods(command, specialGoodsAll.value)
-  airlineObj.value = pubFunc(result, newObj)
-}
-
-//获取小时峰值分布
-const hourlyPeakFunc = async () => {
-  loading1.value = true
-  const listValues = (await getPublicData(DATACONTENT_ID.jscCgHourlyPeakId, [
-    { flightDate1: dateNow.value.time, flightDate2: form.value.endDate },
-  ])) as any
-  if (listValues && isValue(listValues)) {
-    hourlyPeakObj.value = pubFunc(listValues, optionLeft, true)
-  }
-  loading1.value = false
-}
-
-//运单趋势分析
-const waybillTrendFunc = async () => {
-  loading2.value = true
-  const listValues = (await getPublicData(DATACONTENT_ID.jscCgWaybillTrendId, [
-    { flightDate1: form.value.startDate, flightDate2: form.value.endDate },
-  ])) as any
-  if (listValues && isValue(listValues)) {
-    listValues.forEach(item => {
-      item.jobTime = parseDate(item['jobTime'])
-    })
-    waybillTrendObj.value = pubFunc(listValues, optionLeft, true)
-  }
-  loading2.value = false
-}
-
-//始发站/目的站统计分析
-const nodePeakFunc = async (fd1?: string, fd2?: string) => {
-  loading3.value = true
-  const listValues = (await getPublicData(DATACONTENT_ID.jscAirlineAbnormalId, [
-    {
-      fd1: fd1 ?? form.value.startDate,
-      fd2: fd2 ?? form.value.endDate,
-      fttp: '国内进港',
-    },
-  ])) as any
-  if (listValues && isValue(listValues)) {
-    const newObj = _.cloneDeep(airCompaneBaggage.option.baseOption)
-    listValues.forEach(item => {
-      item.jobTime = item['airport']
-    })
-    nodePeakObj.value = pubFunc(listValues, newObj, true)
-  }
-  loading3.value = false
-}
-
-//航班数&运单数
-const numbersFunc = async () => {
-  loading4.value = true
-  const listValues = (await getPublicData(DATACONTENT_ID.jscCgNumbersId, [
-    {
-      fd1: parseTime(Date.now(), '{y}-{m}-{d}'),
-      fd2: parseTime(Date.now(), '{y}-{m}-{d}'),
-    },
-  ])) as any
-  if (listValues && isValue(listValues)) {
-    const { flightNum, finishFlightNum, weight } = listValues[0]
-    flightNums.value = flightNum ?? 0
-    stockNums.value = finishFlightNum ?? 0
-    weightNums.value = weight ?? 0
-  }
-  loading4.value = false
-}
-
-//航司运量
-const airlineTrafficFunc = async (
-  flightDate1?: string,
-  flightDate2?: string
-) => {
-  loading6.value = true
-  const listValues = await getPublicData(DATACONTENT_ID.jscCgAirlineTrafficId, [
-    {
-      flightDate1: flightDate1 ?? form.value.startDate,
-      flightDate2: flightDate2 ?? form.value.endDate,
-    },
-  ])
-  if (listValues && isValue(listValues)) {
-    const newObj: any = _.cloneDeep(airCompaneBaggage.option.baseOption)
-    ;(newObj.dataZoom = [
-      {
-        id: 'dataZoomX',
-        type: 'slider',
-        xAxisIndex: [0],
-        filterMode: 'filter',
-        start: 0,
-        end: 20,
-      },
-    ]),
-      listValues.forEach(item => {
-        item.jobTime = item['IACACode']
-      })
-
-    airlineTrafficObj.value = pubFunc(listValues, newObj, true)
-  }
-  loading6.value = false
-}
-
-//航班表格
-const airlineAbnormalFunc = async () => {
-  loading5.value = true
-  const listValues = (await getPublicData(DATACONTENT_ID.jscFlightDynamicsId, [
-    {
-      fd1: parseTime(Date.now(), '{y}-{m}-{d}'),
-      fd2: parseTime(Date.now(), '{y}-{m}-{d}'),
-      fttp: '国内进港',
-    },
-  ])) as any
-  const domHeight = scrollContent.value?.clientHeight
-  if (domHeight && typeof domHeight == 'number') {
-    const cell = Math.ceil(domHeight / 40)
-    limitScrollNum.value = cell
-  }
-  if (listValues && isValue(listValues)) {
-    listData.value = listValues
-  }
-  loading5.value = false
-}
-
-//航班动态统计
-const airlineFunc = async () => {
-  loading7.value = true
-  const listValues = (await getPublicData(DATACONTENT_ID.jscGoodsId, [
-    {
-      fd1: form.value.startDate,
-      fd2: form.value.endDate,
-      fttp: '国内进港',
-    },
-  ])) as any
-  if (listValues && isValue(listValues)) {
-    const newObj: any = _.cloneDeep(airlineAbnormalBaggage.option.baseOption)
-    const newDatas = _.cloneDeep(listValues)
-    const nameDatas = _.unionBy(newDatas, 'specialTypeName')
-    // const names: any = [...nameDatas];
-    const names: any = [...nameDatas, { specialTypeName: '合计' }]
-    // specialGoods.value = names[0]["specialTypeName"];
-    specialGoods.value = '合计'
-    specialGoodsDatas.value = names
-    specialGoodsAll.value = listValues
-    const result = formatGoods(
-      // names[0]["specialTypeName"],
-      '合计',
-      specialGoodsAll.value
-    )
-    airlineObj.value = pubFunc(result, newObj)
-  }
-  loading7.value = false
-}
-
-//理货重量
-const tallyWeightFunc = async () => {
-  loading8.value = true
-  const listValues = (await getPublicData(DATACONTENT_ID.jscTallyId, [
-    {
-      fd1: form.value.startDate,
-      fd2: form.value.endDate,
-      fttp: `国内${weightType.value}`,
-    },
-  ])) as any
-  if (listValues && isValue(listValues)) {
-    const newObj: any = _.cloneDeep(airStutas.option.baseOption)
-    const [datas, weights] = [<any>[], <any>[]]
-    listValues.forEach(item => {
-      datas.push(item.flightDate)
-      weights.push(item.weight)
-    })
-    newObj.xAxis.data = datas
-    newObj.series[0].data = weights
-    tallyObj.value = newObj
-  }
-  loading8.value = false
-}
-const handleWeightType = (type: string) => {
-  weightType.value = type
-  tallyWeightFunc()
-}
-
-const today = parseTime(Date.now(), '{y}-{m}-{d}') as string
-onMounted(() => {
-  hourlyPeakFunc()
-  waybillTrendFunc()
-  nodePeakFunc(today, today)
-  numbersFunc()
-  airlineTrafficFunc(today, today)
-  airlineAbnormalFunc()
-  airlineFunc()
-  tallyWeightFunc()
-})
-</script>
-
-<style lang="scss" scoped>
-@import './css/index.scss';
-</style>

+ 0 - 743
src/views/dashboard/indexHomeOut copy.vue

@@ -1,743 +0,0 @@
-<template>
-  <div class="dashboard">
-    <ComHead :tabs-index="0" />
-    <div class="dashboard-content">
-      <div class="dashboard-content-top flex">
-        <div class="dashboard-content-top-left">
-          <div class="dashboard-content-top-left-item">
-            <div class="dashboard-content-top-left-item-top">
-              <div class="dashboard-content-top-left-item-top-title">
-                小时峰值分析
-              </div>
-              <div
-                class="dashboard-content-top-left-item-top-time"
-                @click="showDatePicker(showTimeMsg.HourlyPeak)"
-              >
-                <el-icon color="#ffffff" size="18">
-                  <Calendar />
-                </el-icon>
-                <el-icon color="#ffffff">
-                  <CaretBottom />
-                </el-icon>
-              </div>
-            </div>
-            <div
-              v-loading="loading1"
-              element-loading-text="数据加载中..."
-              element-loading-svg-view-box="-10, -10, 50, 50"
-              element-loading-background="rgba(0,0,0, 0.3)"
-              class="dashboard-content-top-left-item-bottom"
-            >
-              <Echarts id="ww1" :option="hourlyPeakObj" />
-            </div>
-          </div>
-          <div class="dashboard-content-top-left-item">
-            <div class="dashboard-content-top-left-item-top">
-              <div class="dashboard-content-top-left-item-top-title">
-                日趋势分析
-              </div>
-              <div
-                class="dashboard-content-top-left-item-top-time"
-                @click="showDatePicker(showTimeMsg.WaybillTrend)"
-              >
-                <el-icon color="#ffffff" size="18">
-                  <Calendar />
-                </el-icon>
-                <el-icon color="#ffffff">
-                  <CaretBottom />
-                </el-icon>
-              </div>
-            </div>
-            <div
-              v-loading="loading2"
-              element-loading-text="数据加载中..."
-              element-loading-svg-view-box="-10, -10, 50, 50"
-              element-loading-background="rgba(0,0,0, 0.3)"
-              class="dashboard-content-top-left-item-bottom"
-            >
-              <Echarts id="ww12" :option="waybillTrendObj" />
-            </div>
-          </div>
-          <div class="dashboard-content-top-left-item">
-            <div class="dashboard-content-top-left-item-top">
-              <div class="dashboard-content-top-left-item-top-title">
-                目的站统计分析
-              </div>
-              <div
-                class="dashboard-content-bottom-left-top-time"
-                @click="showDatePicker(showTimeMsg.NodePeak)"
-              >
-                <el-icon color="#ffffff" size="18">
-                  <Calendar />
-                </el-icon>
-                <el-icon color="#ffffff">
-                  <CaretBottom />
-                </el-icon>
-              </div>
-            </div>
-            <div
-              v-loading="loading3"
-              element-loading-text="数据加载中..."
-              element-loading-svg-view-box="-10, -10, 50, 50"
-              element-loading-background="rgba(0,0,0, 0.3)"
-              class="dashboard-content-top-left-item-bottom"
-            >
-              <Echarts id="ww4" :option="nodePeakObj" />
-            </div>
-          </div>
-        </div>
-        <!-- 地图 -->
-        <div class="dashboard-content-top-center">
-          <div
-            v-loading="loading4"
-            element-loading-text="数据加载中..."
-            element-loading-svg-view-box="-10, -10, 50, 50"
-            element-loading-background="rgba(0,0,0, 0.3)"
-            class="dashboard-content-top-center-top"
-          >
-            <div class="dashboard-content-top-center-top-list">
-              <div class="dashboard-content-top-center-top-list-txt">
-                今日计划航班数(班)
-              </div>
-              <div class="dashboard-content-top-center-top-list-num">
-                {{ flightNums }}
-              </div>
-            </div>
-            <div class="dashboard-content-top-center-top-list">
-              <div class="dashboard-content-top-center-top-list-txt">
-                已完成航班数(班)
-              </div>
-              <div class="dashboard-content-top-center-top-list-num">
-                {{ stockNums }}
-              </div>
-            </div>
-            <div class="dashboard-content-top-center-top-list">
-              <div class="dashboard-content-top-center-top-list-txt">
-                已装载总量(吨)
-              </div>
-              <div class="dashboard-content-top-center-top-list-num">
-                {{ formatWeight(weightNums) }}
-              </div>
-            </div>
-          </div>
-          <div
-            v-loading="loading5"
-            element-loading-text="数据加载中..."
-            element-loading-svg-view-box="-10, -10, 50, 50"
-            element-loading-background="rgba(0,0,0, 0.3)"
-            class="dashboard-content-top-center-bottom"
-          >
-            <div class="dashboard-content-top-center-bottom-title">
-              航班动态跟踪
-            </div>
-            <div class="dashboard-content-top-center-bottom-content">
-              <div class="dashboard-content-top-center-bottom-content-head">
-                <div
-                  class="dashboard-content-top-center-bottom-content-head-list"
-                >
-                  公司/航班号
-                </div>
-                <div
-                  class="dashboard-content-top-center-bottom-content-head-list"
-                >
-                  航班状态
-                </div>
-                <div
-                  class="dashboard-content-top-center-bottom-content-head-list"
-                >
-                  经停/到达站
-                </div>
-                <div
-                  class="dashboard-content-top-center-bottom-content-head-list"
-                >
-                  计划起飞
-                </div>
-                <div
-                  class="dashboard-content-top-center-bottom-content-head-list"
-                >
-                  实际起飞
-                </div>
-                <div
-                  class="dashboard-content-top-center-bottom-content-head-list"
-                >
-                  机型
-                </div>
-                <div
-                  class="dashboard-content-top-center-bottom-content-head-list"
-                >
-                  类型
-                </div>
-              </div>
-              <div
-                ref="scrollContent"
-                class="dashboard-content-top-center-bottom-content-bottom"
-              >
-                <vue3-seamless-scroll
-                  :list="listData"
-                  :limitScrollNum="limitScrollNum"
-                  :hover-stop="true"
-                  :hover="true"
-                  :step="0.3"
-                >
-                  <div
-                    v-for="(item, index) in listData"
-                    :key="index"
-                    class="dashboard-content-top-center-bottom-content-bottom-list"
-                  >
-                    <div
-                      class="dashboard-content-top-center-bottom-content-bottom-list-txt"
-                    >
-                      {{ item.flightNo }}
-                    </div>
-                    <div
-                      class="dashboard-content-top-center-bottom-content-bottom-list-txt"
-                    >
-                      {{ item.flightState }}
-                    </div>
-                    <div
-                      class="dashboard-content-top-center-bottom-content-bottom-list-txt"
-                    >
-                      {{ item.airport }}
-                    </div>
-                    <div
-                      class="dashboard-content-top-center-bottom-content-bottom-list-txt"
-                    >
-                      {{ item.planTime }}
-                    </div>
-                    <!-- <div class="dashboard-content-top-center-bottom-content-bottom-list-txt">{{ item.preTime || '--' }}</div> -->
-                    <div
-                      class="dashboard-content-top-center-bottom-content-bottom-list-txt"
-                    >
-                      {{ item.acTime || '--' }}
-                    </div>
-                    <div
-                      class="dashboard-content-top-center-bottom-content-bottom-list-txt"
-                    >
-                      {{ item.planeType }}
-                    </div>
-                    <div
-                      class="dashboard-content-top-center-bottom-content-bottom-list-txt"
-                    >
-                      {{ item.KHT }}
-                    </div>
-                  </div>
-                </vue3-seamless-scroll>
-              </div>
-            </div>
-          </div>
-        </div>
-        <div class="dashboard-content-top-right">
-          <div class="dashboard-content-top-right-item">
-            <div class="dashboard-content-top-right-item-top">
-              <div class="dashboard-content-top-right-item-top-title">
-                航司统计分析
-              </div>
-              <div
-                class="dashboard-content-top-right-item-top-time"
-                @click="showDatePicker(showTimeMsg.AirlineTraffic)"
-              >
-                <el-icon color="#ffffff" size="18">
-                  <Calendar />
-                </el-icon>
-                <el-icon color="#ffffff">
-                  <CaretBottom />
-                </el-icon>
-              </div>
-            </div>
-            <div
-              v-loading="loading6"
-              element-loading-text="数据加载中..."
-              element-loading-svg-view-box="-10, -10, 50, 50"
-              element-loading-background="rgba(0,0,0, 0.3)"
-              class="dashboard-content-top-right-item-bottom"
-            >
-              <Echarts id="a1" :option="airlineTrafficObj" />
-            </div>
-          </div>
-          <div class="dashboard-content-top-right-item">
-            <div class="dashboard-content-top-right-item-top">
-              <div class="dashboard-content-top-right-item-top-title">
-                特货分类统计
-              </div>
-              <div
-                class="dashboard-content-top-right-item-top-time"
-                @click="showDatePicker(showTimeMsg.SpecialClassification)"
-              >
-                <el-icon color="#ffffff" size="18">
-                  <Calendar />
-                </el-icon>
-                <el-icon color="#ffffff">
-                  <CaretBottom />
-                </el-icon>
-              </div>
-              <div class="dashboard-content-top-right-item-top-time">
-                <el-dropdown
-                  :disabled="!specialGoodsDatas.length"
-                  trigger="click"
-                  @command="handleCommand"
-                >
-                  <span class="icons">
-                    <span class="icons-txt">{{ specialGoods }}</span>
-                    <el-icon color="#ffffff">
-                      <CaretBottom />
-                    </el-icon>
-                  </span>
-                  <template #dropdown>
-                    <el-dropdown-menu>
-                      <el-dropdown-item
-                        v-for="item in specialGoodsDatas"
-                        :key="item.specialTypeName"
-                        :command="item.specialTypeName"
-                        >{{ item.specialTypeName }}</el-dropdown-item
-                      >
-                    </el-dropdown-menu>
-                  </template>
-                </el-dropdown>
-              </div>
-            </div>
-            <div
-              v-loading="loading7"
-              element-loading-text="数据加载中..."
-              element-loading-svg-view-box="-10, -10, 50, 50"
-              element-loading-background="rgba(0,0,0, 0.3)"
-              class="dashboard-content-top-left-item-bottom"
-            >
-              <Echarts id="ww44" :option="airlineObj" />
-            </div>
-          </div>
-          <div class="dashboard-content-top-right-item">
-            <div class="dashboard-content-top-right-item-top">
-              <div class="dashboard-content-top-right-item-top-title">
-                拉货统计分析
-              </div>
-              <div
-                class="dashboard-content-top-right-item-top-time"
-                @click="showDatePicker(showTimeMsg.PickingStatistics)"
-              >
-                <el-icon color="#ffffff" size="18">
-                  <Calendar />
-                </el-icon>
-                <el-icon color="#ffffff">
-                  <CaretBottom />
-                </el-icon>
-              </div>
-            </div>
-            <div
-              v-loading="loading8"
-              element-loading-text="数据加载中..."
-              element-loading-svg-view-box="-10, -10, 50, 50"
-              element-loading-background="rgba(0,0,0, 0.3)"
-              class="dashboard-content-top-left-item-bottom"
-            >
-              <Echarts id="ww45" :option="pickingObj" />
-            </div>
-          </div>
-        </div>
-      </div>
-    </div>
-    <Dialog
-      :flag="flag"
-      msg-title="日期选择"
-      @resetForm="resetForm"
-      @submitForm="submitForm"
-    >
-      <el-form :model="form" label-width="120px">
-        <el-form-item label="开始日期">
-          <el-date-picker
-            :disabled-date="disabledStartDate"
-            v-model="form.startDate"
-            type="date"
-            placeholder="请选择开始日期"
-            size="default"
-            format="YYYY-MM-DD"
-            value-format="YYYY-MM-DD"
-          />
-        </el-form-item>
-        <el-form-item label="结束日期">
-          <el-date-picker
-            :disabled-date="disabledEndDate"
-            v-model="form.endDate"
-            type="date"
-            placeholder="请选择结束日期"
-            size="default"
-            format="YYYY-MM-DD"
-            value-format="YYYY-MM-DD"
-          />
-        </el-form-item>
-      </el-form>
-    </Dialog>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { ref, onMounted } from 'vue'
-import { Vue3SeamlessScroll } from 'vue3-seamless-scroll'
-import Echarts from '@/components/Echarts/commonChartsBar.vue'
-import ComHead from './components/comHead.vue'
-import { Calendar, CaretBottom } from '@element-plus/icons-vue'
-import Dialog from '@/components/dialog/index.vue'
-import { usePublic, showTimeMsg } from './hooks/usePublic'
-import nodeCode from './hooks/nodeCode'
-import { parseTime, isValue } from '@/utils/validate'
-import * as _ from 'lodash'
-const {
-  optionLeft,
-  airCompaneBaggage,
-  airlineAbnormalBaggage,
-  getPublicData,
-  formatGoods,
-  formatWeight,
-} = usePublic()
-const timePickerName = ref(0)
-const limitScrollNum = ref(13)
-const scrollContent = ref<HTMLElement>()
-const flag = ref(false)
-const loading1 = ref(false)
-const loading2 = ref(false)
-const loading3 = ref(false)
-const loading4 = ref(false)
-const loading5 = ref(false)
-const loading6 = ref(false)
-const loading7 = ref(false)
-const loading8 = ref(false)
-const hourlyPeakObj = ref<any>({})
-const waybillTrendObj = ref<any>({})
-const nodePeakObj = ref<any>({})
-const airlineTrafficObj = ref<any>({})
-const airlineObj = ref<any>({})
-const pickingObj = ref<any>({})
-const flightNums = ref(0)
-const stockNums = ref(0)
-const specialGoods = ref<string>('分类')
-const specialGoodsDatas = ref<any>([])
-const specialGoodsAll = ref<any>([])
-const weightNums = ref<number | string>(0)
-const form = ref({
-  startDate: parseTime(Date.now() - 24 * 60 * 60 * 1000 * 7, '{y}-{m}-{d}'),
-  endDate: parseTime(Date.now(), '{y}-{m}-{d}'),
-})
-const dateNow = ref({
-  time: parseTime(Date.now(), '{y}-{m}-{d}'),
-})
-const listData = ref<any>([])
-const disabledStartDate = (time: Date) => {
-  const timer: any = form.value.endDate
-  const data = new Date(timer)
-  return time.getTime() > data.getTime()
-}
-const disabledEndDate = (time: Date) => {
-  const timer: any = form.value.startDate
-  let data = new Date(timer)
-  return data.getTime() > time.getTime()
-}
-const resetForm = () => {
-  flag.value = false
-}
-
-const submitForm = () => {
-  flag.value = false
-  switch (timePickerName.value) {
-    case showTimeMsg.HourlyPeak:
-      dateNow.value.time = form.value.startDate
-      hourlyPeakFunc()
-      break
-    case showTimeMsg.WaybillTrend:
-      waybillTrendFunc()
-      break
-    case showTimeMsg.NodePeak:
-      nodePeakFunc()
-      break
-    case showTimeMsg.AirlineTraffic:
-      airlineTrafficFunc()
-      break
-    case showTimeMsg.AirlineAbnormal:
-      airlineFunc()
-      break
-    case showTimeMsg.PickingStatistics:
-      pickingFuncs()
-      break
-    case showTimeMsg.SpecialClassification:
-      airlineFunc()
-      break
-    default:
-      break
-  }
-}
-
-const showDatePicker = (id?) => {
-  flag.value = true
-  timePickerName.value = id
-}
-
-const sortClass = sortData => {
-  const groupBy = (array, f) => {
-    let groups = {}
-    array.forEach(o => {
-      let group = JSON.stringify(f(o))
-      groups[group] = groups[group] || []
-      groups[group].push(o)
-    })
-    return Object.keys(groups).map(group => {
-      return groups[group]
-    })
-  }
-  const sorted = groupBy(sortData, item => {
-    return item.jobName
-  })
-  return sorted
-}
-
-const pubFunc = (listValues, target, type?) => {
-  const newObj = _.cloneDeep(target)
-  const [jobTimes, stockNums, weights] = [<any>[], <any>[], <any>[]]
-  listValues.forEach(item => {
-    jobTimes.push(item.jobTime)
-    stockNums.push(item.stockNum)
-    weights.push(item.weight)
-  })
-  newObj.xAxis.data = jobTimes
-  if (type) {
-    newObj.series[1].data = stockNums
-    newObj.series[0].data = weights
-  } else {
-    newObj.series[0].data = stockNums
-    newObj.series[1].data = weights
-  }
-  return newObj
-}
-
-const parseDate = (date: string) => {
-  const dates = date.split('-')
-  const newDate = dates.shift()
-  return dates.join('-')
-}
-
-// 特货分类统计-选取下拉数据
-const handleCommand = (command: string) => {
-  specialGoods.value = command
-  const newObj: any = _.cloneDeep(airlineAbnormalBaggage.option.baseOption)
-  const result = formatGoods(command, specialGoodsAll.value)
-  airlineObj.value = pubFunc(result, newObj)
-}
-
-//获取小时峰值分布
-const hourlyPeakFunc = async () => {
-  loading1.value = true
-  const listValues = (await getPublicData(DATACONTENT_ID.jscHourlyPeakId, [
-    { flightDate1: dateNow.value.time, flightDate2: form.value.endDate },
-  ])) as any
-  if (listValues && isValue(listValues)) {
-    hourlyPeakObj.value = pubFunc(listValues, optionLeft, true)
-  }
-  loading1.value = false
-}
-
-//运单趋势分析
-const waybillTrendFunc = async () => {
-  loading2.value = true
-  const listValues = (await getPublicData(DATACONTENT_ID.jscWaybillTrendId, [
-    { flightDate1: form.value.startDate, flightDate2: form.value.endDate },
-  ])) as any
-  if (listValues && isValue(listValues)) {
-    listValues.forEach(item => {
-      item.jobTime = parseDate(item['jobTime'])
-    })
-    waybillTrendObj.value = pubFunc(listValues, optionLeft, true)
-  }
-  loading2.value = false
-}
-
-//始发站/目的站统计分析
-const nodePeakFunc = async (fd1?: string, fd2?: string) => {
-  loading3.value = true
-  const listValues = (await getPublicData(DATACONTENT_ID.jscAirlineAbnormalId, [
-    {
-      fd1: fd1 ?? form.value.startDate,
-      fd2: fd2 ?? form.value.endDate,
-      fttp: '国内离港',
-    },
-  ])) as any
-  if (listValues && isValue(listValues)) {
-    const newObj = _.cloneDeep(airCompaneBaggage.option.baseOption)
-    listValues.forEach(item => {
-      item.jobTime = item['airport']
-    })
-    nodePeakObj.value = pubFunc(listValues, newObj, true)
-  }
-  loading3.value = false
-}
-
-//航班数&运单数
-const numbersFunc = async () => {
-  loading4.value = true
-  const listValues = (await getPublicData(DATACONTENT_ID.jscNumbersId, [
-    {
-      fd1: parseTime(Date.now(), '{y}-{m}-{d}'),
-      fd2: parseTime(Date.now(), '{y}-{m}-{d}'),
-    },
-  ])) as any
-  if (listValues && isValue(listValues)) {
-    const { flightNum, finishFlightNum, weight } = listValues[0]
-    flightNums.value = flightNum ?? 0
-    stockNums.value = finishFlightNum ?? 0
-    weightNums.value = weight ?? 0
-  }
-  loading4.value = false
-}
-
-//航司运量
-const airlineTrafficFunc = async (
-  flightDate1?: string,
-  flightDate2?: string
-) => {
-  loading6.value = true
-  const listValues = await getPublicData(DATACONTENT_ID.jscAirlineTrafficId, [
-    {
-      flightDate1: flightDate1 ?? form.value.startDate,
-      flightDate2: flightDate2 ?? form.value.endDate,
-    },
-  ])
-  if (listValues && isValue(listValues)) {
-    const newObj: any = _.cloneDeep(airCompaneBaggage.option.baseOption)
-    ;(newObj.dataZoom = [
-      {
-        id: 'dataZoomX',
-        type: 'slider',
-        xAxisIndex: [0],
-        filterMode: 'filter',
-        start: 0,
-        end: 20,
-      },
-    ]),
-      listValues.forEach(item => {
-        item.jobTime = item['IACACode']
-      })
-
-    airlineTrafficObj.value = pubFunc(listValues, newObj, true)
-  }
-  loading6.value = false
-}
-
-//航班表格
-const airlineAbnormalFunc = async () => {
-  loading5.value = true
-  const listValues = (await getPublicData(DATACONTENT_ID.jscFlightDynamicsId, [
-    {
-      fd1: parseTime(Date.now(), '{y}-{m}-{d}'),
-      fd2: parseTime(Date.now(), '{y}-{m}-{d}'),
-      fttp: '国内离港',
-    },
-  ])) as any
-  const domHeight = scrollContent.value?.clientHeight
-  if (domHeight && typeof domHeight == 'number') {
-    const cell = Math.ceil(domHeight / 40)
-    limitScrollNum.value = cell
-  }
-  if (listValues && isValue(listValues)) {
-    listData.value = listValues
-  }
-  loading5.value = false
-}
-
-//航班动态统计
-// const airlineFunc = async () => {
-//   loading7.value = true;
-//   const listValues = (await getPublicData(DATACONTENT_ID.jscAirlineId, [
-//     {
-//       fd1: form.value.startDate,
-//       fd2: form.value.endDate,
-//     },
-//   ])) as any;
-//   if (listValues && isValue(listValues)) {
-//     const res = findData(
-//       nodeCode.departure,
-//       listValues,
-//       "nodeCode",
-//       "flightNum"
-//     );
-//     const newObj: any = _.cloneDeep(airlineAbnormalBaggage.option.baseOption);
-//     (newObj.dataZoom = [
-//       {
-//         id: "dataZoomX",
-//         type: "slider",
-//         xAxisIndex: [0],
-//         filterMode: "filter",
-//         start: 0,
-//         end: 40,
-//       },
-//     ]),
-//       res.forEach((item) => {
-//         item.jobTime = item["name"] ?? item["nodeCode"];
-//         item.weight = item["flightNum"];
-//       });
-//     airlineObj.value = pubFunc(res, newObj);
-//   }
-//   loading7.value = false;
-// };
-
-//特货分类统计
-const airlineFunc = async () => {
-  loading7.value = true
-  const listValues = (await getPublicData(DATACONTENT_ID.jscGoodsId, [
-    {
-      fd1: form.value.startDate,
-      fd2: form.value.endDate,
-      fttp: '国内离港',
-    },
-  ])) as any
-  if (listValues && isValue(listValues)) {
-    const newObj: any = _.cloneDeep(airlineAbnormalBaggage.option.baseOption)
-    const newDatas = _.cloneDeep(listValues)
-    const nameDatas = _.unionBy(newDatas, 'specialTypeName')
-    // const names: any = [...nameDatas];
-    const names: any = [...nameDatas, { specialTypeName: '合计' }]
-    // specialGoods.value = names[0]["specialTypeName"];
-    specialGoods.value = '合计'
-    specialGoodsDatas.value = names
-    specialGoodsAll.value = listValues
-    const result = formatGoods(
-      // names[0]["specialTypeName"],
-      '合计',
-      specialGoodsAll.value
-    )
-    airlineObj.value = pubFunc(result, newObj)
-  }
-  loading7.value = false
-}
-
-//拉货统计
-const pickingFuncs = async () => {
-  loading8.value = true
-  const listValues = (await getPublicData(DATACONTENT_ID.jscGgPullId, [
-    {
-      fd1: form.value.startDate,
-      fd2: form.value.endDate,
-    },
-  ])) as any
-  if (listValues && isValue(listValues)) {
-    const newObj: any = _.cloneDeep(airlineAbnormalBaggage.option.baseOption)
-    listValues.forEach(item => {
-      item.jobTime = parseDate(item['flightDate'])
-      item.weight = item['flightNum']
-    })
-    pickingObj.value = pubFunc(listValues, newObj)
-  }
-  loading8.value = false
-}
-
-const today = parseTime(Date.now(), '{y}-{m}-{d}') as string
-onMounted(() => {
-  hourlyPeakFunc()
-  waybillTrendFunc()
-  nodePeakFunc(today, today)
-  numbersFunc()
-  airlineTrafficFunc(today, today)
-  airlineAbnormalFunc()
-  airlineFunc()
-  pickingFuncs()
-})
-</script>
-
-<style lang="scss" scoped>
-@import './css/index.scss';
-</style>

+ 0 - 731
src/views/dashboard/indexIn copy.vue

@@ -1,731 +0,0 @@
-<template>
-  <div class="dashboard">
-    <ComHead :tabs-index="3" />
-    <div class="dashboard-content">
-      <div class="dashboard-content-top flex">
-        <div class="dashboard-content-top-left">
-          <div class="dashboard-content-top-left-item">
-            <div class="dashboard-content-top-left-item-top">
-              <div class="dashboard-content-top-left-item-top-title">
-                小时峰值分析
-              </div>
-              <div
-                class="dashboard-content-top-left-item-top-time"
-                @click="showDatePicker(showTimeMsg.HourlyPeak)"
-              >
-                <el-icon color="#ffffff" size="18">
-                  <Calendar />
-                </el-icon>
-                <el-icon color="#ffffff">
-                  <CaretBottom />
-                </el-icon>
-              </div>
-            </div>
-            <div
-              v-loading="loading1"
-              element-loading-text="数据加载中..."
-              element-loading-svg-view-box="-10, -10, 50, 50"
-              element-loading-background="rgba(0,0,0, 0.3)"
-              class="dashboard-content-top-left-item-bottom"
-            >
-              <Echarts id="ww1" :option="hourlyPeakObj" />
-            </div>
-          </div>
-          <div class="dashboard-content-top-left-item">
-            <div class="dashboard-content-top-left-item-top">
-              <div class="dashboard-content-top-left-item-top-title">
-                日趋势分析
-              </div>
-              <div
-                class="dashboard-content-top-left-item-top-time"
-                @click="showDatePicker(showTimeMsg.WaybillTrend)"
-              >
-                <el-icon color="#ffffff" size="18">
-                  <Calendar />
-                </el-icon>
-                <el-icon color="#ffffff">
-                  <CaretBottom />
-                </el-icon>
-              </div>
-            </div>
-            <div
-              v-loading="loading2"
-              element-loading-text="数据加载中..."
-              element-loading-svg-view-box="-10, -10, 50, 50"
-              element-loading-background="rgba(0,0,0, 0.3)"
-              class="dashboard-content-top-left-item-bottom"
-            >
-              <Echarts id="ww12" :option="waybillTrendObj" />
-            </div>
-          </div>
-          <div class="dashboard-content-top-left-item">
-            <div class="dashboard-content-top-left-item-top">
-              <div class="dashboard-content-top-left-item-top-title">
-                始发站统计分析
-              </div>
-              <div
-                class="dashboard-content-bottom-left-top-time"
-                @click="showDatePicker(showTimeMsg.NodePeak)"
-              >
-                <el-icon color="#ffffff" size="18">
-                  <Calendar />
-                </el-icon>
-                <el-icon color="#ffffff">
-                  <CaretBottom />
-                </el-icon>
-              </div>
-            </div>
-            <div
-              v-loading="loading3"
-              element-loading-text="数据加载中..."
-              element-loading-svg-view-box="-10, -10, 50, 50"
-              element-loading-background="rgba(0,0,0, 0.3)"
-              class="dashboard-content-top-left-item-bottom"
-            >
-              <Echarts id="ww4" :option="nodePeakObj" />
-            </div>
-          </div>
-        </div>
-        <!-- 地图 -->
-        <div class="dashboard-content-top-center">
-          <div
-            v-loading="loading4"
-            element-loading-text="数据加载中..."
-            element-loading-svg-view-box="-10, -10, 50, 50"
-            element-loading-background="rgba(0,0,0, 0.3)"
-            class="dashboard-content-top-center-top"
-          >
-            <div class="dashboard-content-top-center-top-list">
-              <div class="dashboard-content-top-center-top-list-txt">
-                今日计划航班数(班)
-              </div>
-              <div class="dashboard-content-top-center-top-list-num">
-                {{ flightNums }}
-              </div>
-            </div>
-            <div class="dashboard-content-top-center-top-list">
-              <div class="dashboard-content-top-center-top-list-txt">
-                已完成航班数(班)
-              </div>
-              <div class="dashboard-content-top-center-top-list-num">
-                {{ stockNums }}
-              </div>
-            </div>
-            <div class="dashboard-content-top-center-top-list">
-              <div class="dashboard-content-top-center-top-list-txt">
-                已卸载总量(吨)
-              </div>
-              <div class="dashboard-content-top-center-top-list-num">
-                {{ formatWeight(weightNums) }}
-              </div>
-            </div>
-          </div>
-          <div
-            v-loading="loading5"
-            element-loading-text="数据加载中..."
-            element-loading-svg-view-box="-10, -10, 50, 50"
-            element-loading-background="rgba(0,0,0, 0.3)"
-            class="dashboard-content-top-center-bottom"
-          >
-            <div class="dashboard-content-top-center-bottom-title">
-              航班动态跟踪
-            </div>
-            <div class="dashboard-content-top-center-bottom-content">
-              <div class="dashboard-content-top-center-bottom-content-head">
-                <div
-                  class="dashboard-content-top-center-bottom-content-head-list"
-                >
-                  公司/航班号
-                </div>
-                <div
-                  class="dashboard-content-top-center-bottom-content-head-list"
-                >
-                  航班状态
-                </div>
-                <div
-                  class="dashboard-content-top-center-bottom-content-head-list"
-                >
-                  始发站/经停
-                </div>
-                <div
-                  class="dashboard-content-top-center-bottom-content-head-list"
-                >
-                  计划到达
-                </div>
-                <div
-                  class="dashboard-content-top-center-bottom-content-head-list"
-                >
-                  实际到达
-                </div>
-                <div
-                  class="dashboard-content-top-center-bottom-content-head-list"
-                >
-                  机型
-                </div>
-                <div
-                  class="dashboard-content-top-center-bottom-content-head-list"
-                >
-                  类型
-                </div>
-              </div>
-              <div
-                ref="scrollContent"
-                class="dashboard-content-top-center-bottom-content-bottom"
-              >
-                <vue3-seamless-scroll
-                  :list="listData"
-                  :limitScrollNum="limitScrollNum"
-                  :hover-stop="true"
-                  :hover="true"
-                  :step="0.3"
-                >
-                  <div
-                    v-for="(item, index) in listData"
-                    :key="index"
-                    class="dashboard-content-top-center-bottom-content-bottom-list"
-                  >
-                    <div
-                      class="dashboard-content-top-center-bottom-content-bottom-list-txt"
-                    >
-                      {{ item.flightNo }}
-                    </div>
-                    <div
-                      class="dashboard-content-top-center-bottom-content-bottom-list-txt"
-                    >
-                      {{ item.flightState }}
-                    </div>
-                    <div
-                      class="dashboard-content-top-center-bottom-content-bottom-list-txt"
-                    >
-                      {{ item.airport }}
-                    </div>
-                    <div
-                      class="dashboard-content-top-center-bottom-content-bottom-list-txt"
-                    >
-                      {{ item.planTime }}
-                    </div>
-                    <!-- <div class="dashboard-content-top-center-bottom-content-bottom-list-txt">
-                      {{ item.preTime || '--' }}
-                    </div> -->
-                    <div
-                      class="dashboard-content-top-center-bottom-content-bottom-list-txt"
-                    >
-                      {{ item.acTime || '--' }}
-                    </div>
-                    <div
-                      class="dashboard-content-top-center-bottom-content-bottom-list-txt"
-                    >
-                      {{ item.planeType }}
-                    </div>
-                    <div
-                      class="dashboard-content-top-center-bottom-content-bottom-list-txt"
-                    >
-                      {{ item.KHT }}
-                    </div>
-                  </div>
-                </vue3-seamless-scroll>
-              </div>
-            </div>
-          </div>
-        </div>
-        <div class="dashboard-content-top-right">
-          <div class="dashboard-content-top-right-item">
-            <div class="dashboard-content-top-right-item-top">
-              <div class="dashboard-content-top-right-item-top-title">
-                航司统计分析
-              </div>
-              <div
-                class="dashboard-content-top-right-item-top-time"
-                @click="showDatePicker(showTimeMsg.AirlineTraffic)"
-              >
-                <el-icon color="#ffffff" size="18">
-                  <Calendar />
-                </el-icon>
-                <el-icon color="#ffffff">
-                  <CaretBottom />
-                </el-icon>
-              </div>
-            </div>
-            <div
-              v-loading="loading6"
-              element-loading-text="数据加载中..."
-              element-loading-svg-view-box="-10, -10, 50, 50"
-              element-loading-background="rgba(0,0,0, 0.3)"
-              class="dashboard-content-top-right-item-bottom"
-            >
-              <Echarts id="a1" :option="airlineTrafficObj" />
-            </div>
-          </div>
-          <div class="dashboard-content-top-right-item">
-            <div class="dashboard-content-top-right-item-top">
-              <div class="dashboard-content-top-right-item-top-title">
-                特货分类统计
-              </div>
-              <div
-                class="dashboard-content-top-right-item-top-time"
-                @click="showDatePicker(showTimeMsg.SpecialClassification)"
-              >
-                <el-icon color="#ffffff" size="18">
-                  <Calendar />
-                </el-icon>
-                <el-icon color="#ffffff">
-                  <CaretBottom />
-                </el-icon>
-              </div>
-              <div class="dashboard-content-top-right-item-top-time">
-                <el-dropdown trigger="click" @command="handleCommand">
-                  <span class="icons">
-                    <span class="icons-txt">{{ specialGoods }}</span>
-                    <el-icon color="#ffffff">
-                      <CaretBottom />
-                    </el-icon>
-                  </span>
-                  <template #dropdown>
-                    <el-dropdown-menu>
-                      <el-dropdown-item
-                        v-for="item in specialGoodsDatas"
-                        :key="item.specialTypeName"
-                        :command="item.specialTypeName"
-                        >{{ item.specialTypeName }}</el-dropdown-item
-                      >
-                    </el-dropdown-menu>
-                  </template>
-                </el-dropdown>
-              </div>
-            </div>
-            <div
-              v-loading="loading7"
-              element-loading-text="数据加载中..."
-              element-loading-svg-view-box="-10, -10, 50, 50"
-              element-loading-background="rgba(0,0,0, 0.3)"
-              class="dashboard-content-top-left-item-bottom"
-            >
-              <Echarts id="ww44" :option="airlineObj" />
-            </div>
-          </div>
-          <div class="dashboard-content-top-right-item">
-            <div class="dashboard-content-top-right-item-top">
-              <div class="dashboard-content-top-right-item-top-title">
-                货机货量统计
-              </div>
-              <div
-                class="dashboard-content-top-right-item-top-time"
-                @click="showDatePicker(showTimeMsg.TallyWeight)"
-              >
-                <el-icon color="#ffffff" size="18">
-                  <Calendar />
-                </el-icon>
-                <el-icon color="#ffffff">
-                  <CaretBottom />
-                </el-icon>
-              </div>
-              <div class="dashboard-content-top-right-item-top-time">
-                <el-dropdown trigger="click" @command="handleWeightType">
-                  <span class="icons">
-                    <span class="icons-txt">{{ weightType }}</span>
-                    <el-icon color="#ffffff">
-                      <CaretBottom />
-                    </el-icon>
-                  </span>
-                  <template #dropdown>
-                    <el-dropdown-menu>
-                      <el-dropdown-item command="进港">进港</el-dropdown-item>
-                      <el-dropdown-item command="出港">出港</el-dropdown-item>
-                    </el-dropdown-menu>
-                  </template>
-                </el-dropdown>
-              </div>
-            </div>
-            <div
-              v-loading="loading8"
-              element-loading-text="数据加载中..."
-              element-loading-svg-view-box="-10, -10, 50, 50"
-              element-loading-background="rgba(0,0,0, 0.3)"
-              class="dashboard-content-top-left-item-bottom"
-            >
-              <Echarts id="ww45" :option="tallyObj" />
-            </div>
-          </div>
-        </div>
-      </div>
-    </div>
-    <Dialog
-      :flag="flag"
-      msg-title="日期选择"
-      @resetForm="resetForm"
-      @submitForm="submitForm"
-    >
-      <el-form :model="form" label-width="120px">
-        <el-form-item label="开始日期">
-          <el-date-picker
-            :disabled-date="disabledStartDate"
-            v-model="form.startDate"
-            type="date"
-            placeholder="请选择开始日期"
-            size="default"
-            format="YYYY-MM-DD"
-            value-format="YYYY-MM-DD"
-          />
-        </el-form-item>
-        <el-form-item label="结束日期">
-          <el-date-picker
-            :disabled-date="disabledEndDate"
-            v-model="form.endDate"
-            type="date"
-            placeholder="请选择结束日期"
-            size="default"
-            format="YYYY-MM-DD"
-            value-format="YYYY-MM-DD"
-          />
-        </el-form-item>
-      </el-form>
-    </Dialog>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { ref, onMounted } from 'vue'
-import { Vue3SeamlessScroll } from 'vue3-seamless-scroll'
-import Echarts from '@/components/Echarts/commonChartsBar.vue'
-import ComHead from './components/comHead.vue'
-import { Calendar, CaretBottom } from '@element-plus/icons-vue'
-import Dialog from '@/components/dialog/index.vue'
-import { usePublic, showTimeMsg } from './hooks/usePublic'
-import nodeCode from './hooks/nodeCode'
-import { parseTime, isValue } from '@/utils/validate'
-import * as _ from 'lodash'
-const {
-  optionLeft,
-  airCompaneBaggage,
-  airlineAbnormalBaggage,
-  airStutas,
-  getPublicData,
-  formatGoods,
-  formatWeight,
-} = usePublic()
-const timePickerName = ref(0)
-const limitScrollNum = ref(13)
-const scrollContent = ref<HTMLElement>()
-const flag = ref(false)
-const loading1 = ref(false)
-const loading2 = ref(false)
-const loading3 = ref(false)
-const loading4 = ref(false)
-const loading5 = ref(false)
-const loading6 = ref(false)
-const loading7 = ref(false)
-const loading8 = ref(false)
-const hourlyPeakObj = ref<any>({})
-const waybillTrendObj = ref<any>({})
-const nodePeakObj = ref<any>({})
-const airlineTrafficObj = ref<any>({})
-const airlineObj = ref<any>({})
-const tallyObj = ref<any>({})
-const flightNums = ref(0)
-const stockNums = ref(0)
-const weightNums = ref<number | string>(0)
-const specialGoods = ref<string>('分类')
-const specialGoodsDatas = ref<any>([])
-const specialGoodsAll = ref<any>([])
-const weightType = ref('进港')
-const form = ref({
-  startDate: parseTime(Date.now() - 24 * 60 * 60 * 1000 * 7, '{y}-{m}-{d}'),
-  endDate: parseTime(Date.now(), '{y}-{m}-{d}'),
-})
-const dateNow = ref({
-  time: parseTime(Date.now(), '{y}-{m}-{d}'),
-})
-const listData = ref<any>([])
-const disabledStartDate = (time: Date) => {
-  const timer: any = form.value.endDate
-  const data = new Date(timer)
-  return time.getTime() > data.getTime()
-}
-const disabledEndDate = (time: Date) => {
-  const timer: any = form.value.startDate
-  let data = new Date(timer)
-  return data.getTime() > time.getTime()
-}
-const resetForm = () => {
-  flag.value = false
-}
-
-const submitForm = () => {
-  flag.value = false
-  switch (timePickerName.value) {
-    case showTimeMsg.HourlyPeak:
-      dateNow.value.time = form.value.startDate
-      hourlyPeakFunc()
-      break
-    case showTimeMsg.WaybillTrend:
-      waybillTrendFunc()
-      break
-    case showTimeMsg.NodePeak:
-      nodePeakFunc()
-      break
-    case showTimeMsg.AirlineTraffic:
-      airlineTrafficFunc()
-      break
-    case showTimeMsg.AirlineAbnormal:
-      airlineFunc()
-      break
-    case showTimeMsg.TallyWeight:
-      tallyWeightFunc()
-      break
-    case showTimeMsg.SpecialClassification:
-      airlineFunc()
-      break
-    default:
-      break
-  }
-}
-
-const showDatePicker = (id?) => {
-  flag.value = true
-  timePickerName.value = id
-}
-
-const sortClass = sortData => {
-  const groupBy = (array, f) => {
-    let groups = {}
-    array.forEach(o => {
-      let group = JSON.stringify(f(o))
-      groups[group] = groups[group] || []
-      groups[group].push(o)
-    })
-    return Object.keys(groups).map(group => {
-      return groups[group]
-    })
-  }
-  const sorted = groupBy(sortData, item => {
-    return item.jobName
-  })
-  return sorted
-}
-
-const pubFunc = (listValues, target, type?) => {
-  const newObj = _.cloneDeep(target)
-  const [jobTimes, stockNums, weights] = [<any>[], <any>[], <any>[]]
-  listValues.forEach(item => {
-    jobTimes.push(item.jobTime)
-    stockNums.push(Number(item.stockNum))
-    weights.push(Number(item.weight))
-  })
-  newObj.xAxis.data = jobTimes
-  if (type) {
-    newObj.series[1].data = stockNums
-    newObj.series[0].data = weights
-  } else {
-    newObj.series[0].data = stockNums
-    newObj.series[1].data = weights
-  }
-  return newObj
-}
-
-const parseDate = (date: string) => {
-  const dates = date.split('-')
-  const newDate = dates.shift()
-  return dates.join('-')
-}
-
-// 特货分类统计-选取下拉数据
-const handleCommand = (command: string) => {
-  specialGoods.value = command
-  const newObj: any = _.cloneDeep(airlineAbnormalBaggage.option.baseOption)
-  const result = formatGoods(command, specialGoodsAll.value)
-  airlineObj.value = pubFunc(result, newObj)
-}
-
-//获取小时峰值分布
-const hourlyPeakFunc = async () => {
-  loading1.value = true
-  const listValues = (await getPublicData(DATACONTENT_ID.jscJgHourlyPeakId, [
-    { flightDate1: dateNow.value.time, flightDate2: form.value.endDate },
-  ])) as any
-  if (listValues && isValue(listValues)) {
-    hourlyPeakObj.value = pubFunc(listValues, optionLeft, true)
-  }
-  loading1.value = false
-}
-
-//运单趋势分析
-const waybillTrendFunc = async () => {
-  loading2.value = true
-  const listValues = (await getPublicData(DATACONTENT_ID.jscJgWaybillTrendId, [
-    { flightDate1: form.value.startDate, flightDate2: form.value.endDate },
-  ])) as any
-  if (listValues && isValue(listValues)) {
-    listValues.forEach(item => {
-      item.jobTime = parseDate(item['jobTime'])
-    })
-    waybillTrendObj.value = pubFunc(listValues, optionLeft, true)
-  }
-  loading2.value = false
-}
-
-//始发站/目的站统计分析
-const nodePeakFunc = async (fd1?: string, fd2?: string) => {
-  loading3.value = true
-  const listValues = (await getPublicData(DATACONTENT_ID.jscAirlineAbnormalId, [
-    {
-      fd1: fd1 ?? form.value.startDate,
-      fd2: fd2 ?? form.value.endDate,
-      fttp: '国际进港',
-    },
-  ])) as any
-  if (listValues && isValue(listValues)) {
-    const newObj = _.cloneDeep(airCompaneBaggage.option.baseOption)
-    listValues.forEach(item => {
-      item.jobTime = item['airport']
-    })
-    nodePeakObj.value = pubFunc(listValues, newObj, true)
-  }
-  loading3.value = false
-}
-
-//航班数&运单数
-const numbersFunc = async () => {
-  loading4.value = true
-  const listValues = (await getPublicData(DATACONTENT_ID.jscJgNumbersId, [
-    {
-      fd1: parseTime(Date.now(), '{y}-{m}-{d}'),
-      fd2: parseTime(Date.now(), '{y}-{m}-{d}'),
-    },
-  ])) as any
-  if (listValues && isValue(listValues)) {
-    const { flightNum, finishFlightNum, weight } = listValues[0]
-    flightNums.value = flightNum ?? 0
-    stockNums.value = finishFlightNum ?? 0
-    weightNums.value = weight ?? 0
-  }
-  loading4.value = false
-}
-
-//航司运量
-const airlineTrafficFunc = async (
-  flightDate1?: string,
-  flightDate2?: string
-) => {
-  loading6.value = true
-  const listValues = await getPublicData(DATACONTENT_ID.jscJgAirlineTrafficId, [
-    {
-      flightDate1: flightDate1 ?? form.value.startDate,
-      flightDate2: flightDate2 ?? form.value.endDate,
-    },
-  ])
-  if (listValues && isValue(listValues)) {
-    const newObj: any = _.cloneDeep(airCompaneBaggage.option.baseOption)
-    ;(newObj.dataZoom = [
-      {
-        id: 'dataZoomX',
-        type: 'slider',
-        xAxisIndex: [0],
-        filterMode: 'filter',
-        start: 0,
-        end: 20,
-      },
-    ]),
-      listValues.forEach(item => {
-        item.jobTime = item['IACACode']
-      })
-
-    airlineTrafficObj.value = pubFunc(listValues, newObj, true)
-  }
-  loading6.value = false
-}
-
-//航班表格
-const airlineAbnormalFunc = async () => {
-  loading5.value = true
-  const listValues = (await getPublicData(DATACONTENT_ID.jscFlightDynamicsId, [
-    {
-      fd1: parseTime(Date.now(), '{y}-{m}-{d}'),
-      fd2: parseTime(Date.now(), '{y}-{m}-{d}'),
-      fttp: '国际进港',
-    },
-  ])) as any
-  const domHeight = scrollContent.value?.clientHeight
-  if (domHeight && typeof domHeight == 'number') {
-    const cell = Math.ceil(domHeight / 40)
-    limitScrollNum.value = cell
-  }
-  if (listValues && isValue(listValues)) {
-    listData.value = listValues
-  }
-  loading5.value = false
-}
-
-//航班动态统计
-const airlineFunc = async () => {
-  loading7.value = true
-  const listValues = (await getPublicData(DATACONTENT_ID.jscGoodsId, [
-    {
-      fd1: form.value.startDate,
-      fd2: form.value.endDate,
-      fttp: '国际进港',
-    },
-  ])) as any
-  if (listValues && isValue(listValues)) {
-    const newObj: any = _.cloneDeep(airlineAbnormalBaggage.option.baseOption)
-    const newDatas = _.cloneDeep(listValues)
-    const nameDatas = _.unionBy(newDatas, 'specialTypeName')
-    // const names: any = [...nameDatas];
-    const names: any = [...nameDatas, { specialTypeName: '合计' }]
-    // specialGoods.value = names[0]["specialTypeName"];
-    specialGoods.value = '合计'
-    specialGoodsDatas.value = names
-    specialGoodsAll.value = listValues
-    const result = formatGoods(
-      // names[0]["specialTypeName"],
-      '合计',
-      specialGoodsAll.value
-    )
-    airlineObj.value = pubFunc(result, newObj)
-  }
-  loading7.value = false
-}
-
-//理货重量
-const tallyWeightFunc = async () => {
-  loading8.value = true
-  const listValues = (await getPublicData(DATACONTENT_ID.jscTallyId, [
-    {
-      fd1: form.value.startDate,
-      fd2: form.value.endDate,
-      fttp: `国际${weightType.value}`,
-    },
-  ])) as any
-  if (listValues && isValue(listValues)) {
-    const newObj: any = _.cloneDeep(airStutas.option.baseOption)
-    const [datas, weights] = [<any>[], <any>[]]
-    listValues.forEach(item => {
-      datas.push(item.flightDate)
-      weights.push(item.weight)
-    })
-    newObj.xAxis.data = datas
-    newObj.series[0].data = weights
-    tallyObj.value = newObj
-  }
-  loading8.value = false
-}
-const handleWeightType = (type: string) => {
-  weightType.value = type
-  tallyWeightFunc()
-}
-
-const today = parseTime(Date.now(), '{y}-{m}-{d}') as string
-onMounted(() => {
-  hourlyPeakFunc()
-  waybillTrendFunc()
-  nodePeakFunc(today, today)
-  numbersFunc()
-  airlineTrafficFunc(today, today)
-  airlineAbnormalFunc()
-  airlineFunc()
-  tallyWeightFunc()
-})
-</script>
-
-<style lang="scss" scoped>
-@import './css/index.scss';
-</style>

+ 0 - 709
src/views/dashboard/indexOut copy.vue

@@ -1,709 +0,0 @@
-<template>
-  <div class="dashboard">
-    <ComHead :tabs-index="2" />
-    <div class="dashboard-content">
-      <div class="dashboard-content-top flex">
-        <div class="dashboard-content-top-left">
-          <div class="dashboard-content-top-left-item">
-            <div class="dashboard-content-top-left-item-top">
-              <div class="dashboard-content-top-left-item-top-title">
-                小时峰值分析
-              </div>
-              <div
-                class="dashboard-content-top-left-item-top-time"
-                @click="showDatePicker(showTimeMsg.HourlyPeak)"
-              >
-                <el-icon color="#ffffff" size="18">
-                  <Calendar />
-                </el-icon>
-                <el-icon color="#ffffff">
-                  <CaretBottom />
-                </el-icon>
-              </div>
-            </div>
-            <div
-              v-loading="loading1"
-              element-loading-text="数据加载中..."
-              element-loading-svg-view-box="-10, -10, 50, 50"
-              element-loading-background="rgba(0,0,0, 0.3)"
-              class="dashboard-content-top-left-item-bottom"
-            >
-              <Echarts id="ww1" :option="hourlyPeakObj" />
-            </div>
-          </div>
-          <div class="dashboard-content-top-left-item">
-            <div class="dashboard-content-top-left-item-top">
-              <div class="dashboard-content-top-left-item-top-title">
-                日趋势分析
-              </div>
-              <div
-                class="dashboard-content-top-left-item-top-time"
-                @click="showDatePicker(showTimeMsg.WaybillTrend)"
-              >
-                <el-icon color="#ffffff" size="18">
-                  <Calendar />
-                </el-icon>
-                <el-icon color="#ffffff">
-                  <CaretBottom />
-                </el-icon>
-              </div>
-            </div>
-            <div
-              v-loading="loading2"
-              element-loading-text="数据加载中..."
-              element-loading-svg-view-box="-10, -10, 50, 50"
-              element-loading-background="rgba(0,0,0, 0.3)"
-              class="dashboard-content-top-left-item-bottom"
-            >
-              <Echarts id="ww12" :option="waybillTrendObj" />
-            </div>
-          </div>
-          <div class="dashboard-content-top-left-item">
-            <div class="dashboard-content-top-left-item-top">
-              <div class="dashboard-content-top-left-item-top-title">
-                目的站统计分析
-              </div>
-              <div
-                class="dashboard-content-bottom-left-top-time"
-                @click="showDatePicker(showTimeMsg.NodePeak)"
-              >
-                <el-icon color="#ffffff" size="18">
-                  <Calendar />
-                </el-icon>
-                <el-icon color="#ffffff">
-                  <CaretBottom />
-                </el-icon>
-              </div>
-            </div>
-            <div
-              v-loading="loading3"
-              element-loading-text="数据加载中..."
-              element-loading-svg-view-box="-10, -10, 50, 50"
-              element-loading-background="rgba(0,0,0, 0.3)"
-              class="dashboard-content-top-left-item-bottom"
-            >
-              <Echarts id="ww4" :option="nodePeakObj" />
-            </div>
-          </div>
-        </div>
-        <!-- 地图 -->
-        <div class="dashboard-content-top-center">
-          <div
-            v-loading="loading4"
-            element-loading-text="数据加载中..."
-            element-loading-svg-view-box="-10, -10, 50, 50"
-            element-loading-background="rgba(0,0,0, 0.3)"
-            class="dashboard-content-top-center-top"
-          >
-            <div class="dashboard-content-top-center-top-list">
-              <div class="dashboard-content-top-center-top-list-txt">
-                今日计划航班数(班)
-              </div>
-              <div class="dashboard-content-top-center-top-list-num">
-                {{ flightNums }}
-              </div>
-            </div>
-            <div class="dashboard-content-top-center-top-list">
-              <div class="dashboard-content-top-center-top-list-txt">
-                已完成航班数(班)
-              </div>
-              <div class="dashboard-content-top-center-top-list-num">
-                {{ stockNums }}
-              </div>
-            </div>
-            <div class="dashboard-content-top-center-top-list">
-              <div class="dashboard-content-top-center-top-list-txt">
-                已装载总量(吨)
-              </div>
-              <div class="dashboard-content-top-center-top-list-num">
-                {{ formatWeight(weightNums) }}
-              </div>
-            </div>
-          </div>
-          <div
-            v-loading="loading5"
-            element-loading-text="数据加载中..."
-            element-loading-svg-view-box="-10, -10, 50, 50"
-            element-loading-background="rgba(0,0,0, 0.3)"
-            class="dashboard-content-top-center-bottom"
-          >
-            <div class="dashboard-content-top-center-bottom-title">
-              航班动态跟踪
-            </div>
-            <div class="dashboard-content-top-center-bottom-content">
-              <div class="dashboard-content-top-center-bottom-content-head">
-                <div
-                  class="dashboard-content-top-center-bottom-content-head-list"
-                >
-                  公司/航班号
-                </div>
-                <div
-                  class="dashboard-content-top-center-bottom-content-head-list"
-                >
-                  航班状态
-                </div>
-                <div
-                  class="dashboard-content-top-center-bottom-content-head-list"
-                >
-                  经停/到达站
-                </div>
-                <div
-                  class="dashboard-content-top-center-bottom-content-head-list"
-                >
-                  计划起飞
-                </div>
-                <div
-                  class="dashboard-content-top-center-bottom-content-head-list"
-                >
-                  实际起飞
-                </div>
-                <div
-                  class="dashboard-content-top-center-bottom-content-head-list"
-                >
-                  机型
-                </div>
-                <div
-                  class="dashboard-content-top-center-bottom-content-head-list"
-                >
-                  类型
-                </div>
-              </div>
-              <div
-                ref="scrollContent"
-                class="dashboard-content-top-center-bottom-content-bottom"
-              >
-                <vue3-seamless-scroll
-                  :list="listData"
-                  :limitScrollNum="limitScrollNum"
-                  :hover-stop="true"
-                  :hover="true"
-                  :step="0.3"
-                >
-                  <div
-                    v-for="(item, index) in listData"
-                    :key="index"
-                    class="dashboard-content-top-center-bottom-content-bottom-list"
-                  >
-                    <div
-                      class="dashboard-content-top-center-bottom-content-bottom-list-txt"
-                    >
-                      {{ item.flightNo }}
-                    </div>
-                    <div
-                      class="dashboard-content-top-center-bottom-content-bottom-list-txt"
-                    >
-                      {{ item.flightState }}
-                    </div>
-                    <div
-                      class="dashboard-content-top-center-bottom-content-bottom-list-txt"
-                    >
-                      {{ item.airport }}
-                    </div>
-                    <div
-                      class="dashboard-content-top-center-bottom-content-bottom-list-txt"
-                    >
-                      {{ item.planTime }}
-                    </div>
-                    <!-- <div class="dashboard-content-top-center-bottom-content-bottom-list-txt">
-                      {{ item.preTime || '--' }}
-                    </div> -->
-                    <div
-                      class="dashboard-content-top-center-bottom-content-bottom-list-txt"
-                    >
-                      {{ item.acTime || '--' }}
-                    </div>
-                    <div
-                      class="dashboard-content-top-center-bottom-content-bottom-list-txt"
-                    >
-                      {{ item.planeType }}
-                    </div>
-                    <div
-                      class="dashboard-content-top-center-bottom-content-bottom-list-txt"
-                    >
-                      {{ item.KHT }}
-                    </div>
-                  </div>
-                </vue3-seamless-scroll>
-              </div>
-            </div>
-          </div>
-        </div>
-        <div class="dashboard-content-top-right">
-          <div class="dashboard-content-top-right-item">
-            <div class="dashboard-content-top-right-item-top">
-              <div class="dashboard-content-top-right-item-top-title">
-                航司统计分析
-              </div>
-              <div
-                class="dashboard-content-top-right-item-top-time"
-                @click="showDatePicker(showTimeMsg.AirlineTraffic)"
-              >
-                <el-icon color="#ffffff" size="18">
-                  <Calendar />
-                </el-icon>
-                <el-icon color="#ffffff">
-                  <CaretBottom />
-                </el-icon>
-              </div>
-            </div>
-            <div
-              v-loading="loading6"
-              element-loading-text="数据加载中..."
-              element-loading-svg-view-box="-10, -10, 50, 50"
-              element-loading-background="rgba(0,0,0, 0.3)"
-              class="dashboard-content-top-right-item-bottom"
-            >
-              <Echarts id="a1" :option="airlineTrafficObj" />
-            </div>
-          </div>
-          <div class="dashboard-content-top-right-item">
-            <div class="dashboard-content-top-right-item-top">
-              <div class="dashboard-content-top-right-item-top-title">
-                特货分类统计
-              </div>
-              <div
-                class="dashboard-content-top-right-item-top-time"
-                @click="showDatePicker(showTimeMsg.SpecialClassification)"
-              >
-                <el-icon color="#ffffff" size="18">
-                  <Calendar />
-                </el-icon>
-                <el-icon color="#ffffff">
-                  <CaretBottom />
-                </el-icon>
-              </div>
-              <div class="dashboard-content-top-right-item-top-time">
-                <el-dropdown
-                  :disabled="!specialGoodsDatas.length"
-                  trigger="click"
-                  @command="handleCommand"
-                >
-                  <span class="icons">
-                    <span class="icons-txt">{{ specialGoods }}</span>
-                    <el-icon color="#ffffff">
-                      <CaretBottom />
-                    </el-icon>
-                  </span>
-                  <template #dropdown>
-                    <el-dropdown-menu>
-                      <el-dropdown-item
-                        v-for="item in specialGoodsDatas"
-                        :key="item.specialTypeName"
-                        :command="item.specialTypeName"
-                        >{{ item.specialTypeName }}</el-dropdown-item
-                      >
-                    </el-dropdown-menu>
-                  </template>
-                </el-dropdown>
-              </div>
-            </div>
-            <div
-              v-loading="loading7"
-              element-loading-text="数据加载中..."
-              element-loading-svg-view-box="-10, -10, 50, 50"
-              element-loading-background="rgba(0,0,0, 0.3)"
-              class="dashboard-content-top-left-item-bottom"
-            >
-              <Echarts id="ww44" :option="airlineObj" />
-            </div>
-          </div>
-          <div class="dashboard-content-top-right-item">
-            <div class="dashboard-content-top-right-item-top">
-              <div class="dashboard-content-top-right-item-top-title">
-                拉货统计分析
-              </div>
-              <div
-                class="dashboard-content-top-right-item-top-time"
-                @click="showDatePicker(showTimeMsg.PickingStatistics)"
-              >
-                <el-icon color="#ffffff" size="18">
-                  <Calendar />
-                </el-icon>
-                <el-icon color="#ffffff">
-                  <CaretBottom />
-                </el-icon>
-              </div>
-            </div>
-            <div
-              v-loading="loading8"
-              element-loading-text="数据加载中..."
-              element-loading-svg-view-box="-10, -10, 50, 50"
-              element-loading-background="rgba(0,0,0, 0.3)"
-              class="dashboard-content-top-left-item-bottom"
-            >
-              <Echarts id="ww45" :option="pickingObj" />
-            </div>
-          </div>
-        </div>
-      </div>
-    </div>
-    <Dialog
-      :flag="flag"
-      msg-title="日期选择"
-      @resetForm="resetForm"
-      @submitForm="submitForm"
-    >
-      <el-form :model="form" label-width="120px">
-        <el-form-item label="开始日期">
-          <el-date-picker
-            :disabled-date="disabledStartDate"
-            v-model="form.startDate"
-            type="date"
-            placeholder="请选择开始日期"
-            size="default"
-            format="YYYY-MM-DD"
-            value-format="YYYY-MM-DD"
-          />
-        </el-form-item>
-        <el-form-item label="结束日期">
-          <el-date-picker
-            :disabled-date="disabledEndDate"
-            v-model="form.endDate"
-            type="date"
-            placeholder="请选择结束日期"
-            size="default"
-            format="YYYY-MM-DD"
-            value-format="YYYY-MM-DD"
-          />
-        </el-form-item>
-      </el-form>
-    </Dialog>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { ref, onMounted } from 'vue'
-import { Vue3SeamlessScroll } from 'vue3-seamless-scroll'
-import Echarts from '@/components/Echarts/commonChartsBar.vue'
-import ComHead from './components/comHead.vue'
-import { Calendar, CaretBottom } from '@element-plus/icons-vue'
-import Dialog from '@/components/dialog/index.vue'
-import { usePublic, showTimeMsg } from './hooks/usePublic'
-import nodeCode from './hooks/nodeCode'
-import { parseTime, isValue } from '@/utils/validate'
-import * as _ from 'lodash'
-const {
-  optionLeft,
-  airCompaneBaggage,
-  airlineAbnormalBaggage,
-  getPublicData,
-  formatGoods,
-  formatWeight,
-} = usePublic()
-const timePickerName = ref(0)
-const limitScrollNum = ref(13)
-const scrollContent = ref<HTMLElement>()
-const flag = ref(false)
-const loading1 = ref(false)
-const loading2 = ref(false)
-const loading3 = ref(false)
-const loading4 = ref(false)
-const loading5 = ref(false)
-const loading6 = ref(false)
-const loading7 = ref(false)
-const loading8 = ref(false)
-const hourlyPeakObj = ref<any>({})
-const waybillTrendObj = ref<any>({})
-const nodePeakObj = ref<any>({})
-const airlineTrafficObj = ref<any>({})
-const airlineObj = ref<any>({})
-const pickingObj = ref<any>({})
-const flightNums = ref(0)
-const stockNums = ref(0)
-const specialGoods = ref<string>('分类')
-const specialGoodsDatas = ref<any>([])
-const specialGoodsAll = ref<any>([])
-const weightNums = ref<number | string>(0)
-const form = ref({
-  startDate: parseTime(Date.now() - 24 * 60 * 60 * 1000 * 7, '{y}-{m}-{d}'),
-  endDate: parseTime(Date.now(), '{y}-{m}-{d}'),
-})
-const dateNow = ref({
-  time: parseTime(Date.now(), '{y}-{m}-{d}'),
-})
-const listData = ref<any>([])
-const disabledStartDate = (time: Date) => {
-  const timer: any = form.value.endDate
-  const data = new Date(timer)
-  return time.getTime() > data.getTime()
-}
-const disabledEndDate = (time: Date) => {
-  const timer: any = form.value.startDate
-  let data = new Date(timer)
-  return data.getTime() > time.getTime()
-}
-const resetForm = () => {
-  flag.value = false
-}
-
-const submitForm = () => {
-  flag.value = false
-  switch (timePickerName.value) {
-    case showTimeMsg.HourlyPeak:
-      dateNow.value.time = form.value.startDate
-      hourlyPeakFunc()
-      break
-    case showTimeMsg.WaybillTrend:
-      waybillTrendFunc()
-      break
-    case showTimeMsg.NodePeak:
-      nodePeakFunc()
-      break
-    case showTimeMsg.AirlineTraffic:
-      airlineTrafficFunc()
-      break
-    case showTimeMsg.AirlineAbnormal:
-      airlineFunc()
-      break
-    case showTimeMsg.PickingStatistics:
-      pickingFuncs()
-      break
-    case showTimeMsg.SpecialClassification:
-      airlineFunc()
-      break
-    default:
-      break
-  }
-}
-
-const showDatePicker = (id?) => {
-  flag.value = true
-  timePickerName.value = id
-}
-
-const sortClass = sortData => {
-  const groupBy = (array, f) => {
-    let groups = {}
-    array.forEach(o => {
-      let group = JSON.stringify(f(o))
-      groups[group] = groups[group] || []
-      groups[group].push(o)
-    })
-    return Object.keys(groups).map(group => {
-      return groups[group]
-    })
-  }
-  const sorted = groupBy(sortData, item => {
-    return item.jobName
-  })
-  return sorted
-}
-
-const pubFunc = (listValues, target, type?) => {
-  const newObj = _.cloneDeep(target)
-  const [jobTimes, stockNums, weights] = [<any>[], <any>[], <any>[]]
-  listValues.forEach(item => {
-    jobTimes.push(item.jobTime)
-    stockNums.push(item.stockNum)
-    weights.push(item.weight)
-  })
-  newObj.xAxis.data = jobTimes
-  if (type) {
-    newObj.series[1].data = stockNums
-    newObj.series[0].data = weights
-  } else {
-    newObj.series[0].data = stockNums
-    newObj.series[1].data = weights
-  }
-  return newObj
-}
-
-const parseDate = (date: string) => {
-  const dates = date.split('-')
-  const newDate = dates.shift()
-  return dates.join('-')
-}
-
-// 特货分类统计-选取下拉数据
-const handleCommand = (command: string) => {
-  specialGoods.value = command
-  const newObj: any = _.cloneDeep(airlineAbnormalBaggage.option.baseOption)
-  const result = formatGoods(command, specialGoodsAll.value)
-  airlineObj.value = pubFunc(result, newObj)
-}
-
-//获取小时峰值分布
-const hourlyPeakFunc = async () => {
-  loading1.value = true
-  const listValues = (await getPublicData(DATACONTENT_ID.jscGjHourlyPeakId, [
-    { flightDate1: dateNow.value.time, flightDate2: form.value.endDate },
-  ])) as any
-  if (listValues && isValue(listValues)) {
-    hourlyPeakObj.value = pubFunc(listValues, optionLeft, true)
-  }
-  loading1.value = false
-}
-
-//运单趋势分析
-const waybillTrendFunc = async () => {
-  loading2.value = true
-  const listValues = (await getPublicData(DATACONTENT_ID.jscGjWaybillTrendId, [
-    { flightDate1: form.value.startDate, flightDate2: form.value.endDate },
-  ])) as any
-  if (listValues && isValue(listValues)) {
-    listValues.forEach(item => {
-      item.jobTime = parseDate(item['jobTime'])
-    })
-    waybillTrendObj.value = pubFunc(listValues, optionLeft, true)
-  }
-  loading2.value = false
-}
-
-//始发站/目的站统计分析
-const nodePeakFunc = async (fd1?: string, fd2?: string) => {
-  loading3.value = true
-  const listValues = (await getPublicData(DATACONTENT_ID.jscAirlineAbnormalId, [
-    {
-      fd1: fd1 ?? form.value.startDate,
-      fd2: fd2 ?? form.value.endDate,
-      fttp: '国际离港',
-    },
-  ])) as any
-  if (listValues && isValue(listValues)) {
-    const newObj = _.cloneDeep(airCompaneBaggage.option.baseOption)
-    listValues.forEach(item => {
-      item.jobTime = item['airport']
-    })
-    nodePeakObj.value = pubFunc(listValues, newObj, true)
-  }
-  loading3.value = false
-}
-
-//航班数&运单数
-const numbersFunc = async () => {
-  loading4.value = true
-  const listValues = (await getPublicData(DATACONTENT_ID.jscGjNumbersId, [
-    {
-      fd1: parseTime(Date.now(), '{y}-{m}-{d}'),
-      fd2: parseTime(Date.now(), '{y}-{m}-{d}'),
-    },
-  ])) as any
-  if (listValues && isValue(listValues)) {
-    const { flightNum, finishFlightNum, weight } = listValues[0]
-    flightNums.value = flightNum ?? 0
-    stockNums.value = finishFlightNum ?? 0
-    weightNums.value = weight ?? 0
-  }
-  loading4.value = false
-}
-
-//航司运量
-const airlineTrafficFunc = async (
-  flightDate1?: string,
-  flightDate2?: string
-) => {
-  loading6.value = true
-  const listValues = await getPublicData(DATACONTENT_ID.jscGjAirlineTrafficId, [
-    {
-      flightDate1: flightDate1 ?? form.value.startDate,
-      flightDate2: flightDate2 ?? form.value.endDate,
-    },
-  ])
-  if (listValues && isValue(listValues)) {
-    const newObj: any = _.cloneDeep(airCompaneBaggage.option.baseOption)
-    ;(newObj.dataZoom = [
-      {
-        id: 'dataZoomX',
-        type: 'slider',
-        xAxisIndex: [0],
-        filterMode: 'filter',
-        start: 0,
-        end: 20,
-      },
-    ]),
-      listValues.forEach(item => {
-        item.jobTime = item['IACACode']
-      })
-
-    airlineTrafficObj.value = pubFunc(listValues, newObj, true)
-  }
-  loading6.value = false
-}
-
-//航班表格
-const airlineAbnormalFunc = async () => {
-  loading5.value = true
-  const listValues = (await getPublicData(DATACONTENT_ID.jscFlightDynamicsId, [
-    {
-      fd1: parseTime(Date.now(), '{y}-{m}-{d}'),
-      fd2: parseTime(Date.now(), '{y}-{m}-{d}'),
-      fttp: '国际离港',
-    },
-  ])) as any
-  const domHeight = scrollContent.value?.clientHeight
-  if (domHeight && typeof domHeight == 'number') {
-    const cell = Math.ceil(domHeight / 40)
-    limitScrollNum.value = cell
-  }
-  if (listValues && isValue(listValues)) {
-    listData.value = listValues
-  }
-  loading5.value = false
-}
-
-//航班动态统计
-const airlineFunc = async () => {
-  loading7.value = true
-  const listValues = (await getPublicData(DATACONTENT_ID.jscGoodsId, [
-    {
-      fd1: form.value.startDate,
-      fd2: form.value.endDate,
-      fttp: '国际离港',
-    },
-  ])) as any
-  if (listValues && isValue(listValues)) {
-    const newObj: any = _.cloneDeep(airlineAbnormalBaggage.option.baseOption)
-    const newDatas = _.cloneDeep(listValues)
-    const nameDatas = _.unionBy(newDatas, 'specialTypeName')
-    // const names: any = [...nameDatas];
-    const names: any = [...nameDatas, { specialTypeName: '合计' }]
-    // specialGoods.value = names[0]["specialTypeName"];
-    specialGoods.value = '合计'
-    specialGoodsDatas.value = names
-    specialGoodsAll.value = listValues
-    const result = formatGoods(
-      // names[0]["specialTypeName"],
-      '合计',
-      specialGoodsAll.value
-    )
-    airlineObj.value = pubFunc(result, newObj)
-  }
-  loading7.value = false
-}
-
-//拉货统计
-const pickingFuncs = async () => {
-  loading8.value = true
-  const listValues = (await getPublicData(DATACONTENT_ID.jscGjPullId, [
-    {
-      fd1: form.value.startDate,
-      fd2: form.value.endDate,
-    },
-  ])) as any
-  if (listValues && isValue(listValues)) {
-    const newObj: any = _.cloneDeep(airlineAbnormalBaggage.option.baseOption)
-    listValues.forEach(item => {
-      item.jobTime = parseDate(item['flightDate'])
-      item.weight = item['flightNum']
-    })
-    pickingObj.value = pubFunc(listValues, newObj)
-  }
-  loading8.value = false
-}
-
-const today = parseTime(Date.now(), '{y}-{m}-{d}') as string
-onMounted(() => {
-  hourlyPeakFunc()
-  waybillTrendFunc()
-  nodePeakFunc(today, today)
-  numbersFunc()
-  airlineTrafficFunc(today, today)
-  airlineAbnormalFunc()
-  airlineFunc()
-  pickingFuncs()
-})
-</script>
-
-<style lang="scss" scoped>
-@import './css/index.scss';
-</style>

+ 1 - 1
src/views/dashboard/indexIn.vue → src/views/dashboard/internationalArrival.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="dashboard">
-    <ComHead :tabs-index="3" />
+    <ComHead />
     <div class="dashboard-content">
       <div class="dashboard-content-top flex">
         <div class="dashboard-content-top-left">

+ 1 - 1
src/views/dashboard/indexOut.vue → src/views/dashboard/internationalDeparture.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="dashboard">
-    <ComHead :tabs-index="2" />
+    <ComHead />
     <div class="dashboard-content">
       <div class="dashboard-content-top flex">
         <div class="dashboard-content-top-left">