vue双曲线

原型

  1 <template>
  2   <div :class="className" :style="{height:height,width}" />
  3 </template>
  4 <script>
  5 import echarts from 'echarts'
  6 import resize from './mixins/resize.js'
  7 export default {
  8   name: 'HomeChart',
  9   mixins: [resize],
 10   props: {
 11     className: {
 12       type: String,
 13       default: 'chart'
 14     },
 15      {
 16       type: String,
 17       default: '100%'
 18     },
 19     height: {
 20       type: String,
 21       default: '250px'
 22     },
 23     nameOne: {
 24       type: String,
 25       default: undefined
 26     },
 27     nameTwo: {
 28       type: String,
 29       default: undefined
 30     },
 31     // 月份
 32     rowData: {
 33       type: Array,
 34       default: () => []
 35     },
 36     dataArrOne: {
 37       type: Array,
 38       default: () => []
 39     },
 40     dataArrTwo: {
 41       type: Array,
 42       default: () => []
 43     }
 44   },
 45   data() {
 46     return {
 47       chart: null
 48     }
 49   },
 50   beforeDestroy() {
 51     if (!this.chart) {
 52       return
 53     }
 54     this.chart.dispose()
 55     this.chart = null
 56   },
 57   mounted() {
 58     this.initChart()
 59   },
 60   methods: {
 61     initChart() {
 62       this.chart = echarts.init(this.$el)
 63       this.chart.setOption({
 64         tooltip: {
 65           trigger: 'axis'
 66         },
 67         grid: {
 68           top: '5%',
 69           left: '10%',
 70           right: '5%',
 71           bottom: '25%'
 72         },
 73         xAxis: [
 74           {
 75             type: 'category',
 76             boundaryGap: false,
 77             axisLine: {
 78               show: true,
 79               lineStyle: {
 80                 color: '#fff'
 81               }
 82             },
 83             axisLabel: {
 84               textStyle: {
 85                 color: '#8D8E93',
 86                 padding: 8,
 87                 fontSize: 14
 88               },
 89               formatter: function(data) {
 90                 return data
 91               }
 92             },
 93             splitLine: {
 94               show: true,
 95               lineStyle: {
 96                 color: '#fff'
 97               }
 98             },
 99             axisTick: {
100               show: false
101             },
102             // data: ['3.26', '3.27', '3.28', '3.29', '3.30', '3.31']
103             data: this.rowData
104           }
105         ],
106         yAxis: [
107           {
108             nameTextStyle: {
109               color: '#7ec7ff',
110               fontSize: 16,
111               padding: 10
112             },
113             min: 0,
114             splitLine: {
115               show: true,
116               lineStyle: {
117                 color: '#fff'
118               }
119             },
120             axisLine: {
121               show: true,
122               lineStyle: {
123                 color: '#fff'
124               }
125             },
126             axisLabel: {
127               show: true,
128               textStyle: {
129                 color: '#8D8E93',
130                 padding: 10
131               },
132               formatter: function(value) {
133                 if (value === 0) {
134                   return value
135                 }
136                 return value
137               }
138             },
139             axisTick: {
140               show: false
141             }
142           }
143         ],
144         series: [
145           {
146             name: this.nameOne,
147             type: 'line',
148             symbol: 'circle', // 默认是空心圆(中间是白色的),改成实心圆
149             showAllSymbol: true,
150             symbolSize: 0,
151             smooth: true,
152             lineStyle: {
153               normal: {
154                  2,
155                 color: 'rgba(247,160,4,1)' // 线条颜色
156               },
157               borderColor: 'rgba(0,0,0,.4)'
158             },
159             itemStyle: {
160               color: 'rgba(247,160,4,1)',
161               borderColor: '#646ace',
162               borderWidth: 2
163             },
164             tooltip: {
165               show: true
166             },
167             areaStyle: {
168               // 区域填充样式
169               normal: {
170                 // 线性渐变,前4个参数分别是x0,y0,x2,y2(范围0~1);相当于图形包围盒中的百分比。如果最后一个参数是‘true’,则该四个值是绝对像素位置。
171                 color: new echarts.graphic.LinearGradient(
172                   0,
173                   0,
174                   0,
175                   1,
176                   [
177                     {
178                       offset: 0,
179                       color: 'rgba(247,160,4,.3)'
180                     },
181                     {
182                       offset: 1,
183                       color: 'rgba(247,160,4, 0)'
184                     }
185                   ],
186                   false
187                 )
188               }
189             },
190             // data: ['40', '60', '22', '85', '50', '40']
191             data: this.dataArrOne
192           },
193           {
194             name: this.nameTwo,
195             type: 'line',
196             symbol: 'circle', // 默认是空心圆(中间是白色的),改成实心圆
197             showAllSymbol: true,
198             symbolSize: 0,
199             smooth: true,
200             lineStyle: {
201               normal: {
202                  2,
203                 color: 'rgba(51,42,123,1)' // 线条颜色
204               },
205               borderColor: 'rgba(0,0,0,.4)'
206             },
207             itemStyle: {
208               color: 'rgba(51,42,123,1)',
209               borderColor: '#646ace',
210               borderWidth: 2
211             },
212             tooltip: {
213               show: true
214             },
215             areaStyle: {
216               // 区域填充样式
217               normal: {
218                 // 线性渐变,前4个参数分别是x0,y0,x2,y2(范围0~1);相当于图形包围盒中的百分比。如果最后一个参数是‘true’,则该四个值是绝对像素位置。
219                 color: new echarts.graphic.LinearGradient(
220                   0,
221                   0,
222                   0,
223                   1,
224                   [
225                     {
226                       offset: 0,
227                       color: 'rgba(51,42,123,.2)'
228                     },
229                     {
230                       offset: 1,
231                       color: 'rgba(51,42,123, 0)'
232                     }
233                   ],
234                   false
235                 )
236               }
237             },
238             // data: ['20', '50', '12', '65', '30', '60']
239             data: this.dataArrTwo
240           }
241         ]
242       })
243     }
244   }
245 }
246 </script>

