oil-station/fuintAdmin/src/views/shopowner.vue

1228 lines
36 KiB
Vue
Raw Normal View History

2024-09-04 11:22:28 +08:00
<template>
2024-10-12 14:51:25 +08:00
<div class="home-index">
2024-09-04 11:22:28 +08:00
<el-carousel height="230px">
<el-carousel-item v-for="(item,index) in bannerList" :key="index">
2024-10-14 14:24:53 +08:00
<div class="bannser">-
2024-09-04 11:22:28 +08:00
2024-10-15 09:53:01 +08:00
<img :src="imagePath+item.productImage" alt="">
2024-09-04 11:22:28 +08:00
</div>
</el-carousel-item>
</el-carousel>
<div class="b-bs">
<div class="left-box">
2024-10-14 14:24:53 +08:00
<div class="h-tt">核心数据</div>
2024-09-04 11:22:28 +08:00
<div style="display: flex;justify-content: space-between">
<div class="san-box">
2024-09-09 16:50:54 +08:00
<div class="r-title">{{ storeTotal.allAmount || 0 }}</div>
2024-09-04 11:22:28 +08:00
<div class="r-size">总交易金额</div>
</div>
<div class="san-box" style="background: #fc6464">
2024-09-09 16:50:54 +08:00
<div class="r-title">{{ storeTotal.allNum || 0 }}</div>
2024-09-04 11:22:28 +08:00
<div class="r-size">总交易笔数</div>
</div>
<div class="san-box" style="background: #fcb12c">
2024-09-09 16:50:54 +08:00
<div class="r-title">{{ storeTotal.unitPrice || 0 }}</div>
2024-09-04 11:22:28 +08:00
<div class="r-size">笔均单价/</div>
</div>
<div class="san-box" style="background: #5bc557;">
2024-09-09 16:50:54 +08:00
<div class="r-title">{{ storeTotal.userBalance || 0 }}</div>
2024-09-04 11:22:28 +08:00
<div class="r-size">累计会员余额万元</div>
</div>
</div>
</div>
<div class="right-box">
<div class="title_">
<div>通知中心</div>
2024-10-15 09:53:01 +08:00
<div style="font-size: 12px;color: #BBBBBB;cursor: pointer; display: flex;align-items: center"
@click="goList()">更多 <i class="el-icon-arrow-right"></i></div>
2024-09-04 11:22:28 +08:00
</div>
2024-10-14 14:24:53 +08:00
<!-- <div class="hang_" v-for="(item,index) in 4" :key="index" >到期提醒百业兴智慧油站系统将于2024年07月10日到期...</div>-->
2024-10-15 09:53:01 +08:00
<div class="hang_" v-for="(item,index) in noticeList" :key="index">{{
item.notificationType
}}{{ item.templateContent }}
</div>
2024-09-04 11:22:28 +08:00
<div class="hang_" v-if="this.noticeList.length==0">暂无通知</div>
</div>
</div>
<div class="b-bs">
<div class="left-box-t">
<div class="d-s">
2024-10-15 09:53:01 +08:00
<div class="h-tt" style="margin-right: 15px">数据看板</div>
<el-dropdown placement="bottom-start">
<div class="h-anniu" :class="{'q-anniu' : timeShow == false}" @click="timeShow = false ">近一周 <i
class="el-icon-arrow-down el-icon--right"></i></div>
2024-10-14 14:06:09 +08:00
<el-dropdown-menu slot="dropdown">
<el-dropdown-item>今日</el-dropdown-item>
<el-dropdown-item>昨日</el-dropdown-item>
<el-dropdown-item>近一周</el-dropdown-item>
<el-dropdown-item>近一月</el-dropdown-item>
<el-dropdown-item>近一周</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
2024-10-15 09:53:01 +08:00
<div class="h-anniu" :class="{'q-anniu' : timeShow == true}" @click="timeShow = true"><img
src="../assets/images/zdy.png" style="width: 14px; height: 14px"> 自定义
</div>
2024-09-04 11:22:28 +08:00
<div style="margin-right: 40px">
<el-date-picker
v-model="value1"
2024-10-14 14:24:53 +08:00
type="daterange"
2024-09-04 11:22:28 +08:00
value-format="yyyy-MM-dd HH:mm:ss"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
2024-10-12 18:09:59 +08:00
@blur="getStoreAmount">
2024-09-04 11:22:28 +08:00
</el-date-picker>
</div>
</div>
<div class="d-s" style="margin-top: 15px">
<div class="k-box">
<div class="d-s" style="font-size: 12px;color: #999999;">
<div class="sian"></div>
2024-10-14 14:24:53 +08:00
<div style="color: #333">油品销售金额/交易笔数</div>
2024-09-04 11:22:28 +08:00
</div>
2024-10-12 16:29:59 +08:00
<div class="num-size">{{ storeAmount.oilAmount || 0 }}/{{ storeAmount.oilNum || 0 }}</div>
2024-09-04 11:22:28 +08:00
</div>
<div class="k-box">
<div class="d-s" style="font-size: 12px;color: #999999;">
<div class="sian"></div>
2024-10-14 14:24:53 +08:00
<div style="color: #333">会员充值金额/充值笔数</div>
2024-09-04 11:22:28 +08:00
</div>
2024-10-12 16:29:59 +08:00
<div class="num-size">{{ storeAmount.userRechargeAmount || 0 }}/{{ storeAmount.userRechargeNum || 0 }}</div>
2024-09-04 11:22:28 +08:00
</div>
<div class="k-box">
<div class="d-s" style="font-size: 12px;color: #999999;">
<div class="sian"></div>
2024-10-14 14:24:53 +08:00
<div style="color: #333">便利店销售金额/交易笔数</div>
2024-09-04 11:22:28 +08:00
</div>
2024-10-12 16:29:59 +08:00
<div class="num-size">{{ storeAmount.minimartAmount || 0 }}/{{ storeAmount.minimartNum || 0 }}</div>
2024-09-04 11:22:28 +08:00
</div>
<div class="k-box">
<div class="d-s" style="font-size: 12px;color: #999999;">
<div class="sian"></div>
2024-10-14 14:24:53 +08:00
<div style="color: #333">积分商城销售金额/兑换笔数</div>
2024-09-04 11:22:28 +08:00
</div>
2024-10-12 16:29:59 +08:00
<div class="num-size">{{ storeAmount.pointMallAmount || 0 }}/{{ storeAmount.pointMallNum || 0 }}</div>
2024-09-04 11:22:28 +08:00
</div>
</div>
<div class="hui-hang"></div>
2024-10-15 09:53:01 +08:00
<div class="d-s">
2024-09-04 11:22:28 +08:00
<div>
2024-10-15 09:53:01 +08:00
<div class="h-tt">数据分析</div>
2024-09-04 11:22:28 +08:00
<div id="ccc" style="width: 300px;height: 200px; "></div>
</div>
<div class="h-r-ba"></div>
<div>
2024-10-15 09:53:01 +08:00
<!-- <div class="h-tt" >活跃油站</div>-->
2024-09-04 11:22:28 +08:00
<div class="d-s" style="justify-content: space-between">
<div id="cccc" style="width: 300px;height: 200px;margin-right: 50px"></div>
<div id="ccct" style="width: 300px;height: 200px;"></div>
</div>
</div>
</div>
</div>
2024-10-15 09:53:01 +08:00
<div class="right-box-t">
<div class="h-tt">
2024-10-14 14:06:09 +08:00
<div>硬件设备</div>
<el-popover
placement="top-start"
title="联系人:某某某"
width="200"
trigger="hover"
content="联系电话1352415811">
<img slot="reference" style="width: 28px; height: 28px " src="../assets/images/telindex.png">
</el-popover>
2024-10-15 09:53:01 +08:00
</div>
2024-10-14 14:06:09 +08:00
<div style="height: 90%;overflow: auto;scrollbar-width: none;">
2024-10-15 09:53:01 +08:00
<div class="d-s" style="margin: 30px 0px" v-for="(item,index) in hardwareList" :key="index">
2024-10-14 14:06:09 +08:00
<div class="r-img">
<img :src="imagePath + item.image" style="width: 84px;height: 70px">
</div>
<div style="font-size: 14px">{{ item.name }}</div>
2024-09-04 11:22:28 +08:00
</div>
</div>
2024-10-14 14:24:53 +08:00
2024-09-04 11:22:28 +08:00
</div>
</div>
<div class="b-bs">
2024-09-06 13:38:58 +08:00
<div class="left-box-t">
2024-10-15 11:09:07 +08:00
<div class="d-s" style="margin-bottom: 10px">
2024-10-15 09:53:01 +08:00
<div class="h-tt" style="margin-right: 15px">油品交易分析</div>
2024-10-15 11:43:45 +08:00
<el-dropdown placement="bottom-start" @command="editColor">
2024-10-15 09:53:01 +08:00
<div class="h-anniu" :class="{'q-anniu' : timeShow == false}" @click="timeShow = false ">近一周 <i
class="el-icon-arrow-down el-icon--right"></i></div>
2024-10-14 14:24:53 +08:00
<el-dropdown-menu slot="dropdown">
2024-10-15 11:43:45 +08:00
<el-dropdown-item command="近一周" index="2">近一周</el-dropdown-item>
<el-dropdown-item command="近一月" index="2">近一月</el-dropdown-item>
<el-dropdown-item command="近一年" index="2">近一年</el-dropdown-item>
2024-10-14 14:24:53 +08:00
</el-dropdown-menu>
</el-dropdown>
2024-10-15 09:53:01 +08:00
<div class="h-anniu" :class="{'q-anniu' : timeShow == true}" @click="timeShow = true"><img
src="../assets/images/zdy.png" style="width: 14px; height: 14px"> 自定义
</div>
2024-10-14 14:24:53 +08:00
<div style="margin-right: 40px">
<el-date-picker
v-model="value1"
type="daterange"
value-format="yyyy-MM-dd HH:mm:ss"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
2024-10-14 17:42:37 +08:00
@blur="getDataShow">
2024-10-14 14:24:53 +08:00
</el-date-picker>
</div>
2024-10-15 11:43:45 +08:00
</div>
2024-10-15 11:09:07 +08:00
<div id="cccf"
style="width: 100%; height: 315px;background: linear-gradient( 360deg, #F8F0E7 0%, #FFFFFF 100%); "></div>
2024-09-04 11:22:28 +08:00
</div>
2024-09-06 13:38:58 +08:00
<div class="right-box-t">
2024-10-15 09:53:01 +08:00
<div style="font-size: 16px;font-weight: bold"><span style="margin-right: 15px">员工排行</span>
2024-10-15 11:43:45 +08:00
<el-dropdown placement="bottom-start" @command="editColor">
2024-10-15 09:53:01 +08:00
<div class="h-anniu" :class="{'q-anniu' : timeShow == false}" @click="timeShow = false ">近一周 <i
class="el-icon-arrow-down el-icon--right"></i></div>
<el-dropdown-menu slot="dropdown">
2024-10-15 11:43:45 +08:00
<el-dropdown-item command="近一周" index="3">近一周</el-dropdown-item>
<el-dropdown-item command="近一月" index="3">近一月</el-dropdown-item>
<el-dropdown-item command="近一年" index="3">近一年</el-dropdown-item>
2024-10-15 09:53:01 +08:00
</el-dropdown-menu>
</el-dropdown>
</div>
2024-09-06 13:38:58 +08:00
<div class="hui-box">
<div style="width: 10%">排名</div>
<div>员工姓名</div>
2024-10-14 14:24:53 +08:00
<div style="width: 25%">会员充值金额</div>
<div style="width: 25%">油品销售金额</div>
<div>总销售额</div>
2024-09-06 13:38:58 +08:00
</div>
2024-10-14 14:24:53 +08:00
<div style="overflow: auto; scrollbar-width: none; height: 74% ">
<div class="hang-box" v-for="(item,index) in employeList" :key="index">
2024-10-14 16:40:27 +08:00
<div style="width: 10%" v-if="index == 0">
2024-10-15 09:53:01 +08:00
<img src="../assets/images/one_icon.png" style="width: 22px;height: 22px">
2024-10-14 16:40:27 +08:00
</div>
<div style="width: 10%" v-if="index == 1">
2024-10-15 09:53:01 +08:00
<img src="../assets/images/two_icon.png" style="width: 22px;height: 22px">
2024-10-14 16:40:27 +08:00
</div>
<div style="width: 10%" v-if="index == 2">
2024-10-15 09:53:01 +08:00
<img src="../assets/images/three_icon.png" style="width: 22px;height: 22px">
2024-10-14 16:40:27 +08:00
</div>
2024-10-15 09:53:01 +08:00
<div style="width: 10%" v-if="index>2">{{ index + 1 }}</div>
2024-10-14 14:24:53 +08:00
<div>{{ item.realName }}</div>
2024-10-15 09:53:01 +08:00
<div style="width: 25%">{{ item.cardSum }}</div>
<div style="width: 25%">{{ item.oilSum }}</div>
<div>{{ item.totalSum }}</div>
2024-10-14 14:24:53 +08:00
</div>
2024-09-06 13:38:58 +08:00
</div>
2024-10-14 14:24:53 +08:00
2024-09-06 13:38:58 +08:00
</div>
2024-09-04 11:22:28 +08:00
</div>
<div class="bottom_">
<div class="d-s">
2024-10-15 09:53:01 +08:00
<div class="h-tt" style="margin-right: 15px">数据统计</div>
2024-10-15 11:43:45 +08:00
<el-dropdown placement="bottom-start" @command="editColor">
2024-10-15 09:53:01 +08:00
<div class="h-anniu" :class="{'q-anniu' : timeShow == false}" @click="timeShow = false ">近一周 <i
class="el-icon-arrow-down el-icon--right"></i></div>
2024-10-14 14:06:09 +08:00
<el-dropdown-menu slot="dropdown">
2024-10-15 11:43:45 +08:00
<el-dropdown-item command="近一周" index="1">近一周</el-dropdown-item>
<el-dropdown-item command="近一月" index="1">近一月</el-dropdown-item>
<el-dropdown-item command="近一年" index="1">近一年</el-dropdown-item>
2024-10-14 14:06:09 +08:00
</el-dropdown-menu>
</el-dropdown>
2024-10-15 09:53:01 +08:00
<div class="h-anniu" :class="{'q-anniu' : timeShow == true}" @click="timeShow = true"><img
src="../assets/images/zdy.png" style="width: 14px; height: 14px"> 自定义
</div>
2024-10-14 14:06:09 +08:00
<div style="margin-right: 40px">
<el-date-picker
v-model="value1"
type="daterange"
value-format="yyyy-MM-dd HH:mm:ss"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
2024-10-14 17:20:49 +08:00
@blur="getDataCount">
2024-10-14 14:06:09 +08:00
</el-date-picker>
2024-09-04 11:22:28 +08:00
</div>
</div>
2024-10-14 14:06:09 +08:00
2024-10-15 09:53:01 +08:00
<div id="ctct"
style="width: 100%; height: 315px;background: linear-gradient( 360deg, #F8F0E7 0%, #FFFFFF 100%); "></div>
2024-09-04 11:22:28 +08:00
</div>
</div>
</template>
<script>
import echarts from "echarts";
import {selectStoreAmount, storeAmountIndex, storeTotalIndex} from "@/api/indexBanner";
import {getListApi} from "@/api/setting/hardware";
import {selectChildByDeptId} from "@/api/system/Site/site";
import {parseTime} from "@/utils/fuint";
import {getBannerListApi} from "@/api/sys/banner";
import {getNotificationlogList} from "@/api/sys/sysNotificationlog";
2024-09-09 14:39:58 +08:00
import {employeeSalesApi} from "@/api/indexStatistics";
2024-10-14 17:20:49 +08:00
import {getDataAnalysis, getDataBoard, getDataCount, getDataShow, getTotalAmount} from "@/api/allOrder";
2024-10-15 09:53:01 +08:00
2024-09-04 11:22:28 +08:00
export default {
2024-10-15 09:53:01 +08:00
props: ["accountId"],
data() {
return {
xShow: false,
timeShow: false,
2024-09-04 11:22:28 +08:00
form: {},
2024-10-15 09:53:01 +08:00
timeList: [
2024-09-04 11:22:28 +08:00
"今日",
"近一周",
"近一月",
"近一年",
],
options: [{
value: '选项1',
label: '黄金糕'
}, {
value: '选项2',
label: '双皮奶'
}, {
value: '选项3',
label: '蚵仔煎'
}, {
value: '选项4',
label: '龙须面'
}, {
value: '选项5',
label: '北京烤鸭'
}],
value: '',
value1: [],
value2: [],
imagePath: process.env.VUE_APP_SERVER_URL,
2024-10-15 09:53:01 +08:00
queryParams: {},
2024-09-04 11:22:28 +08:00
// 店铺数量
2024-10-15 09:53:01 +08:00
storeTotal: {},
2024-09-04 11:22:28 +08:00
// 店铺金额
2024-10-15 09:53:01 +08:00
storeAmount: {},
2024-09-04 11:22:28 +08:00
// banner图列表
2024-10-15 09:53:01 +08:00
bannerList: {},
storeList: [],
hardwareList: [],
noticeList: [],
employeList: [],
dataAnalysisOilNumberList: [],
dataAnalysisAllList: [],
dataAnalysisIfOilList: [],
//数据统计
dataCount: {},
2024-10-15 11:43:45 +08:00
//数据展示
dataShows: {},
2024-09-04 11:22:28 +08:00
}
},
created() {
let nowDate = new Date();
let oneWeekAgo = new Date(nowDate.getTime() - 6 * 24 * 60 * 60 * 1000)
2024-10-14 14:24:53 +08:00
this.value1 = [parseTime(oneWeekAgo), parseTime(nowDate)]
2024-09-04 11:22:28 +08:00
this.getStoreTotal()
2024-09-09 16:50:54 +08:00
// this.selectChildByDeptIdApi()
2024-09-04 11:22:28 +08:00
this.getStoreAmount()
this.selectBannerList()
let start = new Date();
start.setHours(0)
start.setMinutes(0)
start.setSeconds(0)
start.setMilliseconds(0)
2024-10-14 14:24:53 +08:00
this.value2 = [start, new Date()];
2024-09-04 11:22:28 +08:00
this.getStoreList()
this.getHardwareList()
this.getNoticeList()
2024-09-09 14:39:58 +08:00
this.getEmployeList()
2024-10-14 17:20:49 +08:00
this.getDataAnalysis()
this.getDataShow()
this.getDataCount()
2024-09-04 11:22:28 +08:00
},
mounted() {
2024-10-14 18:28:46 +08:00
setTimeout(() => {
this.initChart();
}, 2000);
2024-09-04 11:22:28 +08:00
},
2024-10-14 14:19:22 +08:00
methods: {
goList() {
2024-10-12 14:51:25 +08:00
this.$router.push('/notificationList/index')
},
2024-10-15 11:43:45 +08:00
editColor(command,index){
// console.log("command",command)
// console.log("index",index.$attrs.index)
index = index.$attrs.index
// this.timeIndex = command
this.disabled = true
if (command=='今日'){
let start = new Date();
start.setHours(0)
start.setMinutes(0)
start.setSeconds(0)
start.setMilliseconds(0)
this.value1 = [start,new Date()];
} else if (command=='近一周'){
let nowDate = new Date();
let oneWeekAgo = new Date(nowDate.getTime() - 6 * 24 * 60 * 60 * 1000)
this.value1 = [parseTime(oneWeekAgo),parseTime(nowDate)]
} else if (command=='近一月'){
let nowDate = new Date();
let oneWeekAgo = new Date(nowDate.getTime() - 30 * 24 * 60 * 60 * 1000)
this.value1 = [parseTime(oneWeekAgo),parseTime(nowDate)]
} else if (command=='近一年'){
let nowDate = new Date();
let oneWeekAgo = new Date(nowDate.getFullYear() - 1, nowDate.getMonth(), nowDate.getDate())
this.value1 = [parseTime(oneWeekAgo),parseTime(nowDate)]
}else if (command=='自定义'){
this.disabled = false
}
if (index == "1") {
this.getDataCount()
}else if (index == "2") {
this.getDataShow()
}else if (index == "3") {
this.getStoreList()
}
},
2024-09-09 14:39:58 +08:00
// 获取员工排行信息
getEmployeList() {
this.employeLoading = true
2024-10-14 14:24:53 +08:00
employeeSalesApi().then(res => {
if (res.code == 200) {
if (res.data.length >= 10) {
2024-09-09 14:39:58 +08:00
this.employeList = res.data.slice(0, 10);
} else {
this.employeList = res.data
}
this.employeLoading = false
}
})
},
2024-10-14 17:20:49 +08:00
// 获取数据分析信息
getDataAnalysis() {
getDataAnalysis().then(res => {
2024-10-15 09:53:01 +08:00
// console.log('数据分析的数据', res)
2024-10-14 17:20:49 +08:00
if (res.code == 200) {
for (let i = 0; i < res.data.length; i++) {
if (res.data[i].type == 1) {
this.dataAnalysisOilNumberList.push(res.data[i])
2024-10-15 09:53:01 +08:00
} else if (res.data[i].type == 2) {
2024-10-14 17:20:49 +08:00
this.dataAnalysisIfOilList.push(res.data[i])
2024-10-15 09:53:01 +08:00
} else if (res.data[i].type == 3) {
2024-10-14 17:20:49 +08:00
this.dataAnalysisAllList.push(res.data[i])
}
}
2024-10-15 09:53:01 +08:00
// console.log('dataAnalysisOilNumberList', this.dataAnalysisOilNumberList)
// console.log('dataAnalysisIfOilList', this.dataAnalysisIfOilList)
// console.log('dataAnalysisAllList', this.dataAnalysisAllList)
2024-10-15 11:43:45 +08:00
this.initChart()
2024-10-14 17:20:49 +08:00
}
})
},
//油站首页数据展示
2024-10-15 09:53:01 +08:00
getDataShow() {
2024-10-14 17:20:49 +08:00
const data = {
"startTime": this.value1[0].split(' ')[0],
"endTime": this.value1[1].split(' ')[0]
}
getDataShow(data).then(res => {
2024-10-15 11:43:45 +08:00
// console.log('首页数据展示', res.data)
this.dataShows = res.data
this.initChart()
2024-10-14 17:20:49 +08:00
})
},
//油站首页数据统计
2024-10-15 09:53:01 +08:00
getDataCount() {
2024-10-14 17:20:49 +08:00
const data = {
"startTime": this.value1[0].split(' ')[0],
"endTime": this.value1[1].split(' ')[0]
}
getDataCount(data).then(res => {
2024-10-15 11:43:45 +08:00
// console.log('首页数据统计', res.data)
2024-10-15 09:53:01 +08:00
if (res.code == 200) {
this.dataCount = res.data
this.initChart()
}
2024-10-14 17:20:49 +08:00
})
},
2024-10-14 14:24:53 +08:00
getNoticeList() {
2024-09-09 16:50:54 +08:00
getNotificationlogList({pageNo: 1, pageSize: 4}).then(res => {
2024-09-04 11:22:28 +08:00
this.noticeList = res.data.records
})
},
2024-10-14 14:24:53 +08:00
getHardwareList() {
getListApi({page: 1, pageSize: 3, status: '1'}).then(res => {
2024-09-04 11:22:28 +08:00
this.hardwareList = res.data.records;
this.hardwareList.forEach(item => {
2024-10-14 14:24:53 +08:00
if (item.image.includes(",")) {
2024-09-04 11:22:28 +08:00
item.image = item.image.split(",")[0]
}
})
})
},
2024-10-14 14:24:53 +08:00
getStoreList() {
selectStoreAmount(this.addDateRange({}, this.value2)).then(res => {
2024-09-04 11:22:28 +08:00
this.storeList = res.data
2024-10-15 11:43:45 +08:00
this.initChart()
2024-09-04 11:22:28 +08:00
})
},
// 选择机构信息
2024-10-14 14:24:53 +08:00
chooseDept() {
2024-09-04 11:22:28 +08:00
this.options.forEach(item => {
2024-10-14 14:24:53 +08:00
if (item.deptId == this.value) {
2024-09-04 11:22:28 +08:00
this.queryParams.ancestors = item.ancestors
}
})
this.getStoreAmount()
},
2024-09-09 16:50:54 +08:00
// banner图
2024-10-14 14:24:53 +08:00
selectBannerList() {
2024-09-04 11:22:28 +08:00
let queryParams = {
2024-10-14 14:24:53 +08:00
pageNo: 1,
pageSize: 10,
systemPosition: "首页",
bannerStatus: true
2024-09-04 11:22:28 +08:00
}
2024-10-14 14:24:53 +08:00
getBannerListApi(queryParams).then(res => {
2024-09-04 11:22:28 +08:00
this.bannerList = res.data.records
})
},
// 查询
selectChildByDeptIdApi() {
selectChildByDeptId().then(res => {
this.options = res.data
})
},
2024-09-09 16:50:54 +08:00
// 核心数据
2024-10-14 14:24:53 +08:00
getStoreTotal() {
2024-09-09 16:50:54 +08:00
getTotalAmount().then(res => {
2024-09-04 11:22:28 +08:00
this.storeTotal = res.data
})
},
2024-10-14 14:24:53 +08:00
getStoreAmount() {
getDataBoard(this.addDateRange(this.queryParams, this.value1)).then(res => {
2024-09-04 11:22:28 +08:00
this.storeAmount = res.data
2024-10-14 18:28:46 +08:00
// this.initChart()
2024-09-04 11:22:28 +08:00
})
},
2024-10-14 14:24:53 +08:00
countPercentage(upNum, downNum) {
2024-09-04 11:22:28 +08:00
let percentage = 0;
2024-10-14 14:24:53 +08:00
percentage = (upNum / downNum) * 100
2024-09-04 11:22:28 +08:00
return percentage.toFixed(2)
},
initChart() {
const chart = echarts.init(document.getElementById('ccc'))
const chart1 = echarts.init(document.getElementById('cccc'))
2024-10-14 14:24:53 +08:00
const chart2 = echarts.init(document.getElementById('ccct'))
const chart3 = echarts.init(document.getElementById('ctct'))
const chart4 = echarts.init(document.getElementById('cccf'))
2024-09-04 11:22:28 +08:00
let dataList = []
let allTotal = 0
if (this.storeAmount.oilNameList) {
this.storeAmount.oilNameList.forEach(item => {
allTotal += item.countNum
})
this.storeAmount.oilNameList.forEach(item => {
let data = {value: 0, name: ""}
data.value = this.countPercentage(item.countNum, allTotal);
data.name = item.oilName + item.oilType + "占比"
dataList.push(data)
})
}
let storeNameList = []
let oilAmountList = []
let noOilAmountList = []
let rechargeBalanceList = []
let consumeBalanceList = []
let userBalanceList = []
2024-10-14 14:24:53 +08:00
if (this.storeList.length > 0) {
2024-09-04 11:22:28 +08:00
this.storeList.forEach(item => {
storeNameList.push(item.storeName)
oilAmountList.push(item.oilAmount)
noOilAmountList.push(item.noOilAmount)
rechargeBalanceList.push(item.userRechargeBalance)
consumeBalanceList.push(item.userConsumeBalance)
userBalanceList.push(item.userBalance)
})
}
2024-10-15 11:43:45 +08:00
const color = ['#FF9655', '#55F3FF', '#0DC291', '#fe8c4a', '#D55F5F'];
// 首页数据统计
2024-10-15 09:53:01 +08:00
const times = this.dataCount.oilData.map(item => item.time);
const count = [];
for (let i = 0; i < this.dataCount.oilNames.length; i++) {
let a = {
name: this.dataCount.oilNames[i],
2024-10-15 11:43:45 +08:00
color: color[i],
2024-10-15 09:53:01 +08:00
type: 'bar',
tooltip: {
valueFormatter: function (value) {
return value;
}
},
barWidth: 13,
itemStyle: {
normal: {
barBorderRadius: [50, 50, 0, 0]
}
},
barGap: '60%',
data: this.dataCount.oilData.map(item => item.money[i])
}
count.push(a)
}
2024-10-15 11:43:45 +08:00
// 首页数据展示
const showTimes = this.dataShows.oilData.map(item => item.day);
// console.log('showTimes', showTimes)
const showCount = [];
for (let i = 0; i < this.dataShows.oilNames.length; i++) {
let a = {
name: this.dataShows.oilNames[i],
color: color[i],
type: 'bar',
tooltip: {
valueFormatter: function (value) {
return value;
}
},
barWidth: 13,
itemStyle: {
normal: {
barBorderRadius: [50, 50, 0, 0]
}
},
barGap: '60%',
data: this.dataShows.oilData.map(item => item.oilPrices[i])
// data: oilAmountList
}
showCount.push(a)
}
2024-09-04 11:22:28 +08:00
const option = {
color: [
'#b7f1e2',
'#fc7150',
'#fea500',
'#5facfe',
],
tooltip: {
trigger: 'item'
},
series: [
{
2024-10-15 11:42:28 +08:00
name: '',
2024-09-04 11:22:28 +08:00
type: 'pie',
2024-10-15 11:42:28 +08:00
itemStyle: {
borderRadius:10,
bordercolor:'#fff',
borderWidth:20
},
radius: ['40%', '80%'],
2024-09-04 11:22:28 +08:00
// data: [
// { value: 36, name: '#98汽油占比' },
// { value: 42, name: '0#柴油占比' },
// { value: 40, name: '#95汽油占比' },
// { value: 38, name: '#92柴油占比' },
//
// ],
2024-10-14 17:20:49 +08:00
data: this.dataAnalysisOilNumberList,
2024-10-15 11:42:28 +08:00
2024-09-04 11:22:28 +08:00
}
]
};
const option1 = {
color: [
'#3B6ADE',
2024-09-08 17:38:26 +08:00
'#fe8c4a',
2024-09-04 11:22:28 +08:00
],
tooltip: {
trigger: 'item'
},
series: [
{
2024-10-15 11:42:28 +08:00
name: '',
2024-09-04 11:22:28 +08:00
type: 'pie',
radius: '80%',
2024-10-14 17:20:49 +08:00
// data: [
// // { value: 28, name: '28%' },
// // { value: 72, name: '72%' },
// {
// value: this.countPercentage(Number(this.storeAmount.oilNum), Number(this.storeAmount.oilNum) + Number(this.storeAmount.noOilNum)),
// name: "油品交易占比"
// },
// {
// value: this.countPercentage(Number(this.storeAmount.noOilNum), Number(this.storeAmount.oilNum) + Number(this.storeAmount.noOilNum)),
// name: "非油品交易占比"
// },
//
// ],
2024-10-15 09:53:01 +08:00
data: this.dataAnalysisIfOilList,
2024-09-04 11:22:28 +08:00
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
};
const option2 = {
color: [
'#46c2c4',
'#6e4dd8',
'#214790',
'#d55f5f',
],
tooltip: {
trigger: 'item'
},
series: [
{
2024-10-15 11:42:28 +08:00
name: '',
2024-09-04 11:22:28 +08:00
type: 'pie',
radius: [50, '80%'],
2024-10-14 17:20:49 +08:00
// data: [
// // { value: 28, name: '会员充值占比' },
// // { value: 72, name: '积分商城交易占比' },
// // { value: 28, name: '油品交易占比' },
// // { value: 72, name: '便利店交易占比' },
// {
// value: this.countPercentage(Number(this.storeAmount.userNum), Number(this.storeAmount.oilNum) + Number(this.storeAmount.userNum) + Number(this.storeAmount.integralNum) + Number(this.storeAmount.goodNum)),
// name: '会员充值占比'
// },
// {
// value: this.countPercentage(Number(this.storeAmount.integralNum), Number(this.storeAmount.oilNum) + Number(this.storeAmount.userNum) + Number(this.storeAmount.integralNum) + Number(this.storeAmount.goodNum)),
// name: '积分商城交易占比'
// },
// {
// value: this.countPercentage(Number(this.storeAmount.oilNum), Number(this.storeAmount.oilNum) + Number(this.storeAmount.userNum) + Number(this.storeAmount.integralNum) + Number(this.storeAmount.goodNum)),
// name: '油品交易占比'
// },
// {
// value: this.countPercentage(Number(this.storeAmount.goodNum), Number(this.storeAmount.oilNum) + Number(this.storeAmount.userNum) + Number(this.storeAmount.integralNum) + Number(this.storeAmount.goodNum)),
// name: '便利店交易占比'
// },
//
// ],
2024-10-15 09:53:01 +08:00
data: this.dataAnalysisAllList,
2024-09-04 11:22:28 +08:00
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
};
2024-10-15 09:53:01 +08:00
2024-09-04 11:22:28 +08:00
const option3 = {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
crossStyle: {
color: '#999'
}
}
},
legend: {
2024-10-15 11:43:45 +08:00
data: this.dataCount.oilNames
2024-09-04 11:22:28 +08:00
},
xAxis: [
{
type: 'category',
2024-10-15 09:53:01 +08:00
// data: ['中建锦绣广场1站', '中建锦绣广场2站', '中建锦绣广场3站', '中建锦绣广场4站', '中建锦绣广场5站', '中建锦绣广场6站', '中建锦绣广场7站'],
data: times,
2024-09-04 11:22:28 +08:00
axisPointer: {
type: 'shadow'
}
}
],
yAxis: [
{
type: 'value',
name: '金额(元)',
// min: 0,
// max: 10000,
// interval: 2000,
axisLabel: {
formatter: '{value}'
}
}
2024-10-15 11:42:28 +08:00
2024-09-04 11:22:28 +08:00
],
2024-10-15 11:42:28 +08:00
2024-10-15 09:53:01 +08:00
series: count,
2024-09-04 11:22:28 +08:00
grid: {
left: '3%',
right: '3%',
bottom: '3%',
containLabel: true
}
};
2024-09-06 13:38:58 +08:00
const option4 = {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
crossStyle: {
color: '#999'
}
}
},
legend: {
2024-10-15 11:43:45 +08:00
data: this.dataShows.oilNames
2024-09-06 13:38:58 +08:00
},
xAxis: [
{
type: 'category',
// data: ['中建锦绣广场1站', '中建锦绣广场2站', '中建锦绣广场3站', '中建锦绣广场4站', '中建锦绣广场5站', '中建锦绣广场6站', '中建锦绣广场7站'],
2024-10-15 11:43:45 +08:00
data: showTimes,
2024-09-06 13:38:58 +08:00
axisPointer: {
type: 'shadow'
}
}
],
yAxis: [
{
type: 'value',
name: '金额(元)',
2024-10-15 11:43:45 +08:00
// min: 0,
// max: 10000,
// interval: 2000,
2024-09-06 13:38:58 +08:00
axisLabel: {
formatter: '{value}'
}
}
2024-10-15 11:43:45 +08:00
// {
// type: 'value',
// name: '',
// min: 0,
// max: 25,
// interval: 5,
// axisLabel: {
// formatter: '{value} '
// }
// }
2024-09-06 13:38:58 +08:00
],
2024-10-15 11:43:45 +08:00
// series: [
// {
// name: '油品交易额',
// color: '#FF9655',
// type: 'bar',
// tooltip: {
// valueFormatter: function (value) {
// return value;
// }
// },
// barWidth: 13,
// itemStyle: {
// normal: {
// barBorderRadius: [50, 50, 0, 0]
// }
// },
// barGap: '60%',
// // data: [
// // 2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3
// // ]
// data: oilAmountList
// },
// {
// name: '非油品交易额',
// color: '#55F3FF',
// type: 'bar',
// tooltip: {
// valueFormatter: function (value) {
// return value;
// }
// },
// barWidth: 13,
// itemStyle: {
// normal: {
// barBorderRadius: [50, 50, 0, 0]
// }
// },
// // data: [
// // 2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3
// // ]
// data: noOilAmountList
// },
// {
// name: '会员充值金额',
// color: '#0DC291',
// type: 'bar',
// tooltip: {
// valueFormatter: function (value) {
// return value;
// }
// },
// barWidth: 13,
// itemStyle: {
// normal: {
// barBorderRadius: [50, 50, 0, 0]
// }
// },
// // data: [
// // 2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3
// // ]
// data: rechargeBalanceList
// },
// {
// name: '会员消费金额',
// color: '#fe8c4a',
// type: 'bar',
// tooltip: {
// valueFormatter: function (value) {
// return value;
// }
// },
// barWidth: 13,
// itemStyle: {
// normal: {
// barBorderRadius: [50, 50, 0, 0]
// }
// },
// // data: [
// // 2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3
// // ]
// data: consumeBalanceList
// },
// {
// name: '会员余额',
// color: '#D55F5F',
// type: 'bar',
// tooltip: {
// valueFormatter: function (value) {
// return value;
// }
// },
// barWidth: 13,
// itemStyle: {
// normal: {
// barBorderRadius: [50, 50, 0, 0]
// }
// },
// // data: [
// // 2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3
// // ]
// data: userBalanceList
// }
// ],
series: showCount,
2024-09-06 13:38:58 +08:00
grid: {
left: '3%',
right: '3%',
2024-10-15 11:42:28 +08:00
bottom: '5%',
2024-09-06 13:38:58 +08:00
containLabel: true
}
};
2024-09-04 11:22:28 +08:00
chart.setOption(option)
chart1.setOption(option1)
chart2.setOption(option2)
chart3.setOption(option3)
2024-09-06 13:38:58 +08:00
chart4.setOption(option4)
2024-09-04 11:22:28 +08:00
}
}
}
</script>
<style scoped lang="scss">
2024-10-14 14:24:53 +08:00
.app-container {
2024-09-04 11:22:28 +08:00
width: 100%;
height: 100%;
background: #f4f5f9;
}
2024-10-14 14:24:53 +08:00
.d-s {
2024-09-04 11:22:28 +08:00
display: flex;
align-items: center;
}
2024-10-14 14:24:53 +08:00
.bannser {
2024-09-04 11:22:28 +08:00
width: 100%;
height: 230px;
border-radius: 8px;
overflow: hidden;
2024-10-14 14:24:53 +08:00
img {
2024-09-04 11:22:28 +08:00
width: 100%;
height: 100%;
}
}
2024-10-14 14:24:53 +08:00
.b-bs {
2024-09-04 11:22:28 +08:00
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
2024-10-12 14:51:25 +08:00
margin-top: 15px;
2024-09-04 11:22:28 +08:00
}
2024-10-14 14:24:53 +08:00
.left-box {
2024-10-12 14:51:25 +08:00
width: 74%;
2024-09-04 11:22:28 +08:00
background: #FFFFFF;
border-radius: 10px 10px 10px 10px;
border: 1px solid #FFFFFF;
height: 192px;
//display: flex;
//align-items: center;
//justify-content: space-between;
box-sizing: border-box;
padding: 15px;
}
2024-10-14 14:24:53 +08:00
.left-box-t {
2024-10-12 14:51:25 +08:00
width: 74%;
2024-09-04 11:22:28 +08:00
box-sizing: border-box;
padding: 15px;
border-radius: 8px;
background: #fff;
border: 1px solid #FFFFFF;
height: 380px;
}
2024-10-14 14:24:53 +08:00
.right-box {
2024-09-04 11:22:28 +08:00
width: 25%;
border-radius: 8px;
background: #fff;
border: 1px solid #FFFFFF;
height: 192px;
box-sizing: border-box;
padding: 15px;
}
2024-10-14 14:24:53 +08:00
.right-box-t {
2024-09-04 11:22:28 +08:00
width: 25%;
border-radius: 8px;
background: #fff;
border: 1px solid #FFFFFF;
height: 380px;
box-sizing: border-box;
padding: 15px;
2024-10-14 14:24:53 +08:00
2024-09-04 11:22:28 +08:00
}
2024-10-14 14:24:53 +08:00
.san-box {
2024-09-04 11:22:28 +08:00
width: 24%;
2024-10-14 14:24:53 +08:00
height: 100px;
2024-09-04 11:22:28 +08:00
box-sizing: border-box;
border-radius: 8px;
2024-09-08 17:38:26 +08:00
background: #fe8c4a;
2024-10-14 14:24:53 +08:00
margin: 15px auto;
2024-09-04 11:22:28 +08:00
box-sizing: border-box;
padding: 20px 40px;
}
2024-10-14 14:24:53 +08:00
.r-title {
2024-09-04 11:22:28 +08:00
font-weight: bold;
font-size: 42px;
color: #FFFFFF;
text-align: center;
}
2024-10-14 14:24:53 +08:00
.r-size {
2024-09-04 11:22:28 +08:00
font-size: 14px;
color: #FFFFFF;
text-align: center;
}
2024-10-14 14:24:53 +08:00
.title_ {
2024-09-04 11:22:28 +08:00
font-size: 16px;
color: #333333;
font-weight: bold;
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
}
2024-10-14 14:24:53 +08:00
.hang_ {
2024-09-04 11:22:28 +08:00
width: 100%;
2024-10-14 14:24:53 +08:00
white-space: nowrap; //不换行
overflow: hidden; //超出部分隐藏
text-overflow: ellipsis; //文本溢出显示省略号
2024-09-04 11:22:28 +08:00
font-size: 14px;
2024-10-14 14:24:53 +08:00
color: #333;
2024-09-04 11:22:28 +08:00
margin: 14px auto;
}
2024-10-14 14:24:53 +08:00
.h-tt {
2024-09-04 11:22:28 +08:00
font-size: 16px;
color: #333333;
font-weight: bold;
2024-10-14 14:24:53 +08:00
display: flex;
justify-content: space-between;
2024-09-04 11:22:28 +08:00
}
2024-10-14 14:24:53 +08:00
.q-anniu {
2024-09-04 11:22:28 +08:00
width: 80px;
height: 26px;
2024-10-14 14:24:53 +08:00
background: #FF9655 !important;
border-radius: 4px 4px 4px 4px;
display: flex;
align-items: center;
justify-content: center;
color: #fff !important;
font-size: 12px;
cursor: pointer;
margin-right: 20px;
}
.h-anniu {
width: 80px;
height: 26px;
background: #fafafa;
2024-10-14 14:06:09 +08:00
border-radius: 4px 4px 4px 4px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
margin-right: 20px;
2024-10-14 14:24:53 +08:00
font-weight: 400;
font-size: 12px;
color: #555555;
2024-10-14 14:06:09 +08:00
}
2024-09-04 11:22:28 +08:00
2024-10-14 14:24:53 +08:00
.k-box {
width: 24%;
2024-09-04 11:22:28 +08:00
height: 68px;
background: #FFFFFF;
border-radius: 8px;
border: 1px solid #e1e0e0;
box-sizing: border-box;
2024-10-14 14:24:53 +08:00
margin: 0 auto;
2024-09-04 11:22:28 +08:00
padding: 10px;
}
2024-10-14 14:24:53 +08:00
.num-size {
2024-09-04 11:22:28 +08:00
font-weight: bold;
font-size: 24px;
color: #555555;
}
2024-10-14 14:24:53 +08:00
.sian {
2024-09-04 11:22:28 +08:00
width: 6px;
height: 6px;
background: #2BBCFF;
border-radius: 50%;
margin-right: 5px;
}
2024-10-14 14:24:53 +08:00
.hui-hang {
2024-09-04 11:22:28 +08:00
width: 100%;
height: 5px;
background: #F4F5F9;
margin: 15px auto;
}
2024-10-14 14:24:53 +08:00
.h-r-ba {
2024-09-04 11:22:28 +08:00
height: 170px;
margin: 0px 50px;
width: 5px;
background: #f4f5f9;
}
2024-10-14 14:24:53 +08:00
.r-img {
2024-09-04 11:22:28 +08:00
width: 84px;
height: 70px;
margin-right: 20px;
}
2024-10-14 14:24:53 +08:00
.bottom_ {
2024-09-04 11:22:28 +08:00
width: 100%;
border-radius: 10px;
2024-10-14 14:24:53 +08:00
background: #fff;
2024-09-04 11:22:28 +08:00
box-sizing: border-box;
padding: 20px;
margin-top: 20px;
}
2024-10-14 14:24:53 +08:00
.anniu-h {
2024-09-04 11:22:28 +08:00
width: 80px;
height: 26px;
background: #FAFAFA;
border-radius: 4px 4px 4px 4px;
border: 1px solid #DDDDDD;
display: flex;
align-items: center;
justify-content: center;
color: #777777;
margin-right: 20px;
}
2024-10-14 14:24:53 +08:00
.anniu-act {
2024-09-04 11:22:28 +08:00
background: #FF9655 !important;
border: 1px solid #FF9655 !important;
color: #fff;
}
2024-10-14 14:24:53 +08:00
.la-left {
2024-09-06 13:38:58 +08:00
width: 73%;
2024-09-04 11:22:28 +08:00
background: #fff;
border-radius: 10px;
}
2024-10-14 14:24:53 +08:00
.la-right {
2024-09-04 11:22:28 +08:00
height: 25%;
background: #fff;
border-radius: 10px;
}
2024-10-14 14:24:53 +08:00
.hui-box {
2024-09-06 13:38:58 +08:00
background: #F4F5F9;
border-radius: 8px;
width: 100%;
box-sizing: border-box;
padding: 10px;
display: flex;
2024-10-14 14:24:53 +08:00
font-size: 14px;
2024-09-06 13:38:58 +08:00
justify-content: space-between;
margin: 10px auto;
2024-10-14 14:24:53 +08:00
div {
2024-09-06 13:38:58 +08:00
width: 20%;
text-align: center;
}
}
2024-10-14 14:24:53 +08:00
.hang-box {
2024-09-06 13:38:58 +08:00
border-radius: 8px;
2024-10-14 14:24:53 +08:00
font-size: 14px;
2024-09-06 13:38:58 +08:00
width: 100%;
box-sizing: border-box;
2024-10-14 14:24:53 +08:00
padding: 5px;
2024-09-06 13:38:58 +08:00
display: flex;
justify-content: space-between;
2024-10-14 14:24:53 +08:00
margin: 0px auto;
div {
2024-09-06 13:38:58 +08:00
width: 20%;
text-align: center;
}
2024-10-12 14:51:25 +08:00
}
2024-10-14 14:24:53 +08:00
.home-index {
2024-10-12 14:51:25 +08:00
2024-09-06 13:38:58 +08:00
}
2024-09-04 11:22:28 +08:00
</style>