大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战

马肤

温馨提示:这篇文章已超过439天没有更新,请注意相关的内容是否还可用!

摘要:,,本项目是关于大数据BI可视化开发,使用Echarts组件结合Vue框架进行图表组件开发。在项目中,将实现一个商家销售统计的横向柱状图,展示商家销售情况。通过开发,将提高数据可视化能力,帮助用户更直观地了解销售数据。目前项目进展顺利,已完成部分开发任务。

一.创建项目

创建

1.npm install  -g @vue/cli

   vue  create  vision

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第1张

2.

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第2张

3.

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第3张

4.版本

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第4张

5.是否使用历史路由

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第5张

6.CSS预处理

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第6张

7.ES标准配置

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第7张

8.啥时候es标准提示-保存文件后

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第8张

9.将配置文件放入单独文件中处理

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第9张

10.需要保留新建项目以上设置

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第10张

11.选择“Use PNPM”或者“Use NPM”

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第11张

12.创建

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第12张

13访问

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第13张

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第14张

删除无用项目代码

1.App.vue

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第15张

2.

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第16张

静态资源引入

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第17张

项目的基本配置

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第18张

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true
})
module.exports = {
  devServer: {
    port: 8888,
    open: true
  }
}

 大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第19张

全局Echarts对象挂载

1.   

   

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第20张

2.

// 将全局的echarts对象挂载到vue的原型对象上

// 别的组件使用 this.$echarts

Vue.prototype.$echarts = window.echarts

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第21张

axios的封装与挂载

1.npm install axios

2.调用

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第22张

// eslint-disable-next-line no-unused-vars
import axios from 'axios'
// 请求基准路径的配置
axios.defaults.baseURL = 'http://127.0.0.1:8888/api'
// 将axios挂载到vue的原型对象上
// 在别的组件 this.$http
Vue.prototype.$http = axios

二.单独图表组件开发

模板

V1

 
    
    


export default {
  data () {
    return {}
  },
  methods: {},
  components: {
  }
}

  

商家销售统计(横向柱状图)

1.组件结构的设计

1.1创建SellerPage.vue

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第23张

 

 
    
    


export default {
  data () {
    return {}
  },
  methods: {},
  components: {
  }
}

  

1.2Seller.vue 呈现图表组件

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第24张



    
      
    
  

export default {
  data () {
    return {
    }
  },
  mounted () {
  },
  // 生命周期
  destroyed () {
  },
  methods: {
  }
}

  
  
1.3router 注入SellerPage文件,路由设置;

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第25张

import Vue from 'vue'
import VueRouter from 'vue-router'
import SellerPage from '@/views/SellerPage.vue'
Vue.use(VueRouter)
const routes = [
  {
    path: '/sellerpage',
    component: SellerPage
  }
]
const router = new VueRouter({
  routes
})
export default router
1.4app.vue 声明路由占位符

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第26张

  
    
    
  



1.5访问sellerpage.vue内容

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第27张

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第28张

1.6通过sellerpage文件访问seller文件

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第29张

 
    
        
    


// eslint-disable-next-line no-unused-vars
import Seller from '@/components/Seller.vue'
export default {
  data () {
    return {}
  },
  methods: {},
  components: {
    // eslint-disable-next-line vue/no-unused-components
    seller: Seller
  }
}

  

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第30张

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第31张

2.布局结构的设计

2.1seller文件设置样式

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第32张



    
      
    
  

export default {
  data () {
    return {
    }
  },
  mounted () {
  },
  // 生命周期
  destroyed () {
  },
  methods: {
  }
}

  
  
2.2sellerpage文件设置样式

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第33张

 
    
        
    


// eslint-disable-next-line no-unused-vars
import Seller from '@/components/Seller.vue'
export default {
  data () {
    return {}
  },
  methods: {},
  components: {
    // eslint-disable-next-line vue/no-unused-components
    seller: Seller
  }
}

  

2.3在asset中编写css文件

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第34张

html,body,#app {
    width: 100%;
    height: 100%;
    padding: 0;
    margin: 0;
    overflow: hidden;
}
.com-page{
    width: 100%;
    height: 100%;
    overflow: hidden;
}
.com-container{
    width: 100%;
    height: 100%;
    overflow: hidden;
}
.com-chart{
    width: 100%;
    height: 100%;
    overflow: hidden;
}
3.4在main.js引入全局样式
// 引入全局的样式文件
import './assets/css/global.less'
 3.5查看

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第35张

3.图表基本功能的实现

3.1initChart 初始化echartsinstance对象

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第36张



    
      
    
  

export default {
  data () {
    return {
      chartInstance: null
    }
  },
  mounted () {
    this.initChart()
  },
  // 生命周期
  destroyed () {
  },
  methods: {
    // 初始化echartsinstance对象
    initChart () {
      this.chartInstance = this.$echarts.init(this.$refs.seller_ref)
    },
    // 获取数据
    getData () {},
    // 更新图表
    updatechart () {}
  }
}

  
  
3.2getData获取数据
3.2.1获取数据

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第37张



    
      
    
  