调用

 1 <template>
 2   <div>
 3     <!-- 总体情况 - 总览echarts -->
 4     <div v-loading="loading">
 5       <!-- 图标-->
 6       <div>
 7         <HomeChart
 8           v-if="showColumnar"
 9           ref="HomeChart"
10           :name-one="$t('总企业变化')"
11           :name-two="$t('跟踪企业变化')"
12           :row-data="rowData"
13           :data-arr-one="dataArrOne"
14           :data-arr-two="dataArrTwo"
15           height="350px"
16         />
17       </div>
18     </div>
19   </div>
20 </template>
21 <script>
22 
23 import HomeChart from '@/views/chart/homeChart'
24 import { companyBaseChange } from '@/api/system/homeInformation/homeInformation.js'
25 export default {
26   components: {
27     HomeChart
28   },
29   props: {
30   },
31   data() {
32     return {
33       loading: false,
34       // 上面数据
35       dataArrOne: [],
36       // 下面数据
37       dataArrTwo: [],
38       // 月份
39       rowData: [],
40       showColumnar: false,
41       yearOptions: [],
42       choiceYear: '',
43       // 当前页面的宽度
44       thisPageWidth: (document.documentElement.clientWidth - 270) + 'px',
45       formData: {}
46     }
47   },
48   created() {
49     this.initData()
50   },
51   mounted() {
52   },
53   methods: {
54     initData() {
55       companyBaseChange({}).then(response => {
56         if (response.data.code === 200) {
57           if (response.data) {
58             this.rowData = response.data.xLabelArr
59             this.dataArrOne = response.data.yLabelArr
60             this.dataArrTwo = response.data.yLabelArr2
61           }
62           this.showColumnar = true
63           this.loading = false
64         } else {
65           this.msgError(this.$t(response.data.msg))
66           this.loading = false
67         }
68       })
69     }
70   }
71 }
72 </script>

引用组件

      <el-col :span="11">
        <div class="grid-content">
          <div class="tit">
            <p>企业数量变化</p>
          </div>
          <companyBaseChange />
        </div>
      </el-col>

js

 1 import request from '@/utils/request'
 2 
 3 
 4 // 企业变化
 5 export function companyBaseChange(query) {
 6   return request({
 7     url: '/homeInformation/companyBaseChange',
 8     method: 'get',
 9     params: query
10   })
11 }

controller

1     @ApiOperation(value = "企业每月的变化", notes="lgw")
2     @GetMapping("companyBaseChange")
3     @Log(title = "企业每月的变化", businessType = BusinessType.LIST)
4     public AjaxResult companyBaseChange(HomeInformation homeInformation) {
5         return AjaxResult.success(homeInformationService.companyBaseChange(homeInformation));
6     }

