文化云2管理后台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

383 lines
11 KiB

<template>
<div class="content">
<a-row class="tab">
<a-col :span="4" class="tab_item" v-for="(item,index) in tabList" :key="index" @click="goPage(item.url)">
<img src="../../../assets/img/accountList.png" alt="">
<span>{{item.name}}({{item.num}})</span>
</a-col>
</a-row>
<div class="tab tadayWork">
<p class="tadayWork_title">昨日工作</p>
<div>
</div>
<a-row justify="space-between">
<a-col :span="index==0 ?4:index==1?4:index==2?4:3" class="tadayWork_item" v-for="(item,index) in tadayWorkList" :key="index">
<p class="tadayWork_price">
<span v-if="item.id=='deal_money' || item.id=='order_money'">¥</span>
{{item.price}}
</p>
<span>{{item.name}}</span>
</a-col>
</a-row>
</div>
<a-row class="statistics" type="flex" justify="space-between" :gutter="15">
<a-col :span="12" >
<a-card :loading="loading" :bordered="false" :body-style="{padding: '0'}" class="statistics_item">
<div class="salesCard">
<a-tabs default-active-key="1" size="large" :tab-bar-style="{marginBottom: '24px', paddingLeft: '16px'}">
<div class="extra-wrapper" slot="tabBarExtraContent">
<div class="extra-item">
<!-- <a>今日</a>
<a>本周</a> -->
<a :class="active=='day'?'active1':''" @click="changeTiem('day',0)">按日</a>
<a :class="active=='month'?'active1':''" @click="changeTiem('month',0)">按月</a>
<a :class="active=='year'?'active1':''" @click="changeTiem('year',0)">按年</a>
</div>
<!-- <a-range-picker class="picker"/> -->
</div>
<a-tab-pane loading="true" tab="销售额" key="1">
<!-- <schart class="schart" canvasId="bar" :options="options1"></schart> -->
<div id="main" style="width: 100%; " class="schart"></div>
</a-tab-pane>
<!-- <a-tab-pane tab="访问量" key="2">
<schart class="schart" canvasId="bar" :options="options1"></schart>
</a-tab-pane> -->
</a-tabs>
</div>
</a-card>
</a-col>
<a-col :span="12">
<a-card :loading="loading" :bordered="false" :body-style="{padding: '0'}" class="statistics_item">
<div class="salesCard">
<a-tabs default-active-key="2" size="large" :tab-bar-style="{marginBottom: '24px', paddingLeft: '16px'}">
<div class="extra-wrapper" slot="tabBarExtraContent">
<div class="extra-item">
<!-- <a>今日</a>
<a>本周</a> -->
<a :class="active1=='day'?'active1':''" @click="changeTiem('day',1)">按日</a>
<a :class="active1=='month'?'active1':''" @click="changeTiem('month',1)">按月</a>
<a :class="active1=='year'?'active1':''" @click="changeTiem('year',1)">按年</a>
</div>
<!-- <a-range-picker :style="{width: '256px'}" /> -->
</div>
<a-tab-pane :tab="'销售量(元)'" key="2">
<a-row>
<a-col>
<div class="rank">
<ul class="list">
<li :key="index" v-for="(item, index) in rankList1">
<span :class="index < 3 ? 'active' : null">{{ index + 1 }}</span>
<span>{{ item.username }}</span>
<span>¥{{ item.total_money }}</span>
</li>
</ul>
</div>
</a-col>
</a-row>
</a-tab-pane>
<a-tab-pane :tab="'访问量(次)'" key="1">
<a-row>
<a-col>
<div class="rank">
<ul class="list">
<li :key="index" v-for="(item, index) in rankList">
<span :class="index < 3 ? 'active' : null">{{ index + 1 }}</span>
<span>{{ item.username }}</span>
<span>{{ item.count }}</span>
</li>
</ul>
</div>
</a-col>
</a-row>
</a-tab-pane>
</a-tabs>
</div>
</a-card>
</a-col>
</a-row>
</div>
</template>
<script>
import Schart from 'vue-schart';
import {home} from '../../../api/index'
export default {
data() {
return{
tabList:[
{name:'全部文化数据查询',url:'/DataQuery',num:'',id:'goods_count'},
{name:'待付款订单',url:'/pendingPayment',num:'',id:'awaitpay_count'},
{name:'待交付订单',url:'/toBeDelivered',num:'',id:'awaitdelivery_count'},
{name:'待结算订单',url:'/toBeSettled',num:'',id:'awaitclose_count'},
{name:'已终止订单',url:'/completed',num:'',id:'complete_count'},
{name:'已关闭订单',url:'/closed',num:'',id:'close_count'},
],
tadayWorkList:[
{name:'订单金额总额',price:'',id:'deal_money'},
{name:'标的价款总额',price:'',id:'order_money'},
{name:'交易文化数据',price:'',id:'deal_goods_count'},
{name:'已发布文化数据',price:'',id:'shelf_count'},
{name:'委托期满文化数据',price:'',id:'out_count'},
{name:'新增订单',price:'',id:'yester_order_count'},
{name:'已终止订单',price:'',id:'yester_complete_count'},
],
query:{
leftDate:'year',
rightDate:'year',
saleRankingDate:'year'
},
homeDate:{},
loading: false,
barData:[],
barData2:[],
rankList:[],
rankList1:[],
active:'year',
active1:'year',
options1: {
type: 'bar',
showValue:false,
legend:{
display:true
},
// title: {
// text: '最近一周各品类销售图'
// },
bgColor: '#fbfbfb',
labels: ['周一', '周二', '周三', '周四', '周五'],
datasets: [
{
label: '订单总额',
data: [234, 278, 270, 190, 230]
},
{
label: '百货',
data: [164, 178, 190, 135, 160]
},
// {
// label: '食品',
// data: [144, 198, 150, 235, 120]
// }
]
},
}
},
components:{
Schart
},
created(){
this.getList()
},
mounted() {
// this.drawChart();
},
methods:{
drawChart() {
// 基于准备好的dom,初始化echarts实例 这个和上面的main对应
let myChart = this.$echarts.init(document.getElementById("main"));
// 指定图表的配置项和数据
let option = {
// title: {
// text: "ECharts 入门示例",
// },
color: ['#4A90E2','#F5A623',],
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow',
},
//这里改变样式
formatter: '<strong> {b0}</strong> <br /> <span style="display: inline-block; margin-right: 4px; border-radius: 10px; width: 10px; height: 10px;background-color: #4A90E2;"></span> 订单金额总额:<strong>{c0}</strong>元 <br /> <span style="display: inline-block; margin-right: 4px; border-radius: 10px; width: 10px; height: 10px;background-color: #F5A623;"></span> 标的价款总额<strong>{c1}</strong>'
},
legend: {
data: ["订单金额总额",'标的价款总额'],
},
xAxis: {
data: this.options1.labels,
},
yAxis: {},
series: this.options1.datasets,
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
},
changeTiem(time,type){
if(type==1){
this.query.rightDate=time
this.query.saleRankingDate=time
this.active1=time
}else{
this.query.leftDate=time
this.active=time
}
this.getList()
},
goPage(url){
this.$router.push(url)
},
getList(){
home(this.query).then(res=>{
if(res.code==200){
this.homeDate=res.data
for(let item in res.data){
this.tabList.map(tabItem=>{
if(item==tabItem.id){
tabItem.num=res.data[item]
}
})
this.tadayWorkList.map(workItem=>{
if(item==workItem.id){
workItem.price=res.data[item]
}
})
}
this.rankList=res.data.entrust_ranking
this.rankList1=res.data.entrust_sale_ranking
// let type={type:'bar'}
let style= {
normal: {
label: {
formatter: "元",
show: true,
position: "top",
textStyle: {
fontWeight: "bolder",
fontSize: "12",
color: "#fff"
}
}
}
}
res.data.treeMap.map(item=>{
item.type='bar'
item.name=item.label
item.smooth=true
// item.itemStyle=style
})
this.options1.datasets=res.data.treeMap
console.info(this.options1.datasets)
this.options1.labels=res.data.label
this.drawChart()
}else{
this.$message.error(res.msg);
}
})
}
}
}
</script>
<style scoped >
.tab{
background-color: white;
height: 180px;
width: 100%;
margin-top: 20px;
}
.tadayWork{
height: 147px;
}
.content{
padding: 0 20px;
}
.tab_item{
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
cursor: pointer;
}
.tab_item img{
width: 50px;
height: 50px;
margin-bottom: 15px;
}
.tadayWork_title{
font-weight: 700;
font-size: 16px;
color: #4E5969;
padding-left: 20px;
padding-top: 22px;
margin-bottom: 28px;
}
.tadayWork_item{
text-align: center;
color: #4E5969;
}
.tadayWork_price{
font-size: 16px;
color: #00AAFF;
margin-bottom:15px ;
}
.statistics{
height: 400px;
margin-top: 20px;
}
.statistics_item{
height: 100%;
}
.picker{
width: 200px;
}
.extra-item{
display: inline-block;
margin-right: 24px;
}
.extra-wrapper{
padding-right: 10px;
}
.extra-wrapper .extra-item a{
color: #3A3A3A;
margin-left: 24px;
}
.active1{
color: #1890FF !important;
}
.rank {
padding: 0 32px 32px 72px;
}
.list {
margin: 25px 0 0;
padding: 0;
list-style: none;
}
.list li {
margin-top: 16px;
}
.list li span {
color: rgba(0, 0, 0, .65);
font-size: 14px;
line-height: 22px;
}
.list li span:first-child {
background-color: #f5f5f5;
border-radius: 20px;
display: inline-block;
font-size: 12px;
font-weight: 600;
margin-right: 24px;
height: 20px;
line-height: 20px;
width: 20px;
text-align: center;
}
.list li span.active {
background-color: #1890FF;
color: #fff;
}
.list li span:last-child {
float: right;
}
.mobile .rank {
padding: 0 32px 32px 32px;
}
.schart{
height: 340px;
}
</style>