Browse Source

统计图表修改

zhongxiaoyu 2 years ago
parent
commit
25beaad248
33 changed files with 1438 additions and 267 deletions
  1. 12 0
      public/config.js
  2. 248 77
      src/router/routes/routes-file-six.js
  3. 68 54
      src/views/statisticsCharts/components/commonBarStatisticsCharts.vue
  4. 404 0
      src/views/statisticsCharts/components/commonPieStatisticsCharts.vue
  5. 33 5
      src/views/statisticsCharts/components/statisticsHeader.vue
  6. 155 86
      src/views/statisticsCharts/components/statisticsTabs.vue
  7. 1 0
      src/views/statisticsCharts/mixins/noTerminal.js
  8. 67 0
      src/views/statisticsCharts/mixins/passengerType.js
  9. 4 4
      src/views/statisticsCharts/views/airlineCompany/abnormalBaggageStatisticsCharts.vue
  10. 3 3
      src/views/statisticsCharts/views/airlineCompany/baggageAverageStatisticsCharts.vue
  11. 3 3
      src/views/statisticsCharts/views/airlineCompany/baggagePassengerStatisticsCharts.vue
  12. 7 7
      src/views/statisticsCharts/views/airlineCompany/baggageStatisticsCharts.vue
  13. 4 4
      src/views/statisticsCharts/views/airlineCompany/compensationBaggageStatisticsCharts.vue
  14. 4 4
      src/views/statisticsCharts/views/airlineCompany/compensationStatisticsCharts.vue
  15. 4 4
      src/views/statisticsCharts/views/airlineCompany/complaintBaggageStatisticsCharts.vue
  16. 7 7
      src/views/statisticsCharts/views/airlineCompany/flightStatisticsCharts.vue
  17. 3 3
      src/views/statisticsCharts/views/airlineCompany/specialBaggageStatisticsCharts.vue
  18. 26 0
      src/views/statisticsCharts/views/flightClassification/baggageClassificationStatisticsCharts.vue
  19. 26 0
      src/views/statisticsCharts/views/flightClassification/flightClassificationStatisticsCharts.vue
  20. 26 0
      src/views/statisticsCharts/views/flightClassification/passengerClassificationStatisticsCharts.vue
  21. 30 0
      src/views/statisticsCharts/views/passengerClassification/abnormalBaggageStatisticsCharts.vue
  22. 29 0
      src/views/statisticsCharts/views/passengerClassification/baggagePassengerStatisticsCharts.vue
  23. 29 0
      src/views/statisticsCharts/views/passengerClassification/baggageStatisticsCharts.vue
  24. 30 0
      src/views/statisticsCharts/views/passengerClassification/compensationBaggageStatisticsCharts.vue
  25. 30 0
      src/views/statisticsCharts/views/passengerClassification/compensationStatisticsCharts.vue
  26. 30 0
      src/views/statisticsCharts/views/passengerClassification/complaintBaggageStatisticsCharts.vue
  27. 30 0
      src/views/statisticsCharts/views/passengerClassification/specialBaggageStatisticsCharts.vue
  28. 3 3
      src/views/statisticsCharts/views/report/reportStatistics.vue
  29. 3 3
      src/views/statisticsCharts/views/report/transitTable.vue
  30. 31 0
      src/views/statisticsCharts/views/special/abnormalBaggageClassificationStatisticsCharts.vue
  31. 31 0
      src/views/statisticsCharts/views/special/compensationBaggageClassificationStatisticsCharts.vue
  32. 31 0
      src/views/statisticsCharts/views/special/compensationClassificationStatisticsCharts.vue
  33. 26 0
      src/views/statisticsCharts/views/special/specialBaggageClassificationStatisticsCharts.vue

+ 12 - 0
public/config.js

