377 lines
9.1 KiB
Vue
377 lines
9.1 KiB
Vue
|
<template>
|
||
|
<view class="content">
|
||
|
<view class="container">
|
||
|
<headers :titles="titles"><u-icon name="arrow-left" color="#fff" size="22"></u-icon></headers>
|
||
|
|
||
|
<view class="top-time">
|
||
|
<view style="margin-right: 10px;">选择时间</view>
|
||
|
<view class="lan-time">
|
||
|
<span @click="clickStartTime">{{startTime}}</span>
|
||
|
<span>-</span>
|
||
|
<span @click="clickEndTime">{{endTime}}</span>
|
||
|
</view>
|
||
|
</view>
|
||
|
|
||
|
<u-datetime-picker :show="showStartTime" v-model="startTimeValue" mode="datetime" @confirm="clickStart"
|
||
|
@close="showStartTime = false" @cancel="showStartTime = false"></u-datetime-picker>
|
||
|
|
||
|
<u-datetime-picker :show="showEndTime" v-model="endTimeValue" mode="datetime" @confirm="clickEnd"
|
||
|
@close="showEndTime = false" @cancel="showEndTime = false"></u-datetime-picker>
|
||
|
|
||
|
<view class="hm-box">
|
||
|
<view class="hm-top">营业收入</view>
|
||
|
<view class="lan-title">¥{{dataForm.sumBalance?dataForm.sumBalance:0}}</view>
|
||
|
<view class="b-bs">
|
||
|
<view class="">
|
||
|
<view class="hui-">营业额/笔数</view>
|
||
|
<view class="lan-">¥{{dataForm.sumBalance?dataForm.sumBalance:0}}/{{dataForm.countBalance}}
|
||
|
</view>
|
||
|
</view>
|
||
|
<view class="">
|
||
|
<view class="hui-">会员充值/笔数</view>
|
||
|
<view class="lan-">
|
||
|
¥{{ (Number) (dataForm.userBalance)+(Number)(dataForm.oilBalance) }}/{{(Number)(dataForm.userBalanceCount)+(Number)(dataForm.oilBalanceCount)}}
|
||
|
</view>
|
||
|
</view>
|
||
|
</view>
|
||
|
<view class="b-bs">
|
||
|
<view class="">
|
||
|
<view class="hui-">退款金额/笔数</view>
|
||
|
<view class="lan-">¥{{dataForm.refBalance || 0}}/{{dataForm.refBalanceCount}}</view>
|
||
|
</view>
|
||
|
</view>
|
||
|
</view>
|
||
|
<view class="hm-box">
|
||
|
<view class="hm-top">支付方式统计</view>
|
||
|
<view class="d-s" style="margin-bottom: 10px;">
|
||
|
<view class="icon-img">
|
||
|
<image src="../../static/imgs/wx.png" mode=""></image>
|
||
|
</view>
|
||
|
<view class="">微信支付</view>
|
||
|
</view>
|
||
|
<view class="h-b-box">
|
||
|
<view class="">
|
||
|
<view class="hui-">营业额/笔数</view>
|
||
|
<view class="lan-">¥{{dataForm.wechat || 0}}/{{dataForm.wechatcount}}</view>
|
||
|
</view>
|
||
|
<view class="">
|
||
|
<view class="hui-">会员充值/笔数</view>
|
||
|
<view class="lan-">¥{{dataForm.userBalanceByWechat|| 0 }}/{{dataForm.userBalanceCountByWechat}}
|
||
|
</view>
|
||
|
</view>
|
||
|
</view>
|
||
|
<view class="d-s" style="margin-bottom: 10px;">
|
||
|
<view class="icon-img">
|
||
|
<image src="../../static/imgs/zfb.png" mode=""></image>
|
||
|
</view>
|
||
|
<view class="">支付宝支付</view>
|
||
|
</view>
|
||
|
<view class="h-b-box">
|
||
|
<view class="">
|
||
|
<view class="hui-">营业额/笔数</view>
|
||
|
<view class="lan-">¥{{dataForm.alipay || 0}}/{{dataForm.alipaycount}}</view>
|
||
|
</view>
|
||
|
<view class="">
|
||
|
<view class="hui-">会员充值/笔数</view>
|
||
|
<view class="lan-">¥{{dataForm.userBalanceByAli || 0}}/{{dataForm.userBalanceCountByali}}</view>
|
||
|
</view>
|
||
|
</view>
|
||
|
<!-- <view class="d-s" style="margin-bottom: 10px;">
|
||
|
<view class="icon-img">
|
||
|
<image src="../../static/imgs/yl.png" mode=""></image>
|
||
|
</view>
|
||
|
<view class="">银联支付</view>
|
||
|
</view>
|
||
|
<view class="h-b-box">
|
||
|
<view class="">
|
||
|
<view class="hui-">营业额/笔数</view>
|
||
|
<view class="lan-">¥0.00/0</view>
|
||
|
</view>
|
||
|
<view class="">
|
||
|
<view class="hui-">会员充值/笔数</view>
|
||
|
<view class="lan-">¥0.00/0</view>
|
||
|
</view>
|
||
|
</view> -->
|
||
|
|
||
|
</view>
|
||
|
|
||
|
|
||
|
</view>
|
||
|
</view>
|
||
|
</template>
|
||
|
|
||
|
<script>
|
||
|
import request from "../../utils/request";
|
||
|
|
||
|
import headers from '../../components/header/headers.vue'
|
||
|
|
||
|
export default {
|
||
|
data() {
|
||
|
return {
|
||
|
titles: "经营数据",
|
||
|
startTime: "",
|
||
|
endTime: "",
|
||
|
startTimeValue: "",
|
||
|
endTimeValue: "",
|
||
|
showStartTime: false,
|
||
|
showEndTime: false,
|
||
|
dataForm: {
|
||
|
sumBalance: '0',
|
||
|
countBalance: '0',
|
||
|
userBalance: '0',
|
||
|
userBalanceCount: '0',
|
||
|
refBalance: '0',
|
||
|
refBalanceCount: '0',
|
||
|
wechat: '0',
|
||
|
wechatcount: '0',
|
||
|
userBalanceByWechat: '0',
|
||
|
userBalanceCountByWechat: '0',
|
||
|
alipay: '0',
|
||
|
alipaycount: '0',
|
||
|
userBalanceByAli: '0',
|
||
|
userBalanceCountByali: '0',
|
||
|
oilBalance: '0',
|
||
|
oilBalanceCount: '0',
|
||
|
},
|
||
|
form: {
|
||
|
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
onShow() {
|
||
|
// this.actList = ["1", "1", "1", "1", "1", ]
|
||
|
// this.status = "nomore" 底部刷新结束
|
||
|
let start = new Date();
|
||
|
start.setHours(0)
|
||
|
start.setMinutes(0)
|
||
|
start.setSeconds(0)
|
||
|
start.setMilliseconds(0)
|
||
|
// formatDateToYYMMDDHHMM(start);
|
||
|
// formatDateToYYMMDDHHMM(new Date());
|
||
|
this.startTime = this.formatDateToYYMMDDHHMM(start);
|
||
|
this.endTime = this.formatDateToYYMMDDHHMM(new Date());
|
||
|
// this.startTime = start
|
||
|
// this.endTime = new Date()
|
||
|
this.getIndexData()
|
||
|
},
|
||
|
onPullDownRefresh() {
|
||
|
console.log("刷新");
|
||
|
uni.stopPullDownRefresh()
|
||
|
},
|
||
|
onReachBottom() {
|
||
|
// this.show = true
|
||
|
setTimeout(() => {
|
||
|
console.log("加载执行");
|
||
|
}, 2000)
|
||
|
},
|
||
|
components: {
|
||
|
headers
|
||
|
},
|
||
|
methods: {
|
||
|
goback() {
|
||
|
uni.navigateBack()
|
||
|
},
|
||
|
clickStartTime(e) {
|
||
|
this.showStartTime = true
|
||
|
console.log(123, e)
|
||
|
// const date = new Date(timestamp);
|
||
|
|
||
|
},
|
||
|
clickEndTime(e) {
|
||
|
this.showEndTime = true
|
||
|
|
||
|
},
|
||
|
clickStart(e) {
|
||
|
console.log('123123', e)
|
||
|
this.showStartTime = false
|
||
|
this.startTime = this.formatDateToYYMMDDHHMM(new Date(e.value));
|
||
|
this.getIndexData()
|
||
|
},
|
||
|
clickEnd(e) {
|
||
|
this.showEndTime = false
|
||
|
this.endTime = this.formatDateToYYMMDDHHMM(new Date(e.value));
|
||
|
this.getIndexData()
|
||
|
},
|
||
|
// 获取销售数据
|
||
|
getIndexData() {
|
||
|
|
||
|
if (this.startTime && this.endTime) {
|
||
|
this.form.params = {
|
||
|
beginTime: this.startTime,
|
||
|
endTime: this.endTime
|
||
|
}
|
||
|
}
|
||
|
request({
|
||
|
url: 'business/allOrderInfo/getOperatingDataPos',
|
||
|
method: 'get',
|
||
|
params: this.form
|
||
|
}).then((res) => {
|
||
|
if (res.code == 200) {
|
||
|
this.dataForm = res.data
|
||
|
} else {
|
||
|
uni.showToast({
|
||
|
title: res.data,
|
||
|
icon: "none"
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
},
|
||
|
formatTimestamp(timestamp) {
|
||
|
// const date = new Date(Number(timestamp));
|
||
|
// const year = date.getFullYear();
|
||
|
// const month = String(date.getMonth() + 1).padStart(2, '0');
|
||
|
// const day = String(date.getDate()).padStart(2, '0');
|
||
|
// const hours = String(date.getHours()).padStart(2, '0');
|
||
|
// const minutes = String(date.getMinutes()).padStart(2, '0');
|
||
|
// const seconds = String(date.getSeconds()).padStart(2, '0');
|
||
|
|
||
|
// return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
|
||
|
},
|
||
|
formatDateToYYMMDDHHMM(date) {
|
||
|
const year = String(date.getFullYear()); // 获取两位数的年份
|
||
|
const month = String(date.getMonth() + 1).padStart(2, '0'); // 获取月份,并确保是两位数
|
||
|
const day = String(date.getDate()).padStart(2, '0'); // 获取日期,并确保是两位数
|
||
|
const hours = String(date.getHours()).padStart(2, '0'); // 获取小时,并确保是两位数
|
||
|
const minutes = String(date.getMinutes()).padStart(2, '0'); // 获取分钟,并确保是两位数
|
||
|
|
||
|
// return `${year}/${month}/${day} ${hours}:${minutes}`;
|
||
|
return `${year}/${month}/${day}`;
|
||
|
}
|
||
|
|
||
|
},
|
||
|
watch: {
|
||
|
// startTime(newVal) {
|
||
|
// this.startTime = this.formatTimestamp(newVal);
|
||
|
// },
|
||
|
// endTime(newVal) {
|
||
|
// this.endTime = this.formatTimestamp(newVal);
|
||
|
// }
|
||
|
},
|
||
|
}
|
||
|
</script>
|
||
|
|
||
|
<style scoped lang="scss">
|
||
|
.content {
|
||
|
background: #f8f8f8;
|
||
|
// background: linear-gradient(180deg, #B2D2FC 0%, #B2D2FC 14%, rgba(255, 255, 255, 0.84) 24%, rgba(255, 255, 255, 0.84) 100%);
|
||
|
height: 100vh;
|
||
|
}
|
||
|
|
||
|
.container {
|
||
|
width: 100%;
|
||
|
background: #f8f8f8;
|
||
|
box-sizing: border-box;
|
||
|
padding-top: 88px;
|
||
|
}
|
||
|
|
||
|
.img-box {
|
||
|
image {
|
||
|
width: 100%;
|
||
|
height: 100%;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.d-s {
|
||
|
display: flex;
|
||
|
align-items: center;
|
||
|
}
|
||
|
|
||
|
.top-time {
|
||
|
width: 95%;
|
||
|
border-radius: 8px;
|
||
|
background: #fff;
|
||
|
box-sizing: border-box;
|
||
|
padding: 10px 15px;
|
||
|
display: flex;
|
||
|
align-items: center;
|
||
|
font-size: 16px;
|
||
|
font-weight: bold;
|
||
|
margin: 15px auto;
|
||
|
|
||
|
}
|
||
|
|
||
|
.lan-time {
|
||
|
font-weight: 600;
|
||
|
font-size: 16px;
|
||
|
color: #0864E9;
|
||
|
}
|
||
|
|
||
|
.wrap-box {
|
||
|
width: 95%;
|
||
|
display: flex;
|
||
|
align-items: center;
|
||
|
margin: 15px auto;
|
||
|
}
|
||
|
|
||
|
.b-bai {
|
||
|
width: 60px;
|
||
|
height: 80px;
|
||
|
background: #FFFFFF;
|
||
|
box-shadow: 0px 0px 4px 0px rgba(67, 104, 212, 0.1);
|
||
|
border-radius: 8px;
|
||
|
}
|
||
|
|
||
|
.hm-box {
|
||
|
width: 95%;
|
||
|
box-sizing: border-box;
|
||
|
padding: 15px;
|
||
|
background: #FFFFFF;
|
||
|
margin: 15px auto;
|
||
|
}
|
||
|
|
||
|
.hm-top {
|
||
|
width: 100%;
|
||
|
box-sizing: border-box;
|
||
|
padding-bottom: 15px;
|
||
|
border-bottom: 1px solid #F0F0F0;
|
||
|
font-weight: bold;
|
||
|
font-size: 16px;
|
||
|
color: #0864E9;
|
||
|
margin-bottom: 10px;
|
||
|
}
|
||
|
|
||
|
.lan-title {
|
||
|
font-weight: bold;
|
||
|
font-size: 24px;
|
||
|
color: #0864E9;
|
||
|
}
|
||
|
|
||
|
.b-bs {
|
||
|
width: 100%;
|
||
|
display: flex;
|
||
|
align-items: center;
|
||
|
justify-content: space-between;
|
||
|
margin: 10px auto;
|
||
|
}
|
||
|
|
||
|
.hui- {
|
||
|
font-weight: 500;
|
||
|
font-size: 14px;
|
||
|
color: #999999;
|
||
|
margin-bottom: 5px;
|
||
|
}
|
||
|
|
||
|
.lan- {
|
||
|
font-weight: bold;
|
||
|
font-size: 18px;
|
||
|
color: #0864E9;
|
||
|
}
|
||
|
|
||
|
.h-b-box {
|
||
|
width: 100%;
|
||
|
display: flex;
|
||
|
justify-content: space-between;
|
||
|
margin-bottom: 10px;
|
||
|
}
|
||
|
|
||
|
.icon-img {
|
||
|
width: 20px;
|
||
|
height: 20px;
|
||
|
margin-right: 5px;
|
||
|
|
||
|
image {
|
||
|
width: 100%;
|
||
|
height: 100%;
|
||
|
}
|
||
|
}
|
||
|
</style>
|