页面代码:
<!--数据分析--> <template> <div id ='data-analysis'> <el-row :gutter="20"> <el-col :span="6"><div class="gc"> <div class="data-tab" style="width: 95%;"> <a-statistic title="今日订单总量" :value="112893" style="margin-right: 100px" /> </br> <a-statistic title="订单流水 (CNY)" :precision="2" :value="112893" /> </div> </div></el-col> <el-col :span="6"><div class="gc"> <div style="border: 1px solid grey; padding: 20px 25px; height: 200px"> <a-row :gutter="18"> <a-col :span="12"> <a-card> <a-statistic title="Feed" :value="11.23" :precision="2" suffix="%" :value-style="{ color: '#3f8600' }" style="margin-right: 50px; height: 120px" > <template #prefix> <a-icon type="arrow-up" /> </template> </a-statistic> </a-card> </a-col> <a-col :span="12"> <a-card> <a-statistic title="Idle" :value="9.3" :precision="2" suffix="%" :value-style="{ color: '#cf1322' }" > <template #prefix> <a-icon type="arrow-down" /> </template> </a-statistic> </a-card> </a-col> </a-row> </div> </div></el-col> <el-col :span="6"><div class="gc"> <div style="padding: 20px; border: 1px solid darkgray; height: 200px"> <h3>线上购物转化率</h3> <div style="font-size: 40px">78%</div> <a-progress :percent="30" /> </div> </div></el-col> <el-col :span="6"><div class="gc"> <div style="border: 1px solid grey; height: 200px"> <div id="myChart4" :style="{width: '100%', height: '200px', float: 'left'}"></div> </div> </div></el-col> </el-row> <a-row type="flex" style="border: 1px solid lightgrey; padding: 5px"> <a-col :flex="1" > <el-tabs v-model="activeName" type="card" @tab-click="handleClick" style="width: 70vh; padding: 5px;"> <el-tab-pane label="今日" name="first"> <div style=""> <div id="myChart1" :style="{width: '600px', height: '300px', float: 'left'}"></div> </div> </el-tab-pane> <el-tab-pane label="本周" name="second">本周</el-tab-pane> <el-tab-pane label="本月" name="third">本月</el-tab-pane> <el-tab-pane label="全年" name="fourth">全年</el-tab-pane> </el-tabs> </a-col> <a-col :flex="2" style="margin: 0 10px"> <a-range-picker @change="onChange"> <a-icon type="calendar" theme="twoTone" slot="suffixIcon"/> </a-range-picker> <h3 style="margin-top: 10px">门店销售额排名</h3> <a-list item-layout="horizontal" :data-source="data"> <a-list-item slot="renderItem" slot-scope="item, index"> <a-list-item-meta description="Ant Design, a design language for background applications, is refined by Ant UED Team" > <a slot="title" href="https://www.antdv.com/">{{ item.title }}</a> <a-avatar slot="avatar" src="https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png" /> </a-list-item-meta> </a-list-item> </a-list> </a-col> </a-row> <el-row> <el-col :span="12"><div class="grid-content" style="border: 1px solid lightgrey;"> <a-card> <h3 style="margin-bottom: 16px; padding: 20px">热门商品</h3> <div style="margin-left: 10%"> <div id="myChart3" :style="{width: '600px', height: '300px', float: 'left'}"></div> </div> </a-card> </div></el-col> <el-col :span="12"><div class="grid-content" style="border: 1px solid lightgrey;"> <a-card> <a-radio-group v-model="size" style="margin-bottom: 16px; padding: 16px 20px"> <a-radio-button value="small"> 全部渠道 </a-radio-button> <a-radio-button value="default"> 线上 </a-radio-button> <a-radio-button value="large"> 门店 </a-radio-button> </a-radio-group> <div style="margin-left: 15%"> <div id="myChart2" :style="{width: '600px', height: '300px', float: 'left'}"></div> </div> </a-card> </div></el-col> </el-row> </div> </template> <script> // mid data const data = [ { title: 'Ant Design Title 1', }, { title: 'Ant Design Title 2', }, { title: 'Ant Design Title 3', }, { title: 'Ant Design Title 4', }, ]; let echarts = require('echarts') export default { name: "Analysis", data () { return { // middle prt activeName: 'first', data, // 右下控制 size: 'small', } }, mounted(){ //我们要在mounted生命周期函数中实例化echarts对象。因为我们要确保dom元素已经挂载到页面中 this.Bar(); this.Curve(); this.CurveSoft(); this.Pie() }, methods:{ // 标签页头 handleClick(tab, event) { console.log(tab, event); }, // 日期选择框 onChange(date, dateString) { console.log(date, dateString); }, CurveSoft(){ let myChart = this.$echarts.init(document.getElementById('myChart4')) myChart.setOption({ xAxis: { type: 'category', data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] }, yAxis: { type: 'value' }, series: [{ data: [820, 932, 901, 934, 1290, 1330, 1320], type: 'line', smooth: true }] }) }, Curve(){ // 基于准备好的dom,初始化echarts实例 let myChart = this.$echarts.init(document.getElementById('myChart3')) var base = +new Date(1968, 9, 3); var oneDay = 24 * 3600 * 1000; var date = []; var data = [Math.random() * 300]; for (var i = 1; i < 20000; i++) { var now = new Date(base += oneDay); date.push([now.getFullYear(), now.getMonth() + 1, now.getDate()].join('/')); data.push(Math.round((Math.random() - 0.5) * 20 + data[i - 1])); } // 绘制柱状图 myChart.setOption({ tooltip: { trigger: 'axis', position: function (pt) { return [pt[0], '10%']; } }, title: { left: 'center', text: '大数据量面积图', }, toolbox: { feature: { dataZoom: { yAxisIndex: 'none' }, restore: {}, saveAsImage: {} } }, xAxis: { type: 'category', boundaryGap: false, data: date }, yAxis: { type: 'value', boundaryGap: [0, '100%'] }, dataZoom: [{ type: 'inside', start: 0, end: 10 }, { start: 0, end: 10, handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z', handleSize: '80%', handleStyle: { color: '#fff', shadowBlur: 3, shadowColor: 'rgba(0, 0, 0, 0.6)', shadowOffsetX: 2, shadowOffsetY: 2 } }], series: [ { name: '模拟数据', type: 'line', smooth: true, symbol: 'none', sampling: 'average', itemStyle: { color: 'rgb(255, 70, 131)' }, areaStyle: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ offset: 0, color: 'rgb(255, 158, 68)' }, { offset: 1, color: 'rgb(255, 70, 131)' }]) }, data: data } ] }) }, Pie(){ let myChart = this.$echarts.init(document.getElementById('myChart2')) myChart.setOption({ tooltip: { trigger: 'item', formatter: '{a} <br/>{b}: {c} ({d}%)' }, legend: { orient: 'vertical', left: 10, data: ['直接访问', '邮件营销', '联盟广告', '视频广告', '搜索引擎'] }, series: [ { name: '访问来源', type: 'pie', radius: ['50%', '70%'], avoidLabelOverlap: false, label: { show: false, position: 'center' }, emphasis: { label: { show: true, fontSize: '30', fontWeight: 'bold' } }, labelLine: { show: false }, data: [ {value: 335, name: '直接访问'}, {value: 310, name: '邮件营销'}, {value: 234, name: '联盟广告'}, {value: 135, name: '视频广告'}, {value: 1548, name: '搜索引擎'} ] } ] }) }, Bar(){ let myChart = this.$echarts.init(document.getElementById('myChart1')) myChart.setOption({ color: ['#3398DB'], tooltip: { trigger: 'axis', axisPointer: { // 坐标轴指示器,坐标轴触发有效 type: 'shadow' // 默认为直线,可选为:'line' | 'shadow' } }, grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true }, xAxis: [ { type: 'category', data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], axisTick: { alignWithLabel: true } } ], yAxis: [ { type: 'value' } ], series: [ { name: '直接访问', type: 'bar', barWidth: '60%', data: [10, 52, 200, 334, 390, 330, 220] } ] }) } } } </script> <style lang="less" scoped> #data-analysis{ height: 100%; } .data-tab { height: 200px; width: 200px; margin: 10px; padding: 20px; border: 1px solid #8c8c8c; text-align: center; } /*布局*/ .el-row { margin-bottom: 20px; &:last-child { margin-bottom: 0; } } .el-col { border-radius: 4px; } .gc { border-radius: 4px; margin-top: 25px; } .grid-content { border-radius: 4px; color: #8c8c8c; min-height: 300px; margin-top: 25px; } </style>页面效果: