This commit is contained in:
2025-04-02 10:35:17 +08:00
commit 89db955ec1
701 changed files with 91082 additions and 0 deletions

View File

@@ -0,0 +1,268 @@
<template>
<view class="index-header" @tap="go.to('PAGES_STAT')">
<view class="index-selected">
<view class="index-time">
<block v-for="v in timeList" :key="v.value">
<view class="time-item flex-center" :class="{ 'time-active': vdata.timeSelected == v.value }" @tap.stop="changeTimeFunc(v.value)">
{{ v.title }}
</view>
</block>
</view>
<view class="index-scan flex-center" @click.stop="scanFunc">
<image src="/static/iconImg/icon-scan-index.svg" mode="scaleToFill" />
</view>
</view>
<view class="receipts-money">
<text class="money-title">成交金额 ()</text>
<view class="money-num">{{ list.sale.incomeAmountAll}}</view>
</view>
<view class="money-list">
<view class="money-item">
<text class="money-title">消费笔数</text>
<view class="money-num">{{ list.vip.useNum }}</view>
</view>
<view class="money-item">
<text class="money-title">退款金额 ()</text>
<view class="money-num">{{ list.sale.outAmount}}</view>
</view>
<view class="money-item">
<text class="money-title">消费笔数</text>
<view class="money-num">{{ list.count.useNum }}</view>
</view>
</view>
<view class="money-list" v-if="vdata.memberIsShow">
<view class="money-item">
<text class="money-title">会员充值()</text>
<view class="money-num">{{ cal.cert2Dollar(memberData.payAmount) }}</view>
</view>
<view class="money-item">
<text class="money-title">会员消费()</text>
<view class="money-num">{{ cal.cert2Dollar(Math.abs(memberData.changeAmount)) }}</view>
</view>
<view class="money-item">
<text class="money-title">会员消费笔数</text>
<view class="money-num">{{ memberData.changeCount }}</view>
</view>
</view>
<view>
<!-- <text class="money-title">展开全部</text> -->
</view>
<!-- <button v-if="ak.ent.has('ENT_C_QUICKCASHIER')" class="quick-money flex-center" @tap.stop="go.to('PAGES_QUICK_PAY')">快捷收银</button> -->
</view>
</template>
<script setup>
import { ref, reactive, onMounted } from 'vue';
import cal from '@/commons/utils/cal.js';
import go from '@/commons/utils/go.js';
import ak from '@/commons/utils/ak.js';
import ent from '@/commons/utils/ent.js';
import unionScan from '@/commons/utils/unionScan.js';
import storageManage from '@/commons/utils/storageManage.js';
import dayjs from 'dayjs' //时间格式库
import {
summaryTrade,
} from '@/http/yskApi/requestAll.js';
onMounted(() => {
vdata.memberIsShow = ent.has('ENT_MCH_MEMBER') && storageManage.userInfo().isHasMemberEnt;
if (ent.has('ENT_MCH_MEMBER') && storageManage.userInfo().isHasMemberEnt) {
getMemberData();
}
getList()
});
const emits = defineEmits(['click']);
const timeList = [
{ title: '今天', value: 'today' },
{ title: '昨天', value: 'yesterday' },
{ title: '近7天', value: 'circumference' },
{ title: '近30天', value: 'moon' }
];
let list = ref()
const vdata = reactive({
timeSelected: 'today', // 当前时间选择器的
payAmount: -1, // 实收金额
payCount: -1, // 交易笔数
refundAmount: -1, // 退款金额
refundCount: -1, // 退款笔数
memberIsShow: false //是否开启会员模块
});
const memberData = reactive({});
function getList(){
let startTime, endTime;
if (vdata.timeSelected == 'today') {
startTime = dayjs().format('YYYY-MM-DD') + ' 00:00:00'
endTime = dayjs().format('YYYY-MM-DD') + ' 23:59:59'
} else if (vdata.timeSelected == 'yesterday') {
startTime = formatTime() + ' 00:00:00'
endTime = formatTime() + ' 23:59:59'
} else if (vdata.timeSelected == 'circumference') {
startTime = dayjs().add(-7, 'day').format('YYYY-MM-DD 00:00:00')
endTime = dayjs().format('YYYY-MM-DD 23:59:59')
} else if (vdata.timeSelected == 'moon') {
startTime = dayjs().add(-30, 'day').format('YYYY-MM-DD 00:00:00')
endTime = dayjs().format('YYYY-MM-DD 23:59:59')
} else if (vdata.timeSelected == 'custom') {
startTime = start
endTime = end
}
summaryTrade({
shopId: uni.getStorageSync('shopId'),
startTime,
endTime,
}).then((res) => {
list.value = res
})
}
// 切换 时间卡片
function changeTimeFunc(val) {
vdata.timeSelected = val;
getList()
// console.log(vdata.timeSelected,'调试121')
// refData();
// if (vdata.memberIsShow) {
// getMemberData();
// }
}
// 根据选择请求数据
function refData() {
// 获取 统计数据
$indexStatistics(vdata.timeSelected).then(({ bizData }) => {
vdata.payAmount = bizData.totalSuccAmt;
vdata.payCount = bizData.totalSuccNum;
vdata.refundAmount = bizData.totalRefundAmt;
vdata.refundCount = bizData.totalRefundNum;
});
}
// 扫码动作
function scanFunc() {
unionScan.scan(true).then((res) => {
// 登录类型
if (res.type == unionScan.QR_TYPE_LOGIN) {
return go.to('PAGES_SCAN_LOGIN', { qrcodeNo: res.originQrVal });
}
// 二维码
if (res.type == unionScan.QR_TYPE_QRC) {
return go.to('PAGES_APP_CODE_BIND', { qrcId: res.bizValue });
}
});
}
// 获取当前时间
function getdate() {
const dt = new Date();
const y = dt.getFullYear();
const m = (dt.getMonth() + 1 + "").padStart(2, "0");
const d = (dt.getDate() + "").padStart(2, "0");
const hh = (dt.getHours() + "").padStart(2, "0");
const mm = (dt.getMinutes() + "").padStart(2, "0");
const ss = (dt.getSeconds() + "").padStart(2, "0");
return `${y}-${m}-${d}`;
}
// 获取昨天时间
const formatTime = () => {
let strDate = getdate()
let dateFormat = new Date(strDate);
dateFormat = dateFormat.setDate(dateFormat.getDate() - 1);
dateFormat = new Date(dateFormat);
let y = dateFormat.getFullYear()
let m = (dateFormat.getMonth() + 1).toString().padStart(2, '0')
let d = dateFormat.getDate().toString().padStart(2, '0')
return `${y}-${m}-${d}`
}
const getMemberData = () => {
$memberInfoCount({ queryDateRange: vdata.timeSelected }).then(({ bizData }) => {
Object.assign(memberData, bizData);
});
};
defineExpose({ refData });
</script>
<style lang="scss" scoped>
.index-header {
width: 680rpx;
margin: 0 auto;
transform: translateY(30rpx);
margin-bottom: 25rpx;
padding: 20rpx;
box-sizing: border-box;
border-radius: $J-b-r32;
background: $jeepay-bg-primary;
backdrop-filter: blur(20rpx);
box-shadow: 0 50rpx 70rpx -60rpx rgba(0, 65, 164, 0.5);
.index-selected {
display: flex;
justify-content: space-between;
.index-time {
display: flex;
justify-content: space-between;
align-items: center;
width: 490rpx;
height: 90rpx;
border-radius: 20rpx;
padding: 10rpx;
background-color: rgba($color: #fff, $alpha: 0.1);
.time-item {
flex: 1;
// width: 120rpx;
height: 100%;
font-size: 32rpx;
font-weight: 500;
color: rgba(255, 255, 255, 0.75);
}
.time-active {
background-color: $J-bg-ff;
color: $J-color-t21;
border-radius: 12rpx;
}
}
.index-scan {
width: 110rpx;
height: 110rpx;
border-radius: 20rpx;
background-color: rgba($color: #fff, $alpha: 0.1);
image {
width: 41rpx;
height: 35rpx;
}
}
}
.receipts-money {
display: flex;
flex-direction: column;
align-items: center;
margin: 30rpx 0;
color: $J-color-tff;
.money-num {
font-size: 70rpx;
font-weight: 500;
}
}
.money-list {
display: flex;
justify-content: space-between;
padding: 0 72rpx;
margin-bottom: 50rpx;
text-align: center;
color: $J-color-tff;
.money-item {
.money-num {
font-size: 32rpx;
font-weight: 500;
}
}
}
.money-title {
margin-bottom: 10rpx;
font-size: 26rpx;
font-weight: 400;
color: $J-color-tSff;
}
.quick-money {
height: 110rpx;
border-radius: 20rpx;
color: $J-color-t29;
}
}
</style>

3
pages/index/index.vue Normal file
View File

@@ -0,0 +1,3 @@
<template>
<view></view>
</template>

191
pages/index/indexCopy.vue Normal file
View File

@@ -0,0 +1,191 @@
<!-- 首页 -->
<template>
<view class="" @click="tologin">
<JeepayBackground :bgColorStyle="{}">
<!-- 导航条 -->
<JeepayCustomNavbar title="首页" textColor="#fff" bgDefaultColor="linear-gradient(270deg, rgba(72, 192, 255, 1) 0%, rgba(51, 157, 255, 1) 100%)" />
<!-- 统计 or 快捷扫码 -->
<view class="code-box">
<view class="today-box">
<view class="today">
<view class="today-title">今天</view>
<view class="jing-box">
<text>昨天</text>
<text>近7天</text>
<text>近30天</text>
</view>
</view>
<view class="saoma">扫码</view>
</view>
<view class="" style="display: flex; flex-direction: column; justify-content: space-around; align-items: center; height: 400rpx; color: #fff; font-size: 28rpx">
<view class="" style="display: flex; flex-direction: column; align-items: center">
<view class="">成交金额()</view>
<view class="">0.00</view>
</view>
<view class="" style="display: flex; justify-content: space-around; width: 100%; align-items: center">
<view class="" style="display: flex; flex-direction: column; align-items: center">
<view class="">成交笔数</view>
<view class="">0</view>
</view>
<view class="" style="display: flex; flex-direction: column; align-items: center">
<view class="">退款金额()</view>
<view class="" style="font-size: 60rpx">0.00</view>
</view>
<view class="" style="display: flex; flex-direction: column; align-items: center">
<view class="">退款笔数</view>
<view class="">0</view>
</view>
</view>
<view class="" style="width: 100%">
<button>快捷收银</button>
</view>
</view>
</view>
<!-- 导航栅格 -->
<view class="" style="margin-top: 85%; display: flex; flex-wrap: wrap; padding: 0 40rpx; justify-content: space-around">
<view class="" v-for="item in navList" style="width: 30%; margin: 10rpx 0; background: #fff; padding: 10rpx 0; border-radius: 30rpx">
<view class="" style="display: flex; flex-direction: column; justify-content: center; align-items: center">
<image :src="item.icon" mode="" style="width: 100rpx; height: 100rpx"></image>
{{ item.title }}
</view>
</view>
</view>
</JeepayBackground>
</view>
</template>
<script setup>
import storageManage from '@/commons/utils/storageManage.js';
// 导航列表
const navList = [
{
title: '商户进件',
icon: '/static/indexImg/icon-passage.svg',
pageUrl: 'PAGES_APPLYMENT',
entId: 'ENT_MCH_APPLYMENT_LIST'
},
{
title: '商户管理',
icon: '/static/indexImg/business.svg',
pageUrl: 'PAGES_APPLYMENT_BUSINESS',
entId: 'ENT_MCH_APPLYMENT_LIST'
},
{
title: '我的门店',
icon: '/static/indexImg/icon-store.svg',
pageUrl: 'PAGES_STORE',
entId: 'ENT_MCH_STORE'
},
{
title: '我的设备',
icon: '/static/indexImg/icon-calc.svg',
pageUrl: 'PAGES_DEVICE_MAIN',
entId: 'ENT_DEVICE'
},
{
title: '员工管理',
icon: '/static/indexImg/icon-staff.svg',
pageUrl: 'PAGES_USER',
entId: 'ENT_UR_USER_LIST'
},
{
title: '统计报表',
icon: '/static/indexImg/icon-pro.svg',
pageUrl: 'PAGES_STAT',
entId: 'ENT_ORDER_STATISTIC'
},
{
title: '商户应用',
icon: '/static/indexImg/icon-app.svg',
pageUrl: 'PAGES_APP',
entId: 'ENT_MCH_APP_LIST'
},
{
title: '会员中心',
icon: '/static/indexImg/icon-member.svg',
pageUrl: 'PAGES_MEMBER_CENTER',
entId: 'ENT_MCH_MEMBER'
},
{
title: '广告管理',
icon: '/static/indexImg/icon-ad.svg',
pageUrl: 'PAGES_AD_LIST',
entId: 'ENT_ADVERT_CONTROL'
},
{
title: '营销红包',
icon: '/static/indexImg/red-envelope.svg',
pageUrl: 'PAGES_RED_INDEX',
entId: 'ENT_MCH_MEMBER'
}
];
// 如果不是超管 删除 刷脸广告菜单
if (storageManage.userInfo().userType != 1) {
const index = navList.findIndex((v) => v.entId == 'ENT_ADVERT_CONTROL');
if (index != -1) {
navList.splice(index, 1);
}
}
const tologin = () => {
uni.redirectTo({
url: '/pages/login/index'
});
};
</script>
<style lang="scss" scoped>
.code-box {
background: #1c72fe;
position: fixed;
width: 90%;
right: 5%;
height: 500rpx;
border-radius: 20rpx;
padding: 20rpx;
box-sizing: border-box;
top: 15%;
.today-box {
display: flex;
color: #fff;
.today {
display: flex;
flex: 1;
margin-right: 10rpx;
background: #368bfd;
padding: 10rpx;
border-radius: 10rpx;
}
.today-title {
height: 70rpx;
background: #fff;
width: 100rpx;
display: flex;
justify-content: center;
align-items: center;
border-radius: 10rpx;
color: #1b6dfe;
}
.saoma {
width: 100rpx;
display: flex;
justify-content: center;
align-items: center;
border-radius: 10rpx;
color: #fff;
background: #368bfd;
}
.jing-box {
display: flex;
flex: 1;
justify-content: space-around;
align-items: center;
}
}
}
</style>