瀏覽代碼

fix(compiler): fixed

shylock 1 年之前
父節點
當前提交
70f863a1a7
共有 2 個文件被更改,包括 66 次插入61 次删除
  1. 3 10
      src/pages/DataBoard/index.tsx
  2. 63 51
      src/pages/DataBoard/mapComponent.tsx

+ 3 - 10
src/pages/DataBoard/index.tsx

@@ -125,9 +125,7 @@ const DataBoard: React.FC = () => {
   const [userChartsData, setUserChartsData] = useState([]);
   const [deviceChartsData, setDeviceChartsData] = useState([]);
   const [areaDeviceList, setAreaDeviceList] = useState([]);
-  const [mapData, setMapData] = useState({
-    company_name: '',
-  });
+  const [mapData, setMapData] = useState<any>({});
   const [deviceData, setDeviceData] = useState(0);
   const [userData, setUserData] = useState(0);
 
@@ -347,7 +345,7 @@ const DataBoard: React.FC = () => {
       <div className={styles.dataTitleItem}>
         <PreloadImage src={dataBoardTitle} alt="顶部标题背景" />
         <img src={decoration_three} style={{ width: '50%' }} alt="顶部标题背景装饰" />
-        <div className={styles.title}>{mapData.company_name}</div>
+        <div className={styles.title}>{mapData?.company_name}</div>
       </div>
       {/* 中间内容 */}
       <div className={styles.dataBoardContent}>
@@ -504,12 +502,7 @@ const DataBoard: React.FC = () => {
           {/* 地图 */}
           {areaDeviceList && areaDeviceList.length ? (
             <Suspense fallback={<div>loading</div>}>
-              <MapComponent
-                mapData={mapData}
-                userData={userData}
-                deviceData={deviceData}
-                areaList={areaDeviceList}
-              />
+              <MapComponent userData={userData} deviceData={deviceData} areaList={areaDeviceList} />
             </Suspense>
           ) : (
             <datav.Loading style={{ position: 'absolute' }}>Loading...</datav.Loading>

+ 63 - 51
src/pages/DataBoard/mapComponent.tsx

@@ -1,12 +1,14 @@
 import * as echarts from 'echarts';
 import styles from './mapComponent.less';
 import React, { useEffect, useRef } from 'react';
+import { queryMapJson } from '@/services/dataBoardService';
+import { message } from 'antd';
 
 interface propsData {
   userData: number;
   deviceData: number;
   areaList: any;
-  mapData: any;
+  // mapData: any;
 }
 
 /**
@@ -15,7 +17,7 @@ interface propsData {
  */
 const MapComponent: React.FC<propsData> = (props) => {
   const chartRef: any = useRef();
-  const { userData, deviceData, areaList, mapData } = props;
+  const { userData, deviceData, areaList } = props;
   const geoCoordMap = {
     济南市: [117, 36.65],
     青岛市: [120.33, 36.07],
@@ -53,63 +55,73 @@ const MapComponent: React.FC<propsData> = (props) => {
   useEffect(() => {
     // 初始化统计图对象
     const myChart = echarts.init(chartRef.current);
-    if (mapData && mapData.map_json) {
-      const data = JSON.parse(mapData.map_json);
-      echarts.registerMap('map', data);
-      const options = {
-        geo: {
-          show: true,
+    const options = {
+      geo: {
+        show: true,
+        map: 'map',
+        roam: false,
+        zoom: 1.2,
+        label: {
+          show: false,
+        },
+        itemStyle: {
+          areaColor: '#091632',
+          borderColor: '#1773c3',
+          shadowColor: '#1773c3',
+          shadowBlur: 20,
+        },
+      },
+      series: [
+        {
+          name: 'light',
+          type: 'scatter',
+          coordinateSystem: 'geo',
+          data: convertData(areaList),
+          symbolSize: function (val: number[]) {
+            return val[2];
+          },
+          label: {
+            formatter: '{b}',
+            position: 'right',
+            show: true,
+          },
+          itemStyle: {
+            color: '#ddb926',
+          },
+        },
+        {
+          type: 'map',
           map: 'map',
-          roam: false,
           zoom: 1.2,
           label: {
             show: false,
+            color: '#fff',
           },
+          roam: false,
           itemStyle: {
-            areaColor: '#091632',
-            borderColor: '#1773c3',
-            shadowColor: '#1773c3',
-            shadowBlur: 20,
+            areaColor: '#031525',
+            borderColor: '#3B5077',
+            borderWidth: 1,
           },
+          data: [],
         },
-        series: [
-          {
-            name: 'light',
-            type: 'scatter',
-            coordinateSystem: 'geo',
-            data: convertData(areaList),
-            symbolSize: function (val: number[]) {
-              return val[2];
-            },
-            label: {
-              formatter: '{b}',
-              position: 'right',
-              show: true,
-            },
-            itemStyle: {
-              color: '#ddb926',
-            },
-          },
-          {
-            type: 'map',
-            map: 'map',
-            zoom: 1.2,
-            label: {
-              show: false,
-              color: '#fff',
-            },
-            roam: false,
-            itemStyle: {
-              areaColor: '#031525',
-              borderColor: '#3B5077',
-              borderWidth: 1,
-            },
-            data: [],
-          },
-        ],
-      };
-      myChart.setOption(options);
-    }
+      ],
+    };
+    queryMapJson()
+      .then((res) => {
+        if (res && res.code === 0) {
+          const data = JSON.parse(res.data.map_json);
+          if (data) {
+            echarts.registerMap('map', data);
+          }
+          myChart.setOption(options);
+        } else {
+          message.error(res?.message);
+        }
+      })
+      .catch((e) => {
+        message.error(e?.message);
+      });
     // 组件卸载
     return () => {
       myChart.clear();