export default {
  data () {
    return {
      chartInstance: null
    }
  },
  mounted () {
    this.initChart()
    this.getData()
  },
  // 生命周期
  destroyed () {
  },
  methods: {
    // 初始化echartsinstance对象
    initChart () {
      this.chartInstance = this.$echarts.init(this.$refs.seller_ref)
    },
    // 获取数据
    async getData () {
      // http://127.0.0.1:8888/api/seller
      const ret = await this.$http.get('seller')
      console.log(ret)
    },
    // 更新图表
    updatechart () {}
  }
}

  
  

 大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第38张

 3.2.2提取data数据

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第39张

    async getData () {
      // http://127.0.0.1:8888/api/seller
      const { data: ret } = await this.$http.get('seller')
      console.log(ret)
    },

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第40张

3.3updateChart跟新图表显示

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第41张



    
      
    
  

export default {
  data () {
    return {
      chartInstance: null,
      allData: null // 服务器返回的数据
    }
  },
  mounted () {
    this.initChart()
    this.getData()
  },
  // 生命周期
  destroyed () {
  },
  methods: {
    // 初始化echartsinstance对象
    initChart () {
      this.chartInstance = this.$echarts.init(this.$refs.seller_ref)
    },
    // 获取数据
    async getData () {
      // http://127.0.0.1:8888/api/seller
      const { data: ret } = await this.$http.get('seller')
      // console.log(ret)
      this.allData = ret
      // 调用updatechart
      this.updatechart()
    },
    // 更新图表
    updatechart () {
      // y轴
      // eslint-disable-next-line no-undef
      const sellerNames = this.allData.map((item) => {
        return item.name
      })
      // x轴
      // eslint-disable-next-line no-undef
      const sellerValue = this.allData.map((item) => {
        return item.value
      })
      const option = {
        xAxis: {
          type: 'value'
        },
        yAxis: {
          type: 'category',
          data: sellerNames
        },
        series: [
          {
            type: 'bar',
            data: sellerValue
          }
        ]
      }
      this.chartInstance.setOption(option)
    }
  }
}

  
  

 大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第42张

4.动态刷新的实现

4.1数据处理
4.1.1数据从小到大排序

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第43张



    
      
    
  

export default {
  data () {
    return {
      chartInstance: null,
      allData: null // 服务器返回的数据
    }
  },
  mounted () {
    this.initChart()
    this.getData()
  },
  // 生命周期
  destroyed () {
  },
  methods: {
    // 初始化echartsinstance对象
    initChart () {
      this.chartInstance = this.$echarts.init(this.$refs.seller_ref)
    },
    // 获取数据
    async getData () {
      // http://127.0.0.1:8888/api/seller
      const { data: ret } = await this.$http.get('seller')
      // console.log(ret)
      this.allData = ret
      // 对数据排序
      this.allData.sort((a, b) => {
        return a.value - b.value // 从小到大
      })
      // 调用updatechart
      this.updatechart()
    },
    // 更新图表
    updatechart () {
      // y轴
      // eslint-disable-next-line no-undef
      const sellerNames = this.allData.map((item) => {
        return item.name
      })
      // x轴
      // eslint-disable-next-line no-undef
      const sellerValue = this.allData.map((item) => {
        return item.value
      })
      const option = {
        xAxis: {
          type: 'value'
        },
        yAxis: {
          type: 'category',
          data: sellerNames
        },
        series: [
          {
            type: 'bar',
            data: sellerValue
          }
        ]
      }
      this.chartInstance.setOption(option)
    }
  }
}

  
  

大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第44张