@@ -129,6 +129,18 @@ window.DATACONTENT_ID = {
   compensationByArea: 1830, // 赔偿金额统计-分公司
   baggageAverageByOther: 1831, // 平均行李统计
   baggageAverageByArea: 1832, // 平均行李统计-分公司
+  specialBaggageClassificationByOther: 1193, // 特殊行李分类统计
+  specialBaggageClassificationByArea: 1194, // 特殊行李分类统计-分公司
+  flightClassificationByOther: 1195, // 航班分类统计
+  flightClassificationByArea: 1196, // 航班分类统计-分公司
+  compensationClassificationByOther: 1197, // 赔偿分类统计
+  compensationClassificationByArea: 1198, // 赔偿分类统计-分公司
+  passengerNormalClassificationByOther: 1199, // 旅客分类常客统计
+  passengerNormalClassificationByArea: 1200, // 旅客分类常客统计-分公司
+  passengerImportantClassificationByOther: 1201, // 旅客分类要客统计
+  passengerImportantClassificationByArea: 1202, // 旅客分类要客统计-分公司
+  abnormalBaggageClassificationByOther: 1205, // 异常行李分类统计
+  abnormalBaggageClassificationByArea: 1206, // 异常行李分类统计-分公司
   nodeRange: 1801, // 节点查询范围
   nodeAirline: 1802, // 节点航线下拉
   nodeAirport: 1803, // 节点航站下拉

+ 248 - 77
src/router/routes/routes-file-six.js

@@ -5,105 +5,280 @@ const statisticsChartsRoutes = {
   component: Layout,
   meta: {
     title: '统计图表',
-    keepAlive: false,
     roles: ['statistical_chart']
   },
   children: [
     {
       path: '/statisticsCharts',
       name: 'StatisticsCharts',
-      redirect: 'flight',
+      redirect: 'airlineCompany',
       component: () => import('@/views/statisticsCharts'),
       meta: {
         title: '统计图表',
         imgstyle: 'ic_list_nav_arrive_default.png',
-        imgstyleup: 'ic_list_nav_arrive_check.png',
-        keepAlive: false
+        imgstyleup: 'ic_list_nav_arrive_check.png'
       },
       children: [
         {
-          path: 'flight',
-          name: 'FlightStatisticsCharts',
-          hidden: true,
-          component: () => import('@/views/statisticsCharts/views/flightStatisticsCharts'),
-          meta: { title: '航班量统计', keepAlive: false, roles: ['flight_volume_statistics'] }
-        },
-        {
-          path: 'node',
-          name: 'NodeStatisticsCharts',
-          hidden: true,
-          component: () => import('@/views/statisticsCharts/views/nodeStatisticsCharts'),
-          meta: { title: '扫描节点与位置分析', keepAlive: false, roles: ['scanning_node_and_location_analysis'] }
-        },
-        {
-          path: 'reportStatistics',
-          name: 'ReportStatistics',
-          hidden: true,
-          component: () => import('@/views/statisticsCharts/views/reportStatistics'),
-          meta: { title: '运送效率报表统计', keepAlive: false, roles: ['scanning_node_and_location_analysis'] }
-        },
-        {
-          path: 'transitTable',
-          name: 'TransitTable',
-          hidden: true,
-          component: () => import('@/views/statisticsCharts/views/transitTable'),
-          meta: { title: '中转专项报表统计', keepAlive: false, roles: ['scanning_node_and_location_analysis'] }
-        },
-        {
-          path: 'baggage',
-          name: 'BaggageStatisticsCharts',
+          path: 'airlineCompany',
+          redirect: 'airlineCompany/flight',
+          name: 'AirlineCompanyStatistics',
           hidden: true,
-          component: () => import('@/views/statisticsCharts/views/baggageStatisticsCharts'),
-          meta: { title: '行李量统计', keepAlive: false, roles: ['baggage_statistics'] }
-        },
-        {
-          path: 'specialBaggage',
-          name: 'SpecialBaggageStatisticsCharts',
-          hidden: true,
-          component: () => import('@/views/statisticsCharts/views/specialBaggageStatisticsCharts'),
-          meta: { title: '特殊行李量统计', keepAlive: false }
-        },
-        {
-          path: 'baggagePassenger',
-          name: 'BaggagePassengerStatisticsCharts',
-          hidden: true,
-          component: () => import('@/views/statisticsCharts/views/baggagePassengerStatisticsCharts'),
-          meta: { title: '行李旅客量统计', keepAlive: false }
+          component: {
+            render(h) {
+              return h('router-view')
+            }
+          },
+          children: [
+            {
+              path: 'flight',
+              name: 'FlightStatisticsCharts',
+              hidden: true,
+              component: () => import('@/views/statisticsCharts/views/airlineCompany/flightStatisticsCharts'),
+              meta: { title: '航班量统计', roles: ['flight_volume_statistics'] }
+            },
+            {
+              path: 'baggage',
+              name: 'BaggageStatisticsCharts',
+              hidden: true,
+              component: () => import('@/views/statisticsCharts/views/airlineCompany/baggageStatisticsCharts'),
+              meta: { title: '行李量统计', roles: ['baggage_statistics'] }
+            },
+            {
+              path: 'specialBaggage',
+              name: 'SpecialBaggageStatisticsCharts',
+              hidden: true,
+              component: () => import('@/views/statisticsCharts/views/airlineCompany/specialBaggageStatisticsCharts'),
+              meta: { title: '特殊行李量统计' }
+            },
+            {
+              path: 'baggagePassenger',
+              name: 'BaggagePassengerStatisticsCharts',
+              hidden: true,
+              component: () => import('@/views/statisticsCharts/views/airlineCompany/baggagePassengerStatisticsCharts'),
+              meta: { title: '行李旅客量统计' }
+            },
+            {
+              path: 'baggageAverage',
+              name: 'BaggageAverageStatisticsCharts',
+              hidden: true,
+              component: () => import('@/views/statisticsCharts/views/airlineCompany/baggageAverageStatisticsCharts'),
+              meta: { title: '平均行李量统计' }
+            },
+            {
+              path: 'abnormalBaggage',
+              name: 'AbnormalBaggageStatisticsCharts',
+              hidden: true,
+              component: () => import('@/views/statisticsCharts/views/airlineCompany/abnormalBaggageStatisticsCharts'),
+              meta: { title: '异常行李量统计' }
+            },
+            {
+              path: 'complaintBaggage',
+              name: 'ComplaintBaggageStatisticsCharts',
+              hidden: true,
+              component: () => import('@/views/statisticsCharts/views/airlineCompany/complaintBaggageStatisticsCharts'),
+              meta: { title: '投诉行李量统计' }
+            },
+            {
+              path: 'compensationBaggage',
+              name: 'CompensationBaggageStatisticsCharts',
+              hidden: true,
+              component: () =>
+                import('@/views/statisticsCharts/views/airlineCompany/compensationBaggageStatisticsCharts'),
+              meta: { title: '赔偿行李量统计' }
+            },
+            {
+              path: 'compensation',
+              name: 'CompensationStatisticsCharts',
+              hidden: true,
+              component: () => import('@/views/statisticsCharts/views/airlineCompany/compensationStatisticsCharts'),
+              meta: { title: '赔偿金额统计' }
+            }
+          ]
         },
         {
-          path: 'baggageAverage',
-          name: 'BaggageAverageStatisticsCharts',
+          path: 'passengerClassification',
+          redirect: 'passengerClassification/baggagePassenger',
+          name: 'PassengerStatistics',
           hidden: true,
-          component: () => import('@/views/statisticsCharts/views/baggageAverageStatisticsCharts'),
-          meta: { title: '平均行李量统计', keepAlive: false }
+          component: {
+            render(h) {
+              return h('router-view')
+            }
+          },
+          children: [
+            {
+              path: 'baggagePassenger',
+              name: 'PassengerStatisticsCharts',
+              hidden: true,
+              component: () =>
+                import('@/views/statisticsCharts/views/passengerClassification/baggagePassengerStatisticsCharts'),
+              meta: { title: '行李旅客量统计' }
+            },
+            {
+              path: 'baggage',
+              name: 'PassengerBaggageStatisticsCharts',
+              hidden: true,
+              component: () => import('@/views/statisticsCharts/views/passengerClassification/baggageStatisticsCharts'),
+              meta: { title: '行李量统计' }
+            },
+            {
+              path: 'specialBaggage',
+              name: 'PassengerSpecialBaggageStatisticsCharts',
+              hidden: true,
+              component: () =>
+                import('@/views/statisticsCharts/views/passengerClassification/specialBaggageStatisticsCharts'),
+              meta: { title: '特殊行李量统计' }
+            },
+            {
+              path: 'abnormalBaggage',
+              name: 'PassengerAbnormalBaggageStatisticsCharts',
+              hidden: true,
+              component: () =>
+                import('@/views/statisticsCharts/views/passengerClassification/abnormalBaggageStatisticsCharts'),
+              meta: { title: '异常行李量统计' }
+            },
+            {
+              path: 'complaintBaggage',
+              name: 'PassengerComplaintBaggageStatisticsCharts',
+              hidden: true,
+              component: () =>
+                import('@/views/statisticsCharts/views/passengerClassification/complaintBaggageStatisticsCharts'),
+              meta: { title: '投诉行李量统计' }
+            },
+            {
+              path: 'compensationBaggage',
+              name: 'PassengerCompensationBaggageStatisticsCharts',
+              hidden: true,
+              component: () =>
+                import('@/views/statisticsCharts/views/passengerClassification/compensationBaggageStatisticsCharts'),
+              meta: { title: '赔偿行李量统计' }
+            },
+            {
+              path: 'compensation',
+              name: 'PassengerCompensationStatisticsCharts',
+              hidden: true,
+              component: () =>
+                import('@/views/statisticsCharts/views/passengerClassification/compensationStatisticsCharts'),
+              meta: { title: '赔偿金额统计' }
+            }
+          ]
         },
         {
-          path: 'abnormalBaggage',
-          name: 'AbnormalBaggageStatisticsCharts',
+          path: 'flightClassification',
+          redirect: 'flightClassification/flight',
+          name: 'FlightClassificationStatistics',
           hidden: true,
-          component: () => import('@/views/statisticsCharts/views/abnormalBaggageStatisticsCharts'),
-          meta: { title: '异常行李量统计', keepAlive: false }
+          component: {
+            render(h) {
+              return h('router-view')
+            }
+          },
+          children: [
+            {
+              path: 'flight',
+              name: 'FlightClassificationStatisticsCharts',
+              hidden: true,
+              component: () =>
+                import('@/views/statisticsCharts/views/flightClassification/flightClassificationStatisticsCharts'),
+              meta: { title: '航班量统计' }
+            },
+            {
+              path: 'baggage',
+              name: 'FlightBaggageClassificationStatisticsCharts',
+              hidden: true,
+              component: () =>
+                import('@/views/statisticsCharts/views/flightClassification/baggageClassificationStatisticsCharts'),
+              meta: { title: '行李量统计' }
+            },
+            {
+              path: 'passenger',
+              name: 'FlightPassengerClassificationStatisticsCharts',
+              hidden: true,
+              component: () =>
+                import('@/views/statisticsCharts/views/flightClassification/passengerClassificationStatisticsCharts'),
+              meta: { title: '行李旅客量统计' }
+            }
+          ]
         },
         {
-          path: 'complaintBaggage',
-          name: 'ComplaintBaggageStatisticsCharts',
+          path: 'node',
+          name: 'NodeStatisticsCharts',
           hidden: true,
-          component: () => import('@/views/statisticsCharts/views/complaintBaggageStatisticsCharts'),
-          meta: { title: '投诉行李量统计', keepAlive: false }
+          component: () => import('@/views/statisticsCharts/views/nodeStatisticsCharts'),
+          meta: { title: '扫描节点与位置分析', roles: ['scanning_node_and_location_analysis'] }
         },
         {
-          path: 'compensationBaggage',
-          name: 'CompensationBaggageStatisticsCharts',
+          path: 'report',
+          redirect: 'report/reportStatistics',
+          name: 'Report',
           hidden: true,
-          component: () => import('@/views/statisticsCharts/views/compensationBaggageStatisticsCharts'),
-          meta: { title: '赔偿行李量统计', keepAlive: false }
+          component: {
+            render(h) {
+              return h('router-view')
+            }
+          },
+          children: [
+            {
+              path: 'reportStatistics',
+              name: 'ReportStatistics',
+              hidden: true,
+              component: () => import('@/views/statisticsCharts/views/report/reportStatistics'),
+              meta: { title: '运送效率报表统计', roles: ['scanning_node_and_location_analysis'] }
+            },
+            {
+              path: 'transitTable',
+              name: 'TransitTable',
+              hidden: true,
+              component: () => import('@/views/statisticsCharts/views/report/transitTable'),
+              meta: { title: '中转专项报表统计', roles: ['scanning_node_and_location_analysis'] }
+            }
+          ]
         },
         {
-          path: 'compensation',
-          name: 'CompensationStatisticsCharts',
+          path: 'specialClassification',
+          redirect: 'specialClassification/special',
+          name: 'SpecialStatistics',
           hidden: true,
-          component: () => import('@/views/statisticsCharts/views/compensationStatisticsCharts'),
-          meta: { title: '赔偿金额统计', keepAlive: false }
+          component: {
+            render(h) {
+              return h('router-view')
+            }
+          },
+          children: [
+            {
+              path: 'special',
+              name: 'SpecialBaggageClassificationStatisticsCharts',
+              hidden: true,
+              component: () =>
+                import('@/views/statisticsCharts/views/special/specialBaggageClassificationStatisticsCharts'),
+              meta: { title: '特殊行李分类统计' }
+            },
+            {
+              path: 'abnormal',
+              name: 'AbnormalBaggageClassificationStatisticsCharts',
+              hidden: true,
+              component: () =>
+                import('@/views/statisticsCharts/views/special/abnormalBaggageClassificationStatisticsCharts'),
+              meta: { title: '异常行李分类统计' }
+            },
+            {
+              path: 'compensationBaggage',
+              name: 'CompensationBaggageClassificationStatisticsCharts',
+              hidden: true,
+              component: () =>
+                import('@/views/statisticsCharts/views/special/compensationBaggageClassificationStatisticsCharts'),
+              meta: { title: '赔偿行李分类统计' }
+            },
+            {
+              path: 'compensation',
+              name: 'CompensationClassificationStatisticsCharts',
+              hidden: true,
+              component: () =>
+                import('@/views/statisticsCharts/views/special/compensationClassificationStatisticsCharts'),
+              meta: { title: '赔偿金额分类统计' }
+            }
+          ]
         }
       ]
     }
@@ -114,7 +289,7 @@ const statisticalAnalysis = {
   path: '/statisticalAnalysis',
   component: Layout,
   meta: {
-    keepAlive: false,
+    roles: ['demo']
   },
   children: [
     {
@@ -125,17 +300,13 @@ const statisticalAnalysis = {
       meta: {
         title: '统计分析',
         imgstyle: 'ic_list_nav_screen_default.png',
-        imgstyleup: 'ic_list_nav_screen_check.png',
-        keepAlive: false
+        imgstyleup: 'ic_list_nav_screen_check.png'
       },
       children: [
         {
           path: '/statisticalAnalysis',
           name: 'statisticalAnalysisContent',
-          component: () => import('@/views/statisticalAnalysis/components'),
-          meta: {
-            keepAlive: false
-          },
+          component: () => import('@/views/statisticalAnalysis/components')
         }
       ]
     }

+ 68 - 54
src/views/statisticsCharts/components/commonStatisticsCharts.vue → src/views/statisticsCharts/components/commonBarStatisticsCharts.vue

@@ -14,7 +14,7 @@
     <div class="statstics-content">
       <div
         id="chart"
-        class="flight-statistics-chart"
+        class="statistics-chart"
         :style="{ height: chartHeight }"
       />
     </div>
@@ -27,7 +27,7 @@ import { Query } from '@/api/dataIntegration'
 import { mapGetters } from 'vuex'
 
 export default {
-  name: 'CommonStatisticsCharts',
+  name: 'CommonBarStatisticsCharts',
   components: { StatisticsHeader },
   props: {
     chartsTitle: {
@@ -49,6 +49,8 @@ export default {
       debounceTime: 300,
       chartHeight: '70vh',
       hasChartData: false,
+      seriesKey: 'seriesData',
+      filters: [],
       options: {
         backgroundColor: '#fff',
         tooltip: {
@@ -217,6 +219,18 @@ export default {
     },
     'sidebar.expand'() {
       this.setChartHeight()
+    },
+    querySettings: {
+      handler({ seriesKey, filters }) {
+        if (seriesKey) {
+          this.seriesKey = seriesKey
+        }
+        if (filters?.length) {
+          this.filters = filters
+        }
+      },
+      deep: true,
+      immediate: true
     }
   },
   mounted() {
@@ -236,59 +250,38 @@ export default {
     }
   },
   methods: {
+    resetDatas() {
+      this.hasChartData = false
+      this.options.yAxis[0].max = 60000
+      this.options.xAxis.data = []
+      this.options.series[0].data = []
+      this.options.series[2].data = []
+      this.options.yAxis[1].min = -0.3
+      this.options.yAxis[1].max = 0.5
+    },
     getFormData(formData) {
+      this.resetDatas()
+
       let id
       let params = []
-      if (formData.range === '') {
-        this.$message.warning('请先选择统计范围')
-        return
-      } else if (formData.range === '航线' && !formData.airline) {
-        this.$message.warning('请先选择航线')
-        return
-      } else if (formData.range === '航站' && !formData.airport) {
-        this.$message.warning('请先选择航站')
-        return
-      } else if (formData.range === '基地分公司' && !formData.area) {
-        this.$message.warning('请先选择基地分公司')
-        return
-      }
-      if (formData.inOrOut === '') {
-        this.$message.warning('请先选择进离港')
-        return
-      }
-      if (formData.interval === '') {
-        this.$message.warning('请先选择统计时间维度')
-        return
-      }
-      if (formData.dateTime === '') {
-        this.$message.warning('请先选择统计时间范围')
-        return
-      }
-      const requiredMissing = this.customFormItems.some(item => {
-        if (item.requiredWarning && !formData[item.prop]) {
-          this.$message.warning(item.requiredWarning)
-          return true
-        } else {
-          return false
-        }
-      })
-      if (requiredMissing) {
-        return
-      }
       if (formData.range === '基地分公司') {
-        if (formData.flightType === 'withBaggage') {
+        if (formData.flightType === '有行李') {
           id = this.querySettings.withBaggageByArea
-        } else if (formData.baggageType === 'notDEL') {
+        } else if (formData.baggageType === '不包含DEL') {
           id = this.querySettings.notDelByArea
+        } else if (formData.passengerType[0] === '要客类型') {
+          id = this.querySettings.importantByArea
         } else {
           id = this.querySettings.byArea
         }
         params = [formData.interval, formData.area, formData.inOrOut, formData.dateTime[0], formData.dateTime[1]]
       } else if (formData.range !== '基地分公司' && formData.range !== '') {
-        if (formData.flightType === 'withBaggage') {
+        if (formData.flightType === '有行李') {
           id = this.querySettings.withBaggageByOther
-        } else if (formData.baggageType === 'notDEL') {
+        } else if (formData.baggageType === '不包含DEL') {
           id = this.querySettings.notDelByOther
+        } else if (formData.passengerType[0] === '要客类型') {
+          id = this.querySettings.importantByOther
         } else {
           id = this.querySettings.byOther
         }
@@ -306,6 +299,12 @@ export default {
           params.splice(2, 0, formData.terminal)
         }
       }
+      if (formData.passengerType.length) {
+        this.filters = {
+          key: formData.passengerType[0],
+          value: formData.passengerType[1]
+        }
+      }
       this.getChartsData(id, params)
     },
     async getChartsData(id, params) {
@@ -321,23 +320,39 @@ export default {
         if (Number(code) === 0) {
           const xAxisData = []
           const yAxisData = [0]
-          const seriesData = []
-          for (let i = 0; i < listValues.length; i++) {
-            xAxisData.push(listValues[i].A)
-            seriesData.push(listValues[i].seriesData)
+          const seriesDatas = []
+          const filteredList = listValues.filter(element =>
+            this.filters.every((key, value) => {
+              if (key && value && element[key] !== value) {
+                return false
+              } else {
+                return true
+              }
+            })
+          )
+          if (filteredList.length === 0) {
+            this.$message.info('未查询到对应数据')
+            return
+          }
+          for (let i = 0; i < filteredList.length; i++) {
+            xAxisData.push(filteredList[i].A)
+            seriesDatas.push(filteredList[i][this.seriesKey])
             if (i > 0) {
-              if (listValues[i - 1].seriesData > 0) {
-                yAxisData.push((listValues[i].seriesData - listValues[i - 1].seriesData) / listValues[i - 1].seriesData)
+              if (filteredList[i - 1][this.seriesKey] > 0) {
+                yAxisData.push(
+                  (filteredList[i][this.seriesKey] - filteredList[i - 1][this.seriesKey]) /
+                    filteredList[i - 1][this.seriesKey]
+                )
               } else {
                 yAxisData.push(0)
               }
             }
           }
-          let max = Math.max(...seriesData)
+          let max = Math.max(...seriesDatas)
           max = Math.ceil(max / 10) * 10
           this.options.yAxis[0].max = max
           this.options.xAxis.data = xAxisData
-          this.options.series[0].data = seriesData
+          this.options.series[0].data = seriesDatas
           this.options.series[2].data = yAxisData
           this.options.yAxis[1].min = (Math.min(...yAxisData) - 0.1).toFixed(2)
           this.options.yAxis[1].max = (Math.max(...yAxisData) + 0.1).toFixed(2)
@@ -369,6 +384,7 @@ export default {
     },
     exportHandler() {
       if (!this.hasChartData) {
+        this.$message.warning('请查询后再进行导出')
         return
       }
       const myCanvas = this.myChart._dom.querySelectorAll('canvas')[0]
@@ -383,9 +399,7 @@ export default {
 </script>
 
 <style lang="scss" scoped>
-.statstics-wrapper {
-  .flight-statistics-chart {
-    width: 100%;
-  }
+.statistics-chart {
+  width: 100%;
 }
 </style>

+ 404 - 0
src/views/statisticsCharts/components/commonPieStatisticsCharts.vue

@@ -0,0 +1,404 @@
+<template>
+  <div class="statstics-wrapper">
+    <div
+      ref="headerWrapper"
+      class="statstics-header"
+    >
+      <StatisticsHeader
+        :title="`${chartsTitle}统计`"
+        :custom-items="customFormItems"
+        @getFormData="getFormData"
+        @export="exportHandler"
+      />
+    </div>
+    <div class="statstics-content">
+      <div
+        id="chart"
+        class="statistics-chart"
+        :style="{ height: chartHeight }"
+      />
+    </div>
+  </div>
+</template>
+
+<script>
+import StatisticsHeader from './statisticsHeader.vue'
+import { Query } from '@/api/dataIntegration'
+import { mapGetters } from 'vuex'
+
+export default {
+  name: 'CommonBarStatisticsCharts',
+  components: { StatisticsHeader },
+  props: {
+    chartsTitle: {
+      type: String,
+      required: true
+    },
+    querySettings: {
+      type: Object,
+      required: true
+    },
+    categories: {
+      type: Array,
+      required: true
+    },
+    customFormItems: {
+      type: Array,
+      default: () => []
+    }
+  },
+  data() {
+    return {
+      myChart: null,
+      debounceTime: 300,
+      chartHeight: '70vh',
+      hasChartData: false,
+      options: {
+        backgroundColor: '#ffffff',
+        tooltip: {
+          trigger: 'item'
+        },
+        title: {
+          text: '总件数',
+          // 副标题
+          subtext: '0',
+          // 主副标题间距
+          itemGap: 24,
+          x: 'left',
+          y: 'center',
+          left: '30%',
+          top: '40%',
+          textAlign: 'center',
+          // 主标题样式
+          textStyle: {
+            fontSize: '48',
+            color: '#ffffff',
+            fontWeight: 'bold',
+            fontFamily: 'Microsoft YaHei'
+          },
+          // 副标题样式
+          subtextStyle: {
+            fontSize: '80',
+            color: '#ffffff',
+            fontWeight: 'bold'
+          }
+        },
+        legend: {
+          show: true,
+          left: '60%',
+          x: 'right',
+          y: 'center',
+          icon: 'rect',
+          itemWidth: 20,
+          itemHeight: 20,
+          formatter: name => this.legendFormatter(name),
+          textStyle: {
+            backgroundColor: 'transparent',
+            lineHeight: 0,
+            rich: {
+              chartsTitle: {
+                width: 200,
+                lineHeight: 100,
+                fontSize: 32,
+                fontFamily: 'Microsoft YaHei',
+                fontWeight: 'bold',
+                color: '#101116',
+                padding: [0, 1000, 0, -20]
+              },
+              name: {
+                fontSize: 20,
+                fontFamily: 'Microsoft YaHei',
+                fontWeight: 'bold',
+                color: '#101116',
+                lineHeight: 100
+              },
+              label: {
+                fontSize: 16,
+                fontFamily: 'Microsoft YaHei',
+                color: '#101116'
+              },
+              value: {
+                width: 96,
+                fontSize: 16,
+                fontFamily: 'Helvetica',
+                fontWeight: 'bold',
+                color: '#101116'
+              },
+              ratio: {
+                width: 80,
+                fontSize: 16,
+                fontFamily: 'Helvetica',
+                fontWeight: 'bold',
+                color: '#101116'
+              },
+              wrap: {
+                padding: [0, 40, 0, 0]
+              }
+            }
+          },
+          selected: {
+            [this.chartsTitle]: false
+          }
+        },
+        series: [
+          {
+            name: '',
+            type: 'pie',
+            left: '30%',
+            width: 560,
+            height: 560,
+            center: [0, '60%'],
+            radius: ['60%', '90%'],
+            avoidLabelOverlap: false,
+            label: {
+              show: false,
+              position: 'center'
+            },
+            emphasis: {
+              label: {
+                show: false,
+                fontSize: '40',
+                fontWeight: 'bold'
+              }
+            },
+            labelLine: {
+              show: false
+            },
+            data: []
+          },
+          {
+            name: '总数',
+            type: 'pie',
+            left: '30%',
+            width: 560,
+            height: 560,
+            center: [0, '60%'],
+            radius: ['0%', '50%'],
+            avoidLabelOverlap: false,
+            itemStyle: {
+              normal: {
+                color: '#101116'
+              }
+            },
+            label: {
+              show: false,
+              position: 'center'
+            },
+            // 自定义中心内容的话需要把这个关闭
+            emphasis: {
+              label: {
+                show: false
+              }
+            },
+            labelLine: {
+              show: false
+            },
+            data: []
+          }
+        ]
+      },
+      totalCount: [{ value: 0 }],
+      categoryDatas: [],
+      categoryKey: 'specialnum',
+      seriesKey: 'special'
+    }
+  },
+  computed: {
+    ...mapGetters(['sidebar'])
+  },
+  watch: {
+    // 监听数据变化 重绘图形
+    options: {
+      handler(obj) {
+        this.myChart.setOption(obj)
+        this.resizeHandler()
+      },
+      deep: true
+    },
+    categories: {
+      handler(arr) {
+        this.categoryDatas = arr.map(categoryName => ({
+          name: categoryName,
+          value: 0
+        }))
+        this.categoryDatas.unshift({
+          name: this.chartsTitle,
+          value: null
+        })
+      },
+      deep: true,
+      immediate: true
+    },
+    querySettings: {
+      handler({ categoryKey, seriesKey }) {
+        if (seriesKey) {
+          this.seriesKey = seriesKey
+        }
+        if (categoryKey) {
+          this.categoryKey = categoryKey
+        }
+      },
+      deep: true,
+      immediate: true
+    },
+    'sidebar.expand'() {
+      this.setChartHeight()
+    }
+  },
+  mounted() {
+    this.setChartHeight()
+    this.myChart = this.$echarts.init(document.getElementById('chart'))
+    this.options.series[0].data = this.categoryDatas
+    this.options.legend.data = this.categoryDatas.map(({ name }, index) => {
+      if (index === 0) {
+        return {
+          name,
+          icon: 'none'
+        }
+      } else {
+        return {
+          name
+        }
+      }
+    })
+    this.options.series[1].data = this.totalCount
+    this.myChart.setOption(this.options)
+    this.myChart.on('legendselectchanged', ({ name }) => {
+      if (name === this.chartsTitle) {
+        this.myChart.dispatchAction({
+          type: 'legendUnSelect',
+          name
+        })
+      }
+    })
+    // 监听页面缩放
+    this.debouncedChartHeightSetter = this._.debounce(this.setChartHeight, this.debounceTime)
+    window.addEventListener('resize', this.debouncedChartHeightSetter)
+  },
+  beforeDestroy() {
+    // 销毁实例和移除监听
+    window.removeEventListener('resize', this.debouncedChartHeightSetter)
+    if (this.myChart) {
+      this.myChart.dispose()
+      this.myChart = null
+    }
+  },
+  methods: {
+    legendFormatter(name) {
+      const index = this.categoryDatas.findIndex(category => category.name === name)
+      if (index === 0) {
+        return `{chartsTitle|${name}}`
+      } else {
+        const value = this.categoryDatas[index].value
+        const ratio = value && this.totalCount.value ? ((value / this.totalCount.value) * 100).toFixed(2) + '%' : '0%'
+        const richString = `{name|${name}}\n{label|数量:}{value|${value}}{label|占比:}{ratio|${ratio}}`
+        return index % 2 ? richString + '{wrap| }' : richString
+      }
+    },
+    resetDatas() {
+      this.hasChartData = false
+      this.categoryDatas.forEach(category => {
+        category && (category.value = 0)
+      })
+      this.options.title.subtext = '0'
+      this.options.series[1].data[0].value = 0
+    },
+    getFormData(formData) {
+      this.resetDatas()
+
+      let id
+      let params = []
+      if (formData.range === '基地分公司') {
+        id = this.querySettings.byArea
+        params = [formData.interval, formData.area, formData.inOrOut, formData.dateTime[0], formData.dateTime[1]]
+      } else if (formData.range !== '基地分公司' && formData.range !== '') {
+        id = this.querySettings.byOther
+        params = [formData.interval, formData.range, formData.inOrOut, formData.dateTime[0], formData.dateTime[1]]
+        if (formData.airline === '' && formData.airport === '' && formData.terminal === '') {
+          params.splice(2, 0, '全部')
+        }
+        if (formData.airline !== '') {
+          params.splice(2, 0, formData.airline)
+        }
+        if (formData.airport !== '') {
+          params.splice(2, 0, formData.airport)
+        }
+        if (formData.terminal !== '') {
+          params.splice(2, 0, formData.terminal)
+        }
+      }
+      this.getChartsData(id, params)
+    },
+    async getChartsData(id, params) {
+      try {
+        const {
+          code,
+          returnData: { listValues },
+          message
+        } = await Query({
+          id,
+          dataContent: params
+        })
+        if (Number(code) === 0) {
+          if (listValues.length === 0) {
+            this.$message.info('未查询到对应数据')
+            return
+          }
+          let totalCount = 0
+          listValues.forEach(element => {
+            this.categoryDatas.forEach(category => {
+              if (element[this.categoryKey]?.includes(category.name)) {
+                category.value += element[this.seriesKey]
+                totalCount += element[this.seriesKey]
+              }
+            })
+          })
+          this.options.title.subtext = totalCount.toString()
+          this.totalCount.value = totalCount
+          this.hasChartData = true
+        } else {
+          this.$message.error(message || '失败')
+        }
+      } catch (error) {
+        console.log('出错了', error.message || error)
+      }
+    },
+    setChartHeight() {
+      const topBarHeight = 80
+      const headerBlankHeight = 24
+      const tabsWrapperHeight = 62
+      const headerHeight = this.$refs['headerWrapper'].offsetHeight
+      const footerBlankHeight = 24
+      this.chartHeight = `calc(100vh - ${
+        topBarHeight + headerBlankHeight + tabsWrapperHeight + headerHeight + footerBlankHeight
+      }px)`
+      this.$nextTick(() => {
+        this.resizeHandler()
+      })
+    },
+    resizeHandler() {
+      if (this.myChart) {
+        this.myChart.resize()
+      }
+    },
+    exportHandler() {
+      if (!this.hasChartData) {
+        this.$message.warning('请查询后再进行导出')
+        return
+      }
+      const myCanvas = this.myChart._dom.querySelectorAll('canvas')[0]
+      const image = myCanvas.toDataURL('image/png')
+      const $a = document.createElement('a')
+      $a.setAttribute('href', image)
+      $a.setAttribute('download', `${this.chartsTitle}统计.png`)
+      $a.click()
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.statistics-chart {
+  width: 100%;
+}
+</style>

+ 33 - 5
src/views/statisticsCharts/components/statisticsHeader.vue

@@ -29,12 +29,13 @@
           <el-select
             v-model="formData[item.prop]"
             :filterable="item.filterable"
+            :default-first-option="item.filterable"
             :size="item.size || 'small'"
             :placeholder="item.placeholder || '请选择'"
             :clearable="item.clearable"
             :disabled="item.disabled"
             @change="
-              (value) => {
+              value => {
                 item.changeHandler && call(item.changeHandler, value)
               }
             "
@@ -67,6 +68,11 @@
             :props="item.props"
             :clearable="item.clearable"
             :disabled="item.disabled"
+            @change="
+              value => {
+                item.changeHandler && call(item.changeHandler, value)
+              }
+            "
           />
         </template>
       </el-form-item>
@@ -143,13 +149,15 @@ export default {
         terminal: '',
         dateTime: '',
         flightType: '',
-        baggageType: ''
+        baggageType: '',
+        passengerType: []
       },
       formItems: [
         {
           prop: 'range',
           inputType: 'select',
           placeholder: '统计范围',
+          requiredWarning: '请先选择统计范围',
           options: [
             {
               value: '全部',
@@ -210,6 +218,7 @@ export default {
           prop: 'inOrOut',
           inputType: 'select',
           placeholder: '进离港',
+          requiredWarning: '请先选择进离港',
           clearable: true,
           options: []
         },
@@ -217,6 +226,7 @@ export default {
           prop: 'interval',
           inputType: 'select',
           placeholder: '时间维度',
+          requiredWarning: '请先选择统计时间维度',
           clearable: true,
           options: [
             {
@@ -242,7 +252,7 @@ export default {
           inputType: 'datePicker',
           clearable: true,
           width: '240px',
-          options: []
+          requiredWarning: '请先选择统计时间范围'
         },
         {
           prop: 'airline',
@@ -334,12 +344,30 @@ export default {
       func.call(this, ...args)
     },
     getData() {
-      // console.log(this.formData)
+      try {
+        this.formItems.forEach(item => {
+          if (item.requiredWarning && (!this.formData[item.prop] || this.formData[item.prop].length === 0)) {
+            throw new Error(item.requiredWarning)
+          }
+        })
+      } catch (error) {
+        this.$message.warning(error.message)
+        return
+      }
+      if (this.formData.range === '航线' && !this.formData.airline) {
+        this.$message.warning('请先选择航线')
+        return
+      } else if (this.formData.range === '航站' && !this.formData.airport) {
+        this.$message.warning('请先选择航站')
+        return
+      } else if (this.formData.range === '基地分公司' && !this.formData.area) {
+        this.$message.warning('请先选择基地分公司')
+        return
+      }
       this.$emit('getFormData', this.formData)
     },
     exportClickHandler() {
       this.$emit('export')
-      // this.$message.info('开发中')
     },
     settingClickHandler() {
       this.$emit('setting')

+ 155 - 86
src/views/statisticsCharts/components/statisticsTabs.vue

@@ -1,7 +1,14 @@
 <template>
   <div class="statistics-tabs">
-    <el-row :gutter="16" type="flex">
-      <el-col v-for="(tab, index) in tabList" :key="index" :span="4">
+    <el-row
+      :gutter="16"
+      type="flex"
+    >
+      <el-col
+        v-for="(tab, index) in tabList"
+        :key="index"
+        :span="4"
+      >
         <el-dropdown
           v-if="tab.children && tab.children.length"
           placement="bottom"
@@ -12,8 +19,11 @@
               class="tab-icon"
               :src="activeIndex === index ? activeIcon : defaultIcon"
               :alt="tab.title"
-            />
-            <el-tooltip :content="tab.title" placement="top">
+            >
+            <el-tooltip
+              :content="tab.title"
+              placement="top"
+            >
               <span class="tab-title">{{ tab.title }}</span>
             </el-tooltip>
             <i class="icon-arrow el-icon-caret-bottom" />
@@ -22,9 +32,8 @@
             <el-dropdown-item
               v-for="(childTab, childIndex) in tab.children"
               :key="childIndex"
-              :command="childTab.path"
-              >{{ childTab.title }}</el-dropdown-item
-            >
+              :command="[tab.path, childTab.path]"
+            >{{ childTab.title }}</el-dropdown-item>
           </el-dropdown-menu>
         </el-dropdown>
         <div
@@ -33,14 +42,17 @@
             'tab-bar tab-bar-single',
             { 'tab-active': activeIndex === index },
           ]"
-          @click="clickHandler(index)"
+          @click="clickHandler(tab.path)"
         >
           <img
             class="tab-icon"
             :src="activeIndex === index ? activeIcon : defaultIcon"
             :alt="tab.title"
-          />
-          <el-tooltip :content="tab.title" placement="top">
+          >
+          <el-tooltip
+            :content="tab.title"
+            placement="top"
+          >
             <span class="tab-title">{{ tab.title }}</span>
           </el-tooltip>
         </div>
@@ -51,129 +63,186 @@
 
 <script>
 export default {
-  name: "StatisticsTabs",
+  name: 'StatisticsTabs',
   data() {
     return {
-      defaultIcon: require("@/assets/nav/ic_statistical_top_default.png"),
-      activeIcon: require("@/assets/nav/ic_statistical_top_check.png"),
+      defaultIcon: require('@/assets/nav/ic_statistical_top_default.png'),
+      activeIcon: require('@/assets/nav/ic_statistical_top_check.png'),
       tabList: [
         {
-          title: "公司行李相关总统计",
+          title: '航司行李相关统计',
+          path: '/statisticsCharts/airlineCompany',
           children: [
             {
-              path: "/statisticsCharts/flight",
-              title: "航班量统计",
+              path: 'flight',
+              title: '航班量统计'
             },
             {
-              path: "/statisticsCharts/baggage",
-              title: "行李量统计",
+              path: 'baggage',
+              title: '行李量统计'
             },
             {
-              path: "/statisticsCharts/baggagePassenger",
-              title: "行李旅客量统计",
+              path: 'baggagePassenger',
+              title: '行李旅客量统计'
             },
             {
-              path: "/statisticsCharts/specialBaggage",
-              title: "特殊行李量统计",
+              path: 'specialBaggage',
+              title: '特殊行李量统计'
             },
             {
-              path: "/statisticsCharts/baggageAverage",
-              title: "平均行李量统计",
+              path: 'baggageAverage',
+              title: '平均行李量统计'
             },
             {
-              path: "/statisticsCharts/abnormalBaggage",
-              title: "异常行李量统计",
+              path: 'abnormalBaggage',
+              title: '异常行李量统计'
             },
             {
-              path: "/statisticsCharts/complaintBaggage",
-              title: "投诉行李量统计",
+              path: 'complaintBaggage',
+              title: '投诉行李量统计'
             },
             {
-              path: "/statisticsCharts/compensationBaggage",
-              title: "赔偿行李量统计",
+              path: 'compensationBaggage',
+              title: '赔偿行李量统计'
             },
             {
-              path: "/statisticsCharts/compensation",
-              title: "赔偿金额统计",
-            },
-          ],
+              path: 'compensation',
+              title: '赔偿金额统计'
+            }
+          ]
         },
         {
-          title: "旅客分类统计",
+          path: '/statisticsCharts/passengerClassification',
+          title: '旅客分类统计',
+          children: [
+            {
+              path: 'baggage',
+              title: '行李量统计'
+            },
+            {
+              path: 'baggagePassenger',
+              title: '行李旅客量统计'
+            },
+            {
+              path: 'specialBaggage',
+              title: '特殊行李量统计'
+            },
+            {
+              path: 'abnormalBaggage',
+              title: '异常行李量统计'
+            },
+            {
+              path: 'complaintBaggage',
+              title: '投诉行李量统计'
+            },
+            {
+              path: 'compensationBaggage',
+              title: '赔偿行李量统计'
+            },
+            {
+              path: 'compensation',
+              title: '赔偿金额统计'
+            }
+          ]
         },
         {
-          title: "航班分类相关统计",
+          path: '/statisticsCharts/flightClassification',
+          title: '航班分类相关统计',
+          children: [
+            {
+              path: 'flight',
+              title: '航班量统计'
+            },
+            {
+              path: 'baggage',
+              title: '行李量统计'
+            },
+            {
+              path: 'passenger',
+              title: '行李旅客量统计'
+            }
+          ]
         },
         {
-          path: "/statisticsCharts/node",
-          title: "扫描节点与位置分析",
+          path: '/statisticsCharts/node',
+          title: '扫描节点与位置分析'
         },
         {
-          title: "报表统计",
+          title: '报表统计',
+          path: '/statisticsCharts/report',
           children: [
             {
-              path: "/statisticsCharts/reportStatistics",
-              title: "运送效率报表统计",
+              path: 'reportStatistics',
+              title: '运送效率报表统计'
             },
             {
-              path: "/statisticsCharts/transitTable",
-              title: "中转专项报表统计",
-            },
-          ],
+              path: 'transitTable',
+              title: '中转专项报表统计'
+            }
+          ]
         },
         {
-          title: "特殊赔偿异常分类统计",
-        },
+          title: '特殊赔偿异常分类统计',
+          path: '/statisticsCharts/specialClassification',
+          children: [
+            {
+              path: 'special',
+              title: '特殊行李分类统计'
+            },
+            {
+              path: 'abnormal',
+              title: '异常行李分类统计'
+            },
+            {
+              path: 'compensationBaggage',
+              title: '赔偿行李分类统计'
+            },
+            {
+              path: 'compensation',
+              title: '赔偿金额分类统计'
+            }
+          ]
+        }
       ],
-      activeIndex: null,
-    };
+      activeIndex: null
+    }
   },
   watch: {
-    "$route.path": {
+    '$route.path': {
       handler(path) {
-        let activeIndex = null;
+        let activeIndex = null
         this.tabList.some((tab, index) => {
-          if (tab.path === path) {
-            activeIndex = index;
-            return true;
-          } else if (tab.children?.length) {
-            const matchedChildTab = tab.children.find(
-              (childTab) => childTab.path === path
-            );
-            if (matchedChildTab) {
-              activeIndex = index;
-              return true;
-            }
+          if (path.includes(tab.path)) {
+            activeIndex = index
+            return true
           }
-        });
-        this.activeIndex = activeIndex;
+        })
+        this.activeIndex = activeIndex
       },
-      immediate: true,
-    },
-    activeIndex(index) {
-      const path = this.tabList[index].path;
-      if (path) {
-        this.$router.push({
-          path,
-        });
-      }
-    },
+      immediate: true
+    }
   },
   methods: {
-    commandHandler(path) {
+    commandHandler(pathArray) {
+      if (pathArray.some(path => !path)) {
+        this.$message.info('开发中')
+        return
+      }
       this.$router.push({
-        path,
-      });
+        path: pathArray.join('/')
+      })
     },
-    clickHandler(index) {
-      if (this.tabList[index].path) {
-        this.activeIndex = index;
-      } else {
-        this.$message.info("开发中");
+    clickHandler(path) {
+      if (!path) {
+        this.$message.info('开发中')
+        return
       }
-    },
-  },
-};
+      this.$router.push({
+        path
+      })
+    }
+  }
+}
 </script>
 
 <style lang="scss" scoped>
@@ -208,7 +277,7 @@ export default {
         padding-left: 12px;
         padding-right: 8px;
         font-size: 14px;
-        font-family: Helvetica, "Microsoft YaHei";
+        font-family: Helvetica, 'Microsoft YaHei';
         font-weight: bold;
         color: #101116;
         letter-spacing: 0;

+ 1 - 0
src/views/statisticsCharts/mixins/noTerminal.js

@@ -8,6 +8,7 @@ export default {
           prop: 'range',
           inputType: 'select',
           placeholder: '统计范围',
+          requiredWarning: '请先选择统计范围',
           options: [
             {
               value: '全部',

+ 67 - 0
src/views/statisticsCharts/mixins/passengerType.js

@@ -0,0 +1,67 @@
+export default {
+  created() {
+    if (!this.customFormItems) {
+      this.customFormItems = []
+    }
+    this.customFormItems.push({
+      prop: 'passengerType',
+      inputType: 'cascader',
+      placeholder: '旅客类型',
+      requiredWarning: '请先选择旅客类型',
+      clearable: true,
+      options: [
+        {
+          value: '常客等级',
+          label: '常客',
+          children: [
+            {
+              value: '全部',
+              label: '全部'
+            },
+            {
+              value: '白金卡',
+              label: '白金卡'
+            },
+            {
+              value: '金卡',
+              label: '金卡'
+            },
+            {
+              value: '银卡',
+              label: '银卡'
+            },
+            {
+              value: '普卡',
+              label: '普卡'
+            },
+            {
+              value: '其它',
+              label: '其它'
+            }
+          ]
+        },
+        {
+          value: '要客类型',
+          label: '要客',
+          children: [
+            {
+              value: '全部',
+              label: '全部'
+            },
+            {
+              value: 'VVIP',
+              label: 'VVIP'
+            },
+            {
+              value: 'VIP',
+              label: 'VIP'
+            }
+          ]
+        }
+      ],
+      props: {
+        expandTrigger: 'hover'
+      }
+    })
+  }
+}

+ 4 - 4
src/views/statisticsCharts/views/abnormalBaggageStatisticsCharts.vue → src/views/statisticsCharts/views/airlineCompany/abnormalBaggageStatisticsCharts.vue

@@ -1,5 +1,5 @@
 <template>
-  <CommonStatisticsCharts
+  <CommonBarStatisticsCharts
     charts-title="异常行李量"
     :query-settings="querySettings"
     :custom-form-items="customFormItems"
@@ -7,12 +7,12 @@
 </template>
 
 <script>
-import CommonStatisticsCharts from '../components/commonStatisticsCharts.vue'
-import noTerminal from '../mixins/noTerminal'
+import CommonBarStatisticsCharts from '../../components/commonBarStatisticsCharts.vue'
+import noTerminal from '../../mixins/noTerminal'
 
 export default {
   name: 'AbnormalBaggageStatisticsCharts',
-  components: { CommonStatisticsCharts },
+  components: { CommonBarStatisticsCharts },
   mixins: [noTerminal],
   data() {
     return {

+ 3 - 3
src/views/statisticsCharts/views/baggageAverageStatisticsCharts.vue → src/views/statisticsCharts/views/airlineCompany/baggageAverageStatisticsCharts.vue

@@ -1,15 +1,15 @@
 <template>
-  <CommonStatisticsCharts
+  <CommonBarStatisticsCharts
     charts-title="平均行李量"
     :query-settings="querySettings"
   />
 </template>
 
 <script>
-import CommonStatisticsCharts from '../components/commonStatisticsCharts.vue'
+import CommonBarStatisticsCharts from '../../components/commonBarStatisticsCharts.vue'
 export default {
   name: 'BaggageAverageStatisticsCharts',
-  components: { CommonStatisticsCharts },
+  components: { CommonBarStatisticsCharts },
   data() {
     return {
       querySettings: {

+ 3 - 3
src/views/statisticsCharts/views/baggagePassengerStatisticsCharts.vue → src/views/statisticsCharts/views/airlineCompany/baggagePassengerStatisticsCharts.vue

@@ -1,15 +1,15 @@
 <template>
-  <CommonStatisticsCharts
+  <CommonBarStatisticsCharts
     charts-title="行李旅客量"
     :query-settings="querySettings"
   />
 </template>
 
 <script>
-import CommonStatisticsCharts from '../components/commonStatisticsCharts.vue'
+import CommonBarStatisticsCharts from '../../components/commonBarStatisticsCharts.vue'
 export default {
   name: 'BaggagePassengerStatisticsCharts',
-  components: { CommonStatisticsCharts },
+  components: { CommonBarStatisticsCharts },
   data() {
     return {
       querySettings: {

+ 7 - 7
src/views/statisticsCharts/views/baggageStatisticsCharts.vue → src/views/statisticsCharts/views/airlineCompany/baggageStatisticsCharts.vue

@@ -1,16 +1,16 @@
 <template>
-  <CommonStatisticsCharts
+  <CommonBarStatisticsCharts
     charts-title="行李量"
     :query-settings="querySettings"
-    :custom-form-items="customItems"
+    :custom-form-items="customFormItems"
   />
 </template>
 
 <script>
-import CommonStatisticsCharts from '../components/commonStatisticsCharts.vue'
+import CommonBarStatisticsCharts from '../../components/commonBarStatisticsCharts.vue'
 export default {
   name: 'BaggageStatisticsCharts',
-  components: { CommonStatisticsCharts },
+  components: { CommonBarStatisticsCharts },
   data() {
     return {
       querySettings: {
@@ -19,7 +19,7 @@ export default {
         notDelByArea: DATACONTENT_ID.notDelByArea,
         notDelByOther: DATACONTENT_ID.notDelByOther
       },
-      customItems: [
+      customFormItems: [
         {
           prop: 'baggageType',
           inputType: 'select',
@@ -28,11 +28,11 @@ export default {
           clearable: true,
           options: [
             {
-              value: 'all',
+              value: '全部',
               label: '全部'
             },
             {
-              value: 'notDEL',
+              value: '不包含DEL',
               label: '不包含DEL'
             }
           ]

+ 4 - 4
src/views/statisticsCharts/views/compensationBaggageStatisticsCharts.vue → src/views/statisticsCharts/views/airlineCompany/compensationBaggageStatisticsCharts.vue

@@ -1,5 +1,5 @@
 <template>
-  <CommonStatisticsCharts
+  <CommonBarStatisticsCharts
     charts-title="赔偿行李量"
     :query-settings="querySettings"
     :custom-form-items="customFormItems"
@@ -7,12 +7,12 @@
 </template>
 
 <script>
-import CommonStatisticsCharts from '../components/commonStatisticsCharts.vue'
-import noTerminal from '../mixins/noTerminal'
+import CommonBarStatisticsCharts from '../../components/commonBarStatisticsCharts.vue'
+import noTerminal from '../../mixins/noTerminal'
 
 export default {
   name: 'CompensationBaggageStatisticsCharts',
-  components: { CommonStatisticsCharts },
+  components: { CommonBarStatisticsCharts },
   mixins: [noTerminal],
   data() {
     return {

+ 4 - 4
src/views/statisticsCharts/views/compensationStatisticsCharts.vue → src/views/statisticsCharts/views/airlineCompany/compensationStatisticsCharts.vue

@@ -1,5 +1,5 @@
 <template>
-  <CommonStatisticsCharts
+  <CommonBarStatisticsCharts
     charts-title="赔偿金额"
     :query-settings="querySettings"
     :custom-form-items="customFormItems"
@@ -7,12 +7,12 @@
 </template>
 
 <script>
-import CommonStatisticsCharts from '../components/commonStatisticsCharts.vue'
-import noTerminal from '../mixins/noTerminal'
+import CommonBarStatisticsCharts from '../../components/commonBarStatisticsCharts.vue'
+import noTerminal from '../../mixins/noTerminal'
 
 export default {
   name: 'CompensationStatisticsCharts',
-  components: { CommonStatisticsCharts },
+  components: { CommonBarStatisticsCharts },
   mixins: [noTerminal],
   data() {
     return {

+ 4 - 4
src/views/statisticsCharts/views/complaintBaggageStatisticsCharts.vue → src/views/statisticsCharts/views/airlineCompany/complaintBaggageStatisticsCharts.vue

@@ -1,5 +1,5 @@
 <template>
-  <CommonStatisticsCharts
+  <CommonBarStatisticsCharts
     charts-title="投诉行李量"
     :query-settings="querySettings"
     :custom-form-items="customFormItems"
@@ -7,12 +7,12 @@
 </template>
 
 <script>
-import CommonStatisticsCharts from '../components/commonStatisticsCharts.vue'
-import noTerminal from '../mixins/noTerminal'
+import CommonBarStatisticsCharts from '../../components/commonBarStatisticsCharts.vue'
+import noTerminal from '../../mixins/noTerminal'
 
 export default {
   name: 'ComplaintBaggageStatisticsCharts',
-  components: { CommonStatisticsCharts },
+  components: { CommonBarStatisticsCharts },
   mixins: [noTerminal],
   data() {
     return {

+ 7 - 7
src/views/statisticsCharts/views/flightStatisticsCharts.vue → src/views/statisticsCharts/views/airlineCompany/flightStatisticsCharts.vue

@@ -1,16 +1,16 @@
 <template>
-  <CommonStatisticsCharts
+  <CommonBarStatisticsCharts
     charts-title="航班量"
     :query-settings="querySettings"
-    :custom-form-items="customItems"
+    :custom-form-items="customFormItems"
   />
 </template>
 
 <script>
-import CommonStatisticsCharts from '../components/commonStatisticsCharts.vue'
+import CommonBarStatisticsCharts from '../../components/commonBarStatisticsCharts.vue'
 export default {
   name: 'FlightStatisticsCharts',
-  components: { CommonStatisticsCharts },
+  components: { CommonBarStatisticsCharts },
   data() {
     return {
       querySettings: {
@@ -19,7 +19,7 @@ export default {
         withBaggageByArea: DATACONTENT_ID.withBaggageByArea,
         withBaggageByOther: DATACONTENT_ID.withBaggageByOther
       },
-      customItems: [
+      customFormItems: [
         {
           prop: 'flightType',
           inputType: 'select',
@@ -28,11 +28,11 @@ export default {
           clearable: true,
           options: [
             {
-              value: 'all',
+              value: '全部',
               label: '全部'
             },
             {
-              value: 'withBaggage',
+              value: '有行李',
               label: '有行李'
             }
           ]

+ 3 - 3
src/views/statisticsCharts/views/specialBaggageStatisticsCharts.vue → src/views/statisticsCharts/views/airlineCompany/specialBaggageStatisticsCharts.vue

@@ -1,15 +1,15 @@
 <template>
-  <CommonStatisticsCharts
+  <CommonBarStatisticsCharts
     charts-title="特殊行李量"
     :query-settings="querySettings"
   />
 </template>
 
 <script>
-import CommonStatisticsCharts from '../components/commonStatisticsCharts.vue'
+import CommonBarStatisticsCharts from '../../components/commonBarStatisticsCharts.vue'
 export default {
   name: 'SpecialBaggageStatisticsCharts',
-  components: { CommonStatisticsCharts },
+  components: { CommonBarStatisticsCharts },
   data() {
     return {
       querySettings: {

+ 26 - 0
src/views/statisticsCharts/views/flightClassification/baggageClassificationStatisticsCharts.vue

@@ -0,0 +1,26 @@
+<template>
+  <CommonPieStatisticsCharts
+    charts-title="航班行李"
+    :query-settings="querySettings"
+    :categories="categories"
+  />
+</template>
+
+<script>
+import CommonPieStatisticsCharts from '../../components/commonPieStatisticsCharts.vue'
+export default {
+  name: 'FlightBaggageClassificationStatisticsCharts',
+  components: { CommonPieStatisticsCharts },
+  data() {
+    return {
+      querySettings: {
+        byArea: DATACONTENT_ID.flightClassificationByArea,
+        byOther: DATACONTENT_ID.flightClassificationByOther,
+        categoryKey: 'ditype',
+        seriesKey: '行李量'
+      },
+      categories: ['国内', '国际', '其它', '混合']
+    }
+  }
+}
+</script>

+ 26 - 0
src/views/statisticsCharts/views/flightClassification/flightClassificationStatisticsCharts.vue

@@ -0,0 +1,26 @@
+<template>
+  <CommonPieStatisticsCharts
+    charts-title="航班量"
+    :query-settings="querySettings"
+    :categories="categories"
+  />
+</template>
+
+<script>
+import CommonPieStatisticsCharts from '../../components/commonPieStatisticsCharts.vue'
+export default {
+  name: 'FlightClassificationStatisticsCharts',
+  components: { CommonPieStatisticsCharts },
+  data() {
+    return {
+      querySettings: {
+        byArea: DATACONTENT_ID.flightClassificationByArea,
+        byOther: DATACONTENT_ID.flightClassificationByOther,
+        categoryKey: 'ditype',
+        seriesKey: '航班量'
+      },
+      categories: ['国内', '国际', '其它', '混合']
+    }
+  }
+}
+</script>

+ 26 - 0
src/views/statisticsCharts/views/flightClassification/passengerClassificationStatisticsCharts.vue

@@ -0,0 +1,26 @@
+<template>
+  <CommonPieStatisticsCharts
+    charts-title="航班量"
+    :query-settings="querySettings"
+    :categories="categories"
+  />
+</template>
+
+<script>
+import CommonPieStatisticsCharts from '../../components/commonPieStatisticsCharts.vue'
+export default {
+  name: 'FlightPassengerClassificationStatisticsCharts',
+  components: { CommonPieStatisticsCharts },
+  data() {
+    return {
+      querySettings: {
+        byArea: DATACONTENT_ID.flightClassificationByArea,
+        byOther: DATACONTENT_ID.flightClassificationByOther,
+        categoryKey: 'ditype',
+        seriesKey: '行李旅客量'
+      },
+      categories: ['国内', '国际', '其它', '混合']
+    }
+  }
+}
+</script>

+ 30 - 0
src/views/statisticsCharts/views/passengerClassification/abnormalBaggageStatisticsCharts.vue

@@ -0,0 +1,30 @@
+<template>
+  <CommonBarStatisticsCharts
+    charts-title="异常行李量"
+    :query-settings="querySettings"
+    :custom-form-items="customFormItems"
+  />
+</template>
+
+<script>
+import CommonBarStatisticsCharts from '../../components/commonBarStatisticsCharts.vue'
+import noTerminal from '../../mixins/noTerminal'
+import passengerType from '../../mixins/passengerType'
+
+export default {
+  name: 'PassengerAbnormalBaggageStatisticsCharts',
+  components: { CommonBarStatisticsCharts },
+  mixins: [noTerminal, passengerType],
+  data() {
+    return {
+      querySettings: {
+        byArea: DATACONTENT_ID.passengerNormalClassificationByArea,
+        byOther: DATACONTENT_ID.passengerNormalClassificationByOther,
+        importantByArea: DATACONTENT_ID.passengerImportantClassificationByArea,
+        importantByOther: DATACONTENT_ID.passengerImportantClassificationByOther,
+        seriesKey: '异常行李量'
+      }
+    }
+  }
+}
+</script>

+ 29 - 0
src/views/statisticsCharts/views/passengerClassification/baggagePassengerStatisticsCharts.vue

@@ -0,0 +1,29 @@
+<template>
+  <CommonBarStatisticsCharts
+    charts-title="行李旅客量"
+    :query-settings="querySettings"
+    :custom-form-items="customFormItems"
+  />
+</template>
+
+<script>
+import CommonBarStatisticsCharts from '../../components/commonBarStatisticsCharts.vue'
+import passengerType from '../../mixins/passengerType'
+
+export default {
+  name: 'PassengerStatisticsCharts',
+  components: { CommonBarStatisticsCharts },
+  mixins: [passengerType],
+  data() {
+    return {
+      querySettings: {
+        byArea: DATACONTENT_ID.passengerNormalClassificationByArea,
+        byOther: DATACONTENT_ID.passengerNormalClassificationByOther,
+        importantByArea: DATACONTENT_ID.passengerImportantClassificationByArea,
+        importantByOther: DATACONTENT_ID.passengerImportantClassificationByOther,
+        seriesKey: '异常行李量'
+      }
+    }
+  }
+}
+</script>

+ 29 - 0
src/views/statisticsCharts/views/passengerClassification/baggageStatisticsCharts.vue

@@ -0,0 +1,29 @@
+<template>
+  <CommonBarStatisticsCharts
+    charts-title="行李量"
+    :query-settings="querySettings"
+    :custom-form-items="customFormItems"
+  />
+</template>
+
+<script>
+import CommonBarStatisticsCharts from '../../components/commonBarStatisticsCharts.vue'
+import passengerType from '../../mixins/passengerType'
+
+export default {
+  name: 'PassengerBaggageStatisticsCharts',
+  components: { CommonBarStatisticsCharts },
+  mixins: [passengerType],
+  data() {
+    return {
+      querySettings: {
+        byArea: DATACONTENT_ID.passengerNormalClassificationByArea,
+        byOther: DATACONTENT_ID.passengerNormalClassificationByOther,
+        importantByArea: DATACONTENT_ID.passengerImportantClassificationByArea,
+        importantByOther: DATACONTENT_ID.passengerImportantClassificationByOther,
+        seriesKey: '行李量'
+      }
+    }
+  }
+}
+</script>

+ 30 - 0
src/views/statisticsCharts/views/passengerClassification/compensationBaggageStatisticsCharts.vue

@@ -0,0 +1,30 @@
+<template>
+  <CommonBarStatisticsCharts
+    charts-title="赔偿行李量"
+    :query-settings="querySettings"
+    :custom-form-items="customFormItems"
+  />
+</template>
+
+<script>
+import CommonBarStatisticsCharts from '../../components/commonBarStatisticsCharts.vue'
+import noTerminal from '../../mixins/noTerminal'
+import passengerType from '../../mixins/passengerType'
+
+export default {
+  name: 'PassengerCompensationBaggageStatisticsCharts',
+  components: { CommonBarStatisticsCharts },
+  mixins: [noTerminal, passengerType],
+  data() {
+    return {
+      querySettings: {
+        byArea: DATACONTENT_ID.passengerNormalClassificationByArea,
+        byOther: DATACONTENT_ID.passengerNormalClassificationByOther,
+        importantByArea: DATACONTENT_ID.passengerImportantClassificationByArea,
+        importantByOther: DATACONTENT_ID.passengerImportantClassificationByOther,
+        seriesKey: '赔偿行李量'
+      }
+    }
+  }
+}
+</script>

+ 30 - 0
src/views/statisticsCharts/views/passengerClassification/compensationStatisticsCharts.vue

@@ -0,0 +1,30 @@
+<template>
+  <CommonBarStatisticsCharts
+    charts-title="赔偿金额"
+    :query-settings="querySettings"
+    :custom-form-items="customFormItems"
+  />
+</template>
+
+<script>
+import CommonBarStatisticsCharts from '../../components/commonBarStatisticsCharts.vue'
+import noTerminal from '../../mixins/noTerminal'
+import passengerType from '../../mixins/passengerType'
+
+export default {
+  name: 'CompensationStatisticsCharts',
+  components: { CommonBarStatisticsCharts },
+  mixins: [noTerminal, passengerType],
+  data() {
+    return {
+      querySettings: {
+        byArea: DATACONTENT_ID.passengerNormalClassificationByArea,
+        byOther: DATACONTENT_ID.passengerNormalClassificationByOther,
+        importantByArea: DATACONTENT_ID.passengerImportantClassificationByArea,
+        importantByOther: DATACONTENT_ID.passengerImportantClassificationByOther,
+        seriesKey: '赔偿金额'
+      }
+    }
+  }
+}
+</script>

+ 30 - 0
src/views/statisticsCharts/views/passengerClassification/complaintBaggageStatisticsCharts.vue

@@ -0,0 +1,30 @@
+<template>
+  <CommonBarStatisticsCharts
+    charts-title="投诉行李量"
+    :query-settings="querySettings"
+    :custom-form-items="customFormItems"
+  />
+</template>
+
+<script>
+import CommonBarStatisticsCharts from '../../components/commonBarStatisticsCharts.vue'
+import noTerminal from '../../mixins/noTerminal'
+import passengerType from '../../mixins/passengerType'
+
+export default {
+  name: 'ComplaintBaggageStatisticsCharts',
+  components: { CommonBarStatisticsCharts },
+  mixins: [noTerminal, passengerType],
+  data() {
+    return {
+      querySettings: {
+        byArea: DATACONTENT_ID.passengerNormalClassificationByArea,
+        byOther: DATACONTENT_ID.passengerNormalClassificationByOther,
+        importantByArea: DATACONTENT_ID.passengerImportantClassificationByArea,
+        importantByOther: DATACONTENT_ID.passengerImportantClassificationByOther,
+        seriesKey: '投诉行李量'
+      }
+    }
+  }
+}
+</script>

+ 30 - 0
src/views/statisticsCharts/views/passengerClassification/specialBaggageStatisticsCharts.vue

@@ -0,0 +1,30 @@
+<template>
+  <CommonBarStatisticsCharts
+    charts-title="特殊行李量"
+    :query-settings="querySettings"
+    :custom-form-items="customFormItems"
+  />
+</template>
+
+<script>
+import CommonBarStatisticsCharts from '../../components/commonBarStatisticsCharts.vue'
+import noTerminal from '../../mixins/noTerminal'
+import passengerType from '../../mixins/passengerType'
+
+export default {
+  name: 'SpecialBaggageStatisticsCharts',
+  components: { CommonBarStatisticsCharts },
+  mixins: [noTerminal, passengerType],
+  data() {
+    return {
+      querySettings: {
+        byArea: DATACONTENT_ID.passengerNormalClassificationByArea,
+        byOther: DATACONTENT_ID.passengerNormalClassificationByOther,
+        importantByArea: DATACONTENT_ID.passengerImportantClassificationByArea,
+        importantByOther: DATACONTENT_ID.passengerImportantClassificationByOther,
+        seriesKey: '特殊行李量'
+      }
+    }
+  }
+}
+</script>

+ 3 - 3
src/views/statisticsCharts/views/reportStatistics.vue → src/views/statisticsCharts/views/report/reportStatistics.vue

@@ -2,7 +2,7 @@
   <!-- 运送效率报表统计 -->
   <div class="statstics-wrapper">
     <StatisticsHeader
-      title="运送效率报表统计"
+      title="运送效率报表"
       :items="formItems"
       :data="formData"
       with-setting
@@ -19,8 +19,8 @@
   </div>
 </template>
 <script>
-import StatisticsHeader from "../components/statisticsHeader.vue";
-import Tableforms from "../components/tableforms";
+import StatisticsHeader from "../../components/statisticsHeader.vue";
+import Tableforms from "../../components/tableforms";
 export default {
   name: "ReportStatistics",
   data() {

+ 3 - 3
src/views/statisticsCharts/views/transitTable.vue → src/views/statisticsCharts/views/report/transitTable.vue

@@ -2,7 +2,7 @@
   <!-- 中转专项报表统计 -->
   <div class="statstics-wrapper">
     <StatisticsHeader
-      title="中转专项报表统计"
+      title="中转专项报表"
       :items="formItems"
       :data="formData"
       with-setting
@@ -19,8 +19,8 @@
   </div>
 </template>
 <script>
-import StatisticsHeader from "../components/statisticsHeader.vue";
-import Tableformcp from "../components/tableformcp";
+import StatisticsHeader from "../../components/statisticsHeader.vue";
+import Tableformcp from "../../components/tableformcp";
 export default {
   name: "ReportStatistics",
   data() {

+ 31 - 0
src/views/statisticsCharts/views/special/abnormalBaggageClassificationStatisticsCharts.vue

@@ -0,0 +1,31 @@
+<template>
+  <CommonPieStatisticsCharts
+    charts-title="异常行李分类"
+    :query-settings="querySettings"
+    :custom-form-items="customFormItems"
+    :categories="categories"
+  />
+</template>
+
+<script>
+import CommonPieStatisticsCharts from '../../components/commonPieStatisticsCharts.vue'
+import noTerminal from '../../mixins/noTerminal'
+
+export default {
+  name: 'AbnormalBaggageClassificationStatisticsCharts',
+  components: { CommonPieStatisticsCharts },
+  mixins: [noTerminal],
+
+  data() {
+    return {
+      querySettings: {
+        byArea: DATACONTENT_ID.abnormalBaggageClassificationByArea,
+        byOther: DATACONTENT_ID.abnormalBaggageClassificationByOther,
+        categoryKey: '异常类型',
+        seriesKey: '异常行李量'
+      },
+      categories: ['少收', '多收', '破损']
+    }
+  }
+}
+</script>

+ 31 - 0
src/views/statisticsCharts/views/special/compensationBaggageClassificationStatisticsCharts.vue

@@ -0,0 +1,31 @@
+<template>
+  <CommonPieStatisticsCharts
+    charts-title="赔偿行李量分类"
+    :query-settings="querySettings"
+    :custom-form-items="customFormItems"
+    :categories="categories"
+  />
+</template>
+
+<script>
+import CommonPieStatisticsCharts from '../../components/commonPieStatisticsCharts.vue'
+import noTerminal from '../../mixins/noTerminal'
+
+export default {
+  name: 'CompensationClassificationStatisticsCharts',
+  components: { CommonPieStatisticsCharts },
+  mixins: [noTerminal],
+
+  data() {
+    return {
+      querySettings: {
+        byArea: DATACONTENT_ID.compensationClassificationByArea,
+        byOther: DATACONTENT_ID.compensationClassificationByOther,
+        categoryKey: '赔偿类型',
+        seriesKey: '赔偿行李量'
+      },
+      categories: ['F', 'D', 'A', 'X', 'G']
+    }
+  }
+}
+</script>

+ 31 - 0
src/views/statisticsCharts/views/special/compensationClassificationStatisticsCharts.vue

@@ -0,0 +1,31 @@
+<template>
+  <CommonPieStatisticsCharts
+    charts-title="赔偿金额分类"
+    :query-settings="querySettings"
+    :custom-form-items="customFormItems"
+    :categories="categories"
+  />
+</template>
+
+<script>
+import CommonPieStatisticsCharts from '../../components/commonPieStatisticsCharts.vue'
+import noTerminal from '../../mixins/noTerminal'
+
+export default {
+  name: 'CompensationClassificationStatisticsCharts',
+  components: { CommonPieStatisticsCharts },
+  mixins: [noTerminal],
+
+  data() {
+    return {
+      querySettings: {
+        byArea: DATACONTENT_ID.compensationClassificationByArea,
+        byOther: DATACONTENT_ID.compensationClassificationByOther,
+        categoryKey: '赔偿类型',
+        seriesKey: '赔偿金额'
+      },
+      categories: ['F', 'D', 'A', 'X', 'G']
+    }
+  }
+}
+</script>

+ 26 - 0
src/views/statisticsCharts/views/special/specialBaggageClassificationStatisticsCharts.vue

@@ -0,0 +1,26 @@
+<template>
+  <CommonPieStatisticsCharts
+    charts-title="特殊行李分类"
+    :query-settings="querySettings"
+    :categories="categories"
+  />
+</template>
+
+<script>
+import CommonPieStatisticsCharts from '../../components/commonPieStatisticsCharts.vue'
+export default {
+  name: 'SpecialBaggageClassificationStatisticsCharts',
+  components: { CommonPieStatisticsCharts },
+  data() {
+    return {
+      querySettings: {
+        byArea: DATACONTENT_ID.specialBaggageClassificationByArea,
+        byOther: DATACONTENT_ID.specialBaggageClassificationByOther,
+        categoryKey: 'special',
+        seriesKey: 'specialnum'
+      },
+      categories: ['小动物', '乘务员', '枪支', '其它', '超规']
+    }
+  }
+}
+</script>