首页初始化
This commit is contained in:
136
src/views/dashboard/ColumnarChart.vue
Normal file
136
src/views/dashboard/ColumnarChart.vue
Normal file
@ -0,0 +1,136 @@
|
|||||||
|
<template>
|
||||||
|
<div :class="className" :style="{ height: height, width: width }" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import echarts from "echarts";
|
||||||
|
require("echarts/theme/macarons"); // echarts theme
|
||||||
|
import resize from "./mixins/resize";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
mixins: [resize],
|
||||||
|
props: {
|
||||||
|
className: {
|
||||||
|
type: String,
|
||||||
|
default: "chart",
|
||||||
|
},
|
||||||
|
width: {
|
||||||
|
type: String,
|
||||||
|
default: "100%",
|
||||||
|
},
|
||||||
|
height: {
|
||||||
|
type: String,
|
||||||
|
default: "350px",
|
||||||
|
},
|
||||||
|
autoResize: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true,
|
||||||
|
},
|
||||||
|
chartData: {
|
||||||
|
type: Object,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
chart: null,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
chartData: {
|
||||||
|
deep: true,
|
||||||
|
handler(val) {
|
||||||
|
this.setOptions(val);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.initChart();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
beforeDestroy() {
|
||||||
|
if (!this.chart) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.chart.dispose();
|
||||||
|
this.chart = null;
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
initChart() {
|
||||||
|
this.chart = echarts.init(this.$el, "macarons");
|
||||||
|
this.setOptions(this.chartData);
|
||||||
|
},
|
||||||
|
setOptions({
|
||||||
|
expertData,
|
||||||
|
patentData,
|
||||||
|
achievementsData,
|
||||||
|
demandData,
|
||||||
|
dockingData,
|
||||||
|
} = {}) {
|
||||||
|
this.chart.setOption({
|
||||||
|
legend: {},
|
||||||
|
tooltip: {
|
||||||
|
trigger: "axis",
|
||||||
|
axisPointer: {
|
||||||
|
type: "cross",
|
||||||
|
},
|
||||||
|
padding: [5, 10],
|
||||||
|
},
|
||||||
|
dataset: {
|
||||||
|
source: [
|
||||||
|
["product", "模拟数量", "真实数量"],
|
||||||
|
["专家数量", ...expertData],
|
||||||
|
["专利数量", ...patentData],
|
||||||
|
["科技成果数量", ...achievementsData],
|
||||||
|
["需求数量", ...demandData],
|
||||||
|
["对接数量", ...dockingData],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
type: "category",
|
||||||
|
axisTick: {
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
axisTick: {
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
splitLine: {
|
||||||
|
show: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
type: "bar",
|
||||||
|
barMaxWidth: "60",
|
||||||
|
itemStyle: {
|
||||||
|
normal: {
|
||||||
|
color: "#49a9ee",
|
||||||
|
lineStyle: {
|
||||||
|
color: "#49a9ee",
|
||||||
|
width: 2,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "bar",
|
||||||
|
barMaxWidth: "60",
|
||||||
|
itemStyle: {
|
||||||
|
normal: {
|
||||||
|
color: "#98d87d",
|
||||||
|
lineStyle: {
|
||||||
|
color: "#98d87d",
|
||||||
|
width: 2,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
@ -2,14 +2,17 @@
|
|||||||
<el-row :gutter="40" class="panel-group">
|
<el-row :gutter="40" class="panel-group">
|
||||||
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
|
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
|
||||||
<div class="card-panel" @click="handleSetLineChartData('newVisitis')">
|
<div class="card-panel" @click="handleSetLineChartData('newVisitis')">
|
||||||
<div class="card-panel-icon-wrapper icon-people">
|
<div class="card-panel-icon-wrapper icon-message">
|
||||||
<svg-icon icon-class="peoples" class-name="card-panel-icon" />
|
<svg-icon icon-class="message" class-name="card-panel-icon" />
|
||||||
</div>
|
</div>
|
||||||
<div class="card-panel-description">
|
<div class="card-panel-description">
|
||||||
<div class="card-panel-text">
|
<div class="card-panel-text">本月收入创新币</div>
|
||||||
访客
|
<count-to
|
||||||
</div>
|
:start-val="0"
|
||||||
<count-to :start-val="0" :end-val="102400" :duration="2600" class="card-panel-num" />
|
:end-val="124345"
|
||||||
|
:duration="2600"
|
||||||
|
class="card-panel-num"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -19,36 +22,45 @@
|
|||||||
<svg-icon icon-class="message" class-name="card-panel-icon" />
|
<svg-icon icon-class="message" class-name="card-panel-icon" />
|
||||||
</div>
|
</div>
|
||||||
<div class="card-panel-description">
|
<div class="card-panel-description">
|
||||||
<div class="card-panel-text">
|
<div class="card-panel-text">本月收入金额</div>
|
||||||
消息
|
<count-to
|
||||||
</div>
|
:start-val="0"
|
||||||
<count-to :start-val="0" :end-val="81212" :duration="3000" class="card-panel-num" />
|
:end-val="68323"
|
||||||
|
:duration="3000"
|
||||||
|
class="card-panel-num"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
|
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
|
||||||
<div class="card-panel" @click="handleSetLineChartData('purchases')">
|
<div class="card-panel" @click="handleSetLineChartData('purchases')">
|
||||||
<div class="card-panel-icon-wrapper icon-money">
|
<div class="card-panel-icon-wrapper icon-message">
|
||||||
<svg-icon icon-class="money" class-name="card-panel-icon" />
|
<svg-icon icon-class="message" class-name="card-panel-icon" />
|
||||||
</div>
|
</div>
|
||||||
<div class="card-panel-description">
|
<div class="card-panel-description">
|
||||||
<div class="card-panel-text">
|
<div class="card-panel-text">企业数量</div>
|
||||||
金额
|
<count-to
|
||||||
</div>
|
:start-val="0"
|
||||||
<count-to :start-val="0" :end-val="9280" :duration="3200" class="card-panel-num" />
|
:end-val="60"
|
||||||
|
:duration="3200"
|
||||||
|
class="card-panel-num"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
|
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
|
||||||
<div class="card-panel" @click="handleSetLineChartData('shoppings')">
|
<div class="card-panel" @click="handleSetLineChartData('shoppings')">
|
||||||
<div class="card-panel-icon-wrapper icon-shopping">
|
<div class="card-panel-icon-wrapper icon-message">
|
||||||
<svg-icon icon-class="shopping" class-name="card-panel-icon" />
|
<svg-icon icon-class="message" class-name="card-panel-icon" />
|
||||||
</div>
|
</div>
|
||||||
<div class="card-panel-description">
|
<div class="card-panel-description">
|
||||||
<div class="card-panel-text">
|
<div class="card-panel-text">专利成果数量</div>
|
||||||
订单
|
<count-to
|
||||||
</div>
|
:start-val="0"
|
||||||
<count-to :start-val="0" :end-val="13600" :duration="3600" class="card-panel-num" />
|
:end-val="60"
|
||||||
|
:duration="3600"
|
||||||
|
class="card-panel-num"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -56,18 +68,18 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import CountTo from 'vue-count-to'
|
import CountTo from "vue-count-to";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
CountTo
|
CountTo,
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handleSetLineChartData(type) {
|
handleSetLineChartData(type) {
|
||||||
this.$emit('handleSetLineChartData', type)
|
this.$emit("handleSetLineChartData", type);
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@ -86,8 +98,8 @@ export default {
|
|||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
color: #666;
|
color: #666;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
box-shadow: 4px 4px 40px rgba(0, 0, 0, .05);
|
box-shadow: 4px 4px 40px rgba(0, 0, 0, 0.05);
|
||||||
border-color: rgba(0, 0, 0, .05);
|
border-color: rgba(0, 0, 0, 0.05);
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
.card-panel-icon-wrapper {
|
.card-panel-icon-wrapper {
|
||||||
@ -107,7 +119,7 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.icon-shopping {
|
.icon-shopping {
|
||||||
background: #34bfa3
|
background: #34bfa3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -124,7 +136,7 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.icon-shopping {
|
.icon-shopping {
|
||||||
color: #34bfa3
|
color: #34bfa3;
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-panel-icon-wrapper {
|
.card-panel-icon-wrapper {
|
||||||
@ -160,7 +172,7 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width:550px) {
|
@media (max-width: 550px) {
|
||||||
.card-panel-description {
|
.card-panel-description {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,42 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<!-- <panel-group @handleSetLineChartData="handleSetLineChartData" /> -->
|
<panel-group />
|
||||||
首页
|
<el-card style="margin-bottom: 32px">
|
||||||
|
<div slot="header">
|
||||||
|
<span>快捷功能</span>
|
||||||
|
</div>
|
||||||
|
<el-row :gutter="10">
|
||||||
|
<el-col
|
||||||
|
:xs="8"
|
||||||
|
:sm="6"
|
||||||
|
:xl="4"
|
||||||
|
v-for="item in quickList"
|
||||||
|
:key="item.id"
|
||||||
|
class="pointer"
|
||||||
|
style="margin-bottom: 20px; padding-top: 20px; text-align: center"
|
||||||
|
>
|
||||||
|
<router-link :to="item.path">
|
||||||
|
<el-avatar
|
||||||
|
:size="80"
|
||||||
|
src="https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg"
|
||||||
|
></el-avatar>
|
||||||
|
<div style="margin: 10px 0">{{ item.title }}</div>
|
||||||
|
</router-link>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-card>
|
||||||
|
<el-row style="background: #fff">
|
||||||
|
<el-card>
|
||||||
|
<div slot="header">
|
||||||
|
<span>数据统计</span>
|
||||||
|
</div>
|
||||||
|
<columnar-chart :chart-data="lineChartData" />
|
||||||
|
</el-card>
|
||||||
|
</el-row>
|
||||||
<!-- <el-row style="background: #fff; padding: 16px 16px 0; margin-bottom: 32px">
|
<!-- <el-row style="background: #fff; padding: 16px 16px 0; margin-bottom: 32px">
|
||||||
<line-chart :chart-data="lineChartData" />
|
<line-chart :chart-data="lineChartData" />
|
||||||
</el-row> -->
|
</el-row>
|
||||||
|
<el-row :gutter="32">
|
||||||
<!-- <el-row :gutter="32">
|
|
||||||
<el-col :xs="24" :sm="24" :lg="8">
|
<el-col :xs="24" :sm="24" :lg="8">
|
||||||
<div class="chart-wrapper">
|
<div class="chart-wrapper">
|
||||||
<raddar-chart />
|
<raddar-chart />
|
||||||
@ -32,25 +62,7 @@ import LineChart from "./dashboard/LineChart";
|
|||||||
import RaddarChart from "./dashboard/RaddarChart";
|
import RaddarChart from "./dashboard/RaddarChart";
|
||||||
import PieChart from "./dashboard/PieChart";
|
import PieChart from "./dashboard/PieChart";
|
||||||
import BarChart from "./dashboard/BarChart";
|
import BarChart from "./dashboard/BarChart";
|
||||||
|
import ColumnarChart from "./dashboard/ColumnarChart";
|
||||||
const lineChartData = {
|
|
||||||
newVisitis: {
|
|
||||||
expectedData: [100, 120, 161, 134, 105, 160, 165],
|
|
||||||
actualData: [120, 82, 91, 154, 162, 140, 145],
|
|
||||||
},
|
|
||||||
messages: {
|
|
||||||
expectedData: [200, 192, 120, 144, 160, 130, 140],
|
|
||||||
actualData: [180, 160, 151, 106, 145, 150, 130],
|
|
||||||
},
|
|
||||||
purchases: {
|
|
||||||
expectedData: [80, 100, 121, 104, 105, 90, 100],
|
|
||||||
actualData: [120, 90, 100, 138, 142, 130, 130],
|
|
||||||
},
|
|
||||||
shoppings: {
|
|
||||||
expectedData: [130, 140, 141, 142, 145, 150, 160],
|
|
||||||
actualData: [120, 82, 91, 154, 162, 140, 130],
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "Index",
|
name: "Index",
|
||||||
@ -60,17 +72,54 @@ export default {
|
|||||||
RaddarChart,
|
RaddarChart,
|
||||||
PieChart,
|
PieChart,
|
||||||
BarChart,
|
BarChart,
|
||||||
|
ColumnarChart,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
lineChartData: lineChartData.newVisitis,
|
lineChartData: {
|
||||||
|
expertData: [15, 45],
|
||||||
|
patentData: [40, 30],
|
||||||
|
achievementsData: [20, 45],
|
||||||
|
demandData: [45, 40],
|
||||||
|
dockingData: [15, 50],
|
||||||
|
},
|
||||||
|
quickList: [
|
||||||
|
{
|
||||||
|
title: "专家审核",
|
||||||
|
path: "/examine/expertList",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "企业审核",
|
||||||
|
path: "/examine/enterpriseList",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "机构审核",
|
||||||
|
path: "/examine/researchList",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "实验室审核",
|
||||||
|
path: "/examine/laboratoryList",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "经纪人审核",
|
||||||
|
path: "/examine/agentList",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "成果审核",
|
||||||
|
path: "",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "需求审核",
|
||||||
|
path: "",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "企业产品审核",
|
||||||
|
path: "",
|
||||||
|
},
|
||||||
|
],
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {},
|
||||||
handleSetLineChartData(type) {
|
|
||||||
this.lineChartData = lineChartData[type];
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user