Bladeren bron

数据大屏

mac 2 jaren geleden
bovenliggende
commit
0a31f2573b

+ 2
- 2
config/proxy.js Bestand weergeven

11
     // localhost:8000/api/** -> https://preview.pro.ant.design/api/**
11
     // localhost:8000/api/** -> https://preview.pro.ant.design/api/**
12
     '/api/': {
12
     '/api/': {
13
       // 要代理的地址
13
       // 要代理的地址
14
-      target: 'http://127.0.0.1:7080',
15
-      // target: 'http://192.168.89.25:7080',
14
+      // target: 'http://127.0.0.1:7080',
15
+      target: 'http://192.168.89.147:7080',
16
       // target: 'http://machine.njyunzhi.com',
16
       // target: 'http://machine.njyunzhi.com',
17
       // 配置了这个可以从 http 代理到 https
17
       // 配置了这个可以从 http 代理到 https
18
       // 依赖 origin 的功能可能需要这个,比如 cookie
18
       // 依赖 origin 的功能可能需要这个,比如 cookie

+ 0
- 3
src/components/ECharts/index.jsx Bestand weergeven

42
 export default forwardRef((props, ref) => {
42
 export default forwardRef((props, ref) => {
43
   const domRef = useRef();
43
   const domRef = useRef();
44
   const echartsRef = useRef();
44
   const echartsRef = useRef();
45
-
46
   useEffect(() => {
45
   useEffect(() => {
47
     echartsRef.current = echarts.init(domRef.current);
46
     echartsRef.current = echarts.init(domRef.current);
48
-
49
     const handleResize = () => {
47
     const handleResize = () => {
50
       echartsRef.current.resize();
48
       echartsRef.current.resize();
51
     };
49
     };
57
       echartsRef.current.dispose();
55
       echartsRef.current.dispose();
58
     };
56
     };
59
   }, []);
57
   }, []);
60
-
61
   useEffect(() => {
58
   useEffect(() => {
62
     if (echartsRef.current) {
59
     if (echartsRef.current) {
63
       echartsRef.current.setOption(props.option);
60
       echartsRef.current.setOption(props.option);

+ 2
- 2
src/components/GeoMap/RuralMarker.js Bestand weergeven

9
   });
9
   });
10
 
10
 
11
   // 合作社数据
11
   // 合作社数据
12
-  const { name, address, machineNum, phone } = opts?.extData;
12
+  const { name, address, machineryNum, phone } = opts?.extData;
13
 
13
 
14
   marker.setLabel({
14
   marker.setLabel({
15
     direction: 'top',
15
     direction: 'top',
18
     <div class='geo-map-rural-box' >
18
     <div class='geo-map-rural-box' >
19
       <div class="borderBox"><span class='geo-map-rural-text-span borderBox'>名 称</span>:${name}</div>
19
       <div class="borderBox"><span class='geo-map-rural-text-span borderBox'>名 称</span>:${name}</div>
20
       <div class="borderBox"><span class='geo-map-rural-text-span borderBox'>地 址</span>:${address}</div>
20
       <div class="borderBox"><span class='geo-map-rural-text-span borderBox'>地 址</span>:${address}</div>
21
-      <div class="borderBox">农机数量:${machineNum} 辆</div>
21
+      <div class="borderBox">农机数量:${machineryNum} 辆</div>
22
       <div class="borderBox">联系电话:${phone}</div>
22
       <div class="borderBox">联系电话:${phone}</div>
23
     </div>`,
23
     </div>`,
24
   });
24
   });

+ 27
- 0
src/pages/Machinery/Org/RuralMarker.js Bestand weergeven

1
+import ruralMarkerImg from '@/assets/images/screen/map-rural.png';
2
+
3
+export default function getRuralMarker(AMap, map, opts = {}) {
4
+  const marker = new AMap.Marker({
5
+    icon: ruralMarkerImg,
6
+    anchor: 'top-center',
7
+    offset: new AMap.Pixel(0, 0),
8
+    ...opts,
9
+  });
10
+
11
+  // 合作社数据
12
+  const { name, address, machineryNum, phone } = opts?.extData;
13
+
14
+  marker.setLabel({
15
+    direction: 'top',
16
+    offset: new AMap.Pixel(0, 0),
17
+    content: `
18
+    <div class='geo-map-rural-box' >
19
+      <div class="borderBox"><span class='geo-map-rural-text-span borderBox'>名 称</span>:${name}</div>
20
+      <div class="borderBox"><span class='geo-map-rural-text-span borderBox'>地 址</span>:${address}</div>
21
+      <div class="borderBox">农机数量:${machineryNum || 0} 辆</div>
22
+      <div class="borderBox">联系电话:${phone}</div>
23
+    </div>`,
24
+  });
25
+
26
+  return marker;
27
+}

+ 1
- 2
src/pages/MonitoringScreen/components/List/index.jsx Bestand weergeven

15
     [Styles['yellow-title']]: color !== 'green',
15
     [Styles['yellow-title']]: color !== 'green',
16
     [Styles['green-title']]: color === 'green',
16
     [Styles['green-title']]: color === 'green',
17
   });
17
   });
18
-
19
   return (
18
   return (
20
     <div className={Styles['screen-list']}>
19
     <div className={Styles['screen-list']}>
21
       <div className={classList}>
20
       <div className={classList}>
28
           delay: 2500,
27
           delay: 2500,
29
           disableOnInteraction: false,
28
           disableOnInteraction: false,
30
         }}
29
         }}
