时段数据

master
lion 3 years ago
parent 46a1341a34
commit 457390c88a

@ -0,0 +1,9 @@
import request from '@/utils/request'
export function totalRpt(params) {
return request({
url: '/api/admin/chart/total',
method: 'get',
params: params
})
}

@ -48,4 +48,19 @@ export function monthRpt(params) {
})
}
export function areaRpt(params) {
return request({
url: '/api/admin/chart/visit_area',
method: 'get',
params: params
})
}
export function detailRpt(params) {
return request({
url: '/api/admin/chart/visit_time_detail',
method: 'get',
params: params
})
}

@ -687,9 +687,13 @@
this.load();
},
toactive(obj) {
if (obj.id) {
let url = "/#/order/activeorder?activity_id=" + obj.id;
window.location.href = url
if (obj.id) {
this.$router.push({
path: '/order/activeorder',
query: {
activity_id: obj.id
}
})
}
},
changeEndTime(val) {

@ -12,8 +12,8 @@ background: linear-gradient(to right, #F37335, #FDC830); /* W3C, IE 10+/ Edge, F
预约参观人次
</div>
<div class="card-panel-text">
<p>总人数238</p>
<p> 46</p>
<p>总人数{{totaldata.visit_total.total}}</p>
<p> {{totaldata.visit_total.today}}</p>
</div>
</div>
</div>
@ -30,9 +30,9 @@ background: linear-gradient(to right, #ED8F03, #FFB75E); /* W3C, IE 10+/ Edge, F
入场参观人次
</div>
<div class="card-panel-text">
<p>总人数208</p>
<p> 46</p>
<p>核销比87%</p>
<p>总人数{{totaldata.visit_enter.total}}</p>
<p> {{totaldata.visit_enter.today}}</p>
<p>核销比{{totaldata.visit_enter.per}}</p>
</div>
<!-- <count-to :start-val="0" :end-val="countsData.client_count" :duration="3000" class="card-panel-num" /> -->
</div>
@ -50,8 +50,8 @@ background: linear-gradient(to right, #ffa751, #ffe259); /* W3C, IE 10+/ Edge, F
预约活动人次
</div>
<div class="card-panel-text" style="color: #fff;font-size:16px">
<p>总人数308</p>
<p> 26</p>
<p>总人数{{totaldata.activity_total.total}}</p>
<p> {{totaldata.activity_total.today}}</p>
</div>
<!-- <count-to :start-val="0" :end-val="countsData.tool_count" :duration="3200" class="card-panel-num" /> -->
</div>
@ -69,8 +69,8 @@ background: linear-gradient(to right, #f83600, #fe8c00); /* W3C, IE 10+/ Edge, F
预约活动人次
</div>
<div class="card-panel-text" style="color: #fff;font-size:16px">
<p>总人数338</p>
<p> 46</p>
<p>总人数{{totaldata.activity_enter.total}}</p>
<p> {{totaldata.activity_enter.today}}</p>
</div>
<!-- <count-to :start-val="0" :end-val="countsData.user_count" :duration="3600" class="card-panel-num" /> -->
</div>
@ -87,6 +87,28 @@ background: linear-gradient(to right, #f83600, #fe8c00); /* W3C, IE 10+/ Edge, F
props: {
countsData: {
type: Object
},
totaldata:{
type: Object,
default:{
"visit_total": {
"total": 0,
"today": 0
},
"visit_enter": {
"total": 0,
"today": 0,
"per":0
},
"activity_total": {
"total": 0,
"today": 0
},
"activity_enter": {
"total": 0,
"today": 0
}
}
}
},
components: {

@ -1,7 +1,7 @@
<template>
<div class="dashboard-editor-container">
<panel-group :countsData="countsData" />
<panel-group :totaldata="totaldata" :countsData="countsData" />
<el-row :gutter="32">
<el-col :xs="24" :sm="24" :lg="8">
<div class="chart-wrapper">
@ -42,7 +42,7 @@
</el-tag>
</div> -->
</div>
<pie-chart :chartData="stat.times" />
<pie-chart :chartData="stat.areas" />
</div>
</el-col>
<el-col :xs="24" :sm="24" :lg="24">
@ -63,15 +63,17 @@
import PanelGroup from './components/PanelGroup'
// import BarChart from './components/BarChart'
import PieChart from './components/PieChart'
import LineChart from './components/LineChart'
import LineChart from './components/LineChart'
import {
totalRpt
} from '../../api/report/total.js'
import {
getChartsData,
getCounts
} from "../../api/dashboard.js"
import {
ageRpt
} from "@/api/report/visit.js";
import {
ageRpt,
areaRpt,
sexRpt
} from "@/api/report/visit.js";
export default {
@ -82,7 +84,8 @@
LineChart
},
data() {
return {
return {
totaldata:{},
countsData: {
client_count: 0,
tool_count: 0,
@ -117,28 +120,9 @@
// name: ""
// }]
},
times: {
areas: {
radiusArr: "50%",
yArr: [{
value: 240,
name: '苏州'
},
{
value: 20,
name: '无锡'
},
{
value: 130,
name: '常州'
},
{
value: 120,
name: '泰州'
},
{
value: 120,
name: '宿迁'
}
yArr: [
],
}
},
@ -180,6 +164,24 @@
methods: {
load() {
// this.showData = true;
totalRpt().then(res => {
res.visit_enter.per = (res.visit_enter.total / (res.visit_total.total == 0 ? 1 : res.visit_total.total)) * 100 + "%"
this.totaldata = res;
})
var aeraArr = [];
areaRpt().then(res=>{
for(var m of res.city_list){
if(!m.city){
m.city = "未知"
}
aeraArr.push({
name: m.city,
value: m.num
})
}
this.stat.areas.yArr = aeraArr
})
var agearr = [];
var sexarr = [];
ageRpt().then((res) => {
@ -191,7 +193,7 @@
}
this.stat.exception.yArr = agearr;
}).catch((res) => {})
sexRpt().then((res) => {
for (var m of res) {
sexarr.push({
@ -199,7 +201,7 @@
value: m.plan_total
})
}
this.stat.warning.yArr = sexarr;
}).catch((res) => {})
},

@ -172,7 +172,7 @@
value: '已参加',
id: "2"
}, {
value: '取消预约',
value: '取消',
id: "0"
}]
},

@ -0,0 +1,167 @@
<template>
<div class="container">
<!-- 查询配置 -->
<div style="padding: 0px 20px">
<div ref="lxHeader">
<LxHeader icon="md-apps" text="时段统计报表" style="margin-bottom: 10px; border: 0px; margin-top: 15px">
<div slot="content"></div>
<slot>
<div>
<el-date-picker
v-model="searchFields.date"
value-format="yyyy-MM-dd"
type="date"
placeholder="选择日期">
</el-date-picker>
<Button type="primary" @click="load" style="margin-left: 10px">查询</Button>
<Button type="primary" @click="viewPart" style="margin-left: 10px">{{btnText}}</Button>
</div>
</slot>
</LxHeader>
</div>
<div class="table-tree" v-if="showData">
<el-table :data="tableData" :height="tableHeight" class="v-table" style="width: 100%">
<el-table-column type="index" align="center">
</el-table-column>
<el-table-column prop="daterange" label="时段" sortable width="180">
</el-table-column>
<el-table-column prop="plan_total" label="预约人数" sortable>
</el-table-column>
<el-table-column prop="use_total" label="入场人数" sortable>
</el-table-column>
<el-table-column prop="man_total" label="性别男" sortable>
</el-table-column>
<el-table-column prop="woman_total" label="性别女" sortable>
</el-table-column>
<el-table-column prop="per" label="核销比" sortable>
</el-table-column>
</el-table>
</div>
<div v-else>
<line-chart :chartData="periodData" :height="chartHeight"/>
</div>
</div>
</div>
</template>
<script>
import LxHeader from "@/components/LxHeader/index.vue";
import LineChart from '../components/LineChart'
import {
detailRpt
} from "@/api/report/visit.js";
export default {
components: {
LxHeader,
LineChart
},
created() {
this.initLoad()
this.load()
},
mounted() {},
data() {
return {
showData: false,
searchFields: {
date:"",
},
tableData: [],
tableHeight: 0,
chartHeight:"",
btnText:"数据展示",
periodData: {
xArr:[],
series:{},
legendArr:["预约人数","入场人数","男性人数","女性人数"]
}
}
},
methods: {
viewPart() {
this.showData = !this.showData;
this.btnText = this.showData ? "图表展示" : "数据展示"
},
initLoad() {
var that = this;
var clientHeight = document.documentElement.clientHeight
var lxHeader_height = 96.5; //
var paginationHeight = 37; //
var topHeight = 50; //
let tableHeight = clientHeight - lxHeader_height - topHeight - paginationHeight - 20;
that.tableHeight = tableHeight;
that.chartHeight = tableHeight+"px";
this.searchFields.date = this.getToday();
},
load() {
// this.showData = true;
var planarr=[];
var xArr=[];
var usearr=[];
var manarr = [];
var womanarr = [];
detailRpt({
date:this.searchFields.date
}).then((res) => {
for (var m of res) {
m.per = (m.use_total / (m.plan_total == 0 ? 1 : m.plan_total)) * 100 + "%"
m.daterange = m.start_time+"-"+m.end_time;
xArr.push(m.daterange);
planarr.push(
m.plan_total
)
usearr.push(
m.use_total
)
manarr.push(
m.man_total
)
womanarr.push(
m.woman_total
)
}
this.periodData.xArr = xArr;
this.periodData.series=[
{
name:"预约人数",
type: 'bar',
data:planarr
},
{
name:"入场人数",
type: 'bar',
data:usearr
},
{
name:"男性人数",
type: 'bar',
data:manarr
},
{
name:"女性人数",
type: 'bar',
data:womanarr
},
]
this.tableData = res
}).catch((res) => {})
},
getToday(){
let date =new Date()
var y = date.getFullYear();
var m = date.getMonth()+1;
m = m <10?'0'+ m : m;
var d = date.getDate();
d = d <10?'0'+ d : d;
return y +'-'+ m +'-'+ d;
},
}
};
</script>

@ -3,7 +3,7 @@
<!-- 查询配置 -->
<div style="padding: 0px 20px">
<div ref="lxHeader">
<LxHeader icon="md-apps" text="时段统计报表" style="margin-bottom: 10px; border: 0px; margin-top: 15px">
<LxHeader icon="md-apps" text="同比统计报表" style="margin-bottom: 10px; border: 0px; margin-top: 15px">
<div slot="content"></div>
<slot>
<div>
@ -73,11 +73,11 @@
},
{
id:'this_month',
value:"月"
value:"月"
},
{
id:'last_month',
value:"上一月"
value:"去年同期"
},
{
id:'this_year',
@ -85,7 +85,7 @@
},
{
id:'last_year',
value:"上一年"
value:"去年同期"
}],
rptData: {
xArr:[],

Loading…
Cancel
Save