最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue?echarts實例項目商家銷量統(tǒng)計圖實現(xiàn)詳解

 更新時間:2022年09月23日 17:09:07   作者:benlalagang  
Echarts,它是一個與框架無關的?JS?圖表庫,但是它基于Js,這樣很多框架都能使用它,例如Vue,估計IONIC也能用,因為我的習慣,每次新嘗試做一個功能的時候,總要新創(chuàng)建個小項目,做做Demo

總體效果如圖

組件結(jié)構(gòu)設計

SellerPage.vue

<!--針對于/sellerpage 這條路徑顯示 測試顯示組件-->
<template>
<div class="comP1">
  <Seller></Seller>
</div>
</template>
<script>
  import Seller from "@/components/Seller";
  export default {
    name: "SellerPage",
    components:{Seller}
  }
</script>
<style scoped>
</style>

Seller.vue

<!-- 顯示商家銷量統(tǒng)計的圖表 -->
<template>
<div class="comP2" ref="seller_1"></div>
</template>
<script>
export default {
data () {
return {}
},
methods: {}
}
</script>
<style lang="less" scoped>
</style>

接下來就在 Seller.vue 搞事情了

在mounted生命周期中初始化 echartsInstance 對象

因為在組件掛載到頁面上 echarts 才能找到具體的DOM渲染

methods 里定義 initChart 方法this.$refs.seller_1 找到具體盒子

this.theme 主題 來自于 Vuex 使用映射快捷引入

import {mapState} from "vuex";
computed:{
    ...mapState(['theme'])
},

然后就是設置配置項 在之前的基礎都有講到過

新增了柱狀圖漸變設置 可以詳看注釋

鼠標移入和移出時間 用來停止和開啟定時器 后面會用到

      methods:{
     // 初始化echarts 實例對象
      initChart(){
        this.chartsInstance = this.$echarts.init(this.$refs.seller_1,this.theme)
        const initOption = {
            title:{
                text:'▎銷售業(yè)績統(tǒng)計',
                left:20,
                top:15
            },
            grid:{
                top: '24%',
                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,// 顯示柱內(nèi)數(shù)值
                        position:'right',// 數(shù)值顯示位置
                        textStyle: {
                            color:'#fff'// 數(shù)值顯示顏色
                        }
                    },
                    itemStyle:{
                        // 設置漸變 x1,y1,x2,y2(指明漸變的方向) [{指明不同百分比下顏色的值}]
                        color:new this.$echarts.graphic.LinearGradient(0,0,1,0,[
                            {
                                offset:0,
                                color:'#5052ee'
                            },
                            {
                                offset: 1,
                                color: '#ab6ee5'
                            }
                        ])
                    }
                },
            ]
        }
          this.chartsInstance.setOption(initOption)
        // 對圖表進行 鼠標移入移出 事件的監(jiān)聽
        this.chartsInstance.on('mouseover',()=>{
            clearInterval(this.timerID)
        })
        this.chartsInstance.on('mouseout',()=>{
            this.startInterval()
        })
      },
}

發(fā)送請求獲取對應的數(shù)據(jù)并進行相應操作

使用到的data:

    data(){
      return{
        chartsInstance:null, 圖表的實例對象 初始化后賦值給它
        allData:null, 請求過來的數(shù)據(jù)
        currentPage:1, 當前頁碼 定時器進行改變 來截取哪些數(shù)據(jù)展示
        totalPage:0, 總頁數(shù)
        timerID:null 定時器的ID 用于啟停 
      }
    },

直接使用 注冊的 axios =>$http.get 來獲取 并通過 async await 簡化 解構(gòu)出來

進行 sort 排序操作

計算出 每頁顯示5條信息的情況下 總頁數(shù)是多少 能被5整除就直接用 整除不了就再加一頁

     async getData(){
        const {data:res} = await this.$http.get('seller')
        this.allData = res
        // 對數(shù)據(jù)進行排序
        this.allData.sort((a,b) =>{
            return a.value - b.value // 從小到大排序
        })
        // 每五個數(shù)據(jù) 顯示一頁
        this.totalPage = this.allData.length % 5 === 0 ? this.allData.length / 5 : Math.floor(this.allData.length / 5) + 1
        this.updateChart()
        this.startInterval()
      }

數(shù)據(jù)和頁碼轉(zhuǎn)存到 data 里了 可以更新設置 把圖表渲染出來

當期頁碼默認是1 就截取 0-5的索引

在使用 map 生成新的數(shù)組 用于 x軸 和 y軸

最后更新配置項 配置項會自動整合

     // 更新圖表
      updateChart(){
        const start = (this.currentPage - 1) * 5
        const end = this. currentPage * 5
        const showData = this.allData.slice(start,end) // slice 截取 不包括 end
        const sellerNames = showData.map((item) =>{
          return item.name
        })
        const sellerValues = showData.map((item) =>{
          return item.value
        })
        const dataOption = {
            yAxis:{data:sellerNames},
            series:[{data:sellerValues}]
        }
        this.chartsInstance.setOption(dataOption)
      },

當?shù)谝豁摰臄?shù)據(jù)展示出來時就可以開啟定時器了

開始之前先清除之前的定時器(來回切換頁面后 回到最初的數(shù)據(jù))

頁碼累計相加 到最大值再返回到1

改變 當前頁的同時 調(diào)用更新圖表數(shù)據(jù)的方法

鼠標移入移出 啟停定時器的方法 在注冊實例的時候已經(jīng)添加

      // 開啟定時器
      startInterval(){
          if (this.timerID){
              clearInterval(this.timerID)
          }
          this.timerID = setInterval(()=>{
              this.currentPage++
              if (this.currentPage > this.totalPage){
                  this.currentPage = 1
              }
              this.updateChart()
          },3600)
      },

