228 lines
6.0 KiB
Vue
228 lines
6.0 KiB
Vue
<template>
|
|
<el-card>
|
|
<el-form class="mb-[-16px]" :model="queryParams" label-width="80px">
|
|
<el-col :span="6">
|
|
<el-form-item label="时间筛选">
|
|
<el-date-picker v-model="date" type="daterange" range-separator="-" start-placeholder="开始时间"
|
|
end-placeholder="结束时间" />
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-form>
|
|
</el-card>
|
|
<el-card>
|
|
<el-row>
|
|
<el-col :span="6" class='flex mb-7' v-for="(item, index) in statisticLists" :key="index">
|
|
<img class="w-[50px] h-[50px] mr-2" :src="item.src" />
|
|
<el-statistic :title="item.title" :value="item.value" />
|
|
</el-col>
|
|
</el-row>
|
|
</el-card>
|
|
<el-card>
|
|
<template #header>
|
|
营业趋势
|
|
</template>
|
|
<v-charts style="height: 350px" :option="visitorOption" :autoresize="true" />
|
|
</el-card>
|
|
<el-row>
|
|
<el-col :span="14">
|
|
<el-card class="h-[100%]">
|
|
<template #header>
|
|
交易数据
|
|
</template>
|
|
<tradData></tradData>
|
|
</el-card>
|
|
</el-col>
|
|
<el-col :span="10">
|
|
<el-card>
|
|
<template #header>
|
|
交易类型
|
|
</template>
|
|
<v-charts style="height: 350px" :option="tradTypeOption" :autoresize="true" />
|
|
</el-card>
|
|
</el-col>
|
|
</el-row>
|
|
<el-card>
|
|
<template #header>
|
|
配送订单统计
|
|
</template>
|
|
<v-charts style="height: 350px" :option="sendOption" :autoresize="true" />
|
|
</el-card>
|
|
|
|
<el-card>
|
|
<template #header>
|
|
配送订单统计
|
|
</template>
|
|
<sendData></sendData>
|
|
</el-card>
|
|
</template>
|
|
|
|
<script lang="ts" setup name="manageProjectLists">
|
|
import { ref, reactive } from "vue"
|
|
import { getWorkbench } from '@/api/app'
|
|
import vCharts from 'vue-echarts'
|
|
import tradData from "./components/tradData.vue"
|
|
import sendData from "./components/sendData.vue"
|
|
|
|
const src = ref('https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg')
|
|
const date = ref("")
|
|
|
|
|
|
|
|
const statisticLists = reactive([
|
|
{
|
|
src: 'https://ceshi-engineering.lihaink.cn/uploads/files/20240604/20240604171701552002039.png',
|
|
title: "核销订单金额",
|
|
value: 1000
|
|
},
|
|
{
|
|
src: "https://ceshi-engineering.lihaink.cn/uploads/files/20240604/2024060417170150a511510.png",
|
|
title: "余额消费金额",
|
|
value: 1000
|
|
},
|
|
{
|
|
src: 'https://ceshi-engineering.lihaink.cn/uploads/files/20240604/20240604171701594ff8897.png',
|
|
title: "门店收益金额",
|
|
value: 1000
|
|
},
|
|
{
|
|
src: 'https://ceshi-engineering.lihaink.cn/uploads/files/20240604/202406041717018a22e1161.png',
|
|
title: "线下收银订单金额",
|
|
value: 1000
|
|
},
|
|
{
|
|
src: 'https://ceshi-engineering.lihaink.cn/uploads/files/20240604/202406041717013a08c6793.png',
|
|
title: "现金收银订单金额",
|
|
value: 1000
|
|
},
|
|
{
|
|
src: 'https://ceshi-engineering.lihaink.cn/uploads/files/20240604/2024060417170103b0a9686.png',
|
|
title: "门店新增用户数",
|
|
value: 1000
|
|
},
|
|
{
|
|
src: 'https://ceshi-engineering.lihaink.cn/uploads/files/20240604/20240604171701469b91377.png',
|
|
title: "门店成交用户数",
|
|
value: 1000
|
|
},
|
|
{
|
|
src: 'https://ceshi-engineering.lihaink.cn/uploads/files/20240604/20240604171701fbb680115.png',
|
|
title: "门店营业额",
|
|
value: 1000
|
|
},
|
|
|
|
])
|
|
|
|
|
|
const visitorOption = reactive({
|
|
xAxis: {
|
|
type: 'category',
|
|
data: []
|
|
},
|
|
yAxis: {
|
|
type: 'value'
|
|
},
|
|
legend: {
|
|
data: ['营业额']
|
|
},
|
|
itemStyle: {
|
|
// 点的颜色。
|
|
color: 'red'
|
|
},
|
|
tooltip: {
|
|
trigger: 'axis'
|
|
},
|
|
series: [
|
|
{
|
|
name: '营业额',
|
|
data: [0],
|
|
type: 'line',
|
|
smooth: true
|
|
}
|
|
]
|
|
})
|
|
|
|
const tradTypeOption = reactive(
|
|
{
|
|
title: {
|
|
text: '交易类型',
|
|
left: 'center'
|
|
},
|
|
tooltip: {
|
|
trigger: 'item'
|
|
},
|
|
legend: {
|
|
orient: 'vertical',
|
|
left: 'left'
|
|
},
|
|
series: [
|
|
{
|
|
type: 'pie',
|
|
radius: '50%',
|
|
data: [
|
|
{ value: 1048, name: '线上收银订单' },
|
|
{ value: 735, name: '现金收银订单' },
|
|
{ value: 580, name: '核销订单' },
|
|
{ value: 484, name: '充值订单' },
|
|
],
|
|
emphasis: {
|
|
itemStyle: {
|
|
shadowBlur: 10,
|
|
shadowOffsetX: 0,
|
|
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
)
|
|
|
|
|
|
|
|
const sendOption = reactive({
|
|
tooltip: {
|
|
trigger: 'axis'
|
|
},
|
|
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
|
|
}
|
|
]
|
|
|
|
})
|
|
|
|
|
|
const getData = () => {
|
|
getWorkbench()
|
|
.then((res: any) => {
|
|
|
|
// 清空echarts 数据
|
|
visitorOption.xAxis.data = []
|
|
visitorOption.series[0].data = []
|
|
|
|
// 写入从后台拿来的数据
|
|
res.visitor.date.reverse().forEach((item: any) => {
|
|
visitorOption.xAxis.data.push(item)
|
|
})
|
|
res.visitor.list[0].data.forEach((item: any) => {
|
|
visitorOption.series[0].data.push(item)
|
|
})
|
|
})
|
|
.catch((err: any) => {
|
|
console.log('err', err)
|
|
})
|
|
}
|
|
|
|
onMounted(() => {
|
|
getData()
|
|
})
|
|
|
|
</script> |