|
|
@ -2,80 +2,56 @@
|
|
|
|
<el-card shadow="never">
|
|
|
|
<el-card shadow="never">
|
|
|
|
<template #header>
|
|
|
|
<template #header>
|
|
|
|
<div class="my--1.5 flex flex-row items-center justify-between">
|
|
|
|
<div class="my--1.5 flex flex-row items-center justify-between">
|
|
|
|
<CardTitle title="换电站收入排行" />
|
|
|
|
<CardTitle title="换电站收入排行(元)" />
|
|
|
|
<!-- 查询条件 -->
|
|
|
|
<!-- 查询条件 -->
|
|
|
|
<!-- <ShortcutDateRangePicker @change="handleTimeRangeChange" /> -->
|
|
|
|
<!-- <ShortcutDateRangePicker @change="handleTimeRangeChange" /> -->
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
<div class="min-w-225 py-1.75" v-loading="loading">
|
|
|
|
<div class="min-w-225 py-1.75" v-loading="loading">
|
|
|
|
<div class="relative h-24 flex">
|
|
|
|
<div class="relative h-24 flex" v-if="analyseData.length > 0">
|
|
|
|
<div class="h-full w-75% bg-blue-50 <lg:w-35% <xl:w-55%">
|
|
|
|
<div class="h-full w-75% bg-blue-50 <lg:w-35% <xl:w-55%">
|
|
|
|
<div class="ml-15 h-full flex flex-col justify-center">
|
|
|
|
<div class="ml-15 h-full flex flex-col justify-center">
|
|
|
|
<div class="font-bold">
|
|
|
|
<div class="font-bold">
|
|
|
|
合肥站:{{ analyseData?.comparison?.value?.registerUserCount || 943.58 }}
|
|
|
|
{{ analyseData[0].stationName }}: {{ analyseData[0].actualPay / 100 || 0 }}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<!-- <div class="mt-2 text-3.5">
|
|
|
|
|
|
|
|
合肥换电站:{{
|
|
|
|
|
|
|
|
calculateRelativeRate(
|
|
|
|
|
|
|
|
analyseData?.comparison?.value?.registerUserCount,
|
|
|
|
|
|
|
|
analyseData?.comparison?.reference?.registerUserCount
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
}}%
|
|
|
|
|
|
|
|
</div> -->
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div
|
|
|
|
<div
|
|
|
|
class="trapezoid1 ml--38.5 mt-1.5 h-full w-77 flex flex-col items-center justify-center bg-blue-5 text-3.5 text-white"
|
|
|
|
class="trapezoid1 ml--38.5 mt-1.5 h-full w-77 flex flex-col items-center justify-center bg-blue-5 text-3.5 text-white"
|
|
|
|
>
|
|
|
|
>
|
|
|
|
<span class="text-6 font-bold">{{ analyseData?.visitUserCount || 943.58 }}</span>
|
|
|
|
<span class="text-6 font-bold">¥{{ analyseData[0].actualPay / 100 || 0 }}</span>
|
|
|
|
<span>Number One</span>
|
|
|
|
<span>Number One</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="relative h-24 flex">
|
|
|
|
<div class="relative h-24 flex" v-if="analyseData.length > 1">
|
|
|
|
<div class="h-full w-75% flex bg-cyan-50 <lg:w-35% <xl:w-55%">
|
|
|
|
<div class="h-full w-75% flex bg-cyan-50 <lg:w-35% <xl:w-55%">
|
|
|
|
<div class="ml-15 h-full flex flex-col justify-center">
|
|
|
|
<div class="ml-15 h-full flex flex-col justify-center">
|
|
|
|
<div class="font-bold">
|
|
|
|
<div class="font-bold">
|
|
|
|
长沙站:{{ analyseData?.comparison?.value?.visitUserCount || 504.22 }}
|
|
|
|
{{ analyseData[1].stationName }}: {{ analyseData[1].actualPay / 100 || 0 }}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<!-- <div class="mt-2 text-3.5">
|
|
|
|
|
|
|
|
武汉换电站:{{
|
|
|
|
|
|
|
|
calculateRelativeRate(
|
|
|
|
|
|
|
|
analyseData?.comparison?.value?.visitUserCount,
|
|
|
|
|
|
|
|
analyseData?.comparison?.reference?.visitUserCount
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
}}%
|
|
|
|
|
|
|
|
</div> -->
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div
|
|
|
|
<div
|
|
|
|
class="trapezoid2 ml--28 mt-1.7 h-25 w-56 flex flex-col items-center justify-center bg-cyan-5 text-3.5 text-white"
|
|
|
|
class="trapezoid2 ml--28 mt-1.7 h-25 w-56 flex flex-col items-center justify-center bg-cyan-5 text-3.5 text-white"
|
|
|
|
>
|
|
|
|
>
|
|
|
|
<span class="text-6 font-bold">{{ analyseData?.orderUserCount || 504.22 }}</span>
|
|
|
|
<span class="text-6 font-bold">¥{{ analyseData[1].actualPay / 100 || 0 }}</span>
|
|
|
|
<span>Number Two</span>
|
|
|
|
<span>Number Two</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="relative h-24 flex">
|
|
|
|
<div class="relative h-24 flex" v-if="analyseData.length > 2">
|
|
|
|
<div class="w-75% flex bg-slate-50 <lg:w-35% <xl:w-55%">
|
|
|
|
<div class="w-75% flex bg-slate-50 <lg:w-35% <xl:w-55%">
|
|
|
|
<div class="ml-15 h-full flex flex-row gap-x-16">
|
|
|
|
<div class="ml-15 h-full flex flex-row gap-x-16">
|
|
|
|
<div class="flex flex-col justify-center">
|
|
|
|
<div class="flex flex-col justify-center">
|
|
|
|
<div class="font-bold">
|
|
|
|
<div class="font-bold">
|
|
|
|
南京站:{{ analyseData?.comparison?.value?.rechargeUserCount || 186.20 }}
|
|
|
|
{{ analyseData[2].stationName }}: {{ analyseData[2].actualPay / 100 || 0 }}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<!-- <div class="mt-2 text-3.5">
|
|
|
|
|
|
|
|
南京换电站:{{
|
|
|
|
|
|
|
|
calculateRelativeRate(
|
|
|
|
|
|
|
|
analyseData?.comparison?.value?.rechargeUserCount,
|
|
|
|
|
|
|
|
analyseData?.comparison?.reference?.rechargeUserCount
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
}}%
|
|
|
|
|
|
|
|
</div> -->
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div
|
|
|
|
<div
|
|
|
|
class="trapezoid3 ml--18 mt-3.25 h-23 w-36 flex flex-col items-center justify-center bg-slate-5 text-3.5 text-white"
|
|
|
|
class="trapezoid3 ml--18 mt-3.25 h-23 w-36 flex flex-col items-center justify-center bg-slate-5 text-3.5 text-white"
|
|
|
|
>
|
|
|
|
>
|
|
|
|
<span class="text-6 font-bold">{{ analyseData?.payUserCount || 186.20 }}</span>
|
|
|
|
<span class="text-6 font-bold">¥{{ analyseData[2].actualPay / 100 || 0 }}</span>
|
|
|
|
<span>Number Three</span>
|
|
|
|
<span>Number Three</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
@ -93,15 +69,20 @@ import { CardTitle } from '@/components/Card'
|
|
|
|
defineOptions({ name: 'MemberFunnelCard' })
|
|
|
|
defineOptions({ name: 'MemberFunnelCard' })
|
|
|
|
|
|
|
|
|
|
|
|
const loading = ref(false) // 加载中
|
|
|
|
const loading = ref(false) // 加载中
|
|
|
|
const analyseData = ref<MemberAnalyseRespVO>() // 会员分析数据
|
|
|
|
const analyseData = ref([]) // 会员分析数据
|
|
|
|
|
|
|
|
|
|
|
|
/** 查询会员概览数据列表 */
|
|
|
|
/** 查询会员概览数据列表 */
|
|
|
|
const handleTimeRangeChange = async (times: [dayjs.ConfigType, dayjs.ConfigType]) => {
|
|
|
|
const handleTimeRangeChange = async () => {
|
|
|
|
// loading.value = true
|
|
|
|
loading.value = true
|
|
|
|
// 查询数据
|
|
|
|
// 查询数据
|
|
|
|
// analyseData.value = await MemberStatisticsApi.getMemberAnalyse({ times })
|
|
|
|
analyseData.value = await MemberStatisticsApi.getMemberAnalyse()
|
|
|
|
// loading.value = false
|
|
|
|
// console.log(analyseData.value)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
loading.value = false
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
onMounted(async () => {
|
|
|
|
|
|
|
|
handleTimeRangeChange()
|
|
|
|
|
|
|
|
})
|
|
|
|
</script>
|
|
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
.trapezoid1 {
|
|
|
|
.trapezoid1 {
|
|
|
|