tianyabing 2 лет назад
Родитель
Сommit
2bacec3ea1
100 измененных файлов с 2867 добавлено и 701 удалено
  1. 10 0
      src/api/carbon/apiCarbonCar.js
  2. 10 0
      src/api/carbon/apiCarbonOverview.js
  3. 10 0
      src/api/carbon/apiCarbonPrint.js
  4. 10 0
      src/api/carbon/apiCarbonPv.js
  5. 0 27
      src/api/dashboard.js
  6. 81 0
      src/api/dashboard/apiDashboard.js
  7. 10 0
      src/api/life/apiLifeHealthyHome.js
  8. 10 0
      src/api/life/apiLifePark.js
  9. 10 0
      src/api/life/apiLifeRestaurant.js
  10. 10 0
      src/api/life/apiLifeSupermarket.js
  11. 29 0
      src/api/operation/apiOperationAnalysis.js
  12. 10 0
      src/api/operation/apiOperationMoney.js
  13. 10 0
      src/api/operation/apiOperationSpace.js
  14. 10 0
      src/api/security/apiSecurityAlarmMgr.js
  15. 10 0
      src/api/security/apiSecurityPerson.js
  16. 10 0
      src/api/work/apiWorkBus.js
  17. 10 0
      src/api/work/apiWorkFloor.js
  18. 10 0
      src/api/work/apiWorkMeeting.js
  19. 10 0
      src/api/work/apiWorkPrint.js
  20. BIN
      src/assets/images/business/energy/cold-show.png
  21. BIN
      src/assets/images/business/energy/cold.png
  22. BIN
      src/assets/images/business/energy/device-air.png
  23. BIN
      src/assets/images/business/energy/device-pv.png
  24. BIN
      src/assets/images/business/energy/electric.png
  25. BIN
      src/assets/images/business/energy/energy.png
  26. BIN
      src/assets/images/business/energy/hot.png
  27. BIN
      src/assets/images/business/energy/pv.png
  28. BIN
      src/assets/images/business/energy/water.png
  29. 0 0
      src/assets/images/function/asideMenus/智慧餐厅.png
  30. BIN
      src/assets/images/functionColor/small/会议管理.png
  31. BIN
      src/assets/images/functionColor/small/健康小屋.png
  32. BIN
      src/assets/images/functionColor/small/光伏发电.png
  33. BIN
      src/assets/images/functionColor/small/公车管理.png
  34. BIN
      src/assets/images/functionColor/small/安消联动.png
  35. BIN
      src/assets/images/functionColor/small/安防人员.png
  36. BIN
      src/assets/images/functionColor/small/报告.png
  37. BIN
      src/assets/images/functionColor/small/报表.png
  38. BIN
      src/assets/images/functionColor/small/数智双碳.png
  39. BIN
      src/assets/images/functionColor/small/文印排放.png
  40. BIN
      src/assets/images/functionColor/small/文印管理.png
  41. BIN
      src/assets/images/functionColor/small/无人商超.png
  42. BIN
      src/assets/images/functionColor/small/智会议.png
  43. BIN
      src/assets/images/functionColor/small/智安防.png
  44. BIN
      src/assets/images/functionColor/small/智慧停车.png
  45. BIN
      src/assets/images/functionColor/small/智慧餐厅.png
  46. BIN
      src/assets/images/functionColor/small/智能源.png
  47. BIN
      src/assets/images/functionColor/small/权限管理.png
  48. BIN
      src/assets/images/functionColor/small/楼层概览.png
  49. BIN
      src/assets/images/functionColor/small/空间管理.png
  50. BIN
      src/assets/images/functionColor/small/能源管理.png
  51. BIN
      src/assets/images/functionColor/small/行为权限.png
  52. BIN
      src/assets/images/functionColor/small/角色权限.png
  53. BIN
      src/assets/images/functionColor/small/设备交互.png
  54. BIN
      src/assets/images/functionColor/small/资产管理.png
  55. BIN
      src/assets/images/functionColor/small/车辆排放.png
  56. 0 0
      src/assets/images/functionColor/权限查看.png
  57. 210 0
      src/components/business/analysis/all/businessEnergyChart.vue
  58. 66 0
      src/components/business/analysis/all/businessEnergyDetail.vue
  59. 96 0
      src/components/business/analysis/all/businessEnergyDistributeChart.vue
  60. 171 14
      src/components/business/analysis/analysis.vue
  61. 108 0
      src/components/business/analysis/cold/BusinessColdChart.vue
  62. 122 0
      src/components/business/analysis/cold/BusinessColdDetail.vue
  63. 156 0
      src/components/business/analysis/electric/BusinessElectricChart.vue
  64. 100 0
      src/components/business/analysis/electric/BusinessElectricDetail.vue
  65. 63 0
      src/components/business/analysis/electric/BusinessElectricDistributeChart.vue
  66. 91 0
      src/components/business/analysis/hot/BusinessHotChart.vue
  67. 73 0
      src/components/business/analysis/hot/BusinessHotDetail.vue
  68. 63 0
      src/components/business/analysis/hot/BusinessHotDistributeChart.vue
  69. 108 0
      src/components/business/analysis/pv/BusinessPvChart.vue
  70. 114 0
      src/components/business/analysis/pv/BusinessPvDetail.vue
  71. 47 35
      src/components/business/analysis/pv/BusinessPvMoneyChart.vue
  72. 131 0
      src/components/business/analysis/water/BusinessWaterChart.vue
  73. 99 0
      src/components/business/analysis/water/BusinessWaterDetail.vue
  74. 60 0
      src/components/business/analysis/water/BusinessWaterDistributeChart.vue
  75. 32 65
      src/components/business/asset/asset.vue
  76. 40 223
      src/components/business/space/space.vue
  77. 1 2
      src/components/common/coreData.vue
  78. 34 2
      src/components/common/query.vue
  79. 1 1
      src/components/dashboard/commonFuncManage/function.vue
  80. 1 1
      src/components/dashboard/more/dashboardMore.vue
  81. 1 1
      src/components/dashboard/more/spaceOverview.vue
  82. 27 6
      src/components/dashboard/portrait/coldPortrait.vue
  83. 30 8
      src/components/dashboard/portrait/electricityPortrait.vue
  84. 29 10
      src/components/dashboard/portrait/hotPortrait.vue
  85. 33 10
      src/components/dashboard/portrait/moneyPortrait.vue
  86. 45 30
      src/components/dashboard/portrait/person/personTrendChart.vue
  87. 34 15
      src/components/dashboard/portrait/personPortrait.vue
  88. 36 8
      src/components/dashboard/portrait/restaurantPortrait.vue
  89. 29 8
      src/components/dashboard/portrait/supermarketPortrait.vue
  90. 31 9
      src/components/dashboard/portrait/waterPortrait.vue
  91. 0 136
      src/components/doubleCarbon/AnalogData.js
  92. 42 9
      src/components/doubleCarbon/PV/doubleCarbonPv.vue
  93. 42 10
      src/components/doubleCarbon/car/doubleCarbonCar.vue
  94. 45 11
      src/components/doubleCarbon/overview/doubleCarbonOverview.vue
  95. 42 10
      src/components/doubleCarbon/print/doubleCarbonPrint.vue
  96. 2 2
      src/components/home/ContainerAside.vue
  97. 37 11
      src/components/life/healthyHome/lifeHealthyHome.vue
  98. 40 11
      src/components/life/parking/lifeParking.vue
  99. 25 14
      src/components/life/restaurant/lifeRestaurant.vue
  100. 40 12
      src/components/life/supermarket/lifeSupermarket.vue

+ 10 - 0
src/api/carbon/apiCarbonCar.js

@@ -0,0 +1,10 @@
+import Request from "@/utils/request";
+
+// 核心指标
+const getCoreData = (timeRange) => {
+    return Request.post('/vehicle/getVehicleCoreIndicators', timeRange)
+}
+
+export default {
+    getCoreData,
+}

+ 10 - 0
src/api/carbon/apiCarbonOverview.js

@@ -0,0 +1,10 @@
+import Request from "@/utils/request";
+
+// 核心指标
+const getCoreData = (timeRange) => {
+    return Request.post('/carbon/getCarbonCoreIndicators', timeRange)
+}
+
+export default {
+    getCoreData,
+}

+ 10 - 0
src/api/carbon/apiCarbonPrint.js

@@ -0,0 +1,10 @@
+import Request from "@/utils/request";
+
+// 核心指标
+const getCoreData = (timeRange) => {
+    return Request.post('/vehicle/getVehicleCoreIndicators', timeRange)
+}
+
+export default {
+    getCoreData,
+}

+ 10 - 0
src/api/carbon/apiCarbonPv.js

@@ -0,0 +1,10 @@
+import Request from "@/utils/request";
+
+// 核心指标
+const getCoreData = (timeRange) => {
+    return Request.post('/photovoltaic/getPhotovoltaicCoreIndicators', timeRange)
+}
+
+export default {
+    getCoreData,
+}

+ 0 - 27
src/api/dashboard.js

@@ -1,27 +0,0 @@
-import Request from "@/utils/request";
-
-// 获取空间概览
-const getSpaceOverview = (datetime) => {
-    return Request.get('/dashboard/getBuildingSituation', {
-        datetime: datetime
-    })
-}
-
-// 获取人员核心指标
-const getPersonCoreData = (timeRange) => {
-    return Request.get('/personnel/getPersonnelInfoCount', timeRange)
-}
-// 获取人员统计信息
-const getPersonEnterSummary = (startDate, endDate) => {
-    return Request.get('/personnel/getPersonnelInfoList', {
-        startDate: startDate,
-        endDate: endDate
-    })
-}
-
-export default {
-    // 人员
-    getPersonCoreData,
-
-    getSpaceOverview,
-}

+ 81 - 0
src/api/dashboard/apiDashboard.js

@@ -0,0 +1,81 @@
+import Request from "@/utils/request";
+
+// 获取空间概览
+const getSpaceOverview = (datetime) => {
+    return Request.get('/dashboard/getBuildingSituation', {
+        datetime: datetime
+    })
+}
+
+// 获取人员核心指标
+const getPersonCoreData = (timeRange) => {
+    return Request.get('/personnel/getPersonnelInfoCount', timeRange)
+}
+// 获取人员统计信息
+const getPersonEnterSummary = (timeRange) => {
+    return Request.get('/personnel/getPersonnelInfoList', timeRange)
+}
+
+// 获取餐厅核心指标
+const getRestCoreData = (timeRange) => {
+    return Request.get('/dining_room/getRestaurantConsumption', timeRange)
+}
+
+const getRestTrendData = (timeRange) => {
+    return Request.get('/dining_room/getRestaurantConsumptionChart', timeRange)
+}
+
+// 商超
+const getSuperMarketCoreData = (timeRange) => {
+    return Request.get('/dashboard_supermarket/getSupermarketCoreIndicators', timeRange)
+}
+
+// 用电
+const getElectricityCoreData = (timeRange) => {
+    return Request.get('/electricity/getElectricityCoreIndicators', timeRange)
+}
+
+// 用水
+const getWaterCoreData = (timeRange) => {
+    return Request.get('/water/getWaterCoreIndicators', timeRange)
+}
+
+// 用热
+const getHotCoreData = (timeRange) => {
+    return Request.get('/use_heat/getUseHeatCoreIndicators', timeRange)
+}
+
+// 用冷
+const getColdCoreData = (timeRange) => {
+    return Request.get('/use_cold/getUseColdCoreIndicators', timeRange)
+}
+
+// 资产
+const getMoneyCoreData = (timeRange) => {
+    return Request.get('/asset/getAssetCoreIndicators', timeRange)
+}
+
+
+export default {
+    getSpaceOverview,
+
+    getPersonCoreData,
+    getPersonEnterSummary,
+
+    getRestCoreData,
+    getRestTrendData,
+
+    getSuperMarketCoreData,
+
+    getElectricityCoreData,
+
+    getWaterCoreData,
+
+    getHotCoreData,
+
+    getColdCoreData,
+
+    getMoneyCoreData,
+
+
+}

+ 10 - 0
src/api/life/apiLifeHealthyHome.js

@@ -0,0 +1,10 @@
+import Request from "@/utils/request";
+
+// 核心指标
+const getCoreData = (timeRange) => {
+    return Request.post('/healthhome/getCoreIndicators', timeRange)
+}
+
+export default {
+    getCoreData,
+}

+ 10 - 0
src/api/life/apiLifePark.js

@@ -0,0 +1,10 @@
+import Request from "@/utils/request";
+
+// 核心指标
+const getCoreData = (param) => {
+    return Request.post('/parking/getCoreIndicators', param)
+}
+
+export default {
+    getCoreData,
+}

+ 10 - 0
src/api/life/apiLifeRestaurant.js

@@ -0,0 +1,10 @@
+import Request from "@/utils/request";
+
+// 核心指标
+const getCoreData = (timeRange) => {
+    return Request.post('/restaurant/getCoreIndicators', timeRange)
+}
+
+export default {
+    getCoreData,
+}

+ 10 - 0
src/api/life/apiLifeSupermarket.js

@@ -0,0 +1,10 @@
+import Request from "@/utils/request";
+
+// 核心指标
+const getCoreData = (timeRange) => {
+    return Request.post('/life_supermarket/getCoreIndicators', timeRange)
+}
+
+export default {
+    getCoreData,
+}

+ 29 - 0
src/api/operation/apiOperationAnalysis.js

@@ -0,0 +1,29 @@
+import Request from "@/utils/request";
+
+// 核心指标
+const getCoreData = (param) => {
+    let type = param.energy?param.energy:'all';
+    if ('electric'==type) {
+        // 用电
+        return Request.post('/space/getSpaceCoreIndicators', param)
+    } else if ('water'==type) {
+        // 用水
+        return Request.post('/space/getSpaceCoreIndicators', param)
+    } else if ('hot'==type) {
+        // 用热
+        return Request.post('/space/getSpaceCoreIndicators', param)
+    } else if ('cold'==type) {
+        // 用冷
+        return Request.post('/space/getSpaceCoreIndicators', param)
+    } else if ('pv'==type) {
+        // 光伏
+        return Request.post('/space/getSpaceCoreIndicators', param)
+    } else {
+        // 全部
+        return Request.post('/space/getSpaceCoreIndicators', param)
+    }
+}
+
+export default {
+    getCoreData,
+}

+ 10 - 0
src/api/operation/apiOperationMoney.js

@@ -0,0 +1,10 @@
+import Request from "@/utils/request";
+
+// 核心指标
+const getCoreData = (timeRange) => {
+    return Request.post('/operation_asset/getOperAssetCoreIndicators', timeRange)
+}
+
+export default {
+    getCoreData,
+}

+ 10 - 0
src/api/operation/apiOperationSpace.js

@@ -0,0 +1,10 @@
+import Request from "@/utils/request";
+
+// 核心指标
+const getCoreData = (timeRange) => {
+    return Request.post('/space/getSpaceCoreIndicators', timeRange)
+}
+
+export default {
+    getCoreData,
+}

+ 10 - 0
src/api/security/apiSecurityAlarmMgr.js

@@ -0,0 +1,10 @@
+import Request from "@/utils/request";
+
+// 核心指标
+const getCoreData = (timeRange) => {
+    return Request.post('/security_linkage/getLinkageCoreIndicators', timeRange)
+}
+
+export default {
+    getCoreData,
+}

+ 10 - 0
src/api/security/apiSecurityPerson.js

@@ -0,0 +1,10 @@
+import Request from "@/utils/request";
+
+// 核心指标
+const getCoreData = (timeRange) => {
+    return Request.post('/security_person/getSecurityCoreIndicators', timeRange)
+}
+
+export default {
+    getCoreData,
+}

+ 10 - 0
src/api/work/apiWorkBus.js

@@ -0,0 +1,10 @@
+import Request from "@/utils/request";
+
+// 核心指标
+const getCoreData = (timeRange) => {
+    return Request.post('/meeting/getMeetingCoreIndicators', timeRange)
+}
+
+export default {
+    getCoreData,
+}

+ 10 - 0
src/api/work/apiWorkFloor.js

@@ -0,0 +1,10 @@
+import Request from "@/utils/request";
+
+// 核心指标
+const getCoreData = (timeRange) => {
+    return Request.post('/floor/getFloorCoreIndicators', timeRange)
+}
+
+export default {
+    getCoreData,
+}

+ 10 - 0
src/api/work/apiWorkMeeting.js

@@ -0,0 +1,10 @@
+import Request from "@/utils/request";
+
+// 核心指标
+const getCoreData = (timeRange) => {
+    return Request.post('/meeting/getMeetingCoreIndicators', timeRange)
+}
+
+export default {
+    getCoreData,
+}

+ 10 - 0
src/api/work/apiWorkPrint.js

@@ -0,0 +1,10 @@
+import Request from "@/utils/request";
+
+// 核心指标
+const getCoreData = (param) => {
+    return Request.post('/print/getPrintingCoreIndicators', param)
+}
+
+export default {
+    getCoreData,
+}

BIN
src/assets/images/business/energy/cold-show.png


BIN
src/assets/images/business/energy/cold.png


BIN
src/assets/images/business/energy/device-air.png


BIN
src/assets/images/business/energy/device-pv.png


BIN
src/assets/images/business/energy/electric.png


BIN
src/assets/images/business/energy/energy.png


BIN
src/assets/images/business/energy/hot.png


BIN
src/assets/images/business/energy/pv.png


BIN
src/assets/images/business/energy/water.png


+ 0 - 0
src/assets/images/function/asideMenus/智慧餐饮.png → src/assets/images/function/asideMenus/智慧餐厅.png


BIN
src/assets/images/functionColor/small/会议管理.png


BIN
src/assets/images/functionColor/small/健康小屋.png


BIN
src/assets/images/functionColor/small/光伏发电.png


BIN
src/assets/images/functionColor/small/公车管理.png


BIN
src/assets/images/functionColor/small/安消联动.png


BIN
src/assets/images/functionColor/small/安防人员.png


BIN
src/assets/images/functionColor/small/报告.png


BIN
src/assets/images/functionColor/small/报表.png


BIN
src/assets/images/functionColor/small/数智双碳.png


BIN
src/assets/images/functionColor/small/文印排放.png


BIN
src/assets/images/functionColor/small/文印管理.png


BIN
src/assets/images/functionColor/small/无人商超.png


BIN
src/assets/images/functionColor/small/智会议.png


BIN
src/assets/images/functionColor/small/智安防.png


BIN
src/assets/images/functionColor/small/智慧停车.png


BIN
src/assets/images/functionColor/small/智慧餐厅.png


BIN
src/assets/images/functionColor/small/智能源.png


BIN
src/assets/images/functionColor/small/权限管理.png


BIN
src/assets/images/functionColor/small/楼层概览.png


BIN
src/assets/images/functionColor/small/空间管理.png


BIN
src/assets/images/functionColor/small/能源管理.png


BIN
src/assets/images/functionColor/small/行为权限.png


BIN
src/assets/images/functionColor/small/角色权限.png


BIN
src/assets/images/functionColor/small/设备交互.png


BIN
src/assets/images/functionColor/small/资产管理.png


BIN
src/assets/images/functionColor/small/车辆排放.png


+ 0 - 0
src/assets/images/functionColor/权限管理.png → src/assets/images/functionColor/权限查看.png


+ 210 - 0
src/components/business/analysis/all/businessEnergyChart.vue

@@ -0,0 +1,210 @@
+<script>
+export default {
+  data() {
+    return {
+      chart: null,
+      option: {
+        legend: {
+          data: [
+            '用电(kwh)',
+            '用水(m³)',
+            '用热(kwh)',
+            '用冷(kwh)',
+            '光伏(kwh)',
+          ]
+        },
+        grid: {
+          left: '1%', //默认10%
+          right: '1%', //默认10%
+          bottom: '15%', //默认60
+          top: '15%',
+          containLabel: true
+          //grid区域是否包含坐标轴的刻度标签
+        },
+        xAxis: {
+          data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
+        },
+        yAxis: [
+          {
+            name: 'kwh',
+            type: 'value',
+            nameTextStyle: {
+              padding: [10, 0, 10, -30]
+            },
+          },
+          {
+            name: 'm³',
+            type: 'value',
+            nameTextStyle: {
+              padding: [10, 0, 10, 30]
+            },
+          },
+        ],
+        dataZoom: [
+          {
+            type: 'slider',
+            start: 0,
+            end: 100,
+            height: 12,
+          },
+          {
+            type: 'inside',
+            start: 0,
+            end: 100,
+          }
+        ],
+        tooltip: {
+          trigger: 'axis',
+          axisPointer: {
+            type: 'shadow'
+          },
+          textStyle: {
+            color: '#fff',
+            align: 'left',
+            fontSize: 14
+          },
+          axisLine: {//x坐标轴轴线
+            show: true,
+            lineStyle: {//x坐标轴轴线样式
+              color: '#000',//'#ccc' | 'rgb(128, 128, 128)' | 'rgba(128, 128, 128, 0.5)',设置标签颜色
+            }
+          },
+          backgroundColor: 'rgba(0,0,0,0.8)',
+        },
+        series: [
+          {
+            name: '用电(kwh)',
+            data: [80, 105, 155, 222, 66, 123, 124, 209, 61, 89, 156, 98],
+            type: 'line',
+            stack: 'a',
+            yAxisIndex:0,
+            smooth: true,
+            showSymbol:false,
+            lineStyle: {
+              color: "#62CC97",
+              width: 1,
+            },
+            itemStyle: {
+              color: '#62CC97'
+            },
+            emphasis: {
+              scale:1.5
+            }
+          },
+          {
+            name: '用水(m³)',
+            data: [160, 205, 111, 131, 63, 177, 106, 99, 181, 151, 170, 76],
+            type: 'line',
+            stack: 'a',
+            yAxisIndex:1,
+            smooth: true,
+            showSymbol:false,
+            itemStyle: {
+              color: '#3AA7E6'
+            },
+            lineStyle: {
+              color: "#3AA7E6",
+              width: 1,
+            },
+            emphasis: {
+              scale:1.5
+            },
+          },
+          {
+            name: '用热(kwh)',
+            data: [191, 88, 68, 70, 160, 247, 85, 187, 121, 149, 228, 151],
+            type: 'line',
+            stack: 'a',
+            yAxisIndex:0,
+            smooth: true,
+            showSymbol:false,
+            itemStyle: {
+              color: '#4ACFB8'
+            },
+            lineStyle: {
+              color: "#4ACFB8",
+              width: 1,
+            },
+            emphasis: {
+              scale:1.5
+            },
+          },
+          {
+            name: '用冷(kwh)',
+            data: [109, 199, 74, 190, 81, 216, 182, 161, 120, 199, 150, 245],
+            type: 'line',
+            stack: 'a',
+            yAxisIndex:0,
+            smooth: true,
+            showSymbol:false,
+            itemStyle: {
+              color: '#F4955F'
+            },
+            lineStyle: {
+              color: "#F4955F",
+              width: 1,
+            },
+            emphasis: {
+              scale:1.5
+            },
+          },
+          {
+            name: '光伏(kwh)',
+            data: [161, 201, 236, 56, 215, 105, 152, 61, 188, 226, 208, 156],
+            type: 'line',
+            stack: 'a',
+            yAxisIndex:0,
+            smooth: true,
+            showSymbol:false,
+            itemStyle: {
+              color: '#F8797E'
+            },
+            lineStyle: {
+              color: "#F8797E",
+              width: 1,
+            },
+            emphasis: {
+              scale:1.5
+            },
+          },
+        ]
+      },
+    }
+  },
+  props: {
+    height: Number,
+    data: Object,
+  },
+  watch: {
+    data: {
+      handler: function (val) {
+        //this.option.xAxis.data = val.x;
+        //this.option.series[0].data = val.ownEmployees;
+        //this.option.series[1].data = val.outsourcingStaff;
+        this.chart.setOption(this.option);
+      },
+      deep: true
+    }
+  },
+  mounted() {
+    this.$nextTick(()=>{
+      this.initChart()
+    })
+  },
+  methods: {
+    initChart() {
+      let chart = this.$echarts.init(this.$refs.myChart)
+      this.chart = chart;
+      chart.setOption(this.option)
+    }
+  }
+}
+</script>
+
+<template>
+  <div style="width: 100%" :style="{height: height+'px'}" ref="myChart"></div>
+</template>
+
+<style lang="less" scoped>
+
+</style>

+ 66 - 0
src/components/business/analysis/all/businessEnergyDetail.vue

@@ -0,0 +1,66 @@
+<script>
+import {requireImg} from "@/utils/requireImg";
+import BusinessEnergyDistributeChart from "@/components/business/analysis/all/businessEnergyDistributeChart.vue";
+
+export default {
+  components: {
+    BusinessEnergyDistributeChart
+  },
+  methods: {requireImg},
+  data() {
+    return {}
+  }
+}
+</script>
+
+<template>
+  <div class="businessEnergyDetail">
+    <div>
+      <div style="font-size: 16px;color: #B2B2B2;height: 40px;text-align: center">
+        <span class="businessEnergyDetail-icon">
+          <span class="anticon">
+            <a-avatar class="function-avatar" shape="square" :size="25" :src="requireImg('business/energy/energy.png')"></a-avatar>
+          </span>
+        </span>
+        月度同比节能
+        <span class="businessEnergyDetail-num">36</span>
+        元/人
+      </div>
+      <div style="font-size: 16px;color: #B2B2B2;margin: 6px auto;text-align: center">
+        <span class="businessEnergyDetail-icon">
+          <span class="anticon">
+            <a-avatar class="function-avatar" shape="square" :size="25" :src="requireImg('business/energy/energy.png')"></a-avatar>
+          </span>
+        </span>
+        年度同比节能
+        <span class="businessEnergyDetail-num">36</span>
+        元/人
+      </div>
+
+      <div class="businessEnergyDetail-chart">
+        <BusinessEnergyDistributeChart :height="370"></BusinessEnergyDistributeChart>
+      </div>
+    </div>
+  </div>
+</template>
+
+<style lang="less" scoped>
+.businessEnergyDetail {
+  width: 100%;
+  height: 100%;
+  .businessEnergyDetail-icon {
+    display: inline-block;
+    margin-right: 6px;
+    vertical-align: middle;
+  }
+  .businessEnergyDetail-num {
+    display: inline-block;
+    padding: 0 20px;
+    color: #4D4D4D;
+    background-color: #f7fbff;
+  }
+  .businessEnergyDetail-chart {
+    margin-top: 50px;
+  }
+}
+</style>

+ 96 - 0
src/components/business/analysis/all/businessEnergyDistributeChart.vue