31
-        loop
30
+        loop={children?.length >= 3}
32
         loopAdditionalSlides={2}
31
         loopAdditionalSlides={2}
33
         modules={[Autoplay]}
32
         modules={[Autoplay]}
34
         direction="vertical"
33
         direction="vertical"

+ 16
- 9
src/pages/MonitoringScreen/components/MachineryType.jsx Bestand weergeven

1
-import React, { useMemo } from 'react';
1
+import React, { useEffect, useMemo, useState } from 'react';
2
 import * as echarts from 'echarts/core';
2
 import * as echarts from 'echarts/core';
3
 import deepCopy from '@/utils/deepCopy';
3
 import deepCopy from '@/utils/deepCopy';
4
 import { hex2Rgb } from '@/utils/color';
4
 import { hex2Rgb } from '@/utils/color';
85
 };
85
 };
86
 
86
 
87
 export default (props) => {
87
 export default (props) => {
88
-  const option = useMemo(() => deepCopy(defaultOpt), []);
89
-  option.yAxis.data = props.source.map((x) => x.name);
90
-  option.series[0].data = props.source.map((x, i) => ({
91
-    value: x.value,
92
-    itemStyle: {
93
-      color: colorList[i % 3],
94
-    },
95
-  }));
88
+  const option2 = useMemo(() => deepCopy(defaultOpt), []);
89
+
90
+  const [option, setOption] = useState(option2);
91
+
92
+  useEffect(() => {
93
+    var option3 = { ...option2 };
94
+    option3.yAxis.data = props.source.map((x) => x.name);
95
+    option3.series[0].data = props.source.map((x, i) => ({
96
+      value: x.value,
97
+      itemStyle: {
98
+        color: colorList[i % 3],
99
+      },
100
+    }));
101
+    setOption(option3);
102
+  }, [props.source]);
96
 
103
 
97
   return <BasicChart title="农机类型统计" option={option} />;
104
   return <BasicChart title="农机类型统计" option={option} />;
98
 };
105
 };

+ 12
- 4
src/pages/MonitoringScreen/components/WorkArea.jsx Bestand weergeven

1
-import React, { useEffect, useMemo, useRef } from 'react';
1
+import React, { useEffect, useMemo, useState } from 'react';
2
 import deepCopy from '@/utils/deepCopy';
2
 import deepCopy from '@/utils/deepCopy';
3
 import { colorArr } from '@/components/ScreenBox/utils';
3
 import { colorArr } from '@/components/ScreenBox/utils';
4
 import BasicChart from './BasicChart';
4
 import BasicChart from './BasicChart';
36
 };
36
 };
37
 
37
 
38
 export default (props) => {
38
 export default (props) => {
39
-  const option = useMemo(() => deepCopy(defaultOpt), []);
40
-  option.series[0].data = props.source;
41
-  (option.series[0].data[0] || {}).selected = true; // 设置第一个是选中状态
39
+  const option2 = useMemo(() => deepCopy(defaultOpt), []);
40
+
41
+  const [option, setOption] = useState(option2);
42
+
43
+  useEffect(() => {
44
+    var option3 = { ...option2 };
45
+    option3.series[0].data = props.source;
46
+    // 设置第一个是选中状态
47
+    (option3.series[0].data[0] || {}).selected = true;
48
+    setOption(option3);
49
+  }, [props.source]);
42
 
50
 
43
   return <BasicChart title="农机作业量面积统计" option={option} />;
51
   return <BasicChart title="农机作业量面积统计" option={option} />;
44
 };
52
 };