4.1.2每五个元素一页
  • currentPage 第几页
  • totaPage 总共几页

    大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第45张

    
    
        
          
        
      
    
    export default {
      data () {
        return {
          chartInstance: null,
          allData: null, // 服务器返回的数据
          currentPage: 1, // 当前显示的页数
          totalPage: 0 // 一共有多少页
        }
      },
      mounted () {
        this.initChart()
        this.getData()
      },
      // 生命周期
      destroyed () {
      },
      methods: {
        // 初始化echartsinstance对象
        initChart () {
          this.chartInstance = this.$echarts.init(this.$refs.seller_ref)
        },
        // 获取数据
        async getData () {
          // http://127.0.0.1:8888/api/seller
          const { data: ret } = await this.$http.get('seller')
          // console.log(ret)
          this.allData = ret
          // 对数据排序
          this.allData.sort((a, b) => {
            return a.value - b.value // 从小到大
          })
          // 每5个元素显示一页
          this.totalPage = this.allData.length % 5 === 0 ? this.allData.length / 5 : this.allData.length / 5 + 1
          // 调用updatechart
          this.updatechart()
        },
        // 更新图表
        updatechart () {
          const start = (this.currentPage - 1) * 5
          const end = this.currentPage * 5
          // eslint-disable-next-line no-unused-vars
          const showData = this.allData.slice(start, end)
          // y轴
          // eslint-disable-next-line no-undef
          const sellerNames = showData.map((item) => {
            return item.name
          })
          // x轴
          // eslint-disable-next-line no-undef
          const sellerValue = showData.map((item) => {
            return item.value
          })
          const option = {
            xAxis: {
              type: 'value'
            },
            yAxis: {
              type: 'category',
              data: sellerNames
            },
            series: [
              {
                type: 'bar',
                data: sellerValue
              }
            ]
          }
          this.chartInstance.setOption(option)
        }
      }
    }
    
      
      
    

     大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第46张

    4.2启动和停止的时机
    4.2.1获取数据之后
    • 启动定时器

      大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第47张

      
      
          
            
          
        
      
      export default {
        data () {
          return {
            chartInstance: null,
            allData: null, // 服务器返回的数据
            currentPage: 1, // 当前显示的页数
            totalPage: 0 // 一共有多少页
          }
        },
        mounted () {
          this.initChart()
          this.getData()
        },
        // 生命周期
        destroyed () {
        },
        methods: {
          // 初始化echartsinstance对象
          initChart () {
            this.chartInstance = this.$echarts.init(this.$refs.seller_ref)
          },
          // 获取数据
          async getData () {
            // http://127.0.0.1:8888/api/seller
            const { data: ret } = await this.$http.get('seller')
            // console.log(ret)
            this.allData = ret
            // 对数据排序
            this.allData.sort((a, b) => {
              return a.value - b.value // 从小到大
            })
            // 每5个元素显示一页
            this.totalPage = this.allData.length % 5 === 0 ? this.allData.length / 5 : this.allData.length / 5 + 1
            // 调用updatechart
            this.updatechart()
            // 启动定时器
            this.startInterval()
          },
          // 更新图表
          updatechart () {
            const start = (this.currentPage - 1) * 5
            const end = this.currentPage * 5
            // eslint-disable-next-line no-unused-vars
            const showData = this.allData.slice(start, end)
            // y轴
            // eslint-disable-next-line no-undef
            const sellerNames = showData.map((item) => {
              return item.name
            })
            // x轴
            // eslint-disable-next-line no-undef
            const sellerValue = showData.map((item) => {
              return item.value
            })
            const option = {
              xAxis: {
                type: 'value'
              },
              yAxis: {
                type: 'category',
                data: sellerNames
              },
              series: [
                {
                  type: 'bar',
                  data: sellerValue
                }
              ]
            }
            this.chartInstance.setOption(option)
          },
          startInterval () {
            setInterval(() => {
              this.currentPage++
              if (this.currentPage > this.totalPage) {
                this.currentPage = 1
              }
              this.updatechart()
            }, 3000)
          }
        }
      }
      
        
        
      

       大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第48张

      • 关闭定时器 

        大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第49张

        
        
            
              
            
          
        
        export default {
          data () {
            return {
              chartInstance: null,
              allData: null, // 服务器返回的数据
              currentPage: 1, // 当前显示的页数
              totalPage: 0 // 一共有多少页
            }
          },
          mounted () {
            this.initChart()
            this.getData()
          },
          // 生命周期
          destroyed () {
            clearInterval(this.timerId)
          },
          methods: {
            // 初始化echartsinstance对象
            initChart () {
              this.chartInstance = this.$echarts.init(this.$refs.seller_ref)
            },
            // 获取数据
            async getData () {
              // http://127.0.0.1:8888/api/seller
              const { data: ret } = await this.$http.get('seller')
              // console.log(ret)
              this.allData = ret
              // 对数据排序
              this.allData.sort((a, b) => {
                return a.value - b.value // 从小到大
              })
              // 每5个元素显示一页
              this.totalPage = this.allData.length % 5 === 0 ? this.allData.length / 5 : this.allData.length / 5 + 1
              // 调用updatechart
              this.updatechart()
              // 启动定时器
              this.startInterval()
            },
            // 更新图表
            updatechart () {
              const start = (this.currentPage - 1) * 5
              const end = this.currentPage * 5
              // eslint-disable-next-line no-unused-vars
              const showData = this.allData.slice(start, end)
              // y轴
              // eslint-disable-next-line no-undef
              const sellerNames = showData.map((item) => {
                return item.name
              })
              // x轴
              // eslint-disable-next-line no-undef
              const sellerValue = showData.map((item) => {
                return item.value
              })
              const option = {
                xAxis: {
                  type: 'value'
                },
                yAxis: {
                  type: 'category',
                  data: sellerNames
                },
                series: [
                  {
                    type: 'bar',
                    data: sellerValue
                  }
                ]
              }
              this.chartInstance.setOption(option)
            },
            startInterval () {
              if (this.timerId) {
                clearInterval(this.timerId)
              }
              this.timerId = setInterval(() => {
                this.currentPage++
                if (this.currentPage > this.totalPage) {
                  this.currentPage = 1
                }
                this.updatechart()
              }, 3000)
            }
          }
        }
        
          
          
        
        4.2.2鼠标移出图表时启动定时器

        大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第50张

        
        
            
              
            
          
        
        export default {
          data () {
            return {
              chartInstance: null,
              allData: null, // 服务器返回的数据
              currentPage: 1, // 当前显示的页数
              totalPage: 0 // 一共有多少页
            }
          },
          mounted () {
            this.initChart()
            this.getData()
          },
          // 生命周期
          destroyed () {
            clearInterval(this.timerId)
          },
          methods: {
            // 初始化echartsinstance对象
            initChart () {
              this.chartInstance = this.$echarts.init(this.$refs.seller_ref)
            },
            // 获取数据
            async getData () {
              // http://127.0.0.1:8888/api/seller
              const { data: ret } = await this.$http.get('seller')
              // console.log(ret)
              this.allData = ret
              // 对数据排序
              this.allData.sort((a, b) => {
                return a.value - b.value // 从小到大
              })
              // 每5个元素显示一页
              this.totalPage = this.allData.length % 5 === 0 ? this.allData.length / 5 : this.allData.length / 5 + 1
              // 调用updatechart
              this.updatechart()
              // 启动定时器
              this.startInterval()
            },
            // 更新图表
            updatechart () {
              const start = (this.currentPage - 1) * 5
              const end = this.currentPage * 5
              // eslint-disable-next-line no-unused-vars
              const showData = this.allData.slice(start, end)
              // y轴
              // eslint-disable-next-line no-undef
              const sellerNames = showData.map((item) => {
                return item.name
              })
              // x轴
              // eslint-disable-next-line no-undef
              const sellerValue = showData.map((item) => {
                return item.value
              })
              const option = {
                xAxis: {
                  type: 'value'
                },
                yAxis: {
                  type: 'category',
                  data: sellerNames
                },
                series: [
                  {
                    type: 'bar',
                    data: sellerValue
                  }
                ]
              }
              this.chartInstance.setOption(option)
              // 对图表对象进行鼠标事件的监听
              this.chartInstance.on('mouseover', () => {
                clearInterval(this.timerId)
              })
              this.chartInstance.on('mouseout', () => {
                this.startInterval()
              })
            },
            startInterval () {
              if (this.timerId) {
                clearInterval(this.timerId)
              }
              this.timerId = setInterval(() => {
                this.currentPage++
                if (this.currentPage > this.totalPage) {
                  this.currentPage = 1
                }
                this.updatechart()
              }, 3000)
            }
          }
        }
        
          
          
        
        4.3边界值的处理

        大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第51张

        
        
            
              
            
          
        
        export default {
          data () {
            return {
              chartInstance: null,
              allData: null, // 服务器返回的数据
              currentPage: 1, // 当前显示的页数
              totalPage: 0 // 一共有多少页
            }
          },
          mounted () {
            this.initChart()
            this.getData()
          },
          // 生命周期
          destroyed () {
            clearInterval(this.timerId)
          },
          methods: {
            // 初始化echartsinstance对象
            initChart () {
              this.chartInstance = this.$echarts.init(this.$refs.seller_ref)
            },
            // 获取数据
            async getData () {
              // http://127.0.0.1:8888/api/seller
              const { data: ret } = await this.$http.get('seller')
              // console.log(ret)
              this.allData = ret
              // 对数据排序
              this.allData.sort((a, b) => {
                return a.value - b.value // 从小到大
              })
              // 每5个元素显示一页
              this.totalPage = this.allData.length % 5 === 0 ? this.allData.length / 5 : this.allData.length / 5 + 1
              // 调用updatechart
              this.updatechart()
              // 启动定时器
              this.startInterval()
            },
            // 更新图表
            updatechart () {
              const start = (this.currentPage - 1) * 5
              const end = this.currentPage * 5
              // eslint-disable-next-line no-unused-vars
              const showData = this.allData.slice(start, end)
              // y轴
              // eslint-disable-next-line no-undef
              const sellerNames = showData.map((item) => {
                return item.name
              })
              // x轴
              // eslint-disable-next-line no-undef
              const sellerValue = showData.map((item) => {
                return item.value
              })
              const option = {
                xAxis: {
                  type: 'value'
                },
                yAxis: {
                  type: 'category',
                  data: sellerNames
                },
                series: [
                  {
                    type: 'bar',
                    data: sellerValue
                  }
                ]
              }
              this.chartInstance.setOption(option)
              // 对图表对象进行鼠标事件的监听
              this.chartInstance.on('mouseover', () => {
                clearInterval(this.timerId)
              })
              this.chartInstance.on('mouseout', () => {
                this.startInterval()
              })
            },
            startInterval () {
              if (this.timerId) {
                clearInterval(this.timerId)
              }
              this.timerId = setInterval(() => {
                this.currentPage++
                if (this.currentPage > this.totalPage) {
                  this.currentPage = 1
                }
                this.updatechart()
              }, 3000)
            }
          }
        }
        
          
          
        

        5.UI调整

        5.1主题使用

        大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第52张

        
          
            
            
            
            
            
          
          
            
              We're sorry but  doesn't work properly without JavaScript enabled. Please enable it to continue.
            
            
            
            
            
            
                
          
        
        
        
        
            
              
            
          
        
        export default {
          data () {
            return {
              chartInstance: null,
              allData: null, // 服务器返回的数据
              currentPage: 1, // 当前显示的页数
              totalPage: 0 // 一共有多少页
            }
          },
          mounted () {
            this.initChart()
            this.getData()
          },
          // 生命周期
          destroyed () {
            clearInterval(this.timerId)
          },
          methods: {
            // 初始化echartsinstance对象
            initChart () {
              this.chartInstance = this.$echarts.init(this.$refs.seller_ref, 'chalk')
            },
            // 获取数据
            async getData () {
              // http://127.0.0.1:8888/api/seller
              const { data: ret } = await this.$http.get('seller')
              // console.log(ret)
              this.allData = ret
              // 对数据排序
              this.allData.sort((a, b) => {
                return a.value - b.value // 从小到大
              })
              // 每5个元素显示一页
              this.totalPage = this.allData.length % 5 === 0 ? this.allData.length / 5 : this.allData.length / 5 + 1
              // 调用updatechart
              this.updatechart()
              // 启动定时器
              this.startInterval()
            },
            // 更新图表
            updatechart () {
              const start = (this.currentPage - 1) * 5
              const end = this.currentPage * 5
              // eslint-disable-next-line no-unused-vars
              const showData = this.allData.slice(start, end)
              // y轴
              // eslint-disable-next-line no-undef
              const sellerNames = showData.map((item) => {
                return item.name
              })
              // x轴
              // eslint-disable-next-line no-undef
              const sellerValue = showData.map((item) => {
                return item.value
              })
              const option = {
                xAxis: {
                  type: 'value'
                },
                yAxis: {
                  type: 'category',
                  data: sellerNames
                },
                series: [
                  {
                    type: 'bar',
                    data: sellerValue
                  }
                ]
              }
              this.chartInstance.setOption(option)
              // 对图表对象进行鼠标事件的监听
              this.chartInstance.on('mouseover', () => {
                clearInterval(this.timerId)
              })
              this.chartInstance.on('mouseout', () => {
                this.startInterval()
              })
            },
            startInterval () {
              if (this.timerId) {
                clearInterval(this.timerId)
              }
              this.timerId = setInterval(() => {
                this.currentPage++
                if (this.currentPage > this.totalPage) {
                  this.currentPage = 1
                }
                this.updatechart()
              }, 3000)
            }
          }
        }
        
          
          
        

        大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第53张

        5.2图表的圆角

        大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第54张

        html,body,#app {
            width: 100%;
            height: 100%;
            padding: 0;
            margin: 0;
            overflow: hidden;
        }
        .com-page{
            width: 100%;
            height: 100%;
            overflow: hidden;
        }
        .com-container{
            width: 100%;
            height: 100%;
            overflow: hidden;
        }
        .com-chart{
            width: 100%;
            height: 100%;
            overflow: hidden;
        }
        //图表圆角
        canvas {
            border-radius: 20px;
          }
        

        大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第55张

        5.3图表的标题

        大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第56张

                title: {
                  text: '▎商家销售统计',
                  textStyle: {
                    fontSize: 66
                  },

         大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第57张

        5.4坐标轴的位置

        大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第58张

                grid: {
                  top: '20%',
                  left: '3%',
                  right: '6%',
                  bottom: '3%',
                  containLabel: true // 距离是包含坐标轴上的文字
                },

         大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第59张

        5.5柱状图条目
        • 宽度

          大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第60张

                  series: [
                    {
                      type: 'bar',
                      data: sellerValue,
                      barWidth: 66
                    }
                  ]

          大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第61张

          • 文字

            大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第62张

                        label: {
                          show: true,
                          position: 'right',
                          textStyle: {
                            color: 'white'
                          }
                        }

            大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第63张

            • 右边圆角

              大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第64张

                          itemStyle: {
                            barBorderRadius: [0, 33, 33, 0]
                          }

              大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第65张

              • 颜色渐变

                大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第66张

                              // 指明颜色渐变的方向
                              // 指明不同百分比之下颜色的值
                              color: new this.$echarts.graphic.LinearGradient(0, 0, 1, 0, [
                                // 百分之0状态之下的颜色值
                                {
                                  offset: 0,
                                  color: '#5052EE'
                                },
                                // 百分之100状态之下的颜色值
                                {
                                  offset: 1,
                                  color: '#AB6EE5'
                                }
                              ])

                大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第67张

                • 背景

                  大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第68张

                          tooltip: {
                            trigger: 'axis', // 鼠标移动坐标轴触发
                            axisPointer: { // 触发的样式
                              type: 'line', // 类型
                              z: 0, // 层级
                              lineStyle: {
                                width: 66, // 宽度
                                color: '#2D3443' // 颜色
                              }
                            }
                          },

                   大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第69张

                  6.拆分图表的option

                  保留拆分前代码
                  
                  
                      
                        
                      
                    
                  
                  export default {
                    data () {
                      return {
                        chartInstance: null,
                        allData: null, // 服务器返回的数据
                        currentPage: 1, // 当前显示的页数
                        totalPage: 0 // 一共有多少页
                      }
                    },
                    mounted () {
                      this.initChart()
                      this.getData()
                    },
                    // 生命周期
                    destroyed () {
                      clearInterval(this.timerId)
                    },
                    methods: {
                      // 初始化echartsinstance对象
                      initChart () {
                        this.chartInstance = this.$echarts.init(this.$refs.seller_ref, 'chalk')
                      },
                      // 获取数据
                      async getData () {
                        // http://127.0.0.1:8888/api/seller
                        const { data: ret } = await this.$http.get('seller')
                        // console.log(ret)
                        this.allData = ret
                        // 对数据排序
                        this.allData.sort((a, b) => {
                          return a.value - b.value // 从小到大
                        })
                        // 每5个元素显示一页
                        this.totalPage = this.allData.length % 5 === 0 ? this.allData.length / 5 : this.allData.length / 5 + 1
                        // 调用updatechart
                        this.updatechart()
                        // 启动定时器
                        this.startInterval()
                      },
                      // 更新图表
                      updatechart () {
                        const start = (this.currentPage - 1) * 5
                        const end = this.currentPage * 5
                        // eslint-disable-next-line no-unused-vars
                        const showData = this.allData.slice(start, end)
                        // y轴
                        // eslint-disable-next-line no-undef
                        const sellerNames = showData.map((item) => {
                          return item.name
                        })
                        // x轴
                        // eslint-disable-next-line no-undef
                        const sellerValue = showData.map((item) => {
                          return item.value
                        })
                        const option = {
                          title: {
                            text: '▎商家销售统计',
                            textStyle: {
                              fontSize: 66
                            },
                            left: 20,
                            top: 20
                          },
                          grid: {
                            top: '20%',
                            left: '3%',
                            right: '6%',
                            bottom: '3%',
                            containLabel: true // 距离是包含坐标轴上的文字
                          },
                          xAxis: {
                            type: 'value'
                          },
                          yAxis: {
                            type: 'category',
                            data: sellerNames
                          },
                          tooltip: {
                            trigger: 'axis', // 鼠标移动坐标轴触发
                            axisPointer: { // 触发的样式
                              type: 'line', // 类型
                              z: 0, // 层级
                              lineStyle: {
                                width: 66,
                                color: '#2D3443' // 颜色
                              }
                            }
                          },
                          series: [
                            {
                              type: 'bar',
                              data: sellerValue,
                              barWidth: 66,
                              label: {
                                show: true,
                                position: 'right',
                                textStyle: {
                                  color: 'white'
                                }
                              },
                              itemStyle: {
                                barBorderRadius: [0, 33, 33, 0],
                                // 指明颜色渐变的方向
                                // 指明不同百分比之下颜色的值
                                color: new this.$echarts.graphic.LinearGradient(0, 0, 1, 0, [
                                  // 百分之0状态之下的颜色值
                                  {
                                    offset: 0,
                                    color: '#5052EE'
                                  },
                                  // 百分之100状态之下的颜色值
                                  {
                                    offset: 1,
                                    color: '#AB6EE5'
                                  }
                                ])
                              }
                            }
                          ]
                        }
                        this.chartInstance.setOption(option)
                        // 对图表对象进行鼠标事件的监听
                        this.chartInstance.on('mouseover', () => {
                          clearInterval(this.timerId)
                        })
                        this.chartInstance.on('mouseout', () => {
                          this.startInterval()
                        })
                      },
                      startInterval () {
                        if (this.timerId) {
                          clearInterval(this.timerId)
                        }
                        this.timerId = setInterval(() => {
                          this.currentPage++
                          if (this.currentPage > this.totalPage) {
                            this.currentPage = 1
                          }
                          this.updatechart()
                        }, 3000)
                      }
                    }
                  }
                  
                    
                    
                  

                   大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第70张

                  6.1初始化配置initOption

                  大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第71张

                        // 对图表初始化配置的控制
                        const initOption = {
                          title: {
                            text: '▎商家销售统计',
                            textStyle: {
                              fontSize: 66
                            },
                            left: 20,
                            top: 20
                          },
                          grid: {
                            top: '20%',
                            left: '3%',
                            right: '6%',
                            bottom: '3%',
                            containLabel: true // 距离是包含坐标轴上的文字
                          },
                          xAxis: {
                            type: 'value'
                          },
                          yAxis: {
                            type: 'category'
                          },
                          tooltip: {
                            trigger: 'axis', // 鼠标移动坐标轴触发
                            axisPointer: { // 触发的样式
                              type: 'line', // 类型
                              z: 0, // 层级
                              lineStyle: {
                                width: 66,
                                color: '#2D3443' // 颜色
                              }
                            }
                          },
                          series: [
                            {
                              type: 'bar',
                              barWidth: 66,
                              label: {
                                show: true,
                                position: 'right',
                                textStyle: {
                                  color: 'white'
                                }
                              },
                              itemStyle: {
                                barBorderRadius: [0, 33, 33, 0],
                                // 指明颜色渐变的方向
                                // 指明不同百分比之下颜色的值
                                color: new this.$echarts.graphic.LinearGradient(0, 0, 1, 0, [
                                  // 百分之0状态之下的颜色值
                                  {
                                    offset: 0,
                                    color: '#5052EE'
                                  },
                                  // 百分之100状态之下的颜色值
                                  {
                                    offset: 1,
                                    color: '#AB6EE5'
                                  }
                                ])
                              }
                            }
                          ]
                        }
                        this.chartInstance.setOption(initOption)

                   

                  6.2获取数据之后的配置dataOption

                  大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第72张

                        const dataOption = {
                          yAxis: {
                            data: sellerNames
                          },
                          series: [
                            {
                              data: sellerValue
                            }
                          ]
                        }
                        this.chartInstance.setOption(dataOption)
                  6.3分辨率适配的配置adapterOption
                  •  监听窗口大小变化的事件

                    大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第73张

                    • 获取图表容器的宽度

                      大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第74张

                      • 设置新的option
                        • 标题文字大小
                        • 柱的宽度
                        • 柱的圆角
                        • 阴影背景宽度

                        大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第75张

                         

                        • 图表实例对象resize

                          大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第76张

                           取消监听大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第77张

                            // 生命周期
                            destroyed () {
                              clearInterval(this.timerId)
                              // 在组件销毁的时候, 需要将监听器取消掉
                              window.removeEventListener('resize', this.screenAdapter)
                            },

                           代码

                            mounted () {
                              this.initChart()
                              this.getData()
                              // 窗口发生变动自动调用screenAdapter方法
                              window.addEventListener('resize', this.screenAdapter)
                              // 在页面加载完成的时候, 主动进行屏幕的适配
                              this.screenAdapter()
                            },

                           

                            // 生命周期
                            destroyed () {
                              clearInterval(this.timerId)
                              // 在组件销毁的时候, 需要将监听器取消掉
                              window.removeEventListener('resize', this.screenAdapter)
                            },
                              // 当浏览器的大小发生变化的时候, 会调用的方法, 来完成屏幕的适配
                              screenAdapter () {
                                // console.log(this.$refs.seller_ref.offsetWidth)
                                const titleFontSize = this.$refs.seller_ref.offsetWidth / 100 * 3.6
                                // 和分辨率大小相关的配置项
                                const adapterOption = {
                                  title: {
                                    textStyle: {
                                      fontSize: titleFontSize
                                    }
                                  },
                                  tooltip: {
                                    axisPointer: {
                                      lineStyle: {
                                        width: titleFontSize
                                      }
                                    }
                                  },
                                  series: [
                                    {
                                      barWidth: titleFontSize,
                                      itemStyle: {
                                        barBorderRadius: [0, titleFontSize / 2, titleFontSize / 2, 0]
                                      }
                                    }
                                  ]
                                }
                                this.chartInstance.setOption(adapterOption)
                                // 手动的调用图表对象的resize 才能产生效果
                                this.chartInstance.resize()
                              }
                          拆分后代码 
                          
                          
                              
                                
                              
                            
                          
                          export default {
                            data () {
                              return {
                                chartInstance: null,
                                allData: null, // 服务器返回的数据
                                currentPage: 1, // 当前显示的页数
                                totalPage: 0 // 一共有多少页
                              }
                            },
                            mounted () {
                              this.initChart()
                              this.getData()
                              // 窗口发生变动自动调用screenAdapter方法
                              window.addEventListener('resize', this.screenAdapter)
                              // 在页面加载完成的时候, 主动进行屏幕的适配
                              this.screenAdapter()
                            },
                            // 生命周期
                            destroyed () {
                              clearInterval(this.timerId)
                              // 在组件销毁的时候, 需要将监听器取消掉
                              window.removeEventListener('resize', this.screenAdapter)
                            },
                            methods: {
                              // 初始化echartsinstance对象
                              initChart () {
                                this.chartInstance = this.$echarts.init(this.$refs.seller_ref, 'chalk')
                                // 对图表初始化配置的控制
                                const initOption = {
                                  title: {
                                    text: '▎商家销售统计',
                                    left: 20,
                                    top: 20
                                  },
                                  grid: {
                                    top: '20%',
                                    left: '3%',
                                    right: '6%',
                                    bottom: '3%',
                                    containLabel: true // 距离是包含坐标轴上的文字
                                  },
                                  xAxis: {
                                    type: 'value'
                                  },
                                  yAxis: {
                                    type: 'category'
                                  },
                                  tooltip: {
                                    trigger: 'axis', // 鼠标移动坐标轴触发
                                    axisPointer: { // 触发的样式
                                      type: 'line', // 类型
                                      z: 0, // 层级
                                      lineStyle: {
                                        color: '#2D3443' // 颜色
                                      }
                                    }
                                  },
                                  series: [
                                    {
                                      type: 'bar',
                                      label: {
                                        show: true,
                                        position: 'right',
                                        textStyle: {
                                          color: 'white'
                                        }
                                      },
                                      itemStyle: {
                                        // 指明颜色渐变的方向
                                        // 指明不同百分比之下颜色的值
                                        color: new this.$echarts.graphic.LinearGradient(0, 0, 1, 0, [
                                          // 百分之0状态之下的颜色值
                                          {
                                            offset: 0,
                                            color: '#5052EE'
                                          },
                                          // 百分之100状态之下的颜色值
                                          {
                                            offset: 1,
                                            color: '#AB6EE5'
                                          }
                                        ])
                                      }
                                    }
                                  ]
                                }
                                this.chartInstance.setOption(initOption)
                              },
                              // 获取数据
                              async getData () {
                                // http://127.0.0.1:8888/api/seller
                                const { data: ret } = await this.$http.get('seller')
                                // console.log(ret)
                                this.allData = ret
                                // 对数据排序
                                this.allData.sort((a, b) => {
                                  return a.value - b.value // 从小到大
                                })
                                // 每5个元素显示一页
                                this.totalPage = this.allData.length % 5 === 0 ? this.allData.length / 5 : this.allData.length / 5 + 1
                                // 调用updatechart
                                this.updatechart()
                                // 启动定时器
                                this.startInterval()
                              },
                              // 更新图表
                              updatechart () {
                                const start = (this.currentPage - 1) * 5
                                const end = this.currentPage * 5
                                // eslint-disable-next-line no-unused-vars
                                const showData = this.allData.slice(start, end)
                                // y轴
                                // eslint-disable-next-line no-undef
                                const sellerNames = showData.map((item) => {
                                  return item.name
                                })
                                // x轴
                                // eslint-disable-next-line no-undef
                                const sellerValue = showData.map((item) => {
                                  return item.value
                                })
                                const dataOption = {
                                  yAxis: {
                                    data: sellerNames
                                  },
                                  series: [
                                    {
                                      data: sellerValue
                                    }
                                  ]
                                }
                                this.chartInstance.setOption(dataOption)
                                // 对图表对象进行鼠标事件的监听
                                this.chartInstance.on('mouseover', () => {
                                  clearInterval(this.timerId)
                                })
                                this.chartInstance.on('mouseout', () => {
                                  this.startInterval()
                                })
                              },
                              startInterval () {
                                if (this.timerId) {
                                  clearInterval(this.timerId)
                                }
                                this.timerId = setInterval(() => {
                                  this.currentPage++
                                  if (this.currentPage > this.totalPage) {
                                    this.currentPage = 1
                                  }
                                  this.updatechart()
                                }, 3000)
                              },
                              // 当浏览器的大小发生变化的时候, 会调用的方法, 来完成屏幕的适配
                              screenAdapter () {
                                // console.log(this.$refs.seller_ref.offsetWidth)
                                const titleFontSize = this.$refs.seller_ref.offsetWidth / 100 * 3.6
                                // 和分辨率大小相关的配置项
                                const adapterOption = {
                                  title: {
                                    textStyle: {
                                      fontSize: titleFontSize
                                    }
                                  },
                                  tooltip: {
                                    axisPointer: {
                                      lineStyle: {
                                        width: titleFontSize
                                      }
                                    }
                                  },
                                  series: [
                                    {
                                      barWidth: titleFontSize,
                                      itemStyle: {
                                        barBorderRadius: [0, titleFontSize / 2, titleFontSize / 2, 0]
                                      }
                                    }
                                  ]
                                }
                                this.chartInstance.setOption(adapterOption)
                                // 手动的调用图表对象的resize 才能产生效果
                                this.chartInstance.resize()
                              }
                            }
                          }
                          
                            
                            
                          

                          大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第78张

                           大数据BI可视化(Echarts组件)项目开发-熟悉结合Vue开发图表组件7.0附带1/6商家销售统计(横向柱状图),大数据BI可视化项目,Vue与Echarts结合开发图表组件——商家销售统计横向柱状图开发实战 第79张

                           总结:

                                  本次文章讲解项目创建以及1/6商家销售统计(横向柱状图)组件开发,请关注后续指标开发,最终整合大屏可视化


0
收藏0
文章版权声明:除非注明,否则均为VPS857原创文章,转载或复制请以超链接形式并注明出处。

相关阅读

  • 【研发日记】Matlab/Simulink自动生成代码(二)——五种选择结构实现方法,Matlab/Simulink自动生成代码的五种选择结构实现方法(二),Matlab/Simulink自动生成代码的五种选择结构实现方法详解(二)
  • 超级好用的C++实用库之跨平台实用方法,跨平台实用方法的C++实用库超好用指南,C++跨平台实用库使用指南,超好用实用方法集合,C++跨平台实用库超好用指南,方法与技巧集合
  • 【动态规划】斐波那契数列模型(C++),斐波那契数列模型(C++实现与动态规划解析),斐波那契数列模型解析与C++实现(动态规划)
  • 【C++】,string类底层的模拟实现,C++中string类的模拟底层实现探究
  • uniapp 小程序实现微信授权登录(前端和后端),Uniapp小程序实现微信授权登录全流程(前端后端全攻略),Uniapp小程序微信授权登录全流程攻略,前端后端全指南
  • Vue脚手架的安装(保姆级教程),Vue脚手架保姆级安装教程,Vue脚手架保姆级安装指南,Vue脚手架保姆级安装指南,从零开始教你如何安装Vue脚手架
  • 如何在树莓派 Raspberry Pi中本地部署一个web站点并实现无公网IP远程访问,树莓派上本地部署Web站点及无公网IP远程访问指南,树莓派部署Web站点及无公网IP远程访问指南,本地部署与远程访问实践,树莓派部署Web站点及无公网IP远程访问实践指南,树莓派部署Web站点及无公网IP远程访问实践指南,本地部署与远程访问详解,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南。
  • vue2技术栈实现AI问答机器人功能(流式与非流式两种接口方法),Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法探究,Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法详解
  • 发表评论

    快捷回复:表情:
    评论列表 (暂无评论,0人围观)

    还没有评论,来说两句吧...

    目录[+]

    取消
    微信二维码
    微信二维码
    支付宝二维码