@@ -0,0 +1,96 @@
+<template>
+  <div style="width: 100%" :style="{height: height+'px'}" ref="myChart"></div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {}
+  },
+  props: {
+    height: Number
+  },
+  mounted() {
+    this.$nextTick(()=>{
+      this.init()
+    })
+  },
+  methods: {
+    init() {
+      let chart = this.$echarts.init(this.$refs.myChart);
+      let nameList = ["用电", "用水", "用热", "用冷", "光伏"]; // 名字
+      let valueList = [100, 140, 230, 100, 130]; // 分数,最大值为100
+
+      let indicatorList = [];
+      nameList.map((item, index) => {
+        indicatorList.push({
+          name: item,
+          value: valueList[index],
+          max: 250,
+        });
+      });
+
+      let options = {
+        legend: {
+          top: "10",
+          icon: 'circle',
+          textStyle: { fontSize: 14, color: "#000000" },
+          itemGap: 20,
+          itemWidth: 20,
+          data: ["年度环比节能(元)"],
+        },
+        radar: {
+          indicator: indicatorList,
+          center: ["50%", "50%"],
+          radius: "60%",
+          axisName: {
+            formatter: function (value, indicator) {
+              return `{a|${value}}`;
+            },
+            rich: {
+              a: {
+                fontSize: "14px",
+                fontFamily: " Source Han Sans CN-Regular",
+                fontWeight: 400,
+                color: "#333333",
+                padding: [0, 8, 0, 0],
+              },
+              b: {
+                padding: [4, 8, 4, 8],
+                backgroundColor: "rgba(229, 243, 255, 0.6500)",
+                borderRadius: 50,
+                fontFamily: "Source Han Sans CN-Medium",
+                fontWeight: 500,
+                color: "#3AA7E6",
+              },
+            },
+          },
+        },
+        series: [
+          {
+            name: "年度环比节能(元)",
+            type: "radar",
+            color: "#3AA7E6",
+            label: {
+              show: false,
+            },
+            areaStyle: {
+              color: "rgba(170, 217, 255, 0.35)",
+            },
+            data: [
+              {
+                value: valueList,
+              },
+            ],
+          },
+        ],
+      };
+      chart.setOption(options);
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+
+</style>

+ 171 - 14
src/components/business/analysis/analysis.vue

@@ -1,38 +1,195 @@
-<template>
-  <div>
-    <div class="page-query-core">
-      <query></query>
-      <card :title="'核心指标'">
-        <CoreData :data-list="coreData"></CoreData>
-      </card>
-    </div>
-
-  </div>
-</template>
 <script>
 import query from "@/components/common/query.vue";
 import card from "@/components/common/card.vue";
+import BusinessEnergyChart from "@/components/business/analysis/all/businessEnergyChart.vue";
+import BusinessElectricChart from "@/components/business/analysis/electric/BusinessElectricChart.vue";
+import BusinessWaterChart from "@/components/business/analysis/water/BusinessWaterChart.vue";
+import BusinessHotChart from "@/components/business/analysis/hot/BusinessHotChart.vue";
+import BusinessColdChart from "@/components/business/analysis/cold/BusinessColdChart.vue";
+import BusinessPvChart from "@/components/business/analysis/pv/BusinessPvChart.vue";
+
+import BusinessEnergyDetail from "@/components/business/analysis/all/businessEnergyDetail.vue";
+import BusinessElectricDetail from "@/components/business/analysis/electric/BusinessElectricDetail.vue";
+import BusinessWaterDetail from "@/components/business/analysis/water/BusinessWaterDetail.vue";
+import BusinessHotDetail from "@/components/business/analysis/hot/BusinessHotDetail.vue";
+import BusinessColdDetail from "@/components/business/analysis/cold/BusinessColdDetail.vue";
+import BusinessPvDetail from "@/components/business/analysis/pv/BusinessPvDetail.vue";
+
+import apiOperationAnalysis from "@/api/operation/apiOperationAnalysis";
 
 export default {
   components: {
     query,
     card,
+
+    BusinessEnergyChart,
+    BusinessElectricChart,
+    BusinessWaterChart,
+    BusinessHotChart,
+    BusinessColdChart,
+    BusinessPvChart,
+
+    BusinessEnergyDetail,
+    BusinessElectricDetail,
+    BusinessWaterDetail,
+    BusinessHotDetail,
+    BusinessColdDetail,
+    BusinessPvDetail,
+
   },
   data() {
     return {
-
+      queryData: {
+        company: '0',
+        energy: '0',
+        timeRange: this.$util.dateUtil.getNearlyMonthRange()
+      },
+      coreData: [
+        {
+          title: '总用量(kwh)',
+          num: 0,
+          historyDesc: '同比',
+          historyNum: 0
+        },
+        {
+          title: '总用量(㎡)',
+          num: 0,
+          historyDesc: '同比',
+          historyNum: 0
+        },
+        {
+          title: '总能耗成本(元)',
+          num: 0,
+          historyDesc: '同比',
+          historyNum: 0
+        },
+        {
+          title: '人均能耗成本(元/人)',
+          num: 0,
+          historyDesc: '同比',
+          historyNum: 0
+        },
+        {
+          type: 1,
+          title: '值得关注',
+          showStar: true,
+          content: ''
+        },
+      ]
     };
   },
+  watch: {
+    "queryData.energy": function (val) {
+      this.handleTypeChange(val)
+    }
+  },
   mounted() {
-
+    this.init()
   },
   methods: {
+    init() {
+
+    },
+    handleTypeChange(type) {
+      this.coreData = this.$options.data().coreData;
+      if ('electric'==type) {
+        // 用电
+        this.coreData[0].title = '总用电量(kwh)'
+        this.coreData[1].title = '人均用电量(kwh/人)'
+      } else if ('water'==type) {
+        // 用水
+        this.coreData[0].title = '总用水量(m³)'
+        this.coreData[1].title = '人均用水量(m³/人)'
+
+      } else if ('hot'==type) {
+        // 用热
+        this.coreData[0].title = '总用热量(kwh)'
+        this.coreData[1].title = '人均用热量(kwh/人)'
 
+      } else if ('cold'==type) {
+        // 用冷
+        this.coreData[0].title = '总用冷量(kwh)'
+        this.coreData[1].title = '人均用冷量(kwh/人)'
+
+      } else if ('pv'==type) {
+        // 光伏
+        this.coreData[0].title = '总发电量(kwh)'
+        this.coreData[1].title = '平均发电量量(kwh/台)'
+
+      } else {
+        // 全部
+        this.coreData[0].title = '总用量(kwh)'
+        this.coreData[1].title = '总用量m³)'
+      }
+    },
+    reset() {
+
+    },
+    search() {
+
+    },
+    getCoreData() {
+      apiOperationAnalysis.getCoreData(this.queryData).then(res=>{
+        this.coreData[0].num = res.list[0].value
+        this.coreData[0].historyNum = res.list[0].compare
+        this.coreData[1].num = res.list[1].value
+        this.coreData[1].historyNum = res.list[1].compare
+        this.coreData[2].num = res.list[2].value
+        this.coreData[2].historyNum = res.list[2].compare
+        this.coreData[3].num = res.list[3].value
+        this.coreData[3].historyNum = res.list[3].compare
+        this.coreData[4].content = res.worthAttention
+      })
+    }
   },
 };
 </script>
 
+<template>
+  <div>
+    <div class="page-query-core">
+      <query :show="['company','energy','time']" :query-data.sync="queryData" :reset="reset" :search="search"></query>
+      <card :title="'核心指标'">
+        <CoreData :data-list="coreData"></CoreData>
+      </card>
+    </div>
 
-<style lang="less" scoped>
+    <div class="analysis-energy-body">
+      <a-row :gutter="[12,12]">
+        <a-col :span="18">
+          <Card title="能源趋势">
+            <div class="analysis-energy-body-left">
+              <BusinessElectricChart :height="495" v-if="queryData.energy=='electric'"></BusinessElectricChart>
+              <BusinessWaterChart :height="495" v-if="queryData.energy=='water'"></BusinessWaterChart>
+              <BusinessHotChart :height="495" v-if="queryData.energy=='hot'"></BusinessHotChart>
+              <BusinessColdChart :height="495" v-if="queryData.energy=='cold'"></BusinessColdChart>
+              <BusinessPvChart :height="495" v-if="queryData.energy=='pv'"></BusinessPvChart>
+              <BusinessEnergyChart :height="495" v-if="queryData.energy=='0'"></BusinessEnergyChart>
+            </div>
+          </Card>
+        </a-col>
+        <a-col :span="6">
+          <Card title="能源分析">
+            <div class="analysis-energy-body-right">
+              <BusinessElectricDetail v-if="queryData.energy=='electric'"/>
+              <BusinessWaterDetail v-if="queryData.energy=='water'"/>
+              <BusinessHotDetail v-if="queryData.energy=='hot'"/>
+              <BusinessColdDetail v-if="queryData.energy=='cold'"/>
+              <BusinessPvDetail v-if="queryData.energy=='pv'"/>
+              <BusinessEnergyDetail v-if="queryData.energy=='0'"/>
+            </div>
+          </Card>
+        </a-col>
+      </a-row>
+    </div>
 
+  </div>
+</template>
+
+
+
+<style lang="less" scoped>
+.analysis-energy-body {
+  margin-top: 12px;
+}
 </style>

+ 108 - 0
src/components/business/analysis/cold/BusinessColdChart.vue

@@ -0,0 +1,108 @@
+<template>
+  <div class="myChart" ref="myChart" :style="{height: height+'px'}">
+
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+    }
+  },
+  props: {
+    height: Number
+  },
+  mounted() {
+    this.init();
+  },
+  methods: {
+    init() {
+      let chart = this.$echarts.init(this.$refs.myChart);
+      let options = {
+        color: ['#80D4FF','#A6A6FF','#79F2E8','#FFDF80','#FF7C1F'],
+        legend: {
+          data: [
+            '制冷量',
+            '能耗比',
+          ]
+        },
+        grid: {
+          left: '2%', //默认10%
+          right: '2%', //默认10%
+          bottom: '15%', //默认60
+          top: '15%',
+          containLabel: true
+          //grid区域是否包含坐标轴的刻度标签
+        },
+        xAxis: {
+          type: 'category',
+          data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
+        },
+        yAxis: [
+          {
+            name: 'kwh',
+            type: 'value',
+            nameTextStyle: {
+              padding: [10, 0, 10, -20]
+            },
+          },
+          {
+            name: '能耗比(%)',
+            type: 'value',
+            nameTextStyle: {
+              padding: [10, 0, 10, -30]
+            },
+          },
+        ],
+        tooltip: {
+          trigger: 'axis',
+          axisPointer: {
+            type: 'shadow'
+          },
+          textStyle: {
+            color: '#fff',
+            align: 'left',
+            fontSize: 14
+          },
+          axisLine: {//x坐标轴轴线
+            show: true,
+            lineStyle: {//x坐标轴轴线样式
+              color: '#000',//'#ccc' | 'rgb(128, 128, 128)' | 'rgba(128, 128, 128, 0.5)',设置标签颜色
+            }
+          },
+          backgroundColor: 'rgba(0,0,0,0.8)',
+        },
+        series: [
+          {
+            name: '制冷量',
+            data: [161, 201, 236, 56, 215, 105, 152, 61, 188, 226, 208, 156],
+            type: 'bar',
+            stack: 'A',
+            barWidth: '30%',
+            itemStyle: {
+              color: '#3AA7E6'
+            },
+            backgroundStyle: {
+              color: 'rgba(180, 180, 180, 0.2)'
+            }
+          },
+          {
+            name: '能耗比',
+            data: [161, 201, 236, 56, 215, 105, 152, 61, 188, 226, 208, 156],
+            type: 'line',
+            yAxisIndex: 1,
+            backgroundStyle: {
+              color: 'rgba(180, 180, 180, 0.2)'
+            }
+          },
+        ]
+      };
+      chart.setOption(options);
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+</style>

+ 122 - 0
src/components/business/analysis/cold/BusinessColdDetail.vue

@@ -0,0 +1,122 @@
+<script>
+import {requireImg} from "@/utils/requireImg";
+
+export default {
+  components: {
+  },
+  methods: {
+    requireImg,
+
+  },
+  data() {
+    return {
+
+    }
+  },
+  mounted() {
+  },
+}
+</script>
+
+<template>
+  <div class="businessEnergyDetail">
+    <div>
+
+      <div class="businessEnergyDetail-top">
+        <a-row>
+          <a-col :span="11">
+            <div style="margin: 10% 0 0 30%">
+              <a-avatar :size="28" :src="requireImg('business/energy/device-air.png')"></a-avatar>
+              <span style="font-size: 20px;display: inline-block;margin-left: 20%">12</span>
+            </div>
+            <div style="margin: 10% 0 0 30%;color: #B2B2B2;font-size: 14px">正在运行(台)</div>
+          </a-col>
+          <a-col :span="2">
+            <div style="text-align: center;width: 100%;line-height: 60px;font-size: 20px">/</div>
+          </a-col>
+          <a-col :span="11">
+            <div style="margin: 10% 0 0 30%">
+              <a-avatar :size="28" :src="requireImg('business/energy/device-air.png')"></a-avatar>
+              <span style="font-size: 20px;display: inline-block;margin-left: 20%">20</span>
+            </div>
+            <div style="margin: 10% 0 0 30%;color: #B2B2B2;font-size: 14px">正在运行(台)</div>
+          </a-col>
+        </a-row>
+      </div>
+
+      <div style="font-size: 16px;color: #B2B2B2;height: 40px;text-align: center">
+        <span class="businessEnergyDetail-icon">
+          <span class="anticon">
+            <a-avatar class="function-avatar" shape="square" :size="25" :src="requireImg('business/energy/cold.png')"></a-avatar>
+          </span>
+        </span>
+        总用冷量
+        <span class="businessEnergyDetail-num">36</span>
+        m3
+      </div>
+      <div style="font-size: 16px;color: #B2B2B2;margin: 6px auto;text-align: center">
+        <span class="businessEnergyDetail-icon">
+          <span class="anticon">
+            <a-avatar class="function-avatar" shape="square" :size="25" :src="requireImg('business/energy/cold.png')"></a-avatar>
+          </span>
+        </span>
+        人均成本
+        <span class="businessEnergyDetail-num">36</span>
+        元/人/年
+      </div>
+      <div style="font-size: 16px;color: #B2B2B2;margin: 6px auto;text-align: center">
+        <span class="businessEnergyDetail-icon">
+          <span class="anticon">
+            <a-avatar class="function-avatar" shape="square" :size="25" :src="requireImg('business/energy/cold.png')"></a-avatar>
+          </span>
+        </span>
+        进水温度
+        <span class="businessEnergyDetail-num">36</span>
+        摄氏度
+      </div>
+      <div style="font-size: 16px;color: #B2B2B2;margin: 6px auto;text-align: center">
+        <span class="businessEnergyDetail-icon">
+          <span class="anticon">
+            <a-avatar class="function-avatar" shape="square" :size="25" :src="requireImg('business/energy/cold.png')"></a-avatar>
+          </span>
+        </span>
+        出水温度
+        <span class="businessEnergyDetail-num">36</span>
+        摄氏度
+      </div>
+
+      <div class="businessEnergyDetail-chart">
+        <img :src="requireImg('business/energy/cold-show.png')" style="width: 80%;margin-left: 10%" >
+      </div>
+    </div>
+  </div>
+</template>
+
+<style lang="less" scoped>
+.businessEnergyDetail {
+  width: 100%;
+  height: 100%;
+  .businessEnergyDetail-top {
+    background-color: #f7fbff;
+    width: 85%;
+    margin: 0 auto 8px;
+    height: 100px;
+  }
+  .businessEnergyDetail-icon {
+    display: inline-block;
+    margin-right: 6px;
+    vertical-align: middle;
+  }
+  .businessEnergyDetail-num {
+    display: inline-block;
+    padding: 0 20px;
+    color: #4D4D4D;
+    background-color: #f7fbff;
+  }
+  .businessEnergyDetail-chart {
+    width: 100%;
+    margin: 50px auto 12px;
+    padding-bottom: 15px;
+  }
+}
+</style>

+ 156 - 0
src/components/business/analysis/electric/BusinessElectricChart.vue

@@ -0,0 +1,156 @@
+<template>
+  <div>
+    <div class="dashboardPortrait-select">
+      <a-checkable-tag v-model="tagCheck.all" color="white" class="dashboardPortrait-select-tag" @change="handleTagSelect('all')">
+        <span class="dashboardPortrait-select-text">总体用电</span>
+      </a-checkable-tag>
+      <a-checkable-tag v-model="tagCheck.F15" color="white" class="dashboardPortrait-select-tag" @change="handleTagSelect('F15')">
+        <span class="dashboardPortrait-select-text">15F</span>
+      </a-checkable-tag>
+      <a-checkable-tag v-model="tagCheck.F20" color="white" class="dashboardPortrait-select-tag" @change="handleTagSelect('F20')">
+        <span class="dashboardPortrait-select-text">20F</span>
+      </a-checkable-tag>
+    </div>
+    <div class="myChart" ref="myChart" :style="{height: height+'px'}">
+
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      currCheck: '',
+      tagCheck: {
+        all: false,
+        F15: false,
+        F20: false,
+      }
+    }
+  },
+  props: {
+    height: Number
+  },
+  mounted() {
+    this.init();
+    this.handleTagSelect('all')
+  },
+  methods: {
+    handleTagSelect(item) {
+      for (const key in this.tagCheck) {
+        this.tagCheck[key] = false;
+      }
+      this.currCheck = item;
+      this.tagCheck[item] = true;
+    },
+    init() {
+      let chart = this.$echarts.init(this.$refs.myChart);
+      let options = {
+        color: ['#80D4FF','#A6A6FF','#79F2E8','#FFDF80','#FF7C1F'],
+        legend: {
+          data: [
+            '尖',
+            '峰',
+            '平',
+            '谷',
+          ]
+        },
+        grid: {
+          left: '2%', //默认10%
+          right: '2%', //默认10%
+          bottom: '15%', //默认60
+          top: '15%',
+          containLabel: true
+          //grid区域是否包含坐标轴的刻度标签
+        },
+        xAxis: {
+          type: 'category',
+          data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
+        },
+        yAxis: [
+          {
+            name: 'kwh',
+            type: 'value',
+            nameTextStyle: {
+              padding: [10, 0, 10, -20]
+            },
+          },
+        ],
+        tooltip: {
+          trigger: 'axis',
+          axisPointer: {
+            type: 'shadow'
+          },
+          textStyle: {
+            color: '#fff',
+            align: 'left',
+            fontSize: 14
+          },
+          axisLine: {//x坐标轴轴线
+            show: true,
+            lineStyle: {//x坐标轴轴线样式
+              color: '#000',//'#ccc' | 'rgb(128, 128, 128)' | 'rgba(128, 128, 128, 0.5)',设置标签颜色
+            }
+          },
+          backgroundColor: 'rgba(0,0,0,0.8)',
+        },
+        series: [
+          {
+            name: '尖',
+            data: [161, 201, 236, 56, 215, 105, 152, 61, 188, 226, 208, 156],
+            type: 'bar',
+            stack: 'A',
+            barWidth: '30%',
+            itemStyle: {
+              color: '#3AA7E6'
+            },
+            backgroundStyle: {
+              color: 'rgba(180, 180, 180, 0.2)'
+            }
+          },
+          {
+            name: '峰',
+            data: [62, 60, 56, 59, 54, 75, 94, 66, 79, 84, 91, 53],
+            type: 'bar',
+            stack: 'A',
+            itemStyle: {
+              color: '#9790F8'
+            },
+            backgroundStyle: {
+              color: 'rgba(180, 180, 180, 0.2)'
+            }
+          },
+          {
+            name: '平',
+            data: [62, 60, 56, 59, 54, 75, 94, 66, 79, 84, 91, 53],
+            type: 'bar',
+            stack: 'A',
+            itemStyle: {
+              color: '#4ACFB8'
+            },
+            backgroundStyle: {
+              color: 'rgba(180, 180, 180, 0.2)'
+            }
+          },{
+            name: '谷',
+            data: [62, 60, 56, 59, 54, 75, 94, 66, 79, 84, 91, 53],
+            type: 'bar',
+            stack: 'A',
+            itemStyle: {
+              color: '#F4955F'
+            },
+            backgroundStyle: {
+              color: 'rgba(180, 180, 180, 0.2)'
+            }
+          }
+        ]
+      };
+      chart.setOption(options);
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+</style>

+ 100 - 0
src/components/business/analysis/electric/BusinessElectricDetail.vue

@@ -0,0 +1,100 @@
+<script>
+import {requireImg} from "@/utils/requireImg";
+import BusinessElectricDistributeChart
+  from "@/components/business/analysis/electric/BusinessElectricDistributeChart.vue";
+
+export default {
+  components: {
+    BusinessElectricDistributeChart
+  },
+  methods: {
+    requireImg,
+    handleTagSelect(item) {
+      for (const key in this.tagCheck) {
+        this.tagCheck[key] = false;
+      }
+      this.currCheck = item;
+      this.tagCheck[item] = true;
+    },
+
+  },
+  data() {
+    return {
+      currCheck: '',
+      tagCheck: {
+        all: false,
+        F15: false,
+        F20: false,
+      }
+    }
+  },
+  mounted() {
+    this.handleTagSelect('all')
+  },
+}
+</script>
+
+<template>
+  <div class="businessEnergyDetail">
+    <div>
+
+      <div class="dashboardPortrait-select">
+        <a-checkable-tag v-model="tagCheck.all" color="white" class="dashboardPortrait-select-tag" @change="handleTagSelect('all')">
+          <span class="dashboardPortrait-select-text">总体用电</span>
+        </a-checkable-tag>
+        <a-checkable-tag v-model="tagCheck.F15" color="white" class="dashboardPortrait-select-tag" @change="handleTagSelect('F15')">
+          <span class="dashboardPortrait-select-text">15F</span>
+        </a-checkable-tag>
+        <a-checkable-tag v-model="tagCheck.F20" color="white" class="dashboardPortrait-select-tag" @change="handleTagSelect('F20')">
+          <span class="dashboardPortrait-select-text">20F</span>
+        </a-checkable-tag>
+      </div>
+
+      <div style="font-size: 16px;color: #B2B2B2;height: 40px;text-align: center">
+        <span class="businessEnergyDetail-icon">
+          <span class="anticon">
+            <a-avatar class="function-avatar" shape="square" :size="25" :src="requireImg('business/energy/electric.png')"></a-avatar>
+          </span>
+        </span>
+        总用电量
+        <span class="businessEnergyDetail-num">36</span>
+        元/人
+      </div>
+      <div style="font-size: 16px;color: #B2B2B2;margin: 6px auto;text-align: center">
+        <span class="businessEnergyDetail-icon">
+          <span class="anticon">
+            <a-avatar class="function-avatar" shape="square" :size="25" :src="requireImg('business/energy/electric.png')"></a-avatar>
+          </span>
+        </span>
+        环比节约
+        <span class="businessEnergyDetail-num">36</span>
+        元/人
+      </div>
+
+      <div class="businessEnergyDetail-chart">
+        <BusinessElectricDistributeChart :height="350"></BusinessElectricDistributeChart>
+      </div>
+    </div>
+  </div>
+</template>
+
+<style lang="less" scoped>
+.businessEnergyDetail {
+  width: 100%;
+  height: 100%;
+  .businessEnergyDetail-icon {
+    display: inline-block;
+    margin-right: 6px;
+    vertical-align: middle;
+  }
+  .businessEnergyDetail-num {
+    display: inline-block;
+    padding: 0 20px;
+    color: #4D4D4D;
+    background-color: #f7fbff;
+  }
+  .businessEnergyDetail-chart {
+    margin-top: 50px;
+  }
+}
+</style>

+ 63 - 0
src/components/business/analysis/electric/BusinessElectricDistributeChart.vue

@@ -0,0 +1,63 @@
+<script>
+export default {
+  data() {
+    return {}
+  },
+  props: {
+    height: Number,
+  },
+  mounted() {
+    this.$nextTick(()=>{
+      this.initChart()
+    })
+  },
+  methods: {
+    initChart() {
+      let chart = this.$echarts.init(this.$refs.myChart)
+      let option = {
+        color: ['#80D4FF', '#A6A6FF', '#FFB580', '#FFDF80', '#79F2E8'],
+        tooltip: {
+          trigger: 'item'
+        },
+        legend: {
+          bottom: '5%',
+          left: '10%',
+          right: '10%',
+          icon: 'circle'
+        },
+        series: [
+          {
+            name: '用电量',
+            type: 'pie',
+            radius: ['40%', '70%'],
+            center: ['50%','40%'],
+            data: [
+              { value: 1048, name: '信息机房' },
+              { value: 735, name: '空调' },
+              { value: 580, name: '照明' },
+              { value: 484, name: '插座' },
+              { value: 300, name: '其他' }
+            ],
+            emphasis: {
+              itemStyle: {
+                shadowBlur: 10,
+                shadowOffsetX: 0,
+                shadowColor: 'rgba(0, 0, 0, 0.5)'
+              }
+            }
+          }
+        ]
+      };
+      chart.setOption(option)
+    }
+  }
+}
+</script>
+
+<template>
+  <div style="width: 100%" :style="{height: height+'px'}" ref="myChart"></div>
+</template>
+
+<style lang="less" scoped>
+
+</style>

+ 91 - 0
src/components/business/analysis/hot/BusinessHotChart.vue

@@ -0,0 +1,91 @@
+<template>
+  <div class="myChart" ref="myChart" :style="{height: height+'px'}">
+
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+    }
+  },
+  props: {
+    height: Number
+  },
+  mounted() {
+    this.init();
+  },
+  methods: {
+    init() {
+      let chart = this.$echarts.init(this.$refs.myChart);
+      let options = {
+        color: ['#80D4FF','#A6A6FF','#79F2E8','#FFDF80','#FF7C1F'],
+        legend: {
+          data: [
+            '用热量',
+          ]
+        },
+        grid: {
+          left: '2%', //默认10%
+          right: '2%', //默认10%
+          bottom: '15%', //默认60
+          top: '15%',
+          containLabel: true
+          //grid区域是否包含坐标轴的刻度标签
+        },
+        xAxis: {
+          type: 'category',
+          data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
+        },
+        yAxis: [
+          {
+            name: 'kwh',
+            type: 'value',
+            nameTextStyle: {
+              padding: [10, 0, 10, -20]
+            },
+          },
+        ],
+        tooltip: {
+          trigger: 'axis',
+          axisPointer: {
+            type: 'shadow'
+          },
+          textStyle: {
+            color: '#fff',
+            align: 'left',
+            fontSize: 14
+          },
+          axisLine: {//x坐标轴轴线
+            show: true,
+            lineStyle: {//x坐标轴轴线样式
+              color: '#000',//'#ccc' | 'rgb(128, 128, 128)' | 'rgba(128, 128, 128, 0.5)',设置标签颜色
+            }
+          },
+          backgroundColor: 'rgba(0,0,0,0.8)',
+        },
+        series: [
+          {
+            name: '用热量',
+            data: [161, 201, 236, 56, 215, 105, 152, 61, 188, 226, 208, 156],
+            type: 'bar',
+            stack: 'A',
+            barWidth: '30%',
+            itemStyle: {
+              color: '#3AA7E6'
+            },
+            backgroundStyle: {
+              color: 'rgba(180, 180, 180, 0.2)'
+            }
+          },
+        ]
+      };
+      chart.setOption(options);
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+</style>

+ 73 - 0
src/components/business/analysis/hot/BusinessHotDetail.vue

@@ -0,0 +1,73 @@
+<script>
+import {requireImg} from "@/utils/requireImg";
+import BusinessHotDistributeChart from "@/components/business/analysis/hot/BusinessHotDistributeChart.vue";
+
+export default {
+  components: {
+    BusinessHotDistributeChart
+  },
+  methods: {
+    requireImg,
+
+  },
+  data() {
+    return {
+
+    }
+  },
+  mounted() {
+  },
+}
+</script>
+
+<template>
+  <div class="businessEnergyDetail">
+    <div>
+      <div style="font-size: 16px;color: #B2B2B2;height: 40px;text-align: center">
+        <span class="businessEnergyDetail-icon">
+          <span class="anticon">
+            <a-avatar class="function-avatar" shape="square" :size="25" :src="requireImg('business/energy/hot.png')"></a-avatar>
+          </span>
+        </span>
+        总用热量
+        <span class="businessEnergyDetail-num">36</span>
+        m3
+      </div>
+      <div style="font-size: 16px;color: #B2B2B2;margin: 6px auto;text-align: center">
+        <span class="businessEnergyDetail-icon">
+          <span class="anticon">
+            <a-avatar class="function-avatar" shape="square" :size="25" :src="requireImg('business/energy/hot.png')"></a-avatar>
+          </span>
+        </span>
+        人均成本
+        <span class="businessEnergyDetail-num">36</span>
+        元/人/年
+      </div>
+
+      <div class="businessEnergyDetail-chart">
+        <BusinessHotDistributeChart :height="350"></BusinessHotDistributeChart>
+      </div>
+    </div>
+  </div>
+</template>
+
+<style lang="less" scoped>
+.businessEnergyDetail {
+  width: 100%;
+  height: 100%;
+  .businessEnergyDetail-icon {
+    display: inline-block;
+    margin-right: 6px;
+    vertical-align: middle;
+  }
+  .businessEnergyDetail-num {
+    display: inline-block;
+    padding: 0 20px;
+    color: #4D4D4D;
+    background-color: #f7fbff;
+  }
+  .businessEnergyDetail-chart {
+    margin-top: 50px;
+  }
+}
+</style>

+ 63 - 0
src/components/business/analysis/hot/BusinessHotDistributeChart.vue

@@ -0,0 +1,63 @@
+<script>
+export default {
+  data() {
+    return {}
+  },
+  props: {
+    height: Number,
+  },
+  mounted() {
+    this.$nextTick(()=>{
+      this.initChart()
+    })
+  },
+  methods: {
+    initChart() {
+      let chart = this.$echarts.init(this.$refs.myChart)
+      let option = {
+        color: ['#80D4FF', '#A6A6FF', '#FFB580', '#FFDF80', '#79F2E8'],
+        tooltip: {
+          trigger: 'item'
+        },
+        legend: {
+          bottom: '5%',
+          left: '10%',
+          right: '10%',
+          icon: 'circle'
+        },
+        series: [
+          {
+            name: '用热量',
+            type: 'pie',
+            radius: ['40%', '70%'],
+            center: ['50%','40%'],
+            data: [
+              { value: 1048, name: '办公区域' },
+              { value: 735, name: '餐厅' },
+              { value: 735, name: '机房' },
+              { value: 735, name: '停车场' },
+              { value: 735, name: '其他' },
+            ],
+            emphasis: {
+              itemStyle: {
+                shadowBlur: 10,
+                shadowOffsetX: 0,
+                shadowColor: 'rgba(0, 0, 0, 0.5)'
+              }
+            }
+          }
+        ]
+      };
+      chart.setOption(option)
+    }
+  }
+}
+</script>
+
+<template>
+  <div style="width: 100%" :style="{height: height+'px'}" ref="myChart"></div>
+</template>
+
+<style lang="less" scoped>
+
+</style>

+ 108 - 0
src/components/business/analysis/pv/BusinessPvChart.vue

@@ -0,0 +1,108 @@
+<template>
+  <div class="myChart" ref="myChart" :style="{height: height+'px'}">
+
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+    }
+  },
+  props: {
+    height: Number
+  },
+  mounted() {
+    this.init();
+  },
+  methods: {
+    init() {
+      let chart = this.$echarts.init(this.$refs.myChart);
+      let options = {
+        color: ['#80D4FF','#A6A6FF','#79F2E8','#FFDF80','#FF7C1F'],
+        legend: {
+          data: [
+            '发电量',
+            '能耗比',
+          ]
+        },
+        grid: {
+          left: '2%', //默认10%
+          right: '2%', //默认10%
+          bottom: '15%', //默认60
+          top: '15%',
+          containLabel: true
+          //grid区域是否包含坐标轴的刻度标签
+        },
+        xAxis: {
+          type: 'category',
+          data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
+        },
+        yAxis: [
+          {
+            name: 'kwh',
+            type: 'value',
+            nameTextStyle: {
+              padding: [10, 0, 10, -20]
+            },
+          },
+          {
+            name: '能耗比(%)',
+            type: 'value',
+            nameTextStyle: {
+              padding: [10, 0, 10, -30]
+            },
+          },
+        ],
+        tooltip: {
+          trigger: 'axis',
+          axisPointer: {
+            type: 'shadow'
+          },
+          textStyle: {
+            color: '#fff',
+            align: 'left',
+            fontSize: 14
+          },
+          axisLine: {//x坐标轴轴线
+            show: true,
+            lineStyle: {//x坐标轴轴线样式
+              color: '#000',//'#ccc' | 'rgb(128, 128, 128)' | 'rgba(128, 128, 128, 0.5)',设置标签颜色
+            }
+          },
+          backgroundColor: 'rgba(0,0,0,0.8)',
+        },
+        series: [
+          {
+            name: '发电量',
+            data: [161, 201, 236, 56, 215, 105, 152, 61, 188, 226, 208, 156],
+            type: 'bar',
+            stack: 'A',
+            barWidth: '30%',
+            itemStyle: {
+              color: '#3AA7E6'
+            },
+            backgroundStyle: {
+              color: 'rgba(180, 180, 180, 0.2)'
+            }
+          },
+          {
+            name: '能耗比',
+            data: [161, 201, 236, 56, 215, 105, 152, 61, 188, 226, 208, 156],
+            type: 'line',
+            yAxisIndex: 1,
+            backgroundStyle: {
+              color: 'rgba(180, 180, 180, 0.2)'
+            }
+          },
+        ]
+      };
+      chart.setOption(options);
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+</style>

+ 114 - 0
src/components/business/analysis/pv/BusinessPvDetail.vue

@@ -0,0 +1,114 @@
+<script>
+import {requireImg} from "@/utils/requireImg";
+import businessPvMoneyChart from "@/components/business/analysis/pv/BusinessPvMoneyChart.vue";
+
+export default {
+  components: {
+    businessPvMoneyChart
+  },
+  methods: {
+    requireImg,
+
+  },
+  data() {
+    return {
+
+    }
+  },
+  mounted() {
+  },
+}
+</script>
+
+<template>
+  <div class="businessEnergyDetail">
+    <div>
+
+      <div class="businessEnergyDetail-top">
+        <a-row>
+          <a-col :span="11">
+            <div style="margin: 10% 0 0 30%">
+              <a-avatar :size="28" :src="requireImg('business/energy/device-pv.png')"></a-avatar>
+              <span style="font-size: 20px;display: inline-block;margin-left: 20%">12</span>
+            </div>
+            <div style="margin: 10% 0 0 30%;color: #B2B2B2;font-size: 14px">正在运行(台)</div>
+          </a-col>
+          <a-col :span="2">
+            <div style="text-align: center;width: 100%;line-height: 60px;font-size: 20px">/</div>
+          </a-col>
+          <a-col :span="11">
+            <div style="margin: 10% 0 0 30%">
+              <a-avatar :size="28" :src="requireImg('business/energy/device-pv.png')"></a-avatar>
+              <span style="font-size: 20px;display: inline-block;margin-left: 20%">20</span>
+            </div>
+            <div style="margin: 10% 0 0 30%;color: #B2B2B2;font-size: 14px">正在运行(台)</div>
+          </a-col>
+        </a-row>
+      </div>
+
+      <div style="font-size: 16px;color: #B2B2B2;height: 40px;text-align: center">
+        <span class="businessEnergyDetail-icon">
+          <span class="anticon">
+            <a-avatar class="function-avatar" shape="square" :size="25" :src="requireImg('business/energy/pv.png')"></a-avatar>
+          </span>
+        </span>
+        总发电量
+        <span class="businessEnergyDetail-num">36</span>
+        kwh
+      </div>
+      <div style="font-size: 16px;color: #B2B2B2;margin: 6px auto;text-align: center">
+        <span class="businessEnergyDetail-icon">
+          <span class="anticon">
+            <a-avatar class="function-avatar" shape="square" :size="25" :src="requireImg('business/energy/pv.png')"></a-avatar>
+          </span>
+        </span>
+        发电时间
+        <span class="businessEnergyDetail-num">36</span>
+        h
+      </div>
+      <div style="font-size: 16px;color: #B2B2B2;margin: 6px auto;text-align: center">
+        <span class="businessEnergyDetail-icon">
+          <span class="anticon">
+            <a-avatar class="function-avatar" shape="square" :size="25" :src="requireImg('business/energy/pv.png')"></a-avatar>
+          </span>
+        </span>
+        总收益
+        <span class="businessEnergyDetail-num">36</span>
+        元
+      </div>
+
+      <div class="businessEnergyDetail-chart">
+        <businessPvMoneyChart :height="200" />
+      </div>
+    </div>
+  </div>
+</template>
+
+<style lang="less" scoped>
+.businessEnergyDetail {
+  width: 100%;
+  height: 100%;
+  .businessEnergyDetail-top {
+    background-color: #f7fbff;
+    width: 85%;
+    margin: 0 auto 8px;
+    height: 100px;
+  }
+  .businessEnergyDetail-icon {
+    display: inline-block;
+    margin-right: 6px;
+    vertical-align: middle;
+  }
+  .businessEnergyDetail-num {
+    display: inline-block;
+    padding: 0 20px;
+    color: #4D4D4D;
+    background-color: #f7fbff;
+  }
+  .businessEnergyDetail-chart {
+    width: 100%;
+    margin: 50px auto;
+    padding: 0 15px;
+  }
+}
+</style>

+ 47 - 35
src/components/business/analysis/charts/businessEnergyChart.vue → src/components/business/analysis/pv/BusinessPvMoneyChart.vue

@@ -2,32 +2,19 @@
 export default {
   data() {
     return {
-
-    }
-  },
-  props: {
-    height: Number,
-  },
-  mounted() {
-    this.$nextTick(()=>{
-      this.initChart()
-    })
-  },
-  methods: {
-    initChart() {
-      let chart = this.$echarts.init(this.$refs.myChart)
-      let defaultOption = {
+      chart: null,
+      option: {
         legend: {
           data: [
-            '用热量',
-            '温度',
+            '政府补贴',
+            '节约金额',
           ]
         },
         grid: {
-          left: '0%', //默认10%
-          right: '0%', //默认10%
-          bottom: '15%', //默认60
-          top: '15%',
+          left: '1%', //默认10%
+          right: '1%', //默认10%
+          bottom: '30%', //默认60
+          top: '20%',
           containLabel: true
           //grid区域是否包含坐标轴的刻度标签
         },
@@ -36,17 +23,17 @@ export default {
         },
         yAxis: [
           {
-            name: '热量(kWh)',
+            name: 'kwh',
             type: 'value',
             nameTextStyle: {
-              padding: [10, 0, 10, 0]
+              padding: [0, 0, 10, -30]
             },
           },
           {
-            name: '温度(℃)',
+            name: '',
             type: 'value',
             nameTextStyle: {
-              padding: [10, 0, 10, -12]
+              padding: [10, 0, 10, 30]
             },
           },
         ],
@@ -83,8 +70,8 @@ export default {
         },
         series: [
           {
-            name: '用热量',
-            data: [38, 36, 86, 64, 87, 77, 50, 56, 51, 88, 55, 80],
+            name: '政府补贴',
+            data: [80, 105, 155, 222, 66, 123, 124, 209, 61, 89, 156, 98],
             type: 'line',
             stack: 'a',
             yAxisIndex:0,
@@ -102,18 +89,18 @@ export default {
             }
           },
           {
-            name: '温度',
-            data: [31, 24, 22, 25, 24, 24, 25, 22, 21, 22, 26, 32],
+            name: '节约金额',
+            data: [160, 205, 111, 131, 63, 177, 106, 99, 181, 151, 170, 76],
             type: 'line',
-            stack: 'b',
+            stack: 'a',
             yAxisIndex:1,
             smooth: true,
             showSymbol:false,
             itemStyle: {
-              color: '#FDB456'
+              color: '#3AA7E6'
             },
             lineStyle: {
-              color: "#FDB456",
+              color: "#3AA7E6",
               width: 1,
             },
             emphasis: {
@@ -121,9 +108,34 @@ export default {
             },
           },
         ]
-      };
-      //Object.assign(defaultOption, this.option)
-      chart.setOption(defaultOption)
+      },
+    }
+  },
+  props: {
+    height: Number,
+    data: Object,
+  },
+  watch: {
+    data: {
+      handler: function (val) {
+        //this.option.xAxis.data = val.x;
+        //this.option.series[0].data = val.ownEmployees;
+        //this.option.series[1].data = val.outsourcingStaff;
+        this.chart.setOption(this.option);
+      },
+      deep: true
+    }
+  },
+  mounted() {
+    this.$nextTick(()=>{
+      this.initChart()
+    })
+  },
+  methods: {
+    initChart() {
+      let chart = this.$echarts.init(this.$refs.myChart)
+      this.chart = chart;
+      chart.setOption(this.option)
     }
   }
 }

+ 131 - 0
src/components/business/analysis/water/BusinessWaterChart.vue

@@ -0,0 +1,131 @@
+<template>
+  <div>
+    <div class="dashboardPortrait-select">
+      <a-checkable-tag v-model="tagCheck.all" color="white" class="dashboardPortrait-select-tag" @change="handleTagSelect('all')">
+        <span class="dashboardPortrait-select-text">总体用水</span>
+      </a-checkable-tag>
+      <a-checkable-tag v-model="tagCheck.F15" color="white" class="dashboardPortrait-select-tag" @change="handleTagSelect('F15')">
+        <span class="dashboardPortrait-select-text">15F</span>
+      </a-checkable-tag>
+      <a-checkable-tag v-model="tagCheck.F20" color="white" class="dashboardPortrait-select-tag" @change="handleTagSelect('F20')">
+        <span class="dashboardPortrait-select-text">20F</span>
+      </a-checkable-tag>
+    </div>
+    <div class="myChart" ref="myChart" :style="{height: height+'px'}">
+
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      currCheck: '',
+      tagCheck: {
+        all: false,
+        F15: false,
+        F20: false,
+      }
+    }
+  },
+  props: {
+    height: Number
+  },
+  mounted() {
+    this.init();
+    this.handleTagSelect('all')
+  },
+  methods: {
+    handleTagSelect(item) {
+      for (const key in this.tagCheck) {
+        this.tagCheck[key] = false;
+      }
+      this.currCheck = item;
+      this.tagCheck[item] = true;
+    },
+    init() {
+      let chart = this.$echarts.init(this.$refs.myChart);
+      let options = {
+        color: ['#80D4FF','#A6A6FF','#79F2E8','#FFDF80','#FF7C1F'],
+        legend: {
+          data: [
+            '自来水',
+            '中水',
+          ]
+        },
+        grid: {
+          left: '2%', //默认10%
+          right: '2%', //默认10%
+          bottom: '15%', //默认60
+          top: '15%',
+          containLabel: true
+          //grid区域是否包含坐标轴的刻度标签
+        },
+        xAxis: {
+          type: 'category',
+          data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
+        },
+        yAxis: [
+          {
+            name: 'm³',
+            type: 'value',
+            nameTextStyle: {
+              padding: [10, 0, 10, -20]
+            },
+          },
+        ],
+        tooltip: {
+          trigger: 'axis',
+          axisPointer: {
+            type: 'shadow'
+          },
+          textStyle: {
+            color: '#fff',
+            align: 'left',
+            fontSize: 14
+          },
+          axisLine: {//x坐标轴轴线
+            show: true,
+            lineStyle: {//x坐标轴轴线样式
+              color: '#000',//'#ccc' | 'rgb(128, 128, 128)' | 'rgba(128, 128, 128, 0.5)',设置标签颜色
+            }
+          },
+          backgroundColor: 'rgba(0,0,0,0.8)',
+        },
+        series: [
+          {
+            name: '自来水',
+            data: [161, 201, 236, 56, 215, 105, 152, 61, 188, 226, 208, 156],
+            type: 'bar',
+            stack: 'A',
+            barWidth: '30%',
+            itemStyle: {
+              color: '#3AA7E6'
+            },
+            backgroundStyle: {
+              color: 'rgba(180, 180, 180, 0.2)'
+            }
+          },
+          {
+            name: '中水',
+            data: [62, 60, 56, 59, 54, 75, 94, 66, 79, 84, 91, 53],
+            type: 'bar',
+            stack: 'A',
+            itemStyle: {
+              color: '#F4955F'
+            },
+            backgroundStyle: {
+              color: 'rgba(180, 180, 180, 0.2)'
+            }
+          }
+        ]
+      };
+      chart.setOption(options);
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+</style>

+ 99 - 0
src/components/business/analysis/water/BusinessWaterDetail.vue

@@ -0,0 +1,99 @@
+<script>
+import {requireImg} from "@/utils/requireImg";
+import BusinessWaterDistributeChart from "@/components/business/analysis/water/BusinessWaterDistributeChart.vue";
+
+export default {
+  components: {
+    BusinessWaterDistributeChart
+  },
+  methods: {
+    requireImg,
+    handleTagSelect(item) {
+      for (const key in this.tagCheck) {
+        this.tagCheck[key] = false;
+      }
+      this.currCheck = item;
+      this.tagCheck[item] = true;
+    },
+
+  },
+  data() {
+    return {
+      currCheck: '',
+      tagCheck: {
+        all: false,
+        F15: false,
+        F20: false,
+      }
+    }
+  },
+  mounted() {
+    this.handleTagSelect('all')
+  },
+}
+</script>
+
+<template>
+  <div class="businessEnergyDetail">
+    <div>
+
+      <div class="dashboardPortrait-select">
+        <a-checkable-tag v-model="tagCheck.all" color="white" class="dashboardPortrait-select-tag" @change="handleTagSelect('all')">
+          <span class="dashboardPortrait-select-text">总体用水</span>
+        </a-checkable-tag>
+        <a-checkable-tag v-model="tagCheck.F15" color="white" class="dashboardPortrait-select-tag" @change="handleTagSelect('F15')">
+          <span class="dashboardPortrait-select-text">15F</span>
+        </a-checkable-tag>
+        <a-checkable-tag v-model="tagCheck.F20" color="white" class="dashboardPortrait-select-tag" @change="handleTagSelect('F20')">
+          <span class="dashboardPortrait-select-text">20F</span>
+        </a-checkable-tag>
+      </div>
+
+      <div style="font-size: 16px;color: #B2B2B2;height: 40px;text-align: center">
+        <span class="businessEnergyDetail-icon">
+          <span class="anticon">
+            <a-avatar class="function-avatar" shape="square" :size="25" :src="requireImg('business/energy/water.png')"></a-avatar>
+          </span>
+        </span>
+        总用水量
+        <span class="businessEnergyDetail-num">36</span>
+        m3
+      </div>
+      <div style="font-size: 16px;color: #B2B2B2;margin: 6px auto;text-align: center">
+        <span class="businessEnergyDetail-icon">
+          <span class="anticon">
+            <a-avatar class="function-avatar" shape="square" :size="25" :src="requireImg('business/energy/water.png')"></a-avatar>
+          </span>
+        </span>
+        人均成本
+        <span class="businessEnergyDetail-num">36</span>
+        元/人/年
+      </div>
+
+      <div class="businessEnergyDetail-chart">
+        <BusinessWaterDistributeChart :height="350"></BusinessWaterDistributeChart>
+      </div>
+    </div>
+  </div>
+</template>
+
+<style lang="less" scoped>
+.businessEnergyDetail {
+  width: 100%;
+  height: 100%;
+  .businessEnergyDetail-icon {
+    display: inline-block;
+    margin-right: 6px;
+    vertical-align: middle;
+  }
+  .businessEnergyDetail-num {
+    display: inline-block;
+    padding: 0 20px;
+    color: #4D4D4D;
+    background-color: #f7fbff;
+  }
+  .businessEnergyDetail-chart {
+    margin-top: 50px;
+  }
+}
+</style>

+ 60 - 0
src/components/business/analysis/water/BusinessWaterDistributeChart.vue

@@ -0,0 +1,60 @@
+<script>
+export default {
+  data() {
+    return {}
+  },
+  props: {
+    height: Number,
+  },
+  mounted() {
+    this.$nextTick(()=>{
+      this.initChart()
+    })
+  },
+  methods: {
+    initChart() {
+      let chart = this.$echarts.init(this.$refs.myChart)
+      let option = {
+        color: ['#80D4FF', '#A6A6FF', '#FFB580', '#FFDF80', '#79F2E8'],
+        tooltip: {
+          trigger: 'item'
+        },
+        legend: {
+          bottom: '5%',
+          left: '10%',
+          right: '10%',
+          icon: 'circle'
+        },
+        series: [
+          {
+            name: '用水量',
+            type: 'pie',
+            radius: ['40%', '70%'],
+            center: ['50%','40%'],
+            data: [
+              { value: 1048, name: '自来水' },
+              { value: 735, name: '中水' },
+            ],
+            emphasis: {
+              itemStyle: {
+                shadowBlur: 10,
+                shadowOffsetX: 0,
+                shadowColor: 'rgba(0, 0, 0, 0.5)'
+              }
+            }
+          }
+        ]
+      };
+      chart.setOption(option)
+    }
+  }
+}
+</script>
+
+<template>
+  <div style="width: 100%" :style="{height: height+'px'}" ref="myChart"></div>
+</template>
+
+<style lang="less" scoped>
+
+</style>

+ 32 - 65
src/components/business/asset/asset.vue

@@ -1,7 +1,7 @@
 <template>
   <div>
     <div class="page-query-core">
-      <query></query>
+      <Query :show="['company', 'time']" :query-data.sync="queryData" :reset="reset" :search="search"></Query>
       <card :title="'核心指标'">
         <CoreData :data-list="coreData"></CoreData>
       </card>
@@ -56,6 +56,7 @@ import InvestDistributeChart from "@/components/dashboard/portrait/money/investD
 import InvestYearChart from "@/components/dashboard/portrait/money/investYearChart.vue";
 import AssetRankChart from "@/components/business/asset/charts/assetRankChart.vue";
 import AssetMoneyRepairChart from "@/components/business/asset/charts/assetMoneyRepairChart.vue";
+import apiOperationMoney from "@/api/operation/apiOperationMoney";
 
 export default {
   components: {
@@ -77,30 +78,14 @@ export default {
       });
     }
     return {
+      queryData: {
+        company: '0',
+        timeRange: this.$util.dateUtil.getNearlyMonthRange()
+      },
       tagCheck: {
         invest: false,
         year: false,
       },
-      options: [
-        {
-          value: 1,
-          name: "中讯1",
-        },
-        {
-          value: 2,
-          name: "中讯2",
-        },
-      ],
-      floors: [
-        {
-          value: 7,
-          name: "7层",
-        },
-        {
-          value: 8,
-          name: "8层",
-        },
-      ],
       columns: [
         {title: "序号", dataIndex: "index", key: "1", width: 48},
         {title: "姓名", dataIndex: "name", key: "2", width: 60},
@@ -111,43 +96,47 @@ export default {
       coreData: [
         {
           title: "资产总金额(亿元)",
-          num: "1.3",
+          num: "",
           historyDesc: "同比",
-          historyNum: 0.4,
+          historyNum: '',
         },
         {
           title: "资产总数(项)",
-          num: "5000",
+          num: "0",
           historyDesc: "同比",
-          historyNum: 0.4,
+          historyNum: 0,
         },
         {
           title: "资产占比最高",
-          num: "项目一",
+          num: "",
           historyDesc: "占比",
-          historyNum: 60,
+          historyNum: 0,
         },
         {
           title: "重点投资领域",
-          num: "工业互联网",
+          num: "",
           historyDesc: "投资总额占比",
-          historyNum: 60,
+          historyNum: 0,
         },
         {
           type: 1,
           showStar: true,
           title: "值得关注",
-          content: "13笔记本即将到报废年限",
+          content: "",
         },
       ],
     };
   },
   mounted() {
     this.$nextTick(()=>{
+      this.init();
       this.handleTagSelect('invest');
     })
   },
   methods: {
+    init() {
+      this.getCoreData()
+    },
     handleTagSelect(item) {
       for (const key in this.tagCheck) {
         this.tagCheck[key] = false;
@@ -155,41 +144,19 @@ export default {
       this.currCheck = item;
       this.tagCheck[item] = true;
     },
-    setEchart4() {
-      let chart = this.$echarts.init(this.$refs.myChart4);
-      let data = [
-        {value: 1048, name: "部门1"},
-        {value: 735, name: "部门2"},
-        {value: 580, name: "部门3"},
-        {value: 484, name: "其他部门"},
-      ];
-      let options = {
-        tooltip: {
-          trigger: "item",
-        },
-        legend: {
-          orient: "horizontal",
-          bottom: "0%",
-          left: "center",
-        },
-        series: [
-          {
-            name: "",
-            type: "pie",
-            radius: "65%",
-            data: data,
-            emphasis: {
-              itemStyle: {
-                shadowBlur: 10,
-                shadowOffsetX: 0,
-                shadowColor: "rgba(0, 0, 0, 0.5)",
-              },
-            },
-          },
-        ],
-      };
-      chart.setOption(options);
-    },
+    getCoreData() {
+      apiOperationMoney.getCoreData(this.queryData).then(res=>{
+        this.coreData[0].num = res.list[0].value
+        this.coreData[0].historyNum = res.list[0].compare
+        this.coreData[1].num = res.list[1].value
+        this.coreData[1].historyNum = res.list[1].compare
+        this.coreData[2].num = res.list[2].value
+        this.coreData[2].historyNum = res.list[2].compare
+        this.coreData[3].num = res.list[3].value
+        this.coreData[3].historyNum = res.list[3].compare
+        this.coreData[4].content = res.worthAttention
+      })
+    }
   },
 };
 </script>

+ 40 - 223
src/components/business/space/space.vue

@@ -1,7 +1,7 @@
 <template>
   <div>
     <div class="page-query-core">
-      <query></query>
+      <Query :show="['company', 'time']" :query-data.sync="queryData" :reset="reset" :search="search"></Query>
       <card :title="'核心指标'">
         <CoreData :data-list="coreData"></CoreData>
       </card>
@@ -38,6 +38,7 @@ import query from "@/components/common/query.vue";
 import card from "@/components/common/card.vue";
 import {requireImg} from "@/utils/requireImg";
 import SpaceCostChart from "@/components/business/space/charts/spaceCostChart.vue";
+import apiOperationSpace from "@/api/operation/apiOperationSpace";
 
 export default {
   components: {
@@ -56,65 +57,63 @@ export default {
       });
     }
     return {
+      queryData: {
+        company: '0',
+        timeRange: this.$util.dateUtil.getNearlyMonthRange()
+      },
       coreData: [
         {
           title: "自用工位分配率",
-          num: "98%",
+          num: "",
+          unit: '%',
           historyDesc: "同比",
-          historyNum: 0.4,
+          historyNum: 0,
         },
         {
           title: "会议室使用率",
-          num: "50%",
+          num: "",
+          unit: '%',
           historyDesc: "同比",
-          historyNum: 0.4,
+          historyNum: 0,
         },
         {
           title: "流动工位总数",
-          num: "100",
+          num: "",
+          unit: '%',
           historyDesc: "同比",
-          historyNum: 60,
+          historyNum: 0,
         },
         {
           title: "固定工位总数",
-          num: "1000",
-
+          num: "0",
           historyDesc: "同比",
-          historyNum: 60,
+          historyNum: 0,
         },
         {
           title: "休闲/办公面积(m2)",
-          num: "40/1000",
+          num: "0",
           historyDesc: "同比",
-          historyNum: 0.4,
+          historyNum: 0,
         },
         {
           type: 1,
           showStar: true,
           title: "值得关注",
-          content: "会议室使用率过低,建议出租",
+          content: "",
         },
       ],
     };
   },
   mounted() {
-    let that = this;
-    setTimeout(() => {
-      that.setEchart1();
-      // this.setEchart2();
-      // that.setEchart3();
-      // that.setEchart4();
-    }, 100);
+    this.init()
   },
   methods: {
     requireImg,
-    handleChange(value) {
-      console.log(`selected ${value}`);
-    },
-    getTimeRange() {
-      this.$refs.timeRange.getTimeRange(); // 获取时间段
+    init() {
+      this.getCoreData()
     },
-
+    reset() {},
+    search() {},
     tabChange(index) {
       let that = this;
       setTimeout(() => {
@@ -130,203 +129,21 @@ export default {
         }
       }, 100);
     },
-    // clearECharts(ele) {
-    //   let parentElement = ele.parentElement;
-    //   parentElement.remove(ele);
-    //   let div = document.createElement("div");
-    //   //为div创建属性class = "test"
-    //   var divattr = document.createAttribute("class");
-    //   divattr.value = "myChart";
-    //   //把属性class = "test"添加到div
-    //   div.setAttributeNode(divattr);
-    //   parentElement.appendChild(div);
-    //   return div;
-    // },
-    setEchart1() {
-      let that = this;
-      let chart = this.$echarts.init(this.$refs.myChart2);
-
-      let xLabel = ["3.26", "3.27", "3.28", "3.29", "3.30", "3.31"];
-
-      let yData = [
-        {
-          name: "办公区",
-          color: "#5470c6",
-          startColor: "rgba(84,112,198,.8)",
-          endColor: "rgba(84,112,198,.8)",
-          data: ["110", "130", "150", "170", "150", "130"],
-        },
-        {
-          name: "休闲区",
-          color: "#91cc75",
-          startColor: "rgba(145,204,117,.8)",
-          endColor: "rgba(145,204,117,.8)",
-          data: ["210", "230", "250", "270", "250", "230"],
-        },
-      ];
-      let ySeries = yData.map(function (item) {
-        return {
-          name: item.name,
-          type: "line",
-          stack: "Total",
-          // symbol: "circle", // 默认是空心圆(中间是白色的),改成实心圆
-          showAllSymbol: true,
-          symbolSize: 8,
-          smooth: true,
-          lineStyle: {
-            normal: {
-              width: 2,
-              color: item.color, // 线条颜色
-            },
-          },
-          itemStyle: {
-            color: item.color,
-          },
-          areaStyle: {
-            normal: {
-              //线性渐变,前4个参数分别是x0,y0,x2,y2(范围0~1);相当于图形包围盒中的百分比。如果最后一个参数是‘true’,则该四个值是绝对像素位置。
-              color: new that.$echarts.graphic.LinearGradient(
-                  0,
-                  0,
-                  0,
-                  1,
-                  [
-                    {
-                      offset: 0,
-                      color: item.startColor,
-                    },
-                    {
-                      offset: 1,
-                      color: item.endColor,
-                    },
-                  ],
-                  false
-              ),
-            },
-          },
-          data: item.data,
-        };
-      });
-
-      let options = {
-        // backgroundColor: "#000237",
-        tooltip: {
-          trigger: "axis",
-          // backgroundColor: "transparent",
-          axisPointer: {
-            lineStyle: {
-              color: {
-                type: "linear",
-                x: 0,
-                y: 0,
-                x2: 0,
-                y2: 1,
-                colorStops: [
-                  {
-                    offset: 0,
-                    color: "rgba(126,199,255,0)", // 0% 处的颜色
-                  },
-                  {
-                    offset: 0.5,
-                    color: "rgba(126,199,255,1)", // 100% 处的颜色
-                  },
-                  {
-                    offset: 1,
-                    color: "rgba(126,199,255,0)", // 100% 处的颜色
-                  },
-                ],
-                global: false, // 缺省为 false
-              },
-            },
-          },
-        },
-        legend: {
-          align: "left",
-          top: "5%",
-          textStyle: {
-            color: "#000000",
-            fontSize: 16,
-          },
-        },
-        grid: {
-          top: "20%",
-          left: "15%",
-          right: "10%",
-          bottom: "10%",
-          // containLabel: true
-        },
-        xAxis: [
-          {
-            type: "category",
-            // boundaryGap: false,
-            axisLine: {
-              //坐标轴轴线相关设置。数学上的x轴
-              show: true,
-              lineStyle: {
-                color: "#6e7079",
-              },
-            },
-            axisLabel: {
-              //坐标轴刻度标签的相关设置
-              textStyle: {
-                color: "#000000",
-                padding: 8,
-                fontSize: 14,
-              },
-              formatter: function (data) {
-                return data;
-              },
-            },
-            splitLine: {
-              show: false,
-              lineStyle: {
-                color: "#233653",
-              },
-            },
-            axisTick: {
-              show: true,
-              inside: true,
-            },
-            data: xLabel,
-          },
-        ],
-        yAxis: [
-          {
-            min: 0,
-            splitLine: {
-              show: true,
-              lineStyle: {
-                color: "#e8e8e8",
-              },
-            },
-            axisLine: {
-              show: false,
-              lineStyle: {
-                color: "#233653",
-              },
-            },
-            axisLabel: {
-              show: true,
-              textStyle: {
-                color: "#000000",
-                padding: 8,
-              },
-              formatter: function (value) {
-                if (value === 0) {
-                  return value;
-                }
-                return value;
-              },
-            },
-            axisTick: {
-              show: false,
-            },
-          },
-        ],
-        series: ySeries,
-      };
-      chart.setOption(options);
-    },
+    getCoreData() {
+      apiOperationSpace.getCoreData(this.queryData).then(res=>{
+        this.coreData[0].num = res.list[0].value
+        this.coreData[0].historyNum = res.list[0].compare
+        this.coreData[1].num = res.list[1].value
+        this.coreData[1].historyNum = res.list[1].compare
+        this.coreData[2].num = res.list[2].value
+        this.coreData[2].historyNum = res.list[2].compare
+        this.coreData[3].num = res.list[3].value
+        this.coreData[3].historyNum = res.list[3].compare
+        this.coreData[4].num = res.list[4].value
+        this.coreData[4].historyNum = res.list[4].compare
+        this.coreData[5].content = res.worthAttention
+      })
+    }
   },
 };
 </script>

+ 1 - 2
src/components/common/coreData.vue

@@ -140,8 +140,7 @@ export default {
     }
     .coreData-item-unit {
       display: inline-block;
-      margin-left: 3px;
-      color: #9a9a9a;
+      font-size: 22px;
     }
     .coreData-item-historyDesc {
       display: inline-block;

+ 34 - 2
src/components/common/query.vue

@@ -19,6 +19,12 @@
           <a-select-option v-for="item in floorData" :key="item.value" :value="item.value"> {{ item.label }} </a-select-option>
         </a-select>
       </a-form-item>
+      <a-form-item label="能源类型:" class="formItem" v-if="visible.energy">
+        <a-select default-value="0" style="width: 200px" v-model="formData.energy">
+          <a-select-option value="0"> 全部 </a-select-option>
+          <a-select-option v-for="item in energyData" :key="item.value" :value="item.value"> {{ item.label }} </a-select-option>
+        </a-select>
+      </a-form-item>
       <a-form-item label="时间范围:" class="formItem" v-if="visible.time">
         <timeRange :time-range.sync="formData.timeRange" ref="timeRange" style="width: 250px"></timeRange>
       </a-form-item>
@@ -67,6 +73,7 @@ export default {
         company: false,
         floor: false,
         dept: false,
+        energy: false,
         time: false
       },
       formData: {},
@@ -115,11 +122,36 @@ export default {
           value: '2'
         }
       ],
+      // 能源类型
+      energyData: [
+        {
+          label: '用电',
+          value: 'electric'
+        },
+        {
+          label: '用水',
+          value: 'water'
+        },
+        {
+          label: '用热',
+          value: 'hot'
+        },
+        {
+          label: '用冷',
+          value: 'cold'
+        },
+        {
+          label: '光伏',
+          value: 'pv'
+        }
+      ]
     };
   },
   created() {
-    for (let i = 0; i < this.show.length; i++) {
-      this.visible[this.show[i]] = true
+    if (this.show) {
+      for (let i = 0; i < this.show.length; i++) {
+        this.visible[this.show[i]] = true
+      }
     }
   },
   mounted() {

+ 1 - 1
src/components/dashboard/commonFuncManage/function.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="function-btn" :style="functionBtnStyle">
     <div class="function-icon">
-      <a-avatar class="function-avatar" shape="square" size="large" :src="requireImg(item.iconColor)"></a-avatar>
+      <a-avatar class="function-avatar" shape="square" size="large" :src="requireImg('functionColor/'+item.icon)"></a-avatar>
     </div>
     <div class="function-title">{{ item.name }}</div>
     <div class="function-btn-opr" v-if="type==-1" @click="minusFunction(item)">

+ 1 - 1
src/components/dashboard/more/dashboardMore.vue

@@ -1,5 +1,5 @@
 <script>
-import api from "@/api/dashboard"
+import api from "@/api/dashboard/apiDashboard"
 
 import Card from "@/components/common/card.vue";
 import FloorOverview from "@/components/dashboard/more/floorOverview.vue";

+ 1 - 1
src/components/dashboard/more/spaceOverview.vue

@@ -1,7 +1,7 @@
 <script>
 import Card from "@/components/common/card.vue";
 import DataSituation from "@/components/dashboard/more/space/DataSituation.vue";
-import api from "@/api/dashboard";
+import api from "@/api/dashboard/apiDashboard";
 export default {
   data() {
     return {

+ 27 - 6
src/components/dashboard/portrait/coldPortrait.vue

@@ -1,6 +1,7 @@
 <script>
 import CoreData from "@/components/common/coreData.vue";
 import ColdTrendChart from "@/components/dashboard/portrait/cold/coldTrendChart.vue";
+import api from "@/api/dashboard/apiDashboard";
 export default {
   data() {
     return {
@@ -8,28 +9,28 @@ export default {
         {
           type: 0,
           title: '月总用冷量(kWh)',
-          num: 2000,
+          num: 0,
           historyDesc: '同比',
-          historyNum: 0.4
+          historyNum: 0
         },
         {
           type: 0,
           title: '今日用冷趋势',
-          num: 1800,
+          num: 0,
           historyDesc: '同比',
           showTrendIcon: true,
         },
         {
           type: 1,
           title: '能效比',
-          content: 80,
+          content: '',
         },
         {
           type: 0,
           title: '人均用冷量(kWh)',
-          num: 30,
+          num: 0,
           historyDesc: '同比',
-          historyNum: '0.4'
+          historyNum: '0'
         },
         {
           type: 1,
@@ -47,6 +48,26 @@ export default {
   components: {
     CoreData,
     ColdTrendChart,
+  },
+  mounted() {
+    this.init();
+  },
+  methods: {
+    init() {
+      this.getCoreData()
+    },
+    getCoreData() {
+      api.getColdCoreData().then(res=>{
+        this.coreData[0].num = res.list[0].value
+        this.coreData[0].historyNum = res.list[0].compare
+        this.coreData[1].num = res.list[1].value
+        this.coreData[1].historyNum = res.list[1].compare
+        this.coreData[2].content = res.list[2].value
+        this.coreData[3].num = res.list[3].value
+        this.coreData[3].historyNum = res.list[3].compare
+        this.coreData[4].content = res.worthAttention
+      })
+    },
   }
 }
 </script>

+ 30 - 8
src/components/dashboard/portrait/electricityPortrait.vue

@@ -2,6 +2,7 @@
 import CoreData from "@/components/common/coreData.vue";
 import ElectricityUseChart from "@/components/dashboard/portrait/electricity/electricityUseChart.vue";
 import ElectricityDistributionChart from "@/components/dashboard/portrait/electricity/electricityDistributionChart.vue";
+import api from "@/api/dashboard/apiDashboard";
 export default {
   data() {
     return {
@@ -9,36 +10,36 @@ export default {
         {
           type: 0,
           title: '月总用电量(kWh)',
-          num: 2000,
+          num: 0,
           historyDesc: '同比',
-          historyNum: 0.4
+          historyNum: 0
         },
         {
           type: 0,
           title: '今日用电量(kWh)',
-          num: 1800,
+          num: 0,
           historyDesc: '同比',
-          historyNum: 0.4
+          historyNum: 0
         },
         {
           type: 0,
           title: '今日用电趋势',
-          num: -30,
+          num: 0,
           showTrendIcon: true,
           historyDesc: '同比',
         },
         {
           type: 0,
           title: '人均用电成本(元/天)',
-          num: 80,
+          num: 0,
           historyDesc: '同比',
-          historyNum: -0.4
+          historyNum: 0
         },
         {
           type: 1,
           showStar: true,
           title: '值得关注',
-          content: '用电成本月增速5%,主为动力用电'
+          content: ''
         },
       ]
     }
@@ -50,6 +51,27 @@ export default {
     CoreData,
     ElectricityUseChart,
     ElectricityDistributionChart,
+  },
+  mounted() {
+    this.init();
+  },
+  methods: {
+    init() {
+      this.getCoreData()
+    },
+    getCoreData() {
+      api.getElectricityCoreData().then(res=>{
+        this.coreData[0].num = res.list[0].value
+        this.coreData[0].historyNum = res.list[0].compare
+        this.coreData[1].num = res.list[1].value
+        this.coreData[1].historyNum = res.list[1].compare
+        this.coreData[2].num = res.list[2].value
+        this.coreData[2].historyNum = res.list[2].compare
+        this.coreData[3].num = res.list[3].value
+        this.coreData[3].historyNum = res.list[3].compare
+        this.coreData[4].content = res.worthAttention
+      })
+    },
   }
 }
 </script>

+ 29 - 10
src/components/dashboard/portrait/hotPortrait.vue

@@ -1,6 +1,7 @@
 <script>
 import CoreData from "@/components/common/coreData.vue";
 import HotTrendChart from "@/components/dashboard/portrait/hot/hotTrendChart.vue";
+import api from "@/api/dashboard/apiDashboard"
 export default {
   data() {
     return {
@@ -8,36 +9,34 @@ export default {
         {
           type: 0,
           title: '月总用热量(kWh)',
-          num: 2000,
+          num: 0,
           historyDesc: '同比',
-          historyNum: '0.4'
+          historyNum: '0'
         },
         {
           type: 0,
           title: '今日用热趋势',
-          num: 1800,
+          num: 0,
           showTrendIcon: true,
           historyDesc: '同比',
         },
         {
-          type: 0,
+          type: 1,
           title: '人均用热成本(kWh)',
-          num: 10,
-          historyDesc: '同比',
-          historyNum: '0.4'
+          content: ''
         },
         {
           type: 0,
           title: '人均用热量(kWh/天)',
-          num: 78,
+          num: 0,
           historyDesc: '同比',
-          historyNum: '-0.4'
+          historyNum: '0'
         },
         {
           type: 1,
           showStar: true,
           title: '值得关注',
-          content: '本月用热将超行业标准20%'
+          content: ''
         },
       ]
     }
@@ -48,6 +47,26 @@ export default {
   components: {
     CoreData,
     HotTrendChart,
+  },
+  mounted() {
+    this.init();
+  },
+  methods: {
+    init() {
+      this.getCoreData()
+    },
+    getCoreData() {
+      api.getHotCoreData().then(res=>{
+        this.coreData[0].num = res.list[0].value
+        this.coreData[0].historyNum = res.list[0].compare
+        this.coreData[1].num = res.list[1].value
+        this.coreData[1].historyNum = res.list[1].compare
+        this.coreData[2].content = res.list[2].value
+        this.coreData[3].num = res.list[3].value
+        this.coreData[3].historyNum = res.list[3].compare
+        this.coreData[4].content = res.worthAttention
+      })
+    },
   }
 }
 </script>

+ 33 - 10
src/components/dashboard/portrait/moneyPortrait.vue

@@ -2,6 +2,7 @@
 import CoreData from "@/components/common/coreData.vue";
 import InvestDistributeChart from "@/components/dashboard/portrait/money/investDistributeChart.vue";
 import InvestYearChart from "@/components/dashboard/portrait/money/investYearChart.vue";
+import api from "@/api/dashboard/apiDashboard";
 export default {
   data() {
     return {
@@ -9,36 +10,34 @@ export default {
         {
           type: 0,
           title: '年度投资总额(万元)',
-          num: 2000,
+          num: 0,
           historyDesc: '同比',
-          historyNum: '0.4'
+          historyNum: '0'
         },
         {
           type: 0,
           title: '资产总额(万元)',
-          num: 1800,
+          num: 0,
           historyDesc: '同比',
-          historyNum: '0.4'
+          historyNum: '0'
         },
         {
           type: 0,
           title: '人均资产总额(万元)',
-          num: 30,
+          num: 0,
           historyDesc: '同比',
-          historyNum: '0.4'
+          historyNum: '0'
         },
         {
           type: 0,
           title: '资产平均使用年限(年)',
-          num: 30,
-          historyDesc: '同比',
-          historyNum: '0.4'
+          num: 0,
         },
         {
           type: 1,
           showStar: true,
           title: '值得关注',
-          content: '本月投资将超行业标准20%'
+          content: ''
         },
       ]
     }
@@ -50,6 +49,30 @@ export default {
     CoreData,
     InvestDistributeChart,
     InvestYearChart,
+  },
+  mounted() {
+    this.init();
+  },
+  methods: {
+    init() {
+      this.getCoreData();
+    },
+    getCoreData() {
+      api.getMoneyCoreData(this.$util.dateUtil.getNearlyMonthRange()).then(res=>{
+        this.coreData[0].num = res.list[0].value
+        this.coreData[0].historyNum = res.list[0].compare
+        this.coreData[1].num = res.list[1].value
+        this.coreData[1].historyNum = res.list[1].compare
+        this.coreData[2].num = res.list[2].value
+        this.coreData[2].historyNum = res.list[2].compare
+        this.coreData[3].num = res.list[3].value
+        this.coreData[3].historyNum = res.list[3].compare
+        this.coreData[4].content = res.worthAttention
+      })
+    },
+    getTrendData() {
+
+    }
   }
 }
 </script>

+ 45 - 30
src/components/dashboard/portrait/person/personTrendChart.vue

@@ -2,22 +2,9 @@
 export default {
   data() {
     return {
+      chart: null,
       show: false,
-    }
-  },
-  props: {
-    height: Number,
-  },
-  mounted() {
-    this.$nextTick(()=>{
-      this.initChart();
-    })
-    let app = this;
-  },
-  methods: {
-    initChart() {
-      let chart = this.$echarts.init(this.$refs.myChart)
-      let defaultOption = {
+      defaultOption: {
         legend: {
           data: [
             '自有员工',
@@ -34,7 +21,7 @@ export default {
           //grid区域是否包含坐标轴的刻度标签
         },
         xAxis: {
-          data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
+          data: this.data.x
         },
         yAxis: [
           {
@@ -79,11 +66,11 @@ export default {
         series: [
           {
             name: '自有员工',
-            data: [302, 395, 227, 375, 349, 396, 304, 226, 207, 383, 287, 243],
+            data: this.data.ownEmployees,
             type: 'line',
             stack: 'x',
             smooth: true,
-            showSymbol:false,
+            showSymbol: false,
             areaStyle: {
               color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                 offset: 0,
@@ -98,16 +85,16 @@ export default {
               width: 1,
             },
             emphasis: {
-              scale:1.5
+              scale: 1.5
             }
           },
           {
             name: '外协员工',
-            data: [108, 104, 117, 152, 157, 121, 138, 146, 106, 143, 132, 177],
+            data: this.data.outsourcingStaff,
             type: 'line',
             stack: 'x',
             smooth: true,
-            showSymbol:false,
+            showSymbol: false,
             areaStyle: {
               color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                 offset: 0,
@@ -122,16 +109,16 @@ export default {
               width: 1,
             },
             emphasis: {
-              scale:1.5
+              scale: 1.5
             },
           },
           {
             name: '访客人员',
-            data: [40, 15, 59, 18, 33, 31, 31, 26, 34, 26, 28, 40],
+            data: this.data.visitors,
             type: 'line',
             stack: 'x',
             smooth: true,
-            showSymbol:false,
+            showSymbol: false,
             areaStyle: {
               color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                 offset: 0,
@@ -146,22 +133,50 @@ export default {
               width: 1,
             },
             emphasis: {
-              scale:1.5
+              scale: 1.5
             },
           }
         ]
-      };
-      chart.setOption(defaultOption);
+      },
+    }
+  },
+  props: {
+    height: Number,
+    data: Object
+  },
+  mounted() {
+    this.$nextTick(() => {
+      this.initChart();
+    })
+  },
+  watch: {
+    data: {
+      handler: function (val) {
+        this.defaultOption.xAxis.data = val.x;
+        this.defaultOption.series[0].data = val.ownEmployees;
+        this.defaultOption.series[1].data = val.outsourcingStaff;
+        this.defaultOption.series[2].data = val.visitors;
+        this.chart.setOption(this.defaultOption);
+      },
+      deep: true
+    }
+  },
+  methods: {
+    initChart() {
+      this.chart = this.$echarts.init(this.$refs.myChart);
+      console.log(this.data)
+      this.chart.setOption(this.defaultOption);
+      let app = this;
       setTimeout(function () {
-        chart.resize();
+        app.chart.resize();
       }, 1000)
-    }
+    },
   }
 }
 </script>
 
 <template>
-  <div id="personTrendChart" style="width: 100%" :style="{height: height+'px'}" ref="myChart" ></div>
+  <div id="personTrendChart" style="width: 100%" :style="{height: height+'px'}" ref="myChart"></div>
 </template>
 
 <style lang="less" scoped>

+ 34 - 15
src/components/dashboard/portrait/personPortrait.vue

@@ -1,5 +1,5 @@
 <script>
-import api from "@/api/dashboard";
+import api from "@/api/dashboard/apiDashboard";
 
 import CoreData from "@/components/common/coreData.vue";
 import PersonTrendChart from "@/components/dashboard/portrait/person/personTrendChart.vue";
@@ -10,28 +10,28 @@ export default {
         {
           type: 0,
           title: '进入大楼(人)',
-          num: 2000,
+          num: 0,
           historyDesc: '同比',
           historyNum: 0
         },
         {
           type: 0,
           title: '离开大楼(人)',
-          num: 200,
+          num: 0,
           historyDesc: '同比',
           historyNum: 0
         },
         {
           type: 0,
           title: '9点前进入大楼(人)',
-          num: 1800,
+          num: 0,
           historyDesc: '同比',
           historyNum: 0
         },
         {
           type: 0,
           title: '楼内人员数量(人)',
-          num: 80,
+          num: 0,
           historyDesc: '同比',
           historyNum: 0
         },
@@ -41,7 +41,13 @@ export default {
           showStar: true,
           content: ''
         },
-      ]
+      ],
+      trendData: {
+        x: [],
+        ownEmployees: [],
+        outsourcingStaff: [],
+        visitors: []
+      }
     }
   },
   props: {
@@ -57,26 +63,39 @@ export default {
   methods: {
     init() {
       this.getCoreData();
+      this.getTrendData();
     },
     getCoreData() {
       api.getPersonCoreData(this.$util.dateUtil.getNearlyMonthRange()).then(res=>{
         this.coreData[0].num = res.list[0].value
         this.coreData[0].historyNum = res.list[0].compare
-
-
         this.coreData[1].num = res.list[1].value
         this.coreData[1].historyNum = res.list[1].compare
-
         this.coreData[2].num = res.list[2].value
         this.coreData[2].historyNum = res.list[2].compare
-
         this.coreData[3].num = res.list[3].value
         this.coreData[3].historyNum = res.list[3].compare
-
         this.coreData[4].content = res.worthAttention
-
-        console.log(this.coreData)
-
+      })
+    },
+    getTrendData() {
+      api.getPersonEnterSummary(this.$util.dateUtil.getNearlyMonthRange()).then(res=>{
+        let x = [];
+        let ownEmployees = [];
+        let outsourcingStaff = [];
+        let visitors = [];
+        res.forEach(item=>{
+          x.push(item.startDate)
+          ownEmployees.push(item.ownEmployees)
+          outsourcingStaff.push(item.outsourcingStaff)
+          visitors.push(item.visitors)
+        });
+        this.trendData = {
+          x: x,
+          ownEmployees: ownEmployees,
+          outsourcingStaff: outsourcingStaff,
+          visitors: visitors,
+        }
       })
     }
   }
@@ -89,7 +108,7 @@ export default {
       <CoreData :data-list="coreData"></CoreData>
     </div>
     <div style="padding: 15px;">
-      <PersonTrendChart :height="chartHeight"></PersonTrendChart>
+      <PersonTrendChart :data="trendData" :height="chartHeight"></PersonTrendChart>
     </div>
   </div>
 </template>

+ 36 - 8
src/components/dashboard/portrait/restaurantPortrait.vue

@@ -1,4 +1,6 @@
 <script>
+import api from '@/api/dashboard/apiDashboard'
+
 import CoreData from "@/components/common/coreData.vue";
 import RestaurantTrendChart from "@/components/dashboard/portrait/restaurant/restaurantTrendChart.vue";
 export default {
@@ -8,34 +10,34 @@ export default {
         {
           type: 0,
           title: '餐厅消费金额(元)',
-          num: 2000,
+          num: 0,
           historyDesc: '同比',
-          historyNum: '0.4'
+          historyNum: '0'
         },
         {
           type: 0,
           title: '餐厅消费订单(单)',
-          num: 1800,
+          num: 0,
           historyDesc: '同比',
-          historyNum: '0.4'
+          historyNum: '0'
         },
         {
           type: 0,
           title: '餐厅平均单价(元/单)',
-          num: 30,
+          num: 0,
           historyDesc: '同比',
-          historyNum: '0.4'
+          historyNum: '0'
         },
         {
           type: 1,
           title: '第三方结算方式 费用(元)',
-          content: '200'
+          content: '0'
         },
         {
           type: 1,
           showStar: true,
           title: '值得关注',
-          content: '提高合同额'
+          content: ''
         },
       ]
     }
@@ -46,6 +48,32 @@ export default {
   components: {
     CoreData,
     RestaurantTrendChart,
+  },
+  mounted() {
+    this.init();
+  },
+  methods: {
+    init() {
+      this.getCoreData()
+      //this.getTrendData()
+    },
+    getCoreData() {
+      api.getRestCoreData().then(res=>{
+        this.coreData[0].num = res.list[0].value
+        this.coreData[0].historyNum = res.list[0].compare
+        this.coreData[1].num = res.list[1].value
+        this.coreData[1].historyNum = res.list[1].compare
+        this.coreData[2].num = res.list[2].value
+        this.coreData[2].historyNum = res.list[2].compare
+        this.coreData[3].content = res.list[3].value
+        this.coreData[4].content = res.worthAttention
+      })
+    },
+    getTrendData() {
+      api.getRestTrendData().then(res=>{
+
+      })
+    }
   }
 }
 </script>

+ 29 - 8
src/components/dashboard/portrait/supermarketPortrait.vue

@@ -1,6 +1,7 @@
 <script>
 import CoreData from "@/components/common/coreData.vue";
 import SupermarketTrendChart from "@/components/dashboard/portrait/supermarket/supermarketTrendChart.vue"
+import api from "@/api/dashboard/apiDashboard";
 export default {
   data() {
     return {
@@ -8,34 +9,34 @@ export default {
         {
           type: 0,
           title: '商超消费金额(元)',
-          num: 2000,
+          num: 0,
           historyDesc: '同比',
-          historyNum: '0.4'
+          historyNum: '0'
         },
         {
           type: 0,
           title: '商超消费订单(单)',
-          num: 1800,
+          num: 0,
           historyDesc: '同比',
-          historyNum: '0.4'
+          historyNum: '0'
         },
         {
           type: 0,
           title: '商超平均单价(元/单)',
-          num: 18,
+          num: 0,
           historyDesc: '同比',
-          historyNum: '0.4'
+          historyNum: '0'
         },
         {
           type: 1,
           title: '第三方结算方式 费用(元)',
-          content: '30'
+          content: '0'
         },
         {
           type: 1,
           title: '值得关注',
           showStar: true,
-          content: '提高合同额'
+          content: ''
         },
       ]
     }
@@ -46,6 +47,26 @@ export default {
   components: {
     CoreData,
     SupermarketTrendChart
+  },
+  mounted() {
+    this.init();
+  },
+  methods: {
+    init() {
+      this.getCoreData()
+    },
+    getCoreData() {
+      api.getSuperMarketCoreData().then(res=>{
+        this.coreData[0].num = res.list[0].value
+        this.coreData[0].historyNum = res.list[0].compare
+        this.coreData[1].num = res.list[1].value
+        this.coreData[1].historyNum = res.list[1].compare
+        this.coreData[2].num = res.list[2].value
+        this.coreData[2].historyNum = res.list[2].compare
+        this.coreData[3].content = res.list[3].value
+        this.coreData[4].content = res.worthAttention
+      })
+    },
   }
 }
 </script>

+ 31 - 9
src/components/dashboard/portrait/waterPortrait.vue

@@ -2,6 +2,7 @@
 import CoreData from "@/components/common/coreData.vue";
 import WaterUseChart from "@/components/dashboard/portrait/water/waterUseChart.vue";
 import WaterDistributionChart from "@/components/dashboard/portrait/water/waterDistributionChart.vue";
+import api from "@/api/dashboard/apiDashboard";
 export default {
   data() {
     return {
@@ -9,37 +10,37 @@ export default {
         {
           type: 0,
           title: '月总用水量(m³)',
-          num: 2000,
+          num: 0,
           historyDesc: '同比',
-          historyNum: '0.4'
+          historyNum: '0'
         },
         {
           type: 0,
           title: '今日用水总量(m³)',
-          num: 1800,
+          num: 0,
           historyDesc: '同比',
-          historyNum: '0.4'
+          historyNum: '0'
         },
         {
           type: 0,
           title: '今日用水趋势',
-          num: 30,
+          num: 0,
           showTrendIcon: true,
           historyDesc: '同比',
-          historyNum: '0.4'
+          historyNum: '0'
         },
         {
           type: 0,
           title: '人均用水量(m³)',
-          num: 60,
+          num: 0,
           historyDesc: '同比',
-          historyNum: '0.4'
+          historyNum: '0'
         },
         {
           type: 1,
           showStar: true,
           title: '值得关注',
-          content: '用水量低于行业标准20%'
+          content: '%'
         },
       ]
     }
@@ -51,6 +52,27 @@ export default {
     CoreData,
     WaterUseChart,
     WaterDistributionChart,
+  },
+  mounted() {
+    this.init();
+  },
+  methods: {
+    init() {
+      this.getCoreData()
+    },
+    getCoreData() {
+      api.getWaterCoreData().then(res=>{
+        this.coreData[0].num = res.list[0].value
+        this.coreData[0].historyNum = res.list[0].compare
+        this.coreData[1].num = res.list[1].value
+        this.coreData[1].historyNum = res.list[1].compare
+        this.coreData[2].num = res.list[2].value
+        this.coreData[2].historyNum = res.list[2].compare
+        this.coreData[3].num = res.list[3].value
+        this.coreData[3].historyNum = res.list[3].compare
+        this.coreData[4].content = res.worthAttention
+      })
+    },
   }
 }
 </script>

+ 0 - 136
src/components/doubleCarbon/AnalogData.js

@@ -1,136 +0,0 @@
-// 双碳概览-模拟数据
-const optionsNameOfUnit = [
-    { value: "1", label: "中讯邮电咨询设计院有限公司" },
-    { value: "2", label: "北京电信规划设计院" }
-]
-const CHART_DATA = {
-    BarChartData: {
-        yAxisData: ["中讯", "北京规划院", "郑分", "广分", "上分"],
-        seriesData: {
-            碳配额存量: [120, 132, 101, 134, 90, 230, 210],
-            碳配额消耗: [220, 182, 191, 234, 290, 330, 310]
-        }
-    },
-    LineChartData: {
-        xAxisData: ["1月", "2月", "3月", "4月", "5月", "6月", "7月"],
-        seriesData: {
-            中讯: [120, 132, 101, 134, 90, 230, 210],
-            北京规划院: [220, 182, 191, 234, 290, 330, 310],
-            郑分: [150, 232, 201, 154, 190, 330, 410],
-            广分: [320, 332, 301, 334, 390, 330, 320],
-            上分: [820, 932, 901, 934, 1290, 1330, 1320]
-        }
-    },
-    PieChartData: {
-        seriesName: "碳排放占比",
-        seriesData: [
-            { value: 1048, name: "汽油" },
-            { value: 735, name: "柴油" },
-            { value: 580, name: "天然气" },
-            { value: 484, name: "热力" },
-            { value: 300, name: "电力" },
-            { value: 199, name: "其他" }
-        ]
-    }
-}
-const doubleCarbonNewsInfoList = [
-    {
-        title: "【助力“双碳”,人才缺口这么补】",
-        content: `<div class="article"><p>  近日,天津市科学技术局等6部门发布《天津市科技支撑碳达峰碳中和实施方案(2022—2030年)》,提出加强绿色低碳领域人才选拔培养,加大对绿色低碳领域科技人才的支持力度,积极引进绿色低碳科技创新发展急需的各类人才,加强人才队伍建设。</p>
-<p>  不只是天津,放眼全国,上海、吉林、贵州、内蒙古等地相关政府部门也已经陆续发布了关于科技支撑碳达峰、碳中和(以下简称“双碳”)的实施方案,其中“提升绿色低碳人才培养能力”成为各地方案中都提到的一项内容。</p>
-<p>  <strong>产业、技术变革催生新需求</strong></p>
-<p>  2020年,我国提出采取更加有力的政策和措施,二氧化碳排放力争2030年前达到峰值,努力争取2060年前实现碳中和。这就是人们熟知的“双碳”目标。</p>
-<p>  其实,早在“双碳”目标提出前,我国的清洁能源建设已经取得重大成就,在水电、风电、光伏及氢能、储能等领域,人才队伍培养与建设均在有序进行。而当“双碳”目标提出后,一场广泛而深刻的经济社会系统性变革就此开始,清洁能源领域人才队伍开始走上助力实现“双碳”目标的转型之路。</p>
-<p>  面对新形势,原有人才队伍能否满足需求呢?</p>
-<p>  答案是否定的。</p>
-<p>  科技部科技人才交流开发服务中心开发服务处处长牛萍在具体调研中发现,战略科学家不足、复合型人才稀少、产业人才短缺成为当前“双碳”科技人才市场的主要特点。</p>
-<p>  牛萍告诉科技日报记者,面向“双碳”目标,通识教育难以满足复合型“双碳”科技人才的培养需求,导致高校“双碳”科技人才培养与市场需求不匹配。与此同时,“双碳”领域相关产学研合作不足,产业人才缺乏,这些都是导致“双碳”人才出现紧缺的原因。</p>
-<p>  在具体产业方面,从教育部下发的方案中可以看出,储能与氢能、碳捕集利用与封存、碳金融和碳交易等领域尤其缺乏人才支撑。</p>
-<p>  “人才需求的改变,源于产业需求的变化。”相关业内专家表示,“在‘双碳’目标提出前,氢能和储能产业关注的是‘能’,而在‘双碳’目标提出后,产业的关注点转变为‘碳’。换言之,‘双碳’目标的提出使氢能和储能等相关产业的技术目标,由追求相对减排率转变为追求绝对减排量。”</p>
-<p>  不仅是产业变化,技术变革也会带来人才需求的改变。</p>
-<p>  二氧化碳捕集、利用与封存(CCUS)技术被形象地称为“碳捕手”,其可将二氧化碳从工业或其他碳排放源中捕集,并运输到特定地点加以利用或封存,具有减排规模大、减排效益明显的特点。</p>
-<p>  不过,在过去很长一段时间内,二氧化碳捕集、利用与封存技术并未“合体”,而是各自分散在不同行业。伴随降碳要求的不断增加,化石能源大规模低碳化利用的技术需求也随之增加,二氧化碳捕集、利用与封存技术被有机地“组合”到一起。同时,行业从业者也要完成技能、知识等的“交叉融合”,此外还需要复合型人才的加入。</p>
-<p>  <strong>产学研多方推进人才培养</strong></p>
-<p>  在内蒙古乌兰察布市,三峡现代能源创新示范园(以下简称示范园)拔地而起。示范园里,中国长江三峡集团有限公司(以下简称三峡集团)“拉了个群”,联合产学研合作伙伴,共同探索“源网荷储”(以“电源、电网、负荷、储能”为整体规划的新型电力运行模式)一体化新型能源系统发展,建设源网荷储技术研发试验基地。</p>
-<p>  “示范园中的源网荷储技术研发试验基地,是三峡集团培养储能技术人才的一个基地。”三峡集团科学技术研究院综合能源技术研究中心主任尹立坤告诉科技日报记者,2020年,他们综合考量全球先进储能技术,结合我国地理、气候特点,选择对8种新型储能技术进行研究,并建成2个行业急需的大型实验室,联合中国科学院、清华大学、华北电力大学等20余家科研单位进行技术攻关,联合培养人才。</p>
-<p>  此后短短2年,一系列储能技术成果相继落地:当前国内容量最大的功率路由器设备,国内规模最大、类型最丰富的储能系统动态模拟平台,兆瓦时级固态锂离子电池储能关键技术及工程应用项目……</p>
-<p>  科研成果创下“行业之最”的同时,科研人才也不断涌现。三峡集团科学技术研究院统计资料显示,目前集团已培养博士20余名,其中15名青年骨干研发人员已走上企业储能一线工作岗位。</p>
-<p>  产业之外,以培养人才为己任的高校也加快了探索的脚步。</p>
-<p>  2021年9月,清华大学成立碳中和研究院。作为学科交叉研究平台,该研究院整合清华大学相关领域学科优势,直面“双碳”领域复合型人才稀少等难题,协同打造低碳、零碳、负碳等颠覆性的核心技术,推动碳中和相关学科建设和高层次人才培养。</p>
-<p>  清华大学碳中和研究院院长助理、环境学院教授鲁玺介绍,目前清华大学碳中和研究院有8个研究中心,研究方向涵盖低碳能源、新型电力系统、零碳建筑、零碳交通、工业深度减碳、减污降碳协同增效、气候变化与碳中和战略及气候治理与碳金融等交叉领域,以系统思维推动碳中和人才队伍建设和培养。</p>
-<p>  <strong>关键一步在于转变观念</strong></p>
-<p>  2021年10月24日,《中共中央国务院关于完整准确全面贯彻新发展理念做好碳达峰碳中和工作的意见》和《国务院关于印发2030年前碳达峰行动方案的通知》正式印发,从国家层面对“双碳”工作进行顶层设计。此后,各领域“双碳”行动方案陆续出台,“双碳”“1+N”政策体系不断完善,“双碳”科技人才培养的政策举措不断优化。</p>
-<p>  2022年4月24日,教育部印发《加强碳达峰碳中和高等教育人才培养体系建设工作方案》,从加快紧缺人才培养、促进传统专业转型升级、加强高水平教师队伍建设等9个方面,明确22条主要任务和重点举措。同年8月17日,科技部等九部门发布《科技支撑碳达峰碳中和实施方案(2022—2030)》,提出推动国家绿色低碳创新基地建设和人才培养,培养和发展壮大碳达峰碳中和领域战略科学家、科技领军人才和创新团队、青年人才和创新创业人才,建设面向实现碳达峰碳中和目标的可持续人才队伍。</p>
-<p>  “对于‘双碳’人才的培养,我国在‘双碳’‘1+N’政策体系下,不断统筹优化‘双碳’科技人才培养举措,顶层设计已相对健全。”牛萍介绍,但在省市区县各级政府部门制定的“双碳”工作实施方案及规划中,对“双碳”人才培养虽有所提及,却仍然缺乏关于“双碳”人才的专项政策,缺少更具体的实施举措。</p>
-<p>  在牛萍看来,双碳人才培养的关键一步在于转变观念。从科研人才到产业人才,都需要将“碳”的观念树立起来,提升自身的“双碳”素养,让“双碳”理念先行。尤其是各级政府部门,可以通过开展科技人才“双碳”素养提升行动,为各类“双碳”人才涌现营造良好的生态环境。</p>
-<p>  未来,面向“双碳”科技人才的培养需求,牛萍建议,要建立“双碳”重点领域全球高层次人才动态监测机制,为“双碳”科技人才靶向引进和自主培养提供决策参考;加强符合“双碳”标准的复合型科技人才培养,在国际标准平台上扩大中国的影响力。</p></div>`,
-        author: "科技日报",
-        pushTime: "2023-02-13 15:30"
-    },
-    {
-        title: "【减碳小妙招】",
-        content: "xxxxxxxxxxxxxxxxxx165465465465xxxxx",
-        author: "中讯邮电设计院-张三",
-        pushTime: "2021-08-09"
-    },
-    {
-        title: "【减碳小妙招】",
-        content: "xxxxxxxxxxxxxxxxxxxxxxx",
-        author: "中讯邮电设计院-张三",
-        pushTime: "2021-08-09"
-    }
-]
-const core_List = [
-    {
-        title: "碳配额存量",
-        value: "60%",
-        leavel: 1
-    },
-    {
-        title: "碳排放存量",
-        value: 500,
-        unit: "tCO2e",
-        info: {
-            title: "同比上升",
-            leavel: 3,
-            value: "0.4%"
-        }
-    },
-    {
-        title: "单位面积碳排放",
-        value: 380,
-        unit: "tCO2e/m²",
-        info: {
-            title: "同比上升",
-            leavel: 3,
-            value: "0.4%"
-        }
-    },
-    {
-        title: "人均碳排放",
-        value: 80,
-        unit: "tCO2e/人",
-        info: {
-            title: "同比上升",
-            leavel: 3,
-            value: "0.4%"
-        }
-    },
-    {
-        title: "光伏减排",
-        value: 40,
-        unit: "tCO2e",
-        info: {
-            title: "同比上升",
-            leavel: 3,
-            value: "0.4%"
-        }
-    },
-    {
-        title: "值得关注",
-        value: "减少2辆车出行一周"
-    }
-]
-export default {
-    optionsNameOfUnit, CHART_DATA, doubleCarbonNewsInfoList, core_List
-}

+ 42 - 9
src/components/doubleCarbon/PV/doubleCarbonPv.vue

@@ -5,6 +5,7 @@ import Query from "@/components/common/query.vue";
 
 import CarbonPvEmissionChart from "@/components/doubleCarbon/PV/charts/carbonPvEmissionChart.vue";
 import CarbonPvQuotaChart from "@/components/doubleCarbon/PV/charts/carbonPvQuotaChart.vue";
+import apiCarbonPv from "@/api/carbon/apiCarbonPv";
 
 export default {
   components: {
@@ -16,30 +17,34 @@ export default {
   },
   data() {
     return {
+      queryData: {
+        company: '0',
+        timeRange: this.$util.dateUtil.getNearlyMonthRange()
+      },
       coreData: [
         {
           title: '光伏累计减排(tco2e/年内)',
-          num: 60,
+          num: 0,
           historyDesc: '同比',
-          historyNum: 0.4
+          historyNum: 0
         },
         {
           title: '光伏发电量(kwh/天)',
-          num: 50,
+          num: 0,
           historyDesc: '同比',
-          historyNum: 0.4
+          historyNum: 0
         },
         {
           title: '光伏节约金额(元/天)',
-          num: 500,
+          num: 0,
           historyDesc: '同比',
-          historyNum: -0.4
+          historyNum: 0
         },
         {
           title: '光伏补贴金额(元/天)',
-          num: 80,
+          num: 0,
           historyDesc: '同比',
-          historyNum: -0.4
+          historyNum: 0
         },
         {
           type: 1,
@@ -58,6 +63,34 @@ export default {
       ]
     }
   },
+  mounted() {
+    this.init();
+  },
+  methods: {
+    init() {
+      this.getCoreData()
+    },
+    reset() {
+      console.log('reset')
+    },
+    search(data) {
+      console.log(data)
+    },
+    getCoreData() {
+      let timeRange = this.$util.dateUtil.getNearlyMonthRange()
+      apiCarbonPv.getCoreData(timeRange).then(res=>{
+        this.coreData[0].num = res.list[0].value
+        this.coreData[0].historyNum = res.list[0].compare
+        this.coreData[1].num = res.list[1].value
+        this.coreData[1].historyNum = res.list[1].compare
+        this.coreData[2].num = res.list[2].value
+        this.coreData[2].historyNum = res.list[2].compare
+        this.coreData[3].num = res.list[3].value
+        this.coreData[3].historyNum = res.list[3].compare
+        this.coreData[4].content = res.worthAttention
+      })
+    }
+  }
 }
 </script>
 
@@ -68,7 +101,7 @@ export default {
       <a-row>
         <a-col>
           <div style="width: 100%">
-            <Query></Query>
+            <Query :show="['company', 'time']" :query-data.sync="queryData" :reset="reset" :search="search"></Query>
           </div>
         </a-col>
         <a-col>

+ 42 - 10
src/components/doubleCarbon/car/doubleCarbonCar.vue

@@ -5,6 +5,7 @@ import Query from "@/components/common/query.vue";
 
 import CarbonCarEmissionChart from "@/components/doubleCarbon/car/charts/carbonCarEmissionChart.vue";
 import CarbonCarQuotaChart from "@/components/doubleCarbon/car/charts/carbonCarQuotaChart.vue";
+import apiCarbonCar from "@/api/carbon/apiCarbonCar";
 
 export default {
   components: {
@@ -16,36 +17,40 @@ export default {
   },
   data() {
     return {
+      queryData: {
+        company: '0',
+        timeRange: this.$util.dateUtil.getNearlyMonthRange()
+      },
       coreData: [
         {
           title: '车辆总里程(km/天)',
-          num: 60,
+          num: 0,
           historyDesc: '同比',
-          historyNum: 0.4
+          historyNum: 0
         },
         {
           title: '车辆平均里程(km/天)',
-          num: 500,
+          num: 0,
           historyDesc: '同比',
-          historyNum: 0.4
+          historyNum: 0
         },
         {
           title: '车辆平均行驶时长(h/天)',
-          num: 80,
+          num: 0,
           historyDesc: '同比',
-          historyNum: -0.4
+          historyNum: 0
         },
         {
           title: '车辆平均碳排放(kg/辆/天)',
-          num: 80,
+          num: 0,
           historyDesc: '同比',
-          historyNum: -0.4
+          historyNum: 0
         },
         {
           type: 1,
           title: '值得关注',
           showStar: true,
-          content: '减少两辆车出行一周'
+          content: ''
         },
       ],
       newsData: [
@@ -58,6 +63,33 @@ export default {
       ]
     }
   },
+  mounted() {
+    this.init();
+  },
+  methods: {
+    init() {
+      this.getCoreData()
+    },
+    reset() {
+      console.log('reset')
+    },
+    search(data) {
+      console.log(data)
+    },
+    getCoreData() {
+      apiCarbonCar.getCoreData(this.queryData).then(res=>{
+        this.coreData[0].num = res.list[0].value
+        this.coreData[0].historyNum = res.list[0].compare
+        this.coreData[1].num = res.list[1].value
+        this.coreData[1].historyNum = res.list[1].compare
+        this.coreData[2].num = res.list[2].value
+        this.coreData[2].historyNum = res.list[2].compare
+        this.coreData[3].num = res.list[3].value
+        this.coreData[3].historyNum = res.list[3].compare
+        this.coreData[4].content = res.worthAttention
+      })
+    }
+  }
 }
 </script>
 
@@ -68,7 +100,7 @@ export default {
       <a-row>
         <a-col>
           <div style="width: 100%">
-            <Query></Query>
+            <Query :show="['company', 'time']" :query-data.sync="queryData" :reset="reset" :search="search"></Query>
           </div>
         </a-col>
         <a-col>

+ 45 - 11
src/components/doubleCarbon/overview/doubleCarbonOverview.vue

@@ -7,6 +7,8 @@ import CarbonEmissionCharts from "@/components/doubleCarbon/overview/charts/carb
 import CarbonQuotaChart from "@/components/doubleCarbon/overview/charts/carbonQuotaChart.vue";
 import DoubleCarbonNews from "@/components/doubleCarbon/overview/charts/doubleCarbonNews.vue";
 import CarbonOverviewPercent from "@/components/doubleCarbon/overview/charts/carbonOverviewPercent.vue";
+import apiCarbonOverview from "@/api/carbon/apiCarbonOverview";
+
 
 export default {
   components: {
@@ -20,42 +22,46 @@ export default {
   },
   data() {
     return {
+      queryData: {
+        company: '0',
+        timeRange: this.$util.dateUtil.getNearlyMonthRange()
+      },
       coreData: [
         {
           type: 1,
           title: '碳配额存量',
-          content: "90",
+          content: "",
           numDesc: "%",
         },
         {
           title: '碳排放总量(tco2e)',
-          num: 500,
+          num: 0,
           historyDesc: '同比',
-          historyNum: 0.4
+          historyNum: 0
         },
         {
           title: '单位面积碳排放(tco2e/m²)',
-          num: 80,
+          num: 0,
           historyDesc: '同比',
-          historyNum: -0.4
+          historyNum: 0
         },
         {
           title: '人均碳排放(tco2e/人)',
-          num: 80,
+          num: 0,
           historyDesc: '同比',
-          historyNum: -0.4
+          historyNum: 0
         },
         {
           title: '光伏减排(tco2e)',
-          num: 40,
+          num: 0,
           historyDesc: '同比',
-          historyNum: -0.4
+          historyNum: 0
         },
         {
           type: 1,
           title: '值得关注',
           showStar: true,
-          content: '减少两辆车出行一周'
+          content: ''
         },
       ],
       newsData: [
@@ -68,6 +74,34 @@ export default {
       ]
     }
   },
+  mounted() {
+    this.init();
+  },
+  methods: {
+    init() {
+      this.getCoreData()
+    },
+    reset() {
+      console.log('reset')
+    },
+    search(data) {
+      console.log(data)
+    },
+    getCoreData() {
+      apiCarbonOverview.getCoreData(this.queryData).then(res=>{
+        this.coreData[0].content = res.list[0].value
+        this.coreData[1].num = res.list[1].value
+        this.coreData[1].historyNum = res.list[1].compare
+        this.coreData[2].num = res.list[2].value
+        this.coreData[2].historyNum = res.list[2].compare
+        this.coreData[3].num = res.list[3].value
+        this.coreData[3].historyNum = res.list[3].compare
+        this.coreData[4].num = res.list[4].value
+        this.coreData[4].historyNum = res.list[4].compare
+        this.coreData[5].content = res.worthAttention
+      })
+    }
+  }
 }
 </script>
 
@@ -78,7 +112,7 @@ export default {
       <a-row>
         <a-col>
           <div style="width: 100%">
-            <Query></Query>
+            <Query :show="['company', 'time']" :query-data.sync="queryData" :reset="reset" :search="search"></Query>
           </div>
         </a-col>
         <a-col>

+ 42 - 10
src/components/doubleCarbon/print/doubleCarbonPrint.vue

@@ -5,6 +5,7 @@ import Query from "@/components/common/query.vue";
 
 import CarbonPrintEmissionChart from "@/components/doubleCarbon/print/charts/carbonPrintEmissionChart.vue";
 import CarbonPrintQuotaChart from "@/components/doubleCarbon/print/charts/carbonPrintQuotaChart.vue";
+import apiCarbonPrint from "@/api/carbon/apiCarbonPrint";
 
 export default {
   components: {
@@ -16,36 +17,40 @@ export default {
   },
   data() {
     return {
+      queryData: {
+        company: '0',
+        timeRange: this.$util.dateUtil.getNearlyMonthRange()
+      },
       coreData: [
         {
           title: '文印累计排放(tco2e/)',
-          num: 60,
+          num: 0,
           historyDesc: '同比',
-          historyNum: 0.4
+          historyNum: 0
         },
         {
           title: '文印人均排放(tco2e/天)',
-          num: 50,
+          num: 0,
           historyDesc: '同比',
-          historyNum: 0.4
+          historyNum: 0
         },
         {
           title: '纸张人均消耗(张/天)',
-          num: 500,
+          num: 0,
           historyDesc: '同比',
-          historyNum: -0.4
+          historyNum: 0
         },
         {
           title: '墨盒人均消耗(kg/天)',
-          num: 80,
+          num: 0,
           historyDesc: '同比',
-          historyNum: -0.4
+          historyNum: 0
         },
         {
           type: 1,
           title: '值得关注',
           showStar: true,
-          content: '限制人均每天打印 100 张以内'
+          content: ''
         },
       ],
       newsData: [
@@ -58,6 +63,33 @@ export default {
       ]
     }
   },
+  mounted() {
+    this.init();
+  },
+  methods: {
+    init() {
+      this.getCoreData()
+    },
+    reset() {
+      console.log('reset')
+    },
+    search(data) {
+      console.log(data)
+    },
+    getCoreData() {
+      apiCarbonPrint.getCoreData(this.queryData).then(res=>{
+        this.coreData[0].num = res.list[0].value
+        this.coreData[0].historyNum = res.list[0].compare
+        this.coreData[1].num = res.list[1].value
+        this.coreData[1].historyNum = res.list[1].compare
+        this.coreData[2].num = res.list[2].value
+        this.coreData[2].historyNum = res.list[2].compare
+        this.coreData[3].num = res.list[3].value
+        this.coreData[3].historyNum = res.list[3].compare
+        this.coreData[4].content = res.worthAttention
+      })
+    }
+  }
 }
 </script>
 
@@ -68,7 +100,7 @@ export default {
       <a-row>
         <a-col>
           <div style="width: 100%">
-            <Query></Query>
+            <Query :show="['company', 'time']" :query-data.sync="queryData" :reset="reset" :search="search"></Query>
           </div>
         </a-col>
         <a-col>

+ 2 - 2
src/components/home/ContainerAside.vue

@@ -57,7 +57,7 @@ export default {
       <template v-for="item in menuList">
         <a-menu-item  class="menuItem" :key="item.router" :route="item.router" v-if="!item.children">
         <span class="anticon" style="vertical-align: text-top">
-          <a-avatar class="function-avatar" shape="square" :size="20" :src="requireImg(item.icon)"></a-avatar>
+          <a-avatar class="function-avatar" shape="square" :size="20" :src="requireImg('function/asideMenus/'+item.icon)"></a-avatar>
         </span>
           <span >
             {{ item.name }}
@@ -67,7 +67,7 @@ export default {
         <a-sub-menu :key="item.name" v-else>
           <template #title>
             <span class="anticon" style="vertical-align: text-top">
-          <a-avatar class="function-avatar" shape="square" :size="20" :src="requireImg(item.icon)"></a-avatar>
+          <a-avatar class="function-avatar" shape="square" :size="20" :src="requireImg('function/asideMenus/'+item.icon)"></a-avatar>
         </span>
             <span>{{ item.name }}</span>
           </template>

+ 37 - 11
src/components/life/healthyHome/lifeHealthyHome.vue

@@ -4,42 +4,49 @@ import Card from "@/components/common/card.vue";
 import CoreData from "@/components/common/coreData.vue";
 import LifeHealthyHomeChart from "@/components/life/healthyHome/components/lifeHealthyHomeChart.vue";
 import LifeHealthyHomeMonitor from "@/components/life/healthyHome/components/lifeHealthyHomeMonitor.vue";
+import apiLifeHealthyHome from "@/api/life/apiLifeHealthyHome";
 
 export default {
   data() {
+    let range = this.$util.dateUtil.getNearlyMonthRange();
     return {
+      queryData: {
+        company: '0',
+        dept: '0',
+        timeRange: range
+      },
       coreData: [
         {
           title: '累计检查人数(人/月)',
-          num: 100,
+          num: 0,
           historyDesc: '同比',
-          historyNum: 0.4
+          historyNum: 0
         },
         {
           title: '健康人数(人/月)',
-          num: 20,
+          num: 0,
           historyDesc: '同比',
-          historyNum: 0.4
+          historyNum: 0
         },
         {
           title: '亚健康人数(人/月)',
-          num: 21,
+          num: 0,
           unit: '元',
           historyDesc: '同比',
-          historyNum: -0.4
+          historyNum: 0
         },
         {
           type: 1,
           isHighLight: false,
           title: '最多患病问题',
-          content: '高血压'
+          content: ''
         },
         {
           type: 1,
           isHighLight: false,
           title: '值得关注',
           showStar: true,
-          content: '员工腰椎问题持续 上升'
+          content: ''
         },
       ]
     }
@@ -51,12 +58,31 @@ export default {
     LifeHealthyHomeChart,
     LifeHealthyHomeMonitor,
   },
-  created() {
-  },
   mounted() {
+    this.init();
   },
   methods: {
-
+    init() {
+      this.getCoreData();
+    },
+    reset() {
+      console.log('reset')
+    },
+    search(data) {
+      console.log(data)
+    },
+    getCoreData() {
+      apiLifeHealthyHome.getCoreData(this.queryData).then(res=>{
+        this.coreData[0].num = res.list[0].value
+        this.coreData[0].historyNum = res.list[0].compare
+        this.coreData[1].num = res.list[1].value
+        this.coreData[1].historyNum = res.list[1].compare
+        this.coreData[2].num = res.list[2].value
+        this.coreData[2].historyNum = res.list[2].compare
+        this.coreData[3].content = res.list[3].value
+        this.coreData[4].content = res.worthAttention
+      })
+    }
   }
 }
 </script>

+ 40 - 11
src/components/life/parking/lifeParking.vue

@@ -7,41 +7,48 @@ import lifeParkUnNormalChart from "@/components/life/parking/components/lifePark
 import LifeParkConsumeChart from "@/components/life/parking/components/lifeParkConsumeChart.vue";
 import LifeParkingTopChart from "@/components/life/parking/components/lifeParkTopTable.vue";
 import LifeParkDetailTable from "@/components/life/parking/components/lifeParkDetailTable.vue";
+import apiLifePark from "@/api/life/apiLifePark";
 
 export default {
   data() {
+    let range = this.$util.dateUtil.getNearlyMonthRange();
     return {
+      queryData: {
+        company: '0',
+        dept: '0',
+        timeRange: range
+      },
       coreData: [
         {
           title: '车位数量(个)',
-          num: 2000,
+          num: 0,
           historyDesc: '同比',
-          historyNum: 0.4
+          historyNum: 0
         },
         {
           title: '平均停车数量(辆/天)',
-          num: 180,
+          num: 0,
           historyDesc: '同比',
-          historyNum: 0.4
+          historyNum: 0
         },
         {
           title: '违停数量(辆)',
-          num: 20,
+          num: 0,
           historyDesc: '同比',
-          historyNum: -0.4
+          historyNum: 0
         },
         {
           title: '建议回收车位(个)',
-          num: 40,
+          num: 0,
           historyDesc: '同比',
-          historyNum: 0.4
+          historyNum: 0
         },
         {
           type: 1,
           isHighLight: false,
           title: '值得关注',
           showStar: true,
-          content: '建议增加停车位  180个'
+          content: ''
         },
       ]
     }
@@ -59,9 +66,31 @@ export default {
   created() {
   },
   mounted() {
+    this.init();
   },
   methods: {
-
+    init() {
+      this.getCoreData();
+    },
+    reset() {
+      console.log('reset')
+    },
+    search(data) {
+      console.log(data)
+    },
+    getCoreData() {
+      apiLifePark.getCoreData(this.queryData).then(res=>{
+        this.coreData[0].num = res.list[0].value
+        this.coreData[0].historyNum = res.list[0].compare
+        this.coreData[1].num = res.list[1].value
+        this.coreData[1].historyNum = res.list[1].compare
+        this.coreData[2].num = res.list[2].value
+        this.coreData[2].historyNum = res.list[2].compare
+        this.coreData[3].num = res.list[3].value
+        this.coreData[3].historyNum = res.list[3].compare
+        this.coreData[4].content = res.worthAttention
+      })
+    }
   }
 }
 </script>
@@ -72,7 +101,7 @@ export default {
      <a-row>
        <a-col>
          <div class="lifeParking-query">
-           <Query></Query>
+           <Query :query-data.sync="queryData" :show="['company','dept','time']" :reset="reset" :search="search"></Query>
          </div>
        </a-col>
        <a-col>

+ 25 - 14
src/components/life/restaurant/lifeRestaurant.vue

@@ -8,6 +8,7 @@ import LifeRestTopMenu from "@/components/life/restaurant/components/lifeRestTop
 import LifeRestDailyMenu from "@/components/life/restaurant/components/lifeRestDailyMenu.vue";
 import LifeRestProfitChart from "@/components/life/restaurant/components/LifeRestProfitChart.vue";
 import LifeRestPayChart from "@/components/life/restaurant/components/LifeRestPayChart.vue";
+import apiLifeRestaurant from "@/api/life/apiLifeRestaurant";
 
 export default {
   data() {
@@ -21,34 +22,34 @@ export default {
       coreData: [
         {
           title: '当天就餐人数预测',
-          num: 400,
+          num: 0,
           isHighLight: true,
           historyDesc: '同比',
-          historyNum: 0.4
+          historyNum: 0
         },
         {
           title: '累计就餐人数(人)',
-          num: 400,
+          num: 0,
           historyDesc: '同比',
-          historyNum: 0.4
+          historyNum: 0
         },
         {
           title: '消费总额(万元)',
-          num: 400,
+          num: 0,
           historyDesc: '同比',
-          historyNum: 0.4
+          historyNum: 0
         },
         {
           title: '订单均价(元)',
-          num: 400,
+          num: 0,
           historyDesc: '同比',
-          historyNum: 0.4
+          historyNum: 0
         },
         {
           type: 1,
           title: '值得关注',
           showStar: true,
-          content: '员工偏爱川菜,建议增加'
+          content: ''
         },
       ]
     }
@@ -64,21 +65,31 @@ export default {
     LifeRestProfitChart,
     LifeRestPayChart,
   },
-  created() {
-    this.init();
-  },
   mounted() {
-
+    this.init();
   },
   methods: {
     init() {
-
+      this.getCoreData()
     },
     reset() {
       console.log('reset')
     },
     search(data) {
       console.log(data)
+    },
+    getCoreData() {
+      apiLifeRestaurant.getCoreData(this.queryData).then(res=>{
+        this.coreData[0].num = res.list[0].value
+        this.coreData[0].historyNum = res.list[0].compare
+        this.coreData[1].num = res.list[1].value
+        this.coreData[1].historyNum = res.list[1].compare
+        this.coreData[2].num = res.list[2].value
+        this.coreData[2].historyNum = res.list[2].compare
+        this.coreData[3].num = res.list[3].value
+        this.coreData[3].historyNum = res.list[3].compare
+        this.coreData[4].content = res.worthAttention
+      })
     }
   }
 }

+ 40 - 12
src/components/life/supermarket/lifeSupermarket.vue

@@ -4,45 +4,51 @@ import Card from "@/components/common/card.vue";
 import CoreData from "@/components/common/coreData.vue";
 import LifeSupermarketAnalysisChart from "@/components/life/supermarket/components/lifeSupermarketAnalysisChart.vue";
 import LifeSupermarketTopTable from "@/components/life/supermarket/components/lifeSupermarketTopTable.vue";
+import apiLifeSupermarket from "@/api/life/apiLifeSupermarket";
 
 export default {
   data() {
+    let range = this.$util.dateUtil.getNearlyMonthRange();
     return {
+      queryData: {
+        company: '0',
+        dept: '0',
+        timeRange: range
+      },
       coreData: [
         {
           type: 0,
           title: '消费总额(万元)',
-          num: 100,
+          num: 0,
           historyDesc: '同比',
-          historyNum: '0.4'
+          historyNum: '0'
         },
         {
           type: 0,
           title: '交易单数',
-          num: 2100,
+          num: 0,
           historyDesc: '同比',
-          historyNum: '0.4'
+          historyNum: '0'
         },
         {
           type: 0,
           title: '人均消费金额(元)',
-          num: 21,
+          num: 0,
           historyDesc: '同比',
-          historyNum: '0.4'
+          historyNum: '0'
         },
         {
           type: 0,
           title: '平均单价(元)',
-          num: 1,
+          num: 0,
           historyDesc: '环比',
-          historyNum: '0.4'
+          historyNum: '0'
         },
         {
           type: 1,
-          isHighLight: false,
           title: '值得关注',
           showStar: true,
-          content: '本月盈利将达 12 万元'
+          content: ''
         },
       ]
     }
@@ -57,9 +63,31 @@ export default {
   created() {
   },
   mounted() {
+    this.init();
   },
   methods: {
-
+    init() {
+      this.getCoreData();
+    },
+    reset() {
+      console.log('reset')
+    },
+    search(data) {
+      console.log(data)
+    },
+    getCoreData() {
+      apiLifeSupermarket.getCoreData(this.queryData).then(res=>{
+        this.coreData[0].num = res.list[0].value
+        this.coreData[0].historyNum = res.list[0].compare
+        this.coreData[1].num = res.list[1].value
+        this.coreData[1].historyNum = res.list[1].compare
+        this.coreData[2].num = res.list[2].value
+        this.coreData[2].historyNum = res.list[2].compare
+        this.coreData[3].num = res.list[3].value
+        this.coreData[3].historyNum = res.list[3].compare
+        this.coreData[4].content = res.worthAttention
+      })
+    }
   }
 }
 </script>
@@ -70,7 +98,7 @@ export default {
       <a-row>
         <a-col>
           <div class="lifeSupermarket-query">
-            <Query></Query>
+            <Query :query-data.sync="queryData" :show="['company','dept','time']" :reset="reset" :search="search"></Query>
           </div>
         </a-col>
         <a-col>

Некоторые файлы не были показаны из-за большого количества измененных файлов