+ 11
- 3
src/pages/MonitoringScreen/components/WorkData.jsx Bestand weergeven

1
-import React, { useEffect, useMemo, useRef } from 'react';
1
+import React, { useEffect, useMemo, useState } from 'react';
2
 import deepCopy from '@/utils/deepCopy';
2
 import deepCopy from '@/utils/deepCopy';
3
 import { colorArr } from '@/components/ScreenBox/utils';
3
 import { colorArr } from '@/components/ScreenBox/utils';
4
 import BasicChart from './BasicChart';
4
 import BasicChart from './BasicChart';
44
 };
44
 };
45
 
45
 
46
 export default (props) => {
46
 export default (props) => {
47
-  const option = useMemo(() => deepCopy(defaultOpt), []);
48
-  option.series[0].data = props.source;
47
+  const option2 = useMemo(() => deepCopy(defaultOpt), []);
48
+
49
+  const [option, setOption] = useState(option2);
50
+
51
+  useEffect(() => {
52
+    var option3 = { ...option2 };
53
+    option3.series[0].data = props.source;
54
+    // 设置第一个是选中状态
55
+    setOption(option3);
56
+  }, [props.source]);
49
 
57
 
50
   return <BasicChart title="农机作业数统计" option={option} />;
58
   return <BasicChart title="农机作业数统计" option={option} />;
51
 };
59
 };

+ 151
- 134
src/pages/MonitoringScreen/index.jsx Bestand weergeven

5
 import StatisCard from '@/components/ScreenBox/StatisCard';
5
 import StatisCard from '@/components/ScreenBox/StatisCard';
6
 import classNames from 'classnames';
6
 import classNames from 'classnames';
7
 import { useEffect, useRef, useState } from 'react';
7
 import { useEffect, useRef, useState } from 'react';
8
+import {
9
+  getBasic,
10
+  getOrgDetail,
11
+  getTypeList,
12
+  getAreaDetail,
13
+  getMachineryBar,
14
+  getWorkNumPie,
15
+  getTypeBasic,
16
+  getMessageList,
17
+} from '@/services/monitoringScreen';
8
 import MachineryStatus from './components/MachineryStatus';
18
 import MachineryStatus from './components/MachineryStatus';
9
 import MachineryType from './components/MachineryType';
19
 import MachineryType from './components/MachineryType';
10
 import { useParticlesJs } from './hook';
20
 import { useParticlesJs } from './hook';
19
   const screenRef = useRef();
29
   const screenRef = useRef();
20
   const [weather, setWeather] = useState('暂无天气信息');
30
   const [weather, setWeather] = useState('暂无天气信息');
21
 
31
 
22
-  const [machineryTypeData, setMachineryTypeData] = useState([
23
-    { name: '收割机', value: 200 },
24
-    { name: '播种机', value: 100 },
25
-    { name: '农药机', value: 50 },
26
-  ]);
32
+  const [basic, setBasic] = useState();
33
+
34
+  const [machineryTypeData, setMachineryTypeData] = useState([]);
27
 
35
 
28
   const [machineryStatusData, setMachineryStatusData] = useState([
36
   const [machineryStatusData, setMachineryStatusData] = useState([
29
     { name: '预约', value: 350 },
37
     { name: '预约', value: 350 },
33
     { name: '维修', value: 380 },
41
     { name: '维修', value: 380 },
34
   ]);
42
   ]);
35
 
43
 
36
-  const [workData, setWorkData] = useState([
37
-    { name: '收割机', value: 35 },
38
-    { name: '播种机', value: 35 },
39
-    { name: '农药机', value: 30 },
40
-    { name: '其他', value: 180 },
41
-  ]);
44
+  const [workData, setWorkData] = useState([]);
42
 
45
 
43
-  const [workAreaData, setWorkAreaData] = useState([
44
-    { name: '收割机', value: 350 },
45
-    { name: '播种机', value: 900 },
46
-    { name: '农药机', value: 650 },
47
-    { name: '其他', value: 180 },
48
-  ]);
46
+  const [workAreaData, setWorkAreaData] = useState([]);
49
 
47
 
50
-  const [machineTypeList, setMachineTypeList] = useState([
51
-    { id: 't0', name: '合作社' },
52
-    { id: 't1', name: '收割机' },
53
-    { id: 't2', name: '播种机' },
54
-    { id: 't3', name: '农药机' },
55
-  ]);
48
+  const [machineTypeList, setMachineTypeList] = useState([{ id: 't0', name: '合作社' }]);
56
 
