Procházet zdrojové kódy

feat: 累计销量客户/吨

@dayan_hjm před 2 roky
rodič
revize
d91d9ab2d6

+ 15 - 0
config/webpack.common.js

@@ -81,6 +81,21 @@ module.exports = {
81 81
         ],
82 82
       },
83 83
       {
84
+        test: /* 匹配文件 */ /\.gif/,
85
+        include: [path.resolve(__dirname, "../node_modules")],
86
+        use: /* 使用loader */[{
87
+          loader: "url-loader",
88
+          options: /* 加载器相关的配置项 */ {
89
+            name: 'static/[name].[ext]',
90
+            limit: /* <=limit的图片转换成base64 */ 8196,
91
+            mimetype: "gif",
92
+            fallback: 'file-loader',
93
+            publicPath: '../../' //采用根路径
94
+          },
95
+        },
96
+        ],
97
+      },
98
+      {
84 99
         test: /* 匹配文件 */ /\.svg/,
85 100
         include: [path.resolve(__dirname, "../src")],
86 101
         use: /* 使用loader */[{

+ 2 - 0
package.json

@@ -56,12 +56,14 @@
56 56
     "echarts-wordcloud": "2.0.0",
57 57
     "es6-symbol": "^3.1.3",
58 58
     "eslint": "^7.25.0",
59
+    "slick-carousel": "^1.8.1",
59 60
     "eslint-config-prettier": "^8.3.0",
60 61
     "eslint-plugin-react": "^7.23.2",
61 62
     "express-mock-server": "^3.2.0",
62 63
     "extract-text-webpack-plugin": "^4.0.0-beta.0",
63 64
     "file-loader": "^6.2.0",
64 65
     "happypack": "^5.0.1",
66
+    "react-slick": "^0.29.0",
65 67
     "html-webpack-plugin": "^4.2.2",
66 68
     "http-server": "^0.12.3",
67 69
     "husky": "^6.0.0",

+ 1 - 0
src/App/index.less

@@ -1101,6 +1101,7 @@ li[role="menuitem"] {
1101 1101
 
1102 1102
           .item_c {
1103 1103
             width: 90px;
1104
+            //溢出隐藏
1104 1105
             overflow: hidden;
1105 1106
             text-overflow: ellipsis;
1106 1107
             white-space: nowrap;

+ 9 - 3
src/assets/css/styleTemplate.less

@@ -2,7 +2,7 @@
2 2
  * @Author: dayan_hjm 茶百道主题样式
3 3
  * @Date: 2022-10-27 10:56:37 
4 4
  * @Last Modified by: dayan_hjm
5
- * @Last Modified time: 2023-11-08 17:15:55
5
+ * @Last Modified time: 2023-11-13 14:58:13
6 6
  */
7 7
 
8 8
 @import url("../../themes/themes.less");
@@ -1145,7 +1145,7 @@
1145 1145
   .cbRightBottomView {
1146 1146
     flex-wrap: wrap;
1147 1147
     position: relative;
1148
-
1148
+    
1149 1149
     .right_b_tip2 {
1150 1150
       width: 46%;
1151 1151
       display: block;
@@ -1166,7 +1166,13 @@
1166 1166
       text-align: right;
1167 1167
     }
1168 1168
   }
1169
-
1169
+.slider_item_box{
1170
+  justify-content: left;
1171
+  .slick-slider{
1172
+    width: 90%;
1173
+    color: #fff;
1174
+  }
1175
+}
1170 1176
   .testDiv {
1171 1177
     width: 4em;
1172 1178
     display: flex;

+ 98 - 0
src/components/SimpleSlider/index.js

@@ -0,0 +1,98 @@
1
+/*
2
+ * @Author: dayan_hjm 轮播图滑动组件
3
+    settings:{
4
+        title:true,//是否开启移上title展示
5
+        clickUrl:true,//是否开启点击转跳功能
6
+        type 1=茶百道  2=雅居乐
7
+        dots: true,//是否显示小圆点索引
8
+        autoplay: true,//是否自动播放
9
+        infinite: true,//是否无限循环
10
+        autoplaySpeed: 2000,//自动播放的时间
11
+        fade: true,//是否采用淡入淡出的效果
12
+        slidesToShow: 2,一行显示多少个
13
+        slidesPerRow:1,//行显示多少个
14
+          slidesToScroll: 5 //每次滚动多少个元素
15
+    }
16
+    //dataArr 轮播的数据
17
+ * @Date: 2023-03-24 15:32:00 
18
+ * @Last Modified by: dayan_hjm
19
+ * @Last Modified time: 2023-08-17 14:19:43
20
+ */
21
+import utils from "@utils/index";
22
+import { crossMenuClick } from "@utils/util";
23
+import $store from "@store/";
24
+import React, { useState, useEffect, Component } from "react";
25
+import Slider from "react-slick";
26
+import "slick-carousel/slick/slick.css"; 
27
+import "slick-carousel/slick/slick-theme.css";
28
+// import "./slick.css";
29
+// import "./slick-theme.css";
30
+import { Tooltip } from "antd";
31
+
32
+function SimpleSlider(props) {
33
+    const settings = props.settings
34
+    const data_ = props.dataArr && props.dataArr instanceof Array ? props.dataArr : [
35
+        // {
36
+        //     backGroupPicUrl:"http://14.29.205.92:9081/static/bg_sChaBaiDao@2x.png"
37
+        // },
38
+        // {
39
+        //     backGroupPicUrl:"http://14.29.205.92:9081/static/bg2.png"
40
+        // },
41
+    ];
42
+    return (
43
+        <div className='swiper-content'>
44
+            <Slider {...settings} className="swiper-container">
45
+                {
46
+                    settings.type == 1 ? data_.map(url => {
47
+                        return <div className="swiper-div" style={{ cursor: settings.clickUrl && url.redirectUrl ? "pointer" : "auto" }} onClick={() => {
48
+                            // url.redirectUrl = "http://localhost:9003/transfer.html#/home/menu"
49
+                            if (!settings.clickUrl) { return }
50
+                            if (url.redirectUrl) {
51
+                                let newUrl = url.redirectUrl.replace(window.location.origin + window.location.pathname, "");
52
+                                newUrl = newUrl.replace("?ticket=&ssoEmpId=", "");
53
+                                newUrl = newUrl.replace("#", "");
54
+                                props.sliceClick(newUrl);
55
+                            }
56
+                        }}>
57
+                            <Tooltip title={settings.title ? url.alias : ""} placement="right">
58
+                            <img src={url.backGroupPicUrl || require("@assets/imgs/login/yunXiBg.png").default} style={{ width: "90%" }} />
59
+                            </Tooltip>
60
+                        </div> 
61
+                    }) : data_.map((card,index) => {
62
+                        let activeTree = utils.findNodeTree([...$store.sysMenu.norList, ...$store.sysMenu.menuList], card.positive, "resourceUrl");
63
+                        if(activeTree){card.has_positive = card.positive}else{card.has_positive = ''};
64
+                        console.log('dy-------',card.has_positive)
65
+                        return (
66
+                            <div className={`nor_card ${card.has_positive ? 'cur' : ''}` } onClick={()=>{
67
+                                if(!card.has_positive){return}
68
+                                let activeTree = utils.findNodeTree([...$store.sysMenu.norList, ...$store.sysMenu.menuList], card.has_positive, "resourceUrl");
69
+                                if(activeTree){
70
+                                    let activeTreeF = utils.findNodeTree([...$store.sysMenu.norList, ...$store.sysMenu.menuList], activeTree.parentId, "resourceId");
71
+                                    crossMenuClick(activeTreeF.resourceUrl, activeTree.resourceUrl, ((res) => {
72
+                                        props.history.push(res);
73
+                                      }))
74
+                                }
75
+                            }}>
76
+                                {/* <Tooltipplacement="right" defaultVisible="true"> */}
77
+                                    <img src={card.moveDownPicUrl || require(`@assets/imgs/home/agileHome${index + 1}.png`).default} width="95%" className="showImg" />
78
+                                    <img
79
+                                        className="tips_img hideimg"
80
+                                        src={card.has_positive ?card.moveDownPicUrl :(card.moveUpPicUrl || require(`@assets/imgs/home/agileHome6.png`).default)}
81
+                                        width="95%"
82
+                                    />
83
+                                    {
84
+                                        settings.title && card.alias ? <span class="tipsBox">{card.alias}</span> : null
85
+                                    }
86
+                                {/* </Tooltip> */}
87
+                            </div>
88
+                        )
89
+                    })
90
+                }
91
+            </Slider>
92
+            <img src={require("@assets/imgs/login/bg1.png").default} style={{ display: "none" }} />
93
+            <img src={require("@assets/imgs/login/bg2.png").default} style={{ display: "none" }} />
94
+            <img src={require("@assets/imgs/login/bg3.png").default} style={{ display: "none" }} />
95
+        </div>
96
+    )
97
+}
98
+export default SimpleSlider;

+ 165 - 0
src/components/SimpleSlider/slick-theme.css

@@ -0,0 +1,165 @@
1
+@charset 'UTF-8';
2
+
3
+.slick-dots,
4
+.slick-next,
5
+.slick-prev {
6
+    position: absolute;
7
+    display: block;
8
+    padding: 0
9
+}
10
+
11
+.slick-dots li button:before,
12
+.slick-next:before,
13
+.slick-prev:before {
14
+    font-family: slick;
15
+    -webkit-font-smoothing: antialiased;
16
+    -moz-osx-font-smoothing: grayscale
17
+}
18
+
19
+.slick-loading .slick-list {
20
+    background: yellow
21
+}
22
+
23
+.slick-next,
24
+.slick-prev {
25
+    font-size: 0;
26
+    line-height: 0;
27
+    top: 50%;
28
+    width: 20px;
29
+    height: 20px;
30
+    -webkit-transform: translate(0, -50%);
31
+    -ms-transform: translate(0, -50%);
32
+    transform: translate(0, -50%);
33
+    cursor: pointer;
34
+    color: transparent;
35
+    border: none;
36
+    outline: 0;
37
+    background: 0 0
38
+}
39
+
40
+.slick-next:focus,
41
+.slick-next:hover,
42
+.slick-prev:focus,
43
+.slick-prev:hover {
44
+    color: transparent;
45
+    outline: 0;
46
+    background: 0 0
47
+}
48
+
49
+.slick-next:focus:before,
50
+.slick-next:hover:before,
51
+.slick-prev:focus:before,
52
+.slick-prev:hover:before {
53
+    opacity: 1
54
+}
55
+
56
+.slick-next.slick-disabled:before,
57
+.slick-prev.slick-disabled:before {
58
+    opacity: .25
59
+}
60
+
61
+.slick-next:before,
62
+.slick-prev:before {
63
+    font-size: 20px;
64
+    line-height: 1;
65
+    opacity: .75;
66
+    color: #fff
67
+}
68
+
69
+.slick-prev {
70
+    left: -25px
71
+}
72
+
73
+[dir=rtl] .slick-prev {
74
+    right: -25px;
75
+    left: auto
76
+}
77
+
78
+.slick-prev:before {
79
+    content: '←'
80
+}
81
+
82
+.slick-next:before,
83
+[dir=rtl] .slick-prev:before {
84
+    content: '→'
85
+}
86
+
87
+.slick-next {
88
+    right: -25px
89
+}
90
+
91
+[dir=rtl] .slick-next {
92
+    right: auto;
93
+    left: -25px
94
+}
95
+
96
+[dir=rtl] .slick-next:before {
97
+    content: '←'
98
+}
99
+
100
+.slick-dotted.slick-slider {
101
+    margin-bottom: 30px
102
+}
103
+
104
+.slick-dots {
105
+    bottom:-18px;
106
+    width: 100%;
107
+    margin: 0;
108
+    list-style: none;
109
+    text-align: center
110
+}
111
+
112
+.slick-dots li {
113
+    position: relative;
114
+    display: inline-block;
115
+    width: 20px;
116
+    height: 20px;
117
+    margin: 0 5px;
118
+    padding: 0;
119
+    cursor: pointer
120
+}
121
+
122
+.slick-dots li button {
123
+    font-size: 0;
124
+    line-height: 0;
125
+    display: block;
126
+    width: 20px;
127
+    height: 20px;
128
+    padding: 5px;
129
+    cursor: pointer;
130
+    color: transparent;
131
+    border: 0;
132
+    outline: 0;
133
+    background: 0 0
134
+}
135
+
136
+.slick-dots li button:focus,
137
+.slick-dots li button:hover {
138
+    outline: 0
139
+}
140
+
141
+.slick-dots li button:focus:before,
142
+.slick-dots li button:hover:before {
143
+    opacity: 1
144
+}
145
+
146
+.slick-dots li button:before {
147
+    font-size: 13px;
148
+    line-height: 20px;
149
+    position: absolute;
150
+    top: 0;
151
+    left: 0;
152
+    width: 20px;
153
+    height: 20px;
154
+    content: '•';
155
+    text-align: center;
156
+    opacity: .25;
157
+    color: #000
158
+}
159
+
160
+.slick-dots li.slick-active button:before {
161
+    opacity: .75;
162
+    color: #000
163
+}
164
+
165
+/*# sourceMappingURL=slick-theme.min.css.map */

+ 112 - 0
src/components/SimpleSlider/slick.css

@@ -0,0 +1,112 @@
1
+.swiper-content{
2
+    width:100%;
3
+    height: calc(100% - 56px);
4
+}
5
+.swiper-div{
6
+    height: 100%;
7
+    overflow: hidden; 
8
+}
9
+.slick-list,
10
+.slick-slider,
11
+.slick-track {
12
+    position: relative;
13
+    display: block
14
+}
15
+
16
+.slick-loading .slick-slide,
17
+.slick-loading .slick-track {
18
+    visibility: hidden
19
+}
20
+
21
+.slick-slider {
22
+    height: 100%;
23
+    box-sizing: border-box;
24
+    -webkit-user-select: none;
25
+    -moz-user-select: none;
26
+    -ms-user-select: none;
27
+    user-select: none;
28
+    -webkit-touch-callout: none;
29
+    -khtml-user-select: none;
30
+    -ms-touch-action: pan-y;
31
+    touch-action: pan-y;
32
+    -webkit-tap-highlight-color: transparent
33
+}
34
+
35
+.slick-list {
36
+    height: 100%;
37
+    overflow: hidden;
38
+    margin: 0;
39
+    padding: 0;
40
+}
41
+
42
+.slick-list:focus {
43
+    outline: 0
44
+}
45
+
46
+.slick-list.dragging {
47
+    cursor: pointer;
48
+    cursor: hand
49
+}
50
+
51
+.slick-slider .slick-list,
52
+.slick-slider .slick-track {
53
+    -webkit-transform: translate3d(0, 0, 0);
54
+    -moz-transform: translate3d(0, 0, 0);
55
+    -ms-transform: translate3d(0, 0, 0);
56
+    -o-transform: translate3d(0, 0, 0);
57
+    transform: translate3d(0, 0, 0)
58
+}
59
+
60
+.slick-track {
61
+    top: 0;
62
+    left: 0
63
+}
64
+
65
+.slick-track:after,
66
+.slick-track:before {
67
+    display: table;
68
+    content: ''
69
+}
70
+
71
+.slick-track:after {
72
+    clear: both
73
+}
74
+
75
+.slick-slide {
76
+    display: none;
77
+    float: left;
78
+    height: 100%;
79
+    min-height: 1px
80
+}
81
+
82
+[dir=rtl] .slick-slide {
83
+    float: right
84
+}
85
+
86
+.slick-slide img {
87
+    display: block
88
+}
89
+
90
+.slick-slide.slick-loading img {
91
+    display: none
92
+}
93
+
94
+.slick-slide.dragging img {
95
+    pointer-events: none
96
+}
97
+
98
+.slick-initialized .slick-slide {
99
+    display: block
100
+}
101
+
102
+.slick-vertical .slick-slide {
103
+    display: block;
104
+    height: auto;
105
+    border: 1px solid transparent
106
+}
107
+
108
+.slick-arrow.slick-hidden {
109
+    display: none
110
+}
111
+
112
+/*# sourceMappingURL=slick.min.css.map */

+ 134 - 263
src/pages/gvc/component/rightBottomView.jsx

@@ -1,16 +1,18 @@
1 1
 /*
2
- * @Author: dayan_hjm 碳排放
2
+ * @Author: dayan_hjm 累计销量客户
3 3
  * @Date: 2023-10-23 09:32:12 
4 4
  * @Last Modified by: dayan_hjm
5
- * @Last Modified time: 2023-11-08 16:05:47
5
+ * @Last Modified time: 2023-11-13 16:14:33
6 6
  */
7 7
 
8
-
9 8
 import React, { useState, useEffect, Component } from "react";
10 9
 import styles from "../style.less";
11 10
 import { useHistory, useLocation, withRouter } from "react-router-dom";
12 11
 import mod from '../mod';
13
-
12
+import Slider from "react-slick";
13
+import "slick-carousel/slick/slick.css";
14
+import "slick-carousel/slick/slick-theme.css";
15
+import { Progress } from 'antd';
14 16
 import { getArrMax } from "@utils/util";
15 17
 import {
16 18
   dataengineCenterOneservice,
@@ -25,283 +27,152 @@ class RightBottomView extends Component {
25 27
     super(props, context);
26 28
     this.store = mod;
27 29
     this.state = {
28
-      missionsTotal_arr:[],
29
-      year:[],
30
-      missionsIntensity_arr:[],
31
-      max1:0,
32
-      max2:0,
33
-    };
34
-  }
35
-
36
-  componentDidMount() {
37
-    this.getUrl()
38
-  }
39
-
40
-  async getUrl(){
41
-    await dataengineCenterOneservice().then(({ data=[], resultCode }) => {
42
-      if (+resultCode === 0) {
43
-        let year = [],missionsIntensity_arr = [],missionsTotal_arr = [],max1=[],max2=[];
44
-        data.map((x,i)=>{
45
-          year.unshift(x.byear)
46
-          missionsIntensity_arr.unshift(x.missionsIntensity)
47
-          missionsTotal_arr.unshift(x.missionsTotal)
48
-        });
49
-        const max_1 = getArrMax(missionsIntensity_arr);
50
-        const max_2 = getArrMax(missionsTotal_arr);
51
-        for (let index = 0; index < data.length; index++) {
52
-          max1.unshift(max_1/0.8)
53
-          max2.unshift(max_2/0.8)
54
-        }
55
-        this.setState({year,missionsIntensity_arr,missionsTotal_arr,max1,max2});
56
-          this.setData();
57
-          this.setData2();    
58
-      }
59
-    });
60
-
61
-  }
62
-
63
-  setData() {
64
-    setTimeout(() => {
65
-      // 基于准备好的dom,初始化echarts实例
66
-      var myChart = echarts.init(document.getElementById('echarts8'));
67
-      var myColor = ['#eb2100', '#eb3600', '#d0570e', '#d0a00e', '#34da62', '#00e9db', '#00c0e9', '#0096f3'];
68
-      var option = {
69
-
70
-        grid: {
71
-          left: '3%',
72
-          top: '15%',
73
-          right: '5%',
74
-          bottom: '0%',
75
-          containLabel: true
30
+      data_item: [
31
+        {
32
+          name: '很长的很长的很长的很长的很长的很长的很长的布置岛实业有限公司',
33
+          num: 666969988666969988666969988666969988,
34
+          percent:99.5
76 35
         },
77
-        xAxis: [{
78
-          show: false,
79
-        }],
80
-        yAxis: [{
81
-          axisTick: 'none',
82
-          axisLine: 'none',
83
-          axisLabel: {
84
-            padding:[0,22,0,0],
85
-            textStyle: {
86
-              color: '#69FFDE',
87
-              fontSize: '16',
88
-              fontWeight: 700,
89
-              fontFamily: 'DingTalkJinBuTi',
90
-            }
91
-          },
92
-          data: this.state.year
36
+        {
37
+          name: '布置岛实业有限公司',
38
+          num: 966,
39
+          percent:95.5
93 40
 
94 41
         },
95 42
         {
96
-          name: '单位:件',
97
-          nameGap: '50',
98
-          nameTextStyle: {
99
-            color: 'rgba(255,255,255,.6)',
100
-            fontSize: '16',
101
-          },
102
-          axisLine: {
103
-            lineStyle: {
104
-              color: 'rgba(0,0,0,0)'
105
-            }
106
-          },
107
-          data: [],
108
-        }],
109
-        legend: {
110
-          data: '碳排放强度',
111
-          // right: 'center',
112
-          // top: 0,
113
-          textStyle: {
114
-            color: "#fff",
115
-            fontSize: 12
116
-          },
117
-          itemWidth: 12,
118
-          itemHeight: 10,
43
+          name: '布置岛实业有限公司',
44
+          num: 666969988,
45
+          percent:85.5
119 46
         },
120
-        series: [{
121
-          name: '条',
122
-          type: 'bar',
123
-          yAxisIndex: 0,
124
-          data: this.state.missionsTotal_arr,
125
-          label: {
126
-            normal: {
127
-              show: true,
128
-              position: 'insideLeft',
129
-              formatter: function (param) {
130
-                return param.value;
131
-              },
132
-              textStyle: {
133
-                color: 'rgba(255,255,255,1)',
134
-                fontSize: '15',
135
-                padding:[5,5,0,5]
136
-              }
137
-            }
138
-          },
139
-          barWidth: 24,
140
-          itemStyle: {
141
-            normal: {
142
-              color: new echarts.graphic.LinearGradient(1, 0, 0, 0, [
143
-                { offset: 0, color: 'rgb(255 242 72)' },
144
-                { offset: 0.7, color: '#ffe06a99' },
145
-                { offset: 1, color: '#ffe06a99' },
146
-              ]),
147
-              barBorderRadius: 15,
148
-              borderColor: "rgb(255 242 72)",
149
-              borderWidth: 1
150
-
151
-            },
152
-          },
153
-          z: 2
154
-        }, {
155
-          name: '白框',
156
-          type: 'bar',
157
-          yAxisIndex: 1,
158
-          barGap: '-100%',
159
-          data: this.state.max2,
160
-          barWidth: 24,
161
-          itemStyle: {
162
-            normal: {
163
-              color: '#ffffff24',
164
-              barBorderRadius: 15,
165
-
166
-            }
167
-          },
168
-          z: 1
169
-        }]
170
-      };
171
-
47
+        {
48
+          name: '布置岛实业有限公司',
49
+          num: 666969988,
50
+          percent:59.5
172 51
 
173
-      // 使用刚指定的配置项和数据显示图表。
174
-      myChart.setOption(option);
175
-      window.addEventListener("resize", function () {
176
-        myChart.resize();
177
-      });
178
-    }, 3000)
179
-  }
52
+        },
53
+        {
54
+          name: '布置岛实业有限公司',
55
+          num: 666969988,
56
+          percent:48.5
180 57
 
181
-  setData2() {
182
-    setTimeout(() => {
183
-      // 基于准备好的dom,初始化echarts实例
184
-      var myChart = echarts.init(document.getElementById('echarts9'));
185
-      var myColor = ['#eb2100', '#eb3600', '#d0570e', '#d0a00e', '#34da62', '#00e9db', '#00c0e9', '#0096f3'];
186
-      var option = {
187
-        grid: {
188
-          left: '0%',
189
-          top: '15%',
190
-          right: '5%',
191
-          bottom: '0%',
192
-          containLabel: true
193 58
         },
194
-        xAxis: [{
195
-          show: false,
196
-          inverse: true,
197
-        }],
198
-        yAxis: [{
199
-          axisTick: 'none',
200
-          axisLine: 'none',
201
-          offset: '15',
202
-          axisLine: {
203
-            onZero: false
204
-          },
205
-          axisLabel: {
206
-            textStyle: {
207
-              color: 'rgba(255,255,255,.6)',
208
-              fontSize: '0',
209
-            }
210
-          },
211
-          data: ['字段1', '字段2', '字段3']
59
+        {
60
+          name: '布置岛实业有限公司',
61
+          num: 36,
62
+          percent:6
212 63
 
213 64
         },
214 65
         {
215
-          name: '单位:件',
216
-          nameGap: '50',
217
-          nameTextStyle: {
218
-            color: 'rgba(255,255,255,.6)',
219
-            fontSize: '16',
220
-          },
221
-          axisLine: {
222
-            lineStyle: {
223
-              color: 'rgba(0,0,0,0)'
224
-            }
225
-          },
226
-          data: [],
227
-        }],
228
-        series: [{
229
-          name: '条',
230
-          type: 'bar',
231
-          yAxisIndex: 0,
232
-          data: this.state.missionsIntensity_arr,
233
-          animation:true,
234
-          animationDuration:3000,
235
-          smooth: true,
236
-          label: {
237
-            normal: {
238
-              show: true,
239
-              position: 'insideRight',
240
-              formatter: function (param) {
241
-                return param.value;
242
-              },
243
-              textStyle: {
244
-                color: 'rgba(255,255,255,1)',
245
-                fontSize: '15',
246
-                padding:[5,5,0,5]
247
-              }
248
-            }
249
-          },
250
-          barWidth: 23,
251
-          itemStyle: {
252
-            normal: {
253
-              color: new echarts.graphic.LinearGradient(1, 0, 0, 0, [
254
-                { offset: 1, color: '#69FFDE' },
255
-                { offset: 0.75, color: '#69FFDE' },
256
-                { offset: 0, color: 'rgb(83 211 183 / 15%)' },
257
-              ]),
258
-              barBorderRadius: 15,
259
-              borderColor: "#69FFDE",
260
-              borderWidth: 1
261
-            }
262
-          },
263
-          z: 2
264
-        }, {
265
-          name: '白框',
266
-          type: 'bar',
267
-          yAxisIndex: 1,
268
-          barGap: '-100%',
269
-          data: this.state.max1,
270
-          animation:true,
271
-          animationDuration:3000,
272
-          smooth: true,
273
-          barWidth: 23,
274
-          itemStyle: {
275
-            normal: {
276
-              color: '#ffffff24',
277
-              barBorderRadius: 15,
278
-            }
279
-          },
280
-          z: 1
281
-        }]
282
-      };
66
+          name: '布置岛实业有限公司',
67
+          num: 666969988,
68
+          percent:78
69
+        },
70
+        {
71
+          name: '布置岛实业有限公司',
72
+          num: 666969988,
73
+          percent:45
74
+        },
75
+        {
76
+          name: '布置岛实业有限公司',
77
+          num: 666969988,
78
+          percent:36
79
+        },
80
+        {
81
+          name: '布置岛实业有限公司',
82
+          num: 666969988,
83
+          percent:36
84
+        },
85
+        {
86
+          name: '布置岛实业有限公司',
87
+          num: 666969988,
88
+          percent:98
89
+        },
90
+        {
91
+          name: '布置岛实业有限公司',
92
+          num: 666969988,
93
+          percent:65
94
+        },
95
+        {
96
+          name: '布置岛实业有限公司',
97
+          num: 666969988,
98
+          percent:36
99
+        },
100
+      ],
101
+    };
102
+  }
283 103
 
104
+  componentDidMount() {
105
+  }
284 106
 
285
-      // 使用刚指定的配置项和数据显示图表。
286
-      myChart.setOption(option);
287
-      window.addEventListener("resize", function () {
288
-        myChart.resize();
289
-      });
107
+  async getUrl() {
108
+    // await dataengineCenterOneservice().then(({ data=[], resultCode }) => {
109
+    //   if (+resultCode === 0) {
110
+    //     let year = [],missionsIntensity_arr = [],missionsTotal_arr = [],max1=[],max2=[];
111
+    //     data.map((x,i)=>{
112
+    //       year.unshift(x.byear)
113
+    //       missionsIntensity_arr.unshift(x.missionsIntensity)
114
+    //       missionsTotal_arr.unshift(x.missionsTotal)
115
+    //     });
116
+    //     const max_1 = getArrMax(missionsIntensity_arr);
117
+    //     const max_2 = getArrMax(missionsTotal_arr);
118
+    //     for (let index = 0; index < data.length; index++) {
119
+    //       max1.unshift(max_1/0.8)
120
+    //       max2.unshift(max_2/0.8)
121
+    //     }
122
+    //     this.setState({year,missionsIntensity_arr,missionsTotal_arr,max1,max2});
123
+    //       this.setData();
124
+    //       this.setData2();    
125
+    //   }
126
+    // });
290 127
 
291
-    }, 3000)
292 128
   }
293 129
 
294 130
   render() {
295
-
131
+    const settings = {
132
+      dots: false,
133
+      arrows:false,
134
+      infinite: true,
135
+      autoplay: true,
136
+      autoplaySpeed: 2500,//自动播放的时间
137
+      // fade: true,//是否采用淡入淡出的效果  竖着的滚动方式不能添加此动效
138
+      slidesToShow: 8,
139
+      slidesToScroll: 1,
140
+      vertical: true,
141
+      verticalSwiping: true,
142
+      beforeChange: function (currentSlide, nextSlide) {
143
+        console.log("before change", currentSlide, nextSlide);
144
+      },
145
+      afterChange: function (currentSlide) {
146
+        console.log("after change", currentSlide);
147
+      }
148
+    };
149
+    const { data_item } = this.state;
296 150
     return (
297
-      <div className={["eacharView cbRightBottomView"]}>
298
-        <span className="right_b_tip1">碳排放强度</span>
299
-        <div id="echarts9"></div>
300
-        {/* <div className="fonts">
301
-
302
-        </div> */}
303
-        <span className="right_b_tip2">碳排放总量/万吨</span>
304
-        <div id="echarts8"></div>
151
+      <div className={["eacharView cbRightBottomView slider_item_box"]}>
152
+        <p className="title_">累计销量客户/吨</p>
153
+        <Slider {...settings}>
154
+          {
155
+            data_item.map((x, i) => {
156
+              return (
157
+                <div className="slider_box">
158
+                  <div className="slider_top">
159
+                    <p>{i + 1}.<span>{x.name}</span></p>
160
+                    <p className="p2">{x.num}</p>
161
+                  </div>
162
+                  <Progress
163
+                    strokeColor={{
164
+                      from: '#a98911cf',
165
+                      to: 'rgb(248,204,41,0.9)',
166
+                    }}
167
+                    percent={x.percent}
168
+                    status="active"
169
+                  />
170
+                </div>
171
+              )
172
+            })
173
+          }
174
+
175
+        </Slider>
305 176
       </div>
306 177
     )
307 178
   }

+ 74 - 1
src/pages/gvc/style.less

@@ -78,7 +78,7 @@
78 78
                 justify-content: space-between;
79 79
                 margin-top: 0.5em;
80 80
                 font-weight: normal;
81
-                font-size: 0.8em;
81
+                font-size: 0.9em;
82 82
                 color: #CDF1FF;
83 83
                 padding: 0.8em 0.9em 0.2em;
84 84
                 background: linear-gradient(0deg, #ffffff26 0%, #ffffff00 100%);
@@ -94,6 +94,79 @@
94 94
             }
95 95
           }
96 96
         }
97
+
98
+        .rightContent {
99
+          width: 15%;
100
+          position: absolute;
101
+          right: 0;
102
+          bottom: 9%;
103
+          z-index: 9;
104
+          height: 46%;
105
+
106
+          .title_ {
107
+            text-align: left;
108
+            color: #fff;
109
+            width: 90%;
110
+            height: 2em;
111
+            border-radius: 0 8px 0 0;
112
+            opacity: 1;
113
+            background: linear-gradient(45deg, #ffdf5800 0%, #ffdf584d 100%);
114
+            line-height: 2em;
115
+            color: #F1E9E0;
116
+            margin-bottom: 0.6em;
117
+          }
118
+
119
+          .slider_box {
120
+            padding: 0 0.5em;
121
+            box-sizing: border-box;
122
+          }
123
+
124
+          .slider_top {
125
+            width: 100%;
126
+            font-size: 0.9em;
127
+            display: flex;
128
+            align-items: center;
129
+            justify-content: space-between;
130
+            color: #d4d4d4;
131
+            font-weight: normal;
132
+
133
+            >p {
134
+              width: 59%;
135
+              display: flex;
136
+              overflow: hidden;
137
+              text-overflow: ellipsis;
138
+              white-space: nowrap;
139
+
140
+              >span {
141
+                display: inline-block;
142
+                width: 99%;
143
+                overflow: hidden;
144
+                text-overflow: ellipsis;
145
+                white-space: nowrap;
146
+              }
147
+            }
148
+
149
+            .p2 {
150
+              width: 30%;
151
+              display: inline-block;
152
+              text-align: right;
153
+            }
154
+          }
155
+
156
+          .ant-progress {
157
+            height: 10px;
158
+
159
+            .ant-progress-inner {
160
+              top: -5px;
161
+              background-color: #57575759;
162
+
163
+              .ant-progress-bg {
164
+                height: 5px !important;
165
+              }
166
+            }
167
+          }
168
+
169
+        }
97 170
       }
98 171
     }
99 172
   }

+ 0 - 3
src/pages/gvc/view.jsx

@@ -288,9 +288,6 @@ class Gvc extends Component {
288 288
 
289 289
               <div class="bottomContent2 animate__animated animate__fadeInDown animate__slower  animate__delay-1s">
290 290
                 <div className="bottomContent bigDivPd">
291
-                  <Tooltip placement="bottom" title={' ● 近三年的碳排放强度、碳排放总量数据'}>
292
-                    <p className="topMsg_title">碳排放</p>
293
-                  </Tooltip>
294 291
                   <div className="topMsg_content">
295 292
                     <RightBottomView></RightBottomView>
296 293
                   </div>

+ 21 - 0
yarn.lock

@@ -5662,6 +5662,11 @@ enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0, enhanced-resolve@^4.1.1, enhan
5662 5662
     memory-fs "^0.5.0"
5663 5663
     tapable "^1.0.0"
5664 5664
 
5665
+enquire.js@^2.1.6:
5666
+  version "2.1.6"
5667
+  resolved "https://registry.yarnpkg.com/enquire.js/-/enquire.js-2.1.6.tgz#3e8780c9b8b835084c3f60e166dbc3c2a3c89814"
5668
+  integrity sha512-/KujNpO+PT63F7Hlpu4h3pE3TokKRHN26JYmQpPyjkRD/N57R7bPDNojMXdi7uveAKjYB7yQnartCxZnFWr0Xw==
5669
+
5665 5670
 enquirer@^2.3.5, enquirer@^2.3.6:
5666 5671
   version "2.3.6"
5667 5672
   resolved "https://registry.npmmirror.com/enquirer/-/enquirer-2.3.6.tgz"
@@ -12992,6 +12997,17 @@ react-simple-verify@^1.0.3, react-simple-verify@^1.0.9:
12992 12997
     webpack-manifest-plugin "^2.2.0"
12993 12998
     workbox-webpack-plugin "^4.3.1"
12994 12999
 
13000
+react-slick@^0.29.0:
13001
+  version "0.29.0"
13002
+  resolved "https://registry.yarnpkg.com/react-slick/-/react-slick-0.29.0.tgz#0bed5ea42bf75a23d40c0259b828ed27627b51bb"
13003
+  integrity sha512-TGdOKE+ZkJHHeC4aaoH85m8RnFyWqdqRfAGkhd6dirmATXMZWAxOpTLmw2Ll/jPTQ3eEG7ercFr/sbzdeYCJXA==
13004
+  dependencies:
13005
+    classnames "^2.2.5"
13006
+    enquire.js "^2.1.6"
13007
+    json2mq "^0.2.0"
13008
+    lodash.debounce "^4.0.8"
13009
+    resize-observer-polyfill "^1.5.0"
13010
+
12995 13011
 react-sortable-hoc@^2.0.0:
12996 13012
   version "2.0.0"
12997 13013
   resolved "https://registry.yarnpkg.com/react-sortable-hoc/-/react-sortable-hoc-2.0.0.tgz#f6780d8aa4b922a21f3e754af542f032677078b7"
@@ -14021,6 +14037,11 @@ slice-ansi@^4.0.0:
14021 14037
     astral-regex "^2.0.0"
14022 14038
     is-fullwidth-code-point "^3.0.0"
14023 14039
 
14040
+slick-carousel@^1.8.1:
14041
+  version "1.8.1"
14042
+  resolved "https://registry.yarnpkg.com/slick-carousel/-/slick-carousel-1.8.1.tgz#a4bfb29014887bb66ce528b90bd0cda262cc8f8d"
14043
+  integrity sha512-XB9Ftrf2EEKfzoQXt3Nitrt/IPbT+f1fgqBdoxO3W/+JYvtEOW6EgxnWfr9GH6nmULv7Y2tPmEX3koxThVmebA==
14044
+
14024 14045
 snapdragon-node@^2.0.1:
14025 14046
   version "2.1.1"
14026 14047
   resolved "https://registry.npmmirror.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz"