Yansen 2 年之前
父節點
當前提交
afdb14b338

+ 2
- 2
config/config.js 查看文件

@@ -8,8 +8,8 @@ const { REACT_APP_ENV } = process.env;
8 8
 
9 9
 export default defineConfig({
10 10
   define: {
11
-    // API_BASE: 'http://machine.njyunzhi.com',
12
-    API_BASE: 'http://192.168.89.147',
11
+    API_BASE: 'http://machine.njyunzhi.com',
12
+    // API_BASE: 'http://192.168.89.147',
13 13
   },
14 14
   hash: true,
15 15
   history: {

+ 1
- 1
config/routes.js 查看文件

@@ -22,7 +22,7 @@ export default [
22 22
     path: '/welcome',
23 23
     name: '工作台',
24 24
     icon: 'smile',
25
-    component: './Welcome',
25
+    component: './welcome',
26 26
   },
27 27
   {
28 28
     path: '/MonitoringScreen',

+ 3
- 0
src/pages/Machinery/OperationStatistics/components/search/index.jsx 查看文件

@@ -73,6 +73,9 @@ export default (props) => {
73 73
         <FormItem name="deviceKind" label="设备类型">
74 74
           <Select options={options} allowClear />
75 75
         </FormItem>
76
+        <FormItem name="town" label="乡镇">
77
+          <Input placeholder="请输入" allowClear />
78
+        </FormItem>
76 79
         <FormItem name="jobDate" label="作业时间">
77 80
           <RangePicker />
78 81
         </FormItem>

+ 4
- 2
src/pages/Machinery/OperationStatistics/index.jsx 查看文件

@@ -49,11 +49,13 @@ export default (props) => {
49 49
       dataIndex: 'jobArea',
50 50
       key: 'jobArea',
51 51
     },
52
+    {
53
+      title: '乡镇',
54
+      dataIndex: 'town',
55
+    },
52 56
     {
53 57
       title: '位置',
54 58
       dataIndex: 'address',
55
-      search: false,
56
-      // key: 'orgName',
57 59
     },
58 60
     {
59 61
       title: '作业时间',

+ 0
- 169
src/pages/Welcome copy.jsx 查看文件

@@ -1,169 +0,0 @@
1
-import React, { useState, useRef } from 'react';
2
-import { PageContainer } from '@ant-design/pro-layout';
3
-import { Card, Row, Col } from 'antd';
4
-import { useIntl } from 'umi';
5
-import WCard from '@/components/WelcomeCard'
6
-import { Swiper, SwiperSlide } from 'swiper/react';
7
-import { Autoplay } from 'swiper';
8
-import 'swiper/css';
9
-import Bar from '@/components/Bar/index.jsx';
10
-import Pie from '@/components/Pie';
11
-import PieArea from '@/components/PieArea';
12
-import { history } from 'umi';
13
-import { getDispatchList } from '@/services/dispatch'
14
-import './Welcome.less'
15
-import { useEffect } from 'react';
16
-
17
-const Welcome = () => {
18
-  const intl = useIntl();
19
-  const topData = [
20
-    {
21
-      icon: 'icon-icon',
22
-      color: '#1cbbb4',
23
-      title: '注册用户',
24
-      value: 580239,
25
-      percentage: 32.6
26
-    },
27
-    {
28
-      icon: 'icon-show_gongsiguanli_fill',
29
-      color: '#8dc63f',
30
-      title: '合作社数',
31
-      value: 2017,
32
-      percentage: 5.6
33
-    },
34
-    {
35
-      icon: 'icon-tuolaji',
36
-      color: '#a5673f',
37
-      title: '农用机数',
38
-      value: 2000,
39
-      percentage: 42.6
40
-    },
41
-    {
42
-      icon: 'icon-dingdanguanli',
43
-      color: '#8799a3',
44
-      title: '订单数',
45
-      value: 2075994,
46
-      percentage: -1.6
47
-    },
48
-  ]
49
-  const centerData = [
50
-    {
51
-      title: '预约订单',
52
-      color: '#70d4d4',
53
-      keyList: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
54
-      valueList: [320, 332, 301, 334, 390, 88, 320, 332, 301, 334, 390, 88]
55
-    },
56
-    {
57
-      title: '完成订单',
58
-      color: '#c3b6e6',
59
-      keyList: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
60
-      valueList: [220, 182, 191, 234, 290, 256, 220, 182, 191, 234, 290, 356]
61
-    }
62
-  ]
63
-
64
-  const [machineryStatus, setMachineryStatus] = useState([
65
-    {
66
-      color: '#70d4d4',
67
-      keyList: ['预约', '作业', '闲置', '离线', '维修'],
68
-      valueList: [350, 900, 650, 180, 380],
69
-    }
70
-  ])
71
-
72
-  const [workData, setWorkData] = useState([
73
-    { name: '收割机', value: 35 },
74
-    { name: '播种机', value: 35 },
75
-    { name: '农药机', value: 30 },
76
-    { name: '其他', value: 180 },
77
-  ]);
78
-  const [workAreaData, setWorkAreaData] = useState([
79
-    { name: '收割机', value: 350 },
80
-    { name: '播种机', value: 900 },
81
-    { name: '农药机', value: 650 },
82
-    { name: '其他', value: 180 },
83
-  ]);
84
-  const [dispatchList, setDispatchList] = useState([])
85
-  const goDispatch = (val) => {
86
-    history.push(`../OrderManage/dispatch.jsx?id=${val.orderId}`);
87
-  }
88
-  useEffect(() => {
89
-    getDispatchList({ isWarn: true, pageSize: 500 }).then((res) => {
90
-      setDispatchList(res.records)
91
-    })
92
-  }, [])
93
-  return (
94
-    <PageContainer>
95
-      <div className="welcome">
96
-        <div className="head">
97
-          <Row justify='space-between'>
98
-            <Col flex='320px'>
99
-              <WCard value={topData[0]} />
100
-            </Col>
101
-            <Col flex='320px'>
102
-              <WCard value={topData[1]} />
103
-            </Col>
104
-            <Col flex='320px'>
105
-              <WCard value={topData[2]} />
106
-            </Col>
107
-            <Col flex='320px'>
108
-              <WCard value={topData[3]} />
109
-            </Col>
110
-          </Row>
111
-        </div>
112
-
113
-        <Row justify='space-between'>
114
-          <Col span={16}>
115
-            <Card style={{ marginTop: '32px' }}>
116
-              <Bar h='500px' title='本年度预约订单数据概览' opt={centerData} />
117
-            </Card>
118
-          </Col>
119
-          <Col span={7} >
120
-            <Card title='待调度订单' style={{ marginTop: '32px', height: '548px' }} >
121
-              {
122
-                dispatchList.length <= 8 ?
123
-                  <div style={{ height: '448px', width: '100%' }}>
124
-                    {dispatchList.map(item =>
125
-                      <div style={{ height: '60px' }} key={item.orderId} onClick={() => goDispatch(item)} >
126
-                        {(item.personName || item.phone) + ' 于 ' + item.createDate + ' 下了一单请您尽快处理!'}
127
-                      </div>
128
-                    )}
129
-                  </div> :
130
-                  <Swiper
131
-                    height={60}
132
-                    style={{ height: '448px' }}
133
-                    autoplay={{
134
-                      delay: 1500,
135
-                      disableOnInteraction: false,
136
-                    }}
137
-                    loop
138
-                    loopAdditionalSlides={8}
139
-                    modules={[Autoplay]}
140
-                    direction="vertical"
141
-                  >
142
-                    {dispatchList.map((item) => (
143
-                      <SwiperSlide key={item.orderId} onClick={() => goDispatch(item)}>
144
-                        {(item.personName || item.phone) + ' 于 ' + item.createDate + ' 下了一单请您尽快处理!'}
145
-                      </SwiperSlide>
146
-                    ))}
147
-                  </Swiper>
148
-              }
149
-
150
-            </Card>
151
-          </Col>
152
-        </Row>
153
-        <div className='flex bottom'>
154
-          <Card className='flex-1 card'>
155
-            <Bar h='300px' title='农机状态统计' opt={machineryStatus} />
156
-          </Card>
157
-          <Card className='flex-1 card'>
158
-            <PieArea opt={workAreaData} />
159
-          </Card>
160
-          <Card className='flex-1 card'>
161
-            <Pie opt={workData} />
162
-          </Card>
163
-        </div>
164
-      </div>
165
-    </PageContainer>
166
-  );
167
-};
168
-
169
-export default Welcome;

+ 204
- 0
src/pages/welcome/Welcome copy.jsx 查看文件

@@ -0,0 +1,204 @@
1
+import React, { useState, useRef } from 'react';
2
+import { PageContainer } from '@ant-design/pro-layout';
3
+import { Card, Row, Col } from 'antd';
4
+import { useIntl } from 'umi';
5
+import WCard from '@/pages/welcome/components/WelcomeCard';
6
+import { Swiper, SwiperSlide } from 'swiper/react';
7
+import { Autoplay } from 'swiper';
8
+import 'swiper/css';
9
+import Bar from '@/components/Bar/index.jsx';
10
+import Pie from '@/components/Pie';
11
+import PieArea from '@/components/PieArea';
12
+import { history } from 'umi';
13
+import { getDispatchList } from '@/services/dispatch';
14
+import './Welcome.less';
15
+import { useEffect } from 'react';
16
+
17
+const Welcome = () => {
18
+  const intl = useIntl();
19
+  const topData = [
20
+    {
21
+      icon: 'icon-icon',
22
+      color: '#1cbbb4',
23
+      title: '注册用户',
24
+      value: 580239,
25
+      percentage: 32.6,
26
+    },
27
+    {
28
+      icon: 'icon-show_gongsiguanli_fill',
29
+      color: '#8dc63f',
30
+      title: '合作社数',
31
+      value: 2017,
32
+      percentage: 5.6,
33
+    },
34
+    {
35
+      icon: 'icon-tuolaji',
36
+      color: '#a5673f',
37
+      title: '农用机数',
38
+      value: 2000,
39
+      percentage: 42.6,
40
+    },
41
+    {
42
+      icon: 'icon-dingdanguanli',
43
+      color: '#8799a3',
44
+      title: '订单数',
45
+      value: 2075994,
46
+      percentage: -1.6,
47
+    },
48
+  ];
49
+  const centerData = [
50
+    {
51
+      title: '预约订单',
52
+      color: '#70d4d4',
53
+      keyList: [
54
+        '一月',
55
+        '二月',
56
+        '三月',
57
+        '四月',
58
+        '五月',
59
+        '六月',
60
+        '七月',
61
+        '八月',
62
+        '九月',
63
+        '十月',
64
+        '十一月',
65
+        '十二月',
66
+      ],
67
+      valueList: [320, 332, 301, 334, 390, 88, 320, 332, 301, 334, 390, 88],
68
+    },
69
+    {
70
+      title: '完成订单',
71
+      color: '#c3b6e6',
72
+      keyList: [
73
+        '一月',
74
+        '二月',
75
+        '三月',
76
+        '四月',
77
+        '五月',
78
+        '六月',
79
+        '七月',
80
+        '八月',
81
+        '九月',
82
+        '十月',
83
+        '十一月',
84
+        '十二月',
85
+      ],
86
+      valueList: [220, 182, 191, 234, 290, 256, 220, 182, 191, 234, 290, 356],
87
+    },
88
+  ];
89
+
90
+  const [machineryStatus, setMachineryStatus] = useState([
91
+    {
92
+      color: '#70d4d4',
93
+      keyList: ['预约', '作业', '闲置', '离线', '维修'],
94
+      valueList: [350, 900, 650, 180, 380],
95
+    },
96
+  ]);
97
+
98
+  const [workData, setWorkData] = useState([
99
+    { name: '收割机', value: 35 },
100
+    { name: '播种机', value: 35 },
101
+    { name: '农药机', value: 30 },
102
+    { name: '其他', value: 180 },
103
+  ]);
104
+  const [workAreaData, setWorkAreaData] = useState([
105
+    { name: '收割机', value: 350 },
106
+    { name: '播种机', value: 900 },
107
+    { name: '农药机', value: 650 },
108
+    { name: '其他', value: 180 },
109
+  ]);
110
+  const [dispatchList, setDispatchList] = useState([]);
111
+  const goDispatch = (val) => {
112
+    history.push(`../OrderManage/dispatch.jsx?id=${val.orderId}`);
113
+  };
114
+  useEffect(() => {
115
+    getDispatchList({ isWarn: true, pageSize: 500 }).then((res) => {
116
+      setDispatchList(res.records);
117
+    });
118
+  }, []);
119
+  return (
120
+    <PageContainer>
121
+      <div className="welcome">
122
+        <div className="head">
123
+          <Row justify="space-between">
124
+            <Col flex="320px">
125
+              <WCard value={topData[0]} />
126
+            </Col>
127
+            <Col flex="320px">
128
+              <WCard value={topData[1]} />
129
+            </Col>
130
+            <Col flex="320px">
131
+              <WCard value={topData[2]} />
132
+            </Col>
133
+            <Col flex="320px">
134
+              <WCard value={topData[3]} />
135
+            </Col>
136
+          </Row>
137
+        </div>
138
+
139
+        <Row justify="space-between">
140
+          <Col span={16}>
141
+            <Card style={{ marginTop: '32px' }}>
142
+              <Bar h="500px" title="本年度预约订单数据概览" opt={centerData} />
143
+            </Card>
144
+          </Col>
145
+          <Col span={7}>
146
+            <Card title="待调度订单" style={{ marginTop: '32px', height: '548px' }}>
147
+              {dispatchList.length <= 8 ? (
148
+                <div style={{ height: '448px', width: '100%' }}>
149
+                  {dispatchList.map((item) => (
150
+                    <div
151
+                      style={{ height: '60px' }}
152
+                      key={item.orderId}
153
+                      onClick={() => goDispatch(item)}
154
+                    >
155
+                      {(item.personName || item.phone) +
156
+                        ' 于 ' +
157
+                        item.createDate +
158
+                        ' 下了一单请您尽快处理!'}
159
+                    </div>
160
+                  ))}
161
+                </div>
162
+              ) : (
163
+                <Swiper
164
+                  height={60}
165
+                  style={{ height: '448px' }}
166
+                  autoplay={{
167
+                    delay: 1500,
168
+                    disableOnInteraction: false,
169
+                  }}
170
+                  loop
171
+                  loopAdditionalSlides={8}
172
+                  modules={[Autoplay]}
173
+                  direction="vertical"
174
+                >
175
+                  {dispatchList.map((item) => (
176
+                    <SwiperSlide key={item.orderId} onClick={() => goDispatch(item)}>
177
+                      {(item.personName || item.phone) +
178
+                        ' 于 ' +
179
+                        item.createDate +
180
+                        ' 下了一单请您尽快处理!'}
181
+                    </SwiperSlide>
182
+                  ))}
183
+                </Swiper>
184
+              )}
185
+            </Card>
186
+          </Col>
187
+        </Row>
188
+        <div className="flex bottom">
189
+          <Card className="flex-1 card">
190
+            <Bar h="300px" title="农机状态统计" opt={machineryStatus} />
191
+          </Card>
192
+          <Card className="flex-1 card">
193
+            <PieArea opt={workAreaData} />
194
+          </Card>
195
+          <Card className="flex-1 card">
196
+            <Pie opt={workData} />
197
+          </Card>
198
+        </div>
199
+      </div>
200
+    </PageContainer>
201
+  );
202
+};
203
+
204
+export default Welcome;

src/pages/Welcome.less → src/pages/welcome/Welcome.less 查看文件


src/components/Bar/index copy.jsx → src/pages/welcome/components/Bar/index copy.jsx 查看文件


src/components/Bar/index.jsx → src/pages/welcome/components/Bar/index.jsx 查看文件

@@ -13,8 +13,9 @@ const labelOption = {
13 13
   },
14 14
 };
15 15
 
16
+const colors = ['#E94F05', '#5470C6', '#91CC75'];
16 17
 export default (props) => {
17
-  const { opt, optL, title, h } = props;
18
+  const { opt, optL, height } = props;
18 19
   // console.log(optL);
19 20
   // console.log(opt);
20 21
   const dataL = [];
@@ -35,14 +36,9 @@ export default (props) => {
35 36
   const dataX = opt.map((it) => it.name);
36 37
   const dataVal = opt.map((it) => it.value);
37 38
   // 台
38
-  const colors = ['#E94F05', '#5470C6', '#91CC75'];
39 39
   const option = useMemo(
40 40
     () => ({
41 41
       color: colors,
42
-      title: {
43
-        text: title,
44
-        left: 'center',
45
-      },
46 42
       tooltip: {
47 43
         trigger: 'axis',
48 44
         axisPointer: {
@@ -78,11 +74,11 @@ export default (props) => {
78 74
           },
79 75
         },
80 76
       ],
81
-      dataZoom: {
82
-        show: true,
83
-        start: 0,
84
-        end: 100,
85
-      },
77
+      // dataZoom: {
78
+      //   show: true,
79
+      //   start: 0,
80
+      //   end: 100,
81
+      // },
86 82
       grid: {
87 83
         height: '55%',
88 84
       },
@@ -103,7 +99,7 @@ export default (props) => {
103 99
     [dataLs, dataVal, dataX],
104 100
   );
105 101
   return (
106
-    <div style={{ height: h, width: '100%' }}>
102
+    <div style={{ height, width: '100%' }}>
107 103
       <ECharts option={option} />
108 104
     </div>
109 105
   );

src/components/BarPerson/index.jsx → src/pages/welcome/components/BarPerson/index.jsx 查看文件

@@ -15,7 +15,7 @@ const labelOption = {
15 15
 
16 16
 const colors = ['#E94F05', '#5470C6', '#91CC75'];
17 17
 export default (props) => {
18
-  const { opt, optP, title, h } = props;
18
+  const { opt, optP, height } = props;
19 19
   const dataL = [];
20 20
   opt.forEach((it, ind) => {
21 21
     optP.forEach((its) => {
@@ -38,10 +38,6 @@ export default (props) => {
38 38
   const option = useMemo(
39 39
     () => ({
40 40
       colors,
41
-      title: {
42
-        text: title,
43
-        left: 'center',
44
-      },
45 41
       tooltip: {
46 42
         trigger: 'axis',
47 43
         axisPointer: {
@@ -77,11 +73,11 @@ export default (props) => {
77 73
           },
78 74
         },
79 75
       ],
80
-      dataZoom: {
81
-        show: true,
82
-        start: 0,
83
-        end: 100,
84
-      },
76
+      // dataZoom: {
77
+      //   show: true,
78
+      //   start: 0,
79
+      //   end: 100,
80
+      // },
85 81
       series: [
86 82
         {
87 83
           name: '设备数量',
@@ -99,7 +95,7 @@ export default (props) => {
99 95
     [dataPerson, dataVal, dataX],
100 96
   );
101 97
   return (
102
-    <div style={{ height: h, width: '100%' }}>
98
+    <div style={{ height, width: '100%' }}>
103 99
       <ECharts option={option} />
104 100
     </div>
105 101
   );

+ 60
- 0
src/pages/welcome/components/TownBar.jsx 查看文件

@@ -0,0 +1,60 @@
1
+import React, { useEffect, useMemo, useState } from 'react';
2
+
3
+import ECharts from '@/components/ECharts';
4
+import { getAreaTotalTown } from '@/services/welcome';
5
+
6
+export default (props) => {
7
+  const [data, setData] = useState([]);
8
+
9
+  // 台
10
+  const option = useMemo(() => {
11
+    const colors = ['#E94F05', '#5470C6', '#91CC75'];
12
+    return {
13
+      color: colors,
14
+      tooltip: {
15
+        trigger: 'axis',
16
+        axisPointer: {
17
+          type: 'cross',
18
+        },
19
+        extraCssText: 'width:auto;height:auto',
20
+      },
21
+      xAxis: {
22
+        type: 'category',
23
+        axisLabel: { interval: 0, rotate: 40 },
24
+        nameTextStyle: {
25
+          padding: [0, 20],
26
+        },
27
+      },
28
+      yAxis: [
29
+        {
30
+          type: 'value',
31
+          name: '作业面积(亩)',
32
+          alignTicks: true,
33
+          axisLine: {
34
+            show: true,
35
+          },
36
+        },
37
+      ],
38
+      dataset: {
39
+        dimensions: ['name', 'value'],
40
+        source: data,
41
+      },
42
+      series: [
43
+        {
44
+          name: '作业面积',
45
+          type: 'bar',
46
+        },
47
+      ],
48
+    };
49
+  }, [data]);
50
+
51
+  useEffect(() => {
52
+    getAreaTotalTown().then(setData);
53
+  }, []);
54
+
55
+  return (
56
+    <div style={{ height: props.height, width: '100%' }}>
57
+      <ECharts option={option} />
58
+    </div>
59
+  );
60
+};

src/components/WelcomeCard/index copy.jsx → src/pages/welcome/components/WelcomeCard/index copy.jsx 查看文件


src/components/WelcomeCard/index.jsx → src/pages/welcome/components/WelcomeCard/index.jsx 查看文件


src/components/WelcomeCard/style.less → src/pages/welcome/components/WelcomeCard/style.less 查看文件

@@ -2,7 +2,8 @@
2 2
   display: flex;
3 3
   align-items: center;
4 4
   justify-content: space-between;
5
-  width: 320px;
5
+  // width: 320px;
6
+  width: '100%';
6 7
   padding: 16px 32px;
7 8
   background: #fff;
8 9
 

src/pages/Welcome.jsx → src/pages/welcome/index.jsx 查看文件

@@ -1,17 +1,7 @@
1 1
 import React, { useState, useRef, useEffect } from 'react';
2 2
 import { PageContainer } from '@ant-design/pro-layout';
3
-import { Card, Row, Col } from 'antd';
3
+import { Card, Row, Col, Space } from 'antd';
4 4
 import { useIntl } from 'umi';
5
-import WCard from '@/components/WelcomeCard';
6
-import { Swiper, SwiperSlide } from 'swiper/react';
7
-import { Autoplay } from 'swiper';
8
-import 'swiper/css';
9
-import Bar from '@/components/Bar/index.jsx';
10
-import BarPerson from '@/components/BarPerson/index.jsx';
11
-import Pie from '@/components/Pie';
12
-import PieArea from '@/components/PieArea';
13
-import { history } from 'umi';
14
-import { getDispatchList } from '@/services/dispatch';
15 5
 import {
16 6
   getSummary2,
17 7
   getAreaTotalOrg,
@@ -19,6 +9,10 @@ import {
19 9
   getAreaTotalPerson,
20 10
   getDeviceTotalPerson,
21 11
 } from '@/services/welcome';
12
+import WCard from './components/WelcomeCard';
13
+import Bar from './components/Bar/index.jsx';
14
+import BarPerson from './components/BarPerson/index.jsx';
15
+import TownBar from './components/TownBar';
22 16
 import './Welcome.less';
23 17
 
24 18
 const Welcome = () => {
@@ -107,34 +101,29 @@ const Welcome = () => {
107 101
       <div className="welcome">
108 102
         <div className="head">
109 103
           <Row justify="space-between">
110
-            <Col flex="320px">
104
+            <Col flex="1">
111 105
               <WCard value={topData[0]} />
112 106
             </Col>
113
-            <Col flex="320px">
107
+            <Col flex="1" style={{ marginLeft: '24px' }}>
114 108
               <WCard value={topData[1]} />
115 109
             </Col>
116
-            <Col flex="320px">
110
+            <Col flex="1" style={{ marginLeft: '24px' }}>
117 111
               <WCard value={topData[2]} />
118 112
             </Col>
119
-            <Col flex="320px">
113
+            <Col flex="1" style={{ marginLeft: '24px' }}>
120 114
               <WCard value={topData[3]} />
121 115
             </Col>
122 116
           </Row>
123 117
         </div>
124
-        <Row justify="space-between">
125
-          <Col span={24}>
126
-            <Card style={{ marginTop: '32px' }}>
127
-              <Bar h="500px" title="合作社数据统计" opt={categoryData} optL={lineData} />
128
-            </Card>
129
-          </Col>
130
-        </Row>
131
-        <Row justify="space-between">
132
-          <Col span={24}>
133
-            <Card style={{ marginTop: '32px' }}>
134
-              <BarPerson h="500px" title="人员数据统计" opt={personData} optP={persondData} />
135
-            </Card>
136
-          </Col>
137
-        </Row>
118
+        <Card title="各乡镇数据统计" style={{ marginTop: '24px' }}>
119
+          <TownBar height="500px" />
120
+        </Card>
121
+        <Card title="合作社数据统计" style={{ marginTop: '24px' }}>
122
+          <Bar height="500px" opt={categoryData} optL={lineData} />
123
+        </Card>
124
+        <Card title="人员数据统计" style={{ marginTop: '24px' }}>
125
+          <BarPerson height="500px" opt={personData} optP={persondData} />
126
+        </Card>
138 127
       </div>
139 128
     </PageContainer>
140 129
   );

+ 6
- 0
src/services/welcome.js 查看文件

@@ -25,3 +25,9 @@ export const getAreaTotalPerson = () => request('/area-total-person');
25 25
 */
26 26
 
27 27
 export const getDeviceTotalPerson = () => request('/device-total-person');
28
+
29
+/*
30
+柱状图 乡镇作业面积统计
31
+*/
32
+
33
+export const getAreaTotalTown = () => request('/area-total-town');