49
 
57
-  const [orgList, setOrgList] = useState([
58
-    {
59
-      orgId: 1,
60
-      name: '合作社1',
61
-      address: '合作社地址1',
62
-      phone: '13823838438',
63
-      machineNum: 12,
64
-      lnglat: [112.039556, 32.775169],
65
-    },
66
-    {
67
-      orgId: 2,
68
-      name: '合作社2',
69
-      address: '合作社地址2',
70
-      phone: '13823838438',
71
-      machineNum: 68,
72
-      lnglat: [112.181692, 32.759002],
73
-    },
74
-    {
75
-      orgId: 3,
76
-      name: '合作社3',
77
-      address: '合作社地址3',
78
-      phone: '13823838438',
79
-      machineNum: 3,
80
-      lnglat: [111.958532, 32.631875],
81
-    },
82
-    {
83
-      orgId: 4,
84
-      name: '合作社4',
85
-      address: '合作社地址4',
86
-      phone: '13823838438',
87
-      machineNum: 42,
88
-      lnglat: [112.164526, 32.603536],
89
-    },
90
-  ]);
50
+  const [orgList, setOrgList] = useState();
91
 
51
 
92
-  const [machineList, setMachineList] = useState([
93
-    {
94
-      machineryId: 'm1',
95
-      name: '农机1',
96
-      typeId: 't1',
97
-      orgName: '合作社1',
98
-      lnglat: [111.867906, 32.799276],
99
-    },
100
-    {
101
-      machineryId: 'm2',
102
-      name: '农机2',
103
-      typeId: 't2',
104
-      orgName: '合作社1',
105
-      lnglat: [112.087632, 32.66527],
106
-    },
107
-    {
108
-      machineryId: 'm3',
109
-      name: '农机3',
110
-      typeId: 't1',
111
-      orgName: '合作社2',
112
-      lnglat: [112.237321, 32.631737],
113
-    },
114
-    {
115
-      machineryId: 'm4',
116
-      name: '农机4',
117
-      typeId: 't3',
118
-      orgName: '合作社2',
119
-      lnglat: [112.002488, 32.563476],
120
-    },
121
-    {
122
-      machineryId: 'm5',
123
-      name: '农机5',
124
-      typeId: 't3',
125
-      orgName: '合作社3',
126
-      lnglat: [112.105485, 32.791195],
127
-    },
128
-  ]);
52
+  const [machineList, setMachineList] = useState([]);
53
+  const [appointList, setAppointList] = useState();
54
+  const [acceptList, setAcceptList] = useState();
129
 
55
 
