代码1为修改版本 代码2为案例版本 按照案例版本时出现过无法获取order的问题 实验推测问 获取res 的order 与echartsData的oreder出现重名问题 当修改 res获取的order为order1时问题解决 但此时再复制过案例的代码后发现也能顺利运行 参考网站 前端项目/vue项目实战/vue+element-ui/vue经典案例分享/紧贴实战的vue经典案例_哔哩哔哩_bilibili p34
methods:{
getTableData(){
getHome().then((res)=>{
this.tableData=res.data.tableData;
//折线图的展示
const order1 = res.data.orderData;
console.log(res);
this.echartsData.order.xAxis.data=order1.date;
let keyArray = Object.keys(order1.data[0]);
keyArray.forEach((key)=>{
this.echartsData.order.series.push({
name:key,
data:order1.data.map((item)=>item[key]),
type:"line",
});
});
// const myEchartsOrder =echarts.init(this.$refs.echart);
// myEchartsOrder.setOption(this.echartsData.order);
//传给组件的值
// console.log(order.date)
this.echartData.order.xData = order1.date;
keyArray.forEach((key) => {
this.echartData.order.series.push({
name: key,
data: order1.data.map((item) => item[key]),
type: "line",
});
});
//用户图
this.echartData.user.xData = res.data.userData.map((item)=>item.date);
this.echartData.user.series.push({
name:'新增用户',
data:res.data.userData.map((item)=>item.new),
type:"bar"
})
// console.log(this.echartsData.user)
this.echartData.user.series.push({
name:'活跃用户',
data:res.data.userData.map((item)=>item.active),
type:"bar"
})
// console.log(this.echartData)
this.echartData.video.series.push({
data: res.data.videoData,
type: "pie",
});
})
},
},
<template>
<el-row class="home" :getter="20">
<el-col :span="8" style="margin-top: 20px">
<el-card shadow="hover">
<div class="user">
<img :src="userImg" />
<div class="userinfo">
<p class="name">Admin</p>
<p class="access">超级管理员</p>
</div>
</div>
<div class="login-info">
<p>上次登录时间:<span>2021-7-19</span></p>
<p>上次登录地点:<span>武汉</span></p>
</div>
</el-card>
<el-card style="margin-top: 20px; height: 460px">
<el-table :data="tableData">
<el-table-column
show-overflow-tooltip
v-for="(val, key) in tableLabel"
:key="key"
:prop="key"
:label="val"
>
</el-table-column>
</el-table>
</el-card>
</el-col>
<el-col :span="16" style="margin-top: 20px">
<div class="num">
<el-card
shadow="hover"
v-for="item in countData"
:key="item.name"
:body-style="{ display: 'flex', padding: 0 }"
>
<i
class="icon"
:class="`el-icon-${item.icon}`"
:style="{ background: item.color }"
></i>
<div class="detail">
<p class="num">¥{{ item.value }}</p>
<p class="txt">¥{{ item.name }}</p>
</div>
</el-card>
</div>
<el-card shadow="hover" style="height: 280px">
<!-- <div style="height: 280px" ref="echart"></div> -->
<echart :chartData="echartData.order" style="height: 280px"></echart>
</el-card>
<div class="graph">
<el-card shadow="hover" style="height: 260px">
<echart :chartData="echartData.user" style="height: 240px"></echart>
</el-card>
<el-card shadow="hover" style="height: 260px">
<echart
:chartData="echartData.video"
style="height: 240px"
:isAxisChart="false"
></echart>
</el-card>
</div>
</el-col>
</el-row>
</template>
<script>
import { getHome } from "../../api/data";
import Echart from "@/components/ECharts.vue";
export default {
components: {
Echart,
},
data() {
return {
userImg: require("../../assets/images/user.png"),
tableData: [],
tableLabel: {
name: "课程",
totalBuy: "今日购买",
monthBuy: "本月购买",
totalBuy: "总购买",
},
countData: [
{
name: "今日支付订单",
value: 1234,
icon: "success",
color: "#2ec7c9",
},
{
name: "今日收藏订单",
value: 210,
icon: "star-on",
color: "#ffb980",
},
{
name: "今日未支付订单",
value: 1234,
icon: "s-goods",
color: "#5ab1ef",
},
{
name: "本月支付订单",
value: 1234,
icon: "success",
color: "#2ec7c9",
},
{
name: "本月收藏订单",
value: 210,
icon: "star-on",
color: "#ffb980",
},
{
name: "本月未支付订单",
value: 1234,
icon: "s-goods",
color: "#5ab1ef",
},
],
echartData: {
order: {
xData: [],
series: [],
},
user: {
xData: [],
series: [],
},
video: {
series: [],
},
},
};
},
methods: {
getTableData() {
getHome().then((res) => {
// console.log(res);
this.tableData = res.data.tableData;
// 折线图的展示
const order = res.data.orderData;
let keyArray = Object.keys(order.data[0]);
// const myEchartsOrder = echarts.init(this.$refs.echart);
// myEchartsOrder.setOption(this.echartsData.order);
// 传给组件的值
this.echartData.order.xData = order.date;
keyArray.forEach((key) => {
this.echartData.order.series.push({
name: key,
data: order.data.map((item) => item[key]),
type: "line",
});
});
// 用户图
this.echartData.user.xData = res.data.userData.map((item) => item.date);
this.echartData.user.series.push({
name: "新增用户",
data: res.data.userData.map((item) => item.new),
type: "bar",
});
this.echartData.user.series.push({
name: "活跃用户",
data: res.data.userData.map((item) => item.active),
type: "bar",
});
this.echartData.video.series.push({
data: res.data.videoData,
type: "pie",
});
});
},
},
mounted() {
this.getTableData();
},
};
</script>
<style lang="scss" scoped>
@import "~@/assets/scss/home";
</style>