service

 1     /**
 2      *企业每月的变化
 3      */
 4     public Map<String, Object> companyBaseChange(HomeInformation homeInformation){
 5 
 6         List<HomeInformation> homeInformations;
 7         List<HomeInformation> companyBaseTrackChange;
 8         String[] str = {"01","02","03","04","05","06","07","08","09","10","11","12"};
 9         Map<String, Object> result = new HashMap<>();
10         result.put("code", 200);
11         result.put("msg", "");
12         // x标题
13         List<String> xLabelArr = new ArrayList<>();
14         List<Integer> yLabelArr = new ArrayList<>();
15         List<Integer> yLabelArr2 = new ArrayList<>();
16         for(int i = 1; i <= 12 ; i++) {
17             xLabelArr.add(i + "月");
18         }
19         homeInformations = homeInformationDao.companyBaseChange(homeInformation);
20         companyBaseTrackChange = homeInformationDao.companyBaseTrackChange(homeInformation);
21         if(StringUtils.isEmpty(companyBaseTrackChange)) {
22             for(int i = 1; i <= 12 ; i++) {
23                 yLabelArr2.add(0);
24             }
25         }else {
26             Set<String> mArr2 = new HashSet<>();
27             for(HomeInformation m : companyBaseTrackChange) {
28                 mArr2.add(m.getMonthOnly());
29             }
30 
31 
32             for (int i = 0; i < str.length; i++) {
33                 if (!mArr2.contains(str[i])) {
34                     companyBaseTrackChange.add(i, new HomeInformation());
35                 }
36             }
37             for (HomeInformation monthSums : companyBaseTrackChange) {
38                 Integer monthSum = monthSums.getMonthSum();
39                 if(monthSum==null){
40                     yLabelArr2.add(0);
41                 }else {
42                     yLabelArr2.add(monthSum);
43                 }
44             }
45         }
46         if(StringUtils.isEmpty(homeInformations)) {
47             for(int i = 1; i <= 12 ; i++) {
48                 yLabelArr.add(0);
49             }
50         }else {
51             Set<String> mArr = new HashSet<>();
52             for(HomeInformation m : homeInformations) {
53                 mArr.add(m.getMonthOnly());
54             }
55 
56 
57             for (int i = 0; i < str.length; i++) {
58                 if (!mArr.contains(str[i])) {
59                     homeInformations.add(i, new HomeInformation());
60                 }
61             }
62             for (HomeInformation monthSums : homeInformations) {
63                 Integer monthSum = monthSums.getMonthSum();
64                 if(monthSum==null){
65                     yLabelArr.add(0);
66                 }else {
67                     yLabelArr.add(monthSum);
68                 }
69             }
70         }
71         result.put("xLabelArr", xLabelArr);
72         result.put("yLabelArr", yLabelArr);
73         result.put("yLabelArr2", yLabelArr2);
74         return result;
75     }

entity

 1 package com.anxin.sys.homeInformation.entity;
 2 
 3 import com.anxin.framework.web.entity.BaseEntity;
 4 import io.swagger.annotations.ApiModel;
 5 import io.swagger.annotations.ApiModelProperty;
 6 
 7 /**
 8  * 首页信息
 9  */
10 @ApiModel(description = "首页信息")
11 public class HomeInformation extends BaseEntity<HomeInformation> {
12     private static final long serialVersionUID = 1L;
13 
14     /** 企业总数 */
15     @ApiModelProperty(value = "企业总数",position=10)
16     private Integer companyBaseCount;
17 
18     /** 企业跟踪总数 */
19     @ApiModelProperty(value = "企业跟踪总数",position=10)
20     private Integer companyTrackEnterpriseCount;
21 
22     /** 未跟踪总数 */
23     @ApiModelProperty(value = "未跟踪总数",position=10)
24     private Integer notTrackedCount;
25     //月份
26     private String monthOnly;
27     //每月的总数
28     private Integer monthSum;
29 
30     public String getMonthOnly() {
31         return monthOnly;
32     }
33 
34     public void setMonthOnly(String monthOnly) {
35         this.monthOnly = monthOnly;
36     }
37 
38     public Integer getMonthSum() {
39         return monthSum;
40     }
41 
42     public void setMonthSum(Integer monthSum) {
43         this.monthSum = monthSum;
44     }
45 
46     public Integer getCompanyBaseCount() {
47         return companyBaseCount;
48     }
49 
50     public void setCompanyBaseCount(Integer companyBaseCount) {
51         this.companyBaseCount = companyBaseCount;
52     }
53 
54     public Integer getCompanyTrackEnterpriseCount() {
55         return companyTrackEnterpriseCount;
56     }
57 
58     public void setCompanyTrackEnterpriseCount(Integer companyTrackEnterpriseCount) {
59         this.companyTrackEnterpriseCount = companyTrackEnterpriseCount;
60     }
61 
62     public Integer getNotTrackedCount() {
63         return notTrackedCount;
64     }
65 
66     public void setNotTrackedCount(Integer notTrackedCount) {
67         this.notTrackedCount = notTrackedCount;
68     }
69 
70     public HomeInformation() {
71     }
72 
73     public HomeInformation(Integer companyBaseCount, Integer companyTrackEnterpriseCount, Integer notTrackedCount) {
74         this.companyBaseCount = companyBaseCount;
75         this.companyTrackEnterpriseCount = companyTrackEnterpriseCount;
76         this.notTrackedCount = notTrackedCount;
77     }
78 
79 }

dao

 1 package com.anxin.sys.homeInformation.entity;
 2 
 3 import com.anxin.framework.web.entity.BaseEntity;
 4 import io.swagger.annotations.ApiModel;
 5 import io.swagger.annotations.ApiModelProperty;
 6 
 7 /**
 8  * 首页信息
 9  */
10 @ApiModel(description = "首页信息")
11 public class HomeInformation extends BaseEntity<HomeInformation> {
12     private static final long serialVersionUID = 1L;
13 
14     /** 企业总数 */
15     @ApiModelProperty(value = "企业总数",position=10)
16     private Integer companyBaseCount;
17 
18     /** 企业跟踪总数 */
19     @ApiModelProperty(value = "企业跟踪总数",position=10)
20     private Integer companyTrackEnterpriseCount;
21 
22     /** 未跟踪总数 */
23     @ApiModelProperty(value = "未跟踪总数",position=10)
24     private Integer notTrackedCount;
25     //月份
26     private String monthOnly;
27     //每月的总数
28     private Integer monthSum;
29 
30     public String getMonthOnly() {
31         return monthOnly;
32     }
33 
34     public void setMonthOnly(String monthOnly) {
35         this.monthOnly = monthOnly;
36     }
37 
38     public Integer getMonthSum() {
39         return monthSum;
40     }
41 
42     public void setMonthSum(Integer monthSum) {
43         this.monthSum = monthSum;
44     }
45 
46     public Integer getCompanyBaseCount() {
47         return companyBaseCount;
48     }
49 
50     public void setCompanyBaseCount(Integer companyBaseCount) {
51         this.companyBaseCount = companyBaseCount;
52     }
53 
54     public Integer getCompanyTrackEnterpriseCount() {
55         return companyTrackEnterpriseCount;
56     }
57 
58     public void setCompanyTrackEnterpriseCount(Integer companyTrackEnterpriseCount) {
59         this.companyTrackEnterpriseCount = companyTrackEnterpriseCount;
60     }
61 
62     public Integer getNotTrackedCount() {
63         return notTrackedCount;
64     }
65 
66     public void setNotTrackedCount(Integer notTrackedCount) {
67         this.notTrackedCount = notTrackedCount;
68     }
69 
70     public HomeInformation() {
71     }
72 
73     public HomeInformation(Integer companyBaseCount, Integer companyTrackEnterpriseCount, Integer notTrackedCount) {
74         this.companyBaseCount = companyBaseCount;
75         this.companyTrackEnterpriseCount = companyTrackEnterpriseCount;
76         this.notTrackedCount = notTrackedCount;
77     }
78 
79 }

xml

 1     <!--   企业每月的变化-->
 2     <select id="companyBaseChange" parameterType="HomeInformation" resultType="com.anxin.sys.homeInformation.entity.HomeInformation">
 3         SELECT
 4             COUNT(*) AS 'monthSum',
 5             DATE_FORMAT( a.create_time, '%m' ) AS 'monthOnly'
 6         FROM
 7             company_base a
 8         WHERE
 9             a.del_flag = '0'
10         GROUP BY
11             monthOnly
12     </select>
13 
14     <!--   企业跟踪每月的变化-->
15     <select id="companyBaseTrackChange" parameterType="HomeInformation" resultType="com.anxin.sys.homeInformation.entity.HomeInformation">
16         SELECT
17             COUNT(*) AS 'monthSum',
18             DATE_FORMAT( a.create_time, '%m' ) AS 'monthOnly'
19         FROM
20             company_track_enterprise a
21         WHERE
22             a.del_flag = '0'
23         GROUP BY
24             monthOnly
25     </select>
原文地址:https://www.cnblogs.com/lemperor/p/15166817.html