小細節(jié)

xAxis:{
    type:'value',
    // 細節(jié)處理 固定x軸的最大值
    max:this.allData[this.allData.length -1].value
},

當窗口尺寸發(fā)生變化時的操作

自己定義一個 合適 簡易的 rem :當前窗口柵格化100份 * 3.6

根據(jù)這個數(shù)據(jù) 設定 標題大小 提示文字大小 柱狀圖的寬度和 圓角尺寸

初始化頁面時 調(diào)用一次 之后 跟隨窗口事件調(diào)用

mounted() {
  window.addEventListener('resize',this.screenAdapter)
  this.screenAdapter()
},
      // 當瀏覽器寬度發(fā)生變化時
      screenAdapter(){
        const titleFontSize = this.$refs.seller_1.offsetWidth / 100 * 3.6
        // 分辨率改變時更新的配置
        const adapterOption = {
            title:{
                textStyle:{
                    fontSize: titleFontSize
                }
            },
            tooltip:{
                axisPointer:{
                    lineStyle:{
                        width:titleFontSize,
                    }
                }
            },
            series:[
                {
                    type:'bar', // 柱狀圖
                    barWidth:titleFontSize,// 柱狀寬度
                    itemStyle:{
                        barBorderRadius:[0,titleFontSize/2,titleFontSize/2,0],// 柱狀的圓角
                    }
                },
            ]
        }
        this.chartsInstance.setOption(adapterOption)
        this.chartsInstance.resize()
      }

到此這篇關于Vue echarts實例項目商家銷量統(tǒng)計圖實現(xiàn)詳解的文章就介紹到這了,更多相關Vue 銷量統(tǒng)計圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • vue-resource post數(shù)據(jù)時碰到Django csrf問題的解決

    vue-resource post數(shù)據(jù)時碰到Django csrf問題的解決

    這篇文章主要介紹了vue-resource post數(shù)據(jù)時碰到Django csrf問題的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Vue.js 2.0 移動端拍照壓縮圖片預覽及上傳實例

    Vue.js 2.0 移動端拍照壓縮圖片預覽及上傳實例

    這篇文章主要介紹了Vue.js 2.0 移動端拍照壓縮圖片預覽及上傳實例,本來移動端開發(fā)H5應用,準備將mui框架和Vue.js+vue-router+vuex 全家桶結(jié)合起來使用
    2017-04-04
  • Vue Ref全家桶具體用法詳解

    Vue Ref全家桶具體用法詳解

    ref用來輔助我們獲取DOM元素或組件的引用實例對象,每個vue的組件實例上,都包含一個refs對象,里面存儲著對應的DOM元素或組件的引用,默認情況下,組件的refs指向一個空對象
    2023-03-03
  • vue二次封裝一個高頻可復用組件的全過程

    vue二次封裝一個高頻可復用組件的全過程

    在開發(fā)Vue項目我們一般使用第三方UI組件庫進行開發(fā),但是這些組件提供的接口并不一定滿足我們的需求,這時我們可以通過對組件庫組件的二次封裝,來滿足我們特殊的需求,這篇文章主要給大家介紹了關于vue二次封裝一個高頻可復用組件的相關資料,需要的朋友可以參考下
    2022-10-10
  • 詳解vue項目中如何加載markdown

    詳解vue項目中如何加載markdown

    這篇文章主要為大家詳細介紹了在vue項目中如何加載markdown,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-11-11
  • element ui 表格動態(tài)列顯示空白bug 修復方法

    element ui 表格動態(tài)列顯示空白bug 修復方法

    今天小編就為大家分享一篇element ui 表格動態(tài)列顯示空白bug 修復方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • 詳解vue-router的導航鉤子(導航守衛(wèi))

    詳解vue-router的導航鉤子(導航守衛(wèi))

    這篇文章主要介紹了詳解vue-router的導航鉤子(導航守衛(wèi)),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • 淺析vue深復制

    淺析vue深復制

    這篇文章主要介紹了vue深復制的相關資料,非常不錯,具有參考借鑒價值,需要的朋友參考下
    2018-01-01
  • vue cli3 實現(xiàn)分環(huán)境打包的步驟

    vue cli3 實現(xiàn)分環(huán)境打包的步驟

    這篇文章主要介紹了vue cli3 實現(xiàn)分環(huán)境打包的步驟,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • Vue?刪除和增加自定義組件實戰(zhàn)教程

    Vue?刪除和增加自定義組件實戰(zhàn)教程

    Vue.js是一種流行的JavaScript框架,用于構(gòu)建交互式的Web應用程序,在Vue.js中,我們可以通過動態(tài)地增加和刪除組件來實現(xiàn)動態(tài)頁面的構(gòu)建和更新,本文介紹Vue?刪除和增加自定義組件實戰(zhàn)教程,感興趣的朋友一起看看吧
    2024-08-08

最新評論

兴国县| 左权县| 东丰县| 山阴县| 邛崃市| 台南市| 永登县| 神木县| 华蓥市| 泗水县| 陆河县| 长沙县| 肥西县| 定襄县| 当雄县| 定陶县| 新化县| 锡林郭勒盟| 黄龙县| 登封市| 濮阳市| 本溪| 正阳县| 娱乐| 广饶县| 昭通市| 祥云县| 遵义县| 萨迦县| 临城县| 龙海市| 巨鹿县| 祁连县| 柳州市| 八宿县| 通河县| 密山市| 五河县| 阿勒泰市| 木里| 什邡市|