130
   useEffect(() => {
56
   useEffect(() => {
57
+    //顶部基本数据
58
+    getBasic()
59
+      .then((res) => {
60
+        var data = {};
61
+        for (let i = 0; i < res.length; i++) {
62
+          const element = res[i];
63
+          data[element.name] = element.value;
64
+        }
65
+        setBasic(data);
66
+      })
67
+      .catch((err) => {
68
+        console.log(err.message);
69
+      });
70
+    //地图上合作社的marker
71
+    getOrgDetail()
72
+      .then((res) => {
73
+        res.forEach((item) => {
74
+          item.lnglat = [item['lng'] - 0, item['lat'] - 0];
75
+          item.machineryNum = item.machineryNum - 0;
76
+        });
77
+        setOrgList(res);
78
+      })
79
+      .catch((err) => {
80
+        console.log(err.message);
81
+      });
82
+    //获取地图上所有农机markers
83
+    getTypeBasic()
84
+      .then((res) => {
85
+        res.forEach((item) => {
86
+          item.lnglat = [item.location.split(',')[0] - 0, item.location.split(',')[1] - 0];
87
+        });
88
+        setMachineList(res);
89
+      })
90
+      .catch((err) => {
91
+        console.log(err.message);
92
+      });
93
+    //获取地图左侧选择的农机列表
94
+    getTypeList()
95
+      .then((res) => {
96
+        let data = [].concat(machineTypeList);
97
+        res.forEach((item) => {
98
+          data.push({ id: item.typeId, name: item.name });
99
+        });
100
+        setMachineTypeList(data);
101
+      })
102
+      .catch((err) => {
103
+        console.log(err.message);
104
+      });
105
+    //作业面积统计
106
+    getAreaDetail()
107
+      .then((res) => {
108
+        console.log('---------res---->', res);
109
+        setWorkAreaData([].concat(res));
110
+      })
111
+      .catch((err) => {
112
+        console.log(err.message);
113
+      });
114
+    //农机类型统计
115
+    getMachineryBar()
116
+      .then((res) => {
117
+        setMachineryTypeData(res);
118
+      })
119
+      .catch((err) => {
120
+        console.log(err.message);
121
+      });
122
+    //农机作业数统计
123
+    getWorkNumPie()
124
+      .then((res) => {
125
+        setWorkData(res);
126
+      })
127
+      .catch((err) => {
128
+        console.log(err.message);
129
+      });
130
+
131
+    getMessageList({ messageType: 'appoint' })
132
+      .then((res) => {
133
+        setAppointList(res);
134
+      })
135
+      .catch((err) => {
136
+        console.log(err.message);
137
+      });
138
+    getMessageList({ messageType: 'accept' })
139
+      .then((res) => {
140
+        setAcceptList(res);
141
+      })
142
+      .catch((err) => {
143
+        console.log(err.message);
144
+      });
145
+
131
     getWeather()
146
     getWeather()
132
       .then((res) => {
147
       .then((res) => {
133
         if (res && res.length) {
148
         if (res && res.length) {
167
           </div>
182
           </div>
168
           <div className={classNames(Styles['grail-content'], Styles['pd-lr-40'])}>
183
           <div className={classNames(Styles['grail-content'], Styles['pd-lr-40'])}>
169
             <div className={Styles['statis-container']}>
184
             <div className={Styles['statis-container']}>
170
-              <StatisCard color="#23E8AE" icon="icon1" value={2346} title="农机总数(台)" />
171
-              <StatisCard color="#0BDAFF" icon="icon2" value={528} title="农机使用数(台)" />
172
-              <StatisCard color="#F5CC5C" icon="icon3" value={168} title="总预约数(台)" />
173
-              <StatisCard color="#C579FF" icon="icon4" value={1568} title="总服务数(台)" />
185
+              <StatisCard
186
+                color="#23E8AE"
187
+                icon="icon1"
188
+                value={basic?.totalMachineryNum}
189
+                title="农机总数(台)"
190
+              />
191
+              <StatisCard
192
+                color="#0BDAFF"
193
+                icon="icon2"
194
+                value={basic?.totalMachineryUsed}
195
+                title="农机使用数(台)"
196
+              />
197
+              <StatisCard
198
+                color="#F5CC5C"
199
+                icon="icon3"
200
+                value={basic?.totalOrderNum}
201
+                title="总预约数"
202
+              />
203
+              <StatisCard
204
+                color="#C579FF"
205
+                icon="icon4"
206
+                value={basic?.totalServiceNum}
207
+                title="总服务数"
208
+              />
174
             </div>
209
             </div>
175
             <GeoMap machineTypeList={machineTypeList} orgList={orgList} machineList={machineList} />
210
             <GeoMap machineTypeList={machineTypeList} orgList={orgList} machineList={machineList} />
176
           </div>
211
           </div>
190
             <div className="flex" style={{ padding: '20px 0' }}>
225
             <div className="flex" style={{ padding: '20px 0' }}>
191
               <div className="flex-1">
226
               <div className="flex-1">
192
                 <List title="预约订单">
227
                 <List title="预约订单">
193
-                  <div>
194
-                    <ColorFont color="#F5CC5C">[快乐每一天]</ColorFont> 32s前预约了一台收割机,
195
-                    <ColorFont color="#44F68B">[收割机001]</ColorFont> 接到了此订单!
196
-                  </div>
197
-                  <div>
198
-                    <ColorFont color="#F5CC5C">[幸福人生]</ColorFont> 58分钟前预约了一台收割机,
199
-                    <ColorFont color="#44F68B">[播种机008]</ColorFont> 接到了此订单!
200
-                  </div>
201
-                  <div>
202
-                    <ColorFont color="#F5CC5C">[灿烂人生]</ColorFont> 2个小时前预约了一台收割机,
203
-                    <ColorFont color="#44F68B">[收割机007]</ColorFont> 接到了此订单!
204
-                  </div>
205
-                  <div>
206
-                    <ColorFont color="#F5CC5C">[快乐每一天]</ColorFont> 32s前预约了一台收割机,
207
-                    <ColorFont color="#44F68B">[收割机001]</ColorFont> 接到了此订单!
208
-                  </div>
209
-                  <div>
210
-                    <ColorFont color="#F5CC5C">[幸福人生]</ColorFont> 58分钟前预约了一台收割机,
211
-                    <ColorFont color="#44F68B">[播种机008]</ColorFont> 接到了此订单!
212
-                  </div>
213
-                  <div>
214
-                    <ColorFont color="#F5CC5C">[灿烂人生]</ColorFont> 2个小时前预约了一台收割机,
215
-                    <ColorFont color="#44F68B">[收割机007]</ColorFont> 接到了此订单!
216
-                  </div>
228
+                  {appointList?.map((item) => {
229
+                    return (
230
+                      <div key={item.messageId}>
231
+                        <ColorFont color="#F5CC5C">{item.appointTime}</ColorFont>{' '}
232
+                        <ColorFont color="#F5CC5C">[{item.appointPerson}]</ColorFont> 预约了一台
233
+                        {item.appointMachineryType}。
234
+                      </div>
235
+                    );
236
+                  })}
217
                 </List>
237
                 </List>
218
               </div>
238
               </div>
219
               <div className={classNames('flex-0', Styles['footer-middle'])} />
239
               <div className={classNames('flex-0', Styles['footer-middle'])} />
220
               <div className="flex-1">
240
               <div className="flex-1">
221
                 <List title="作业订单" color="green">
241
                 <List title="作业订单" color="green">
222
-                  <div>
223
-                    <ColorFont color="#44F68B">[收割机001]</ColorFont>
224
-                    32s前接到了一个订单,距离目的地还有3.2公里。
225
-                  </div>
226
-                  <div>
227
-                    <ColorFont color="#44F68B">[播种机008]</ColorFont>{' '}
228
-                    2分钟前接到一个订单,距离目的地还有3.8公里。
229
-                  </div>
230
-                  <div>
231
-                    <ColorFont color="#44F68B">[收割机007]</ColorFont>{' '}
232
-                    2个小时前接到一个订单,距离目的地还有3.8公里。
233
-                  </div>
242
+                  {acceptList?.map((item) => {
243
+                    return (
244
+                      <div key={item.messageId}>
245
+                        <ColorFont color="#44F68B">{item.acceptTime}</ColorFont>{' '}
246
+                        <ColorFont color="#44F68B">[{item.acceptPerson}]</ColorFont>
247
+                        接到了一个订单。
248
+                      </div>
249
+                    );
250
+                  })}
234
                 </List>
251
                 </List>
235
               </div>
252
               </div>
236
             </div>
253
             </div>

+ 59
- 0
src/services/monitoringScreen.js Bestand weergeven

1
+import request from '@/utils/request';
2
+
3
+/**
4
+ * 基本数据统计
5
+ * @param {*} params
6
+ * @returns
7
+ */
8
+export const getBasic = (params) => request('/screen-data/basic', { params });
9
+
10
+/**
11
+ * 所有合作社
12
+ * @param {*} params
13
+ * @returns
14
+ */
15
+export const getOrgDetail = (params) => request('/screen-data/org', { params });
16
+
17
+/**
18
+ *  农机类型列表
19
+ * @param {*} params
20
+ * @returns
21
+ */
22
+export const getTypeList = (params) => request('/screen-data/machinery-type', { params });
23
+
24
+/**
25
+ *  农机作业面积统计
26
+ * @param {*} params
27
+ * @returns
28
+ */
29
+export const getAreaDetail = (params) => request('/screen-data/machinery-type/area', { params });
30
+
31
+/**
32
+ *  农机类型统计(左上角柱状图)
33
+ * @param {*} params
34
+ * @returns
35
+ */
36
+export const getMachineryBar = (params) =>
37
+  request('/screen-data/machinery-type/machinery', { params });
38
+
39
+/**
40
+ *  农机作业数统计
41
+ * @param {*} params
42
+ * @returns
43
+ */
44
+export const getWorkNumPie = (params) =>
45
+  request('/screen-data/machinery-type/work-job', { params });
46
+
47
+/**
48
+ *  依据类型查询农机
49
+ * @param {*} params
50
+ * @returns
51
+ */
52
+export const getTypeBasic = (params) => request('/screen-data/machinery/all', { params });
53
+
54
+/**
55
+ *  获取消息通知列表
56
+ * @param {*} params
57
+ * @returns
58
+ */
59
+export const getMessageList = (params) => request('/screen-data/message', { params });